| Current Path : /home/z/i/e/zieirix/www/components/com_roksprocket/lib/RokSprocket/Provider/ |
| Current File : /home/z/i/e/zieirix/www/components/com_roksprocket/lib/RokSprocket/Provider/Joomla.php |
<?php
/**
* @version $Id: Joomla.php 23375 2014-10-06 15:30:20Z james $
* @author RocketTheme http://www.rockettheme.com
* @copyright Copyright (C) 2007 - 2020 RocketTheme, LLC
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
*/
class RokSprocket_Provider_Joomla extends RokSprocket_Provider_AbstarctJoomlaBasedProvider
{
/**
* @static
* @return bool
*/
public static function isAvailable()
{
return defined('JPATH_SITE');
}
/**
* @param array $filters
* @param array $sort_filters
*/
public function __construct($filters = array(), $sort_filters = array())
{
parent::__construct('joomla');
$this->setFilterChoices($filters, $sort_filters);
}
/**
* @param $raw_item
* @param int $dborder
*
* @return \RokSprocket_Item
*/
protected function convertRawToItem($raw_item, $dborder = 0)
{
require_once(JPath::clean(JPATH_SITE . '/components/com_content/helpers/route.php'));
if (file_exists(JPath::clean(JPATH_SITE . '/libraries/joomla/html/html/content.php'))) require_once(JPath::clean(JPATH_SITE . '/libraries/joomla/html/html/content.php'));
if (class_exists('JModelLegacy')) JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_content/models', 'ContentModel');
//$textfield = $this->params->get('joomla_articletext_field', '');
$item = new RokSprocket_Item();
$item->setProvider($this->provider_name);
$item->setId($raw_item->id);
$item->setAlias($raw_item->alias);
$item->setAuthor(($raw_item->created_by_alias) ? $raw_item->created_by_alias : $raw_item->author_name);
$item->setTitle($raw_item->title);
$item->setDate($raw_item->created);
$item->setPublished(($raw_item->state == 1) ? true : false);
$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);
$item->setMetaData($raw_item->metadata);
$item->setPublishUp($raw_item->publish_up);
$item->setPublishDown($raw_item->publish_down);
$images = array();
if (isset($raw_item->images) && !empty($raw_item->images)) {
try {
$raw_images = RokCommon_JSON::decode($raw_item->images);
if (isset($raw_images->image_intro) && !empty($raw_images->image_intro)) {
$image_intro = new RokSprocket_Item_Image();
$image_intro->setSource($raw_images->image_intro);
$image_intro->setIdentifier('image_intro');
$image_intro->setCaption($raw_images->image_intro_caption);
$image_intro->setAlttext($raw_images->image_intro_alt);
$images[$image_intro->getIdentifier()] = $image_intro;
$item->setPrimaryImage($image_intro);
}
if (isset($raw_images->image_fulltext) && !empty($raw_images->image_fulltext)) {
$image_fulltext = new RokSprocket_Item_Image();
$image_fulltext->setSource($raw_images->image_fulltext);
$image_fulltext->setIdentifier('image_fulltext');
$image_fulltext->setCaption($raw_images->image_fulltext_caption);
$image_fulltext->setAlttext($raw_images->image_fulltext_alt);
$images[$image_fulltext->getIdentifier()] = $image_fulltext;
$item->setPrimaryImage($image_fulltext);
}
} 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();
$slug = !empty($raw_item->alias) ? ($raw_item->id . ':' . $raw_item->alias) : $raw_item->id;
$catslug = !empty($raw_item->category_alias) ? ($raw_item->catid . ':' . $raw_item->category_alias) : $raw_item->catid;
$primary_link->setUrl(JRoute::_(ContentHelperRoute::getArticleRoute($slug, $catslug), true));
$primary_link->getIdentifier('article_link');
$item->setPrimaryLink($primary_link);
$links = array();
if (isset($raw_item->urls) && !empty($raw_item->urls)) {
try {
$raw_links = RokCommon_JSON::decode($raw_item->urls);
if (isset($raw_links->urla)) {
$linka = new RokSprocket_Item_Link();
$linka->setUrl($raw_links->urla);
$linka->setText($raw_links->urlatext);
$linka->setIdentifier('urla');
$links[$linka->getIdentifier()] = $linka;
}
if (isset($raw_links->urlb)) {
$linkb = new RokSprocket_Item_Link();
$linkb->setUrl($raw_links->urlb);
$linkb->setText($raw_links->urlbtext);
$linkb->setIdentifier('urlb');
$links[$linkb->getIdentifier()] = $linkb;
}
if (isset($raw_links->urlc)) {
$linkc = new RokSprocket_Item_Link();
$linkc->setUrl($raw_links->urlc);
$linkc->setText($raw_links->urlctext);
$linkc->setIdentifier('urlc');
$links[$linkc->getIdentifier()] = $linkc;
}
$item->setLinks($links);
} catch (RokCommon_JSON_Exception $jse) {
$this->container->roksprocket_logger->warning('Unable to decode link JSON for article ' . $item->getArticleId());
}
}
$texts = array();
$texts['text_introtext'] = $raw_item->introtext;
$texts['text_fulltext'] = $raw_item->fulltext;
$texts['text_metadesc'] = $raw_item->metadesc;
$texts['text_title'] = $raw_item->title;
$texts = $this->processPlugins($texts);
$item->setTextFields($texts);
$item->setText($texts['text_introtext']);
$item->setDbOrder($dborder);
// unknown joomla items
$item->setCommentCount(0);
if (isset($raw_item->tags) && !empty($raw_item->tags)) {
$item->setTags($raw_item->tags);
} else {
$item->setTags(array());
}
return $item;
}
protected function populateTags(array $raw_results)
{
$container = RokCommon_Service::getContainer();
/** @var RokSprocket_Provider_Joomla_ITagMerge $tagmerge */
$tagmerge = $container->getService('roksprocket.filter.processor.joomla_tagmerge');
$tagmerge->populateTags($raw_results);
return $raw_results;
}
/**
* @param $id
*
* @return string
*/
protected function getArticleEditUrl($id)
{
return JURI::root(true) . '/administrator/index.php?option=com_content&task=article.edit&id=' . $id;
}
/**
* @return array the array of image type and label
*/
public static function getImageTypes()
{
return array(
'image_intro' => array(
'group' => null,
'display' => 'Article Intro Image'
),
'image_fulltext' => array(
'group' => null,
'display' => 'Article Full Image'
)
);
}
/**
* @return array the array of link types and label
*/
public static function getLinkTypes()
{
return array(
'urla' => array(
'group' => null,
'display' => 'Link A'
),
'urlb' => array(
'group' => null,
'display' => 'Link B'
),
'urlc' => array(
'group' => null,
'display' => 'Link C'
)
);
}
/**
* @return array the array of link types and label
*/
public static function getTextTypes()
{
return array(
'text_title' => array(
'group' => null,
'display' => 'Article Title'
),
'text_introtext' => array(
'group' => null,
'display' => 'Intro Text'
),
'text_fulltext' => array(
'group' => null,
'display' => 'Full Text'
),
'text_metadesc' => array(
'group' => null,
'display' => 'Meta Description Text'
),
);
}
}