| Current Path : /var/www/modules/mod_news_pro_gk5/helpers/ |
| Current File : /var/www/modules/mod_news_pro_gk5/helpers/gk.format.parser.php |
<?php
/**
* Helper class for parsing article formats
* @package News Show Pro GK5
* @Copyright (C) 2009-2013 Gavick.com
* @ All rights reserved
* @ Joomla! is Free Software
* @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
* @version $Revision: GK5 1.3.3 $
**/
// access restriction
defined('_JEXEC') or die('Restricted access');
class NSP_GK5_Article_Format {
static function generateLayout($config, $data) {
/*
Available variables:
{TITLE} - article title
{TEXT} - article text
{URL} - article URL
{IMAGE_SRC} - article image URL
{AUTHOR_EMAIL} - article autor e-mail
{AUTHOR_NAME} - article author name
{AUTHOR_URL} - article author URL
{CATEGORY} - article category name
{CATEGORY_URL} - article category URL
{HITS} - article hits
{DATE} - article date (gets format from the information block settings)
{RATING} - article rating
K2 specific variables:
{TAGS} - article tag lists
{VIDEO_HTML} - HTML of the article video
{CATEGORY_IMAGE_SRC} - article category image URL
{AVATAR_URL} - user avatar URL
{{extra_field_alias}} - value of the extra field with specific alias
{{extra_field_alias_X}} - value of X-nth element in the array of the extra field data - indexing starts with 0
*/
//
// Get the values
//
// Image
$viewClass = 'NSP_GK5_'.$config['source_name'].'_View';
// Basic data
$title = NSP_GK5_Utils::cutText($data['title'], $config, 'title_limit');
$text = NSP_GK5_Utils::cutText($data['text'], $config, 'news_limit');
// URL
$url = '';
if(isset($data['url'])) {
$url = $data['url'];
} else {
$url = call_user_func(array($viewClass, 'itemLink'), $data, $config);
}
// PHP 5.3:
//$image_src = $viewClass::image($config, $data, true);
$image_src = call_user_func(array($viewClass, 'image'), $config, $data, true);
// Author data
$author_email = $data['author_email'];
$author_name = $data['author_username'];
$author_url = call_user_func(array($viewClass, 'authorLink'), $data);
// Category data
$category = $data['catname'];
$category_url = '';
if(isset($data['caturl'])) {
$category_url = $data['caturl'];
} else {
$category_url = call_user_func(array($viewClass, 'categoryLink'), $data);
}
// detect K2
$avatar = '';
if(isset($data['video'])) {
$avatar = K2HelperUtilities::getAvatar($data['author_id'], $data['author_email'], $config['avatar_size']);
}
// Other data
$hits = $data['hits'];
$date = JHTML::_('date', $data['date'], $config['date_format']);
$rating = $data['rating_count'] > 0 ? number_format($data['rating_sum'] / $data['rating_count'], 2) : 0;
//
// Get the layout text
//
if(
(
$config['article_format'] != '-1' &&
is_file(JPATH_ROOT.DS.'modules'.DS.'mod_news_pro_gk5'.DS.'article_formats'.DS.$config['article_format'])
) ||
(
$config['article_format'] == '-1' &&
$config['article_format_text'] != ''
)
) {
// read the format file
$format_file = $config['article_format_text'];
if($config['article_format'] != '-1') {
$format_file = file_get_contents(JPATH_ROOT . DS . 'modules' . DS . 'mod_news_pro_gk5' . DS . 'article_formats' . DS . $config['article_format']);
}
// replace values
$to_replace = array(
'{TITLE}',
'{TEXT}',
'{URL}',
'{IMAGE_SRC}',
'{AUTHOR_EMAIL}',
'{AUTHOR_NAME}',
'{AUTHOR_URL}',
'{CATEGORY}',
'{CATEGORY_URL}',
'{HITS}',
'{DATE}',
'{RATING}',
'{AVATAR_URL}'
);
// values for the replacement
$replacement = array(
$title,
$text,
$url,
$image_src,
$author_email,
$author_name,
$author_url,
$category,
$category_url,
$hits,
$date,
$rating,
$avatar
);
// replace values in the format file
$format_file = str_replace($to_replace, $replacement, $format_file);
// replacements only for K2
if(stripos($config['data_source'], 'k2_') !== FALSE) {
// tags list value
$tags = '';
// if tags exists
if(isset($data['tags']) && count($data['tags']) > 0) {
$i = 0;
foreach($data['tags'] as $tag) {
$link = urldecode(JRoute::_(K2HelperRoute::getTagRoute($tag)));
if($i == 0) {
$tags .= '<a href="' . $link . '">' . $tag . '</a>';
} else {
$tags .= ', <a href="' . $link . '">' . $tag . '</a>';
}
//
$i++;
}
}
// video HTML value
$video_html = $data['video'];
// category image URL value
$category_image_src = '';
// if the category image exists
if($data['cat_image'] != '') {
$category_image_src = JURI::root() . 'media/k2/categories/' . $data['cat_image'];
}
// replace values
$to_replace = array(
'{TAGS}',
'{VIDEO_HTML}',
'{CATEGORY_IMAGE_SRC}'
);
// values for the replacement
$replacement = array(
$tags,
$video_html,
$category_image_src
);
// replace values in the format file
$format_file = str_replace($to_replace, $replacement, $format_file);
// if using of the extra fields is enabled
if($config['k2_get_extra_fields'] == 1) {
$keywords = array_keys($data['extra_fields']);
$to_replace = array();
$replacement = array();
// prepare the replacement arrays
foreach($keywords as $keyword) {
if(is_array($data['extra_fields'][$keyword])) {
for($i = 0; $i < count($data['extra_fields'][$keyword]); $i++) {
array_push($to_replace, '{{' . $keyword . '_' . $i . '}}');
array_push($replacement, $data['extra_fields'][$keyword][$i]);
}
} else {
array_push($to_replace, '{{' . $keyword . '}}');
array_push($replacement, $data['extra_fields'][$keyword]);
}
}
// replace values in the format file
$format_file = str_replace($to_replace, $replacement, $format_file);
}
}
// parse lang rules
$matches = array();
preg_match_all('@{{.*?}}@', $format_file, $matches);
if(count($matches) > 0) {
for($i = 0; $i < count($matches); $i++) {
$phrase = $matches[$i][0];
$phrase = JText::_(str_replace(array('{{', '}}'), '', $phrase));
$format_file = str_replace($matches[$i][0], $phrase, $format_file);
}
}
// PARSING PLUGINS
if($config['parse_plugins'] == TRUE) {
$format_file = JHtml::_('content.prepare', $format_file);
}
// CLEANING PLUGINS
if($config['clean_plugins'] == TRUE) {
$format_file = preg_replace("/(\{.+?\}.+?\{.+?})|(\{.+?\})/", "", $format_file);
}
return $format_file;
} else {
return '';
}
}
}
// EOF