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

159 lines
5.3 KiB
PHP
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* SOTESHOP/stCountriesPlugin
*
* Ten plik należy do aplikacji stCountriesPlugin opartej na licencji (Professional License 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 stCountriesPlugin
* @subpackage actions
* @copyright SOTE (www.sote.pl)
* @license http://www.sote.pl/license/sote (Professional License SOTE)
* @version $Id: actions.class.php 472 2009-09-10 14:42:24Z marcin $
* @author Marcin Olejniczak <marcin.olejniczak@sote.pl>
*/
/**
* Komponenty dla modułu stCountriesBackend
*
* @package stCountriesPlugin
* @subpackage actions
*/
class stCountriesBackendActions extends autoStCountriesBackendActions
{
public function executeActivateCountry()
{
$selected = $this->getRequestParameter('countries[selected]');
if ($selected)
{
$this->doActiveUpdate($selected, true);
}
return $this->redirect($this->getRequest()->getReferer());
}
public function executeDeactivateCountry()
{
$selected = $this->getRequestParameter('countries[selected]');
if ($selected)
{
$this->doActiveUpdate($selected, false);
}
return $this->redirect($this->getRequest()->getReferer());
}
public function validateCountriesAreaEdit()
{
$request = $this->getRequest();
if ($request->getMethod() == sfRequest::POST)
{
$data = $request->getParameter('countries_area');
$i18n = $this->getContext()->getI18N();
if (isset($data['countries_ids']))
{
$ids = $data['countries_ids'];
if (!$ids)
{
$request->setError('countries_area{countries_ids}', $i18n->__('Musisz wybrać przynajmniej jeden kraj dla strefy'));
}
elseif (stTax::getIsCustomerEuTaxEnabled(true))
{
$c = new Criteria();
$c->add(CountriesPeer::ID, $ids, Criteria::IN);
CountriesPeer::setHydrateMethod(function(ResultSet $rs) {
$rs->setFetchmode(ResultSet::FETCHMODE_NUM);
$results = array();
while($rs->next())
{
$country = new Countries();
$country->hydrate($rs);
$results[$country->getIsoA2()] = $country;
}
return $results;
});
$countries = CountriesPeer::doSelectWithI18n($c);
if (!stTax::checkRequiredCountriesTaxRateConfiguration(array_keys($countries), $errors))
{
sfLoader::loadHelpers(array('Helper', 'stUrl'));
$messages = array();
foreach ($errors as $countryCode => $taxes)
{
$rateLinks = array();
foreach ($taxes as $tax)
{
$rateLinks[] = st_link_to($tax->getVatName(), '@stTaxPlugin?action=edit&id='.$tax->getId(), array('target' => '_blank'));
}
$messages[] = $i18n->__('Nie można dodać kraju %%country%%. Skonfiguruj stawki VAT %%rates%% dla konsumentów dla tego kraju', array(
'%%country%%' => '<b>'.$countries[$countryCode].'</b>',
'%%rates%%' => implode(', ', $rateLinks),
));
}
$request->setError('countries_area{countries_ids}', implode('<br>', $messages));
}
}
}
}
return !$request->hasErrors();
}
protected function doActiveUpdate($selected, $active)
{
$c = new Criteria();
$c->add(CountriesPeer::ID, $selected, Criteria::IN);
$c->add(CountriesPeer::IS_ACTIVE, $active);
return CountriesPeer::doUpdate($c);
}
protected function updateCountriesFromRequest()
{
parent::updateCountriesFromRequest();
$countries = $this->getRequestParameter('countries');
$this->countries->setIsDefault(isset($countries['is_default']) ? $countries['is_default'] : null);
}
protected function addSortCriteria($c)
{
if ($sort_column = $this->getUser()->getAttribute('sort', null, 'sf_admin/autoStCountriesBackend/sort'))
{
$sort_column=$this->translateSortColumn($sort_column);
if ($sort_column == CountriesPeer::OPT_NAME)
{
$sort_column .= ' COLLATE utf8_polish_ci';
}
if ($this->getUser()->getAttribute('type', null, 'sf_admin/autoStCountriesBackend/sort') == 'asc')
{
$c->addAscendingOrderByColumn($sort_column);
}
else
{
$c->addDescendingOrderByColumn($sort_column);
}
}
}
}