• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

PHP shRouter类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了PHP中shRouter的典型用法代码示例。如果您正苦于以下问题:PHP shRouter类的具体用法?PHP shRouter怎么用?PHP shRouter使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了shRouter类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的PHP代码示例。

示例1: array

 /**
  * Get a Extplugin object for the requested extension
  * If no specific plugin is found, the default, generic
  * public is used instead
  *
  * @param string $option the Joomla! component name. Should begin with "com_"
  * @return object Sh404sefExtpluginBaseextplugin descendant
  */
 public static function &getExtensionPlugin($option)
 {
     static $_plugins = array();
     if (empty($option)) {
         $option = 'default';
     }
     // plugin is cached, check if we already created
     // the plugin for $option
     if (empty($_plugins[$option])) {
         // build the class name for this plugin
         // autolaoder will find the appropriate file and load it
         // if not loaded
         if ($option !== 'default' && strpos($option, 'com_') !== 0) {
             $option = 'com_' . $option;
         }
         $className = 'Sh404sefExtplugin' . ucfirst(strtolower($option));
         // does this class exists?
         $sefConfig =& shRouter::shGetConfig();
         if (class_exists($className, $autoload = true)) {
             // instantiate plugin
             $_plugins[$option] = new $className($option, $sefConfig);
         } else {
             // else use generic plugin
             $_plugins[$option] = new Sh404sefExtpluginDefault($option, $sefConfig);
         }
     }
     // return cached plugin
     return $_plugins[$option];
 }
开发者ID:sangkasi,项目名称:joomla,代码行数:37,代码来源:sh404seffactory.php


示例2: shGetNEWSPCategories

 function shGetNEWSPCategories($catId, $option, $shLangName, &$cat, &$sec)
 {
     if (empty($catId)) {
         return false;
     }
     static $catData = null;
     $sefConfig =& shRouter::shGetConfig();
     if (!is_null($catData[$shLangName][$catId])) {
         // get DB
         $database =& JFactory::getDBO();
         $query = "SELECT c.id, c.section, c.title, s.id as sectionid, s.title as stitle" . "\n FROM #__categories as c, #__sections as s" . "\n WHERE " . "\n s.id = c.section" . "\n AND c.id = '" . $catId . "'";
         $database->setQuery($query);
         if (shTranslateUrl($option, $shLangName)) {
             $categories = $database->loadObjectList();
         } else {
             $categories = $database->loadObjectList(false);
         }
         if (!empty($categories)) {
             $sec = ($sefConfig->shNewsPInsertSecId ? $sectionId . $sefConfig->replacement : '') . $categories[0]->stitle;
             // section
             $cat = ($sefConfig->shNewsPInsertCatId ? $sectionId . $sefConfig->replacement : '') . $categories[0]->title;
             // category
             $catData[$shLangName][$catId]['cat'] = $cat;
             $catData[$shLangName][$catId]['sec'] = $sec;
         }
     } else {
         $cat = $catData[$shLangName][$catId]['cat'];
         $sec = $catData[$shLangName][$catId]['sec'];
     }
     return !empty($cat);
 }
开发者ID:sangkasi,项目名称:joomla,代码行数:31,代码来源:com_news_portal.php


示例3: dm_sef_get_category_array

 function dm_sef_get_category_array($category_id, $option, $shLangName)
 {
     global $shMosConfig_locale;
     $sefConfig =& shRouter::shGetConfig();
     // get DB
     $database =& JFactory::getDBO();
     static $DMtree = null;
     if (empty($tree[$shMosConfig_locale])) {
         $q = "SELECT id, title, parent_id FROM #__categories";
         // load them all in memory
         $database->setQuery($q);
         if (!shTranslateUrl($option, $shLangName)) {
             // V 1.2.4.m
             $DMtree[$shMosConfig_locale] = $database->loadObjectList('id', false);
         } else {
             $DMtree[$shMosConfig_locale] = $database->loadObjectList('id');
         }
     }
     $title = array();
     if ($sefConfig->shDMInsertCategories == 1) {
         // only one category
         $title[] = ($sefConfig->shDMInsertCategoryId ? $DMtree[$shMosConfig_locale][$category_id]->id . $sefConfig->replacement : '') . $DMtree[$shMosConfig_locale][$category_id]->title;
     } else {
         do {
             // all categories and subcategories. We don't really need id, as path
             $title[] = ($sefConfig->shDMInsertCategoryId ? $DMtree[$shMosConfig_locale][$category_id]->id . $sefConfig->replacement : '') . $DMtree[$shMosConfig_locale][$category_id]->title;
             // will always be unique
             $category_id = $DMtree[$shMosConfig_locale][$category_id]->parent_id;
         } while ($category_id != 0);
     }
     return array_reverse($title);
 }
