Files
2025-03-12 17:06:23 +01:00

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);
}
}