Esempio n. 1
0
function shDoAntiFloodCheck($ip)
{
    $sefConfig = Sh404sefFactory::getConfig();
    if (!$sefConfig->shSecActivateAntiFlood || empty($sefConfig->shSecAntiFloodPeriod) || $sefConfig->shSecAntiFloodOnlyOnPOST && empty($_POST) || empty($sefConfig->shSecAntiFloodCount) || empty($ip)) {
        return;
    }
    // disable for requests coming from same site, including ajax calls
    // coming from jomsocial
    // activate if using JomSocial on your site, removing the /* and */ marks surrounding the next few lines
    /*
    $referrer =  empty($_SERVER['HTTP_REFERER']) ? '' : $_SERVER['HTTP_REFERER'];
      if (!empty($referrer) && strpos( $referrer, Sh404sefFactory::getPageInfo()->getDefaultLiveSite()) === 0) {
      if (!empty($_POST['option']) && $_POST['option'] == 'community'
      && !empty( $_POST['task']) && $_POST['task'] == 'azrul_ajax') {
      return;
      }
      }
    */
    // end of Jomsocial specific code
    $nextId = 1;
    $cTime = time();
    $count = 0;
    $floodData = shReadFile(sh404SEF_ADMIN_ABS_PATH . 'security/sh404SEF_AntiFlood_Data.dat');
    if (!empty($floodData)) {
        // find next id
        $lastRec = $floodData[count($floodData) - 1];
        $lastRecId = explode(',', $lastRec);
        if (!empty($lastRecId)) {
            $nextId = intval($lastRecId[0]) + 1;
        }
        // trim flood data : remove lines older than set time limit
        foreach ($floodData as $data) {
            $rec = explode(', ', $data);
            if (empty($rec[2]) || $cTime - intVal($rec[2]) > $sefConfig->shSecAntiFloodPeriod) {
                unset($floodData[$count]);
            }
            $count++;
        }
        $floodData = array_filter($floodData);
    }
    // we have only requests made in the last $sefConfig->shSecAntiFloodPeriod seconds left in $floodArray
    $count = 0;
    if (!empty($floodData)) {
        foreach ($floodData as $data) {
            $rec = explode(',', $data);
            if (!empty($rec[1]) && JString::trim($rec[1]) == $ip) {
                $count++;
            }
        }
    }
    // log current request
    $floodData[] = $nextId . ', ' . $ip . ', ' . $cTime;
    // write to file;
    $saveData = implode("\n", $floodData);
    shSaveFile(sh404SEF_ADMIN_ABS_PATH . 'security/sh404SEF_AntiFlood_Data.dat', $saveData);
    if ($count >= $sefConfig->shSecAntiFloodCount) {
        shDoRestrictedAccess('Flooding', $count . ' requests in less than ' . $sefConfig->shSecAntiFloodPeriod . ' seconds (max = ' . $sefConfig->shSecAntiFloodCount . ')');
    }
}
Esempio n. 2
0
function shDoAntiFloodCheck($ip)
{
    $sefConfig = shRouter::shGetConfig();
    if (!$sefConfig->shSecActivateAntiFlood || empty($sefConfig->shSecAntiFloodPeriod) || $sefConfig->shSecAntiFloodOnlyOnPOST && empty($_POST) || empty($sefConfig->shSecAntiFloodCount) || empty($ip)) {
        return;
    }
    $nextId = 1;
    $cTime = time();
    $count = 0;
    $floodData = shReadFile(sh404SEF_ADMIN_ABS_PATH . 'security/sh404SEF_AntiFlood_Data.dat');
    if (!empty($floodData)) {
        // find next id
        $lastRec = $floodData[count($floodData) - 1];
        $lastRecId = explode(',', $lastRec);
        if (!empty($lastRecId)) {
            $nextId = intval($lastRecId[0]) + 1;
        }
        // trim flood data : remove lines older than set time limit
        foreach ($floodData as $data) {
            $rec = explode(', ', $data);
            if (empty($rec[2]) || $cTime - intVal($rec[2]) > $sefConfig->shSecAntiFloodPeriod) {
                unset($floodData[$count]);
            }
            $count++;
        }
        $floodData = array_filter($floodData);
    }
    // we have only requests made in the last $sefConfig->shSecAntiFloodPeriod seconds left in $floodArray
    $count = 0;
    if (!empty($floodData)) {
        foreach ($floodData as $data) {
            $rec = explode(',', $data);
            if (!empty($rec[1]) && JString::trim($rec[1]) == $ip) {
                $count++;
            }
        }
    }
    // log current request
    $floodData[] = $nextId . ', ' . $ip . ', ' . $cTime;
    // write to file;
    $saveData = implode("\n", $floodData);
    shSaveFile(sh404SEF_ADMIN_ABS_PATH . 'security/sh404SEF_AntiFlood_Data.dat', $saveData);
    if ($count >= $sefConfig->shSecAntiFloodCount) {
        shDoRestrictedAccess('Flooding', $count . ' requests in less than ' . $sefConfig->shSecAntiFloodPeriod . ' seconds (max = ' . $sefConfig->shSecAntiFloodCount . ')');
    }
}
Esempio n. 3
0
    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 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, ',');
    }