开发者ID:justinlyon,项目名称:scc,代码行数:32,代码来源:com_docman.php


示例4: vm_sef_get_category_title

function vm_sef_get_category_title(&$db, &$catDesc, $category_id, $option, $shLangName)
{
    global $shMosConfig_locale;
    $sefConfig =& shRouter::shGetConfig();
    if (empty($category_id)) {
        return '';
    }
    $q = "SELECT c.category_name, c.category_id, c.category_description, x.category_parent_id FROM #__vm_category AS c";
    $q .= "\n LEFT JOIN #__vm_category_xref AS x ON c.category_id = x.category_child_id;";
    $db->setQuery($q);
    if (!shTranslateUrl($option, $shLangName)) {
        // V 1.2.4.m
        $tree = $db->loadObjectList('category_id', false);
    } else {
        $tree = $db->loadObjectList('category_id');
    }
    $catDesc = $tree[$category_id]->category_description;
    $title = '';
    $securityCounter = 0;
    do {
        // all categories and subcategories
        $securityCounter++;
        $title .= ($sefConfig->shInsertCategoryId ? $tree[$category_id]->category_id . $sefConfig->replacement : '') . $tree[$category_id]->category_name . ' | ';
        $category_id = $tree[$category_id]->category_parent_id;
    } while ($category_id != 0 && $securityCounter < 10);
    if ($securityCounter >= 10) {
        JError::raiseError(500, 'Unable to create SEF url for Virtuemart: could not find category with id : ' . $category_id);
    }
    return JString::rtrim($title, ' | ');
}
开发者ID:sangkasi,项目名称:joomla,代码行数:30,代码来源:com_virtuemart.php


示例5: display

 public function display($tpl = null)
 {
     // get model and update context with current
     $model =& $this->getModel();
     $context = $model->setContext($this->_context . '.' . $this->getLayout());
     // display type: simple for very large sites/slow slq servers
     $sefConfig =& shRouter::shGetConfig();
     // if set for a slowServer, display simplified version of the url manager
     $this->assign('slowServer', $sefConfig->slowServer);
     // read data from model
     $list =& $model->getList((object) array('layout' => $this->getLayout(), 'simpleUrlList' => $this->slowServer, 'slowServer' => $sefConfig->slowServer));
     // and push it into the view for display
     $this->assign('items', $list);
     $this->assign('itemCount', count($this->items));
     $this->assign('pagination', $model->getPagination((object) array('layout' => $this->getLayout(), 'simpleUrlList' => $this->slowServer, 'slowServer' => $sefConfig->slowServer)));
     $options = $model->getDisplayOptions();
     $this->assign('options', $options);
     $this->assign('optionsSelect', $this->_makeOptionsSelect($options));
     // add behaviors and styles as needed
     $modalSelector = 'a.modalediturl';
     $js = '\\function(){shAlreadySqueezed = false;if(parent.shReloadModal) {parent.window.location=\'' . $this->defaultRedirectUrl . '\';parent.shReloadModal=true}}';
     $params = array('overlayOpacity' => 0, 'classWindow' => 'sh404sef-popup', 'classOverlay' => 'sh404sef-popup', 'onClose' => $js);
     Sh404sefHelperHtml::modal($modalSelector, $params);
     // build the toolbar
     $toolbarMethod = '_makeToolbar' . ucfirst($this->getLayout());
     if (is_callable(array($this, $toolbarMethod))) {
         $this->{$toolbarMethod}($params);
     }
     // add our own css
     JHtml::styleSheet('urls.css', Sh404sefHelperGeneral::getComponentUrl() . '/assets/css/');
     // link to  custom javascript
     JHtml::script('list.js', Sh404sefHelperGeneral::getComponentUrl() . '/assets/js/');
     // now display normally
     parent::display($tpl);
 }
