Esempio n. 1
0
 public static function _getMenuItemId($post, &$params)
 {
     $itemId = '';
     $routeTypeCategory = false;
     $routeTypeBlogger = false;
     $routeTypeTag = false;
     $routingType = $params->get('routingtype', 'default');
     if ($routingType != 'default') {
         switch ($routingType) {
             case 'menuitem':
                 $itemId = $params->get('menuitemid') ? '&Itemid=' . $params->get('menuitemid') : '';
                 break;
             case 'category':
                 $routeTypeCategory = true;
                 break;
             case 'blogger':
                 $routeTypeBlogger = true;
                 break;
             case 'tag':
                 $routeTypeTag = true;
                 break;
             default:
                 break;
         }
     }
     if ($routeTypeCategory) {
         $xid = EasyBlogRouter::getItemIdByCategories($post->category_id);
     } else {
         if ($routeTypeBlogger) {
             $xid = EasyBlogRouter::getItemIdByBlogger($post->created_by);
         } else {
             if ($routeTypeTag) {
                 $tags = self::_getPostTagIds($post->id);
                 if ($tags !== false) {
                     foreach ($tags as $tag) {
                         $xid = EasyBlogRouter::getItemIdByTag($tag);
                         if ($xid !== false) {
                             break;
                         }
                     }
                 }
             }
         }
     }
     if (!empty($xid)) {
         // lets do it, do it, do it, lets override the item id!
         $itemId = '&Itemid=' . $xid;
     }
     return $itemId;
 }
