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
/
www
/
i-plan.ru
/
plugins
/
system
/
joomsef
/
joomsef.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 */ // Security check to ensure this file is being included by a parent file. defined('_JEXEC') or die('Restricted access'); jimport('joomla.language.helper'); JLoader::register('SEFConfig', JPATH_ADMINISTRATOR.'/components/com_sef/classes/config.php'); JLoader::register('SEFTools', JPATH_ADMINISTRATOR.'/components/com_sef/classes/seftools.php'); class plgSystemJoomsef extends JPlugin { var $linksDivs = array(); public function __construct(&$subject) { parent::__construct($subject); // load plugin parameters $this->_plugin = JPluginHelper::getPlugin('system', 'joomsef'); $this->_params = new JRegistry($this->_plugin->params); if($this->_isEnabled()) { require_once( JPATH_ROOT.'/components/com_sef/joomsef.php' ); JoomSEF::getLanguage(JFactory::getURI()); } } function onAfterInitialise() { $sefConfig = SEFConfig::getConfig(); $mainframe = JFactory::getApplication(); // Enable menu associations if set to $joomlaVersion = new JVersion(); if ($joomlaVersion->isCompatible('3.2')) { // 3.2 if ($sefConfig->langMenuAssociations) { JLoader::register('JLanguageMultilang', JPATH_ROOT.'/administrator/components/com_sef/libs/cms/language/multilang.php'); JLoader::register('JLanguageAssociations', JPATH_ROOT.'/administrator/components/com_sef/libs/cms/language/associations.php'); } } else if ($joomlaVersion->isCompatible('3.0')) { // 3.0 $mainframe->item_associations = $sefConfig->langMenuAssociations ? 1 : 0; } else { // 2.5 $mainframe->set('menu_associations', $sefConfig->langMenuAssociations ? 1 : 0); } // Register installer and updater adapters in admin area $this->registerAdapters(); // Check if JoomSEF should be run if (!self::_isEnabled()) { return true; } // Store the router for later use $router = $mainframe->getRouter(); JoomSEF::set('sef.global.jrouter', $router); // Load JoomSEF language file $jLang = JFactory::getLanguage(); $jLang->load('com_sef', JPATH_ADMINISTRATOR); require_once(JPATH_ROOT.'/components/com_sef/sef.router.php'); $jsRouter = new JRouterJoomsef(); $router->attachParseRule(array($jsRouter, 'parseSef')); $router->attachBuildRule(array($jsRouter, 'buildSef')); // Disable global "Add suffix to URLs" before parsing and store current config $config = JFactory::getConfig(); $oldSuffix = $config->get('sef_suffix', 0); $config->set('sef_suffix', 0); JoomSEF::set('sef.global.orig_sef_suffix', $oldSuffix); // Get all configured subdomains $subdomains = SEFTools::getAllSubdomains(); // Redirect only when there's no POST variables if (($sefConfig->wwwHandling != _COM_SEF_WWW_NONE) && empty($_POST)) { // Handle www and non-www domain $uri = JURI::getInstance(); $host = $uri->getHost(); $redirect = false; // Check if host is only IP $isIP = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\z/', $host); if ($sefConfig->wwwHandling == _COM_SEF_WWW_USE_WWW && !$isIP && strpos($host, 'www.') !== 0) { // Check if host starts with one of our subdomains if (isset($subdomains['*']) && (count($subdomains['*']) > 0)) { $parts = explode('.', $host); $domain = $parts[0]; $found = false; foreach ($subdomains['*'] as $sub) { if ($domain == $sub->subdomain) { $found = true; break; } } if (!$found) { // Redirect to www form $redirect = true; $uri->setHost('www.'.$host); } } else { // Redirect to www form $redirect = true; $uri->setHost('www.'.$host); } } else if ($sefConfig->wwwHandling == _COM_SEF_WWW_USE_NONWWW && strpos($host, 'www.') === 0) { // host must not begin with www. $redirect = true; $uri->setHost(substr($host, 4)); } // Redirect if needed if ($redirect) { $url = $uri->toString(); SEFTools::redirect($url, true); jexit(); } } return true; } function registerAdapters() { $app = JFactory::getApplication(); // Register adapters only in admin area if (!$app->isAdmin()) { return; } // Include adapter files require_once(JPATH_ADMINISTRATOR.'/components/com_sef/adapters/sef_ext.php'); require_once(JPATH_ADMINISTRATOR.'/components/com_sef/adapters/sef_update.php'); // Set installer adapter $installer = JInstaller::getInstance(); $adapterSefExt = new JInstallerAdapterSef_ext($installer); $installer->setAdapter('sef_ext', $adapterSefExt); // Set updater adapter $updater = JUpdater::getInstance(); $db = $updater->getDBO(); $adapterSefUpdate = new JUpdaterSEF_Update($updater, $db); $updater->setAdapter('sef_update', $adapterSefUpdate); } function onAfterDispatch() { $mainframe = JFactory::getApplication(); if ($mainframe->isAdmin()) { // Add code to prevent separators in admin menu from // creating new URLs and generating 404's $doc = JFactory::getDocument(); if ($doc->getType() == 'html') { $doc->addStyleDeclaration('.icon-16-separator { background: none !important; background-image: none !important; }'); } } // Check if JoomSEF should be run if (!self::_isEnabled() || !class_exists('JoomSEF') || !JoomSEF::enabled($this)) { return true; } // Check page base href value $this->_checkBaseHref(); // Remove Joomla generated canonical links if set to $sefConfig = SEFConfig::getConfig(); if ($sefConfig->canonicalsRemove) { $this->_removeCanonicals(); } // Do not run plugin if metadata generation is disabled if ($sefConfig->enable_metadata > 0) { // generate page title $this->_checkSEFTitle(); // generate page metadata $this->_generateMeta(); } // Fix canonical links if set to if ($sefConfig->canonicalsFix) { $this->_fixCanonicals(); } return true; } function onAfterRender() { // Check if JoomSEF should be run if (!self::_isEnabled() || !class_exists('JoomSEF') || !JoomSEF::enabled($this)) { return; } // Change the index.php links to / $sefConfig = SEFConfig::getConfig(); if ($sefConfig->fixIndexPhp) { $this->_fixIndexLinks(); } //$this->_fixSubDomains(); } function _isEnabled() { // Do not run plugin in administration area $mainframe = JFactory::getApplication(); if ($mainframe->isAdmin()) { return false; } // Do not run plugin if SEF is disabled $config = JFactory::getConfig(); if (!$config->get('sef')) { return false; } // Check if JoomSEF is enabled $sefConfig = SEFConfig::getConfig(); if (!$sefConfig->enabled) { return false; } // Check if JoomSEF plugin is enabled if (!JPluginHelper::isEnabled('system', 'joomsef')) { return false; } // Check format // // 22.3.2012, dajo: // Removed, JoomSEF should be run, but such URLs shouldn't be // SEFed in the JoomSEF::build() function /* $format = JRequest::getVar('format'); $tmpl = JRequest::getVar('tmpl'); if ($format == 'raw' || $format == 'json' || $format == 'xml' || $tmpl == 'raw') { return false; } */ return true; } /** * Generate metadata */ function _generateMeta() { $mainframe = JFactory::getApplication(); $document = JFactory::getDocument(); $sefConfig = SEFConfig::getConfig(); $rewriteKey = $sefConfig->rewrite_keywords; $rewriteDesc = $sefConfig->rewrite_description; $metadesc = str_replace('"', '"', JoomSEF::get('sef.meta.desc')); $metakey = str_replace('"', '"', JoomSEF::get('sef.meta.key')); $metalang = str_replace('"', '"', JoomSEF::get('sef.meta.lang')); $metarobots = str_replace('"', '"', JoomSEF::get('sef.meta.robots')); $metagoogle = str_replace('"', '"', JoomSEF::get('sef.meta.google')); $canonicallink = str_replace('"', '"', JoomSEF::get('sef.link.canonical')); $metacustom = JoomSEF::get('sef.meta.custom'); $generator = str_replace('"', '"', $sefConfig->tag_generator); $googlekey = str_replace('"', '"', $sefConfig->tag_googlekey); $livekey = str_replace('"', '"', $sefConfig->tag_livekey); $yahookey = str_replace('"', '"', $sefConfig->tag_yahookey); // Global custom meta tags if (is_array($sefConfig->customMetaTags)) { foreach($sefConfig->customMetaTags as $name => $content) { $content = str_replace('"', '"', $content); $document->setMetaData($name, $content); } } // description metatag if (!empty($metadesc)) { // get original description $oldDesc = $document->getDescription(); // override by JoomSEF desc if ($rewriteDesc == _COM_SEF_META_PR_JOOMSEF || $oldDesc == '') { $document->setDescription($metadesc); // or join both } elseif ($rewriteDesc == _COM_SEF_META_PR_JOIN && $oldDesc != '') { $document->setDescription($metadesc . ', ' . $oldDesc); } // otherwise leave intact } // keywords metatag if (!empty($metakey)) { // get original keywords $oldKey = $document->getMetaData('keywords'); // override by JoomSEF keys if ($rewriteKey == _COM_SEF_META_PR_JOOMSEF || $oldKey == '') { $document->setMetaData('keywords', $metakey); // or join both } elseif ($rewriteKey == _COM_SEF_META_PR_JOIN && $oldKey != '') { $document->setMetaData('keywords', $metakey . ', ' . $oldKey); } // otherwise leave intact } if (!empty($metalang)) $document->setMetaData('lang', $metalang); if (!empty($metarobots)) $document->setMetaData('robots', $metarobots); if (!empty($metagoogle)) $document->setMetaData('google', $metagoogle); if (!empty($generator)) $document->setGenerator($generator); if (!empty($googlekey)) $document->setMetaData('google-site-verification', $googlekey); if (!empty($livekey)) $document->setMetaData('msvalidate.01', $livekey); if (!empty($yahookey)) $document->setMetaData('y_key', $yahookey); // URL custom meta tags if (is_array($metacustom)) { foreach ($metacustom as $name => $content) { $content = str_replace('"', '"', $content); $document->setMetaData($name, $content); } } if (method_exists($document, 'addHeadLink')) { if (!empty($canonicallink)) { // Always remove previous canonical links if adding our own $this->_removeCanonicals(); // Add our own canonical link $document->addHeadLink($canonicallink, 'canonical'); } } } /** * Removes all the canonical links currently set */ function _removeCanonicals() { // Handle canonicals only in HTML document $doc = JFactory::getDocument(); if ($doc->getType() != 'html') { return; } // Check if there are any links if (!isset($doc->_links) || !is_array($doc->_links)) { return; } // Remove canonical links foreach ($doc->_links as $url => $link) { if ($link['relation'] == 'canonical') { unset($doc->_links[$url]); } } } /** * Fixes duplicate domain in canonical links */ function _fixCanonicals() { // Handle canonicals only in HTML document $doc = JFactory::getDocument(); if ($doc->getType() != 'html') { return; } // Check if there are any links if (!isset($doc->_links) || !is_array($doc->_links)) { return; } // Fix canonical links foreach ($doc->_links as $url => $link) { if ($link['relation'] != 'canonical') continue; // Fix canonical link $fixed = preg_replace('|^https?://.*(https?://)|i', '$1', $url); // Always unset and set the link again, otherwise we'd change the ordering unset($doc->_links[$url]); $doc->_links[$fixed] = $link; } } /** * Check page title. */ function _checkSEFTitle() { $mainframe = JFactory::getApplication(); $document = JFactory::getDocument(); $config = JFactory::getConfig(); $sefConfig = SEFConfig::getConfig(); $sitename = $config->get('sitename'); $preferTitle = $sefConfig->prefer_joomsef_title; $sitenameSep = ' '.trim($sefConfig->sitename_sep).' '; $preventDupl = $sefConfig->prevent_dupl; $useSitename = JoomSEF::get('sef.meta.showsitename', _COM_SEF_SITENAME_GLOBAL); if ($useSitename == _COM_SEF_SITENAME_GLOBAL) { $useSitename = $sefConfig->use_sitename; } if ($sitenameSep == ' ') $sitenameSep = ' '; // Page title $pageTitle = JoomSEF::get('sef.meta.title'); if (empty($pageTitle)) { $pageTitle = $document->getTitle(); // Dave: replaced regular expression as it was causing problems // with site names like [ index-i.cz ] with str_replace // Dave: 3.2.9 fix - added check for !empty($sitename) - was causing // problems with empty site names /*$pageSep = '( - |'.$sitenameSep.')'; if (preg_match('/('.$GLOBALS['mosConfig_sitename'].$pageSep.')?(.*)?/', $pageTitle, $matches) > 0) { $pageTitle = strtr($pageTitle, array($matches[1] => '')); }*/ if (!empty($sitename)) { $pageTitle = str_replace(array($sitename.' - ', ' - '.$sitename, $sitename.$sitenameSep, $sitenameSep.$sitename), '', $pageTitle); } } if ($preferTitle) { $pageTitle = trim($pageTitle); // Prevent name duplicity if set to if ($preventDupl && strcmp($pageTitle, trim($sitename)) == 0) { $pageTitle = ''; } if (empty($pageTitle)) $sitenameSep = ''; if ($useSitename == _COM_SEF_SITENAME_BEFORE && $sitename) { $pageTitle = $sitename . $sitenameSep . $pageTitle; } elseif ($useSitename == _COM_SEF_SITENAME_AFTER && $sitename) { $pageTitle .= $sitenameSep . $sitename; } // set page title and (optionally) meta title tag if ($pageTitle) { // Joomla escapes the title automatically $document->setTitle($pageTitle); } } } function _checkBaseHref() { $sefConfig = SEFConfig::getConfig(); $checkBaseHref = $sefConfig->check_base_href; // now we can set base href $document = JFactory::getDocument(); if ($checkBaseHref == _COM_SEF_BASE_HOMEPAGE) { $uri = JURI::getInstance(); $curUri = clone($uri); $domain = JoomSEF::get('real_domain'); if ($domain) { $curUri->setHost($domain); } // dajo 10.9.2012: Make sure base ends with a slash $base = $curUri->toString(array('scheme', 'host', 'port')).JURI::base(true); $base = rtrim($base, '/').'/'; $document->setBase($base); } elseif ($checkBaseHref == _COM_SEF_BASE_CURRENT) { $uri = JURI::getInstance(); $curUri = clone($uri); $domain = JoomSEF::get('real_domain'); if ($domain) { $curUri->setHost($domain); } $document->setBase(htmlspecialchars($curUri->toString(array('scheme', 'host', 'port', 'path')))); } elseif ($checkBaseHref == _COM_SEF_BASE_NONE) { $document->setBase(''); } else return; } function _fixIndexLinks() { // Check the document type $document = JFactory::getDocument(); if ($document->getType() != 'html') { return; } // Get the response body $body = JResponse::getBody(); // Get the root URL $url = JURI::root(); if (substr($url, -1) != '/') { $url .= '/'; } // Replace the index.php links in "<a href" and "<form action" $body = preg_replace('|<a(\\s[^>]*)href="/?index\\.php"|', '<a$1href="'.$url.'"', $body); $body = preg_replace('|<a(\\s[^>]*)href="'.$url.'index\\.php"|', '<a$1href="'.$url.'"', $body); $body = preg_replace('|<form(\\s[^>]*)action="/?index\\.php"|', '<form$1action="'.$url.'"', $body); $body = preg_replace('|<form(\\s[^>]*)action="'.$url.'index\\.php"|', '<form$1action="'.$url.'"', $body); // Set new response body JResponse::setBody($body); } private function _fixSubDomains() { $document = JFactory::getDocument(); if ($document->getType() != 'html') { return; } // Get the response body $body = JResponse::getBody(); $url = JURI::root(); if (substr($url, -1) != '/') { $url .= '/'; } //echo JFactory::getUri()->getHost(); $body = preg_replace_callback('|<(a)(\\s*[^>]*)href="([/\-\.a-z0-9]*)"(\\s*[^>]*)>|', array($this,"_replaceLink"), $body); $body = preg_replace_callback('|<(form)(\\s*[^>]*)action="([/\-\.a-z0-9]*)"(\\s*[^>]*)>|', array($this,"_replaceLink"), $body); JResponse::setBody($body); } private function _replaceLink($matches) { $host=JFactory::getUri()->getHost(); $db=JFactory::getDBO(); $query=$db->getQuery(true); $query->select('Itemid')->from('#__sefurls')->where('sefurl='.$db->quote(ltrim(str_replace(JFactory::getUri()->base(true),"",$matches[3]),"/"))); $db->setQuery($query); $Itemid=$db->loadResult(); //echo $matches[3]."\t".$Itemid."<br>"; if(strlen($Itemid)) { $query=$db->getQuery(true); $query->select('subdomain')->from('#__sef_subdomains')->where('Itemid='.$Itemid); $db->setQuery($query); $subdomain=$db->loadResult(); if(strlen($subdomain)) { $host=$subdomain.".".$host; } } switch($matches[1]) { case 'a': return '<a'.$matches[2].'href="http://'.$host.$matches[3].'"'.$matches[4].'>'; break; case 'form': return '<form'.$matches[2].'action="http://'.$host.$matches[3].'"'.$matches[4].'>'; break; } } }
/var/www/iplanru/data/www/i-plan.ru/plugins/system/joomsef/joomsef.php