*/ /** * 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%%' => ''.$countries[$countryCode].'', '%%rates%%' => implode(', ', $rateLinks), )); } $request->setError('countries_area{countries_ids}', implode('
', $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); } } } }