开发者ID:sangkasi,项目名称:joomla,代码行数:35,代码来源:view.html.php


示例6: _prepareControlPanelData

 private function _prepareControlPanelData()
 {
     $sefConfig =& shRouter::shGetConfig();
     $this->assign('sefConfig', $sefConfig);
     // update information
     $versionsInfo = Sh404sefHelperUpdates::getUpdatesInfos();
     $this->assign('updates', $versionsInfo);
     // url databases stats
     $database =& JFactory::getDBO();
     $sql = 'SELECT count(*) FROM #__redirection WHERE ';
     $database->setQuery($sql . "`dateadd` > '0000-00-00' and `newurl` = '' ");
     // 404
     $Count404 = $database->loadResult();
     $database->setQuery($sql . "`dateadd` > '0000-00-00' and `newurl` != '' ");
     // custom
     $customCount = $database->loadResult();
     $database->setQuery($sql . "`dateadd` = '0000-00-00'");
     // regular
     $sefCount = $database->loadResult();
     // calculate security stats
     $default = empty($sefConfig->shSecLastUpdated) ? '- -' : '0';
     $this->assign('sefCount', $sefCount);
     $this->assign('Count404', $Count404);
     $this->assign('customCount', $customCount);
 }
开发者ID:justinlyon,项目名称:scc,代码行数:25,代码来源:view.html.php


示例7: _makeViewDashboard

 /**
  * Prepare and display the control panel
  * dashboard, which is a simplified view
  * of main analytics results
  * 
  * @param string $tpl layout name
  */
 private function _makeViewDashboard($tpl)
 {
     // get configuration object
     $sefConfig =& shRouter::shGetConfig();
     // push it into to the view
     $this->assignRef('sefConfig', $sefConfig);
     // get analytics data using helper, possibly from cache
     $analyticsData = Sh404sefHelperAnalytics::getData($this->options);
     // push analytics stats into view
     $this->assign('analytics', $analyticsData);
 }
开发者ID:sangkasi,项目名称:joomla,代码行数:18,代码来源:view.raw.php


示例8: shAkeebasubsMenuName

 function shAkeebasubsMenuName($task, $Itemid, $option, $shLangName)
 {
     $sefConfig =& shRouter::shGetConfig();
     $shArsDownloadName = shGetComponentPrefix($option);
     if (empty($shArsDownloadName)) {
         $shArsDownloadName = getMenuTitle($option, $task, $Itemid, null, $shLangName);
     }
     if (empty($shArsDownloadName) || $shArsDownloadName == '/') {
         $shArsDownloadName = 'AkeebaReleaseSystem';
     }
     return str_replace('.', $sefConfig->replacement, $shArsDownloadName);
 }
开发者ID:jonatasmm,项目名称:akeebasubs,代码行数:12,代码来源:com_akeebasubs.php


示例9:

 protected static function &_getInstance($type = 'file')
 {
     static $_instance = null;
     if (empty($_instance)) {
         // get global config
         $config =& shRouter::shGetConfig();
         // instantiate object
         $className = 'Sh404sefClass' . $type . 'cache';
         $_instance = new $className($config);
     }
     return $_instance;
 }
开发者ID:sangkasi,项目名称:joomla,代码行数:12,代码来源:cache.php


示例10: shGetContactCategory

 function shGetContactCategory($id, $shLangName)
 {
     $sefConfig =& shRouter::shGetConfig();
     if (empty($sefConfig->insertContactCat)) {
         return '';
     }
     if (empty($id)) {
         return '';
     }
     $cat = sef_404::getcategories($id, $shLangName, 'com_contact_details');
     return $cat;
 }
开发者ID:sangkasi,项目名称:joomla,代码行数:12,代码来源:com_contact.php


