function shAddPaginationInfo($limit, $limitstart, $showall, $iteration, $url, $location, $shSeparator = null) { global $mainframe; $sefConfig =& shRouter::shGetConfig(); $database =& JFactory::getDBO(); // get a default limit value, for urls where it's missing $listLimit = shGetDefaultDisplayNumFromURL($url, $includeBlogLinks = true); $defaultListLimit = shGetDefaultDisplayNumFromConfig($url, $includeBlogLinks = false); //echo 'Incoming pagination : $listLimit : ' . $listLimit . ' | $defaultListLimit : ' . $defaultListLimit . "\n"; // clean suffix and index file before starting to add things to the url // clean suffix if (strpos($url, 'option=com_content') !== false && strpos($url, 'format=pdf') !== false) { $shSuffix = '.pdf'; } else { $shSuffix = $sefConfig->suffix; } $suffixLength = JString::strLen($shSuffix); if (!empty($shSuffix) && $shSuffix != '/' && JString::substr($location, -$suffixLength) == $shSuffix) { $location = JString::substr($location, 0, JString::strlen($location) - $suffixLength); } // clean index file if ($sefConfig->addFile && (empty($shSuffix) || JString::subStr($location, -$suffixLength) != $shSuffix)) { $indexFileLength = JString::strlen($sefConfig->addFile); if ($sefConfig->addFile != '/' && JString::substr($location, -$indexFileLength) == $sefConfig->addFile) { $location = JString::substr($location, 0, JString::strlen($location) - $indexFileLength); } } // do we have a trailing slash ? if (empty($shSeparator)) { $shSeparator = JString::substr($location, -1) == '/' ? '' : '/'; } if (!empty($limit) && is_numeric($limit)) { $pagenum = intval($limitstart / $limit); $pagenum++; } else { if (!isset($limit) && !empty($limitstart)) { // only limitstart if (strpos($url, 'option=com_content') !== false && strpos($url, 'view=article') !== false) { $pagenum = intval($limitstart + 1); // multipage article } else { $pagenum = intval($limitstart / $listLimit) + 1; // blogs, tables, ... } } else { $pagenum = $iteration; } } // Make sure we do not end in infite loop here. if ($pagenum < $iteration) { $pagenum = $iteration; } // shumisha added to handle table-category and table-section which may have variable number of items per page // There still will be a problem with filter, which may reduce the total number of items. Thus the item we are looking for if ($sefConfig->alwaysAppendItemsPerPage || strpos($url, 'option=com_virtuemart') && $sefConfig->shVmUsingItemsPerPage) { $shMultPageLength = $sefConfig->pagerep . (empty($limit) ? $listLimit : $limit); } else { $shMultPageLength = ''; } // shumisha : modified to add # of items per page to URL, for table-category or section-category if (!empty($sefConfig->pageTexts[$GLOBALS['shMosConfig_locale']]) && false !== strpos($sefConfig->pageTexts[$GLOBALS['shMosConfig_locale']], '%s')) { $page = str_replace('%s', $pagenum, $sefConfig->pageTexts[$GLOBALS['shMosConfig_locale']]) . $shMultPageLength; } else { $page = $sefConfig->pagerep . $pagenum . $shMultPageLength; } // V 1.2.4.t special processing to replace page number by headings $shPageNumberWasReplaced = false; if (strpos($url, 'option=com_content') !== false && strpos($url, 'view=article') !== false && !empty($limitstart)) { // this is multipage article - limitstart instead of limit in J1.5 if ($sefConfig->shMultipagesTitle) { parse_str($url, $shParams); if (!empty($shParams['id'])) { $shPageTitle = ''; $sql = 'SELECT c.id, c.fulltext, c.introtext FROM #__content AS c WHERE id=\'' . $shParams['id'] . '\''; $database->setQuery($sql); $contentElement = $database->loadObject(); if ($database->getErrorNum()) { JError::RaiseError(500, $database->stderr()); } $contentText = $contentElement->introtext . $contentElement->fulltext; if (!empty($contentElement) && strpos($contentText, 'class="system-pagebreak') !== false) { // search for mospagebreak tags // copied over from pagebreak plugin // expression to search for $regex = '#<hr([^>]*)class=(\\"|\')system-pagebreak(\\"|\')([^>]*)\\/>#iU'; // find all instances of mambot and put in $matches $shMatches = array(); preg_match_all($regex, $contentText, $shMatches, PREG_SET_ORDER); // adds heading or title to <site> Title if (empty($limitstart)) { // if first page use heading of first mospagebreak /* if ( $shMatches[0][2] ) { parse_str( html_entity_decode( $shMatches[0][2] ), $args ); if ( @$args['heading'] ) { $shPageTitle = stripslashes( $args['heading'] ); } }*/ } else { // for other pages use title of mospagebreak if ($limitstart > 0 && $shMatches[$limitstart - 1][1]) { $args = JUtility::parseAttributes($shMatches[$limitstart - 1][0]); if (@$args['title']) { $shPageTitle = $args['title']; } else { if (@$args['alt']) { $shPageTitle = $args['alt']; } else { // there is a page break, but no title. Use a page number $shPageTitle = str_replace('%s', $limitstart + 1, $sefConfig->pageTexts[$GLOBALS['shMosConfig_locale']]); } } } } } if (!empty($shPageTitle)) { // found a heading, we should use that as a Title $location .= $shSeparator . titleToLocation($shPageTitle); } $shPageNumberWasReplaced = true; // always set the flag, otherwise we'll a Page-1 added } } else { // mutiple pages article, but we don't want to use smart title. // directly use limitstart $page = str_replace('%s', $limitstart + 1, $sefConfig->pageTexts[$GLOBALS['shMosConfig_locale']]); } } // maybe this is a multipage with "showall=1" if (strpos($url, 'option=com_content') !== false && strpos($url, 'view=article') !== false && strpos($url, 'showall=1') !== false) { // this is multipage article with showall $tempTitle = JText::_('All Pages'); $location .= $shSeparator . titleToLocation($tempTitle); $shPageNumberWasReplaced = true; // always set the flag, otherwise we'll a Page-1 added } // make sure we remove bad characters $takethese = str_replace('|', '', $sefConfig->friendlytrim); $location = JString::trim($location, $takethese); // add page number if (!$shPageNumberWasReplaced && (!isset($limitstart) && (isset($limit) && $limit != $listLimit && $limit != $defaultListLimit) || isset($limitstart) && ($limitstart != 0 || $limitstart == 0 && (strpos($url, 'option=com_virtuemart') && $sefConfig->shVmUsingItemsPerPage && (isset($limit) && $limit != $listLimit))))) { $location .= $shSeparator . $page; } // add suffix if (!empty($shSuffix) && $location != '/' && JString::substr($location, -1) != '/') { $location = $shSuffix == '/' ? $location . $shSuffix : str_replace($shSuffix, '', $location) . $shSuffix; } // add default index file if ($sefConfig->addFile) { // V 1.2.4.t if (empty($shSuffix) || !empty($shSuffix) && JString::subStr($location, -$suffixLength) != $shSuffix) { $location .= (JString::substr($location, -1) == '/' ? '' : '/') . $sefConfig->addFile; } } return JString::ltrim($location, '/'); }
die('Direct Access to this location is not allowed.'); } // Ensure that user has access to this function. $user =& JFactory::getUser(); if (!($user->usertype == 'Super Administrator' || $user->usertype == 'Administrator')) { $mainframe->redirect('index.php', JText::_('ALERTNOTAUTH')); } // Setup paths. $sef_config_class = JPATH_ADMINISTRATOR . '/components/com_sh404sef/sh404sef.class.php'; $sef_config_file = JPATH_ADMINISTRATOR . '/components/com_sh404sef/config/config.sef.php'; // Make sure class was loaded. if (!class_exists('shSEFConfig')) { if (is_readable($sef_config_class)) { require_once $sef_config_class; } else { JError::RaiseError(500, COM_SH404SEF_NOREAD . "( {$sef_config_class} )<br />" . COM_SH404SEF_CHK_PERMS); } } // testing JLanguage16 jimport('joomla.language.language'); $j16Language =& shjlang16Helper::getLanguage(); $loaded = $j16Language->load('com_sh404sef', JPATH_BASE); // include sh404sef default language file shIncludeLanguageFile(); // find about specific controller requested $cName = JRequest::getCmd('c'); // get controller from factory $controller = Sh404sefFactory::getController($cName); // read and execute task $controller->execute(JRequest::getCmd('task')); $controller->redirect();
// sometimes users disable our plugin if (!defined('SH404SEF_AUTOLOADER_LOADED')) { echo 'sh404SEF system plugin has been disabled or has failed initializing. Please enable it again to use sh404SEF, with Joomla! <a href="index.php?option=com_plugins">plugin manager</a>'; return; } // Access check. if (!JFactory::getUser()->authorise('core.manage', 'com_sh404sef')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } // load base class file (functions, not autolaoded if (!defined('SH404SEF_BASE_CLASS_LOADED')) { $baseClassFile = JPATH_ADMINISTRATOR . '/components/com_sh404sef/sh404sef.class.php'; if (is_readable($baseClassFile)) { require_once $baseClassFile; } else { JError::RaiseError(500, JText::_('COM_SH404SEF_NOREAD') . "( {$baseClassFile} )<br />" . JText::_('COM_SH404SEF_CHK_PERMS')); } } // Ensure the behavior is loaded JHtml::_('behavior.framework'); if (version_compare(JVERSION, '3.0', 'ge')) { JHtml::_('bootstrap.framework'); } // find about specific controller requested $cName = JFactory::getApplication()->input->getCmd('c'); // get controller from factory $controller = Sh404sefFactory::getController($cName); Sh404sefHelperHtml::addSubmenu(JFactory::getApplication()->input); // read and execute task $controller->execute(JFactory::getApplication()->input->getCmd('task')); $controller->redirect();
protected function _do404(&$uri) { if (self::$requestParsed) { return array(); } // get config objects $pageInfo =& Sh404sefFactory::getPageInfo(); $sefConfig = Sh404sefFactory::getConfig(); // store the status $pageInfo->httpStatus = 404; // request path $reqPath = $uri->getPath(); // optionnally log the 404 details if ($sefConfig->shLog404Errors && !empty($reqPath)) { try { $record = Sh404sefHelperDb::selectObject('#__sh404sef_urls', '*', array('oldurl' => $reqPath)); if (!empty($record)) { // we have, so update counter Sh404sefHelperDb::queryQuote('update ?? set cpt=(cpt+1) where ?? = ?', array('#__sh404sef_urls', 'oldurl'), array($reqPath)); } else { // record the 404 Sh404sefHelperDb::insert('#__sh404sef_urls', array('cpt' => 1, 'rank' => 0, 'oldurl' => $reqPath, 'newurl' => '', 'dateadd' => Sh404sefHelperDate::getUTCNow('Y-m-d'))); } // add more details about 404 into security log file if ($sefConfig->shSecEnableSecurity && $sefConfig->shSecLogAttacks) { $sep = "\t"; $logData = date('Y-m-d') . $sep . date('H:i:s') . $sep . 'Page not found (404)' . $sep . $_SERVER['REMOTE_ADDR'] . $sep; $logData .= getHostByAddr($_SERVER['REMOTE_ADDR']) . $sep; $userAgent = empty($_SERVER['HTTP_USER_AGENT']) ? 'No user agent' : $_SERVER['HTTP_USER_AGENT']; $logData .= $userAgent . $sep . $_SERVER['REQUEST_METHOD'] . $sep . $_SERVER['REQUEST_URI']; $logData .= empty($_SERVER['HTTP_REFERER']) ? "\n" : $sep . $_SERVER['HTTP_REFERER'] . "\n"; shLogToSecFile($logData); } } catch (Sh404sefExceptionDefault $e) { _log(__METHOD__ . '/' . __LINE__ . '/' . __CLASS__ . ': Database error: ' . $e->getMessage()); } } // display the error page $vars['option'] = 'com_content'; $vars['view'] = 'article'; // use provided Itemid if (empty($sefConfig->shPageNotFoundItemid)) { $shHomePage = JFactory::getApplication()->getMenu()->getDefault(); $vars['Itemid'] = empty($shHomePage) ? null : $shHomePage->id; } else { $vars['Itemid'] = $sefConfig->shPageNotFoundItemid; } // user picked our default 404 error page, read its id from DB if ($sefConfig->page404 == '0') { try { $requestedlanguageTag = JFactory::getLanguage()->getTag(); $languageTag = JRequest::getString(JUtility::getHash('language'), null, 'cookie'); if (!empty($languageTag)) { $vars['lang'] = $languageTag; } $ids = Sh404sefHelperDb::queryQuoteOnly('select ?? from ?? where ?? = ? and ?? in ( ?, ?) order by ?? desc', array('id', '#__content', 'title', 'language', 'language'), array('__404__', $languageTag, '*'))->eLoadResultArray(); $id = empty($ids[0]) ? null : $ids[0]; } catch (Sh404sefExceptionDefault $e) { _log(__METHOD__ . '/' . __LINE__ . '/' . __CLASS__ . ': Database error: ' . $e->getMessage()); } if (empty($id)) { JError::raiseError(404, JText::_('Component Not Found') . ' (' . $pageInfo->getDefaultLiveSite() . '/' . $uri->getPath() . ')'); } } else { $id = $sefConfig->page404; } $vars['id'] = $id; $uri = new JURI($pageInfo->getDefaultLiveSite() . '/index.php?' . 'option=com_content&view=article&id=' . $id . (empty($vars['Itemid']) ? '' : '&Itemid=' . $vars['Itemid']) . (empty($vars['lang']) ? '' : '&lang=' . shGetIsoCodeFromName($vars['lang']))); $tmpl = str_replace('.php', '', $sefConfig->error404SubTemplate); if (!empty($tmpl)) { $vars['tmpl'] = $tmpl; } // and prepare the item for display $menus =& JFactory::getApplication()->getMenu(); $menuItem = $menus->getItem($vars['Itemid']); if (!empty($menuItem)) { $menus->setActive($vars['Itemid']); } else { $menuItem = $menus->getDefault(); } if (!empty($menuItem->params)) { $disableParams = array('show_title', 'show_category', 'show_author', 'show_create_date', 'show_modify_date', 'show_publish_date', 'show_vote', 'show_readmore', 'show_icons', 'show_hits', 'show_feed_link', 'show_page_heading'); foreach ($disableParams as $p) { $menuItem->params->set($p, 0); } //set a custom page title $menuItem->params->set('page_title', htmlspecialchars($uri->get('_uri'))); } // set the menu query array, J! will use that for breadcrumb $menuItem->query = $vars; // throw 404 http return code, and prepare for page display if (!headers_sent()) { JResponse::setHeader('status', '404 NOT FOUND'); // custom error page, faster than loading Joomla 404 page. Not recommended though, why not show // your site ? if (is_readable(sh404SEF_FRONT_ABS_PATH . '404-Not-Found.tpl.html')) { $errorPage = file_get_contents(sh404SEF_FRONT_ABS_PATH . '404-Not-Found.tpl.html'); if ($errorPage !== false) { $errorPage = str_replace('%sh404SEF_404_URL%', ' (' . $pageInfo->getDefaultLiveSite() . '/' . $uri->getPath() . ')', $errorPage); $errorPage = str_replace('%sh404SEF_404_SITE_URL%', $pageInfo->getDefaultLiveSite(), $errorPage); $errorPage = str_replace('%sh404SEF_404_SITE_NAME%', JFactory::getApplication()->getCfg('sitename'), $errorPage); echo $errorPage; die; } } } else { _log('Headers already sent before getting control on 404 page - message displayed'); $shUri = new JUri(); $shOriginalUri = new JURI(); $url = shSefRelToAbs($pageInfo->getDefaultLiveSite() . "/index.php?" . $_SERVER['QUERY_STRING'], '', $shUri, $shOriginalUri); JError::RaiseError(500, "<br />SH404SEF : headers were already sent when I got control!<br />This is not necessarily a sh404sef error. It may have been caused by any of your extensions or even Joomla itself. If there is no error message above this one, providing more details, then you may look inside the error log file of your web server for an indication of what may be breaking things up.<br />URL=" . $url . '<br />'); } return $vars; }
} // sometimes users disable our plugin if (!defined('sh404SEF_AUTOLOADER_LOADED')) { echo 'sh404SEF system plugin has been disabled. Please enable it again to use sh404SEF, with Joomla! <a href="index.php?option=com_plugins">plugin manager</a>'; return; } // Access check. if (!JFactory::getUser()->authorise('core.manage', 'com_sh404sef')) { return JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR')); } // Setup paths. $sef_config_class = JPATH_ADMINISTRATOR . '/components/com_sh404sef/sh404sef.class.php'; // Make sure class was loaded. if (!class_exists('shSEFConfig')) { if (is_readable($sef_config_class)) { require_once $sef_config_class; } else { JError::RaiseError(500, JText::_('COM_SH404SEF_NOREAD') . "( {$sef_config_class} )<br />" . JText::_('COM_SH404SEF_CHK_PERMS')); } } JHtml::_('behavior.framework'); // include sh404sef default language file shIncludeLanguageFile(); // find about specific controller requested $cName = JRequest::getCmd('c'); // get controller from factory $controller = Sh404sefFactory::getController($cName); Sh404sefHelperHtml::addSubmenu(JRequest::get()); // read and execute task $controller->execute(JRequest::getCmd('task')); $controller->redirect();
if (!empty($shPageInfo->URI->host) && strpos($GLOBALS['shConfigLiveSite'], $shPageInfo->URI->host) === false && strpos($sefConfig->shConfig_live_secure_site, $shPageInfo->URI->host) === false) { _log('Redirecting to home : host don\'t match our config : ' . $GLOBALS['shConfigLiveSite'] . ' | ' . $shPageInfo->URI->host . ' | ' . $sefConfig->shConfig_live_secure_site); shRedirect($GLOBALS['shConfigLiveSite']); } else { $shPageInfo->shCurrentPagePath = $shPageInfo->URI->protocol . '://' . $shPageInfo->URI->host . (!sh404SEF_USE_NON_STANDARD_PORT || empty($shPageInfo->URI->port) ? '' : ':' . $shPageInfo->URI->port) . $shPageInfo->URI->path; $shPageInfo->shCurrentPagePath = shUrlDecode($shPageInfo->shCurrentPagePath); $shPageInfo->shCurrentPagePath = str_replace($GLOBALS['shConfigLiveSite'], '', $shPageInfo->shCurrentPagePath); _log('Current page path : ' . $shPageInfo->shCurrentPagePath); $qString = $shPageInfo->URI->getQueryString(); $shPageInfo->shCurrentPageURL = empty($qString) ? $shPageInfo->shCurrentPagePath : $shPageInfo->shCurrentPagePath . '?' . JString::ltrim($qString, '&'); $rewriteBit = empty($sefConfig->shRewriteMode) ? '' : JString::rtrim($sefConfig->shRewriteStrings[$sefConfig->shRewriteMode], '/'); $shPageInfo->baseUrl = $GLOBALS['shConfigLiveSite'] . $rewriteBit . $shPageInfo->shCurrentPagePath; _log('Current base url : ' . $shPageInfo->baseUrl); // V 1.2.4.s PR2 : workaround for Virtuemart cookie check issue // see second part in shSef404.php if (shIsSearchEngine()) { // simulate doing successfull cookie check _log('Setting VMCHECK cookie for search engine'); $_COOKIE['VMCHECK'] = 'OK'; $_REQUEST['vmcchk'] = 1; // from VM 1.1.2 onward, result is stored in session, not cookie $_SESSION['VMCHECK'] = 'OK'; } } } else { JError::RaiseError(COM_SH404SEF_NOREAD . "( {$sef404} )<br />" . COM_SH404SEF_CHK_PERMS); } } // save page info shRouter::shPageInfo($shPageInfo); }
$tmpl = str_replace('.php', '', $sefConfig->error404SubTemplate); if (!empty($tmpl)) { $vars['tmpl'] = $tmpl; } if (!headers_sent()) { header('HTTP/1.0 404 NOT FOUND'); // V x : include error page, faster than loading Joomla 404 page. Not recommended though, why not show // your site ? if (is_readable(sh404SEF_FRONT_ABS_PATH . '404-Not-Found.tpl.html')) { $errorPage = file_get_contents(sh404SEF_FRONT_ABS_PATH . '404-Not-Found.tpl.html'); if ($errorPage !== false) { $errorPage = str_replace('%sh404SEF_404_URL%', $vars['mosmsg'], $errorPage); $errorPage = str_replace('%sh404SEF_404_SITE_URL%', $GLOBALS['shConfigLiveSite'], $errorPage); $errorPage = str_replace('%sh404SEF_404_SITE_NAME%', $mainframe->getCfg('sitename'), $errorPage); echo $errorPage; die; } } } else { _log('Headers already sent before getting control on 404 page - message displayed'); $shUri = null; $shOriginalUri = null; $url = shSefRelToAbs($GLOBALS['shConfigLiveSite'] . "/index.php?" . $_SERVER['QUERY_STRING'], '', $shUri, $shOriginalUri); print_r($path_array); JError::RaiseError(500, "<br />SH404SEF : headers were already sent when I got control!<br />This is not necessarily a sh404sef error. It may have been caused by any of your extensions or even Joomla itself. If there is no error message above this one, providing more details, then you may look inside the error log file of your web server for an indication of what may be breaking things up.<br />URL=" . @$url . '<br />'); } } } //end bad url // }
/** * Performs pre-uninstall backup of configuration * * @param object $parent */ private function _doUninstall($parent) { $this->_definePaths(); $this->_includeLibs(); // V 1.2.4.t before uninstalling modules, save their settings, if told to do so $sef_config_class = JPATH_ADMINISTRATOR . '/components/com_sh404sef/sh404sef.class.php'; // Make sure class was loaded. if (!class_exists('shSEFConfig')) { if (is_readable($sef_config_class)) { require_once $sef_config_class; } else { JError::RaiseError(500, JText::_('COM_SH404SEF_NOREAD') . "( {$sef_config_class} )<br />" . JText::_('COM_SH404SEF_CHK_PERMS')); } } $sefConfig = new shSEFConfig(); if (!$sefConfig->shKeepStandardURLOnUpgrade && !$sefConfig->shKeepCustomURLOnUpgrade) { $this->_shDeleteTable('sh404sef_urls'); $this->_shDeleteTable('sh404sef_aliases'); $this->_shDeleteTable('sh404sef_pageids'); } elseif (!$sefConfig->shKeepStandardURLOnUpgrade) { $this->_shDeleteAllSEFUrl('Standard'); } elseif (!$sefConfig->shKeepCustomURLOnUpgrade) { $this->_shDeleteAllSEFUrl('Custom'); $this->_shDeleteTable('sh404sef_aliases'); $this->_shDeleteTable('sh404sef_pageids'); } if (!$sefConfig->shKeepMetaDataOnUpgrade) { $this->_shDeleteTable('sh404sef_metas'); } // remove admin quick icon module $this->_shSaveDeleteModuleParams('mod_sh404sef_cpicon', $client = 1); // remove language switcher module // custom language switcher module disabled for now, not needed //$this->_shSaveDeleteModuleParams( 'mod_sh_languages', $client = 0); // remove system plugins $this->_shSaveDeletePluginParams('sh404sef', 'system'); $this->_shSaveDeletePluginParams('shmobile', 'system'); // unregister from shLib, then possibly uninstall it if (JFile::exists(JPATH_ROOT . '/plugins/system/shlib/shl_packages/system/resourcemanager.php')) { require_once JPATH_ROOT . '/plugins/system/shlib/shl_packages/system/resourcemanager.php'; ShlSystem_Resourcemanager::unregister('shlib', 'com_sh404sef'); if (ShlSystem_Resourcemanager::canUninstall('shlib')) { $this->_shSaveDeletePluginParams('shlib', 'system'); } } // remove core plugins $this->_shSaveDeletePluginGroup('sh404sefcore'); $this->_shSaveDeletePluginGroup('sh404sefextplugins'); // delete analytics cached data, to force update // in case this part of sh404sef has changed $cache = JFactory::getCache('sh404sef_analytics'); $cache->clean(); // preserve configuration or not ? if (!$sefConfig->shKeepConfigOnUpgrade) { // main config file $fileName = $this->_preserveConfigFolder . 'sh404_upgrade_conf_' . $this->_siteId . '.php'; if (JFile::exists($fileName)) { JFile::delete($fileName); } // user custom config file $fileName = $this->_preserveConfigFolder . 'sh404_upgrade_conf_' . $this->_siteId . '.custom.php'; if (JFile::exists($fileName)) { JFile::delete($fileName); } // related extensions (plugins) config files folder if (JFolder::exists($this->_preserveConfigFolder . 'sh404_upgrade_conf')) { JFolder::delete($this->_preserveConfigFolder . 'sh404_upgrade_conf'); } // log files folder if (JFolder::exists($this->_preserveConfigFolder . 'sh404_upgrade_conf_logs')) { JFolder::delete($this->_preserveConfigFolder . 'sh404_upgrade_conf_logs'); } // security log files folder if (JFolder::exists($this->_preserveConfigFolder . 'sh404_upgrade_conf_security')) { JFolder::delete($this->_preserveConfigFolder . 'sh404_upgrade_conf_security'); } } else { // if we keep config if (JFolder::exists(JPATH_ROOT . '/logs/sh404sef')) { JFolder::copy(JPATH_ROOT . '/logs/sh404sef', $this->_preserveConfigFolder . 'sh404_upgrade_conf_logs', $path = '', $force = true); } if (JFolder::exists(JPATH_ADMINISTRATOR . '/components/com_sh404sef/security')) { JFolder::copy(JPATH_ADMINISTRATOR . '/components/com_sh404sef/security', $this->_preserveConfigFolder . 'sh404_upgrade_conf_security', $path = '', $force = true); } } // delete folder in /media // display results echo '<h3>sh404SEF has been succesfully uninstalled. </h3>'; echo '<br />'; if ($sefConfig->shKeepStandardURLOnUpgrade) { echo '- automatically generated SEF url have not been deleted (table #__sh404sef_urls)<br />'; } else { echo '- automatically generated SEF url have been deleted<br />'; } echo '<br />'; if ($sefConfig->shKeepCustomURLOnUpgrade) { echo '- custom SEF url, aliases and pageIds have not been deleted (tables #__sh404sef_urls, #__sh404sef_aliases and #__sh404sef_pageids)<br />'; } else { echo '- custom SEF url, aliases and pageIds have been deleted<br />'; } echo '<br />'; if ($sefConfig->shKeepMetaDataOnUpgrade) { echo '- Custom Title and META data have not been deleted (table #__sh404sef_metas)<br />'; } else { echo '- Custom Title and META data have been deleted<br />'; } echo '<br />'; }
function sef_ext_exists($this_name) { $sefConfig =& shRouter::shGetConfig(); $database =& JFactory::getDBO(); // check for sef_ext $this_name = str_replace($sefConfig->replacement, " ", $this_name); $this_name = str_replace('\'', '', $this_name); // V 1.2.4.t 21/08/2007 20:45:58 bug #165 $sql = "SELECT `id`,`link` FROM #__menu WHERE ((`name` LIKE '%" . $this_name . "%') AND (`published` > 0))"; $database->setQuery($sql); $rows = @$database->loadObjectList(); if ($database->getErrorNum()) { JError::RaiseError(500, $database->stderr()); } if (@count($rows) > 0) { $option = str_replace("index.php?option=", "", $rows[0]->link); if (shFileExists(sh404SEF_ABS_PATH . "components/{$option}/sef_ext.php")) { return @$rows[0]; } else { unset($rows); } } return null; }