uawdijnntqw1x1x1
IP : 216.73.216.155
Hostname : vm5018.vps.agava.net
Kernel : Linux vm5018.vps.agava.net 3.10.0-1127.8.2.vz7.151.14 #1 SMP Tue Jun 9 12:58:54 MSK 2020 x86_64
Disable Function : None :)
OS : Linux
PATH:
/
var
/
www
/
iplanru
/
data
/
.
/
mod-tmp
/
..
/
www
/
.
/
i-plan.ru
/
components
/
com_sef
/
sef_ext
/
com_content.php
/
/
<?php /** * SEF component for Joomla! * * @package JoomSEF * @version 4.7.8 * @author ARTIO s.r.o., http://www.artio.net * @copyright Copyright (C) 2020 ARTIO s.r.o. * @license GNU/GPLv3 http://www.artio.net/license/gnu-general-public-license */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die('Restricted access.'); define( '_COM_SEF_PRIORITY_CONTENT_ARTICLE_ITEMID', 15 ); define( '_COM_SEF_PRIORITY_CONTENT_ARTICLE', 20 ); define( '_COM_SEF_PRIORITY_CONTENT_CATEGORYLIST_ITEMID', 35 ); define( '_COM_SEF_PRIORITY_CONTENT_CATEGORYLIST', 40 ); define( '_COM_SEF_PRIORITY_CONTENT_CATEGORYBLOG_ITEMID', 55 ); define( '_COM_SEF_PRIORITY_CONTENT_CATEGORYBLOG', 60 ); // Backwards compatibility with Joomla <3.7 if (!version_compare(JVERSION, '3.7', 'ge')) { require_once(JPATH_ROOT.'/components/com_content/helpers/route.php'); class SefExtContentRouteHelper extends ContentHelperRoute { public static function getItemid($id) { $needles = array('article' => array((int)$id)); $Itemid = self::_findItem($needles); return $Itemid; } } } class SefExt_com_content extends SefExt { public function getNonSefVars(&$uri) { $this->_createNonSefVars($uri); return array($this->nonSefVars, $this->ignoreVars); } protected function _createNonSefVars(&$uri) { if (!isset($this->nonSefVars) && !isset($this->ignoreVars)) { $this->nonSefVars = array(); $this->ignoreVars = array(); } $this->params =& SEFTools::GetExtParams('com_content'); $sefConfig = SEFConfig::getConfig(); if ($sefConfig->appendNonSef && ($this->params->get('pagination', '0') != '0')) { if (!is_null($uri->getVar('limit'))) { $this->nonSefVars['limit'] = $uri->getVar('limit'); } if (!is_null($uri->getVar('limitstart'))) { $this->nonSefVars['limitstart'] = $uri->getVar('limitstart'); } } if (!is_null($uri->getVar('filter'))) { $this->nonSefVars['filter'] = $uri->getVar('filter'); } if (!is_null($uri->getVar('return'))) $this->nonSefVars['return'] = $uri->getVar('return'); } protected function _getArticle($id) { $sefConfig = SEFConfig::getConfig(); $title=array(); $field = 'title'; if (SEFTools::UseAlias($this->params, 'title_alias')) { $field = 'alias'; } $id = intval($id); $query = "SELECT `id`, `title`, `alias`, `introtext`, `fulltext`, `language`, `metakey`, `metadesc`, `metadata`, `catid` FROM `#__content` WHERE `id` = '{$id}'"; $this->_db->setQuery($query); $row = $this->_db->loadObject('stdClass', $this->config->translateItems); // Article dont exists if (!is_object($row)) { JoomSefLogger::Log("Article with ID {$id} could not be found.", $this, 'com_content'); return array(); } $catInfo = $this->getCategory($row->catid, true); if ($catInfo === false) { return array(); } if($this->params->get('show_category', '2') != 0) { if (is_array($catInfo->path) && (count($catInfo->path) > 0)) { $title = array_merge($title, $catInfo->path); } } //$this->item_desc = $row->introtext; if ($this->params->get('googlenewsnum', 0) == 0) { $title[] = (($this->params->get('articleid', '0') == 1) ? $id.'-' : '').$row->$field; } else { $title = array_merge($title, $this->GoogleNews($row->$field, $id)); } $this->getMetaData($row); if ($this->params->get('meta_titlecat',0) == 1) { $this->pageTitle = $row->title; $metatitle = array_merge(array($row->title), $catInfo->titles); $this->metatags["metatitle"] = implode(" - ", $metatitle); } $this->metadesc = $row->introtext; $this->origmetadesc = $row->metadesc; $this->metakeySource = $row->fulltext; $this->origmetakey = $row->metakey; $this->articleText = $row->introtext . chr(13) . chr(13) . $row->fulltext; return $title; } /** * Returns cached instance of content router menu rules, used to search correct Itemid * * @return JComponentRouterRulesMenu */ private function getContentMenuRules() { static $rules = null; if (!$rules) { $app = JFactory::getApplication(); $router = new ContentRouter($app, $app->getMenu()); $rules = new JComponentRouterRulesMenu($router); } return $rules; } /** * Called before the non-SEF URL is searched in the database * * @param JUri $uri */ public function beforeCreate(&$uri) { // remove the limitstart and limit variables if they point to the first page if (!is_null($uri->getVar('limitstart')) && ($uri->getVar('limitstart') == '0')) { $uri->delVar('limitstart'); $uri->delVar('limit'); } // Remove empty variables if ($uri->getVar('limitstart') == '') { $uri->delVar('limitstart'); } if ($uri->getVar('showall') == '') { $uri->delVar('showall'); } // Try to guess the correct Itemid if set to if ($this->params->get('guessId', '0') != '0') { if (version_compare(JVERSION, '3.7', 'ge')) { // Use new objects if (!is_null($uri->getVar('id'))) { $query = $uri->getQuery(true); // Convert lang code to tag if set, so the menu rules can find menu items for correct language if (!empty($query['lang'])) { $query['lang'] = JoomSEF::getLangCode($query['lang']); } $this->getContentMenuRules()->preprocess($query); if (!empty($query['Itemid'])) { $uri->setVar('Itemid', $query['Itemid']); } } } else { // Backwards compatibility for Joomla <3.7 if (!is_null($uri->getVar('Itemid')) && !is_null($uri->getVar('id'))) { $itemid = SefExtContentRouteHelper::getItemid($uri->getVar('id')); if (!is_null($itemid)) { $uri->setVar('Itemid', $itemid); } } } } // Remove the part after ':' from variables if (!is_null($uri->getVar('id'))) SEFTools::fixVariable($uri, 'id'); if (!is_null($uri->getVar('catid'))) SEFTools::fixVariable($uri, 'catid'); // TODO: We should remove this, as it generates 1 unnecessary SQL query for each article link, // instead the catid should just be always removed from article URL (but when updating JoomSEF, // we'll need to update URLs already in database to reflect such change = remove catid from them!) // If catid not given, try to find it $catid = $uri->getVar('catid'); if (!is_null($uri->getVar('view')) && ($uri->getVar('view') == 'article') && !is_null($uri->getVar('id')) && empty($catid)) { $id = $uri->getVar('id'); $query = "SELECT `catid` FROM `#__content` WHERE `id` = ".(int)$id; $this->_db->setQuery($query); $catid = $this->_db->loadResult(); if (is_null($catid)) { JoomSefLogger::Log("Article with ID {$id} could not be found.", $this, 'com_content'); } if (!empty($catid)) { $uri->setVar('catid', $catid); } } // remove empty id in categories list if ($uri->getVar('view') == 'categories' && ! (int) $uri->getVar('id')) $uri->delVar('id'); return; } protected function GoogleNews($title, $id) { $db = JFactory::getDBO(); $num = ''; $add = $this->params->get('googlenewsnum', '0'); if ($add == '1' || $add == '3') { // Article ID $digits = trim($this->params->get('digits', '3')); if (!is_numeric($digits)) { $digits = '3'; } $num1 = sprintf('%0'.$digits.'d', $id); } if ($add == '2' || $add == '3') { // Publish date $query = "SELECT `publish_up` FROM `#__content` WHERE `id` = ".(int)$id; $db->setQuery($query); $time = $db->loadResult(); $time = strtotime($time); $date = $this->params->get('dateformat', 'ddmm'); $search = array('dd', 'd', 'mm', 'm', 'yyyy', 'yy'); $replace = array(date('d', $time), date('j', $time), date('m', $time), date('n', $time), date('Y', $time), date('y', $time) ); $num2 = str_replace($search, $replace, $date); } if ($add == '1') { $num = $num1; } else if ($add == '2') { $num = $num2; } else if ($add == '3') { $sep = $this->params->get('iddatesep', ''); if ($this->params->get('iddateorder', '0') == '0') { $num = $num2.$sep.$num1; } else { $num = $num1.$sep.$num2; } } if (!empty($num)) { $onlyNum = ($this->params->get('title_alias', 'global') == 'googlenews'); if ($onlyNum) { $title = $num; } else { $sep = $this->params->get('iddatesep', ''); if (empty($sep)) { $sefConfig = SEFConfig::getConfig(); $sep = $sefConfig->replacement; } $where = $this->params->get('numberpos', '1'); if( $where == '1' ) { $title = $title.$sep.$num; } else { $title = $num.$sep.$title; } } } // Support for slashes $title = explode('/', $title); return $title; } function _processPagination(&$uri) { $title=array(); $sefConfig = SEFConfig::getConfig(); $handle=$this->params->get('pagination',0); if($sefConfig->appendNonSef==true && $handle==1 ) { $this->nonSefVars['limitstart'] = $uri->getVar('limitstart'); return array(); } //$appParams=JFactory::getApplication('site')->getParams(); $appParams=JApplication::getInstance('site')->getParams('com_content'); $menu = JFactory::getApplication()->getMenu('site'); $Itemid = $uri->getVar('Itemid'); if (!$Itemid) { // We need to find Itemid first $active = $menu->getActive(); if (is_null($active)) { $active = $menu->getDefault(); } $Itemid = $active->id; } $menuParams = $menu->getParams($Itemid); // Combine app and menu parameters $params = clone $appParams; $params->merge($menuParams); // View: Article if($uri->getVar("view")=="article") { if(($limitstart=$uri->getVar('limitstart'))>0) { $pagetext = null; if ($this->params->get('multipagetitles', '1') == '1') { $pagetext = $this->_getPageTitle($limitstart); } if (!is_null($pagetext)) { $title[] = $pagetext; } else { $pagetext = strval($limitstart+1); if (($cnfPageText = $sefConfig->getPageText())) { $this->pageNumberText = str_replace('%s', $limitstart+1, $cnfPageText); $title[] = $this->pageNumberText; } } } if($uri->getVar('showall')==1) { if ($this->params->get('always_en', '0') == '1') { $title[] = 'All pages'; } else { $title[] = JText::_('COM_SEF_ALL_PAGES'); } } // Layouts: category default list; View: Archive } else if($uri->getVar("layout")!="blog" && $uri->getVar("view")!="featured") { // If pagination filter is disabled we can make sef URL's with pagination if($params->get('show_pagination_limit',1)==0 || $uri->getVar("view")!="featured") { $limit=$params->get('display_num'); $limitstart=$uri->getVar('limitstart'); if (intval($limit) == 0) { $limit = 1; } @$page=intval($limitstart/$limit)+1; if($page!=1) { $pagetext = strval($page); if (($cnfPageText = $sefConfig->getPageText())) { $this->pageNumberText = str_replace('%s', $page, $cnfPageText); $title[] = $this->pageNumberText; } } } else { if(!is_null($uri->getVar('limitstart'))) { $this->nonSefVars['limitstart'] = $uri->getVar('limitstart'); } } // Layout: category blog; View: featured } else { $leading = $params->get('num_leading_articles', 1); $intro = $params->get('num_intro_articles', 4); $limit = $leading + $intro; if (intval($limit) == 0) { $limit = 1; } $limitstart=$uri->getVar('limitstart'); $page = intval($limitstart / $limit) + 1; if($page!=1) { $pagetext = strval($page); if (($cnfPageText = $sefConfig->getPageText())) { $this->pageNumberText = str_replace('%s', $page, $cnfPageText); $title[] = $this->pageNumberText; } } } return $title; } private function _getPageTitle($page) { jimport('joomla.utilities.utility'); if (empty($this->articleText)) { return null; } // simple performance check if (JString::strpos($this->articleText, 'class="system-pagebreak') === false) { return null; } // regex $regex = '#<hr(.*)class="system-pagebreak"(.*)\/>#iU'; // Find all occurences $matches = array(); preg_match_all($regex, $this->articleText, $matches, PREG_SET_ORDER); if (!isset($matches[$page-1]) || !isset($matches[$page-1][2])) { return null; } $attrs = JUtility::parseAttributes($matches[$page-1][0]); if (isset($attrs['alt'])) { return stripslashes($attrs['alt']); } else if (isset($attrs['title'])) { return stripslashes($attrs['title']); } else { return null; } } /** * Returns category with filtered path (excludes selected categories, always leaves the last one) * * @param int $catId * @param bool $removeAll * @return object|bool */ private function getCategory($catId, $removeAll = false) { $catInfo = $this->getCategoryInfo($catId); if ($catInfo === false) { JoomSefLogger::Log("Category with ID {$catId} could not be found.", $this, 'com_content'); return false; } $exclude = $this->params->get('exclude_catid', ''); if (is_array($exclude) && is_array($catInfo->path) && ($removeAll || (count($catInfo->path) > 1))) { foreach ($catInfo->path_ids as $key => $id) { if (in_array($id, $exclude)) { // Exclude this category unset($catInfo->path[$key]); unset($catInfo->path_ids[$key]); unset($catInfo->titles[$key]); if (!$removeAll && count($catInfo->path) < 2) break; } } } return $catInfo; } public function create(&$uri) { $this->metadesc = null; $this->cat_desc = null; $this->item_desc = null; $sefConfig = SEFConfig::getConfig(); $title = array(); $vars = $uri->getQuery(true); extract($vars); $this->_createNonSefVars($uri); // Set title. $title[] = JoomSEF::_getMenuTitleLang(@$option, $this->lang, @$Itemid); // #19413: Handle task first, it has higher priority than view if (isset($task) && $task == 'article.add') { if (isset($catid)) { $catInfo = $this->getCategory($catid); if ($catInfo === false) { return $uri; } if (is_array($catInfo->path) && (count($catInfo->path) > 0)) { $title = array_merge($title, $catInfo->path); } } if ($this->params->get('always_en', '0') == '1') { $title[] = 'New'; } else { $title[]=JText::_('COM_SEF_NEW'); } } else if (isset($task) && $task == 'article.edit') { if(isset($a_id)) { $title=array_merge($title,$this->_getArticle($a_id)); } if ($this->params->get('always_en', '0') == '1') { $title[] = 'Edit'; } else { $title[]=JText::_('COM_SEF_EDIT'); } } else { switch (@$view) { case 'form': // 13.2.2012, dajo: Don't SEF return $uri; //$this->nonSefVars = array(); //$this->nonSefVars["return"]=@$return; //if(isset($a_id)) { // $title=array_merge($title,$this->_getArticle($a_id)); //} //$title[] = JText::_('COM_SEF_FORM'); //break; case 'featured': if(isset($format) && $format=="feed") { @$title[]=$type; } $title=array_merge($title,$this->_processPagination($uri)); break; case 'categories': break; case 'category': if (isset($id)) { $catInfo = $this->getCategory($id); if ($catInfo === false) { return $uri; } if (is_array($catInfo->path) && (count($catInfo->path) > 0)) { $title = array_merge($title, $catInfo->path); } } if($this->params->get('add_layout', 0) == 2 || ($this->params->get('add_layout', 0) == 1 && $this->params->get('def_layout', 'default') != @$layout)) { @$title[]=$layout; } if(isset($format) && $format=="feed") { @$title[]=$type; } $title=array_merge($title,$this->_processPagination($uri)); break; case 'article': $articleInfo = $this->_getArticle($id); if (!$articleInfo) return $uri; $title = array_merge($title, $articleInfo); $title = array_merge($title, $this->_processPagination($uri)); break; case 'archive': if( !empty($year) ) { $title[] = $year; } if( !empty($month) ) { $title[] = $month; } $title=array_merge($title,$this->_processPagination($uri)); break; default: // Don't SEF return $uri; } } // #34487: Handle format=pdf if (isset($format) && $format == 'pdf') { $title[] = $format; } // Handle printing if (isset($print) && (intval($print) == 1)) { if ($this->params->get('always_en', '0') == '1') { $title[] = 'Print'; } else { $title[] = JText::_('JGLOBAL_PRINT'); } } $newUri = $uri; if (count($title) > 0) { // Generate meta tags $this->metatags=$this->getMetaTags(); if (($this->params->get('meta_titlepage', '0') == '1') && !empty($this->pageNumberText)) { // Add page number to page title if (!empty($this->metatags["metatitle"])) { $this->metatags["metatitle"] .= ' - '.$this->pageNumberText; } else { $this->metatags["metatitle"] = (!empty($this->pageTitle) ? $this->pageTitle.' - ' : '') . $this->pageNumberText; } } $priority = $this->getPriority($uri); $sitemap = $this->getSitemapParams($uri); if(isset($this->lang)) { $lang=$this->lang; } $newUri = JoomSEF::_sefGetLocation($uri, $title, null, null, null, @$lang, $this->nonSefVars, null, $this->metatags, $priority, true,null, $sitemap); } return $newUri; } function getSitemapParams(&$uri) { if ($uri->getVar('format', 'html') != 'html') { // Handle only html links return array(); } $view = $uri->getVar('view'); $sm = array(); switch ($view) { case 'article': case 'category': $indexed = $this->params->get('sm_'.$view.'_indexed', '1'); $freq = $this->params->get('sm_'.$view.'_freq', ''); $priority = $this->params->get('sm_'.$view.'_priority', ''); if (!empty($indexed)) $sm['indexed'] = $indexed; if (!empty($freq)) $sm['frequency'] = $freq; if (!empty($priority)) $sm['priority'] = $priority; break; } return $sm; } public function getPriority(&$uri) { $itemid = $uri->getVar('Itemid'); $view = $uri->getVar('view'); $layout = $uri->getVar('layout'); switch($view) { case 'article': if( is_null($itemid) ) { return _COM_SEF_PRIORITY_CONTENT_ARTICLE; } else { return _COM_SEF_PRIORITY_CONTENT_ARTICLE_ITEMID; } break; case 'category': if( $layout == 'blog' ) { if( is_null($itemid) ) { return _COM_SEF_PRIORITY_CONTENT_CATEGORYBLOG; } else { return _COM_SEF_PRIORITY_CONTENT_CATEGORYBLOG_ITEMID; } } else { if( is_null($itemid) ) { return _COM_SEF_PRIORITY_CONTENT_CATEGORYLIST; } else { return _COM_SEF_PRIORITY_CONTENT_CATEGORYLIST_ITEMID; } } break; default: return null; break; } } function getURLPatterns($item) { $urls=array(); if($item->getTableName()=='#__categories') { // Category view $urls[]='index\.php\?option=com_content(&format=feed)?&id='.$item->id.'&'; // Content View $urls[]='index\.php\?option=com_content&catid='.$item->id.'&id='; $tree=$item->getTree($item->id); foreach($tree as $catitem) { $urls[]='index\.php\?option=com_content(&format=feed)?&id='.$catitem->id.'&'; $urls[]='index\.php\?option=com_content&catid='.$catitem->id.'&id='; } } else { $urls[]='index\.php\?option=com_content(&catid=([0-9])*)*&id='.$item->id.'(&lang=[a-z]+)?(&limitstart=[0-9]+)?(&type=(atom|rss))?&view=article'; } return $urls; } }
/var/www/iplanru/data/./mod-tmp/../www/./i-plan.ru/components/com_sef/sef_ext/com_content.php