/** * * Ajax render to store in session */ public function ajaxGetRender() { /** load libraries for the system rener **/ JSNFactory::localimport('libraries.joomlashine.mode.rawmode'); JSNFactory::localimport('libraries.joomlashine.menu.menuitems'); /** get url **/ $render_url = JRequest::getVar('render_url', ''); $urlRender = base64_decode($render_url); $session = JSession::getInstance('files', array('name' => 'jsnpoweradmin')); if ($render_url == '') { $urlRender = JSNDatabase::getDefaultPage()->link; } $currUri = new JURI($urlRender); if (!$currUri->hasVar('Itemid')) { $currUri->setVar('Itemid', JSNDatabase::getDefaultPage()->id); } $urlString = $currUri->toString(); $session->set('rawmode_render_url', base64_encode($urlString)); $parts = JString::parse_url($urlString); if (!empty($parts['query'])) { parse_str($parts['query'], $params); } else { $params = array(); } $jsntemplate = JSNFactory::getTemplate(); $jsnrawmode = JSNRawmode::getInstance($params); $jsnrawmode->setParam('positions', $jsntemplate->loadXMLPositions()); $jsnrawmode->renderAll(); $session = JSession::getInstance('files', array('name' => 'jsnajaxgetrender')); $session->set('component', $jsnrawmode->getHTML('component')); $session->set('jsondata', $jsnrawmode->getScript('positions', 'JSON')); jexit('success'); }
function modifyAttrs($lnkAttrs, $imgAttrs, $group, $params) { $lnkAttrs['rel'] = 'sexylightbox'; if ($group) { $lnkAttrs['rel'] .= '[' . $group . ']'; } $link = $lnkAttrs['href']; $bgColor = $params->get('lightbox_bgColor'); if ($this->isLink($link)) { $uri = new JURI($link); $uri->setVar('TB_iframe', 'true'); $uri->setVar('height', intval($params->get('lightbox_height'), 10)); $uri->setVar('width', intval($params->get('lightbox_width'), 10)); if ($bgColor) { $uri->setVar('background', $bgColor); } $lnkAttrs['href'] = $uri->toString(); } else { if ($bgColor) { $uri = new JURI($link); $uri->setVar('background', $bgColor); $lnkAttrs['href'] = $uri->toString(); } } return parent::modifyAttrs($lnkAttrs, $imgAttrs, $group, $params); }
static function _($plainURL) { $config = JFactory::getConfig(); $addSuffix = $config->get('sef_suffix', 0) == 1; $url = JRoute::_($plainURL); if ($addSuffix) { $uri = new JURI($plainURL); $format = $uri->getVar('format', 'html'); $format = strtolower($format); if (!in_array($format, array('html', 'raw'))) { // Save any query parameters if (strstr($url, '?')) { list($url, $qparams) = explode('?', $url, 2); $qparams = '?' . $qparams; } else { $qparams = ''; } // Remove the suffix $basename = basename($url); $exploded = explode(".", $basename); $extension = end($exploded); $realbase = basename($url, '.' . $extension); $url = str_replace($basename, $realbase, $url) . $qparams; // Add a format parameter $uri = new JURI($url); $uri->setVar('format', $format); $url = $uri->toString(); } } return $url; }
function modifyAttrs($lnkAttrs, $imgAttrs, $group, $params) { $lnkAttrs['rel'] = 'prettyPhoto'; if ($group) { $lnkAttrs['rel'] .= '[' . $group . ']'; } $link = $lnkAttrs['href']; if ($this->isLink($link)) { $uri = new JURI($link); $uri->setVar('iframe', 'true'); if (!$uri->getVar('height')) { $uri->setVar('height', intval($params->get('lightbox_height'), 10)); } else { $height = $uri->getVar('height'); $uri->delVar('height'); $uri->setVar('height', $height); } if (!$uri->getVar('width')) { $uri->setVar('width', intval($params->get('lightbox_width'), 10)); } else { $width = $uri->getVar('width'); $uri->delVar('width'); $uri->setVar('width', $width); } $lnkAttrs['href'] = $uri->toString(); } return parent::modifyAttrs($lnkAttrs, $imgAttrs, $group, $params); }
public function testToString() { $this->object->parse('http://*****:*****@www.example.com:80/path/file.html?var=value#fragment'); $this->assertThat($this->object->toString(), $this->equalTo('http://*****:*****@www.example.com:80/path/file.html?var=value#fragment')); $this->object->setQuery('somevar=somevalue'); $this->object->setVar('somevar2', 'somevalue2'); $this->object->setScheme('ftp'); $this->object->setUser('root'); $this->object->setPass('secret'); $this->object->setHost('www.example.org'); $this->object->setPort('8888'); $this->object->setFragment('someFragment'); $this->object->setPath('/this/is/a/path/to/a/file'); $this->assertThat($this->object->toString(), $this->equalTo('ftp://*****:*****@www.example.org:8888/this/is/a/path/to/a/file?somevar=somevalue&somevar2=somevalue2#someFragment')); }
function gTranslate($text, $SourceLan, $ResultLan) { $url = new JURI(); // for APIv2 $url->setHost('https://www.googleapis.com/'); $url->setPath('language/translate/v2'); $query['key'] = 'AIzaSyC04nF4KXjfR2VQ0jsFm5vEd9LbyiXqbKw'; $query['q'] = urlencode($text); $query['source'] = $SourceLan; $query['target'] = $ResultLan; if (!$text) { return; } $url->setQuery($query); $url->toString(); $response = AKHelper::_('curl.getPage', $url->toString()); $json = new JRegistry($response); $r = $json->get('data.translations'); return $r[0]->translatedText; }
/** * A method to do Google translate. * * @param string $text String to translate. * @param string $SourceLan Translate from this language, eg: 'zh-tw'. Empty will auto detect. * @param string $ResultLan Translate to this language, eg: 'en'. Empty will auto detect. * * @return string Translated text. */ public static function gTranslate($text, $SourceLan, $ResultLan) { $url = new JURI(); // for APIv2 $url->setHost('https://www.googleapis.com/'); $url->setPath('language/translate/v2'); $query['key'] = self::APT_KEY; $query['q'] = urlencode($text); $query['source'] = $SourceLan; $query['target'] = $ResultLan; if (!$text) { return; } $url->setQuery($query); $url->toString(); $response = AKHelper::_('curl.getPage', $url->toString()); $json = new JRegistry(); $json->loadString($response); $r = $json->get('data.translations'); return $r[0]->translatedText; }
/** * Return HTML, subitems in menu * * @param: Array items * @param: int $menuid */ protected function renderItems($mItems, $moduleid) { $items = ''; if (count($mItems)) { for ($i = 0; $i < count($mItems); $i++) { $publish = $mItems[$i]->published == 1 ? 'Unpublish' : 'Publish'; $class_unpublish = $mItems[$i]->published == 0 ? ' unpublish' : ''; $default = $mItems[$i]->home == 1 ? ' default' : ''; $uri = new JURI($mItems[$i]->link); $link = $uri->toString(); //if external link if (!JURI::isInternal($link)) { $link = $mItems[$i]->link; } else { $link = JURI::root() . $link; } //if default item if ($mItems[$i]->home == 1) { $link = JURI::root(); } $attributes = $this->getCheckboxAttributes($mItems[$i]->id, $moduleid); if ($mItems[$i]->type == 'alias') { $aliasparams = new JRegistry(); $aliasparams->loadString($mItems[$i]->params); $address_itemid = $aliasparams->get('aliasoptions'); if ((int) $address_itemid > 0) { $address_item = $this->getMenuItem($address_itemid); if (!$address_item) { continue; } $link = $address_item->link; if (strpos($link, '?') === false) { $link .= '?aliasoptions=' . $address_itemid . '&Itemid=' . $mItems[$i]->id; } else { $link .= '&aliasoptions=' . $address_itemid . '&Itemid=' . $mItems[$i]->id; } $mItems[$i]->link = $link; } } if ($this->hasChild($mItems[$i]->id)) { $subItems = $this->getItems($mItems[$i]->menutype, $mItems[$i]->id); //Render item $items .= JSNHtmlHelper::openTag('li') . JSNHtmlHelper::addInputTag('checkbox', $attributes) . JSNHtmlHelper::openTag('a', array('conClick' => 'javascript:void(0);', 'class' => $default . $class_unpublish, 'href' => $link, 'title' => $this->getMenuItemType($mItems[$i]->link))) . $mItems[$i]->title . JSNHtmlHelper::closeTag('a') . JSNHtmlHelper::openTag('ul', array('class' => 'jsn-menu-items', 'id' => 'item-' + $mItems[$i]->id)) . $this->renderItems($subItems, $moduleid) . JSNHtmlHelper::closeTag('ul') . JSNHtmlHelper::closeTag('li'); } else { $items .= JSNHtmlHelper::openTag('li') . JSNHtmlHelper::addInputTag('checkbox', $attributes) . JSNHtmlHelper::openTag('a', array('onClick' => 'javascript:void(0);', 'class' => $default . $class_unpublish, 'href' => $link, 'title' => $this->getMenuItemType($mItems[$i]->link))) . $mItems[$i]->title . JSNHtmlHelper::closeTag('a') . JSNHtmlHelper::closeTag('li'); } } } return $items; }
function getObjectInfo($id, $language = null) { $db = JFactory::getDBO(); $article = null; $link = null; require_once JPATH_ROOT . '/components/com_content/helpers/route.php'; $query = $db->getQuery(true); // Select the required fields from the table. $query->select('a.id, a.title, a.created_by, a.access, a.alias, a.catid, a.language'); $query->from('#__content AS a'); // Join over the categories. $query->select('c.title AS category_title, c.path AS category_route, c.access AS category_access, c.alias AS category_alias'); $query->join('LEFT', '#__categories AS c ON c.id = a.catid'); $query->where('a.id = ' . (int) $id); $db->setQuery($query); $article = $db->loadObject(); if (!empty($article)) { $user = JFactory::getUser(); $article->slug = $article->alias ? $article->id . ':' . $article->alias : $article->id; $article->catslug = $article->category_alias ? $article->catid . ':' . $article->category_alias : $article->catid; $authorised = JAccess::getAuthorisedViewLevels($user->get('id')); $checkAccess = in_array($article->access, $authorised); if ($checkAccess) { $link = JRoute::_(ContentHelperRoute::getArticleRoute($article->slug, $article->catslug, $article->language)); } else { $returnURL = JRoute::_(ContentHelperRoute::getArticleRoute($article->slug, $article->catslug, $article->language)); $menu = JFactory::getApplication()->getMenu(); $active = $menu->getActive(); $ItemId = $active->id; $link = JRoute::_('index.php?option=com_users&view=login&Itemid=' . $ItemId); $uri = new JURI($link); $uri->setVar('return', base64_encode($returnURL)); $link = $uri->toString(); } } $info = new JCommentsObjectInfo(); if (!empty($article)) { $info->category_id = $article->catid; $info->title = $article->title; $info->access = $article->access; $info->userid = $article->created_by; $info->link = $link; } return $info; }
/** * Give a relative path, return path with host. * * @param string $path A system path. * * @return string Path with host added. */ public static function pathAddHost($path) { if (!$path) { return; } // build path $uri = new JURI($path); if ($uri->getHost()) { return $path; } $uri->parse(JURI::root()); $root_path = $uri->getPath(); if (strpos($path, $root_path) === 0) { $num = JString::strlen($root_path); $path = JString::substr($path, $num); } $uri->setPath($uri->getPath() . $path); $uri->setScheme('http'); $uri->setQuery(null); return $uri->toString(); }
function modifyAttrs($lnkAttrs, $imgAttrs, $group, $params) { if ($group) { $lnkAttrs['rel'] = $group; } if (empty($lnkAttrs['class'])) { $lnkAttrs['class'] = ''; } else { $lnkAttrs['class'] .= ' '; } $lnkAttrs['class'] .= 'arifancybox'; $link = $lnkAttrs['href']; if ($this->isLink($link)) { $uri = new JURI($link); $lnkParams = array('width' => intval($uri->getVar('width') ? $uri->getVar('width') : $params->get('lightbox_width'), 10), 'height' => intval($uri->getVar('height') ? $uri->getVar('height') : $params->get('lightbox_height'), 10)); $lnkAttrs['class'] .= ' iframe ' . str_replace('"', '"', AriJSONHelper::encode($lnkParams)); $uri->delVar('width'); $uri->delVar('height'); $lnkAttrs['href'] = $uri->toString(); } return parent::modifyAttrs($lnkAttrs, $imgAttrs, $group, $params); }
function _uriToUrl($uri, $removeVariables = null) { // Create new JURI object $url = new JURI($uri->toString(array('path', 'query', 'fragment'))); // Remove variables if needed if (!empty($removeVariables)) { if (is_array($removeVariables)) { foreach ($removeVariables as $var) { $url->delVar($var); } } else { $url->delVar($removeVariables); } } // sort variables ksort($url->_vars); $opt = $url->getVar('option'); if (!is_null($opt)) { $url->delVar('option'); array_unshift($url->_vars, array('option' => $opt)); } $url->_query = null; // Create string for db return $url->toString(array('path', 'query')); }
/** * * Add image tag to * * @param String $src * @param String $attrs */ public static function showImage($src, $attrs = "") { $uri = new JURI($src); return '<img src="' . JURI::root() . $uri->toString() . '" ' . $attrs . ' />'; }
function prepareSlides($slides, $params) { $newSlides = array(); $target = $params->get('customLinkTarget'); if (empty($target)) { $target = $params->get('linkTarget', '_self'); } $defLink = $params->get('defaultLink'); $baseUri = JURI::base(true); $lightboxEngine = AriImageSliderHelper::getLightboxEngine($params); $lightboxGrouping = (bool) $params->get('lightbox_grouping', true); $lightboxGroup = $lightboxGrouping ? uniqid('cc_') : null; foreach ($slides as $slide) { $slideLink = !empty($slide['link']) ? $slide['link'] : $defLink; if (empty($slide['link']) && !empty($defLink)) { $slide['link'] = $defLink; } $isLink = !empty($slideLink); $description = isset($slide['description']) ? $slide['description'] : ''; $altText = isset($slide['alt']) ? $slide['alt'] : ''; $lnkAttrs = null; $imgAttrs = array('src' => $baseUri . '/' . $slide['image'], 'alt' => $altText, 'title' => $description, 'class' => 'imageslider-item'); if (!empty($slide['width'])) { $imgAttrs['width'] = $slide['width']; } if (!empty($slide['height'])) { $imgAttrs['height'] = $slide['height']; } if ($isLink) { $lnkAttrs = array('href' => $slideLink, 'target' => $target); if ($description) { $lnkAttrs['title'] = $description; } $skip_lb = false; if (!is_null($lightboxEngine) && strpos($slideLink, 'skip_lb') !== false) { $uri = new JURI($slideLink); $skip_lb = (bool) $uri->getVar('skip_lb'); $uri->delVar('skip_lb'); $slideLink = $uri->toString(); $lnkAttrs['href'] = $slideLink; } if (!$skip_lb && !is_null($lightboxEngine)) { list($lnkAttrs, $imgAttrs) = $lightboxEngine->modifyAttrs($lnkAttrs, $imgAttrs, $lightboxGroup, $params); } else { $originalLink = $slideLink; if (strpos($originalLink, '_target') !== false) { $uri = new JURI($originalLink); $linkTarget = $uri->getVar('_target'); if (!is_null($linkTarget)) { $uri->delVar('_target'); $lnkAttrs['target'] = $linkTarget; $lnkAttrs['href'] = $uri->toString(); } } } } $slide['lnkAttrs'] = $lnkAttrs; $slide['imgAttrs'] = $imgAttrs; $newSlides[] = $slide; } return $newSlides; }
function onTP_Processpayment($data, $vars = array()) { $isValid = true; $error = array(); $error['code'] = ''; $error['desc'] = ''; $trxnstatus = ''; JLoader::import('joomla.utilities.date'); // Check if we're supposed to handle this JLoader::import('joomla.environment.uri'); switch ($this->params->get('site', 0)) { case '0': default: $apiURL = 'https://au.ewaygateway.com/Result'; break; case '1': $apiURL = 'https://payment.ewaygateway.com/Result'; break; case '2': $apiURL = 'https://nz.ewaygateway.com/Result'; break; } $eWayURL = new JURI($apiURL); $eWayURL->setVar('CustomerID', urlencode($this->params->get('customerid', ''))); $eWayURL->setVar('UserName', urlencode($this->params->get('username', ''))); $eWayURL->setVar('AccessPaymentCode', urlencode($data['AccessPaymentCode'])); $posturl = $eWayURL->toString(); $posturl = str_replace('Result?', 'Result/?', $posturl); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $posturl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); if (defined('CURL_PROXY_REQUIRED')) { if (CURL_PROXY_REQUIRED == 'True') { $proxy_tunnel_flag = defined('CURL_PROXY_TUNNEL_FLAG') && strtoupper(CURL_PROXY_TUNNEL_FLAG) == 'FALSE' ? false : true; curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, $proxy_tunnel_flag); curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); curl_setopt($ch, CURLOPT_PROXY, CURL_PROXY_SERVER_DETAILS); } } $response = curl_exec($ch); $authecode = $this->fetch_data($response, '<authCode>', '</authCode>'); $responsecode = $this->fetch_data($response, '<responsecode>', '</responsecode>'); $retrunamount = $this->fetch_data($response, '<returnamount>', '</returnamount>'); $trxnnumber = $this->fetch_data($response, '<trxnnumber>', '</trxnnumber>'); $trxnstatus = $this->fetch_data($response, '<trxnstatus>', '</trxnstatus>'); $trxnresponsemessage = $this->fetch_data($response, '<trxnresponsemessage>', '</trxnresponsemessage>'); // order id $MerchantOption1_orderid = $this->fetch_data($response, '<MerchantOption1>', '</MerchantOption1>'); $MerchantOption2_email = $this->fetch_data($response, '<MerchantOption2>', '</MerchantOption2>'); $merchantreference = $this->fetch_data($response, '<merchantreference>', '</merchantreference>'); $isValid = true; // Check that the amount is correct // checked in model payment $rootURL = rtrim(JURI::base(), '/'); $subpathURL = JURI::base(true); if (!empty($subpathURL) && $subpathURL != '/') { $rootURL = substr($rootURL, 0, -1 * strlen($subpathURL)); } //3.compare response order id and send order id in notify URL if ($isValid) { if (!empty($vars) && $MerchantOption1_orderid != $vars->order_id) { $isValid = false; $trxnstatus = 'ERROR'; $data['error'] = "ORDER_MISMATCH" . "Invalid ORDERID; notify order_is " . $vars->order_id . ", and response " . $MerchantOption1_orderid; } } // amount check if ($isValid) { if (!empty($vars)) { // Check that the amount is correct $order_amount = (double) $vars->amount; $return_resp['status'] = '0'; $retrunamount = (double) $retrunamount; $epsilon = 0.01; if ($order_amount - $retrunamount > $epsilon) { $trxnstatus = 'ERROR'; // change response status to ERROR FOR AMOUNT ONLY $isValid = false; $data['error'] = "ORDER_AMOUNT_MISTMATCH - order amount= " . $order_amount . ' response order amount = ' . $retrunamount; } } } $order_status = ''; // Translaet Payment status $order_status = $this->translateResponse($trxnstatus); // IF REQUIRE:: add the AfterPaymentCallback events $data['status'] = $trxnstatus; //Error Handling $responseCodes = $this->responseCodes; $error = array(); if ($responsecode != '00') { $error['code'] = $responsecode; $error['desc'] = isset($responsecode) ? $responseCodes[$responsecode] : ''; } $result = array('order_id' => $MerchantOption1_orderid, 'transaction_id' => $authecode, 'buyer_email' => $MerchantOption2_email, 'status' => $order_status, 'txn_type' => '', 'total_paid_amt' => (double) $retrunamount, 'raw_data' => $response, 'error' => $error); //return true; return $result; }
function _fixLangSwitcher($reqURI) { $isLangFilter = JPluginHelper::isEnabled("system", "languagefilter"); if (!$isLangFilter) { return $reqURI; } $uri = JFactory::getURI(); $app = JFactory::getApplication(); $router = $app->getRouter(); if ($app->isSite()) { // setup language data $mode_sef = $router->getMode() == JROUTER_MODE_SEF ? true : false; $default_lang = JLanguageHelper::getLanguages('lang_code'); if ($mode_sef) { // Get the route path from the request. $path = JString::substr($uri->toString(), JString::strlen($uri->base())); // Apache mod_rewrite is Off //$path = JFactory::getConfig()->get('sef_rewrite') ? $path : JString::substr($path, 10); $path = $app->getCfg('sef_rewrite') ? $path : JString::substr($path, 10); // Trim any spaces or slashes from the ends of the path and explode into segments. $path = JString::trim($path, '/ '); $parts = explode('/', $path); // The language segment is always at the beginning of the route path if it exists. $langcode = $uri->getVar('lang'); if (!empty($parts) && empty($langcode)) { $langcode = reset($parts); } //set to default language if (empty($langcode)) { //$langcode = $default_lang; // @since 4.0 we get default language from here $lang = JFactory::getLanguage(); $langcode = $lang->getDefault(); } //append language code to the request $reqURI = $reqURI . '/' . $langcode . '/'; } else { $langcode = $uri->getVar('lang', $default_lang); //append language code to the request $tmpURI = new JURI($reqURI); $tmpURI->setVar('lang', $langcode); $reqURI = $tmpURI->toString(); } } return $reqURI; }
static function fixPage() { global $user, $phpEx; $uri = new JURI($user->page['page_name'] . '.' . $phpEx . '?' . $user->page['query_string']); $user->page['page'] = $uri->toString(); }
static function _($url, $xhtml = false, $ssl = null, $d = false) { // skip any external urls if (strpos($url, "option") !== false && strpos($url, "option=com_fss") === false) { return JRoute::_($url, $xhtml, $ssl); } global $FSSRoute_debug; global $FSSRoute_menus; global $FSSRoute_access; self::$d = $d; // get any menu items for fss FSS_Helper::GetRouteMenus(); // Get the router $router = JFactory::getApplication()->getRouter(); // if the url dont start with index.php, we need to add the exisitng url to what we want if (substr($url, 0, 9) != "index.php") { //echo "Making FUll URL: $url<br>"; $url = self::_fullURL($router, $url); //echo "Resut : $url<br>"; } $uri = new JURI($url); // work out is we are in an Itemid already, if so, set it as the best match if ($uri->hasVar('Itemid')) { $bestmatch = $uri->getVar('Itemid'); } else { $bestmatch = ''; } $bestcount = 0; $uriquery = $uri->toString(array('query')); $urivars = FSSRoute::SplitURL($uriquery); $sourcevars = FSSRoute::SplitURL($url); // check through the menu item for the current url, and add any items to the new url that are missing if ($bestmatch && array_key_exists($bestmatch, $FSSRoute_menus)) { foreach ($FSSRoute_menus[$bestmatch] as $key => $value) { if (!array_key_exists($key, $urivars) && !array_key_exists($key, $sourcevars)) { $urivars[$key] = $value; } } } $current_access = 0; if (array_key_exists(FSS_Input::getInt('Itemid'), $FSSRoute_access)) { $current_access = $FSSRoute_access[FSS_Input::getInt('Itemid')]; } if ($d) { echo "Incoming Link : {$url}<br>"; echo "Cur Item ID : " . FSS_Input::getInt('Itemid') . "<br>"; //print_p($FSSRoute_menus); } foreach ($FSSRoute_menus as $id => $vars) { if ($d) { echo "{$id} => <Br>"; print_p($vars); } // need to check if the access level is the same if ($current_access && array_key_exists($id, $FSSRoute_access) && $FSSRoute_access[$id] != $current_access) { if ($d) { echo "No Access<br>"; } continue; } $count = FSSRoute::MatchVars($urivars, $vars); if (FSS_Input::getInt('Itemid') == $id && $count > 0) { if ($d) { echo "Current ItemId: increase count<br>"; } $count++; } if ($d) { echo "Count: {$count}<br>"; } if ($count > $bestcount) { if ($d) { echo "New best match - {$id}<br>"; } $bestcount = $count; $bestmatch = $id; } } if ($bestcount == 0 && array_key_exists('view', $sourcevars) && substr($sourcevars['view'], 0, 6) == "admin_") { foreach ($FSSRoute_menus as $id => $item) { // need to check if the access level is the same if ($current_access && array_key_exists($id, $FSSRoute_access) && $FSSRoute_access[$id] != $current_access) { continue; } if ($item['view'] == "admin") { $bestcount = 1; $bestmatch = $id; } } } // no match found, try to fallback on the main support menu id if ($bestcount == 0) { foreach ($FSSRoute_menus as $id => $item) { // need to check if the access level is the same if ($current_access && array_key_exists($id, $FSSRoute_access) && $FSSRoute_access[$id] != $current_access) { continue; } if ($item['view'] == "main") { $bestcount = 1; $bestmatch = $id; } } } if ($bestcount == 0) { // still no match found, use any fss menu if (count($FSSRoute_menus) > 0) { foreach ($FSSRoute_menus as $id => $item) { // need to check if the access level is the same if ($current_access && array_key_exists($id, $FSSRoute_access) && $FSSRoute_access[$id] != $current_access) { continue; } $bestcount = 1; $bestmatch = $id; break; } } } if ($d) { echo "Best Found : {$bestcount}, {$bestmatch}<br>"; } // sticky menu items if (FSS_Settings::get('sticky_menus_type')) { $cur_item_id = FSS_Input::GetInt("Itemid"); if ($cur_item_id > 0) { $sticky_ids = explode(";", FSS_Settings::get('sticky_menus')); if (FSS_Settings::get('sticky_menus_type') == 1 && in_array($cur_item_id, $sticky_ids) || FSS_Settings::get('sticky_menus_type') == 2 && !in_array($cur_item_id, $sticky_ids)) { $bestcount = 0; $uri->setVar('Itemid', $cur_item_id); } } } if ($bestcount > 0) { $uri->setVar('Itemid', $bestmatch); // we need to remove parameters that are in the main url as well as the sub one // wait till 2.2 for this change as it may break stuff } if ($d) { echo "Using : " . $uri->toString(array('path', 'query', 'fragment')) . "<br>"; } return JRoute::_($uri->toString(array('path', 'query', 'fragment')), $xhtml, $ssl); }
/** * Method to get the OAuth message string for signing. * * Note: As of PHP 5.3 the $this->encode() function is RFC 3986 compliant therefore this requires PHP 5.3+ * * @param string $requestUrl The message's request URL. * @param string $requestMethod The message's request method. * * @return string The unsigned OAuth message string. * * @link http://www.faqs.org/rfcs/rfc3986 * @see $this->encode() * @since 1.0 */ public function _fetchStringForSigning($requestUrl, $requestMethod) { // Get a JURI instance for the request URL. $uri = new JURI($requestUrl); // Initialise base array. $base = array(); // Get the found parameters. $params = $this->getParameters(); // Add the variables from the URI query string. foreach ($uri->getQuery(true) as $k => $v) { if (strpos($k, 'oauth_') !== 0) { $params[$k] = $v; } } // Make sure that any found oauth_signature is not included. unset($params['oauth_signature']); // Ensure the parameters are in order by key. ksort($params); // Iterate over the keys to add properties to the base. foreach ($params as $key => $value) { // If we have multiples for the parameter let's loop over them. if (is_array($value)) { // Don't want to do this more than once in the inner loop. $key = $this->encode($key); // Sort the value array and add each one. sort($value, SORT_STRING); foreach ($value as $v) { $base[] = $key . '=' . $this->encode($v); } } else { $base[] = $this->encode($key) . '=' . $this->encode($value); } } // Start off building the base string by adding the request method and URI. $base = array($this->encode(strtoupper($requestMethod)), $this->encode(strtolower($uri->toString(array('scheme', 'user', 'pass', 'host', 'port'))) . $uri->getPath()), $this->encode(implode('&', $base))); return implode('&', $base); }
function &getItem($index = 0, &$params) { global $mainframe; // Initialize some variables $user =& JFactory::getUser(); $dispatcher =& JDispatcher::getInstance(); $SiteName = $mainframe->getCfg('sitename'); $task = JRequest::getCmd('task'); $linkOn = null; $linkText = null; $item =& $this->items[$index]; $item->text = $item->introtext; // Get the page/component configuration and article parameters $item->params = clone $params; $aparams = new JParameter($item->attribs); // Merge article parameters into the page configuration $item->params->merge($aparams); // Process the content preparation plugins JPluginHelper::importPlugin('content'); $results = $dispatcher->trigger('onPrepareContent', array(&$item, &$item->params, 0)); // Build the link and text of the readmore button if ($item->params->get('show_readmore') && @$item->readmore || $item->params->get('link_titles')) { // checks if the item is a public or registered/special item if ($item->access <= $user->get('aid', 0)) { //$item->readmore_link = JRoute::_("index.php?view=article&id=".$item->slug); $item->readmore_link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug, $item->sectionid)); $item->readmore_register = false; } else { $item->readmore_link = JRoute::_("index.php?option=com_user&view=login"); $returnURL = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug, $item->sectionid), false); $fullURL = new JURI($item->readmore_link); $fullURL->setVar('return', base64_encode($returnURL)); $item->readmore_link = $fullURL->toString(); $item->readmore_register = true; } } $item->event = new stdClass(); $results = $dispatcher->trigger('onAfterDisplayTitle', array(&$item, &$item->params, 0)); $item->event->afterDisplayTitle = trim(implode("\n", $results)); $results = $dispatcher->trigger('onBeforeDisplayContent', array(&$item, &$item->params, 0)); $item->event->beforeDisplayContent = trim(implode("\n", $results)); $results = $dispatcher->trigger('onAfterDisplayContent', array(&$item, &$item->params, 0)); $item->event->afterDisplayContent = trim(implode("\n", $results)); return $item; }
$db = JFactory::getDbo(); $q = $db->getQuery(true); $q->select("*")->from("#__menu")->where("id != 1")->where("published=1")->where("access=1"); $db->setQuery($q); $menus = $db->loadObjectList(); foreach ($menus as $menu) { if (!$menu->link) { continue; } // fix URI bugs $uri = new JURI($menu->link); $uri->setVar('Itemid', $menu->id); if ($app->getCfg('sef')) { $uri->setVar('layout', null); } $link = JRoute::_($uri->toString()); $host = str_replace('http://' . $_SERVER['HTTP_HOST'], '', JURI::root()); $link = str_replace($host, '', $link); $link = AK::_('uri.pathAddHost', $link); // set xml data $url = $xml->addChild('url'); $url->addChild('loc', $link); $url->addChild('lastmod', $date->format('Y-m-d')); $url->addChild('changefreq', 'weekly'); $url->addChild('priority', '0.8'); $exists_links[] = $link; } // build category map $q = $db->getQuery(true); $q->select("*")->from("#__categories")->where("id != 1")->where("published=1")->where("access=1")->where("extension = 'com_content'"); $db->setQuery($q);
function getObjectInfo($id, $language = null) { $db = JCommentsFactory::getDBO(); $article = null; $link = null; if (JCOMMENTS_JVERSION == '1.0') { global $mainframe, $Itemid; $query = 'SELECT a.id, a.title, a.created_by, a.access' . ' FROM #__content AS a' . ' LEFT JOIN #__categories AS cc ON cc.id = a.catid' . ' WHERE a.id = ' . intval($id); $db->setQuery($query); $db->loadObject($article); $compatibilityMode = $mainframe->getCfg('itemid_compat'); if ($compatibilityMode == null) { // Joomla 1.0.12 or below if ($Itemid && $Itemid != 99999999) { $_Itemid = $Itemid; } else { $_Itemid = $mainframe->getItemid($id); } } else { if ((int) $compatibilityMode > 0 && (int) $compatibilityMode <= 11) { // Joomla 1.0.13 or higher and Joomla 1.0.11 compatibility $_Itemid = $mainframe->getItemid($id, 0, 0); } else { // Joomla 1.0.13 or higher and new Itemid algorithm $_Itemid = $Itemid; } } $link = JoomlaTuneRoute::_('index.php?option=com_content&task=view&id=' . $id . '&Itemid=' . $_Itemid); } else { require_once JPATH_ROOT . DS . 'components' . DS . 'com_content' . DS . 'helpers' . DS . 'route.php'; $query = 'SELECT a.id, a.title, a.created_by, a.sectionid, a.access,' . ' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,' . ' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug' . ' FROM #__content AS a' . ' LEFT JOIN #__categories AS cc ON cc.id = a.catid' . ' WHERE a.id = ' . intval($id); $db->setQuery($query); $article = $db->loadObject(); if (!empty($article)) { $user = JFactory::getUser(); if (JCOMMENTS_JVERSION == '1.5') { $checkAccess = $article->access <= $user->get('aid', 0); if ($checkAccess) { $link = JRoute::_(ContentHelperRoute::getArticleRoute($article->slug, $article->catslug, $article->sectionid)); } else { $link = JRoute::_("index.php?option=com_user&task=register"); } } else { $authorised = JAccess::getAuthorisedViewLevels($user->get('id')); $checkAccess = in_array($article->access, $authorised); if ($checkAccess) { $link = JRoute::_(ContentHelperRoute::getArticleRoute($article->slug, $article->catslug)); } else { $returnURL = JRoute::_(ContentHelperRoute::getArticleRoute($article->slug)); $menu = JFactory::getApplication()->getMenu(); $active = $menu->getActive(); $ItemId = $active->id; $link = JRoute::_('index.php?option=com_users&view=login&Itemid=' . $ItemId); $uri = new JURI($link); $uri->setVar('return', base64_encode($returnURL)); $link = $uri->toString(); } } } } $info = new JCommentsObjectInfo(); if (!empty($article)) { $info->title = $article->title; $info->access = $article->access; $info->userid = $article->created_by; $info->link = $link; } return $info; }
<?php $this->item = $item; echo JHTML::_('icon.edit', $item, $this->params, $this->access); ?> </td> <?php } else { ?> <td> <?php echo $this->escape($item->title) . ' : '; $link = JRoute::_('index.php?option=com_user&view=login'); $returnURL = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug, $item->sectionid)); $fullURL = new JURI($link); $fullURL->setVar('return', base64_encode($returnURL)); $link = $fullURL->toString(); ?> <a href="<?php echo $link; ?> "><?php echo JText::_('Register to read more...'); ?> </a> </td> <?php } ?> <?php } ?>
/** * Преобразует img-тег в html-код иконки * @param array $matches * @return string */ function imageReplacer(&$matches) { // Создать объект тега изображения $newImgStr = $imgStr = $matches[0]; $this->img->parse($imgStr); // Если указаны классы для которых (не)надо создавать иконки, проверить класс изображения. // И если для данного не надо создавать - выйти из функции. if ($this->thumbnailsFor && $this->class) { $imgClasses = explode(' ', $this->img->getAttribute('class')); $myClasses = preg_split('/\\W+/', $this->class); $classFind = array_intersect($imgClasses, $myClasses); if ($this->thumbnailsFor == 1 && !$classFind || $this->thumbnailsFor == 2 && $classFind) { return $imgStr; } } // Если изображение удаленное - проверить наличие локальной копии, при отсутствии создать $juri =& JFactory::getURI(); $src = $this->img->getAttribute('src'); if (!$juri->isInternal($src)) { $this->copyRemote($src); } // Проверить необходимость замены - нужна ли иконка? // Прежде чем обращатья к функциям GD, проверяются атрибуты тега. if ($this->img->getHeight() || $this->img->getWidth() || $this->defaultWidth || $this->defaultHeight) { $this->origImgName = $this->img->getAttribute('src'); $this->origImgName = $this->urlToFile($this->origImgName); $this->origImgSize = @getimagesize($this->origImgName); // Если размер файла определить не удалось, вероятно это скрипт // Копируем как файл с удаленного сервера и пробуем еще раз if ($this->origImgSize === false) { $src = new JURI($src); $src->setHost($_SERVER['SERVER_NAME']); $src->setScheme('http'); $this->copyRemote($src->toString()); $this->origImgName = $this->img->getAttribute('src'); $this->origImgName = $this->urlToFile($this->origImgName); $this->origImgSize = @getimagesize($this->origImgName); } $origImgW = $this->origImgSize[0]; $this->origImgSize[1] = $this->origImgSize[1]; /* Размеры по-умолчанию */ // Если это блог или главная, взять настройки для блогов if ($this->blogHelper && $this->blogHelper->isBlog()) { $this->defaultSize = $this->blogDefaultSize; $this->defaultWidth = $this->blogDefaultWidth; $this->defaultHeight = $this->blogDefaultHeight; } $this->proportionsStrategy->setDefaultSize(); if ($this->img->getWidth() && $this->img->getWidth() < $this->origImgSize[0] || $this->img->getHeight() && $this->img->getHeight() < $this->origImgSize[1]) { // Заменить изображение на иконку $newImgStr = $this->createThumb(); $this->img->isThumb = true; } } if ($this->img->isThumb || $this->popupType == 'bloglink') { if (!$this->has_header) { $this->decorator->addHeader(); } $this->has_header = true; $result = $this->decorator->decorate(); } else { $result = $this->img->toString(); } return $result; }
/** * Using CURL get page source. * * @param string $url Link to get content * * @return string */ protected static function curlResponse($url) { $options = array(CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_FOLLOWLOCATION => true, CURLOPT_USERAGENT => "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13", CURLOPT_AUTOREFERER => true, CURLOPT_CONNECTTIMEOUT => 120, CURLOPT_TIMEOUT => 120, CURLOPT_MAXREDIRS => 10, CURLOPT_SSL_VERIFYPEER => false); $ch = curl_init($url); curl_setopt_array($ch, $options); $contents = curl_exec($ch); $err = curl_errno($ch); $errmsg = curl_error($ch); $header = curl_getinfo($ch); curl_close($ch); if ($err > 0) { exit('cUrl error number: ' . $err); } $response = new stdClass(); $response->contents = $contents; $response->redirect_url = $header['redirect_url']; if ($response->redirect_url != self::$_renderUrl and trim($response->redirect_url) != '') { $old_uri = new JURI(self::$_renderUrl); $redirect_uri = new JURI($response->redirect_url); if ($old_uri->hasVar('tp') and !$redirect_uri->hasVar('tp')) { $redirect_uri->setVar('tp', 1); } if ($old_uri->hasVar('jsntpl_position') and !$redirect_uri->hasVar('jsntpl_position')) { $redirect_uri->setVar('jsntpl_position', 1); } if ($old_uri->hasVar('secret_key') and !$redirect_uri->hasVar('secret_key')) { $config = JFactory::getConfig(); $secret = $config->get('secret'); $redirect_uri->setVar('secret_key', md5($secret)); } if ($old_uri->hasVar('Itemid') and !$redirect_uri->hasVar('Itemid')) { $redirect_uri->setVar('Itemid', $old_uri->getVar('Itemid')); } // Save redirect url self::$_renderUrl = $redirect_uri->toString(); $response = self::curlResponse(self::$_renderUrl); } return $response; }
/** * Return HTML, subitems in menu * * @param: Array items * @param: int $menuid */ protected function renderItems($mItems, $menuid) { $items = ''; if (count($mItems)) { for ($i = 0; $i < count($mItems); $i++) { $publish = $mItems[$i]->published == 1 ? 'Unpublish' : 'Publish'; $class_unpublish = $mItems[$i]->published == 0 ? ' unpublish' : ''; $default = $mItems[$i]->home == 1 ? ' default' : ''; $defaultIndicator = $mItems[$i]->home == 1 ? ' <ins class="menu-default-indicator"></ins>' : ''; $uri = new JURI($mItems[$i]->link); $link = $uri->toString(); if (!JURI::isInternal($link)) { if (JString::strtolower($link) != JString::strtolower($_SERVER['HTTP_HOST'])) { $link = '#'; } } else { if ($mItems[$i]->link == '#') { $link = '#'; } else { $link = JURI::root() . $link; } } if ($link != '#') { if (strpos($link, '?') === false) { $link .= '?Itemid=' . $mItems[$i]->id; } else { $link .= '&Itemid=' . $mItems[$i]->id; } } if ($mItems[$i]->type == 'alias') { jimport('joomla.html.parameter'); $aliasparams = new JRegistry(); $aliasparams->loadString($mItems[$i]->params); $address_itemid = $aliasparams->get('aliasoptions'); if ((int) $address_itemid > 0) { $address_item = $this->getMenuItem($address_itemid); if (is_object($address_item)) { $link = $address_item->link; } else { if (is_array($address_item)) { $link = $address_item['link']; } } if (strpos($link, '?') === false) { $link .= '?aliasoptions=' . $address_itemid . '&Itemid=' . $mItems[$i]->id; } else { $link .= '&aliasoptions=' . $address_itemid . '&Itemid=' . $mItems[$i]->id; } $mItems[$i]->link = $link; } } if ($this->hasChild($mItems[$i]->id)) { $subItems = $this->getItems($mItems[$i]->menutype, $mItems[$i]->id); $items .= JSNHtmlHelper::openTag('li', array('id' => $publish . '-menutypeid' . $menuid . '-' . $mItems[$i]->id, 'class' => 'moveable')) . JSNHtmlHelper::openTag('a', array('onClick' => 'javascript:void(0);', 'class' => $default . $class_unpublish, 'link' => $link, 'title' => $this->getMenuItemType($mItems[$i]->link))) . $mItems[$i]->title . $defaultIndicator . JSNHtmlHelper::closeTag('a'); $items .= JSNHtmlHelper::openTag('ul', array('class' => 'jsn-menu-items', 'style' => 'display:none;', 'id' => 'parentid-' . $mItems[$i]->id)) . $this->renderItems($subItems, $menuid) . JSNHtmlHelper::closeTag('ul'); $items .= JSNHtmlHelper::closeTag('li'); } else { $items .= JSNHtmlHelper::openTag('li', array('id' => $publish . '-menutypeid' . $menuid . '-' . $mItems[$i]->id, 'class' => 'moveable')) . JSNHtmlHelper::openTag('a', array('onClick' => 'javascript:void(0);', 'class' => $default . $class_unpublish, 'link' => $link, 'title' => $this->getMenuItemType($mItems[$i]->link))) . $mItems[$i]->title . $defaultIndicator . JSNHtmlHelper::closeTag('a') . JSNHtmlHelper::closeTag('li'); } } } return $items; }
/** * Display function */ public function display($tpl = null) { if (function_exists('error_reporting')) { error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE & ~E_STRICT); } /** load libraries for the system rener **/ JSNFactory::localimport('libraries.joomlashine.mode.rawmode'); JSNFactory::localimport('libraries.joomlashine.menu.menuitems'); /** Assignment variables **/ $jsntemplate = JSNFactory::getTemplate(); $jsnmenuitems = JSNMenuitems::getInstance(); /** get url **/ $render_url = JRequest::getVar('render_url', ''); $session = JSession::getInstance('files', array('name' => 'jsnpoweradmin')); if ($render_url == '' && $session->get('rawmode_render_url')) { $render_url = $session->get('rawmode_render_url'); } $urlRender = base64_decode($render_url); if ($render_url == '') { $urlRender = JSNDatabase::getDefaultPage()->link; } $currUri = new JURI($urlRender); if (!$currUri->hasVar('Itemid')) { $currUri->setVar('Itemid', JSNDatabase::getDefaultPage()->id); } $urlString = $currUri->toString(); $session->set('rawmode_render_url', base64_encode($urlString)); $parts = JString::parse_url($urlString); if (!empty($parts['query'])) { parse_str($parts['query'], $params); } else { $params = array(); } $jsnrawmode = JSNRawmode::getInstance($params); $jsnrawmode->setParam('positions', $jsntemplate->loadXMLPositions()); $jsnrawmode->renderAll(); $this->assign('component', $jsnrawmode->getHTML('component')); $this->assign('modules', $jsnrawmode->getHTML('positions')); $this->assign('jsnmenuitems', $jsnmenuitems); $this->assign('urlRender', $urlRender); /** add toolbar buttons **/ $this->addToolBar(); /** add scripts and css **/ //$this->addMedia( $currUri->getVar('Itemid'), $urlString, array());//$jsnrawmode->getScript('positions', 'Array')); $this->addMedia($currUri->getVar('Itemid'), $urlString, $jsnrawmode->getScript('positions', 'Array')); return parent::display(); }
function prepareSlides($slides, $params) { $newSlides = array(); $target = $params->get('customLinkTarget'); if (empty($target)) { $target = $params->get('linkTarget', '_self'); } $baseUri = JURI::base(true); $lightboxEngine = AriCloudCarouselHelper::getLightboxEngine($params); $lightboxGroup = uniqid('cc_'); foreach ($slides as $slide) { $isLink = !empty($slide['link']); $description = isset($slide['description']) ? $slide['description'] : ''; $title = isset($slide['title']) ? $slide['title'] : ''; $lnkAttrs = null; $imgAttrs = array('src' => $baseUri . '/' . $slide['image'], 'alt' => $description, 'title' => $title, 'class' => 'cloudcarousel'); if (!empty($slide['width'])) { $imgAttrs['width'] = $slide['width']; } if (!empty($slide['height'])) { $imgAttrs['height'] = $slide['height']; } if ($isLink) { $lnkAttrs = array('href' => $slide['link'], 'target' => $target); if ($description) { $lnkAttrs['title'] = $description; } if (!is_null($lightboxEngine)) { list($lnkAttrs, $imgAttrs) = $lightboxEngine->modifyAttrs($lnkAttrs, $imgAttrs, $lightboxGroup, $params); } else { $originalLink = $slide['link']; if (strpos($originalLink, '_target') !== false) { $uri = new JURI($originalLink); $linkTarget = $uri->getVar('_target'); if (!is_null($linkTarget)) { $uri->delVar('_target'); $lnkAttrs['target'] = $linkTarget; $lnkAttrs['href'] = $uri->toString(); } } } } $slide['lnkAttrs'] = $lnkAttrs; $slide['imgAttrs'] = $imgAttrs; $newSlides[] = $slide; } return $newSlides; }
function _uriToUrl($uri, $removeVariables = null) { // Create new JURI object $url = new JURI($uri->toString(array('path', 'query', 'fragment'))); // Remove variables if needed if (!empty($removeVariables)) { if (is_array($removeVariables)) { foreach ($removeVariables as $var) { $url->delVar($var); } } else { $url->delVar($removeVariables); } } // sort variables $vars = $url->getQuery(true); ksort($vars); // Move option to beginning if (isset($vars['option'])) { $opt = $vars['option']; unset($vars['option']); $vars = array_merge(array('option' => $opt), $vars); } // Set vars $url->setQuery($vars); // Create string for db return $url->toString(array('path', 'query')); }
protected function _redirectNonSef($uri) { if (!$this->_canRedirectFromNonSef($uri)) { return; } // search cache and db for a sef url $nonSefUrl = shSortURL('index.php?' . $uri->getQuery()); $targetSefUrl = ''; $urlType = JModel::getInstance('Sefurls', 'Sh404sefModel')->getSefURLFromCacheOrDB($nonSefUrl, $targetSefUrl); $pageInfo =& Sh404sefFactory::getPageInfo(); // found a match : redirect if ($urlType == sh404SEF_URLTYPE_AUTO || $urlType == sh404SEF_URLTYPE_CUSTOM) { $tmpUri = new JURI($uri->base() . $targetSefUrl); $targetSefUrl = $tmpUri->toString(); if ($targetSefUrl != $pageInfo->shCurrentPageURL) { _log('redirecting non-sef to existing SEF : ' . $targetSefUrl); shRedirect($targetSefUrl); } } // haven't found a SEF in the cache or DB, maybe we can just create it on the fly ? if (!empty($nonSefUrl) && (!shIsMultilingual() || shIsMultilingual() == 'joomla' || shIsMultilingual() == 'joomfish' && shGetNameFromIsoCode(shDecideRequestLanguage()) == Sh404sefFactory::getPageInfo()->shMosConfig_locale)) { // $shMosConfig_locale is still deafult lang, as language has not been discovered yet $GLOBALS['mosConfig_defaultLang'] = Sh404sefFactory::getPageInfo()->shMosConfig_locale; // V 1.2.4.t joomfish not initialised so we must do // this otherwise shGetDefaultLanguage will not work $shUri = new JUri($nonSefUrl); $shOriginalUri = new JURI($nonSefUrl); $targetSefUrl = shSefRelToAbs($nonSefUrl, $uri->getVar('lang'), $shUri, $shOriginalUri); if ($targetSefUrl != $pageInfo->shCurrentPageURL) { if (strpos($targetSefUrl, 'option=com') === false && $targetSefUrl != $nonSefUrl) { _log(__METHOD__ . '/' . __LINE__ . ': redirecting non-sef to newly created SEF : ' . $targetSefUrl . ' from ' . $nonSefUrl); shRedirect($targetSefUrl); } } } }