*/ /** * Klasa stPositioningBackendComponents * * @package stPositioningPlugin * @subpackage actions * @author Michal Prochowski */ class stPositioningBackendComponents extends autostPositioningBackendComponents { /** * Edycja pliku robots.txt */ public function executeRobotFile() { $i18n = $this->getContext()->getI18N(); if ($this->getRequest()->getMethod() == sfRequest::POST && $this->getRequest()->hasParameter('positioning[fileContent]')) { stFile::write('robots.txt', $this->getRequest()->getParameter('positioning[fileContent]')); $this->setFlash('notice', $i18n->__('Twoje zmiany zostały zapisane', null, 'stAdminGeneratorPlugin'), false); } if ($this->getRequestParameter('restore', false)) { $baseFile = sfConfig::get('sf_root_dir').'/install/db/robots.base'; stFile::write('robots.txt', file_exists($baseFile) ? file_get_contents($baseFile) : ''); } $this->fileContent = stFile::read('robots.txt'); } /** * Typ w edycji produktu */ public function executeProductType() { $positioning = new stProductMetaTagsGenerator(); $this->positioning_data = $this->getPositioningData($positioning, $this->product_has_positioning->getProduct(), $this->product_has_positioning); } /** * Typ w edycji kategorii */ public function executeCategoryType() { $positioning = new stCategoryMetaTagsGenerator(); $this->positioning_data = $this->getPositioningData($positioning, $this->category_has_positioning->getCategory(), $this->category_has_positioning); } /** * Typ w edycji grup produktów */ public function executeProductGroupType() { $positioning = new stProductGroupMetaTagsGenerator(); $this->positioning_data = $this->getPositioningData($positioning, $this->product_group_has_positioning->getProductGroup(), $this->product_group_has_positioning); } /** * Typ w edycji stron www */ public function executeWebpageType() { $positioning = new stWebpageMetaTagsGenerator(); $this->positioning_data = $this->getPositioningData($positioning, $this->webpage_has_positioning->getWebpage(), $this->webpage_has_positioning); } /** * Typ w edycji producenta */ public function executeProducerType() { $positioning = new stProducerMetaTagsGenerator(); $this->positioning_data = $this->getPositioningData($positioning, $this->producer_has_positioning->getProducer(), $this->producer_has_positioning); } /** * Typ w edycji bloga */ public function executeBlogType() { $positioning = new stBlogMetaTagsGenerator(); $this->positioning_data = $this->getPositioningData($positioning, $this->blog_has_positioning->getBlog(), $this->blog_has_positioning); } /** * Typ w edycji kategorii bloga */ public function executeBlogCategoryType() { $positioning = new stBlogCategoryMetaTagsGenerator(); $this->positioning_data = $this->getPositioningData($positioning, $this->blog_category_has_positioning->getBlogCategory(), $this->blog_category_has_positioning); } protected function getPositioningData($metaGenerator, $object, $hasPositioning) { $positioning_data = array(); $positioning = PositioningPeer::doSelectDefaultValues(); $positioning->setCulture($this->getRequestParameter('language')); $positioning_data[] = array( 'title' => $positioning->getTitle(), 'desc' => $positioning->getDescription(), 'keywords' => $positioning->getKeywords()); $positioning_data[] = array( 'title' => $hasPositioning->getTitle(), 'desc' => $hasPositioning->getDescription(), 'keywords' => $hasPositioning->getKeywords()); $metaGenerator->generate($object); $positioning_data[] = array( 'title' => $metaGenerator->getTitle(), 'desc' => $metaGenerator->getDescription(), 'keywords' => $metaGenerator->getKeywords()); if (strlen(trim($hasPositioning->getTitle().$hasPositioning->getDescription().$hasPositioning->getKeywords()))== 0) { $positioning_data[1] = $positioning_data[2]; } return $positioning_data; } /** * Generowanie mapy serwisu */ public function executeSitemap() { $this->config = stConfig::getInstance($this->getContext()); $i18n = $this->getContext()->getI18N(); if ($this->getRequest()->getMethod() == sfRequest::POST) { $sitemap = $this->getRequestParameter('sitemap',array()); $this->config->set('langs',isset($sitemap['langs'])?$sitemap['langs']:array()); $this->config->set('verify',isset($sitemap['verify'])?$sitemap['verify']:''); $this->config->set('seolinks',isset($sitemap['seolinks'])?$sitemap['seolinks']:''); if (!$this->getRequest()->hasErrors()) { $this->config->save(); if (!$this->getRequestParameter('save_and_generate',0)) $this->setFlash('notice', $i18n->__('Twoje zmiany zostały zapisane', null, 'stAdminGeneratorPlugin'),false); } $this->langs = $this->config->get('langs'); } else { $this->config->load(); $this->langs = $this->config->get('langs'); if (!is_array($this->langs) || count($this->langs)==0) { $language = LanguagePeer::doSelectDefault(); $this->langs = array(); $this->langs[$language->getShortcut()] = $language->getOriginalLanguage(); } } $c = new Criteria(); $c->add(LanguagePeer::ACTIVE,1); $this->languages = LanguagePeer::doSelect($c); $c = new Criteria(); $c->add(LanguageHasDomainPeer::IS_DEFAULT, 1); $this->domains = LanguageHasDomainPeer::doSelect($c); } public function executeGenerateSitemap() { $categoryCount = CategoryPeer::doCount(new Criteria()); $c = new Criteria(); $c->add(ProductGroupPeer::OPT_NAME,null, Criteria::ISNOTNULL); $productGroupCount = ProductGroupPeer::doCount($c); $c = new Criteria(); $c->add(WebpagePeer::ACTIVE, 1); $c->add(WebpagePeer::OPT_CONTENT, null, Criteria::ISNOTNULL); $webpageCount = WebpagePeer::doCount($c); $c = new Criteria(); $c->add(BlogPeer::ACTIVE, 1); $blogCount = BlogPeer::doCount($c); $c = new Criteria(); $config = stConfig::getInstance('stProduct'); $c->add(ProductPeer::ACTIVE,1); if ($config->get('show_without_price')) { $c->add(ProductPeer::PRICE,0,Criteria::GREATER_THAN); } stEventDispatcher::getInstance()->notify(new sfEvent($this, 'stProductActions.postAddProductCriteria', array('criteria' => $c))); $ProductCount = ProductPeer::doCount($c); $this->count = $categoryCount + $productGroupCount + $webpageCount + $blogCount + $ProductCount; $config = stConfig::getInstance($this->getContext()); $config->load(); $this->langs = $config->get('langs'); $this->http_mode = $this->getSSL(); } /** * Edycja pliku robots.txt */ public function executeVerifySearch() { $this->config = stConfig::getInstance($this->getContext()); $this->http_mode = $this->getSSL(); $i18n = $this->getContext()->getI18N(); $current = sfConfig::get('sf_root_dir').DIRECTORY_SEPARATOR.sfConfig::get('sf_web_dir_name'); if ($this->getRequest()->getMethod() == sfRequest::POST) { $verify = $this->getRequestParameter('verify',array()); $this->config->set('verify',isset($verify['verify'])?$verify['verify']:''); $verify_file = $this->getRequest()->getFileName('verify[file]'); if (!$this->getRequest()->hasErrors()) { if ($verify_file) { $this->getRequest()->moveFile('verify[file]', $current."/".$verify_file); } $this->config->save(); stFastCacheManager::clearCache(); $this->setFlash('notice', $i18n->__('Twoje zmiany zostały zapisane', null, 'stAdminGeneratorPlugin'),false); } } $this->domainsVerify = $this->config->get('verify'); $c = new Criteria(); $c->add(LanguageHasDomainPeer::IS_DEFAULT, 1); $this->domains = LanguageHasDomainPeer::doSelect($c); $files = scandir($current); $this->added_files = array(); foreach ($files as $key => $file) { if ((strpos($file, "google")!== false) || (strpos($file, "yandex")!== false) || (strpos($file, "BingSiteAuth")!== false)) { $this->added_files[$key] = $file; } } } /** * Edycja pliku robots.txt */ public function execute404links() { $i18n = $this->getContext()->getI18N(); $file = sfConfig::get('sf_web_dir').'/404_links.txt'; if ($this->getRequest()->getMethod() == sfRequest::POST && $this->getRequest()->hasParameter('404links[fileContent]')) { stFile::write($file, $this->getRequest()->getParameter('404links[fileContent]')); $this->setFlash('notice', $i18n->__('Twoje zmiany zostały zapisane', null, 'stAdminGeneratorPlugin'), false); } $this->fileContent = is_file($file) ? file_get_contents($file) : ''; } private function getSSL() { $config = stConfig::getInstance($this->getContext(), 'stSecurityBackend'); if ($config->get('ssl')){ return 'https://'; }else{ return 'http://'; } } }