本文整理汇总了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;未经允许,请勿转载。 |
请发表评论