*/ /** * stWebpageBackend actions. * * @author Krzysztof Bebło * * @package stWebpagePlugin * @subpackage actions */ class stWebpageBackendActions extends autostWebpageBackendActions { public function addFiltersCriteria($c) { $c->add(WebpagePeer::OPT_URL, array("app-terms", "app-privacy", "app-right2cancel"), Criteria::NOT_IN); $c->add(WebpageI18nPeer::OTHER_LINK, NULL, Criteria::ISNULL); $c->addAscendingOrderByColumn("CREATED_AT"); parent::addFiltersCriteria($c); } public function validateEdit() { if ($this->getRequest()->getMethod() == sfRequest::POST) { $data = $this->getRequestParameter('webpage'); $terms = stConfig::getInstance('stCompatibilityBackend')->get('terms_in_mail_confirm_order_format'); $right2Cancel = stConfig::getInstance('stCompatibilityBackend')->get('right_2_cancel_in_mail_confirm_order_format'); if (($data['state'] == 'TERMS' && $terms == 'pdf' || $data['state'] == 'RIGHT2CANCEL' && $right2Cancel == 'pdf') && $this->getRequest()->getFileError('webpage[attachment]') == UPLOAD_ERR_OK && strpos($this->getRequest()->getFileName('webpage[attachment]'), '.pdf') === false) { $i18n = $this->getContext()->getI18N(); $this->getRequest()->setError('webpage{attachment}', $i18n->__('Załączony plik musi być w formacie PDF')); } if (isset($data['generate_pdf']) && $data['generate_pdf'] && ini_get('max_execution_time') < 180 && !set_time_limit(180)) { $i18n = $this->getContext()->getI18N(); $this->getRequest()->setError('webpage{attachment}', $i18n->__('Automatycznego generowanie plików PDF wymaga ustawienie parametru PHP "max_execution_time" na minimum 180 sekund')); } //echo stConfig::getInstance('appTermsBackend')->get('terms_on'); if ($data['state'] == 'TERMS' && stConfig::getInstance('appTermsBackend')->get('terms_on') == 1 && !$this->getRequest()->hasErrors()) { $config = stConfig::getInstance('appTermsBackend'); $config->setCulture(sfContext::getInstance()->getRequest()->getParameter('culture', stLanguage::getOptLanguage())); $config->set('terms_field1', $data['terms_field1'], true); $config->set('terms_field2', $data['terms_field2'], true); $config->set('terms_field3', $data['terms_field3'], true); $config->set('terms_field4', $data['terms_field4'], true); $config->set('terms_field5', $data['terms_field5'], true); $config->set('terms_field6', $data['terms_field6'], true); $config->set('terms_field7', $data['terms_field7'], true); $config->set('terms_field8', $data['terms_field8'], true); $config->set('terms_field9', $data['terms_field9'], true); $config->set('terms_field10', $data['terms_field10'], true); $config->set('terms_field11', $data['terms_field11'], true); $config->set('terms_field12', $data['terms_field12'], true); $config->set('terms_field13', $data['terms_field13'], true); $config->save(); } if ($data['state'] == 'PRIVACY' && stConfig::getInstance('appTermsBackend')->get('privacy_on') == 1 && !$this->getRequest()->hasErrors()) { $config = stConfig::getInstance('appTermsBackend'); $config->setCulture(sfContext::getInstance()->getRequest()->getParameter('culture', stLanguage::getOptLanguage())); $config->set('privacy_field1', $data['privacy_field1'], true); $config->set('privacy_field2', $data['privacy_field2'], true); $config->set('privacy_field3', $data['privacy_field3'], true); $config->set('privacy_field4', $data['privacy_field4'], true); $config->set('privacy_field5', $data['privacy_field5'], true); $config->save(); } } return !$this->getRequest()->hasErrors(); } public function executeDeleteTerms() { $path = $this->getRequestParameter('path'); $page = $this->getRequestParameter('page'); if (is_file($path)) { unlink($path); } $this->redirect("stWebpageBackend/edit?id=" . $page); } /** * {@inheritDoc} */ protected function addLinksFiltersCriteria($c) { parent::addLinksFiltersCriteria($c); $c->add(WebpageI18nPeer::OTHER_LINK, null, Criteria::ISNOTNULL); } protected function saveWebpage($webpage) { $ret = parent::saveWebpage($webpage); if ($this->getRequest()->getParameter('webpage_delete_attachment')) { $webpage->deleteAttachment(); } elseif ($this->getRequest()->getFileError('webpage[attachment]') == UPLOAD_ERR_OK) { $filepath = $webpage->getPdfAttachmentPath(); $this->getRequest()->moveFile('webpage[attachment]', $filepath, 0644, true, 0755); } return $ret; } protected function updateWebpageGroupMainWebpageGroupFromRequest() { $webpage_group = $this->getRequestParameter('webpage_group'); if (isset($webpage_group['show_header'])) { $c = new Criteria(); $c->add(WebpageGroupPeer::SHOW_HEADER, 1); $webpages_group_object = WebpageGroupPeer::doSelectOne($c); if ($webpages_group_object) { $webpages_group_object->setShowHeader(0); $webpages_group_object->save(); } } parent::updateWebpageGroupMainWebpageGroupFromRequest(); } protected function updateWebpageFromRequest() { $data = $this->getRequestParameter('webpage'); if (isset($data['state']) && !empty($data['state'])) { $c = new Criteria(); $c->add(WebpagePeer::STATE, $data['state']); $c->add(WebpagePeer::ID, $this->getRequestParameter('id'), Criteria::NOT_EQUAL); $webpages = WebpagePeer::doSelect($c); foreach ($webpages as $webpage) { $webpage->setState(NULL); $webpage->save(); } } parent::updateWebpageFromRequest(); if (isset($data['generate_pdf'])) { $this->webpage->setGeneratePdf((bool)$data['generate_pdf']); } if (!isset($data['state']) || empty($data['state'])) $this->webpage->setState(NULL); } protected function updateLinksWebpageFromRequest() { parent::updateLinksWebpageFromRequest(); $webpage = $this->getRequestParameter('webpage'); $this->webpage->setUrl(NULL); if ($webpage['target'] != 1) { $this->webpage->setTarget(NULL); } } public function executeViewPage() { if ($this->getRequest()->hasParameter('id')) { $id = $this->getRequestParameter('id'); $webpage = WebpagePeer::retrieveByPk($id); if (is_object($webpage)) { stPluginHelper::addRouting('stWebpageUrlLang', '/webpage/:lang/:url.html', 'stWebpageFrontend', 'index', 'backend'); stPluginHelper::addRouting('stWebpageUrl', '/webpage/:url.html', 'stWebpageFrontend', 'index', 'backend'); sfLoader::loadHelpers(array('Helper', 'stUrl')); if (($webpage->getCulture() == "pl_PL") || ($webpage->getCulture() == 'en_US')) { $lang_tab = explode("_", $webpage->getCulture()); $culture = $lang_tab[0]; } else { $culture = $webpage->getCulture(); } $url = st_url_for('stWebpageFrontend/index?url='.$webpage->getFriendlyUrl(), true, 'frontend', null, $culture, SF_ENVIRONMENT != 'dev', null); return $this->redirect($url, 301); } else { return $this->redirect('stWebpageBackend/list'); } } else { return $this->redirect('stWebpageBackend/list'); } } }