File Manager

Current Directory: /home/astoriaah/www/administrator/components/com_sh404sef/classes
Viewing File: /home/astoriaah/www/administrator/components/com_sh404sef/classes/config.php
<?php /** * sh404SEF - SEO extension for Joomla! * * @author Yannick Gaultier * @copyright (c) Yannick Gaultier - Weeblr llc - 2022 * @package sh404SEF * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL * @version 4.24.1.4308 * @date 2022-05-31 */ // Security check to ensure this file is being included by a parent file. defined('_JEXEC') || die; class Sh404sefClassConfig { const CAT_ALL_NESTED_CAT = 0; const CAT_FIRST = 1; const CAT_LAST = 2; const CAT_2_FIRST = 3; const CAT_2_LAST = 4; const CAT_NONE = 5; const DONT_ENFORCE_WWW = 0; const ENFORCE_WWW = 1; const ENFORCE_NO_WWW = 2; const COM_SH404SEF_UNCATEGORIZED_EMPTY = 0; const COM_SH404SEF_UNCATEGORIZED_USE_MENU_ITEM = 1; const COM_SH404SEF_KEYSTORE_TABLE_NAME = '#__sh404sef_keystore'; const COM_SH404SEF_KEYSTORE_KEY_404_ERROR_PAGE = 'com_sh404sef.errors.404'; const COM_SH404SEF_ROBOTS_META_DEFAULT = 'max-snippet:-1, max-image-preview:large, max-video-preview:-1'; /* string, version number */ public $version = '4.24.1.4308'; /* boolean, is 404 SEF enabled */ public $Enabled = false; /* char, Character to use for url replacement */ public $replacement = '-'; /* char, Character to use for page spacer */ public $pagerep = '-'; /* strip these characters */ public $stripthese = ',|~|!|@|%|^|(|)|<|>|:|;|{|}|[|]|&|`|„|‹|’|‘|“|”|•|›|«|´|»|°'; /* characters replacement table v 1.2.4.f April 4, 2007*/ public $shReplacements = 'Š|S, Œ|O, Ž|Z, š|s, œ|oe, ž|z, Ÿ|Y, ¥|Y, µ|u, À|A, Á|A, Â|A, Ã|A, Ä|A, Å|A, Æ|A, Ç|C, È|E, É|E, Ê|E, Ë|E, Ì|I, Í|I, Î|I, Ï|I, Ð|D, Ñ|N, Ò|O, Ó|O, Ô|O, Õ|O, Ö|O, Ø|O, Ù|U, Ú|U, Û|U, Ü|U, Ý|Y, ß|s, à|a, á|a, â|a, ã|a, ä|a, å|a, æ|a, ç|c, è|e, é|e, ê|e, ë|e, ì|i, í|i, î|i, ï|i, ð|o, ñ|n, ò|o, ó|o, ô|o, õ|o, ö|o, ø|o, ù|u, ú|u, û|u, ü|u, ý|y, ÿ|y, ß|ss, ă|a, ş|s, ţ|t, ț|t, Ț|T, Ș|S, ș|s, Ş|S'; /* string, suffix for "files" */ public $suffix = ''; /* string, file to display when there is none */ public $addFile = ''; /* trims friendly characters from where they shouldn't be */ public $friendlytrim = '-|.'; /* boolean, convert url to lowercase */ public $LowerCase = true; /* boolean, include the section name in url */ public $ShowSection = false; /* boolean, exclude the category name in url */ public $ShowCat = true; /* boolean, use the title_alias instead of the title */ public $UseAlias = true; /* int, id of #__content item to use for static page */ public $page404 = 0; /* Array, contains predefined components. DEPRECATED - 2.2.4*/ public $predefined = array(); /* Array, contains components 404 SEF will ignore. */ public $skip = array(); /* Array, contains components 404 SEF will not add to the DB. * default style URLs will be generated for these components instead */ public $nocache = array('events'); // shumisha : additional parameters /* Array, contains components 404 SEF will override their own sef_ext file if it has its own plugin. */ public $shDoNotOverrideOwnSef = array(); /* boolean, true (default) to log 404 errors to DB, false otherwise */ public $shLog404Errors = true; /* boolean, true (default) to use in mem cache, false to disable */ public $shUseURLCache = true; /* integer, max number of URL couple (sef + non-sef url) allowed in cache */ public $shMaxURLInCache = 10000; /* boolean, true (default) to translate texts in URL */ public $shTranslateURL = true; /* boolean, true (default) will always insert language iso code in URL (for other than default language) */ public $shInsertLanguageCode = true; /* Array, contains components sh404SEF will NOT translate URLs */ public $notTranslateURLList = array(); // V 1.2.4.m /* Array, contains components sh404SEF will NOT insert iso code in URL */ public $notInsertIsoCodeList = array(); // cache management /* boolean, true if insert Itemid of menu item is none exists */ public $shInsertGlobalItemidIfNone = false; /* boolean, if true insert title of menu item if no Itemid exists for the URL*/ public $shInsertTitleIfNoItemid = false; /* boolean, true if always insert title of menu item. URL Itemid is used, if any, or menu item title*/ public $shAlwaysInsertMenuTitle = false; /* boolean, true if always append Itemid of non-sef URL (or of current menu item if none) to SEF URL */ public $shAlwaysInsertItemid = false; // v 1.2.4.f /* string, default menu name, to be used if $shAlwaysInsertMenuTitle is true, to override menu title */ public $shDefaultMenuItemName = ''; /* boolean, if true, Getvars not used in URl will be reappend to it */ public $shAppendRemainingGETVars = true; // virtuemart management /* boolean, true if always insert title of shop menu item */ public $shVmInsertShopName = false; /* boolean, if true, product ID will be prepended to product name */ public $shInsertProductId = false; /* boolean, if true, product sku will be used instead of name */ public $shVmUseProductSKU = false; /* boolean, if true, product Manufacturer name will be included in URL */ public $shVmInsertManufacturerName = false; /* boolean, if true, product if will be prepended to manufacturer name */ public $shInsertManufacturerId = false; /* integer, if 0, no categories will be inserted in URL for a product if 1, only 'last' category will be inserted in URL if 2, all nested categories will be inserted in URL */ public $shVMInsertCategories = 1; /* boolean, if true, an additional text will be appended to sef URl when browsing categories * ie : .../product_cat/view-all-products.html VS .../product_cat/ */ public $shVmAdditionalText = true; /* boolean, if true, a flypage name will be inserted in URL */ public $shVmInsertFlypage = true; /* boolean, if true, category id will be prepended to category name */ public $shInsertCategoryId = false; /* boolean, if true, numerical id will be prepended to URL, for inclusion in Googlenews */ public $shInsertNumericalId = false; /* text, list of categories of content to which numerical id should be applied */ public $shInsertNumericalIdCatList = ''; /* boolean, if true, non-sef URL like index.php?option=com_content&task=view&id=12&Itemid=2 will be 301-redirected to their sef equivalent */ public $shRedirectNonSefToSef = false; /* boolean, if true, Joomla sef URL like /content/view/12/61 will be 301-redirected to their sef equivalent */ public $shRedirectJoomlaSefToSef = false; /* string, should be set to SSL secure URL of site if any used. No trailing / */ public $shConfig_live_secure_site = ''; /* boolean, if true, ed non-sef parameter will be interpreted as a iJoomla param in com_content plugin */ public $shActivateIJoomlaMagInContent = true; /* boolean, if true, issue id of iJoomla magazine will be prepended to category name */ public $shInsertIJoomlaMagIssueId = false; /* boolean, if true, magazine name will be prepended to all URL */ public $shInsertIJoomlaMagName = false; /* boolean, if true, magazine id will be inserted before magazine title */ public $shInsertIJoomlaMagMagazineId = false; /* boolean, if true, article id will be inserted before article title */ public $shInsertIJoomlaMagArticleId = false; /* boolean, if true, name of menu item leading to Community builder will be prepended to all URL */ public $shInsertCBName = false; /* boolean, if true, user name will be inserte to all URL wher appropriate. Warning : this will * increase DB space used? Normally user id is still passed as a GET param (ie ...?user=245) * to save space and increase speed */ public $shCBInsertUserName = false; /* boolean, if true, id of user will be prepended to its name when previous option is activated * in case two users have the same name */ public $shCBInsertUserId = true; /* boolean, if true user pseudo will be used instead of name */ public $shCBUseUserPseudo = true; /* integer, default value for Itemid when using lettermand newsletter component */ public $shLMDefaultItemid = 0; /* boolean, if true, default name for board will be prepended to URL */ public $shInsertFireboardName = true; /* boolean, if true name of forum category will be inserted in URL */ public $shFbInsertCategoryName = true; /* boolean, if true, Category id will be prepended to category name, in case 2 categories have same name */ public $shFbInsertCategoryId = false; /* boolean, if true, message subject will be inserted in URL */ public $shFbInsertMessageSubject = true; /* boolean, if true message id will be prepended to subject, in case 2 messages have same subject */ public $shFbInsertMessageId = true; /* MyBlog parameters V 1.2.4.r*/ public $shInsertMyBlogName = false; public $shMyBlogInsertPostId = true; public $shMyBlogInsertTagId = false; public $shMyBlogInsertBloggerId = true; /* Docman parameters V 1.2.4.r*/ public $shInsertDocmanName = false; public $shDocmanInsertDocId = true; public $shDocmanInsertDocName = true; /* integer, if 0, no categories will be inserted in URL for a product if 1, only 'last' category will be inserted in URL if 2, all nested categories will be inserted in URL */ public $shDMInsertCategories = 1; /* boolean, if true, category id will be prepended to category name */ public $shDMInsertCategoryId = false; /* boolean, if true, url will be urlencoded, needed for some non-latin languages */ public $shEncodeUrl = false; /* boolean, if true, Itemid from url on homepage with com_content will be removed, so that com_content plugin * can try guess amore appropriate one */ public $guessItemidOnHomepage = false; // V 1.2.4.q // V 1.2.4.q : added param to force non-sef if https, as we are not through with some shared ssl servers! public $shForceNonSefIfHttps = false; // V 1.2.4.s try SEF without mod_rewrite // V 3.0+ mode 2, /index.php?/ removed, not compatible with using Joomla router public $shRewriteMode = 1; // 0 = mod_rewrite, 1 = AcceptpathInfo index.php 2 = AcceptPathInfo index.php? public $shRewriteStrings = array('/', '/index.php/', '/index.php?/'); // V1.2.4.s record duplicate URL param public $shRecordDuplicates = true; public $shRemoveGeneratorTag = true; public $shPutH1Tags = false; public $shMetaManagementActivated = true; public $shInsertContentTableName = true; public $shContentTableName = 'Table'; // V 1.2.4.s auto redirect from www to non-www and vice-versa public $shAutoRedirectWww = self::DONT_ENFORCE_WWW; public $shVmInsertProductName = true; // V 1.2.4.t /* string, exact URL for homepage, to replace the automatic one. Workaround for splash pagesNo trailing / */ public $shForcedHomePage = ''; public $shInsertContentBlogName = false; public $shContentBlogName = ''; // Mosets Tree params public $shInsertMTreeName = false; public $shMTreeInsertListingName = true; public $shMTreeInsertListingId = true; public $shMTreePrependListingId = true; /* integer, if 0, no categories will be inserted in URL for a product if 1, only 'last' category will be inserted in URL if 2, all nested categories will be inserted in URL */ public $shMTreeInsertCategories = 1; /* boolean, if true, category id will be prepended to category name */ public $shMTreeInsertCategoryId = false; public $shMTreeInsertUserName = true; public $shMTreeInsertUserId = true; // iJoomla NewsPortal params public $shInsertNewsPName = false; public $shNewsPInsertCatId = false; public $shNewsPInsertSecId = false; /* Remository parameters V 1.2.4.t*/ public $shInsertRemoName = false; public $shRemoInsertDocId = true; public $shRemoInsertDocName = true; /* integer, if 0, no categories will be inserted in URL for a product if 1, only 'last' category will be inserted in URL if 2, all nested categories will be inserted in URL */ public $shRemoInsertCategories = 1; /* boolean, if true, category id will be prepended to category name */ public $shRemoInsertCategoryId = false; // boolean, if true, task = userProfile is accessed through mysite.com/username in CB public $shCBShortUserURL = false; //V 1.2.4.t // a set of boolean vars, to decide what to do with existing data when upgrading sh404SEF public $shKeepStandardURLOnUpgrade = true; //V 1.2.4.t public $shKeepCustomURLOnUpgrade = true; //V 1.2.4.t public $shKeepMetaDataOnUpgrade = true; //V 1.2.4.t public $shKeepModulesSettingsOnUpgrade = true; //V 1.2.4.t // boolean, to decide whether to replace page numbering by headings in multipage articles public $shMultipagesTitle = true; //V 1.2.4.t // compatiblity variables, for sef_ext files usage from OpenSef/SEf Advance public $encode_page_suffix = ''; public $encode_space_char = ''; public $encode_lowercase = ''; public $encode_strip_chars = ''; public $spec_chars_d; public $spec_chars; public $content_page_format; // V 1.2.4.r public $content_page_name; // V 1.2.4.r // V x public $shKeepConfigOnUpgrade = true; // security parameters V x public $shSecEnableSecurity = false; public $shSecLogAttacks = false; public $shSecOnlyNumVars = array('Itemid', 'limit', 'limitstart'); public $shSecAlphaNumVars = array(); public $shSecNoProtocolVars = array('task', 'option', 'no_html', 'mosmsg', 'lang'); public $ipWhiteList = ''; public $ipBlackList = ''; public $uAgentWhiteList = ''; public $uAgentBlackList = ''; public $shSecCheckHoneyPot = false; public $shSecHoneyPotKey = ''; public $shSecEntranceText = "<p>Sorry. You are visiting this site from a suspicious IP address, which triggered our protection system.</p> <p>If you <strong>ARE NOT</strong> a malware robot of any kind, please accept our apologies for the inconvenience. You can access the page by clicking here : "; public $shSecSmellyPotText = "The following link is here to further trap malicious internet robots, so please don't click on it : "; public $monthsToKeepLogs = 1; // = 1 will keep current months log + the month before public $shSecActivateAntiFlood = false; public $shSecAntiFloodOnlyOnPOST = false; // if true, antiflood is activated only if there is some POST data, as in a form public $shSecAntiFloodPeriod = 10; // period over which requests from same IP are counted public $shSecAntiFloodCount = 10; // max number of request from same IP in period above //public $insertSectionInBlogTableLinks = false; // default should be true, but set to false for compat reason /* Array, contains whether we should translate URLs per language */ public $shLangTranslateList = array(); // V 1.2.4.m /* Array, contains whether we should insert iso code URLs per language */ public $shLangInsertCodeList = array(); /* Array, contains list of default initial URL fragement per component */ public $defaultComponentStringList = array(); // V 1.2.4.m /* Array, contains pagination string, per language */ public $pageTexts = array(); public $shAdminInterfaceType = SH404SEF_STANDARD_ADMIN; // V 1.3 RC shCustomTags params public $shInsertNoFollowPDFPrint = true; public $shInsertReadMorePageTitle = false; public $shMultipleH1ToH2 = false; // V 1.3.1 RC public $shVmUsingItemsPerPage = true; // set to true if using drop-down list to select number of items per page public $shSecCheckPOSTData = true; // if set to yes, POST data will not be checked for mosconfig, script, base64, // standard vars and cmd file in img names public $shSecCurMonth = 0; public $shSecLastUpdated = 0; public $shSecTotalAttacks = 0; public $shSecTotalConfigVars = 0; public $shSecTotalBase64 = 0; public $shSecTotalScripts = 0; public $shSecTotalStandardVars = 0; public $shSecTotalImgTxtCmd = 0; public $shSecTotalIPDenied = 0; public $shSecTotalUserAgentDenied = 0; public $shSecTotalFlooding = 0; public $shSecTotalPHP = 0; public $shSecTotalPHPUserClicked = 0; // com_smf params public $shInsertSMFName = true; public $shSMFItemsPerPage = 20; public $shInsertSMFBoardId = true; public $shInsertSMFTopicId = true; public $shinsertSMFUserName = false; public $shInsertSMFUserId = true; // other public $appendToPageTitle = ''; public $prependToPageTitle = ''; public $debugToLogFile = false; public $debugStartedAt = 0; public $debugDuration = 3600; // time in seconds to log debug data to file. if 0, unlimited, default = 1 hour // V 1.3.1 public $shInsertOutboundLinksImage = false; public $shImageForOutboundLinks = 'external-black.png'; // default = black image // V 1.0.3 public $defaultParamList = ''; // holds content of /administrator/components/custom.sef.php for editing // V 1.0.12 public $useCatAlias = false; public $useSecAlias = false; public $useMenuAlias = false; // V 1.5.3 public $alwaysAppendItemsPerPage = false; public $redirectToCorrectCaseUrl = true; // V 1.5.5 public $jclInsertEventId = false; public $jclInsertCategoryId = false; public $jclInsertCalendarId = false; public $jclInsertCalendarName = false; public $jclInsertDate = false; public $jclInsertDateInEventView = true; public $ContentTitleShowSection = false; public $ContentTitleShowCat = true; public $ContentTitleUseAlias = false; public $ContentTitleUseCatAlias = false; public $ContentTitleUseSecAlias = false; public $pageTitleSeparator = ' | '; // V 1.5.7 public $ContentTitleInsertArticleId = false; /* text, list of categories of content to which numerical id should be applied */ public $shInsertContentArticleIdCatList = ''; // V 1.5.8 public $shJSInsertJSName = true; public $shJSShortURLToUserProfile = true; public $shJSInsertUsername = true; public $shJSInsertUserFullName = false; public $shJSInsertUserId = false; public $shJSInsertGroupCategory = true; public $shJSInsertGroupCategoryId = false; public $shJSInsertGroupId = false; public $shJSInsertGroupBulletinId = false; public $shJSInsertDiscussionId = true; public $shJSInsertMessageId = true; public $shJSInsertPhotoAlbum = true; public $shJSInsertPhotoAlbumId = false; public $shJSInsertPhotoId = true; public $shJSInsertVideoCat = true; public $shJSInsertVideoCatId = false; public $shJSInsertVideoId = true; public $shFbInsertUserName = true; public $shFbInsertUserId = true; public $shFbShortUrlToProfile = true; public $shPageNotFoundItemid = 0; // V 2.0.0 public $autoCheckNewVersion = true; public $error404SubTemplate = 'index'; /** * Holds whether we should create a page id * for current url routing task * * @var boolean */ public $enablePageId = true; public $compEnablePageId = array('contact', 'content', 'newsfeeds', 'poll', 'user', 'weblinks'); // V 2.0.1 public $analyticsEnabled = false; public $analyticsReportsEnabled = false; public $analyticsType = 'ga'; // google public $analyticsId = ''; public $analyticsExcludeIP = array(); public $analyticsMaxUserLevel = ''; public $analyticsUser = ''; public $analyticsPassword = ''; public $analyticsAccount = ''; public $analyticsProfile = ''; public $autoCheckNewAnalytics = true; public $analyticsDashboardDateRange = 'week'; public $analyticsEnableTimeCollection = true; public $analyticsEnableUserCollection = true; public $analyticsDashboardDataType = 'ga:pageviews'; // visits | unique | pageviews // v 2.1.4 public $slowServer = false; // V 2.1.7 //var $insertContactCat = false; // V 2.1.10 public $useJoomsefRouter = array(); public $useAcesefRouter = array(); // V 2.2.11 public $insertShortlinkTag = true; public $insertRevCanTag = false; public $insertAltShorterTag = false; public $canReadRemoteConfig = false; public $stopCreatingShurls = false; public $shurlBlackList = ''; public $shurlNonSefBlackList = ''; // V 3.0.0 public $includeContentCat = self::CAT_LAST; public $includeContentCatCategories = self::CAT_2_LAST; public $contentCategoriesSuffix = 'all'; public $contentTitleIncludeCat = self::CAT_ALL_NESTED_CAT; public $useContactCatAlias = false; public $contactCategoriesSuffix = 'all'; public $includeContactCat = self::CAT_NONE; public $includeContactCatCategories = self::CAT_LAST; public $useWeblinksCatAlias = false; public $weblinksCategoriesSuffix = 'all'; public $includeWeblinksCat = self::CAT_LAST; public $includeWeblinksCatCategories = self::CAT_LAST; public $liveSites = array(); public $alternateTemplate = ''; public $useJoomlaRouter = array(); // 3.1.2 public $slugForUncategorizedContent = self::COM_SH404SEF_UNCATEGORIZED_EMPTY; public $slugForUncategorizedContact = self::COM_SH404SEF_UNCATEGORIZED_EMPTY; public $slugForUncategorizedWeblinks = self::COM_SH404SEF_UNCATEGORIZED_EMPTY; // 3.4 public $enableMultiLingualSupport = true; public $enableOpenGraphData = false; public $ogEnableDescription = true; public $ogType = 'article'; public $ogImage = ''; public $ogEnableSiteName = true; public $ogSiteName = ''; public $ogEnableLocation = false; public $ogLatitude = ''; public $ogLongitude = ''; public $ogStreetAddress = ''; public $ogLocality = ''; public $ogPostalCode = ''; public $ogRegion = ''; public $ogCountryName = ''; public $ogEnableContact = false; public $ogEmail = ''; public $ogPhoneNumber = ''; public $ogFaxNumber = ''; public $fbAdminIds = ''; public $socialButtonType = 'facebook'; public $insertPaginationTags = true; public $UrlCacheHandler = 'File'; // | Sharedmemory public $displayUrlCacheStats = false; // 3.6 public $analyticsUserGroups = null; // 4.0 public $removeOtherCanonicals = true; // 4.3 public $analyticsEdition = 'none'; public $analyticsUgaId = ''; public $update_credentials_access = ''; public $update_credentials_secret = ''; public $analyticsGtmId = ''; public $enableTwitterCards = false; public $twitterCardsType = 'summary'; public $twitterCardsSiteAccount = ''; public $twitterCardsCreatorAccount = ''; public $twitterCardsCategories = ''; public $enableGoogleAuthorship = false; public $googleAuthorshipAuthorProfile = ''; public $googleAuthorshipAuthorName = ''; public $googleAuthorshipCategories = ''; // 4.4 public $analyticsEnableAnonymization = 0; public $enableGooglePublisher = false; public $googlePublisherUrl = ''; // 4.4.5 public $extensionToExtractGetVars = 'com_chronoforms,com_mijoshop'; // 4.4.7 public $wbgaauth_access_token = ''; public $wbgaauth_refresh_token = ''; public $wbgaauth_expires_on = 0; public $wbgaauth_token_type = ''; public $wbgaauth_client_id_key = ''; // 4.5 public $notFoundErrorHandling = 1; public $analyticsUserGroupsDisabled = null; public $insertGoogleSitename = 1; public $insertGoogleSitelinksSearch = 0; public $insertGoogleSitelinksSearchCustom = ''; public $vmUseMenuItems = 1; public $vmWhichProductDetailsCat = 0; public $autoRedirect404 = 0; public $autoRedirect404WithMessage = 0; public $error404MsgColor = '#FFFFFF'; public $error404MsgBackgroundColor = '#327DCB'; // #7FBA00 public $error404MsgOpacity = '0.9'; public $analyticsEnableDisplayFeatures = 0; // 4.5.1 public $vmWhichVmProductDetailsTitleCat = 2; public $vmWhichVmCategoryTitleCat = 2; // 4.6 public $insertGoogleBreadcrumb = 0; public $useJoomlaRouterPhpWithItemid = array(); // 4.7 public $insertDate = false; public $insertDateCatList = ''; public $log404sHits = false; public $logAliasesHits = false; public $logShurlsHits = false; public $logUrlsSource = false; public $referrerPolicyMeta = 'none'; public $pageNotFoundItemids = array(); public $analyticsEnableEnhancedLinkAttr = false; // 4.8 public $ogImageDetection = 0; public $sd_logo_url = ''; public $sd_sitename = ''; public $sd_logo_contacts_organization_url = ''; public $sd_social_profiles = ''; public $sd_social_profiles_org_url = ''; public $sd_social_profiles_org_name = ''; public $sd_social_profiles_org_type = ''; public $sd_contactpoint_1_phone = ''; public $sd_contactpoint_1_type = 'sales'; public $sd_contactpoint_1_option = ''; public $sd_contactpoint_1_area = ''; public $sd_contactpoint_1_language = ''; public $sd_contactpoint_2_phone = ''; public $sd_contactpoint_2_type = 'sales'; public $sd_contactpoint_2_option = ''; public $sd_contactpoint_2_area = ''; public $sd_contactpoint_2_language = ''; public $itemidOverridesIfMissing = array(); public $itemidOverridesAlways = array(); public $itemidOverridesValues = array(); public $fbAppId = ''; // 4.11 public $autoBuildDescription = true; // 4.14 wp-admin.php\nwp-login.php\nwp-content/*\nwp-admin/*", public $request_block_list = array( 'wp-{*}.php{*}', 'wp-admin{*}', 'wp-content{*}', 'wp-includes{*}', 'wp-login{*}', 'wp-json{*}', ); public $request_block_list_action = 'error_404'; // 4.15 public $analyticsViewLevel = array(1); // 4.16 public $metaRobotsDefault = self::COM_SH404SEF_ROBOTS_META_DEFAULT; // 4.17.1 public $rawContentHeadTop = ''; public $rawContentHeadBottom = ''; public $rawContentBodyTop = ''; public $rawContentBodyBottom = ''; // 4.20.0 public $analyticsEnableFrontendAccess = 0; public $analyticsEnableFrontendAccessWithKey = 0; public $analyticsFrontendReportsAccessKey = ''; // 4.23.0 public $analyticsCustomCode = ''; // End of parameters /** * 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 * * @throws Exception */ 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 (isset($values['version'])) { unset($values['version']); } // 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', 'itemidOverrides', 'itemidOverridesValues' ); //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->useJoomlaRouterPhpWithItemid = array(); $this->useJoomsefRouter = array(); $this->useAcesefRouter = array(); $this->compEnablePageId = array(); $this->shLangTranslateList = array(); $this->shLangInsertCodeList = array(); $this->defaultComponentStringList = array(); $this->itemidOverridesIfMissing = array(); $this->itemidOverridesAlways = array(); foreach ($values as $key => $value) { $key = trim($key); 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; case 50: $this->useJoomlaRouterPhpWithItemid[] = $com_name; break; default: break; } break; case 'itemidOverrides': switch ($value) { case 'if_missing': $this->itemidOverridesIfMissing[] = $com_name; break; case 'always': $this->itemidOverridesAlways[] = $com_name; break; default: break; } break; case 'itemidOverridesValues': $this->itemidOverridesValues[$com_name] = $value; 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; case 'notFoundItemid': $this->pageNotFoundItemids[$lang] = $value; } } 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); $paramCurrentList = empty($this->pageTexts) ? null : $this->pageTexts; $paramDefaultValue = isset($pagetext) ? $pagetext : 'Page-%s'; $paramDefaultLangDefaultValue = isset($pagetext) ? $pagetext : 'Page-%s'; $this->pageTexts = $this ->shInitLanguageList( $paramCurrentList, $paramDefaultValue, $paramDefaultLangDefaultValue ); // 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, // V x 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; $shDefaultParamsHelp['SH404SEF_OTHER_DO_NOT_OVERRIDE_EXISTING_META_DATA'] = '// SECTION : Other parameters ---------------------------------------------------------------------------- // set to 1 to stop overriding meta data with those defined // with sh404SEF'; $shDefaultParams['SH404SEF_OTHER_DO_NOT_OVERRIDE_EXISTING_META_DATA'] = 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.24.1.4308 - https://weeblr.com/joomla-seo-analytics-security/sh404sef // 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 $paramsList = ShlSystem_Compat::getMagicQuotesGpc() ? 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); // compatibility 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(); } // hack: from 4.3 on, we may have 2 different analytics types // so we use the ->analyticsEdition param instead of analytcisEnabled // but we must carry on existing configuration // this should run only once, upon installation of 4.3+ version if (!empty($this->analyticsEnabled) && $this->analyticsEdition == 'none') { $this->analyticsEnabled = '0'; $this->analyticsEdition = 'ga'; $this->analyticsUgaId = ''; // save to db $rawParams = Sh404sefHelperGeneral::getComponentParams($reset); $rawParams->set('analyticsEnabled', false); $rawParams->set('analyticsEdition', 'ga'); $rawParams->set('analyticsUgaId', ''); $rawParams->set('analyticsGtmId', ''); Sh404sefHelperGeneral::saveComponentParams($rawParams); } include 'config.' . Sh404sefConfigurationEdition::$id . '.php'; // from 4.7.0, we use Joomla URL Rewriting setting $j3 = version_compare(JVERSION, '3.0', 'ge'); $joomlaUrlRewriting = (bool)($j3 ? $app->get('sef_rewrite') : $app->getCfg('sef_rewrite')); $this->shRewriteMode = $joomlaUrlRewriting ? 0 : 1; } protected function shInitLanguageList($currentList, $default, $defaultLangDefault) { $ret = array(); $app = JFactory::getApplication(); $pageInfo = Sh404sefFactory::getPageInfo(); if (!empty($pageInfo->isMultilingual) && !$app->isAdmin()) { $ret = $currentList; if (empty($currentList) || !isset($currentList[$pageInfo->currentLanguageTag])) { $ret[$pageInfo->currentLanguageTag] = $defaultLangDefault; } } else { $activeLanguages = Sh404sefHelperLanguage::getAllInstalledLanguage(JPATH_ROOT); if (empty($activeLanguages)) { if (empty($currentList) || !isset($currentList[$pageInfo->currentLanguageTag])) { $ret[$pageInfo->currentLanguageTag] = $defaultLangDefault; } else { $ret[$pageInfo->currentLanguageTag] = $currentList[$pageInfo->currentLanguageTag]; } } else { foreach ($activeLanguages as $language) { if (empty($currentList) || !isset($currentList[$language['tag']])) { $ret[$language['tag']] = $language['tag'] == $pageInfo->currentLanguageTag ? $defaultLangDefault : $default; } else { $ret[$language['tag']] = $currentList[$language['tag']]; } } } } return $ret; } protected function saveOldValues($data) { $app = JFactory::getApplication(); if (!$app->isAdmin()) { return false; } // An array name with the names of the arrays that contain parameters for components $comParams = array( 'nocache', 'skip', 'useJoomlaRouter', 'notTranslateURLList', 'notInsertIsoCodeList', 'shDoNotOverrideOwnSef', 'useJoomsefRouter', 'useAcesefRouter', 'compEnablePageId', 'defaultComponentStringList' ); // Same thing for the language params $languageParams = array('pageTexts', 'shLangTranslateList', 'shLangInsertCodeList'); $newParams = array(); foreach ($data as $param => $val) { if (in_array($param, $comParams)) //-->just checking is it's a parameter related to components { //-->this will be mostly hardcoded and it's basically the reverse process of the one that loads the parameters from the json(database) //-->into the config class switch ($param) { case 'nocache': foreach ($val as $com) { $newParams['com_' . $com . '___manageURL'] = 1; } break; case 'skip': foreach ($val as $com) { $newParams['com_' . $com . '___manageURL'] = 2; } break; case 'useJoomlaRouter': foreach ($val as $com) { $newParams['com_' . $com . '___manageURL'] = 3; } break; case 'notTranslateURLList': foreach ($val as $com) { $newParams['com_' . $com . '___translateURL'] = 1; } break; case 'notInsertIsoCodeList': foreach ($val as $com) { $newParams['com_' . $com . '___insertIsoCode'] = 1; } break; case 'shDoNotOverrideOwnSef': foreach ($val as $com) { $newParams['com_' . $com . '___shDoNotOverrideOwnSef'] = 1; } break; case 'useJoomsefRouter': foreach ($val as $com) { $newParams['com_' . $com . '___shDoNotOverrideOwnSef'] = 30; } break; case 'useAcesefRouter': foreach ($val as $com) { $newParams['com_' . $com . '___shDoNotOverrideOwnSef'] = 40; } break; case 'compEnablePageId': foreach ($val as $com) { $newParams['com_' . $com . '___compEnablePageId'] = 1; } break; case 'defaultComponentStringList': foreach ($val as $com => $str) { $newParams['com_' . $com . '___defaultComponentString'] = $str; } break; } //--unseting the array param because he will be replaced the new parameters in the datas array that will become the json object unset($data[$param]); } elseif (in_array($param, $languageParams)) //-->checking to see if the parameter is related to languages parameters { switch ($param) { case 'pageTexts': foreach ($val as $lang => $paramval) { $newParams['languages_' . $lang . '_pageText'] = $paramval; } break; case 'shLangTranslateList': foreach ($val as $lang => $paramval) { $newParams['languages_' . $lang . '_translateURL'] = $paramval; } break; case 'shLangInsertCodeList': foreach ($val as $lang => $paramval) { $newParams['languages_' . $lang . '_insertCode'] = $paramval; } break; } //--unseting the array param because he will be replaced the new parameters in the datas array that will become the json object unset($data[$param]); } elseif ($val === false) { $data[$param] = 0; } elseif ($val === true) { $data[$param] = 1; } } // get plugins details if (Sh404sefConfigurationEdition::$id == 'full') { $plugin = JPluginHelper::getPlugin('system', 'shmobile'); $params = new JRegistry(); $params->loadString($plugin->params); $newParams['mobile_switch_enabled'] = $params->get('mobile_switch_enabled', 0); $newParams['mobile_template'] = $params->get('mobile_template', ''); } //merging the new parameters into the datas array that will become the json object; $data = array_merge($data, $newParams); //-->this code is running also on the site part, not only to the admin, so we need to check out if the JPATH_BASE is going to administrator side $comConfigModel = Sh404sefHelperGeneral::getComConfigComponentModel(); $component = $comConfigModel->getComponent(); if (empty($component->id)) { return false; } // Attempt to save the configuration. $configArray = array('params' => $data, 'id' => $component->id, 'option' => 'com_sh404sef'); $comConfigModel->save($configArray); } /** * Return array of URL characters to be replaced. * Copied from Artio Joomsef V 1.4.0 * * @return array */ public function shGetReplacements() { // V 1.2.4.q : initialize variable static $shReplacements = null; if (isset($shReplacements)) { return $shReplacements; } $shReplacements = array(); $items = explode(',', $this->shReplacements); foreach ($items as $item) { if (!empty($item)) { // V 1.2.4.q better protection. Returns null array if empty @list($src, $dst) = explode('|', JString::trim($item)); $shReplacements[JString::trim($src)] = JString::trim($dst); } } return $shReplacements; } public function shCheckFilesAccess() { $files = array( 'administrator/components/com_sh404sef' => 'administrator/components/com_sh404sef', 'administrator/components/com_sh404sef/custom.sef.php' => 'administrator/components/com_sh404sef/index.html', 'administrator/components/com_sh404sef/security' => 'administrator/components/com_sh404sef/security/index.html', 'components/com_sh404sef/cache' => 'components/com_sh404sef/cache/index.html' ); $htmlStatus = array(); $boolStatus = array(); foreach ($files as $folder => $file) { $boolStatus[$folder] = !$this->shCheckFileAccess($file); $htmlStatus[$folder] = !$boolStatus[$folder] ? JText::_('COM_SH404SEF_WRITEABLE') : JText::_('COM_SH404SEF_UNWRITEABLE'); } $this->fileAccessStatus = $htmlStatus; return array('canAccess' => $boolStatus, 'html' => $htmlStatus); } public function shCheckFileAccess($fileName) { return is_readable(sh404SEF_ABS_PATH . $fileName) && is_writable(sh404SEF_ABS_PATH . $fileName); } /** * Return array of URL characters to be replaced. * Copied from Artio Joomsef V 1.4.0 * * @return array */ public function shGetStripCharList() { static $shStripCharList = null; if (is_null($shStripCharList)) { $shStripCharList = array(); $shStripCharList = explode('|', $this->stripthese); } return $shStripCharList; } public function set($var, $val) { if (isset($this->$var)) { $this->$var = $val; return true; } return false; } public function version() { return $this->version; } }