189 lines
4.5 KiB
PHP
189 lines
4.5 KiB
PHP
<?php
|
|
/**
|
|
* SOTESHOP/stCurrencyPlugin
|
|
*
|
|
* Ten plik należy do aplikacji stCurrencyPlugin opartej na licencji (Open License SOTE) Otwarta Licencja SOTE.
|
|
* Nie zmieniaj tego pliku, jeśli chcesz korzystać z automatycznych aktualizacji oprogramowania.
|
|
* Jeśli chcesz wprowadzać swoje modyfikacje do programu, zapoznaj się z dokumentacją, jak zmieniać
|
|
* oprogramowanie bez zmiany kodu bazowego http://www.sote.pl/modifications
|
|
*
|
|
* @package stCurrencyPlugin
|
|
* @subpackage libs
|
|
* @copyright SOTE (www.sote.pl)
|
|
* @license http://www.sote.pl/license/open (Open License SOTE) Otwarta Licencja SOTE
|
|
* @version $Id: CurrencyPeer.php 10414 2011-01-21 11:49:57Z michal $
|
|
* @author Marcin Olejnczak <marcin.olejniczak@sote.pl>
|
|
*/
|
|
|
|
/**
|
|
* Klasa CurrencyPeer
|
|
*
|
|
* @package stCurrencyPlugin
|
|
* @subpackage libs
|
|
*/
|
|
class CurrencyPeer extends BaseCurrencyPeer
|
|
{
|
|
protected static $currencies = [];
|
|
|
|
protected static $activeCurrencies = [];
|
|
|
|
protected static $main = null;
|
|
|
|
protected static $byIso = [];
|
|
|
|
public static function retrieveMain()
|
|
{
|
|
if (null === self::$main)
|
|
{
|
|
foreach (self::doSelectActive() as $currency)
|
|
{
|
|
if ($currency->getMain())
|
|
{
|
|
self::$main = $currency;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return self::$main;
|
|
}
|
|
|
|
/**
|
|
* Zwraca walutę o podanym id
|
|
*
|
|
* @param int $id Id waluty
|
|
* @return Currency|null
|
|
*/
|
|
public static function retrieveByPKCached($id, ?bool $active = null)
|
|
{
|
|
$currencies = self::doSelectCached();
|
|
|
|
return isset($currencies[$id]) && (null === $active || $currencies[$id]->getActive() == $active) ? $currencies[$id] : null;
|
|
}
|
|
|
|
/**
|
|
* Zwraca listę wszystkich walut
|
|
*
|
|
* @return Currency[]
|
|
*/
|
|
public static function doSelectCached()
|
|
{
|
|
$culture = sfContext::getInstance()->getUser()->getCulture();
|
|
|
|
if (!isset(self::$currencies[$culture]))
|
|
{
|
|
$fc = stFunctionCache::getInstance('stCurrency');
|
|
$currencies = $fc->cacheCall(['CurrencyPeer', 'doSelectWithI18n'], [new Criteria(), $culture], [
|
|
'id' => 'currencies_' . $culture
|
|
]);
|
|
|
|
$results = [];
|
|
|
|
foreach ($currencies as $currency)
|
|
{
|
|
$results[$currency->getId()] = $currency;
|
|
}
|
|
|
|
self::$currencies[$culture] = $results;
|
|
}
|
|
|
|
return self::$currencies[$culture];
|
|
}
|
|
|
|
public static function doSelectActive()
|
|
{
|
|
$culture = sfContext::getInstance()->getUser()->getCulture();
|
|
|
|
if (!isset(self::$activeCurrencies[$culture]))
|
|
{
|
|
$currencies = array();
|
|
|
|
foreach (self::doSelectCached() as $currency)
|
|
{
|
|
if ($currency->getActive())
|
|
{
|
|
$currencies[] = $currency;
|
|
}
|
|
}
|
|
|
|
self::$activeCurrencies[$culture] = $currencies;
|
|
}
|
|
|
|
return self::$activeCurrencies[$culture];
|
|
}
|
|
|
|
/**
|
|
* Wybór aktywnej waluty
|
|
*
|
|
* @param Criteria $c
|
|
* @param $con
|
|
* @return object
|
|
*/
|
|
public static function doSelectActiveOne(Criteria $c, $con = null)
|
|
{
|
|
$c = clone $c;
|
|
$c->add(CurrencyPeer::ACTIVE, true);
|
|
$c->setLimit(1);
|
|
$currencies = self::doSelect($c, $con);
|
|
|
|
return $currencies ? $currencies[0] : null;
|
|
}
|
|
|
|
public static function doSelectSystemDefault(Criteria $c, $con = null)
|
|
{
|
|
$c = clone $c;
|
|
|
|
$config = stConfig::getInstance(null, 'stCurrencyPlugin');
|
|
|
|
$c->add(self::SHORTCUT, $config->get('default_currency'));
|
|
|
|
return self::doSelectOne($c);
|
|
}
|
|
|
|
/**
|
|
* Zwraca walutę po jej kodzie ISO
|
|
*
|
|
* @param string $shortcut
|
|
* @return Currency|null
|
|
*/
|
|
public static function retrieveByIso($iso)
|
|
{
|
|
if (!isset(self::$byIso[$iso]) && !array_key_exists($iso, self::$byIso))
|
|
{
|
|
$currencies = self::doSelectCached();
|
|
|
|
self::$byIso[$iso] = null;
|
|
|
|
foreach ($currencies as $currency)
|
|
{
|
|
if ($currency->getShortcut() == $iso)
|
|
{
|
|
self::$byIso[$iso] = $currency;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return self::$byIso[$iso];
|
|
}
|
|
|
|
public static function doSelectWithI18n(Criteria $c, $culture = null, $con = null)
|
|
{
|
|
if ($culture === null)
|
|
{
|
|
$culture = stLanguage::getHydrateCulture();
|
|
}
|
|
|
|
return parent::doSelectWithI18n($c, $culture, $con);
|
|
}
|
|
|
|
public static function doCountWithI18n(Criteria $c, $con = null)
|
|
{
|
|
$c->addJoin(CurrencyI18nPeer::ID, CurrencyPeer::ID);
|
|
|
|
$c->add(CurrencyI18nPeer::CULTURE, stLanguage::getHydrateCulture());
|
|
|
|
return self::doCount($c, $con);
|
|
}
|
|
}
|