159 lines
5.3 KiB
PHP
159 lines
5.3 KiB
PHP
<?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);
|
||
}
|
||
}
|
||
}
|
||
} |