Файловый менеджер - Редактировать - /var/www/iplanru/data/www/i-plan.ru/administrator/components/com_sef/models/config.php
Назад
<?php /** * SEF component for Joomla! * * @package JoomSEF * @version 4.7.8 * @author ARTIO s.r.o., http://www.artio.net * @copyright Copyright (C) 2020 ARTIO s.r.o. * @license GNU/GPLv3 http://www.artio.net/license/gnu-general-public-license */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die(); jimport('joomla.filesystem.folder'); require_once(JPATH_COMPONENT.'/helpers/artio-update.php'); class SEFModelConfig extends SEFModel { private $_menuitems=null; function __construct() { parent::__construct(); } function getLists() { $db = JFactory::getDBO(); $sefConfig = SEFConfig::getConfig(); $std_opt = 'class="inputbox" size="2"'; $lists['enabled'] = $this->booleanRadio('enabled', $std_opt, $sefConfig->enabled); $lists['professionalMode'] = $this->booleanRadio('professionalMode', $std_opt, $sefConfig->professionalMode); $lists['lowerCase'] = $this->booleanRadio('lowerCase', $std_opt, $sefConfig->lowerCase); $lists['forceSsl'] = $this->booleanRadio('forceSsl', $std_opt, $sefConfig->forceSsl); $lists['disableNewSEF'] = $this->booleanRadio('disableNewSEF', $std_opt, $sefConfig->disableNewSEF); $lists['dontRemoveSid'] = $this->booleanRadio('dontRemoveSid', $std_opt, $sefConfig->dontRemoveSid); $lists['setQueryString'] = $this->booleanRadio('setQueryString', $std_opt, $sefConfig->setQueryString); $lists['parseJoomlaSEO'] = $this->booleanRadio('parseJoomlaSEO', $std_opt, $sefConfig->parseJoomlaSEO); $lists['checkJunkUrls'] = $this->booleanRadio('checkJunkUrls', $std_opt, $sefConfig->checkJunkUrls); $lists['preventNonSefOverwrite'] = $this->booleanRadio('preventNonSefOverwrite', $std_opt, $sefConfig->preventNonSefOverwrite); $basehrefs[] = JHTML::_('select.option', _COM_SEF_BASE_HOMEPAGE, JText::_('COM_SEF_ONLY_BASE_URL')); $basehrefs[] = JHTML::_('select.option', _COM_SEF_BASE_CURRENT, JText::_('COM_SEF_FULL_SEO_URL')); $basehrefs[] = JHTML::_('select.option', _COM_SEF_BASE_NONE, JText::_('COM_SEF_DISABLE_BASE_HREF')); $basehrefs[] = JHTML::_('select.option', _COM_SEF_BASE_IGNORE, JText::_('COM_SEF_LEAVE_ORIGINAL')); $lists['check_base_href'] = JHTML::_('select.genericlist', $basehrefs, 'check_base_href', 'class="inputbox" size="1"', 'value', 'text', $sefConfig->check_base_href); // www and non-www handling $wwws[] = JHTML::_('select.option', _COM_SEF_WWW_NONE, JText::_('COM_SEF_DONT_HANDLE')); $wwws[] = JHTML::_('select.option', _COM_SEF_WWW_USE_WWW, JText::_('COM_SEF_USE_WWW')); $wwws[] = JHTML::_('select.option', _COM_SEF_WWW_USE_NONWWW, JText::_('COM_SEF_USE_NON_WWW')); $lists['wwwHandling'] = JHTML::_('select.genericlist', $wwws, 'wwwHandling', 'class="inputbox" size="1"', 'value', 'text', $sefConfig->wwwHandling); $lists['langEnable'] = $this->booleanRadio('langEnable', $std_opt, $sefConfig->langEnable); $langPlacement=array(); $langPlacement[] = JHTML::_('select.option', _COM_SEF_LANG_PATH, JText::_('COM_SEF_INCLUDE_IN_PATH')); //$langPlacement[] = JHTML::_('select.option', _COM_SEF_LANG_SUFFIX, JText::_('COM_SEF_ADD_AS_SUFFIX')); $langPlacement[] = JHTML::_('select.option', _COM_SEF_LANG_DOMAIN, JText::_('COM_SEF_USE_DIFFERENT_DOMAINS')); $lists['langPlacementJoomla'] = JHTML::_('select.genericlist', $langPlacement, 'langPlacementJoomla', 'class="inputbox" size="1"', 'value', 'text', $sefConfig->langPlacementJoomla); $lists['alwaysUseLangJoomla'] = $this->booleanRadio('alwaysUseLangJoomla', $std_opt, $sefConfig->alwaysUseLangJoomla); $lists['alwaysUseLangHomeJoomla'] = $this->booleanRadio('alwaysUseLangHomeJoomla', $std_opt, $sefConfig->alwaysUseLangHomeJoomla); $lists['addLangMulti'] = $this->booleanRadio('addLangMulti', $std_opt, $sefConfig->addLangMulti); $lists['translateItems'] = $this->booleanRadio('translateItems',$std_opt,$sefConfig->translateItems); $lists['browserLangJoomla'] = $this->booleanRadio('browserLangJoomla', $std_opt, $sefConfig->browserLangJoomla); $lists['langCookieJoomla'] = $this->booleanRadio('langCookieJoomla', $std_opt, $sefConfig->langCookieJoomla); $langs = JLanguageHelper::getLanguages(); $subdomains = array(); $sitemaps = array(); $mainlangs = array(); foreach ($langs as $lang) { $l = new stdClass(); $l->title = $lang->title; $l->sef = $lang->sef; $l->value = isset($sefConfig->subDomainsJoomla[$l->sef]) ? $sefConfig->subDomainsJoomla[$l->sef] : JFactory::getUri()->getHost(); $subdomains[] = $l; $mainlangs[] = JHTML::_('select.option', $lang->sef, $lang->title, 'id', 'title'); $s = new stdClass(); $s->title = $lang->title; $s->sef = $lang->sef; $s->value = isset($sefConfig->multipleSitemapsFilenames[$lang->sef]) ? $sefConfig->multipleSitemapsFilenames[$lang->sef] : 'sitemap_'.$lang->sef; $sitemaps[] = $s; } $lists['mainLanguageJoomla'] = JHTML::_('select.genericlist', $mainlangs, 'mainLanguageJoomla', 'class="inputbox"', 'id', 'title', $sefConfig->mainLanguageJoomla); $lists['subdomainsJoomla'] = $subdomains; $lists['multipleSitemapsFilenames'] = $sitemaps; // Options for automatic VM currency selection according to language if (JFolder::exists(JPATH_ADMINISTRATOR.'/components/com_virtuemart')) { $lists['vm_installed'] = true; $lists['vmCurrencyEnable'] = $this->booleanRadio('vmCurrencyEnable', $std_opt, $sefConfig->vmCurrencyEnable); // Prepare array of available currencies (used modified SQL from mod_virtuemart_currencies) try { $query = "SELECT `vendor_accepted_currencies`, `vendor_currency` FROM `#__virtuemart_vendors` LIMIT 1"; $db->setQuery($query); $vendor_currency = $db->loadAssoc(); } catch (RuntimeException $e) { $vendor_currency = null; } if (!is_array($vendor_currency)) { $lists['vm_installed'] = false; } else { $accepted = trim($vendor_currency['vendor_accepted_currencies']); $currency = trim($vendor_currency['vendor_currency']); $allCurrencies = $accepted; if ($currency) $allCurrencies .= ($allCurrencies ? ',' : '').$currency; try { $query = "SELECT `virtuemart_currency_id` AS `id`, CONCAT_WS(' ', `currency_name`, `currency_symbol`) AS `title`" ." FROM `#__virtuemart_currencies` WHERE `virtuemart_currency_id` IN (".$allCurrencies.") AND published = '1' ORDER BY `ordering`, `currency_name`"; $db->setQuery($query); $currencies = $db->loadObjectList(); } catch (RuntimeException $e) { $currencies = null; } if (!is_array($currencies)) { $lists['vm_installed'] = false; } else { $lists['vmCurrency'] = array(); foreach ($langs as $lang) { $obj = new stdClass(); $def = isset($sefConfig->vmCurrency[$lang->sef]) ? $sefConfig->vmCurrency[$lang->sef] : null; $obj->list = JHTML::_('select.genericlist', $currencies, 'vmCurrency['.$lang->sef.']', 'class="inputbox"', 'id', 'title', $def); $obj->lang = $lang->title; $lists['vmCurrency'][] = $obj; } } } } else { $lists['vm_installed'] = false; } // Options to handle domain and SEF URL languages mismatch $opts = array(); $opts[] = JHTML::_('select.option', _COM_SEF_WRONG_DOMAIN_REDIRECT, JText::_('COM_SEF_WRONG_DOMAIN_REDIRECT')); $opts[] = JHTML::_('select.option', _COM_SEF_WRONG_DOMAIN_404, JText::_('COM_SEF_WRONG_DOMAIN_SHOW_404')); $opts[] = JHTML::_('select.option', _COM_SEF_WRONG_DOMAIN_DO_NOTHING, JText::_('COM_SEF_WRONG_DOMAIN_DO_NOTHING')); $lists['wrongDomainHandling'] = JHTML::_('select.genericlist', $opts, 'wrongDomainHandling', 'class="inputbox" size="1"', 'value', 'text', $sefConfig->wrongDomainHandling); // Options to handle language and Itemid mismatch $disabled = (JPluginHelper::isEnabled('system','falangdriver')) ? ' disabled="disabled"' : ''; $opts = array(); $opts[] = JHTML::_('select.option', _COM_SEF_MISMATCHED_LANG_DONT_HANDLE, JText::_('COM_SEF_MISMATCHED_LANG_DONT_HANDLE')); $opts[] = JHTML::_('select.option', _COM_SEF_MISMATCHED_LANG_DONT_SEF, JText::_('COM_SEF_MISMATCHED_LANG_DONT_SEF')); $opts[] = JHTML::_('select.option', _COM_SEF_MISMATCHED_LANG_FIX, JText::_('COM_SEF_MISMATCHED_LANG_FIX')); $lists['mismatchedLangHandling'] = JHTML::_('select.genericlist', $opts, 'mismatchedLangHandling', 'class="inputbox" size="1"'.$disabled, 'value', 'text', $sefConfig->mismatchedLangHandling); // Options to handle trailing slash redirect $opts = array(); $opts[] = JHTML::_('select.option', COM_SEF_REDIRECT_SLASH_NEVER, JText::_('COM_SEF_REDIRECT_SLASH_NEVER')); $opts[] = JHTML::_('select.option', COM_SEF_REDIRECT_SLASH_ALWAYS, JText::_('COM_SEF_REDIRECT_SLASH_ALWAYS')); $opts[] = JHTML::_('select.option', COM_SEF_REDIRECT_SLASH_EXISTING, JText::_('COM_SEF_REDIRECT_SLASH_EXISTING')); $lists['redirectSlash'] = JHTML::_('select.genericlist', $opts, 'redirectSlash', 'class="inputbox" size="1"', 'value', 'text', (int)$sefConfig->redirectSlash); $lists['record404'] = $this->booleanRadio('record404', $std_opt, $sefConfig->record404); $lists['msg404'] = $this->booleanRadio('showMessageOn404', $std_opt, $sefConfig->showMessageOn404); $lists['use404itemid'] = $this->booleanRadio('use404itemid', $std_opt, $sefConfig->use404itemid); $lists['nonSefRedirect'] = $this->booleanRadio('nonSefRedirect', $std_opt, $sefConfig->nonSefRedirect); $lists['useMoved'] = $this->booleanRadio('useMoved', $std_opt, $sefConfig->useMoved); $lists['useMovedAsk'] = $this->booleanRadio('useMovedAsk', $std_opt, $sefConfig->useMovedAsk); $lists['alwaysUseLang'] = $this->booleanRadio('alwaysUseLang', $std_opt, $sefConfig->alwaysUseLang); $lists['translateNames'] = $this->booleanRadio('translateNames', $std_opt, $sefConfig->translateNames); $lists['contentUseIndex'] = $this->booleanRadio('contentUseIndex', $std_opt, $sefConfig->contentUseIndex); $lists['allowUTF'] = $this->booleanRadio('allowUTF', $std_opt, $sefConfig->allowUTF); $lists['excludeSource'] = $this->booleanRadio('excludeSource', $std_opt, $sefConfig->excludeSource); $lists['reappendSource'] = $this->booleanRadio('reappendSource', $std_opt, $sefConfig->reappendSource); $lists['ignoreSource'] = $this->booleanRadio('ignoreSource', $std_opt, $sefConfig->ignoreSource); $lists['alwaysAddItemid'] = $this->booleanRadio('alwaysAddItemid', $std_opt, $sefConfig->alwaysAddItemid); $lists['appendNonSef'] = $this->booleanRadio('appendNonSef', $std_opt, $sefConfig->appendNonSef); $lists['transitSlash'] = $this->booleanRadio('transitSlash', $std_opt, $sefConfig->transitSlash); $lists['useCache'] = $this->booleanRadio('useCache', $std_opt, $sefConfig->useCache); $lists['numberDuplicates'] = $this->booleanRadio('numberDuplicates', $std_opt, $sefConfig->numberDuplicates); $lists['autoCanonical'] = $this->booleanRadio('autoCanonical', $std_opt, $sefConfig->autoCanonical); $lists['cacheRecordHits'] = $this->booleanRadio('cacheRecordHits', $std_opt, $sefConfig->cacheRecordHits); $lists['cacheShowErr'] = $this->booleanRadio('cacheShowErr', $std_opt, $sefConfig->cacheShowErr); $lists['sefComponentUrls'] = $this->booleanRadio('sefComponentUrls', $std_opt, $sefConfig->sefComponentUrls); $lists['versionChecker'] = $this->booleanRadio('versionChecker', $std_opt, $sefConfig->versionChecker); $lists['artioFeedDisplay'] = $this->booleanRadio('artioFeedDisplay', $std_opt, $sefConfig->artioFeedDisplay); $lists['fixIndexPhp'] = $this->booleanRadio('fixIndexPhp', $std_opt, $sefConfig->fixIndexPhp); $lists['fixDocumentFormat'] = $this->booleanRadio('fixDocumentFormat', $std_opt, $sefConfig->fixDocumentFormat); $lists['nonSefQueryVariables'] = $this->booleanRadio('nonSefQueryVariables', $std_opt, $sefConfig->nonSefQueryVariables); $lists['autolock_urls'] = $this->booleanRadio('autolock_urls', $std_opt, $sefConfig->autolock_urls); // #22937: Not used now //$lists['update_urls'] = $this->booleanRadio('update_urls', $std_opt, $sefConfig->update_urls); $lists['rootLangRedirect303'] = $this->booleanRadio('rootLangRedirect303', $std_opt, $sefConfig->rootLangRedirect303); $lists['indexPhpCurrentMenu'] = $this->booleanRadio('indexPhpCurrentMenu', $std_opt, $sefConfig->indexPhpCurrentMenu); $lists['langMenuAssociations'] = $this->booleanRadio('langMenuAssociations', $std_opt, $sefConfig->langMenuAssociations); $lists['homePageHits'] = $this->booleanRadio('homePageHits', $std_opt, $sefConfig->homePageHits); $lists['canonicalsRemove'] = $this->booleanRadio('canonicalsRemove', $std_opt, $sefConfig->canonicalsRemove); $lists['canonicalsFix'] = $this->booleanRadio('canonicalsFix', $std_opt, $sefConfig->canonicalsFix); $lists['chunkedExport'] = $this->booleanRadio('chunkedExport', $std_opt, $sefConfig->chunkedExport); $lists['cacheSize'] = '<input type="text" name="cacheSize" size="10" class="inputbox" value="'.$sefConfig->cacheSize.'" />'; $lists['cacheMinHits'] = '<input type="text" name="cacheMinHits" size="10" class="inputbox" value="'.$sefConfig->cacheMinHits.'" />'; $lists['junkWords'] = '<input type="text" name="junkWords" size="40" class="inputbox" value="'.$sefConfig->junkWords.'" />'; $lists['junkExclude'] = '<input type="text" name="junkExclude" size="40" class="inputbox" value="'.$sefConfig->junkExclude.'" />'; $lists['tag_generator'] = '<input type="text" name="tag_generator" size="60" class="inputbox" value="'.$sefConfig->tag_generator.'" />'; $lists['tag_googlekey'] = '<input type="text" name="tag_googlekey" size="60" class="inputbox" value="'.$sefConfig->tag_googlekey.'" />'; $lists['tag_livekey'] = '<input type="text" name="tag_livekey" size="60" class="inputbox" value="'.$sefConfig->tag_livekey.'" />'; $lists['tag_yahookey'] = '<input type="text" name="tag_yahookey" size="60" class="inputbox" value="'.$sefConfig->tag_yahookey.'" />'; $lists['artioUserName'] = '<input type="text" name="artioUserName" size="60" class="inputbox" value="'.$sefConfig->artioUserName.'" />'; $lists['artioPassword'] = '<input type="password" name="artioPassword" size="60" class="inputbox" value="'.$sefConfig->artioPassword.'" />'; $lists['artioDownloadId'] = '<input type="text" name="artioDownloadId" size="60" class="inputbox" value="'.$sefConfig->artioDownloadId.'" />'; $lists['logErrors'] = $this->booleanRadio('logErrors', $std_opt, $sefConfig->logErrors); $lists['trace'] = $this->booleanRadio('trace', $std_opt, $sefConfig->trace); $lists['traceLevel'] = '<input type="text" name="traceLevel" size="2" class="inputbox" value="'.$sefConfig->traceLevel.'" />'; $useSitenameOpts[] = JHTML::_('select.option', _COM_SEF_SITENAME_BEFORE, JText::_('COM_SEF_BEFORE_PAGE_TITLE')); $useSitenameOpts[] = JHTML::_('select.option', _COM_SEF_SITENAME_AFTER, JText::_('COM_SEF_AFTER_PAGE_TITLE')); $useSitenameOpts[] = JHTML::_('select.option', _COM_SEF_SITENAME_NO, JText::_('COM_SEF_NO')); $lists['use_sitename'] = JHTML::_('select.genericlist', $useSitenameOpts, 'use_sitename', 'class="inputbox" size="1"', 'value', 'text', $sefConfig->use_sitename); // metadata $lists['enable_metadata'] = $this->booleanRadio('enable_metadata', $std_opt, $sefConfig->enable_metadata); $metadataGenerateOpts[] = JHTML::_('select.option', _COM_SEF_META_GEN_EMPTY, JText::_('COM_SEF_ONLY_IF_ORIGINAL_EMPTY')); $metadataGenerateOpts[] = JHTML::_('select.option', _COM_SEF_META_GEN_ALWAYS, JText::_('COM_SEF_ALWAYS')); $metadataGenerateOpts[] = JHTML::_('select.option', _COM_SEF_META_GEN_NEVER, JText::_('COM_SEF_NEVER')); $lists['metadata_auto'] = JHTML::_('select.genericlist', $metadataGenerateOpts, 'metadata_auto', 'class="inputbox" size="1"', 'value', 'text', $sefConfig->metadata_auto); $metadataPriorityOpts[] = JHTML::_('select.option', _COM_SEF_META_PR_ORIGINAL, JText::_('COM_SEF_PREFER_ORIGINAL')); $metadataPriorityOpts[] = JHTML::_('select.option', _COM_SEF_META_PR_JOOMSEF, JText::_('COM_SEF_PREFER_JOOMSEF')); $metadataPriorityOpts[] = JHTML::_('select.option', _COM_SEF_META_PR_JOIN, JText::_('COM_SEF_JOIN_BOTH')); $lists['rewrite_keywords'] = JHTML::_('select.genericlist', $metadataPriorityOpts, 'rewrite_keywords', 'class="inputbox" size="1"', 'value', 'text', $sefConfig->rewrite_keywords); $lists['rewrite_description'] = JHTML::_('select.genericlist', $metadataPriorityOpts, 'rewrite_description', 'class="inputbox" size="1"', 'value', 'text', $sefConfig->rewrite_description); $lists['prefer_joomsef_title'] = $this->booleanRadio('prefer_joomsef_title', $std_opt, $sefConfig->prefer_joomsef_title); $lists['sitename_sep'] = '<input type="text" name="sitename_sep" size="10" class="inputbox" value="'.$sefConfig->sitename_sep.'" />'; //$lists['rewrite_keywords'] = $this->booleanRadio('rewrite_keywords', $std_opt, $sefConfig->rewrite_keywords); //$lists['rewrite_description'] = $this->booleanRadio('rewrite_description', $std_opt, $sefConfig->rewrite_description); $lists['prevent_dupl'] = $this->booleanRadio('prevent_dupl', $std_opt, $sefConfig->prevent_dupl); $aliases[] = JHTML::_('select.option', '0', JText::_('COM_SEF_FULL_TITLE')); $aliases[] = JHTML::_('select.option', '1', JText::_('COM_SEF_TITLE_ALIAS')); $lists['useAlias'] = JHTML::_('select.genericlist', $aliases, 'useAlias', 'class="inputbox" size="1"', 'value', 'text', $sefConfig->useAlias); // get a list of the static content items for 404 page $query = "SELECT id, title" ."\n FROM #__content" ."\n WHERE title != '404'" ."\n AND catid = 0" ."\n ORDER BY ordering" ; $db->setQuery( $query ); $items = $db->loadObjectList(); $options = array(JHTML::_('select.option', _COM_SEF_404_DEFAULT, '('.JText::_('COM_SEF_CUSTOM_404_PAGE').')')); $options[] = JHTML::_('select.option', _COM_SEF_404_FRONTPAGE, '('.JText::_('COM_SEF_FRONT_PAGE').')'); $options[] = JHTML::_('select.option', _COM_SEF_404_JOOMLA, '('.JText::_('COM_SEF_404_JOOMLA').')'); // assemble menu items to the array foreach ( $items as $item ) { $options[] = JHTML::_('select.option', $item->id, $item->title); } $lists['page404'] = JHTML::_('select.genericlist', $options, 'page404', 'class="inputbox" size="1"', 'value', 'text', $sefConfig->page404 ); // Get the menu selection list $selections = $this->linkoptions(); $lists['itemid404'] = JHTML::_('select.genericlist', $selections, 'itemid404', 'class="inputbox" size="1"', 'value', 'text', $sefConfig->itemid404 ); $sql="SELECT `id`, `introtext` FROM `#__content` WHERE `title` = '404'"; $row = null; $db->setQuery($sql); $row = $db->loadObject(); $lists['txt404'] = isset($row->introtext) ? $row->introtext : JText::_('COM_SEF_ERROR_DEFAULT_404'); $lists["google_email"]=$sefConfig->google_email; $lists["google_password"]=$sefConfig->google_password; $lists["google_id"]=$sefConfig->google_id; $lists["google_apikey"]=$sefConfig->google_apikey; $lists["google_enable"]=$this->booleanRadio('google_enable',$std_opt,$sefConfig->google_enable); $lists["google_demographic_reports"]=$this->booleanRadio('google_demographic_reports',$std_opt,$sefConfig->google_demographic_reports); $lists["google_link_attribution"]=$this->booleanRadio('google_link_attribution',$std_opt,$sefConfig->google_link_attribution); $lists["google_exclude_ip"]=$sefConfig->google_exclude_ip; $lists["google_exclude_level"]=JHTML::_('access.usergroup','google_exclude_level[]',$sefConfig->google_exclude_level,'class="inputbox" multiple="multiple" size="10"',false); foreach($this->getLangs() as $sef=>$lang) { $lists['subdomains_menus'][$sef] = JHTML::_('select.genericlist',$this->_getMenuItems($lang->lang_code),'subdomain_Itemid'); } $lists['subdomains_remove'] = '<input class="button" type="button" onclick="remove_subdomain(this);" value="'.Jtext::_('COM_SEF_REMOVE_SUBDOMAIN').'" />'; // Joomla cache info $conf = JFactory::getConfig(); if ($conf->get('caching', '0') != '0') { $state = '<span style="color: green;">'.JText::_('COM_SEF_ENABLED').'</span>'; } else { $state = '<span style="color: red;">'.JText::_('COM_SEF_DISABLED').'</span>'; } $lists['cache_info'] = JText::sprintf('COM_SEF_CACHE_INFO', $state); $this->_lists = $lists; return $this->_lists; } private function _getMenuItems($lang) { $db = JFactory::getDbo(); $db->setQuery( 'SELECT menutype AS value, title AS text' . ' FROM #__menu_types' . ' ORDER BY title' ); $menus = $db->loadObjectList(); $query = $db->getQuery(true); $query->select('a.id AS value, a.title AS text, a.level, a.menutype'); $query->from('#__menu AS a'); $query->where('a.parent_id > 0'); $query->where('a.type <> '.$db->quote('url')); $query->where('a.client_id = 0'); $query->where('a.language IN('.$db->quote($lang).','.$db->quote('*').')'); $query->order('a.lft'); //echo str_replace('#__','jos_',$query)."<br>"; $db->setQuery($query); $items = $db->loadObjectList(); // Collate menu items based on menutype $lookup = array(); foreach ($items as &$item) { if (!isset($lookup[$item->menutype])) { $lookup[$item->menutype] = array(); } $lookup[$item->menutype][] = &$item; $item->text = str_repeat('- ', $item->level).$item->text; } $items = array(); foreach ($menus as &$menu) { // Start group: $items[] = JHtml::_('select.optgroup', $menu->text); // Special "Add to this Menu" option: //$items[] = JHtml::_('select.option', '1', JText::_('JLIB_HTML_ADD_TO_THIS_MENU')); // Menu items: if (isset($lookup[$menu->value])) { foreach ($lookup[$menu->value] as &$item) { $items[] = JHtml::_('select.option', $item->value, $item->text); } } // Finish group: $items[] = JHtml::_('select.optgroup', $menu->text); } return $items; } function getSubDomains() { $menu=JHTML::_('menu.menuitems'); $query="SELECT * FROM `#__sef_subdomains`"; $query.=" WHERE `option`=".$this->_db->quote(""); $query.=" ORDER BY `subdomain`"; $this->_db->setQuery($query); $subdomains_o=$this->_db->loadObjectList(); $subdomains=array(); $lang = JFactory::getLanguage(); $tag = $lang->getDefault(); $this->_db->setQuery("SELECT sef FROM #__languages WHERE lang_code = ".$this->_db->quote($tag)); $sef = $this->_db->loadResult(); foreach($subdomains_o as $subdomain) { if (empty($subdomain->lang)) { $subdomain->lang = $sef; } $subdomains[$subdomain->lang][]=$subdomain; } $data=array(); foreach($subdomains as $lang=>$lsubdomains) { foreach($lsubdomains as $i=>$subdomain) { $menu=$this->_getMenuItems($this->_langs[$subdomain->lang]->lang_code); $item=new stdClass(); $item->subdomain=$subdomain->subdomain; $item->Itemid=JHTML::_('select.genericlist',$menu,'subdomain[Itemid]['.$subdomain->lang.']['.$i.'][]',array('list.attr'=>array('size'=>10,'multiple'=>'multiple'),'list.select'=>explode(",",$subdomain->Itemid))); $item->Itemid_titlepage=JHTML::_('select.genericlist',$menu,'subdomain[titlepage]['.$subdomain->lang.']['.$i.']',array('list.select'=>$subdomains_o[$i]->Itemid_titlepage)); $data[$subdomain->lang][]=$item; } } return $data; } function getLangs() { return $this->_langs=JLanguageHelper::getLanguages('sef'); } /** * Method to store a record * * @access public * @return boolean True on success */ function store() { $db = JFactory::getDBO(); $sefConfig = SEFConfig::getConfig(); $sef_config_file = JPATH_COMPONENT . '/' . 'configuration.php'; // Get POST variables through Joomla API to correctly support magic_quotes_gpc $post = JRequest::get('POST', JREQUEST_NOTRIM | JREQUEST_ALLOWRAW); // Unset the empty meta tags if (isset($post['metanames']) && is_array($post['metanames'])) { for ($i = 0, $n = count($post['metanames']); $i < $n; $i++) { if (empty($post['metanames'][$i])) { unset($post['metanames'][$i]); if (isset($post['metacontents'][$i])) { unset($post['metacontents'][$i]); } } } // Create the associative array of custom meta tags $post['customMetaTags'] = array_combine($post['metanames'], $post['metacontents']); } else { // No meta tags $post['customMetaTags'] = array(); } // Parse the sitemap ping services if (isset($post['sitemap_services']) && !empty($post['sitemap_services'])) { $services = str_replace("\r", '', $post['sitemap_services']); $services = array_map('trim', explode("\n", $services)); $post['sitemap_services'] = $services; } else { $post['sitemap_services'] = array(); } // Check empty google_exclude_level if (!isset($post['google_exclude_level'])) { $post['google_exclude_level'] = array(); } // Set values foreach($post as $key => $value) { $sefConfig->set($key, $value); } // 404 $sql = 'SELECT id,language FROM #__content WHERE `title` = "404"'; $db->setQuery( $sql ); $introtext = $post['introtext']; if ($page404 = $db->loadObject()){ $sql = 'UPDATE #__content SET introtext='.$db->quote($introtext).', modified ='.$db->quote(date("Y-m-d H:i:s")).(($page404->language == '') ? ', language="*"' : '').' WHERE `id` = '.$db->quote($page404->id).';'; } else { $sql = 'INSERT INTO #__content (title, alias, introtext, `fulltext`, state, catid, created, created_by, created_by_alias, modified, modified_by, publish_up, publish_down, images, urls, attribs, version, ordering, metakey, metadesc, access, hits, language) '. 'VALUES ("404", "404", '.$db->quote($introtext).', "", "1", "0", '.$db->quote(date("Y-m-d H:i:s")).', "'.JFactory::getUser()->id.'", "", "0000-00-00 00:00:00", "0", "2001-01-01 00:00:00", "0000-00-00 00:00:00", "", "", "menu_image=-1\nitem_title=0\npageclass_sfx=\nback_button=\nrating=0\nauthor=0\ncreatedate=0\nmodifydate=0\npdf=0\nprint=0\nemail=0", "1", "0", "", "", "1", "0", "*");'; } $db->setQuery( $sql ); if (!$db->query()) { echo "<script> alert('".addslashes($db->getErrorMsg())."'); window.history.go(-1); </script>\n"; exit(); } // Check the domains configuration if( count($sefConfig->jfSubDomains) ) { foreach($sefConfig->jfSubDomains as $code => $domain) { $domain = str_replace(array('http://', 'https://'), '', $domain); $domain = preg_replace('#/.*$#', '', $domain); $sefConfig->jfSubDomains[$code] = $domain; } } $subdomains=JRequest::getVar('subdomain',array(),'post','array'); $query="DELETE FROM #__sef_subdomains \n"; $query.="WHERE `option`=".$this->_db->quote(""); $this->_db->setQuery($query); if(!$this->_db->query()) { $this->setError($this->_db->stderr(true)); return false; } if (isset($subdomains['title']) && is_array($subdomains['title'])) { foreach($subdomains["title"] as $lang=>$items) { foreach($items as $i=>$item) { $query="INSERT INTO #__sef_subdomains SET subdomain=".$this->_db->quote($item).", Itemid=".$this->_db->quote(implode(",",$subdomains["Itemid"][$lang][$i])).", \n"; $query.="Itemid_titlepage=".$this->_db->quote($subdomains["titlepage"][$lang][$i]).", lang=".$this->_db->quote($lang)." \n"; $this->_db->setQuery($query); if(!$this->_db->query()) { $this->setError($this->_db->stderr(true)); return false; } } } } if (!AUpdateHelper::setUpdateLink('com_joomsef', $sefConfig->artioDownloadId)) { return false; } $config_written = $sefConfig->saveConfig(0); if( $config_written != 0 ) { if($sefConfig->langEnable) { $query=$db->getQuery(true); $query->select('enabled')->from('#__extensions')->where('element='.$db->quote('languagefilter')); $db->setQuery($query); $enabled=$db->loadResult(); if($enabled==1) { JError::raiseWarning('',JText::_('COM_JOOMSEF_DISABLE_LANGUAGEFILTER')); } } return true; } else { return false; } } /** * Fixed version of JHtmlMenu::linkoptions() for Joomla 3.0 * until the bug with missing m.ordering column is fixed */ protected function linkoptions($all = false, $unassigned = false) { if (!class_exists('JHtmlMenu')) { require_once(JPATH_LIBRARIES.'/joomla/html/html/menu.php'); } $db = JFactory::getDbo(); $query = $db->getQuery(true); // Get a list of the menu items $query->select('m.id, m.parent_id, m.title, m.menutype'); $query->from($db->quoteName('#__menu') . ' AS m'); $query->where($db->quoteName('m.published') . ' = 1'); $query->order('m.menutype, m.parent_id, m.lft'); $db->setQuery($query); $mitems = $db->loadObjectList(); if (!$mitems) { $mitems = array(); } // Establish the hierarchy of the menu $children = array(); // First pass - collect children foreach ($mitems as $v) { $pt = $v->parent_id; $list = @$children[$pt] ? $children[$pt] : array(); array_push($list, $v); $children[$pt] = $list; } // Second pass - get an indent list of the items $list = JHtmlMenu::TreeRecurse((int) $mitems[0]->parent_id, '', array(), $children, 9999, 0, 0); // Code that adds menu name to Display of Page(s) $mitems = array(); if ($all | $unassigned) { $mitems[] = JHtml::_('select.option', '<OPTGROUP>', JText::_('JOPTION_MENUS')); if ($all) { $mitems[] = JHtml::_('select.option', 0, JText::_('JALL')); } if ($unassigned) { $mitems[] = JHtml::_('select.option', -1, JText::_('JOPTION_UNASSIGNED')); } $mitems[] = JHtml::_('select.option', '</OPTGROUP>'); } $lastMenuType = null; $tmpMenuType = null; foreach ($list as $list_a) { if ($list_a->menutype != $lastMenuType) { if ($tmpMenuType) { $mitems[] = JHtml::_('select.option', '</OPTGROUP>'); } $mitems[] = JHtml::_('select.option', '<OPTGROUP>', $list_a->menutype); $lastMenuType = $list_a->menutype; $tmpMenuType = $list_a->menutype; } $mitems[] = JHtml::_('select.option', $list_a->id, $list_a->title); } if ($lastMenuType !== null) { $mitems[] = JHtml::_('select.option', '</OPTGROUP>'); } return $mitems; } } ?>
| ver. 1.4 |
Github
|
.
| PHP 5.4.45-1~dotdeb+6.1 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка