Beispiel #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;
 }
Beispiel #2
0
 /**
  * @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;
 }
Beispiel #3
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];
 }