public function actionCreatePage() { if ($data = Yii::app()->getRequest()->getPost('SitemapPage')) { $model = new SitemapPage(); $model->setAttributes($data); $model->save(); } $this->redirect(['settings']); }
public function testShowInMenusRespected() { $sitemap = new SitemapPage(); $homePage = $this->objFromFixture('SiteTree', 'home'); $this->assertContains($homePage->Link(), HTTP::getLinksIn($sitemap->getSitemap()), 'The page is displayed by default.'); $homePage->ShowInMenus = false; $homePage->write(); $this->assertNotContains($homePage->Link(), HTTP::getLinksIn($sitemap->getSitemap()), 'The page is displayed by default.'); }
/** * Creates a default {@link SitemapPage} object if one does not currently exist. */ public function requireDefaultRecords() { if (!($sitemap = DataObject::get_one('SitemapPage'))) { $sitemap = new SitemapPage(); $sitemap->Title = _t('SitemapPage.SITEMAP', 'Sitemap'); $sitemap->Content = sprintf('<p>%s</p>', _t('SitemapPage.DEFAULTCONTENT', 'This page displays a sitemap of the pages in your site.')); $sitemap->write(); $sitemap->doPublish(); if (method_exists('DB', 'alteration_message')) { DB::alteration_message('Created default Sitemap page.', 'created'); } else { Database::alteration_message('Created default Sitemap page.', 'created'); } } parent::requireDefaultRecords(); }
/** * */ public function actionIndex() { $module = Yii::app()->getModule('sitemap'); $sitemapFile = $module->getSiteMapPath(); if (!file_exists($sitemapFile)) { $staticPages = SitemapPage::model()->getData(); $this->generator->generate($sitemapFile, $staticPages); } $this->redirect(['/sitemap/sitemap/index'], 301); }
public function actionIndex() { if (!($numberParts = Yii::app()->getCache()->get($this->cacheKeyNumberParts))) { if (!Yii::app()->getCache()->get($this->cacheKeyLock)) { Yii::app()->getCache()->set($this->cacheKeyLock, true, 90); set_time_limit(120); $urls = []; $cacheTime = $this->getModule()->cacheTime * 3600 + 1; $modules = (require_once Yii::getPathOfAlias('sitemap.config') . DIRECTORY_SEPARATOR . 'modules.php'); foreach ($modules as $name => $moduleModels) { $module = Yii::app()->getModule($name); if (null != $module && $module->getIsInstalled()) { foreach ($moduleModels as $options) { $dataProvider = $options['getDataProvider'](); $iterator = new CDataProviderIterator($dataProvider, 100); foreach ($iterator as $model) { $urls[] = $this->getUrlRow($options['getUrl']($model), $options['changeFreq'], $options['priority'], $options['getLastMod']($model)); } } } } $host = Yii::app()->getRequest()->hostInfo; $pagesDataProvider = new CActiveDataProvider(SitemapPage::model()->active(), []); $pagesIterator = new CDataProviderIterator($pagesDataProvider, 100); foreach ($pagesIterator as $page) { $urls[] = $this->getUrlRow($host . '/' . ltrim(str_replace($host, '', $page->url), '/'), $page->changefreq, $page->priority); } $parts = array_chunk($urls, $this->maxLinksCount); foreach ($parts as $key => $part) { $xml = join("", $part); Yii::app()->getCache()->set($this->cacheKeyPart . $key, $xml, $cacheTime); } $numberParts = count($parts); Yii::app()->getCache()->set($this->cacheKeyNumberParts, $numberParts, $cacheTime); Yii::app()->getCache()->delete($this->cacheKeyLock); } } header("Content-type: text/xml"); echo $this->getXmlHead(); if ($numberParts == 1) { echo $this->getUrlSetFromCache(0); } else { echo $this->getSitemapIndex($numberParts); } Yii::app()->end(); }
<?php /** * @package MediaWiki * @addtopackage maintenance * * @author Krzysztof Krzyżaniak <*****@*****.**> */ ini_set("include_path", dirname(__FILE__) . "/../../../maintenance/"); require_once "commandLine.inc"; $sitemap = new SitemapPage(); $namespaces = $sitemap->getNamespacesList(); wfOut("Caching {$wgDBname} ({$wgCityId}) for {$sitemap->mCacheTime} sec.\n"); /* * DPL causes some problems while parsing wiki text ( Video description ) * so let's unset DPL parser hooks for maintenance script */ $key = array_search("ExtDynamicPageList::setupDPL", $wgHooks['ParserFirstCallInit']); if ($key > 0) { unset($wgHooks['ParserFirstCallInit'][$key]); } $indexes = array(); foreach ($namespaces as $namespace) { echo "Caching namespace {$namespace}..."; $indexes[$namespace] = $sitemap->cachePages($namespace); echo " pages " . count($indexes[$namespace]); echo " done\n"; $includeVideo = (bool) F::app()->wg->EnableVideoSitemaps; if ($includeVideo && $namespace != NS_FILE) { $includeVideo = false; }
/** * @return array */ public function getData() { $provider = new CActiveDataProvider(SitemapPage::model()->active()); $data = []; foreach (new CDataProviderIterator($provider) as $page) { $data[] = ['location' => $page->url === '/' ? Yii::app()->getBaseUrl(true) : Yii::app()->getBaseUrl(true) . '/' . $page->url, 'changeFrequency' => $page->changefreq, 'priority' => $page->priority, 'lastModified' => null]; } return $data; }