Exemplo n.º 1
0
 /**
  * Saves data from the quickStart pane on main dashboard
  */
 public function saveqcontrol()
 {
     // Check for request forgeries.
     JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
     try {
         // get current settings for sh404SEF
         $params = Sh404sefHelperGeneral::getComponentParams($forceRead = true);
         // set params from the form
         $params->set('Enabled', JRequest::getInt('Enabled', 0));
         $params->set('canReadRemoteConfig', JRequest::getInt('canReadRemoteConfig', 0));
         $params->set('shRewriteMode', JRequest::getInt('shRewriteMode', 1));
         $params->set('shSecEnableSecurity', JRequest::getInt('shSecEnableSecurity', 1));
         // convert to json and store into db
         $textParams = $params->toString();
         ShlDbHelper::update('#__extensions', array('params' => $textParams), array('element' => 'com_sh404sef', 'type' => 'component'));
         JFactory::getApplication()->enqueueMessage(JText::_('COM_SH404SEF_ELEMENT_SAVED'));
     } catch (Exception $e) {
         JFactory::getApplication()->enqueueMessage(JText::_('COM_SH404SEF_ELEMENT_NOT_SAVED'), 'error');
     }
     parent::display();
 }
Exemplo n.º 2
0
    /**
     * Constructor of the configuration object
     * Tries to read config from #__extensions table params.
     * If found, builds an object that matches the object format used previously
     * (pre- 3.8) so as to maintain b/c compat.
     * If not found, search for a configuration file on disk,
     * from pre-3.8 versions of sh404SEF
     * If found, transfers data in new object and save to #__extensions table
     *
     * @param boolean $reset if true, params are read again from db
     */
    public function __construct($reset = false)
    {
        $app = JFactory::getApplication();
        // try to read from params column of com_sh404sef record in #__extensions table
        $values = Sh404sefHelperGeneral::getComponentParams($reset)->toArray();
        // if values found, read them and build an object identical to the one
        // we would have obtained from reading a config file, pre-3.8 version
        if (!empty($values)) {
            //options names for components
            $com_options = array('manageURL', 'translateURL', 'insertIsoCode', 'shDoNotOverrideOwnSef', 'compEnablePageId', 'defaultComponentString');
            //if we have values that mean we have a json object and we can clear the values for the arrays that contain parameters related to components
            $this->nocache = array();
            $this->skip = array();
            $this->useJoomlaRouter = array();
            $this->notTranslateURLList = array();
            $this->notInsertIsoCodeList = array();
            $this->shDoNotOverrideOwnSef = array();
            $this->useJoomsefRouter = array();
            $this->useAcesefRouter = array();
            $this->compEnablePageId = array();
            $this->shLangTranslateList = array();
            $this->shLangInsertCodeList = array();
            $this->defaultComponentStringList = array();
            foreach ($values as $key => $value) {
                if (property_exists(__CLASS__, $key)) {
                    $this->{$key} = $value;
                } elseif (substr_count($key, "___") && substr_count($key, "com_")) {
                    $key_arr = explode("___", $key);
                    $com_str = $key_arr[0];
                    $field = $key_arr[1];
                    $com_name = substr($com_str, 4);
                    switch ($field) {
                        case 'manageURL':
                            switch ($value) {
                                case 1:
                                    $this->nocache[] = $com_name;
                                    break;
                                case 2:
                                    $this->skip[] = $com_name;
                                    break;
                                case 3:
                                    $this->useJoomlaRouter[] = $com_name;
                                    break;
                                default:
                                    break;
                            }
                            break;
                        case 'translateURL':
                            if ($value == 1) {
                                $this->notTranslateURLList[] = $com_name;
                            }
                            break;
                        case 'insertIsoCode':
                            if ($value == 1) {
                                $this->notInsertIsoCodeList[] = $com_name;
                            }
                            break;
                        case 'shDoNotOverrideOwnSef':
                            switch ($value) {
                                case 1:
                                    $this->shDoNotOverrideOwnSef[] = $com_name;
                                    break;
                                case 30:
                                    $this->useJoomsefRouter[] = $com_name;
                                    break;
                                case 40:
                                    $this->useAcesefRouter[] = $com_name;
                                    break;
                                default:
                                    break;
                            }
                            break;
                        case 'compEnablePageId':
                            if ($value == 1) {
                                $this->compEnablePageId[] = $com_name;
                            }
                            break;
                        case 'defaultComponentString':
                            $this->defaultComponentStringList[$com_name] = $value;
                            break;
                    }
                } elseif (substr_count($key, "languages_")) {
                    $lang_array = explode("_", $key);
                    $lang = $lang_array[1];
                    $lang_param = $lang_array[2];
                    switch ($lang_param) {
                        case 'pageText':
                            $this->pageTexts[$lang] = $value;
                            break;
                        case 'translateURL':
                            $this->shLangTranslateList[$lang] = $value;
                            break;
                        case 'insertCode':
                            $this->shLangInsertCodeList[$lang] = $value;
                            break;
                    }
                } elseif ($value == 'mobile_switch_enabled' || $value == 'mobile_template') {
                }
            }
            // -->>Need to check here is this fields shoudl still be passed throug shInitLanguageList() method
            $this->shLangTranslateList = $this->shInitLanguageList(empty($this->shLangTranslateList) ? null : $this->shLangTranslateList, 0, 0);
            $this->shLangInsertCodeList = $this->shInitLanguageList(empty($this->shLangInsertCodeList) ? null : $this->shLangInsertCodeList, 0, 0);
            $this->pageTexts = $this->shInitLanguageList(empty($this->pageTexts) ? null : $this->pageTexts, isset($pagetext) ? $pagetext : 'Page-%s', isset($pagetext) ? $pagetext : 'Page-%s');
            // use value from prev versions if any
            //-->
        } else {
            // no values found in params column of #__extensions table
            // either configuration was never saved, and so we keep all the defaults
            // or we're upgrading to the new DB-based configuration system
            // from a confgi file based version. Check if we can find a config file
            // and read it if so
            $sefConfigFile = sh404SEF_ADMIN_ABS_PATH . 'config/config.sef.php';
            if (shFileExists($sefConfigFile)) {
                include $sefConfigFile;
                // 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;
                }
                if (isset($UrlCacheHandler)) {
                    $this->UrlCacheHandler = $UrlCacheHandler;
                }
                if (isset($displayUrlCacheStats)) {
                    $this->displayUrlCacheStats = $displayUrlCacheStats;
                }
                if (isset($analyticsUserGroups)) {
                    $this->analyticsUserGroups = $analyticsUserGroups;
                }
                // end of parameters
                $datas = get_object_vars($this);
                $this->saveOldValues($datas);
            }
        }
        // handle "Very advanced" params
        if (!defined('sh404SEF_PROTECT_AGAINST_DOCUMENT_TYPE_ERROR')) {
            // define default values for seldom used params
            // 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;
        }
        // b/c : try to read "very. advanced" values from disk file
        $sefCustomConfigFile = sh404SEF_ADMIN_ABS_PATH . 'custom.sef.php';
        // read user defined values, possibly recovered while upgrading
        if (JFile::exists($sefCustomConfigFile)) {
            include $sefCustomConfigFile;
        } else {
            // if the file does not exists, we create it. That way, user still has the ability to manually customize it
            // 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
			    // 4.1.0.1559 - 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";
                if (!empty($shDefaultParams)) {
                    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";
                    }
                }
                // write to disk
                $quoteGPC = get_magic_quotes_gpc();
                $paramsList = $quoteGPC ? stripslashes($this->defaultParamList) : $this->defaultParamList;
                JFile::write($sefCustomConfigFile, $paramsList);
            }
        }
        // read user set values for these params and create constants
        if (!empty($shDefaultParams)) {
            foreach ($shDefaultParams as $key => $value) {
                if (!defined($key)) {
                    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()->currentLanguageTag]) ? 'Page' : str_replace('%s', '', $this->pageTexts[Sh404sefFactory::getPageInfo()->currentLanguageTag]);
        // 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, ',');
        if ($app->isAdmin()) {
            $this->shCheckFilesAccess();
        }
    }