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; }
/** * @param $raw_item * @param int $dborder * * @return \RokSprocket_Item */ protected function convertRawToItem($raw_item, $dborder = 0) { //$textfield = $this->params->get('easyblog_articletext_field', ''); $provider_version = $this->providerVersion(); if ($provider_version < "5.0.0") { $helper_file = JPATH_ROOT . '/components/com_easyblog/helpers/helper.php'; $router_file = JPATH_ROOT . '/components/com_easyblog/helpers/router.php'; } elseif ($provider_version >= "5.0.0") { $helper_file = JPATH_ADMINISTRATOR . '/components/com_easyblog/includes/easyblog.php'; $router_file = JPATH_ADMINISTRATOR . '/components/com_easyblog/includes/router.php'; } if (file_exists($helper_file)) { require_once $helper_file; } if (file_exists($router_file)) { require_once $router_file; } /* isset(require_once(JPATH_ROOT . '/components/com_easyblog/helpers/helper.php')); isset(require_once(JPATH_ROOT . '/components/com_easyblog/helpers/router.php'));*/ //suppress easyblog code errors $cfg = @EasyBlogHelper::getConfig(); $item = new RokSprocket_Item(); $item->setProvider($this->provider_name); $item->setId($raw_item->id); $item->setAlias(JApplication::stringURLSafe($raw_item->title)); $item->setAuthor($raw_item->author_name); $item->setTitle($raw_item->title); $item->setDate($raw_item->created); $item->setPublished($raw_item->published == 1 ? true : false); $item->setText($raw_item->intro); $item->setCategory($raw_item->category_title); $item->setHits($raw_item->hits); $item->setRating($raw_item->rating); $item->setMetaKey($raw_item->metakey); $item->setMetaDesc($raw_item->metadesc); if ($provider_version < "5.0.0") { $item->setMetaData(array("robots" => "'.{$raw_item->robots}.'", "author" => "'.{$raw_item->source}.'", "rights" => "'.{$raw_item->copyrights}.'", "xreference" => "")); } elseif ($provider_version >= "5.0.0") { $item->setMetaData(array("robots" => "'.{$raw_item->robots}.'", "author" => "'.{$raw_item->posttype}.'", "rights" => "'.{$raw_item->copyrights}.'", "xreference" => "")); } $item->setPublishUp($raw_item->publish_up); $item->setPublishDown($raw_item->publish_down); $images = array(); if (isset($raw_item->image) && !empty($raw_item->image)) { try { if (isset($raw_item->doctype) && !empty($raw_item->doctype)) { // EB5 // normalize blog image $image = json_decode($raw_item->image); // @legacy fix // We only want to store the URI for blog images. if (is_object($image)) { $raw_item->image = $image->place . $image->path; } // Load up the media manager library $mm = EB::mediamanager(); $url = $mm->getUrl($raw_item->image); $path = $mm->getPath($raw_item->image); if (JFile::exists($path)) { $image = EB::blogimage($path, $url); $item_image = new RokSprocket_Item_Image(); $item_image->setSource($image->getSource('medium')); $item_image->setIdentifier('image_item'); $item_image->setCaption(null); $item_image->setAlttext(null); $images[$item_image->getIdentifier()] = $item_image; $item->setPrimaryImage($item_image); // full image $item_image = new RokSprocket_Item_Image(); $item_image->setSource($image->getSource('large')); $item_image->setIdentifier('image_full'); $item_image->setCaption(null); $item_image->setAlttext(null); $images[$item_image->getIdentifier()] = $item_image; //thumbnail $item_image = new RokSprocket_Item_Image(); $item_image->setSource($image->getSource('thumbnail')); $item_image->setIdentifier('image_thumb'); $item_image->setCaption(null); $item_image->setAlttext(null); $images[$item_image->getIdentifier()] = $item_image; //thumbnail $item_image = new RokSprocket_Item_Image(); $item_image->setSource($image->getSource('icon')); $item_image->setIdentifier('image_icon'); $item_image->setCaption(null); $item_image->setAlttext(null); $images[$item_image->getIdentifier()] = $item_image; } } else { $raw_image = RokCommon_JSON::decode($raw_item->image); if (isset($raw_image) && !empty($raw_image)) { $item_image = new RokSprocket_Item_Image(); if (isset($raw_image->place) && $raw_image->place == 'shared') { $item_image->setSource(JPath::clean(JURI::root(true) . '/' . $cfg->get('main_shared_path') . $raw_image->path)); } else { $folder = explode(':', $raw_image->place); $item_image->setSource(JPath::clean(JURI::root(true) . '/' . $cfg->get('main_image_path') . $folder[1] . $raw_image->path)); } $item_image->setIdentifier('image_item'); $item_image->setCaption(null); $item_image->setAlttext(null); $images[$item_image->getIdentifier()] = $item_image; $item->setPrimaryImage($item_image); //full image $item_image = new RokSprocket_Item_Image(); $item_image->setSource(JPath::clean(str_replace(JURI::root(), JURI::root(true) . '/', $raw_image->url))); $item_image->setIdentifier('image_full'); $item_image->setCaption(null); $item_image->setAlttext(null); $images[$item_image->getIdentifier()] = $item_image; //thumbnail $item_image = new RokSprocket_Item_Image(); $item_image->setSource(JPath::clean(str_replace(JURI::root(), JURI::root(true) . '/', $raw_image->thumbnail->url))); $item_image->setIdentifier('image_thumb'); $item_image->setCaption(null); $item_image->setAlttext(null); $images[$item_image->getIdentifier()] = $item_image; //icon $item_image = new RokSprocket_Item_Image(); $item_image->setSource(JPath::clean(str_replace(JURI::root(), JURI::root(true) . '/', $raw_image->icon->url))); $item_image->setIdentifier('image_icon'); $item_image->setCaption(null); $item_image->setAlttext(null); $images[$item_image->getIdentifier()] = $item_image; } } } catch (RokCommon_JSON_Exception $jse) { $this->container->roksprocket_logger->warning('Unable to decode image JSON for article ' . $item->getArticleId()); } $item->setImages($images); } $primary_link = new RokSprocket_Item_Link(); $itemId = EasyBlogRouter::getItemIdByCategories($raw_item->category_id); $primary_link->setUrl(EasyBlogRouter::_('index.php?option=com_easyblog&view=entry&id=' . $raw_item->id . '&Itemid=' . $itemId)); $primary_link->getIdentifier('article_link'); $item->setPrimaryLink($primary_link); $item->setPrimaryLink($primary_link); $links = array(); $link = new RokSprocket_Item_Link(); $link->setUrl(EasyBlogRouter::_('index.php?option=com_easyblog&view=entry&id=' . $raw_item->id . '&Itemid=' . $itemId)); $link->setText(''); $link->setIdentifier('article_link'); $links[$link->getIdentifier()] = $link; $item->setLinks($links); $texts = array(); $texts['text_content'] = $raw_item->content; $texts['text_intro'] = $raw_item->intro; $texts['text_excerpt'] = $raw_item->excerpt; $texts['text_title'] = $raw_item->title; $texts['text_metadesc'] = $raw_item->metadesc; $texts = $this->processPlugins($texts); $item->setTextFields($texts); if ($provider_version < "5.0.0") { $item->setText($texts['text_intro']); } elseif ($provider_version >= "5.0.0") { $item->setText($texts['text_content']); } $item->setDbOrder($dborder); // unknown joomla items $item->setCommentCount($raw_item->comment_count); if (isset($raw_item->tags)) { $tags = explode(',', $raw_item->tags) ? explode(',', $raw_item->tags) : array(); $item->setTags($tags); } return $item; }
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]; }