示例11: shSobi2GetItemName

 function shSobi2GetItemName($id)
 {
     $database =& JFactory::getDBO();
     if (empty($id)) {
         return '';
     }
     $sefConfig = shRouter::shGetConfig();
     $query = "SELECT `title` FROM `#__sobi2_item` WHERE (`itemid`={$id} AND `published` = 1)";
     $database->setQuery($query);
     $ret = (sh404SEF_SOBI2_PARAMS_INCLUDE_ENTRY_ID ? $id . $sefConfig->replacement : '') . html_entity_decode($database->loadResult());
     // V 1.2.4.t added html_entit_decode
     return $ret;
 }
开发者ID:justinlyon,项目名称:scc,代码行数:13,代码来源:com_sobi2.php


示例12: _doQuickControl

 private function _doQuickControl($tpl)
 {
     // get configuration object
     $sefConfig =& shRouter::shGetConfig();
     // push it into to the view
     $this->assignRef('sefConfig', $sefConfig);
     // push any message
     $error = $this->getError();
     if (empty($error)) {
         $noMsg = JRequest::getInt('noMsg', 0);
         if (empty($noMsg)) {
             $this->assign('message', JText16::_('COM_SH404SEF_ELEMENT_SAVED'));
         }
     }
     parent::display($tpl);
 }
开发者ID:sangkasi,项目名称:joomla,代码行数:16,代码来源:view.raw.php


示例13: _shDecodeSecLogLine

 private function _shDecodeSecLogLine($line)
 {
     $sefConfig =& shRouter::shGetConfig();
     if (preg_match('/[0-9]{2}\\-[0-9]{2}\\-[0-9]{2}/', $line)) {
         // this is not header or comment line
         $sefConfig->shSecTotalAttacks++;
         $bits = explode("\t", $line);
         switch (substr($bits[2], 0, 15)) {
             case 'Flooding':
                 $sefConfig->shSecTotalFlooding++;
                 break;
             case 'Caught by Honey':
                 $sefConfig->shSecTotalPHP++;
                 break;
             case 'Honey Pot but u':
                 $sefConfig->shSecTotalPHPUserClicked++;
                 break;
             case 'Var not numeric':
             case 'Var not alpha-n':
             case 'Var contains ou':
                 $sefConfig->shSecTotalStandardVars++;
                 break;
             case 'Image file name':
                 $sefConfig->shSecTotalImgTxtCmd++;
                 break;
             case '<script> tag in':
                 $sefConfig->shSecTotalScripts++;
                 break;
             case 'Base 64 encoded':
                 $sefConfig->shSecTotalBase64++;
                 break;
             case 'mosConfig_var i':
                 $sefConfig->shSecTotalConfigVars++;
                 break;
             case 'Blacklisted IP':
                 $sefConfig->shSecTotalIPDenied++;
                 break;
             case 'Blacklisted use':
                 $sefConfig->shSecTotalUserAgentDenied++;
                 break;
             default:
                 // if not one of those, then it's a 404, don't count it as an attack
                 $sefConfig->shSecTotalAttacks--;
                 break;
         }
     }
 }
开发者ID:justinlyon,项目名称:scc,代码行数:47,代码来源:security.php


示例14: shSimpleLogger

 function shSimpleLogger($siteName, $basePath, $fileName, $isActive)
 {
     $sefConfig = shRouter::shGetConfig();
     if (empty($isActive)) {
         $this->isActive = 0;
         return;
     } else {
         $this->isActive = 1;
     }
     $traceFileName = $basePath . $sefConfig->debugStartedAt . '.' . $fileName . '_' . str_replace('/', '_', str_replace('http://', '', $siteName)) . '.log';
     // Create file
     $fileIsThere = file_exists($traceFileName);
     $sep = "\t";
     if (!$fileIsThere) {
         // create file
         $fileHeader = 'sh404SEF trace file - created : ' . $this->logTime() . ' for ' . $siteName . "\n\n" . str_repeat('-', 25) . ' PHP Configuration ' . str_repeat('-', 25) . "\n\n";
         $config = $this->parsePHPConfig();
         $line = str_repeat('-', 69) . "\n\n";
         // look for ob handlers, as we cannot use print_r from one (thanks Moovur !)
         $handlers = ob_list_handlers();
         $line .= "\nHandlers found : " . count($handlers);
         if (!empty($handlers)) {
             foreach ($handlers as $key => $handler) {
                 $line .= "\nHandler " . ($key + 1) . ' : ' . $handler;
             }
         }
         $line .= "\n" . str_repeat('-', 69) . "\n\n";
     } else {
         $fileHeader = '';
     }
     $file = fopen($traceFileName, 'ab');
     if ($file) {
         if (!empty($fileHeader)) {
             fWrite($file, $fileHeader);
             fWrite($file, print_r($config, true));
             fwrite($file, $line);
         }
         $this->logFile = $file;
     } else {
         $this->isActive = 0;
         return;
     }
 }