Esempio n. 2
0
 public static function _($url, $xhtml = true, $ssl = null, $search = false, $isCanonical = false)
 {
     $mainframe = JFactory::getApplication();
     $config = EasyBlogHelper::getConfig();
     static $loaded = array();
     static $eUri = array();
     $useXHTML = (int) $xhtml . (int) $isCanonical;
     if (isset($loaded[$url . $useXHTML])) {
         return $loaded[$url . $useXHTML];
     }
     $rawURL = $url;
     $blogger = JRequest::getVar('blogger', '');
     if (!empty($blogger)) {
         $url .= '&blogger=' . $blogger;
     }
     //$jURL	= JRoute::_($url, false);
     $jURL = $url;
     // convert the string to variable so that we can access it.
     parse_str($jURL, $post);
     $view = isset($post['view']) ? $post['view'] : 'latest';
     $Itemid = isset($post['Itemid']) ? $post['Itemid'] : '';
     $routingBehavior = $config->get('main_routing', 'currentactive');
     $exItemid = '';
     $findItemId = false;
     $dropSegment = false;
     if (($routingBehavior == 'currentactive' || $routingBehavior == 'menuitemid') && !$isCanonical) {
         $routingMenuItem = $config->get('main_routing_itemid', '');
         if ($routingBehavior == 'menuitemid' && $routingMenuItem != '') {
             $exItemid = $routingMenuItem;
         }
         // @rule: If there is already an item id, try to use the explicitly set one.
         if (empty($exItemid)) {
             if ($view == 'entry') {
                 $blogId = $post['id'];
                 $blog = EasyBlogHelper::getTable('Blog', 'Table');
                 $blog->load($blogId);
                 $author = $blog->created_by;
                 if (!empty($author)) {
                     $tmpItemid = EasyBlogRouter::getItemIdByBlogger($author);
                     if (!empty($tmpItemid)) {
                         $isBloggerMode = EasyBlogRouter::isMenuABloggerMode($tmpItemid);
                         if ($isBloggerMode) {
                             $exItemid = $tmpItemid;
                         }
                     }
                 }
             }
             // @rule: If it is not a blogger mode, we just use the current one.
             if (!$mainframe->isAdmin()) {
                 // Retrieve the active menu item.
                 $menu = JFactory::getApplication()->getMenu();
                 $item = $menu->getActive();
                 if (isset($item->id)) {
                     $isBloggerMode = EasyBlogRouter::isMenuABloggerMode($item->id);
                     if (!$isBloggerMode) {
                         $exItemid = $item->id;
                     }
                 }
             }
         }
     } else {
         switch ($view) {
             case 'entry':
                 $routingOrder = EasyBlogRouter::getDefaultRoutingOrder();
                 $exItemid = '';
                 if (!empty($routingOrder)) {
                     $blogId = $post['id'];
                     $blog = EasyBlogHelper::getTable('Blog', 'Table');
                     $blog->load($blogId);
                     $authorId = $blog->created_by;
                     $categoryId = $blog->category_id;
                     foreach ($routingOrder as $key => $val) {
                         switch ($key) {
                             case 'bloggerstandalone':
                                 $bloggerId = EasyBlogRouter::isBloggerMode();
                                 if ($bloggerId !== false) {
                                     $exItemid = EasyBlogRouter::getItemIdByBlogger($bloggerId);
                                 }
                                 break;
                             case 'entry':
                                 $exItemid = EasyBlogRouter::getItemIdByEntry($blogId);
                                 break;
                             case 'category':
                                 $exItemid = EasyBlogRouter::getItemIdByCategories($categoryId);
                                 break;
                             case 'blogger':
                                 $exItemid = EasyBlogRouter::getItemIdByBlogger($authorId);
                                 break;
                             case 'teamblog':
                                 $teamId = $blog->getTeamContributed();
                                 if (!empty($teamId)) {
                                     $exItemid = EasyBlogRouter::getItemIdByTeamBlog($teamId);
                                 }
                                 break;
                         }
                         if (!empty($exItemid)) {
                             break;
                         }
                     }
                 }
                 if (empty($exItemid)) {
                     $view = 'latest';
                     $findItemId = true;
                 }
                 break;
             case 'blogger':
                 //if( isset( $post['layout'] ) && isset( $post['id'] ) )
                 if (isset($post['id'])) {
                     $exItemid = EasyBlogRouter::getItemIdByBlogger($post['id']);
                     if (!empty($exItemid)) {
                         $dropSegment = true;
                     }
                 }
                 if (empty($exItemid)) {
                     $exItemid = EasyBlogRouter::getItemId('blogger', true);
                 }
                 if (empty($exItemid)) {
                     $view = 'latest';
                     $findItemId = true;
                 }
                 break;
             case 'categories':
                 //if( isset( $post['layout'] ) && isset( $post['id'] ) )
                 if (isset($post['id'])) {
                     $exItemid = EasyBlogRouter::getItemIdByCategories($post['id']);
                     if (!empty($exItemid)) {
                         $dropSegment = true;
                     }
                 }
                 if (empty($exItemid)) {
                     $bloggerId = EasyBlogRouter::isBloggerMode();
                     if ($bloggerId !== false) {
                         $exItemid = EasyBlogRouter::getItemIdByBlogger($bloggerId);
                     }
                     if (empty($exItemid)) {
                         $exItemid = EasyBlogRouter::getItemId('categories', true);
                     }
                     if (empty($exItemid)) {
                         $view = 'latest';
                         $findItemId = true;
                     }
                 }
                 break;
             case 'teamblog':
                 //if( isset( $post['layout'] ) && isset( $post['id'] ) )
                 if (isset($post['id'])) {
                     $exItemid = EasyBlogRouter::getItemIdByTeamBlog($post['id']);
                     if (!empty($exItemid)) {
                         $dropSegment = true;
                     }
                 }
                 if (empty($exItemid)) {
                     $exItemid = EasyBlogRouter::getItemId('teamblog', true);
                 }
                 if (empty($exItemid)) {
                     $view = 'latest';
                     $findItemId = true;
                 }
                 break;
             case 'tags':
                 if (isset($post['layout']) && isset($post['id'])) {
                     //now check the active menu whether a blogger isolation mode or not.
                     $bloggerId = EasyBlogRouter::isBloggerMode();
                     if ($bloggerId !== false) {
                         $exItemid = EasyBlogRouter::getItemIdByBlogger($bloggerId);
                     }
                     if (empty($exItemid)) {
                         $exItemid = EasyBlogRouter::getItemIdByTag($post['id']);
                         if (!empty($exItemid)) {
                             $dropSegment = true;
                         }
                     }
                 } else {
                     $exItemid = EasyBlogRouter::getItemId('tags');
                 }
                 if (empty($exItemid)) {
                     $view = 'latest';
                     $findItemId = true;
                 }
                 break;
             case 'dashboard':
                 if (isset($post['layout'])) {
                     $exItemid = EasyBlogRouter::getItemIdByDashboardLayout($post['layout']);
                 }
                 if (empty($exItemid)) {
                     $exItemid = EasyBlogRouter::getItemId('dashboard', true);
                 }
                 if (empty($exItemid)) {
                     $findItemId = true;
                 }
                 break;
             case 'latest':
                 $bloggerId = EasyBlogRouter::isBloggerMode();
                 if ($bloggerId !== false) {
                     $exItemid = EasyBlogRouter::getItemIdByBlogger($bloggerId);
                 }
                 if (empty($exItemid)) {
                     $exItemid = EasyBlogRouter::getItemId('latest');
                 }
                 if (empty($exItemid)) {
                     $findItemId = true;
                 }
                 break;
             default:
                 break;
         }
     }
     if (!empty($exItemid)) {
         if (self::isSefEnabled() && $dropSegment) {
             $url = 'index.php?Itemid=' . $exItemid;
             $loaded[$rawURL . $useXHTML] = JRoute::_($url, $xhtml, $ssl);
             return $loaded[$rawURL . $useXHTML];
         }
         //check if there is any anchor in the link or not.
         $pos = JString::strpos($url, '#');
         // If item id is provided in the query itself, we do not need to append any item id.
         // otherwise the result would be &Itemid=1&Itemid=2
         if (!$Itemid) {
             if ($pos === false) {
                 $url .= '&Itemid=' . $exItemid;
             } else {
                 $url = JString::str_ireplace('#', '&Itemid=' . $exItemid . '#', $url);
             }
         }
         $loaded[$rawURL . $useXHTML] = JRoute::_($url, $xhtml, $ssl);
         return $loaded[$rawURL . $useXHTML];
     }
     //fall back to previous style if getting the Itemid
     if (empty($Itemid) && $findItemId) {
         $tmpId = '';
         $useDefaultWay = false;
         if ($mainframe->isAdmin()) {
             //from backend.
             $useDefaultWay = true;
         } else {
             //from frontend.
             //lets try to get from the default itemId.
             $menu = JFactory::getApplication()->getMenu();
             $item = $menu->getActive();
             if (!$findItemId && isset($item->id) && $item->component == 'com_easyblog' && !$search) {
                 $tmpId = $item->id;
             } else {
                 $useDefaultWay = true;
             }
         }
         if ($useDefaultWay) {
             if (empty($eUri[$view])) {
                 $tmpId = EasyBlogRouter::getItemId($view);
                 $eUri[$view] = $tmpId;
             } else {
                 $tmpId = $eUri[$view];
             }
         }
         //check if there is any anchor in the link or not.
         $pos = JString::strpos($url, '#');
         if ($pos === false) {
             $url .= '&Itemid=' . $tmpId;
         } else {
             $url = JString::str_ireplace('#', '&Itemid=' . $tmpId . '#', $url);
         }
     }
     $loaded[$rawURL . $useXHTML] = JRoute::_($url, $xhtml, $ssl);
     return $loaded[$rawURL . $useXHTML];
 }