<?php /** * @version $Id: EasyBlog.php 28637 2015-07-09 15:45:21Z james $ * @author RocketTheme http://www.rockettheme.com * @copyright Copyright (C) 2007 - 2015 RocketTheme, LLC * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only */ class RokSprocket_Provider_EasyBlog extends RokSprocket_Provider_AbstarctJoomlaBasedProvider { protected static $available; function providerVersion() { $provider_xml = JFactory::getXML(JPATH_ADMINISTRATOR .'/components/com_easyblog/easyblog.xml'); $provider_version = (string)$provider_xml->version; return $provider_version; } /** * @static * @return bool */ public static function isAvailable() { if (isset(self::$available)) { return self::$available; } if (!class_exists('JFactory')) { self::$available = false; } else { $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select('a.extension_id'); $query->from('#__extensions AS a'); $query->where('a.type = "component"'); $query->where('a.element = "com_easyblog"'); $query->where('a.enabled = 1'); $db->setQuery($query); if ($db->loadResult()) { self::$available = true; } else { self::$available = false; } } return self::$available; } /** * @param array $filters * @param array $sort_filters */ public function __construct($filters = array(), $sort_filters = array()) { parent::__construct('easyblog'); $this->setFilterChoices($filters, $sort_filters); } /** * @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; } /** * @param $id * * @return string */ protected function getArticleEditUrl($id) { // return JURI::root(true) . '/administrator/index.php?option=com_easyblog&c=blogs&task=edit&blogid=' . $id; return JURI::root(true) . '/administrator/index.php?option=com_easyblog&view=composer&tmpl=component&uid=' . $id; } /** * @return array the array of image type and label */ public static function getImageTypes() { return array( 'image_full' => array('group' => null, 'display' => 'Post Full Image'), 'image_thumb' => array('group' => null, 'display' => 'Post Thumbnail Image'), 'image_icon' => array('group' => null, 'display' => 'Post Icon Image'), ); } /** * @return array the array of link types and label */ public static function getLinkTypes() { return array(); } /** * @return array the array of link types and label */ public static function getTextTypes() { return array( 'text_content' => array('group' => null, 'display' => 'Post Content'), 'text_intro' => array('group' => null, 'display' => 'Post Intro Text'), 'text_excerpt' => array('group' => null, 'display' => 'Post Excerpt'), 'text_metadesc' => array('group' => null, 'display' => 'Post Meta Description'), 'text_title' => array('group' => null, 'display' => 'Post Title'), ); } }