开发者ID:sangkasi,项目名称:joomla,代码行数:43,代码来源:shSimpleLogger.class.php


示例15: updateShurls

 public static function updateShurls()
 {
     $sefConfig =& shRouter::shGetConfig();
     // set the short link tag
     $shPageInfo =& shRouter::shPageInfo();
     $shPageInfo->shURL = '';
     if ($sefConfig->enablePageId && !$sefConfig->stopCreatingShurls) {
         try {
             jimport('joomla.utilities.string');
             $nonSefUrl = JString::ltrim($shPageInfo->shCurrentPageNonSef, '/');
             $nonSefUrl = shSortURL($nonSefUrl);
             // remove tracking vars (Google Analytics)
             $nonSefUrl = Sh404sefHelperGeneral::stripTrackingVarsFromNonSef($nonSefUrl);
             // try to get the current shURL, if any
             $shURL = Sh404sefHelperDb::selectResult('#__sh404sef_pageids', array('pageid'), array('newurl' => $nonSefUrl));
             // if none, we may have to create one
             if (empty($shURL)) {
                 $shURL = self::_createShurl($nonSefUrl);
             }
             // insert in head and header, if not empty
             if (!empty($shURL)) {
                 $fullShURL = JString::ltrim($GLOBALS['shConfigLiveSite'], '/') . '/' . $shURL;
                 $document =& JFactory::getDocument();
                 if ($sefConfig->insertShortlinkTag) {
                     $document->addHeadLink($fullShURL, 'shortlink');
                     // also add header, especially for HEAD requests
                     JResponse::setHeader('Link', '<' . $fullShURL . '>; rel=shortlink', true);
                 }
                 if ($sefConfig->insertRevCanTag) {
                     $document->addHeadLink($fullShURL, 'canonical', 'rev', array('type' => 'text/html'));
                 }
                 if ($sefConfig->insertAltShorterTag) {
                     $document->addHeadLink($fullShURL, 'alternate shorter');
                 }
                 // store for reuse
                 $shPageInfo->shURL = $shURL;
             }
         } catch (Sh404sefExceptionDefault $e) {
         }
     }
 }
开发者ID:sangkasi,项目名称:joomla,代码行数:41,代码来源:shurl.php


示例16: shGetFileName

 function shGetFileName($id, $option, $shLangName)
 {
     if (empty($id)) {
         return null;
     }
     $sefConfig =& shRouter::shGetConfig();
     // get DB
     $database =& JFactory::getDBO();
     $database->setQuery('SELECT id, filetitle, containerid FROM #__downloads_files WHERE id = ' . $database->Quote($id));
     if (!shTranslateUrl($option, $shLangName)) {
         $rows = $database->loadRow(false);
     } else {
         $rows = $database->loadRow();
     }
     $title = shGetContainerName($rows[2], $option, $shLangName);
     if (count($title) > 1) {
         array_pop($title);
     }
     // V w 27/08/2007 13:56:13 remove trailling slash
     $title[] = ($sefConfig->shRemoInsertDocId ? $id . $sefConfig->replacement : '') . $rows[1];
     return $title;
 }
开发者ID:sangkasi,项目名称:joomla,代码行数:22,代码来源:com_remository.php


