*/ /** * Klasa stPositioningBackendActions * * @package stPositioningPlugin * @subpackage actions * @author Michal Prochowski */ class stPositioningBackendActions extends autoStPositioningBackendActions { protected function getPositioningOrCreate($id = 'id') { if ($this->getRequestParameter('type') == 'default') { $c = new Criteria(); $c->add(PositioningPeer::SYSTEM_NAME, 'DEFAULT_VALUE'); $this->positioning = PositioningPeer::doSelectOne($c); if (!is_object($this->positioning)) { $this->positioning = $this->createDefaultPositioning(); } return $this->redirect('@stPositioningPlugin?action=edit&id='.$this->positioning->getId()); } return parent::getPositioningOrCreate($id); } /** * Dodatkowa walidacja dla zapisu danych */ public function validateEdit() { $i18n = $this->getContext()->getI18n(); if ($this->getRequest()->getMethod() == sfRequest::POST) { stAuthUsersListener::checkModificationCredentials($this, $this->getRequest(), $this->getModuleName()); if ($this->getRequest()->hasParameter('id')) { $positioning = PositioningPeer::retrieveByPK($this->getRequest()->getParameter('id')); if (is_object($positioning)) { if ($positioning->getSystemName() == "DEFAULT_VALUE") { foreach (array('title', 'keywords', 'description') as $name) { if ($this->getRequest()->hasParameter('positioning['.$name.']')) { $v = $this->getRequest()->getParameter('positioning['.$name.']'); if(empty($v)) $this->getRequest()->setError('positioning{'.$name.'}', $i18n->__('Proszę uzupełnić pole.')); } else { $this->getRequest()->setError('positioning{'.$name.'}', $i18n->__('Proszę uzupełnić pole.')); } } } } } } return true; } public function handleErrorSitemapCustom() { $this->forward_parameters = $this->getUser()->getAttributeHolder()->getAll('sf_admin/autoStPositioningBackend/sitemap_forward_parameters'); $this->related_object = PositioningPeer::retrieveByPk($this->forward_parameters['meta_id']); return sfView::SUCCESS; } public function executeRebuildSeoLinks() { if ($this->getRequestParameter('force') != true) { $this->setFlash('warning', 'Wykonanie funkcji przywracania domyślnych linków SEO, spowoduje utratę wcześniej wprowadzonych zmian w polach Przyjazny link dla produktów, grup produktów, kategorii oraz stron www i ustawienie wartości domyślnych.', false); } $i18n = $this->getContext()->getI18N(); $breadcrumbs = $this->getBreadcrumbsBuilder()->getDefaultBreadcrumbs(); $breadcrumbs->add($i18n->__('Generuj linki SEO')); } public function validateRebuildSeoLinks() { $this->forward_parameters = array('meta_id' => $this->getRequestParameter('meta_id')); $this->related_object = PositioningPeer::retrieveByPk($this->forward_parameters['meta_id']); if ($this->getRequest()->getMethod() == sfRequest::POST) { stAuthUsersListener::checkModificationCredentials($this, $this->getRequest(), $this->getModuleName()); if (!$this->getRequestParameter('seo_links',array())) { $this->getRequest()->setError('seo_links', $this->getContext()->getI18n()->__('Proszę wybrać jedną z opcji')); } if (!$this->getRequestParameter('language',array())) { $this->getRequest()->setError('language', $this->getContext()->getI18n()->__('Proszę wybrać jedną z opcji')); } } return !$this->getRequest()->hasErrors(); } public function handleErrorRebuildSeoLinks() { return sfView::SUCCESS; } public function validateConfig() { $i18n = $this->getContext()->getI18n(); if ($this->getRequest()->getMethod() == sfRequest::POST) { if ($this->hasRequestParameter('config[redirect]')) { if (!$this->hasRequestParameter('config[redirect]')) { $this->getRequest()->setError('config{domain}', $i18n->__('Musisz wybrac język dla mapy strony')); return false; } $validator = new stLanguageDomainValidator(); $validator->initialize($this->getContext(), array('domain_error'=>$i18n->__('Nieprawidłowa nazwa domeny'))); $domain = $this->getRequestParameter('config[domain]'); if (!$validator->execute($domain, $error)) { $this->getRequest()->setError('config{domain}', $error); return false; } } } return true; } public function validateRobotFileCustom() { stAuthUsersListener::checkModificationCredentials($this, $this->getRequest(), $this->getModuleName()); return parent::executeRobotFileCustom(); } public function handleErrorRobotFileCustom() { $this->processRobotFileCustomForwardParameters(); $this->forward_parameters = $this->getUser()->getAttributeHolder()->getAll('sf_admin/autoStPositioningBackend/robot_file_forward_parameters'); $this->related_object = PositioningPeer::retrieveByPk($this->forward_parameters['meta_id']); return sfView::SUCCESS; } public function validateSitemapCustom() { $i18n = $this->getContext()->getI18n(); if ($this->getRequest()->getMethod() == sfRequest::POST) { stAuthUsersListener::checkModificationCredentials($this, $this->getRequest(), $this->getModuleName()); $sitemap = $this->getRequestParameter('sitemap'); if(!isset($sitemap['langs']) || !count($sitemap['langs'])) { $this->getRequest()->setError('sitemap{langs}', $i18n->__('Musisz wybrac język dla mapy strony')); return false; } } return true; } public function validateVerifySearchCustom() { $i18n = $this->getContext()->getI18n(); if ($this->getRequest()->getMethod() == sfRequest::POST) { stAuthUsersListener::checkModificationCredentials($this, $this->getRequest(), $this->getModuleName()); $verify = $this->getRequestParameter('verify'); if(!isset($verify['file'])){ $verify_file = $this->getRequest()->getFileName('verify[file]'); if($verify_file) { if ((strpos($verify_file, "google")!== false) || (strpos($verify_file, "yandex")!==false) || (strpos($verify_file,"BingSiteAuth")!==false)){ }else{ $this->getRequest()->setError('verify{file}', $i18n->__('Załącz poprawny plik od Google, Bing lub Yandex')); return false; } } } $verifies = $verify['verify']; foreach ($verifies as $key=>$value) { $newVal = trim($value); if (strlen($newVal)>0 && (strlen($newVal)<43 || strlen($newVal)>44)) { $this->getRequest()->setError('verify{verify}', $i18n->__('Prosze podać poprawny klucz dla domeny').' '.$key); return false; } } } return true; } protected function createDefaultPositioning() { $object = new Positioning(); $object->setCulture('pl_PL'); $object->setName('Wartości domyślne'); $object->setSystemName('DEFAULT_VALUE'); $object->setTitle('Sklep internetowy'); $object->setKeywords(''); $object->setDescription(''); $object->save(); $object->setCulture('en_US'); $object->setType(0); $object->save(); return $object; } public function handleErrorVerifySearchCustom() { $this->processVerifySearchCustomForwardParameters(); $this->forward_parameters = $this->getUser()->getAttributeHolder()->getAll('sf_admin/autoStPositioningBackend/verify_search_forward_parameters'); $this->related_object = PositioningPeer::retrieveByPk($this->forward_parameters['meta_id']); return sfView::SUCCESS; } public function handleError404linksCustom() { $this->process404linksCustomForwardParameters(); $this->forward_parameters = $this->getUser()->getAttributeHolder()->getAll('sf_admin/autoStPositioningBackend/404links_forward_parameters'); $this->related_object = PositioningPeer::retrieveByPk($this->forward_parameters['meta_id']); return sfView::SUCCESS; } public function executeRemoveFile() { $del = $this->getRequestParameter('del',array()); $delete_file = sfConfig::get('sf_root_dir').DIRECTORY_SEPARATOR.sfConfig::get('sf_web_dir_name')."/".$del; if ($delete_file) { unlink($delete_file); } $this->redirect('stPositioningBackend/verifySearchCustom', 301); } }