protected function _findMetaPluginPath($nonSefVars = array()) { $this->_metaPluginPath = ''; // look first in component owndir for a meta ext file $path = sh404SEF_ABS_PATH . 'components/' . $this->_option . '/meta_ext/' . $this->_option . '.php'; if (shFileExists($path)) { // use router.php $this->_metaPluginPath = $path; } // then look for our own meta ext file, if any if (empty($this->_metaPluginPath)) { $path = sh404SEF_ABS_PATH . 'components/com_sh404sef/meta_ext/' . $this->_option . '.php'; if (shFileExists($path)) { // use router.php $this->_metaPluginPath = $path; } } }
protected function _findMetaPluginPath($nonSefVars = array()) { $this->_metaPluginPath = ''; // read setting: use extension plugin or our own? // we use same setting as for SEF urls $useExtensionPlugin = in_array($this->_optionNoCom, $this->_config->shDoNotOverrideOwnSef); // look first in component owndir for a meta ext file $path = sh404SEF_ABS_PATH . 'components/' . $this->_option . '/meta_ext/' . $this->_option . '.php'; if (shFileExists($path) && $useExtensionPlugin) { // use router.php $this->_metaPluginPath = $path; } // then look for our own meta ext file, if any if (empty($this->_metaPluginPath)) { $path = sh404SEF_ABS_PATH . 'components/com_sh404sef/meta_ext/' . $this->_option . '.php'; if (shFileExists($path)) { // use router.php $this->_metaPluginPath = $path; } } }
function shSefRelToAbs($string, $shLanguageParam, &$uri, &$originalUri) { global $_SEF_SPACE, $shMosConfig_lang, $shMosConfig_locale, $mainframe, $shGETVars, $shRebuildNonSef, $shHomeLink; _log('Entering shSefRelToAbs with ' . $string . ' | Lang = ' . $shLanguageParam); // if superadmin, display non-sef URL, for testing/setting up purposes if (sh404SEF_NON_SEF_IF_SUPERADMIN) { $user = JFactory::getUser(); if ($user->usertype == 'Super Administrator') { _log('Returning non-sef because superadmin said so.'); return 'index.php'; } } // return unmodified anchors if (JString::substr($string, 0, 1) == '#') { // V 1.2.4.t return $string; } $sefConfig =& shRouter::shGetConfig(); $shPageInfo =& shRouter::shPageInfo(); // Quick fix for shared SSL server : if https, switch to non sef $id = shGetURLVar($string, 'Itemid', JRequest::getInt('Itemid')); $secure = !empty($shPageInfo->shHttpsSave) || 'yes' == shGetMenuItemSsl($id); if ($secure && $sefConfig->shForceNonSefIfHttps) { _log('Returning shSefRelToAbs : Forced non sef if https'); return shFinalizeURL($string); } $database =& JFactory::getDBO(); $shOrigString = $string; $shMosMsg = shGetMosMsg($string); // V x 01/09/2007 22:45:52 $string = shCleanUpMosMsg($string); // V x 01/09/2007 22:45:52 // V x : removed shJoomfish module. Now we set $mosConfi_lang here $shOrigLang = $shMosConfig_locale; // save current language $shLanguage = shGetURLLang($string); // target language in URl is always first choice if (empty($shLanguage)) { $shLanguage = !empty($shLanguageParam) ? $shLanguageParam : $shMosConfig_locale; } // V 1.3.1 protect against those drop down lists if (strpos($string, 'this.options[selectedIndex].value') !== false) { $string .= '&lang=' . shGetIsoCodeFromName($shLanguage); return $string; } $shMosConfig_locale = $shLanguage; _log('Language used : ' . $shLanguage); // V 1.2.4.t workaround for old links like option=compName instead of option=com_compName if (strpos(strtolower($string), 'option=login') === false && strpos(strtolower($string), 'option=logout') === false && strpos(strtolower($string), 'option=&') === false && JString::substr(strtolower($string), -7) != 'option=' && strpos(strtolower($string), 'option=cookiecheck') === false && strpos(strtolower($string), 'option=') !== false && strpos(strtolower($string), 'option=com_') === false) { $string = str_replace('option=', 'option=com_', $string); } // V 1.2.4.k added homepage check : needed in case homepage is not com_frontpage if (empty($shHomeLink)) { // first, find out about homepage link, from DB. homepage is not always /index.php or similar // it can be a link to anything, a page, a component,... $menu =& shRouter::shGetMenu(); $shHomePage =& $menu->getDefault(); if ($shHomePage) { if (JString::substr($shHomePage->link, 0, 9) == 'index.php' && !preg_match('/Itemid=[0-9]*/', $shHomePage->link)) { // and it does not have an Itemid $shHomePage->link .= ($shHomePage->link == 'index.php' ? '?' : '&') . 'Itemid=' . $shHomePage->id; // then add itemid } $shHomeLink = $shHomePage->link; if (!strpos($shHomeLink, 'lang=')) { // V 1.2.4.q protect against not existing $shDefaultIso = shGetIsoCodeFromName(shGetDefaultLang()); $shSepString = JString::substr($shHomeLink, -9) == 'index.php' ? '?' : '&'; $shHomeLink .= $shSepString . 'lang=' . $shDefaultIso; } $shHomeLink = shSortUrl($shHomeLink); // $shHomeLink has lang info, whereas $homepage->link may or may not } _log('HomeLink = ' . $shHomeLink); } // V 1.2.4.j string to be appended to URL, but not saved to DB $shAppendString = ''; $shRebuildNonSef = array(); $shComponentType = ''; // V w initialize var to avoid notices if ($shHomeLink) { // now check URL against our homepage, so as to always return / if homepage $v1 = JString::ltrim(str_replace($GLOBALS['shConfigLiveSite'], '', $string), '/'); // V 1.2.4.m : remove anchor if any $v2 = explode('#', $v1); $v1 = $v2[0]; $shAnchor = isset($v2[1]) ? '#' . $v2[1] : ''; $shSepString = JString::substr($v1, -9) == 'index.php' ? '?' : '&'; $shLangString = $shSepString . 'lang=' . shGetIsoCodeFromName($shLanguage); if (!strpos($v1, 'lang=')) { $v1 .= $shLangString; } $v1 = str_replace('&', '&', shSortURL($v1)); // V 1.2.4.t check also without pagination info if (strpos($v1, 'limitstart=0') !== false) { // the page has limitstart=0 $stringNoPag = shCleanUpPag($v1); // remove paging info to be sure this is not homepage } else { $stringNoPag = null; } if ($v1 == $shHomeLink || $v1 == 'index.php' . $shLangString || $stringNoPag == $shHomeLink) { // V 1.2.4.t 24/08/2007 11:07:49 $shTemp = $v1 == $shHomeLink || shIsDefaultLang($shLanguage) ? '' : shGetIsoCodeFromName($shLanguage) . '/'; //10/08/2007 17:28:14 if (!empty($shMosMsg)) { // V x 01/09/2007 22:48:01 $shTemp .= '?' . $shMosMsg; } if (!empty($sefConfig->shForcedHomePage)) { // V 1.2.4.t $shTmp = $shTemp . $shAnchor; $ret = shFinalizeURL($sefConfig->shForcedHomePage . (empty($shTmp) ? '' : '/' . $shTmp)); if (empty($uri)) { // if no URI, append remaining vars directly to the string $ret .= $shAppendString; } else { shRebuildVars($shAppendString, $uri); } $shMosConfig_locale = $shOrigLang; _log('Returning shSefRelToAbs 1 with ' . $ret); return $ret; } else { $shRewriteBit = shIsDefaultLang($shLanguage) ? '/' : $sefConfig->shRewriteStrings[$sefConfig->shRewriteMode]; $ret = shFinalizeURL($GLOBALS['shConfigLiveSite'] . $shRewriteBit . $shTemp . $shAnchor); if (empty($uri)) { // if no URI, append remaining vars directly to the string $ret .= $shAppendString; } else { shRebuildVars($shAppendString, $uri); } $shMosConfig_locale = $shOrigLang; _log('Returning shSefRelToAbs 2 with ' . $ret); return $ret; } } } $newstring = str_replace($GLOBALS['shConfigLiveSite'] . '/', '', $string); // check for url to same site, but with SSL : Joomla 1.5 does not allow it yet //$liveSiteSsl = str_replace('http://', 'https://', $GLOBALS['shConfigLiveSite']); //$newStringSsl = str_replace($liveSiteSsl.'/', '', $string); $letsGo = JString::substr($newstring, 0, 9) == 'index.php' && strpos($newstring, 'this.options[selectedIndex\\].value') === false; $letsGoSsl = false; if ($letsGo || $letsGoSsl) { // Replace & character variations. $string = str_replace(array('&', '&'), array('&', '&'), $letsGo ? $newstring : $newStringSsl); $newstring = $string; // V 1.2.4.q $shSaveString = $string; // warning : must add &lang=xx (only if it does not exists already), so as to be able to recognize the SefURL in the db if it's there if (!strpos($string, 'lang=')) { $shSepString = JString::substr($string, -9) == 'index.php' ? '?' : '&'; $anchorTable = explode('#', $string); // V 1.2.4.m remove anchor before adding language $string = $anchorTable[0]; $string .= $shSepString . 'lang=' . shGetIsoCodeFromName($shLanguage) . (!empty($anchorTable[1]) ? '#' . $anchorTable[1] : ''); // V 1.2.4.m then stitch back anchor } $URI = new sh_Net_URL($string); // V 1.2.4.l need to save unsorted URL if (count($URI->querystring) > 0) { // Import new vars here. $option = null; $task = null; //$sid = null; V 1.2.4.s // sort GET parameters to avoid some issues when same URL is produced with options not // in the same order, ie index.php?option=com_virtuemart&category_id=3&Itemid=2&lang=fr // Vs index.php?category_id=3&option=com_virtuemart&Itemid=2&lang=fr ksort($URI->querystring); // sort URL array $string = shSortUrl($string); // now we are ready to extract vars $shGETVars = $URI->querystring; extract($URI->querystring, EXTR_REFS); } if (empty($option)) { // V 1.2.4.r protect against empty $option : we won't know what to do $shMosConfig_locale = $shOrigLang; _log('Returning shSefRelToAbs 3 with ' . $shOrigString); return $shOrigString; } // get plugin associated with the extension $extPlugin =& Sh404sefFactory::getExtensionPlugin($option); // get component type $shComponentType = $extPlugin->getComponentType(); $shOption = str_replace('com_', '', $option); //list of extension we always skip $alwaysSkip = array('jce', 'akeeba'); if (in_array($shOption, $alwaysSkip)) { $shComponentType = Sh404sefClassBaseextplugin::TYPE_SKIP; } // V 1.2.4.s : fallback to to JoomlaSEF if no extension available // V 1.2.4.t : this is too early ; it prevents manual custom redirect to be checked agains the requested non-sef URL _log('Component type = ' . $shComponentType); // is there a named anchor attached to $string? If so, strip it off, we'll put it back later. if ($URI->anchor) { $string = str_replace('#' . $URI->anchor, '', $string); } // V 1.2.4.m // shumisha special homepage processing (in other than default language) if (shIsHomePage($string) || $string == 'index.php') { $sefstring = ''; $urlType = shGetSefURLFromCacheOrDB($string, $sefstring); // still use it so we need it both ways if (($urlType == sh404SEF_URLTYPE_NONE || $urlType == sh404SEF_URLTYPE_404) && empty($showall) && (!empty($limit) || !isset($limit) && !empty($limitstart))) { $urlType = shGetSefURLFromCacheOrDB(shCleanUpPag($string), $sefstring); // V 1.2.4.t check also without page info //to be able to add pagination on custom //redirection or multi-page homepage if ($urlType != sh404SEF_URLTYPE_NONE && $urlType != sh404SEF_URLTYPE_404) { $sefstring = shAddPaginationInfo(@$limit, @$limitstart, @showall, 1, $string, $sefstring, null); // a special case : com_content does not calculate pagination right // for frontpage and blog, they include links shown at the bottom in the calculation of number of items // For instance, with joomla sample data, the frontpage has only 5 articles // but the view sets $limit to 9 !!! if ($option == 'com_content' && isset($layout) && $layout == 'blog' || $option == 'com_content' && isset($view) && $view == 'frontpage') { $listLimit = shGetDefaultDisplayNumFromURL($string, $includeBlogLinks = true); $string = shSetURLVar($string, 'limit', $listLimit); $string = shSortUrl($string); } // that's a new URL, so let's add it to DB and cache shAddSefUrlToDBAndCache($string, $sefstring, 0, $urlType); // created url must be of same type as original } if ($urlType == sh404SEF_URLTYPE_NONE || $urlType == sh404SEF_URLTYPE_404) { require_once sh404SEF_FRONT_ABS_PATH . 'sef_ext.php'; $sef_ext = new sef_404(); // Rewrite the URL now. // a special case : com_content does not calculate pagination right // for frontpage and blog, they include links shown at the bottom in the calculation of number of items // For instance, with joomla sample data, the frontpage has only 5 articles // but the view sets $limit to 9 !!! if ($option == 'com_content' && isset($layout) && $layout == 'blog' || $option == 'com_content' && isset($view) && $view == 'frontpage') { $listLimit = shGetDefaultDisplayNumFromURL($string, $includeBlogLinks = true); $string = shSetURLVar($string, 'limit', $listLimit); $string = shSortUrl($string); //$URI->addQueryString( 'limit', $listLimit); } $urlVars = is_array($URI->querystring) ? array_map('urldecode', $URI->querystring) : $URI->querystring; $sefstring = $sef_ext->create($string, $urlVars, $shAppendString, $shLanguage, $shOrigString, $originalUri); // V 1.2.4.s added original string } } else { if ($urlType == sh404SEF_URLTYPE_NONE || $urlType == sh404SEF_URLTYPE_404) { // not found but no $limit or $limitstart $sefstring = shGetIsoCodeFromName($shLanguage) . '/'; shAddSefUrlToDBAndCache($string, $sefstring, 0, sh404SEF_URLTYPE_AUTO); // create it } } // V 1.2.4.j : added $shAppendString to pass non sef parameters. For use with parameters that won't be stored in DB $ret = $GLOBALS['shConfigLiveSite'] . (empty($sefstring) ? '' : $sefConfig->shRewriteStrings[$sefConfig->shRewriteMode] . $sefstring); // not valid with 1.5 anymore ; //if (!empty($shMosMsg)) // V x 01/09/2007 22:48:01 // $ret .= (empty($shAppendString) || $sefConfig->shRewriteStrings[$sefConfig->shRewriteMode] == '/index.php?/' ? '?':'&').$shMosMsg; $ret = shFinalizeURL($ret); if (empty($uri)) { // if no URI, append remaining vars directly to the string $ret .= $shAppendString; } else { shRebuildVars($shAppendString, $uri); } $shMosConfig_locale = $shOrigLang; _log('Returning shSefRelToAbs 4 with ' . $ret); return $ret; } if (isset($option) && !($option == 'com_content' && @$task == 'edit') && strtolower($option) != 'com_sh404sef') { // V x 29/08/2007 23:19:48 // check also that option = com_content, otherwise, breaks some comp switch ($shComponentType) { case Sh404sefClassBaseextplugin::TYPE_SKIP: $sefstring = $shSaveString; // V 1.2.4.q : restore untouched URL, except anchor // which will be added later break; case Sh404sefClassBaseextplugin::TYPE_SIMPLE: /* case 'sh404SEFFallback': // v 1.2.4.t*/ // check for custom urls $sefstring = ''; $urlType = shGetSefURLFromCacheOrDB($string, $sefstring); // if no custom found, then build default url if ($urlType != sh404SEF_URLTYPE_CUSTOM) { // if not found then fall back to Joomla! SEF if (isset($URI)) { unset($URI); } $sefstring = 'component/'; $URI = new sh_Net_URL(shSortUrl($shSaveString)); if (count($URI->querystring) > 0) { foreach ($URI->querystring as $key => $value) { if (is_array($value)) { foreach ($value as $k => $v) { // fix for arrays, thanks doorknob $sefstring .= $key . '[' . $k . '],' . $v . '/'; } } else { $sefstring .= $key . ',' . $value . '/'; } } $sefstring = str_replace('option/', '', $sefstring); } } break; default: $sefstring = ''; // base case: $urlType = shGetSefURLFromCacheOrDB($string, $sefstring); // first special case. User may have customized paginated urls // this will be picked up by the line above, except if we're talking about // a category or section blog layout, where Joomla does not uses the correct // value for limit if (($urlType == sh404SEF_URLTYPE_NONE || $urlType == sh404SEF_URLTYPE_404) && empty($showall) && (!empty($limit) || !isset($limit) && !empty($limitstart))) { if ($option == 'com_content' && isset($layout) && $layout == 'blog' || $option == 'com_content' && isset($view) && $view == 'frontpage') { $listLimit = shGetDefaultDisplayNumFromURL($string, $includeBlogLinks = true); $tmpString = shSetURLVar($string, 'limit', $listLimit); $tmpString = shSortUrl($tmpString); $urlType = shGetSefURLFromCacheOrDB($tmpString, $sefstring); if ($urlType != sh404SEF_URLTYPE_NONE && $urlType != sh404SEF_URLTYPE_404) { // we found a match with pagination info! $string = $tmpString; } } } // now let's try again without any pagination at all if (($urlType == sh404SEF_URLTYPE_NONE || $urlType == sh404SEF_URLTYPE_404) && empty($showall) && (!empty($limit) || !isset($limit) && !empty($limitstart))) { $urlType = shGetSefURLFromCacheOrDB(shCleanUpPag($string), $sefstring); // search without pagination info if ($urlType != sh404SEF_URLTYPE_NONE && $urlType != sh404SEF_URLTYPE_404) { $sefstring = shAddPaginationInfo(@$limit, @$limitstart, @showall, 1, $string, $sefstring, null); // a special case : com_content does not calculate pagination right // for frontpage and blog, they include links shown at the bottom in the calculation of number of items // For instance, with joomla sample data, the frontpage has only 5 articles // but the view sets $limit to 9 !!! if ($option == 'com_content' && isset($layout) && $layout == 'blog' || $option == 'com_content' && isset($view) && $view == 'frontpage') { $listLimit = shGetDefaultDisplayNumFromURL($string, $includeBlogLinks = true); $string = shSetURLVar($string, 'limit', $listLimit); $string = shSortUrl($string); } // that's a new URL, so let's add it to DB and cache _log('Created url based on non paginated base url:' . $string); shAddSefUrlToDBAndCache($string, $sefstring, 0, $urlType); } } if ($urlType == sh404SEF_URLTYPE_NONE) { // If component has its own sef_ext plug-in included. $shDoNotOverride = in_array($shOption, $sefConfig->shDoNotOverrideOwnSef); if (shFileExists(sh404SEF_ABS_PATH . 'components/' . $option . '/sef_ext.php') && ($shDoNotOverride || !$shDoNotOverride && (!shFileExists(sh404SEF_ABS_PATH . 'components/com_sh404sef/sef_ext/' . $option . '.php') && !shFileExists(sh404SEF_ABS_PATH . 'components/' . $option . '/sef_ext/' . $option . '.php')))) { // Load the plug-in file. V 1.2.4.s changed require_once to include include_once sh404SEF_ABS_PATH . 'components/' . $option . '/sef_ext.php'; $_SEF_SPACE = $sefConfig->replacement; $comp_name = str_replace('com_', '', $option); $className = 'sef_' . $comp_name; $sef_ext = new $className(); // V x : added default string in params if (empty($sefConfig->defaultComponentStringList[$comp_name])) { $title[] = getMenuTitle($option, null, isset($Itemid) ? @$Itemid : null, null, $shLanguage); } else { $title[] = $sefConfig->defaultComponentStringList[$comp_name]; } // V 1.2.4.r : clean up URL BEFORE sending it to sef_ext files, to have control on what they do // remove lang information, we'll put it back ourselves later //$shString = preg_replace( '/(&|\?)lang=[a-zA-Z]{2,3}/iU' ,'', $string); // V 1.2.4.t use original non-sef string. Some sef_ext files relies on order of params, which may // have been changed by sh404SEF $shString = preg_replace('/(&|\\?)lang=[a-zA-Z]{2,3}/iU', '', $shSaveString); $finalstrip = explode("|", $sefConfig->stripthese); $shString = str_replace('&', '&', $shString); _log('Sending to own sef_ext.php plugin : ' . $shString); $sefstring = $sef_ext->create($shString); _log('Created by sef_ext.php plugin : ' . $sefstring); $sefstring = str_replace("%10", "%2F", $sefstring); $sefstring = str_replace("%11", $sefConfig->replacement, $sefstring); $sefstring = rawurldecode($sefstring); if ($sefstring == $string) { if (!empty($shMosMsg)) { // V x 01/09/2007 22:48:01 $string .= '?' . $shMosMsg; } $ret = shFinalizeURL($string); $shMosConfig_locale = $shOrigLang; _log('Returning shSefRelToAbs 5 with ' . $ret); return $ret; } else { // V 1.2.4.p : sef_ext extensions for opensef/SefAdvance do not always replace ' $sefstring = str_replace('\'', $sefConfig->replacement, $sefstring); // some ext. seem to html_special_chars URL ? $sefstring = str_replace(''', $sefConfig->replacement, $sefstring); // V w 27/08/2007 13:23:56 $sefstring = str_replace(' ', $_SEF_SPACE, $sefstring); $sefstring = str_replace(' ', '', (shInsertIsoCodeInUrl($option, $shLanguage) ? shGetIsoCodeFromName($shLanguage) . '/' : '') . titleToLocation($title[0]) . '/' . $sefstring . ($sefstring != '' ? $sefConfig->suffix : '')); if (!empty($sefConfig->suffix)) { $sefstring = str_replace('/' . $sefConfig->suffix, $sefConfig->suffix, $sefstring); } //$finalstrip = explode("|", $sefConfig->stripthese); $sefstring = str_replace($finalstrip, $sefConfig->replacement, $sefstring); $sefstring = str_replace($sefConfig->replacement . $sefConfig->replacement . $sefConfig->replacement, $sefConfig->replacement, $sefstring); $sefstring = str_replace($sefConfig->replacement . $sefConfig->replacement, $sefConfig->replacement, $sefstring); $suffixthere = 0; if (!empty($sefConfig->suffix) && strpos($sefstring, $sefConfig->suffix) !== false) { // V 1.2.4.s $suffixthere = strlen($sefConfig->suffix); } $takethese = str_replace("|", "", $sefConfig->friendlytrim); $sefstring = JString::trim(JString::substr($sefstring, 0, strlen($sefstring) - $suffixthere), $takethese); $sefstring .= $suffixthere == 0 ? '' : $sefConfig->suffix; // version u 26/08/2007 17:27:16 // V 1.2.4.m store it in DB so as to be able to use sef_ext plugins really ! $string = str_replace('&', '&', $string); // V 1.2.4.r without mod_rewrite $shSefString = shAdjustToRewriteMode($sefstring); // V 1.2.4.p check for various URL for same content $dburl = ''; // V 1.2.4.t prevent notice error $urlType = sh404SEF_URLTYPE_NONE; if ($sefConfig->shUseURLCache) { $urlType = Sh404sefHelperCache::getNonSefUrlFromCache($shSefString, $dburl); } $newMaxRank = 0; // V 1.2.4.s $shDuplicate = false; if ($sefConfig->shRecordDuplicates || $urlType == sh404SEF_URLTYPE_NONE) { // V 1.2.4.q + V 1.2.4.s+t $sql = "SELECT newurl, rank, dateadd FROM #__redirection WHERE oldurl = " . $database->Quote($shSefString) . " ORDER BY rank ASC"; $database->setQuery($sql); $dbUrlList = $database->loadObjectList(); if (count($dbUrlList) > 0) { $dburl = $dbUrlList[0]->newurl; $newMaxRank = $dbUrlList[count($dbUrlList) - 1]->rank + 1; $urlType = $dbUrlList[0]->dateadd == '0000-00-00' ? sh404SEF_URLTYPE_AUTO : sh404SEF_URLTYPE_CUSTOM; } } if ($urlType != sh404SEF_URLTYPE_NONE && $dburl != $string) { $shDuplicate = true; } $urlType = $urlType == sh404SEF_URLTYPE_NONE ? sh404SEF_URLTYPE_AUTO : $urlType; _log('Adding from sef_ext to DB : ' . $shSefString . ' | rank = ' . ($shDuplicate ? $newMaxRank : 0)); shAddSefUrlToDBAndCache($string, $shSefString, $shDuplicate ? $newMaxRank : 0, $urlType); } } else { $string = JString::trim($string, "&?"); // V 1.2.4.q a trial in better handling homepage articles if (shIsCurrentPageHome() && $option == 'com_content' && isset($task) && $task == 'view' && $sefConfig->guessItemidOnHomepage) { $string = preg_replace('/(&|\\?)Itemid=[^&]*/i', '', $string); // we remove Itemid, as com_content plugin $Itemid = null; // will hopefully do a better job at finding the right one unset($URI->querystring['Itemid']); unset($shGETVars['Itemid']); } require_once sh404SEF_FRONT_ABS_PATH . 'sef_ext.php'; $sef_ext = new sef_404(); // Rewrite the URL now. // V 1.2.4.s added original string // a special case : com_content does not calculate pagination right // for frontpage and blog, they include links shown at the bottom in the calculation of number of items // For instance, with joomla sample data, the frontpage has only 5 articles // but the view sets $limit to 9 !!! if ($option == 'com_content' && isset($layout) && $layout == 'blog' || $option == 'com_content' && isset($view) && $view == 'frontpage') { $listLimit = shGetDefaultDisplayNumFromURL($string, $includeBlogLinks = true); $string = shSetURLVar($string, 'limit', $listLimit); $string = shSortUrl($string); //$URI->addQueryString( 'limit', $listLimit); } $sefstring = $sef_ext->create($string, $URI->querystring, $shAppendString, $shLanguage, $shOrigString, $originalUri); _log('Created sef url from default plugin: ' . $sefstring); } } } // end of cache check shumisha if (isset($sef_ext)) { unset($sef_ext); } // V 1.2.4.j // V 1.2.4.r : checked for double // // V 1.2.4.r try sef without mod_rewrite $shRewriteBit = $shComponentType == Sh404sefClassBaseextplugin::TYPE_SKIP ? '/' : $sefConfig->shRewriteStrings[$sefConfig->shRewriteMode]; if (strpos($sefstring, 'index.php') === 0) { $shRewriteBit = '/'; } // V 1.2.4.t bug #119 $string = $GLOBALS['shConfigLiveSite'] . $shRewriteBit . JString::ltrim($sefstring, '/') . ($URI->anchor ? "#" . $URI->anchor : ''); } else { // V x 03/09/2007 13:47:37 editing content $shComponentType = Sh404sefClassBaseextplugin::TYPE_SKIP; // will prevent turning & into & _log('shSefrelfToAbs: option not set, skipping'); } $ret = $string; // $ret = str_replace('itemid', 'Itemid', $ret); // V 1.2.4.t bug #125 _log('(1) Setting shSefRelToAbs return string as: ' . $ret); } if (!isset($ret)) { $ret = $string; _log('(2) Setting shSefRelToAbs return string as: ' . $ret); } //if (!empty($shMosMsg) && strpos($ret, $shMosMsg) === false) // V x 01/09/2007 23:02:00 // $ret .= (strpos( $ret, '?') === false || $sefConfig->shRewriteStrings[$sefConfig->shRewriteMode] == '/index.php?/'? '?':'&').$shMosMsg; $ret = $shComponentType == Sh404sefClassBaseextplugin::TYPE_DEFAULT ? shFinalizeURL($ret) : $ret; // V w 27/08/2007 13:21:28 _log('(3) shSefRelToAbs return string after shFinalize: ' . $ret); if (empty($uri) || $shComponentType == Sh404sefClassBaseextplugin::TYPE_SKIP) { // we don't have a uri : we must be doing a redirect from non-sef to sef or similar $ret .= $shAppendString; // append directly to url _log('(4) shSefRelToAbs return string after appendString: ' . $ret); } else { if (empty($sefstring) || !empty($sefstring) && strpos($sefstring, 'index.php') !== 0) { shRebuildVars($shAppendString, $uri); // instead, add to uri. Joomla will put everything together. Only do this if we have a sef url, and not if we have a non-sef _log('(5) shSefRelToAbs no sefstring, adding rebuild vars : ' . $shAppendString); } } $shMosConfig_locale = $shOrigLang; _log('shSefRelToAbs: finally returning: ' . $ret); return $ret; }
function shSEFConfig() { $sef_config_file = sh404SEF_ADMIN_ABS_PATH . 'config/config.sef.php'; $app = JFactory::getApplication(); if ($app->isAdmin()) { $this->shCheckFilesAccess(); } if (shFileExists($sef_config_file)) { include $sef_config_file; } // shumisha : 2007-04-01 new parameters ! if (isset($shUseURLCache)) { $this->shUseURLCache = $shUseURLCache; } // shumisha : 2007-04-01 new parameters ! if (isset($shMaxURLInCache)) { $this->shMaxURLInCache = $shMaxURLInCache; } // shumisha : 2007-04-01 new parameters ! if (isset($shTranslateURL)) { $this->shTranslateURL = $shTranslateURL; } //V 1.2.4.m if (isset($shInsertLanguageCode)) { $this->shInsertLanguageCode = $shInsertLanguageCode; } if (isset($notTranslateURLList)) { $this->notTranslateURLList = $notTranslateURLList; } if (isset($notInsertIsoCodeList)) { $this->notInsertIsoCodeList = $notInsertIsoCodeList; } // shumisha : 2007-04-03 new parameters ! if (isset($shInsertGlobalItemidIfNone)) { $this->shInsertGlobalItemidIfNone = $shInsertGlobalItemidIfNone; } if (isset($shInsertTitleIfNoItemid)) { $this->shInsertTitleIfNoItemid = $shInsertTitleIfNoItemid; } if (isset($shAlwaysInsertMenuTitle)) { $this->shAlwaysInsertMenuTitle = $shAlwaysInsertMenuTitle; } if (isset($shAlwaysInsertItemid)) { $this->shAlwaysInsertItemid = $shAlwaysInsertItemid; } if (isset($shDefaultMenuItemName)) { $this->shDefaultMenuItemName = $shDefaultMenuItemName; } if (isset($shAppendRemainingGETVars)) { $this->shAppendRemainingGETVars = $shAppendRemainingGETVars; } if (isset($shVmInsertShopName)) { $this->shVmInsertShopName = $shVmInsertShopName; } if (isset($shInsertProductId)) { $this->shInsertProductId = $shInsertProductId; } if (isset($shVmUseProductSKU)) { $this->shVmUseProductSKU = $shVmUseProductSKU; } if (isset($shVmInsertManufacturerName)) { $this->shVmInsertManufacturerName = $shVmInsertManufacturerName; } if (isset($shInsertManufacturerId)) { $this->shInsertManufacturerId = $shInsertManufacturerId; } if (isset($shVMInsertCategories)) { $this->shVMInsertCategories = $shVMInsertCategories; } if (isset($shVmAdditionalText)) { $this->shVmAdditionalText = $shVmAdditionalText; } if (isset($shVmInsertFlypage)) { $this->shVmInsertFlypage = $shVmInsertFlypage; } if (isset($shInsertCategoryId)) { $this->shInsertCategoryId = $shInsertCategoryId; } if (isset($shReplacements)) { $this->shReplacements = $shReplacements; } if (isset($shInsertNumericalId)) { $this->shInsertNumericalId = $shInsertNumericalId; } if (isset($shInsertNumericalIdCatList)) { $this->shInsertNumericalIdCatList = $shInsertNumericalIdCatList; } if (isset($shRedirectNonSefToSef)) { $this->shRedirectNonSefToSef = $shRedirectNonSefToSef; } // disabled, can't be implemented safely //if (isset($shRedirectJoomlaSefToSef)) $this->shRedirectJoomlaSefToSef = $shRedirectJoomlaSefToSef; if (isset($shConfig_live_secure_site)) { $this->shConfig_live_secure_site = JString::rtrim($shConfig_live_secure_site, '/'); } if (isset($shActivateIJoomlaMagInContent)) { $this->shActivateIJoomlaMagInContent = $shActivateIJoomlaMagInContent; } if (isset($shInsertIJoomlaMagIssueId)) { $this->shInsertIJoomlaMagIssueId = $shInsertIJoomlaMagIssueId; } if (isset($shInsertIJoomlaMagName)) { $this->shInsertIJoomlaMagName = $shInsertIJoomlaMagName; } if (isset($shInsertIJoomlaMagMagazineId)) { $this->shInsertIJoomlaMagMagazineId = $shInsertIJoomlaMagMagazineId; } if (isset($shInsertIJoomlaMagArticleId)) { $this->shInsertIJoomlaMagArticleId = $shInsertIJoomlaMagArticleId; } if (isset($shInsertCBName)) { $this->shInsertCBName = $shInsertCBName; } if (isset($shCBInsertUserName)) { $this->shCBInsertUserName = $shCBInsertUserName; } if (isset($shCBInsertUserId)) { $this->shCBInsertUserId = $shCBInsertUserId; } if (isset($shCBUseUserPseudo)) { $this->shCBUseUserPseudo = $shCBUseUserPseudo; } if (isset($shInsertMyBlogName)) { $this->shInsertMyBlogName = $shInsertMyBlogName; } if (isset($shMyBlogInsertPostId)) { $this->shMyBlogInsertPostId = $shMyBlogInsertPostId; } if (isset($shMyBlogInsertTagId)) { $this->shMyBlogInsertTagId = $shMyBlogInsertTagId; } if (isset($shMyBlogInsertBloggerId)) { $this->shMyBlogInsertBloggerId = $shMyBlogInsertBloggerId; } if (isset($shInsertDocmanName)) { $this->shInsertDocmanName = $shInsertDocmanName; } if (isset($shDocmanInsertDocId)) { $this->shDocmanInsertDocId = $shDocmanInsertDocId; } if (isset($shDocmanInsertDocName)) { $this->shDocmanInsertDocName = $shDocmanInsertDocName; } if (isset($shLog404Errors)) { $this->shLog404Errors = $shLog404Errors; } if (isset($shLMDefaultItemid)) { $this->shLMDefaultItemid = $shLMDefaultItemid; } if (isset($shInsertFireboardName)) { $this->shInsertFireboardName = $shInsertFireboardName; } if (isset($shFbInsertCategoryName)) { $this->shFbInsertCategoryName = $shFbInsertCategoryName; } if (isset($shFbInsertCategoryId)) { $this->shFbInsertCategoryId = $shFbInsertCategoryId; } if (isset($shFbInsertMessageSubject)) { $this->shFbInsertMessageSubject = $shFbInsertMessageSubject; } if (isset($shFbInsertMessageId)) { $this->shFbInsertMessageId = $shFbInsertMessageId; } if (isset($shDoNotOverrideOwnSef)) { // V 1.2.4.m $this->shDoNotOverrideOwnSef = $shDoNotOverrideOwnSef; } if (isset($shEncodeUrl)) { // V 1.2.4.m $this->shEncodeUrl = $shEncodeUrl; } if (isset($guessItemidOnHomepage)) { // V 1.2.4.q $this->guessItemidOnHomepage = $guessItemidOnHomepage; } if (isset($shForceNonSefIfHttps)) { // V 1.2.4.q $this->shForceNonSefIfHttps = $shForceNonSefIfHttps; } if (isset($shRewriteMode)) { // V 1.2.4.s $this->shRewriteMode = $shRewriteMode; } if (isset($shRewriteStrings)) { // V 1.2.4.s $this->shRewriteStrings = $shRewriteStrings; } if (isset($shMetaManagementActivated)) { // V 1.2.4.s $this->shMetaManagementActivated = $shMetaManagementActivated; } if (isset($shRemoveGeneratorTag)) { // V 1.2.4.s $this->shRemoveGeneratorTag = $shRemoveGeneratorTag; } if (isset($shPutH1Tags)) { // V 1.2.4.s $this->shPutH1Tags = $shPutH1Tags; } if (isset($shInsertContentTableName)) { // V 1.2.4.s $this->shInsertContentTableName = $shInsertContentTableName; } if (isset($shContentTableName)) { // V 1.2.4.s $this->shContentTableName = $shContentTableName; } if (isset($shAutoRedirectWww)) { // V 1.2.4.s $this->shAutoRedirectWww = $shAutoRedirectWww; } if (isset($shVmInsertProductName)) { // V 1.2.4.s $this->shVmInsertProductName = $shVmInsertProductName; } if (isset($shDMInsertCategories)) { // V 1.2.4.t $this->shDMInsertCategories = $shDMInsertCategories; } if (isset($shDMInsertCategoryId)) { // V 1.2.4.t $this->shDMInsertCategoryId = $shDMInsertCategoryId; } if (isset($shForcedHomePage)) { // V 1.2.4.t $this->shForcedHomePage = $shForcedHomePage; } if (isset($shInsertContentBlogName)) { // V 1.2.4.t $this->shInsertContentBlogName = $shInsertContentBlogName; } if (isset($shContentBlogName)) { // V 1.2.4.t $this->shContentBlogName = $shContentBlogName; } if (isset($shInsertMTreeName)) { // V 1.2.4.t $this->shInsertMTreeName = $shInsertMTreeName; } if (isset($shMTreeInsertListingName)) { // V 1.2.4.t $this->shMTreeInsertListingName = $shMTreeInsertListingName; } if (isset($shMTreeInsertListingId)) { // V 1.2.4.t $this->shMTreeInsertListingId = $shMTreeInsertListingId; } if (isset($shMTreePrependListingId)) { // V 1.2.4.t $this->shMTreePrependListingId = $shMTreePrependListingId; } if (isset($shMTreeInsertCategories)) { // V 1.2.4.t $this->shMTreeInsertCategories = $shMTreeInsertCategories; } if (isset($shMTreeInsertCategoryId)) { // V 1.2.4.t $this->shMTreeInsertCategoryId = $shMTreeInsertCategoryId; } if (isset($shMTreeInsertUserName)) { // V 1.2.4.t $this->shMTreeInsertUserName = $shMTreeInsertUserName; } if (isset($shMTreeInsertUserId)) { // V 1.2.4.t $this->shMTreeInsertUserId = $shMTreeInsertUserId; } if (isset($shInsertNewsPName)) { // V 1.2.4.t $this->shInsertNewsPName = $shInsertNewsPName; } if (isset($shNewsPInsertCatId)) { // V 1.2.4.t $this->shNewsPInsertCatId = $shNewsPInsertCatId; } if (isset($shNewsPInsertSecId)) { // V 1.2.4.t $this->shNewsPInsertSecId = $shNewsPInsertSecId; } if (isset($shInsertRemoName)) { // V 1.2.4.t $this->shInsertRemoName = $shInsertRemoName; } if (isset($shRemoInsertDocId)) { // V 1.2.4.t $this->shRemoInsertDocId = $shRemoInsertDocId; } if (isset($shRemoInsertDocName)) { // V 1.2.4.t $this->shRemoInsertDocName = $shRemoInsertDocName; } if (isset($shRemoInsertCategories)) { // V 1.2.4.t $this->shRemoInsertCategories = $shRemoInsertCategories; } if (isset($shRemoInsertCategoryId)) { // V 1.2.4.t $this->shRemoInsertCategoryId = $shRemoInsertCategoryId; } if (isset($shCBShortUserURL)) { // V 1.2.4.t $this->shCBShortUserURL = $shCBShortUserURL; } if (isset($shKeepStandardURLOnUpgrade)) { // V 1.2.4.t $this->shKeepStandardURLOnUpgrade = $shKeepStandardURLOnUpgrade; } if (isset($shKeepCustomURLOnUpgrade)) { // V 1.2.4.t $this->shKeepCustomURLOnUpgrade = $shKeepCustomURLOnUpgrade; } if (isset($shKeepMetaDataOnUpgrade)) { // V 1.2.4.t $this->shKeepMetaDataOnUpgrade = $shKeepMetaDataOnUpgrade; } if (isset($shKeepModulesSettingsOnUpgrade)) { // V 1.2.4.t $this->shKeepModulesSettingsOnUpgrade = $shKeepModulesSettingsOnUpgrade; } if (isset($shMultipagesTitle)) { // V 1.2.4.t $this->shMultipagesTitle = $shMultipagesTitle; } // shumisha end of new parameters if (isset($Enabled)) { $this->Enabled = $Enabled; } if (isset($replacement)) { $this->replacement = $replacement; } if (isset($pagerep)) { $this->pagerep = $pagerep; } if (isset($stripthese)) { $this->stripthese = $stripthese; } if (isset($friendlytrim)) { $this->friendlytrim = $friendlytrim; } if (isset($suffix)) { $this->suffix = $suffix; } if (isset($addFile)) { $this->addFile = $addFile; } if (isset($LowerCase)) { $this->LowerCase = $LowerCase; } if (isset($HideCat)) { $this->HideCat = $HideCat; } if (isset($replacement)) { $this->UseAlias = $UseAlias; } if (isset($UseAlias)) { $this->page404 = $page404; } if (isset($predefined)) { $this->predefined = $predefined; } if (isset($skip)) { $this->skip = $skip; } if (isset($nocache)) { $this->nocache = $nocache; } // V x if (isset($shKeepConfigOnUpgrade)) { // V 1.2.4.x $this->shKeepConfigOnUpgrade = $shKeepConfigOnUpgrade; } if (isset($shSecEnableSecurity)) { // V 1.2.4.x $this->shSecEnableSecurity = $shSecEnableSecurity; } if (isset($shSecLogAttacks)) { // V 1.2.4.x $this->shSecLogAttacks = $shSecLogAttacks; } if (isset($shSecOnlyNumVars)) { // V 1.2.4.x $this->shSecOnlyNumVars = $shSecOnlyNumVars; } if (isset($shSecAlphaNumVars)) { // V 1.2.4.x $this->shSecAlphaNumVars = $shSecAlphaNumVars; } if (isset($shSecNoProtocolVars)) { // V 1.2.4.x $this->shSecNoProtocolVars = $shSecNoProtocolVars; } $this->ipWhiteList = shReadFile(sh404SEF_ADMIN_ABS_PATH . 'security/sh404SEF_IP_white_list.dat'); $this->ipBlackList = shReadFile(sh404SEF_ADMIN_ABS_PATH . 'security/sh404SEF_IP_black_list.dat'); $this->uAgentWhiteList = shReadFile(sh404SEF_ADMIN_ABS_PATH . 'security/sh404SEF_uAgent_white_list.dat'); $this->uAgentBlackList = shReadFile(sh404SEF_ADMIN_ABS_PATH . 'security/sh404SEF_uAgent_black_list.dat'); if (isset($shSecCheckHoneyPot)) { // V 1.2.4.x $this->shSecCheckHoneyPot = $shSecCheckHoneyPot; } if (isset($shSecDebugHoneyPot)) { // V 1.2.4.x $this->shSecDebugHoneyPot = $shSecDebugHoneyPot; } if (isset($shSecHoneyPotKey)) { // V 1.2.4.x $this->shSecHoneyPotKey = $shSecHoneyPotKey; } if (isset($shSecEntranceText)) { // V 1.2.4.x $this->shSecEntranceText = $shSecEntranceText; } if (isset($shSecSmellyPotText)) { // V 1.2.4.x $this->shSecSmellyPotText = $shSecSmellyPotText; } if (isset($monthsToKeepLogs)) { // V 1.2.4.x $this->monthsToKeepLogs = $monthsToKeepLogs; } if (isset($shSecActivateAntiFlood)) { // V 1.2.4.x $this->shSecActivateAntiFlood = $shSecActivateAntiFlood; } if (isset($shSecAntiFloodOnlyOnPOST)) { // V 1.2.4.x $this->shSecAntiFloodOnlyOnPOST = $shSecAntiFloodOnlyOnPOST; } if (isset($shSecAntiFloodPeriod)) { // V 1.2.4.x $this->shSecAntiFloodPeriod = $shSecAntiFloodPeriod; } if (isset($shSecAntiFloodCount)) { // V 1.2.4.x $this->shSecAntiFloodCount = $shSecAntiFloodCount; } // if (isset($insertSectionInBlogTableLinks)) // V 1.2.4.x // $this->insertSectionInBlogTableLinks = $insertSectionInBlogTableLinks; $this->shLangTranslateList = $this->shInitLanguageList(isset($shLangTranslateList) ? $shLangTranslateList : null, 0, 0); $this->shLangInsertCodeList = $this->shInitLanguageList(isset($shLangInsertCodeList) ? $shLangInsertCodeList : null, 0, 0); if (isset($defaultComponentStringList)) { // V 1.2.4.x $this->defaultComponentStringList = $defaultComponentStringList; } $this->pageTexts = $this->shInitLanguageList(isset($pageTexts) ? $pageTexts : null, isset($pagetext) ? $pagetext : 'Page-%s', isset($pagetext) ? $pagetext : 'Page-%s'); // use value from prev versions if any if (isset($shAdminInterfaceType)) { // V 1.2.4.x $this->shAdminInterfaceType = $shAdminInterfaceType; } // compatibility with version earlier than V x if (isset($shShopName)) { // V 1.2.4.x $this->defaultComponentStringList['virtuemart'] = $shShopName; } if (isset($shIJoomlaMagName)) { // V 1.2.4.x $this->defaultComponentStringList['magazine'] = $shIJoomlaMagName; } if (isset($shCBName)) { // V 1.2.4.x $this->defaultComponentStringList['comprofiler'] = $shCBName; } if (isset($shFireboardName)) { // V 1.2.4.x $this->defaultComponentStringList['fireboard'] = $shFireboardName; } if (isset($shMyBlogName)) { // V 1.2.4.x $this->defaultComponentStringList['myblog'] = $shMyBlogName; } if (isset($shDocmanName)) { // V 1.2.4.x $this->defaultComponentStringList['docman'] = $shDocmanName; } if (isset($shMTreeName)) { // V 1.2.4.x $this->defaultComponentStringList['mtree'] = $shMTreeName; } if (isset($shNewsPName)) { // V 1.2.4.x $this->defaultComponentStringList['news_portal'] = $shNewsPName; } if (isset($shRemoName)) { // V 1.2.4.x $this->defaultComponentStringList['remository'] = $shRemoName; } // end of compatibility code // V 1.3 RC if (isset($shInsertNoFollowPDFPrint)) { $this->shInsertNoFollowPDFPrint = $shInsertNoFollowPDFPrint; } if (isset($shInsertReadMorePageTitle)) { $this->shInsertReadMorePageTitle = $shInsertReadMorePageTitle; } if (isset($shMultipleH1ToH2)) { $this->shMultipleH1ToH2 = $shMultipleH1ToH2; } // V 1.3.1 RC if (isset($shVmUsingItemsPerPage)) { $this->shVmUsingItemsPerPage = $shVmUsingItemsPerPage; } if (isset($shSecCheckPOSTData)) { $this->shSecCheckPOSTData = $shSecCheckPOSTData; } if (isset($shSecCurMonth)) { $this->shSecCurMonth = $shSecCurMonth; } if (isset($shSecLastUpdated)) { $this->shSecLastUpdated = $shSecLastUpdated; } if (isset($shSecTotalAttacks)) { $this->shSecTotalAttacks = $shSecTotalAttacks; } if (isset($shSecTotalConfigVars)) { $this->shSecTotalConfigVars = $shSecTotalConfigVars; } if (isset($shSecTotalBase64)) { $this->shSecTotalBase64 = $shSecTotalBase64; } if (isset($shSecTotalScripts)) { $this->shSecTotalScripts = $shSecTotalScripts; } if (isset($shSecTotalStandardVars)) { $this->shSecTotalStandardVars = $shSecTotalStandardVars; } if (isset($shSecTotalImgTxtCmd)) { $this->shSecTotalImgTxtCmd = $shSecTotalImgTxtCmd; } if (isset($shSecTotalIPDenied)) { $this->shSecTotalIPDenied = $shSecTotalIPDenied; } if (isset($shSecTotalUserAgentDenied)) { $this->shSecTotalUserAgentDenied = $shSecTotalUserAgentDenied; } if (isset($shSecTotalFlooding)) { $this->shSecTotalFlooding = $shSecTotalFlooding; } if (isset($shSecTotalPHP)) { $this->shSecTotalPHP = $shSecTotalPHP; } if (isset($shSecTotalPHPUserClicked)) { $this->shSecTotalPHPUserClicked = $shSecTotalPHPUserClicked; } if (isset($prependToPageTitle)) { $this->prependToPageTitle = $prependToPageTitle; } if (isset($appendToPageTitle)) { $this->appendToPageTitle = $appendToPageTitle; } if (isset($debugToLogFile)) { $this->debugToLogFile = $debugToLogFile; } if (isset($debugStartedAt)) { $this->debugStartedAt = $debugStartedAt; } if (isset($debugDuration)) { $this->debugDuration = $debugDuration; } // V 1.3.1 if (isset($shInsertOutboundLinksImage)) { $this->shInsertOutboundLinksImage = $shInsertOutboundLinksImage; } if (isset($shImageForOutboundLinks)) { $this->shImageForOutboundLinks = $shImageForOutboundLinks; } // V 1.0.12 if (isset($useCatAlias)) { $this->useCatAlias = $useCatAlias; } if (isset($useMenuAlias)) { $this->useMenuAlias = $useMenuAlias; } // V 1.5.3 if (isset($alwaysAppendItemsPerPage)) { $this->alwaysAppendItemsPerPage = $alwaysAppendItemsPerPage; } if (isset($redirectToCorrectCaseUrl)) { $this->redirectToCorrectCaseUrl = $redirectToCorrectCaseUrl; } // V 1.5.5 if (isset($jclInsertEventId)) { $this->jclInsertEventId = $jclInsertEventId; } if (isset($jclInsertCategoryId)) { $this->jclInsertCategoryId = $jclInsertCategoryId; } if (isset($jclInsertCalendarId)) { $this->jclInsertCalendarId = $jclInsertCalendarId; } if (isset($jclInsertCalendarName)) { $this->jclInsertCalendarName = $jclInsertCalendarName; } if (isset($jclInsertDate)) { $this->jclInsertDate = $jclInsertDate; } if (isset($jclInsertDateInEventView)) { $this->jclInsertDateInEventView = $jclInsertDateInEventView; } if (isset($ContentTitleShowCat)) { $this->ContentTitleShowCat = $ContentTitleShowCat; } if (isset($ContentTitleUseAlias)) { $this->ContentTitleUseAlias = $ContentTitleUseAlias; } if (isset($ContentTitleUseCatAlias)) { $this->ContentTitleUseCatAlias = $ContentTitleUseCatAlias; } if (isset($pageTitleSeparator)) { $this->pageTitleSeparator = $pageTitleSeparator; } if (isset($ContentTitleInsertArticleId)) { $this->ContentTitleInsertArticleId = $ContentTitleInsertArticleId; } if (isset($shInsertContentArticleIdCatList)) { $this->shInsertContentArticleIdCatList = $shInsertContentArticleIdCatList; } // 1.5.8 if (isset($shJSInsertJSName)) { $this->shJSInsertJSName = $shJSInsertJSName; } if (isset($shJSShortURLToUserProfile)) { $this->shJSShortURLToUserProfile = $shJSShortURLToUserProfile; } if (isset($shJSInsertUsername)) { $this->shJSInsertUsername = $shJSInsertUsername; } if (isset($shJSInsertUserFullName)) { $this->shJSInsertUserFullName = $shJSInsertUserFullName; } if (isset($shJSInsertUserId)) { $this->shJSInsertUserId = $shJSInsertUserId; } if (isset($shJSInsertUserFullName)) { $this->shJSInsertUserFullName = $shJSInsertUserFullName; } if (isset($shJSInsertGroupCategory)) { $this->shJSInsertGroupCategory = $shJSInsertGroupCategory; } if (isset($shJSInsertGroupCategoryId)) { $this->shJSInsertGroupCategoryId = $shJSInsertGroupCategoryId; } if (isset($shJSInsertGroupId)) { $this->shJSInsertGroupId = $shJSInsertGroupId; } if (isset($shJSInsertGroupBulletinId)) { $this->shJSInsertGroupBulletinId = $shJSInsertGroupBulletinId; } if (isset($shJSInsertDiscussionId)) { $this->shJSInsertDiscussionId = $shJSInsertDiscussionId; } if (isset($shJSInsertMessageId)) { $this->shJSInsertMessageId = $shJSInsertMessageId; } if (isset($shJSInsertPhotoAlbum)) { $this->shJSInsertPhotoAlbum = $shJSInsertPhotoAlbum; } if (isset($shJSInsertPhotoAlbumId)) { $this->shJSInsertPhotoAlbumId = $shJSInsertPhotoAlbumId; } if (isset($shJSInsertPhotoId)) { $this->shJSInsertPhotoId = $shJSInsertPhotoId; } if (isset($shJSInsertVideoCat)) { $this->shJSInsertVideoCat = $shJSInsertVideoCat; } if (isset($shJSInsertVideoCatId)) { $this->shJSInsertVideoCatId = $shJSInsertVideoCatId; } if (isset($shJSInsertVideoId)) { $this->shJSInsertVideoId = $shJSInsertVideoId; } if (isset($shFbInsertUserName)) { $this->shFbInsertUserName = $shFbInsertUserName; } if (isset($shFbInsertUserId)) { $this->shFbInsertUserId = $shFbInsertUserId; } if (isset($shFbShortUrlToProfile)) { $this->shFbShortUrlToProfile = $shFbShortUrlToProfile; } if (isset($shPageNotFoundItemid)) { $this->shPageNotFoundItemid = $shPageNotFoundItemid; } if (isset($autoCheckNewVersion)) { $this->autoCheckNewVersion = $autoCheckNewVersion; } if (isset($error404SubTemplate)) { $this->error404SubTemplate = $error404SubTemplate; } if (isset($enablePageId)) { $this->enablePageId = $enablePageId; } if (isset($compEnablePageId)) { $this->compEnablePageId = $compEnablePageId; } // V 2.1.0 if (isset($analyticsEnabled)) { $this->analyticsEnabled = $analyticsEnabled; } if (isset($analyticsReportsEnabled)) { $this->analyticsReportsEnabled = $analyticsReportsEnabled; } if (isset($analyticsType)) { $this->analyticsType = $analyticsType; } if (isset($analyticsId)) { $this->analyticsId = $analyticsId; } if (isset($analyticsUser)) { $this->analyticsUser = $analyticsUser; } if (isset($analyticsPassword)) { $this->analyticsPassword = $analyticsPassword; } if (isset($analyticsAccount)) { $this->analyticsAccount = $analyticsAccount; } if (isset($analyticsExcludeIP)) { $this->analyticsExcludeIP = $analyticsExcludeIP; } if (isset($analyticsMaxUserLevel)) { $this->analyticsMaxUserLevel = $analyticsMaxUserLevel; } if (isset($analyticsProfile)) { $this->analyticsProfile = $analyticsProfile; } if (isset($autoCheckNewAnalytics)) { $this->autoCheckNewAnalytics = $autoCheckNewAnalytics; } if (isset($analyticsDashboardDateRange)) { $this->analyticsDashboardDateRange = $analyticsDashboardDateRange; } if (isset($analyticsEnableTimeCollection)) { $this->analyticsEnableTimeCollection = $analyticsEnableTimeCollection; } if (isset($analyticsEnableUserCollection)) { $this->analyticsEnableUserCollection = $analyticsEnableUserCollection; } if (isset($analyticsDashboardDataType)) { $this->analyticsDashboardDataType = $analyticsDashboardDataType; } if (isset($slowServer)) { $this->slowServer = $slowServer; } // V 2.1.10 if (isset($useJoomsefRouter)) { $this->useJoomsefRouter = $useJoomsefRouter; } if (isset($useAcesefRouter)) { $this->useAcesefRouter = $useAcesefRouter; } // V 2.1.11 if (isset($insertShortlinkTag)) { $this->insertShortlinkTag = $insertShortlinkTag; } if (isset($insertRevCanTag)) { $this->insertRevCanTag = $insertRevCanTag; } if (isset($insertAltShorterTag)) { $this->insertAltShorterTag = $insertAltShorterTag; } if (isset($canReadRemoteConfig)) { $this->canReadRemoteConfig = $canReadRemoteConfig; } if (isset($stopCreatingShurls)) { $this->stopCreatingShurls = $stopCreatingShurls; } if (isset($shurlBlackList)) { $this->shurlBlackList = $shurlBlackList; } if (isset($shurlNonSefBlackList)) { $this->shurlNonSefBlackList = $shurlNonSefBlackList; } // V 3.0.0 if (isset($includeContentCat)) { $this->includeContentCat = $includeContentCat; } if (isset($includeContentCatCategories)) { $this->includeContentCatCategories = $includeContentCatCategories; } if (isset($contentCategoriesSuffix)) { $this->contentCategoriesSuffix = $contentCategoriesSuffix; } if (isset($contentTitleIncludeCat)) { $this->contentTitleIncludeCat = $contentTitleIncludeCat; } if (isset($useContactCatAlias)) { $this->useContactCatAlias = $useContactCatAlias; } if (isset($contactCategoriesSuffix)) { $this->contactCategoriesSuffix = $contactCategoriesSuffix; } if (isset($includeContactCat)) { $this->includeContactCat = $includeContactCat; } if (isset($includeContactCatCategories)) { $this->includeContactCatCategories = $includeContactCatCategories; } if (isset($useWeblinksCatAlias)) { $this->useWeblinksCatAlias = $useWeblinksCatAlias; } if (isset($weblinksCategoriesSuffix)) { $this->weblinksCategoriesSuffix = $weblinksCategoriesSuffix; } if (isset($includeWeblinksCat)) { $this->includeWeblinksCat = $includeWeblinksCat; } if (isset($includeWeblinksCatCategories)) { $this->includeWeblinksCatCategories = $includeWeblinksCatCategories; } $this->liveSites = $this->shInitLanguageList(isset($liveSites) ? $liveSites : array(), '', ''); if (isset($alternateTemplate)) { $this->alternateTemplate = $alternateTemplate; } if (isset($useJoomlaRouter)) { $this->useJoomlaRouter = $useJoomlaRouter; } if (isset($slugForUncategorizedContent)) { $this->slugForUncategorizedContent = $slugForUncategorizedContent; } if (isset($slugForUncategorizedContact)) { $this->slugForUncategorizedContact = $slugForUncategorizedContact; } if (isset($slugForUncategorizedWeblinks)) { $this->slugForUncategorizedWeblinks = $slugForUncategorizedWeblinks; } // 3.4 if (isset($enableMultiLingualSupport)) { $this->enableMultiLingualSupport = $enableMultiLingualSupport; } if (isset($enableOpenGraphData)) { $this->enableOpenGraphData = $enableOpenGraphData; } if (isset($ogEnableDescription)) { $this->ogEnableDescription = $ogEnableDescription; } if (isset($ogType)) { $this->ogType = $ogType; } if (isset($ogImage)) { $this->ogImage = $ogImage; } if (isset($ogEnableSiteName)) { $this->ogEnableSiteName = $ogEnableSiteName; } if (isset($ogSiteName)) { $this->ogSiteName = $ogSiteName; } if (isset($ogEnableLocation)) { $this->ogEnableLocation = $ogEnableLocation; } if (isset($ogLatitude)) { $this->ogLatitude = $ogLatitude; } if (isset($ogLongitude)) { $this->ogLongitude = $ogLongitude; } if (isset($ogStreetAddress)) { $this->ogStreetAddress = $ogStreetAddress; } if (isset($ogLocality)) { $this->ogLocality = $ogLocality; } if (isset($ogPostalCode)) { $this->ogPostalCode = $ogPostalCode; } if (isset($ogRegion)) { $this->ogRegion = $ogRegion; } if (isset($ogCountryName)) { $this->ogCountryName = $ogCountryName; } if (isset($ogEnableContact)) { $this->ogEnableContact = $ogEnableContact; } if (isset($ogEmail)) { $this->ogEmail = $ogEmail; } if (isset($ogPhoneNumber)) { $this->ogPhoneNumber = $ogPhoneNumber; } if (isset($ogFaxNumber)) { $this->ogFaxNumber = $ogFaxNumber; } if (isset($fbAdminIds)) { $this->fbAdminIds = $fbAdminIds; } if (isset($insertPaginationTags)) { $this->insertPaginationTags = $insertPaginationTags; } // define default values for seldom used params if (!defined('sh404SEF_PROTECT_AGAINST_DOCUMENT_TYPE_ERROR')) { // SECTION : GLOBAL PARAMETERS for sh404sef --------------------------------------------------------------------- $shDefaultParamsHelp['sh404SEF_PROTECT_AGAINST_DOCUMENT_TYPE_ERROR'] = '// if not 0, urls for pdf documents and rss feeds will be only partially turned into sef urls. //The query string &format=pdf or &format=feed will be still be appended. // This will protect against malfunctions when using some plugins which makes a call // to JFactory::getDocument() from a onAfterInitiliaze handler // At this time, SEF urls are not decoded and thus the document type is set to html instead of pdf or feed // resulting in the home page being displayed instead of the correct document'; $shDefaultParams['sh404SEF_PROTECT_AGAINST_DOCUMENT_TYPE_ERROR'] = 0; /* $shDefaultParamsHelp['sh404SEF_PROTECT_AGAINST_BAD_NON_DEFAULT_LANGUAGE_MENU_HOMELINK'] = '// Joomla mod_mainmenu module forces usage of JURI::base() for the homepage link // On multilingual sites, this causes homepage link in other than default language to // be wrong. If the following parameter is non-zero, such a homepage link // will be replaced by the correct link, similar to www.mysite.com/es/ for instance'; $shDefaultParams['sh404SEF_PROTECT_AGAINST_BAD_NON_DEFAULT_LANGUAGE_MENU_HOMELINK'] = 1; */ $shDefaultParamsHelp['sh404SEF_REDIRECT_IF_INDEX_PHP'] = '// if not 0, sh404SEF will do a 301 redirect from http://yoursite.com/index.php // or http://yoursite.com/index.php?lang=xx to http://yoursite.com/ // this may not work on some web servers, which transform yoursite.com into // yoursite.com/index.php, thus creating and endless loop. If your server does // that, set this param to 0'; $shDefaultParams['sh404SEF_REDIRECT_IF_INDEX_PHP'] = 1; $shDefaultParamsHelp['sh404SEF_NON_SEF_IF_SUPERADMIN'] = '// if superadmin logged in, force non-sef, for testing and setting up purpose'; $shDefaultParams['sh404SEF_NON_SEF_IF_SUPERADMIN'] = 0; $shDefaultParamsHelp['sh404SEF_DE_ACTIVATE_LANG_AUTO_REDIRECT'] = '// set to 1 to prevent 303 auto redirect based on user language // use with care, will prevent language switch to work for users without javascript'; $shDefaultParams['sh404SEF_DE_ACTIVATE_LANG_AUTO_REDIRECT'] = 1; $shDefaultParamsHelp['sh404SEF_CHECK_COMP_IS_INSTALLED'] = '// if 1, SEF URLs will only be built for installed components.'; $shDefaultParams['sh404SEF_CHECK_COMP_IS_INSTALLED'] = 1; $shDefaultParamsHelp['sh404SEF_REDIRECT_OUTBOUND_LINKS'] = '// if 1, all outbound links on page will be reached through a redirect // to avoid page rank leakage'; $shDefaultParams['sh404SEF_REDIRECT_OUTBOUND_LINKS'] = 0; $shDefaultParamsHelp['sh404SEF_PDF_DIR'] = '// if not empty, urls to pdf produced by Joomla will be prefixed with this // path. Can be : \'pdf\' or \'pdf/something\' (ie: don\'t put leading or trailing slashes) // Allows you to store some pre-built PDF in a directory called /pdf, with the same name // as a page. Such a pdf will be served directly by the web server instead of being built on // the fly by Joomla. This will save CPU and RAM. (only works this way if using htaccess'; $shDefaultParams['sh404SEF_PDF_DIR'] = 'pdf'; $shDefaultParamsHelp['SH404SEF_URL_CACHE_TTL'] = '// time to live for url cache in hours : default = 168h = 1 week // Set to 0 to keep cache forever'; $shDefaultParams['SH404SEF_URL_CACHE_TTL'] = 168; $shDefaultParamsHelp['SH404SEF_URL_CACHE_WRITES_TO_CHECK_TTL'] = '// number of cache write before checking cache TTL.'; $shDefaultParams['SH404SEF_URL_CACHE_WRITES_TO_CHECK_TTL'] = 1000; $shDefaultParamsHelp['sh404SEF_SEC_MAIL_ATTACKS_TO_ADMIN'] = '// if set to 1, an email will be send to site admin when an attack is logged // if the site is live, you could be drowning in email rapidly !!!'; $shDefaultParams['sh404SEF_SEC_MAIL_ATTACKS_TO_ADMIN'] = 0; $shDefaultParams['sh404SEF_SEC_EMAIL_TO_ADMIN_SUBJECT'] = 'Your site %sh404SEF_404_SITE_NAME% was subject to an attack'; $shDefaultParams['sh404SEF_SEC_EMAIL_TO_ADMIN_BODY'] = 'Hello !' . "\n\n" . 'This is sh404SEF security component, running at your site (%sh404SEF_404_SITE_URL%).' . "\n\n" . 'I have just blocked an attack on your site. Please check details below : ' . "\n" . '------------------------------------------------------------------------' . "\n" . '%sh404SEF_404_ATTACK_DETAILS%' . "\n" . '------------------------------------------------------------------------' . "\n\n" . 'Thanks for using sh404SEF!' . "\n\n"; $shDefaultParamsHelp['SH404SEF_PAGES_TO_CLEAN_LOGS'] = '// number of pages between checks to remove old log files // if 1, we check at every page request'; $shDefaultParams['SH404SEF_PAGES_TO_CLEAN_LOGS'] = 10000; $shDefaultParamsHelp['SH_VM_ALLOW_PRODUCTS_IN_MULTIPLE_CATS'] = '// SECTION : Virtuemart plugin parameters ---------------------------------------------------------------------------- // set to 1 for products to have requested category name included in url // useful if some products are in more than one category. If param set to 0, // only one category will be used for all pages. Not recommended now that sh404SEF // automatically handle rel=canonical on such pages'; $shDefaultParams['SH_VM_ALLOW_PRODUCTS_IN_MULTIPLE_CATS'] = 1; $shDefaultParamsHelp['sh404SEF_SOBI2_PARAMS_ALWAYS_INCLUDE_CATS'] = '// SECTION : SOBI2 plugin parameters ---------------------------------------------------------------------------- // set to 1 to always include categories in SOBI2 entries // details pages url'; $shDefaultParams['sh404SEF_SOBI2_PARAMS_ALWAYS_INCLUDE_CATS'] = 0; $shDefaultParamsHelp['sh404SEF_SOBI2_PARAMS_INCLUDE_ENTRY_ID'] = '// set to 1 so that entry id is prepended to url'; $shDefaultParams['sh404SEF_SOBI2_PARAMS_INCLUDE_ENTRY_ID'] = 0; $shDefaultParamsHelp['sh404SEF_SOBI2_PARAMS_INCLUDE_CAT_ID'] = '// set to 1 so that category id is prepended to category name'; $shDefaultParams['sh404SEF_SOBI2_PARAMS_INCLUDE_CAT_ID'] = 0; // end of parameters $sef_custom_config_file = sh404SEF_ADMIN_ABS_PATH . 'custom.sef.php'; // read user defined values, possibly recovered while upgrading if (JFile::exists($sef_custom_config_file)) { include $sef_custom_config_file; } // generate string for parameter modification if ($app->isAdmin()) { // only need to modify custom params in back-end $this->defaultParamList = '<?php // custom.sef.php : custom.configuration file for sh404SEF // 3.5.1.1299 - anything-digital.com/sh404sef/seo-analytics-and-security-for-joomla.html // DO NOT REMOVE THIS LINE : if (!defined(\'_JEXEC\')) die(\'Direct Access to this location is not allowed.\'); // DO NOT REMOVE THIS LINE' . "\n"; foreach ($shDefaultParams as $key => $value) { $this->defaultParamList .= "\n"; if (!empty($shDefaultParamsHelp[$key])) { $this->defaultParamList .= $shDefaultParamsHelp[$key] . "\n"; } // echo help text, if any $this->defaultParamList .= '$shDefaultParams[\'' . $key . '\'] = ' . (is_string($value) ? "'{$value}'" : $value) . ";\n"; } } // read user set values for these params and create constants if (!empty($shDefaultParams)) { foreach ($shDefaultParams as $key => $value) { define($key, $value); } } unset($shDefaultParams); unset($shDefaultParamsHelp); } // compatiblity variables, for sef_ext files usage from OpenSef/SEf Advance V 1.2.4.p $this->encode_page_suffix = ''; // if using an opensef sef_ext, we don't let them manage suffix $this->encode_space_char = $this->replacement; $this->encode_lowercase = $this->LowerCase; $this->encode_strip_chars = $this->stripthese; $this->content_page_name = empty($this->pageTexts[Sh404sefFactory::getPageInfo()->shMosConfig_locale]) ? 'Page' : str_replace('%s', '', $this->pageTexts[Sh404sefFactory::getPageInfo()->shMosConfig_locale]); // V 1.2.4.r $this->content_page_format = '%s' . $this->replacement . '%d'; // V 1.2.4.r $shTemp = $this->shGetReplacements(); foreach ($shTemp as $dest => $source) { $this->spec_chars_d .= $dest . ','; $this->spec_chars .= $source . ','; } JString::rtrim($this->spec_chars_d, ','); JString::rtrim($this->spec_chars, ','); }
function create($string, &$vars, &$shAppendString, $shLanguage, $shSaveString = '', &$originalUri) { $sefConfig =& shRouter::shGetConfig(); // get DB $database =& JFactory::getDBO(); _log('Calling sef404 create function with ' . $string); if ($sefConfig->shInsertGlobalItemidIfNone && !empty($GLOBALS['Itemid'])) { // V 1.2.4.t $shCurrentItemid = $GLOBALS['Itemid']; } else { $shCurrentItemid = null; } $index = str_replace($GLOBALS['shConfigLiveSite'], '', $_SERVER['PHP_SELF']); $base = dirname($index); $base .= $base == '/' ? '' : '/'; extract($vars); if (isset($title)) { // V 1.2.4.r : protect against components using 'title' as GET vars (com_jim for instance) $sh404SEF_title = $title; } // means that $sh404SEF_title has to be used in plugins or extensions $title = array(); // V 1.2.4.r // Plug-in system. $shDoNotOverride = in_array(str_replace('com_', '', $option), $sefConfig->shDoNotOverrideOwnSef); // look first in component owndir for a joomla sef router.php file if (shFileExists(JPATH_ROOT . DS . 'components' . DS . $option . DS . 'router.php') && ($shDoNotOverride || !$shDoNotOverride && !shFileExists(sh404SEF_ABS_PATH . 'components/com_sh404sef/sef_ext/' . $option . '.php') && !shFileExists(JPATH_ROOT . DS . 'components/' . $option . '/sef_ext/' . $option . '.php'))) { // but we don't have a plugin // Load the plug-in file. _log('Loading component own router.php file'); $functionName = ucfirst(str_replace('com_', '', $option)) . 'BuildRoute'; if (!function_exists($functionName)) { include JPATH_ROOT . DS . 'components' . DS . $option . DS . 'router.php'; } $originalVars = empty($originalUri) ? $vars : $originalUri->getQuery($asArray = true); $title = $functionName($originalVars); //$title = shRemoveSlugs( $title, $removeWhat = 'removeId'); global $mainframe; $router =& $mainframe->getRouter(); $title = $router->_encodeSegments($title); // manage GET var lists ourselves, as Joomla router.php does not do it if (!empty($vars)) { // there are some unused GET vars, we must transfer them to our mechanism, so // that they are eventually appended to the sef url foreach ($vars as $k => $v) { switch ($k) { case 'option': case 'Itemid': shRemoveFromGETVarsList($k); break; default: // if variable has not been used in sef url, add it to list of variables to be // appended to the url as query string elements if (array_key_exists($k, $originalVars)) { shAddToGETVarsList($k, $v); } else { shRemoveFromGETVarsList($k); } break; } } } // special case for search component, as router.php encode the search word in the url // wa can't do that, as we are storing each url in the db if (isset($originalVars['option']) && $originalVars['option'] == 'com_search' && !empty($vars['searchword'])) { // router.php has encoded that in the url, we need to undo $title = array(); $originalVars['searchword'] = $vars['searchword']; shAddToGETVarsList('searchword', $vars['searchword']); if (!empty($vars['view'])) { $vars['view'] = $vars['view']; shAddToGETVarsList('view', $vars['view']); } } // handle menu items, having only a single Itemid in the url // (router.php will return an empty array in that case, even if we have restored // the full non-sef url, as we already did) /* * Build the application route */ $tmp = ''; if (empty($title) && isset($vars['Itemid']) && !empty($vars['Itemid'])) { $menu =& shRouter::shGetMenu(); $item = $menu->getItem($vars['Itemid']); if (is_object($item) && $vars['option'] == $item->component) { $title[] = $item->route; } } if (empty($title)) { //$title[] = 'comp'; $title[] = substr($vars['option'], 4); } // add user defined prefix $prefix = shGetComponentPrefix($option); if (!empty($prefix)) { array_unshift($title, $prefix); } // now process the resulting title string $string = shFinalizePlugin($string, $title, $shAppendString, '', isset($limit) ? @$limit : null, isset($limitstart) ? @$limitstart : null, isset($shLangName) ? @$shLangName : null, isset($showall) ? @$showall : null); } else { // look then in component own /sef_ext/ dir for a com_component_name.php plugin file if (shFileExists(sh404SEF_ABS_PATH . 'components/' . $option . '/sef_ext/' . $option . '.php')) { // Load the plug-in file. _log('Loading component own sh404SEF plugin'); include sh404SEF_ABS_PATH . 'components/' . $option . '/sef_ext/' . $option . '.php'; } else { if (shFileExists(sh404SEF_ABS_PATH . 'components/com_sh404sef/sef_ext/' . $option . '.php')) { _log('Loading built-in plugin'); include sh404SEF_ABS_PATH . 'components/com_sh404sef/sef_ext/' . $option . '.php'; } else { // no plugin found at all, use Joomla 1.0.x sef _log('Falling back to sefGetLocation'); if (empty($sefConfig->defaultComponentStringList[str_replace('com_', '', $option)])) { $title[] = getMenuTitle($option, isset($task) ? @$task : null, null, null, $shLanguage); } else { $title[] = $sefConfig->defaultComponentStringList[str_replace('com_', '', $option)]; } if ($title[0] != '/') { $title[] = '/'; } // V 1.2.4.q getMenuTitle can now return '/' if (count($title) > 0) { // V 1.2.4.q use $shLanguage insted of $lang (lang name rather than lang code) $string = sef_404::sefGetLocation($string, $title, isset($task) ? @$task : null, isset($limit) ? @$limit : null, isset($limitstart) ? @$limitstart : null, isset($shLanguage) ? @$shLanguage : null); } } } } return $string; }
/** * Loads a language file * * This method will not note the successful loading of a file - use load() instead * * @param string The name of the file * @param string The name of the extension * @return boolean True if new strings have been added to the language * @see Jlanguage16::load() * @since 1.5 */ protected function _load($filename, $extension = 'unknown', $overwrite = true) { $this->_counter++; $result = false; $strings = false; if (shFileExists($filename)) { $strings = $this->_parse($filename); } if ($strings) { if (is_array($strings)) { $this->_strings = array_merge($this->_strings, $strings); } if (is_array($strings) && count($strings)) { $this->_strings = array_merge($this->_strings, $this->_override); $result = true; } } // Record the result of loading the extension's file. if (!isset($this->_paths[$extension])) { $this->_paths[$extension] = array(); } $this->_paths[$extension][$filename] = $result; return $result; }
function SEFConfig() { global $sef_config_file, $mainframe; $sef_config_file = sh404SEF_ADMIN_ABS_PATH . 'config/config.sef.php'; if ($mainframe->isAdmin()) { $this->shCheckFilesAccess(); } if (shFileExists($sef_config_file)) { include $sef_config_file; } // shumisha : 2007-04-01 version was missing ! //if (isset($version)) $this->version = $version; // V 1.2.4.r : removed as would prevent update system to work : version was not updated // shumisha : 2007-04-01 new parameters ! if (isset($shUseURLCache)) { $this->shUseURLCache = $shUseURLCache; } // shumisha : 2007-04-01 new parameters ! if (isset($shMaxURLInCache)) { $this->shMaxURLInCache = $shMaxURLInCache; } // shumisha : 2007-04-01 new parameters ! if (isset($shTranslateURL)) { $this->shTranslateURL = $shTranslateURL; } //V 1.2.4.m if (isset($shInsertLanguageCode)) { $this->shInsertLanguageCode = $shInsertLanguageCode; } if (isset($notTranslateURLList)) { $this->notTranslateURLList = $notTranslateURLList; } if (isset($notInsertIsoCodeList)) { $this->notInsertIsoCodeList = $notInsertIsoCodeList; } // shumisha : 2007-04-03 new parameters ! if (isset($shInsertGlobalItemidIfNone)) { $this->shInsertGlobalItemidIfNone = $shInsertGlobalItemidIfNone; } if (isset($shInsertTitleIfNoItemid)) { $this->shInsertTitleIfNoItemid = $shInsertTitleIfNoItemid; } if (isset($shAlwaysInsertMenuTitle)) { $this->shAlwaysInsertMenuTitle = $shAlwaysInsertMenuTitle; } if (isset($shAlwaysInsertItemid)) { $this->shAlwaysInsertItemid = $shAlwaysInsertItemid; } if (isset($shDefaultMenuItemName)) { $this->shDefaultMenuItemName = $shDefaultMenuItemName; } if (isset($shAppendRemainingGETVars)) { $this->shAppendRemainingGETVars = $shAppendRemainingGETVars; } if (isset($shVmInsertShopName)) { $this->shVmInsertShopName = $shVmInsertShopName; } if (isset($shInsertProductId)) { $this->shInsertProductId = $shInsertProductId; } if (isset($shVmUseProductSKU)) { $this->shVmUseProductSKU = $shVmUseProductSKU; } if (isset($shVmInsertManufacturerName)) { $this->shVmInsertManufacturerName = $shVmInsertManufacturerName; } if (isset($shInsertManufacturerId)) { $this->shInsertManufacturerId = $shInsertManufacturerId; } if (isset($shVMInsertCategories)) { $this->shVMInsertCategories = $shVMInsertCategories; } if (isset($shVmAdditionalText)) { $this->shVmAdditionalText = $shVmAdditionalText; } if (isset($shVmInsertFlypage)) { $this->shVmInsertFlypage = $shVmInsertFlypage; } if (isset($shInsertCategoryId)) { $this->shInsertCategoryId = $shInsertCategoryId; } if (isset($shReplacements)) { $this->shReplacements = $shReplacements; } if (isset($shInsertNumericalId)) { $this->shInsertNumericalId = $shInsertNumericalId; } if (isset($shInsertNumericalIdCatList)) { $this->shInsertNumericalIdCatList = $shInsertNumericalIdCatList; } if (isset($shRedirectNonSefToSef)) { $this->shRedirectNonSefToSef = $shRedirectNonSefToSef; } if (isset($shRedirectJoomlaSefToSef)) { $this->shRedirectJoomlaSefToSef = $shRedirectJoomlaSefToSef; } if (isset($shConfig_live_secure_site)) { $this->shConfig_live_secure_site = rtrim($shConfig_live_secure_site, '/'); } if (isset($shActivateIJoomlaMagInContent)) { $this->shActivateIJoomlaMagInContent = $shActivateIJoomlaMagInContent; } if (isset($shInsertIJoomlaMagIssueId)) { $this->shInsertIJoomlaMagIssueId = $shInsertIJoomlaMagIssueId; } if (isset($shInsertIJoomlaMagName)) { $this->shInsertIJoomlaMagName = $shInsertIJoomlaMagName; } if (isset($shInsertIJoomlaMagMagazineId)) { $this->shInsertIJoomlaMagMagazineId = $shInsertIJoomlaMagMagazineId; } if (isset($shInsertIJoomlaMagArticleId)) { $this->shInsertIJoomlaMagArticleId = $shInsertIJoomlaMagArticleId; } if (isset($shInsertCBName)) { $this->shInsertCBName = $shInsertCBName; } if (isset($shCBInsertUserName)) { $this->shCBInsertUserName = $shCBInsertUserName; } if (isset($shCBInsertUserId)) { $this->shCBInsertUserId = $shCBInsertUserId; } if (isset($shCBUseUserPseudo)) { $this->shCBUseUserPseudo = $shCBUseUserPseudo; } if (isset($shInsertMyBlogName)) { $this->shInsertMyBlogName = $shInsertMyBlogName; } if (isset($shMyBlogInsertPostId)) { $this->shMyBlogInsertPostId = $shMyBlogInsertPostId; } if (isset($shMyBlogInsertTagId)) { $this->shMyBlogInsertTagId = $shMyBlogInsertTagId; } if (isset($shMyBlogInsertBloggerId)) { $this->shMyBlogInsertBloggerId = $shMyBlogInsertBloggerId; } if (isset($shInsertDocmanName)) { $this->shInsertDocmanName = $shInsertDocmanName; } if (isset($shDocmanInsertDocId)) { $this->shDocmanInsertDocId = $shDocmanInsertDocId; } if (isset($shDocmanInsertDocName)) { $this->shDocmanInsertDocName = $shDocmanInsertDocName; } if (isset($shLog404Errors)) { $this->shLog404Errors = $shLog404Errors; } if (isset($shLMDefaultItemid)) { $this->shLMDefaultItemid = $shLMDefaultItemid; } if (isset($shInsertFireboardName)) { $this->shInsertFireboardName = $shInsertFireboardName; } if (isset($shFbInsertCategoryName)) { $this->shFbInsertCategoryName = $shFbInsertCategoryName; } if (isset($shFbInsertCategoryId)) { $this->shFbInsertCategoryId = $shFbInsertCategoryId; } if (isset($shFbInsertMessageSubject)) { $this->shFbInsertMessageSubject = $shFbInsertMessageSubject; } if (isset($shFbInsertMessageId)) { $this->shFbInsertMessageId = $shFbInsertMessageId; } if (isset($shDoNotOverrideOwnSef)) { // V 1.2.4.m $this->shDoNotOverrideOwnSef = $shDoNotOverrideOwnSef; } if (isset($shEncodeUrl)) { // V 1.2.4.m $this->shEncodeUrl = $shEncodeUrl; } if (isset($guessItemidOnHomepage)) { // V 1.2.4.q $this->guessItemidOnHomepage = $guessItemidOnHomepage; } if (isset($shForceNonSefIfHttps)) { // V 1.2.4.q $this->shForceNonSefIfHttps = $shForceNonSefIfHttps; } if (isset($shRewriteMode)) { // V 1.2.4.s $this->shRewriteMode = $shRewriteMode; } if (isset($shRewriteStrings)) { // V 1.2.4.s $this->shRewriteStrings = $shRewriteStrings; } if (isset($shRecordDuplicates)) { // V 1.2.4.s $this->shRecordDuplicates = $shRecordDuplicates; } if (isset($shMetaManagementActivated)) { // V 1.2.4.s $this->shMetaManagementActivated = $shMetaManagementActivated; } if (isset($shRemoveGeneratorTag)) { // V 1.2.4.s $this->shRemoveGeneratorTag = $shRemoveGeneratorTag; } if (isset($shPutH1Tags)) { // V 1.2.4.s $this->shPutH1Tags = $shPutH1Tags; } if (isset($shInsertContentTableName)) { // V 1.2.4.s $this->shInsertContentTableName = $shInsertContentTableName; } if (isset($shContentTableName)) { // V 1.2.4.s $this->shContentTableName = $shContentTableName; } if (isset($shAutoRedirectWww)) { // V 1.2.4.s $this->shAutoRedirectWww = $shAutoRedirectWww; } if (isset($shVmInsertProductName)) { // V 1.2.4.s $this->shVmInsertProductName = $shVmInsertProductName; } if (isset($shDMInsertCategories)) { // V 1.2.4.t $this->shDMInsertCategories = $shDMInsertCategories; } if (isset($shDMInsertCategoryId)) { // V 1.2.4.t $this->shDMInsertCategoryId = $shDMInsertCategoryId; } if (isset($shForcedHomePage)) { // V 1.2.4.t $this->shForcedHomePage = $shForcedHomePage; } if (isset($shInsertContentBlogName)) { // V 1.2.4.t $this->shInsertContentBlogName = $shInsertContentBlogName; } if (isset($shContentBlogName)) { // V 1.2.4.t $this->shContentBlogName = $shContentBlogName; } if (isset($shInsertMTreeName)) { // V 1.2.4.t $this->shInsertMTreeName = $shInsertMTreeName; } if (isset($shMTreeInsertListingName)) { // V 1.2.4.t $this->shMTreeInsertListingName = $shMTreeInsertListingName; } if (isset($shMTreeInsertListingId)) { // V 1.2.4.t $this->shMTreeInsertListingId = $shMTreeInsertListingId; } if (isset($shMTreePrependListingId)) { // V 1.2.4.t $this->shMTreePrependListingId = $shMTreePrependListingId; } if (isset($shMTreeInsertCategories)) { // V 1.2.4.t $this->shMTreeInsertCategories = $shMTreeInsertCategories; } if (isset($shMTreeInsertCategoryId)) { // V 1.2.4.t $this->shMTreeInsertCategoryId = $shMTreeInsertCategoryId; } if (isset($shMTreeInsertUserName)) { // V 1.2.4.t $this->shMTreeInsertUserName = $shMTreeInsertUserName; } if (isset($shMTreeInsertUserId)) { // V 1.2.4.t $this->shMTreeInsertUserId = $shMTreeInsertUserId; } if (isset($shInsertNewsPName)) { // V 1.2.4.t $this->shInsertNewsPName = $shInsertNewsPName; } if (isset($shNewsPInsertCatId)) { // V 1.2.4.t $this->shNewsPInsertCatId = $shNewsPInsertCatId; } if (isset($shNewsPInsertSecId)) { // V 1.2.4.t $this->shNewsPInsertSecId = $shNewsPInsertSecId; } if (isset($shInsertRemoName)) { // V 1.2.4.t $this->shInsertRemoName = $shInsertRemoName; } if (isset($shRemoInsertDocId)) { // V 1.2.4.t $this->shRemoInsertDocId = $shRemoInsertDocId; } if (isset($shRemoInsertDocName)) { // V 1.2.4.t $this->shRemoInsertDocName = $shRemoInsertDocName; } if (isset($shRemoInsertCategories)) { // V 1.2.4.t $this->shRemoInsertCategories = $shRemoInsertCategories; } if (isset($shRemoInsertCategoryId)) { // V 1.2.4.t $this->shRemoInsertCategoryId = $shRemoInsertCategoryId; } if (isset($shCBShortUserURL)) { // V 1.2.4.t $this->shCBShortUserURL = $shCBShortUserURL; } if (isset($shKeepStandardURLOnUpgrade)) { // V 1.2.4.t $this->shKeepStandardURLOnUpgrade = $shKeepStandardURLOnUpgrade; } if (isset($shKeepCustomURLOnUpgrade)) { // V 1.2.4.t $this->shKeepCustomURLOnUpgrade = $shKeepCustomURLOnUpgrade; } if (isset($shKeepMetaDataOnUpgrade)) { // V 1.2.4.t $this->shKeepMetaDataOnUpgrade = $shKeepMetaDataOnUpgrade; } if (isset($shKeepModulesSettingsOnUpgrade)) { // V 1.2.4.t $this->shKeepModulesSettingsOnUpgrade = $shKeepModulesSettingsOnUpgrade; } if (isset($shMultipagesTitle)) { // V 1.2.4.t $this->shMultipagesTitle = $shMultipagesTitle; } // shumisha end of new parameters if (isset($Enabled)) { $this->Enabled = $Enabled; } if (isset($replacement)) { $this->replacement = $replacement; } if (isset($pagerep)) { $this->pagerep = $pagerep; } if (isset($stripthese)) { $this->stripthese = $stripthese; } if (isset($friendlytrim)) { $this->friendlytrim = $friendlytrim; } if (isset($suffix)) { $this->suffix = $suffix; } if (isset($addFile)) { $this->addFile = $addFile; } if (isset($LowerCase)) { $this->LowerCase = $LowerCase; } if (isset($ShowSection)) { $this->ShowSection = $ShowSection; } if (isset($HideCat)) { $this->HideCat = $HideCat; } if (isset($replacement)) { $this->UseAlias = $UseAlias; } if (isset($UseAlias)) { $this->page404 = $page404; } if (isset($predefined)) { $this->predefined = $predefined; } if (isset($skip)) { $this->skip = $skip; } if (isset($nocache)) { $this->nocache = $nocache; } if (isset($ShowCat)) { $this->ShowCat = $ShowCat; } // V x if (isset($shKeepConfigOnUpgrade)) { // V 1.2.4.x $this->shKeepConfigOnUpgrade = $shKeepConfigOnUpgrade; } if (isset($shSecEnableSecurity)) { // V 1.2.4.x $this->shSecEnableSecurity = $shSecEnableSecurity; } if (isset($shSecLogAttacks)) { // V 1.2.4.x $this->shSecLogAttacks = $shSecLogAttacks; } if (isset($shSecOnlyNumVars)) { // V 1.2.4.x $this->shSecOnlyNumVars = $shSecOnlyNumVars; } if (isset($shSecAlphaNumVars)) { // V 1.2.4.x $this->shSecAlphaNumVars = $shSecAlphaNumVars; } if (isset($shSecNoProtocolVars)) { // V 1.2.4.x $this->shSecNoProtocolVars = $shSecNoProtocolVars; } $this->ipWhiteList = shReadFile(sh404SEF_ADMIN_ABS_PATH . 'security/sh404SEF_IP_white_list.txt'); $this->ipBlackList = shReadFile(sh404SEF_ADMIN_ABS_PATH . 'security/sh404SEF_IP_black_list.txt'); $this->uAgentWhiteList = shReadFile(sh404SEF_ADMIN_ABS_PATH . 'security/sh404SEF_uAgent_white_list.txt'); $this->uAgentBlackList = shReadFile(sh404SEF_ADMIN_ABS_PATH . 'security/sh404SEF_uAgent_black_list.txt'); if (isset($shSecCheckHoneyPot)) { // V 1.2.4.x $this->shSecCheckHoneyPot = $shSecCheckHoneyPot; } if (isset($shSecDebugHoneyPot)) { // V 1.2.4.x $this->shSecDebugHoneyPot = $shSecDebugHoneyPot; } if (isset($shSecHoneyPotKey)) { // V 1.2.4.x $this->shSecHoneyPotKey = $shSecHoneyPotKey; } if (isset($shSecEntranceText)) { // V 1.2.4.x $this->shSecEntranceText = $shSecEntranceText; } if (isset($shSecSmellyPotText)) { // V 1.2.4.x $this->shSecSmellyPotText = $shSecSmellyPotText; } if (isset($monthsToKeepLogs)) { // V 1.2.4.x $this->monthsToKeepLogs = $monthsToKeepLogs; } if (isset($shSecActivateAntiFlood)) { // V 1.2.4.x $this->shSecActivateAntiFlood = $shSecActivateAntiFlood; } if (isset($shSecAntiFloodOnlyOnPOST)) { // V 1.2.4.x $this->shSecAntiFloodOnlyOnPOST = $shSecAntiFloodOnlyOnPOST; } if (isset($shSecAntiFloodPeriod)) { // V 1.2.4.x $this->shSecAntiFloodPeriod = $shSecAntiFloodPeriod; } if (isset($shSecAntiFloodCount)) { // V 1.2.4.x $this->shSecAntiFloodCount = $shSecAntiFloodCount; } // if (isset($insertSectionInBlogTableLinks)) // V 1.2.4.x // $this->insertSectionInBlogTableLinks = $insertSectionInBlogTableLinks; $this->shLangTranslateList = $this->shInitLanguageList(isset($shLangTranslateList) ? $shLangTranslateList : null, 0, 0); $this->shLangInsertCodeList = $this->shInitLanguageList(isset($shLangInsertCodeList) ? $shLangInsertCodeList : null, 0, 0); if (isset($defaultComponentStringList)) { // V 1.2.4.x $this->defaultComponentStringList = $defaultComponentStringList; } $this->pageTexts = $this->shInitLanguageList(isset($pageTexts) ? $pageTexts : null, isset($pagetext) ? $pagetext : 'Page-%s', isset($pagetext) ? $pagetext : 'Page-%s'); // use value from prev versions if any if (isset($shAdminInterfaceType)) { // V 1.2.4.x $this->shAdminInterfaceType = $shAdminInterfaceType; } // compatibility with version earlier than V x if (isset($shShopName)) { // V 1.2.4.x $this->defaultComponentStringList['virtuemart'] = $shShopName; } if (isset($shIJoomlaMagName)) { // V 1.2.4.x $this->defaultComponentStringList['magazine'] = $shIJoomlaMagName; } if (isset($shCBName)) { // V 1.2.4.x $this->defaultComponentStringList['comprofiler'] = $shCBName; } if (isset($shFireboardName)) { // V 1.2.4.x $this->defaultComponentStringList['fireboard'] = $shFireboardName; } if (isset($shMyBlogName)) { // V 1.2.4.x $this->defaultComponentStringList['myblog'] = $shMyBlogName; } if (isset($shDocmanName)) { // V 1.2.4.x $this->defaultComponentStringList['docman'] = $shDocmanName; } if (isset($shMTreeName)) { // V 1.2.4.x $this->defaultComponentStringList['mtree'] = $shMTreeName; } if (isset($shNewsPName)) { // V 1.2.4.x $this->defaultComponentStringList['news_portal'] = $shNewsPName; } if (isset($shRemoName)) { // V 1.2.4.x $this->defaultComponentStringList['remository'] = $shRemoName; } // end of compatibility code // V 1.3 RC if (isset($shInsertNoFollowPDFPrint)) { $this->shInsertNoFollowPDFPrint = $shInsertNoFollowPDFPrint; } if (isset($shInsertReadMorePageTitle)) { $this->shInsertReadMorePageTitle = $shInsertReadMorePageTitle; } if (isset($shMultipleH1ToH2)) { $this->shMultipleH1ToH2 = $shMultipleH1ToH2; } // V 1.3.1 RC if (isset($shVmUsingItemsPerPage)) { $this->shVmUsingItemsPerPage = $shVmUsingItemsPerPage; } if (isset($shSecCheckPOSTData)) { $this->shSecCheckPOSTData = $shSecCheckPOSTData; } if (isset($shSecCurMonth)) { $this->shSecCurMonth = $shSecCurMonth; } if (isset($shSecLastUpdated)) { $this->shSecLastUpdated = $shSecLastUpdated; } if (isset($shSecTotalAttacks)) { $this->shSecTotalAttacks = $shSecTotalAttacks; } if (isset($shSecTotalConfigVars)) { $this->shSecTotalConfigVars = $shSecTotalConfigVars; } if (isset($shSecTotalBase64)) { $this->shSecTotalBase64 = $shSecTotalBase64; } if (isset($shSecTotalScripts)) { $this->shSecTotalScripts = $shSecTotalScripts; } if (isset($shSecTotalStandardVars)) { $this->shSecTotalStandardVars = $shSecTotalStandardVars; } if (isset($shSecTotalImgTxtCmd)) { $this->shSecTotalImgTxtCmd = $shSecTotalImgTxtCmd; } if (isset($shSecTotalIPDenied)) { $this->shSecTotalIPDenied = $shSecTotalIPDenied; } if (isset($shSecTotalUserAgentDenied)) { $this->shSecTotalUserAgentDenied = $shSecTotalUserAgentDenied; } if (isset($shSecTotalFlooding)) { $this->shSecTotalFlooding = $shSecTotalFlooding; } if (isset($shSecTotalPHP)) { $this->shSecTotalPHP = $shSecTotalPHP; } if (isset($shSecTotalPHPUserClicked)) { $this->shSecTotalPHPUserClicked = $shSecTotalPHPUserClicked; } if (isset($shInsertSMFName)) { $this->shInsertSMFName = $shInsertSMFName; } if (isset($shSMFItemsPerPage)) { $this->shSMFItemsPerPage = $shSMFItemsPerPage; } if (isset($shInsertSMFBoardId)) { $this->shInsertSMFBoardId = $shInsertSMFBoardId; } if (isset($shInsertSMFTopicId)) { $this->shInsertSMFTopicId = $shInsertSMFTopicId; } if (isset($shinsertSMFUserName)) { $this->shinsertSMFUserName = $shinsertSMFUserName; } if (isset($shInsertSMFUserId)) { $this->shInsertSMFUserId = $shInsertSMFUserId; } if (isset($prependToPageTitle)) { $this->prependToPageTitle = $prependToPageTitle; } if (isset($appendToPageTitle)) { $this->appendToPageTitle = $appendToPageTitle; } if (isset($debugToLogFile)) { $this->debugToLogFile = $debugToLogFile; } if (isset($debugStartedAt)) { $this->debugStartedAt = $debugStartedAt; } if (isset($debugDuration)) { $this->debugDuration = $debugDuration; } // V 1.3.1 if (isset($shInsertOutboundLinksImage)) { $this->shInsertOutboundLinksImage = $shInsertOutboundLinksImage; } if (isset($shImageForOutboundLinks)) { $this->shImageForOutboundLinks = $shImageForOutboundLinks; } // V 1.0.12 if (isset($useCatAlias)) { $this->useCatAlias = $useCatAlias; } if (isset($useSecAlias)) { $this->useSecAlias = $useSecAlias; } if (isset($useMenuAlias)) { $this->useMenuAlias = $useMenuAlias; } if (isset($shEnableTableLessOutput)) { $this->shEnableTableLessOutput = $shEnableTableLessOutput; } // define default values for seldom used params if (!defined('SH404SEF_COMPAT_SHOW_SECTION_IN_CAT_LINKS')) { // SECTION : GLOBAL PARAMETERS for sh404sef --------------------------------------------------------------------- $shDefaultParamsHelp['SH404SEF_COMPAT_SHOW_SECTION_IN_CAT_LINKS'] = '// compatibility with past version. Set to 0 so that // section is not added in (table) category links. This was a bug in past versions // as sh404SEF would not insert section, even if ShowSection param was set to Yes'; $shDefaultParams['SH404SEF_COMPAT_SHOW_SECTION_IN_CAT_LINKS'] = 1; $shDefaultParamsHelp['sh404SEF_USE_NON_STANDARD_PORT'] = '// set to 1 if using other than port 80 for http'; $shDefaultParams['sh404SEF_USE_NON_STANDARD_PORT'] = 0; $shDefaultParamsHelp['sh404SEF_PAGE_NOT_FOUND_FORCED_ITEMID'] = '// if not 0, will be used instead of Homepage itemid to display 404 error page'; $shDefaultParams['sh404SEF_PAGE_NOT_FOUND_FORCED_ITEMID'] = 0; $shDefaultParamsHelp['sh404SEF_PROTECT_AGAINST_DOCUMENT_TYPE_ERROR'] = '// if not 0, urls for pdf documents and rss feeds will be only partially turned into sef urls. //The query string &format=pdf or &format=feed will be still be appended. // This will protect against malfunctions when using some plugins which makes a call // to JFactory::getDocument() from a onAfterInitiliaze handler // At this time, SEF urls are not decoded and thus the document type is set to html instead of pdf or feed // resulting in the home page being displayed instead of the correct document'; $shDefaultParams['sh404SEF_PROTECT_AGAINST_DOCUMENT_TYPE_ERROR'] = 0; $shDefaultParamsHelp['sh404SEF_REDIRECT_IF_INDEX_PHP'] = '// if not 0, sh404SEF will do a 301 redirect from http://yoursite.com/index.php // or http://yoursite.com/index.php?lang=xx to http://yoursite.com/ // this may not work on some web servers, which transform yoursite.com into // yoursite.com/index.php, thus creating and endless loop. If your server does // that, set this param to 0'; $shDefaultParams['sh404SEF_REDIRECT_IF_INDEX_PHP'] = 1; $shDefaultParamsHelp['sh404SEF_NON_SEF_IF_SUPERADMIN'] = '// if superadmin logged in, force non-sef, for testing and setting up purpose'; $shDefaultParams['sh404SEF_NON_SEF_IF_SUPERADMIN'] = 0; $shDefaultParamsHelp['sh404SEF_DE_ACTIVATE_LANG_AUTO_REDIRECT'] = '// set to 1 to prevent 303 auto redirect based on user language // use with care, will prevent language switch to work for users without javascript'; $shDefaultParams['sh404SEF_DE_ACTIVATE_LANG_AUTO_REDIRECT'] = 1; $shDefaultParamsHelp['sh404SEF_CHECK_COMP_IS_INSTALLED'] = '// if 1, SEF URLs will only be built for installed components.'; $shDefaultParams['sh404SEF_CHECK_COMP_IS_INSTALLED'] = 1; $shDefaultParamsHelp['sh404SEF_REDIRECT_OUTBOUND_LINKS'] = '// if 1, all outbound links on page will be reached through a redirect // to avoid page rank leakage'; $shDefaultParams['sh404SEF_REDIRECT_OUTBOUND_LINKS'] = 0; $shDefaultParamsHelp['sh404SEF_PDF_DIR'] = '// if not empty, urls to pdf produced by Joomla will be prefixed with this // path. Can be : \'pdf\' or \'pdf/something\' (ie: don\'t put leading or trailing slashes) // Allows you to store some pre-built PDF in a directory called /pdf, with the same name // as a page. Such a pdf will be served directly by the web server instead of being built on // the fly by Joomla. This will save CPU and RAM. (only works this way if using htaccess'; $shDefaultParams['sh404SEF_PDF_DIR'] = 'pdf'; $shDefaultParamsHelp['SH404SEF_URL_CACHE_TTL'] = '// time to live for url cache in hours : default = 168h = 1 week // Set to 0 to keep cache forever'; $shDefaultParams['SH404SEF_URL_CACHE_TTL'] = 168; $shDefaultParamsHelp['SH404SEF_URL_CACHE_WRITES_TO_CHECK_TTL'] = '// number of cache write before checking cache TTL.'; $shDefaultParams['SH404SEF_URL_CACHE_WRITES_TO_CHECK_TTL'] = 1000; $shDefaultParamsHelp['sh404SEF_SEC_MAIL_ATTACKS_TO_ADMIN'] = '// if set to 1, an email will be send to site admin when an attack is logged // if the site is live, you could be drowning in email rapidly !!!'; $shDefaultParams['sh404SEF_SEC_MAIL_ATTACKS_TO_ADMIN'] = 0; $shDefaultParams['sh404SEF_SEC_EMAIL_TO_ADMIN_SUBJECT'] = 'Your site %sh404SEF_404_SITE_NAME% was subject to an attack'; $shDefaultParams['sh404SEF_SEC_EMAIL_TO_ADMIN_BODY'] = 'Hello !' . "\n\n" . 'This is sh404SEF security component, running at your site (%sh404SEF_404_SITE_URL%).' . "\n\n" . 'I have just blocked an attack on your site. Please check details below : ' . "\n" . '------------------------------------------------------------------------' . "\n" . '%sh404SEF_404_ATTACK_DETAILS%' . "\n" . '------------------------------------------------------------------------' . "\n\n" . 'Thanks for using sh404SEF!' . "\n\n"; $shDefaultParamsHelp['SH404SEF_PAGES_TO_CLEAN_LOGS'] = '// number of pages between checks to remove old log files // if 1, we check at every page request'; $shDefaultParams['SH404SEF_PAGES_TO_CLEAN_LOGS'] = 10000; $shDefaultParamsHelp['SH_VM_ALLOW_PRODUCTS_IN_MULTIPLE_CATS'] = '// SECTION : Virtuemart plugin parameters ---------------------------------------------------------------------------- // set to 1 for products to have requested category name included in url // useful if some products are in more than one category. By default (param set to 0), // only one category will be used. If set to 1, all categories can be used'; $shDefaultParams['SH_VM_ALLOW_PRODUCTS_IN_MULTIPLE_CATS'] = 0; $shDefaultParamsHelp['SH404SEF_DP_INSERT_ALL_CATEGORIES'] = '// SECTION : Deeppockets plugin parameters ----------------------------------------------------------------- // set to 0 to have no cat inserted /234-ContentTitle/ // set to 1 to have only last cat added /123-CatTitle/234-ContentTitle/ // set to 2 to have all nested cats inserted /456-Cat1Title/123-Cat2Title/234-ContentTitle/'; $shDefaultParams['SH404SEF_DP_INSERT_ALL_CATEGORIES'] = 2; $shDefaultParamsHelp['SH404SEF_DP_INSERT_CAT_ID'] = '// if non-zero, id of each cat will be inserted in the url /123-CatTitle/'; $shDefaultParams['SH404SEF_DP_INSERT_CAT_ID'] = 0; $shDefaultParamsHelp['SH404SEF_DP_INSERT_CONTENT_ID'] = '// if non-zero, id of each content element will be inserted in url /234-ContentTitle/'; $shDefaultParams['SH404SEF_DP_INSERT_CONTENT_ID'] = 0; $shDefaultParamsHelp['SH404SEF_DP_USE_JOOMLA_URL'] = '// if non-zero, DP links to content element will be identical to those // generated for Joomla regular content - usefull if this content can also be // accessed outside of DP, to avoid duplicate content penalties'; $shDefaultParams['SH404SEF_DP_USE_JOOMLA_URL'] = 0; $shDefaultParamsHelp['sh404SEF_SMF_PARAMS_SIMPLE_URLS'] = '// SECTION : com_smf plugin parameters -------------------------------------------------------------------------- // set to 1 use simple URLs, without all details'; $shDefaultParams['sh404SEF_SMF_PARAMS_SIMPLE_URLS'] = 0; $shDefaultParamsHelp['sh404SEF_SMF_PARAMS_TABLE_PREFIX'] = '// prefix used in the DB for the SMF tables'; $shDefaultParams['sh404SEF_SMF_PARAMS_TABLE_PREFIX'] = 'smf_'; $shDefaultParamsHelp['sh404SEF_SMF_PARAMS_ENABLE_STICKY'] = '// not used'; $shDefaultParams['sh404SEF_SMF_PARAMS_ENABLE_STICKY'] = 0; $shDefaultParamsHelp['sh404SEF_SOBI2_PARAMS_ALWAYS_INCLUDE_CATS'] = '// SECTION : SOBI2 plugin parameters ---------------------------------------------------------------------------- // set to 1 to always include categories in SOBI2 entries // details pages url'; $shDefaultParams['sh404SEF_SOBI2_PARAMS_ALWAYS_INCLUDE_CATS'] = 0; $shDefaultParamsHelp['sh404SEF_SOBI2_PARAMS_INCLUDE_ENTRY_ID'] = '// set to 1 so that entry id is prepended to url'; $shDefaultParams['sh404SEF_SOBI2_PARAMS_INCLUDE_ENTRY_ID'] = 0; $shDefaultParamsHelp['sh404SEF_SOBI2_PARAMS_INCLUDE_CAT_ID'] = '// set to 1 so that category id is prepended to category name'; $shDefaultParams['sh404SEF_SOBI2_PARAMS_INCLUDE_CAT_ID'] = 0; // end of parameters $sef_custom_config_file = sh404SEF_ADMIN_ABS_PATH . 'custom.sef.php'; // read user defined values, possibly recovered while upgrading if (JFile::exists($sef_custom_config_file)) { include $sef_custom_config_file; } // generate string for parameter modification if ($GLOBALS['mainframe']->isAdmin()) { // only need to modify custom params in back-end $this->defaultParamList = '<?php // custom.sef.php : custom.configuration file for sh404SEF // 1.0.20_Beta - build_237 - Joomla 1.5.x - <a href="http://extensions.siliana.com/">extensions.Siliana.com/</a> // DO NOT REMOVE THIS LINE : if (!defined(\'_JEXEC\')) die(\'Direct Access to this location is not allowed.\'); // DO NOT REMOVE THIS LINE' . "\n"; foreach ($shDefaultParams as $key => $value) { $this->defaultParamList .= "\n"; if (!empty($shDefaultParamsHelp[$key])) { $this->defaultParamList .= $shDefaultParamsHelp[$key] . "\n"; } // echo help text, if any $this->defaultParamList .= '$shDefaultParams[\'' . $key . '\'] = ' . (is_string($value) ? "'{$value}'" : $value) . ";\n"; } } // read user set values for these params and create constants if (!empty($shDefaultParams)) { foreach ($shDefaultParams as $key => $value) { define($key, $value); } } unset($shDefaultParams); unset($shDefaultParamsHelp); } // compatiblity variables, for sef_ext files usage from OpenSef/SEf Advance V 1.2.4.p $this->encode_page_suffix = ''; // if using an opensef sef_ext, we don't let them manage suffix $this->encode_space_char = $this->replacement; $this->encode_lowercase = $this->LowerCase; $this->encode_strip_chars = $this->stripthese; $this->content_page_name = str_replace('%s', '', $this->pageTexts[$GLOBALS['shMosConfig_locale']]); // V 1.2.4.r $this->content_page_format = '%s' . $this->replacement . '%d'; // V 1.2.4.r $shTemp = $this->shGetReplacements(); foreach ($shTemp as $dest => $source) { $this->spec_chars_d .= $dest . ','; $this->spec_chars .= $source . ','; } rtrim($this->spec_chars_d, ','); rtrim($this->spec_chars, ','); }