示例17: dp_sef_get_category_array

 function dp_sef_get_category_array($category_id, $option, $shLangName)
 {
     global $shMosConfig_locale;
     $sefConfig =& shRouter::shGetConfig();
     // get DB
     $db =& JFactory::getDBO();
     static $tree = null;
     // V 1.2.4.m  $tree must an array based on current language
     $title = array();
     if (SH404SEF_DP_INSERT_ALL_CATEGORIES == 0) {
         return $title;
     }
     if (empty($tree[$shMosConfig_lang])) {
         // load up all cat details
         $q = 'SELECT title, id, parent_id FROM #__dp_categories';
         $q .= "\n WHERE published <> '0';";
         // V x
         $db->setQuery($q);
         if (!shTranslateUrl($option, $shLangName)) {
             // V 1.2.4.m
             $tree[$shMosConfig_lang] = $db->loadObjectList('id', false);
         } else {
             $tree[$shMosConfig_lang] = $db->loadObjectList('id');
         }
     }
     if (SH404SEF_DP_INSERT_ALL_CATEGORIES == 1) {
         // only one category
         $title[] = (SH404SEF_DP_INSERT_CAT_ID != 0 ? $tree[$shMosConfig_lang][$category_id]->id . $sefConfig->replacement : '') . $tree[$shMosConfig_lang][$category_id]->title;
     } else {
         do {
             // all categories and subcategories.
             $title[] = (SH404SEF_DP_INSERT_CAT_ID ? $tree[$shMosConfig_lang][$category_id]->id . $sefConfig->replacement : '') . $tree[$shMosConfig_lang][$category_id]->title;
             // will always be unique
             $category_id = $tree[$shMosConfig_lang][$category_id]->parent_id;
         } while ($category_id != 0);
     }
     return array_reverse($title);
 }
开发者ID:sangkasi,项目名称:joomla,代码行数:38,代码来源:com_deeppockets.php


示例18: shAppendListing

 function shAppendListing($link_name, $link_id, $add_details = false, $shLangIso, $option, $shLangName)
 {
     global $sh_LANG;
     $sefConfig =& shRouter::shGetConfig();
     $sef = array();
     if ($sefConfig->shMTreeInsertListingId) {
         if (!$sefConfig->shMTreePrependListingId) {
             $sef[] = ($sefConfig->shMTreeInsertListingName ? $link_name . $sefConfig->replacement : '') . $link_id;
         } else {
             $sef[] = $link_id . ($sefConfig->shMTreeInsertListingName ? $sefConfig->replacement . $link_name : '');
         }
     } else {
         if ($sefConfig->shMTreeInsertListingName) {
             $sef[] = $link_name;
         }
     }
     if ($add_details) {
         $sef[] = $sh_LANG[$shLangIso]['_MT_SEF_DETAILS'];
     }
     if ($sefConfig->shMTreeInsertListingName || $sefConfig->shMTreeInsertListingId) {
         shRemoveFromGETVarsList('link_id');
     }
     return $sef;
 }
开发者ID:sangkasi,项目名称:joomla,代码行数:24,代码来源:com_mtree.php


示例19: shCheckAlias

function shCheckAlias($incomingUrl)
{
    $sefConfig =& shRouter::shGetConfig();
    $db =& JFactory::getDBO();
    $query = 'SELECT newurl FROM #__sh404sef_aliases WHERE alias = ' . $db->Quote($incomingUrl);
    $db->setQuery($query);
    $dest = $db->loadResult();
    shCheckRedirect($dest, $incomingUrl);
}
开发者ID:sangkasi,项目名称:joomla,代码行数:9,代码来源:sh404sef.class.php


示例20: _saveUrl

 /**
  * Save an url to the database, updating various elements
  * at the same time like ranking of duplicates
  *
  * @param integer $type force url type, used when saving a custom url
  */
 private function _saveUrl($type = sh404SEF_URLTYPE_AUTO)
 {
     // check for homepage handling
     if (!empty($this->_data['newurl']) && ($this->_data['newurl'] == '/' || $this->_data['newurl'] == sh404SEF_HOMEPAGE_CODE)) {
         $this->_saveHomeUrl();
         return sh404SEF_HOMEPAGE_CODE;
     }
     // check for importing urls : if importing, rank will already be set in
     // incoming data. If saving a url from the UI, rank is never set
     // as it is caculated upon saving the url
     $importing = isset($this->_data['rank']);
     // get required tools
     jimport('joomla.database.table');
     $row =& JTable::getInstance($this->_defaultTable, 'Sh404sefTable');
     // now bind incoming data to table row
     if (!$row->bind($this->_data)) {
         $this->setError($row->getError());
         return 0;
     }
     // pre-save checks
     if (!$row->check()) {
         $this->setError($row->getError());
         return 0;
     }
     // must load cache from disk, so that it can be written back later, with new url
     require_once JPATH_ROOT . '/components/com_sh404sef/shCache.php';
     shLoadURLCache();
     // find if we are adding a custom or automatic url
     $urlType = $row->dateadd == '0000-00-00' ? sh404SEF_URLTYPE_AUTO : sh404SEF_URLTYPE_CUSTOM;
     // override with user supplied
     if (!empty($type)) {
         $urlType = $type;
     }
     // adjust date added field if needed
     if ($urlType == sh404SEF_URLTYPE_CUSTOM) {
         $row->dateadd = date("Y-m-d");
     }
     // if custom url, and no language string, let's add default one
     if ($urlType == sh404SEF_URLTYPE_CUSTOM && !preg_match('/(&|\\?)lang=[a-zA-Z]{2,3}/iU', $row->newurl)) {
         $shTemp = explode('-', shGetDefaultLang());
         $shLangTemp = $shTemp[0] ? $shTemp[0] : 'en';
         $row->newurl .= '&lang=' . $shLangTemp;
     }
     // normalize the non-sef url representation, sorting query parts alphabetically
     $row->newurl = shSortUrl($row->newurl);
     // retrieve previous values of sef and non sef urls
     $previousSefUrl = JRequest::getVar('previousSefUrl', null, 'POST');
     $previousNonSefUrl = JRequest::getVar('previousNonSefUrl', null, 'POST');
     // if both were set, and nothing has changed, then nothing to do
     if (!empty($previousSefUrl) && !empty($previousNonSefUrl) && $previousNonSefUrl == $row->newurl && $previousSefUrl == $row->oldurl) {
         // nothing changed ! must be changing meta or aliases
         $this->_url = $row;
         return $row->id;
     }
     // search DB for urls pairs with same SEF url
     $query = 'SELECT * FROM #__redirection WHERE oldurl = ' . $this->_db->Quote($row->oldurl) . ' ORDER BY rank ASC';
     $this->_db->setQuery($query);
     $dbUrlList = $this->_db->loadObjectList();
     // do we have urls in the db with same SEF ?
     if (count($dbUrlList) > 0) {
         // yes we do
         // get config object
         $sefConfig = shRouter::shGetConfig();
         if (!$sefConfig->shRecordDuplicates) {
             // we don't allow duplicates : reject this URL
             $this->setError(COM_SH404SEF_DUPLICATE_NOT_ALLOWED);
         } else {
             // same SEF, but we allow duplicates
             $existingRecord = null;
             // importing meta data for instance
             foreach ($dbUrlList as $urlInDB) {
                 // same SEF, but is the incoming non-sef in this list of URl with same SEF ?
                 if ($urlInDB->newurl == $row->newurl) {
                     $existingRecord = $urlInDB;
                     $this->setError(COM_SH404SEF_URLEXIST);
                 }
             }
             if (empty($existingRecord)) {
                 // this new non-sef does not already exists
                 $shTemp = array('nonSefURL' => $row->newurl);
                 // which means we must update the record for the old non-sef url
                 Sh404sefHelperCache::removeURLFromCache($shTemp);
                 // remove the old url from cache
                 // then find new rank (as we are adding a duplicate, we add it at the end of the duplicate list)
                 // but only if not importing. When importing, rank is already set
                 if (!$importing) {
                     $row->rank = $dbUrlList[count($dbUrlList) - 1]->rank + 1;
                 }
                 // store will create a new record if id=0, or update existing if id non 0
                 $row->store();
                 // put custom URL in DB and cache
                 Sh404sefHelperCache::addSefUrlToCache($row->newurl, $row->oldurl, $urlType);
                 // we must add the previous SEF url to the alias list, only if
                 //   - not already there
//.........这里部分代码省略.........
开发者ID:sangkasi,项目名称:joomla,代码行数:101,代码来源:editurl.php



注:本文中的shRouter类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP shipping类代码示例发布时间:2022-05-23
下一篇:
PHP sfYamlParser类代码示例发布时间:2022-05-23
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap