Source for file helper.php
Documentation is available at helper.php
* @subpackage mod_articles_category
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
$com_path =
JPATH_SITE.
'/components/com_content/';
require_once $com_path.
'router.php';
require_once $com_path.
'helpers/route.php';
* Helper for mod_articles_category
* @subpackage mod_articles_category
public static function getList(&$params)
// Get an instance of the generic articles model
// Set application parameters in model
$appParams =
$app->getParams();
$articles->setState('params', $appParams);
// Set the filters based on the module params
$articles->setState('list.start', 0);
$articles->setState('list.limit', (int)
$params->get('count', 0));
$articles->setState('filter.published', 1);
$articles->setState('filter.access', $access);
// Prep for Normal or Dynamic Modes
$mode =
$params->get('mode', 'normal');
$option =
$app->input->get('option');
$view =
$app->input->get('view');
if ($option ===
'com_content')
$catids =
array($app->input->getInt('id'));
$catids =
array($app->input->getInt('id'));
if ($params->get('show_on_article_page', 1))
$article_id =
$app->input->getInt('id');
$catid =
$app->input->getInt('catid');
// Get an instance of the generic article model
$article->setState('params', $appParams);
$article->setState('filter.published', 1);
$article->setState('article.id', (int)
$article_id);
$item =
$article->getItem();
$catids =
array($item->catid);
// Return right away if show_on_article_page option is off
// Return right away if not on the category or article views
// Return right away if not on a com_content page
$catids =
$params->get('catid');
$articles->setState('filter.category_id.include', (bool)
$params->get('category_filtering_type', 1));
if ($params->get('show_child_category_articles', 0) && (int)
$params->get('levels', 0) >
0)
// Get an instance of the generic categories model
$categories->setState('params', $appParams);
$levels =
$params->get('levels', 1) ?
$params->get('levels', 1) :
9999;
$categories->setState('filter.get_children', $levels);
$categories->setState('filter.published', 1);
$categories->setState('filter.access', $access);
$additional_catids =
array();
foreach ($catids as $catid)
$categories->setState('filter.parentId', $catid);
$items =
$categories->getItems($recursive);
foreach ($items as $category)
$condition =
(($category->level -
$categories->getParent()->level) <=
$levels);
$additional_catids[] =
$category->id;
$articles->setState('filter.category_id', $catids);
$articles->setState('list.ordering', $params->get('article_ordering', 'a.ordering'));
$articles->setState('list.direction', $params->get('article_ordering_direction', 'ASC'));
$articles->setState('filter.featured', $params->get('show_front', 'show'));
$articles->setState('filter.author_id', $params->get('created_by', ""));
$articles->setState('filter.author_id.include', $params->get('author_filtering_type', 1));
$articles->setState('filter.author_alias', $params->get('created_by_alias', ""));
$articles->setState('filter.author_alias.include', $params->get('author_alias_filtering_type', 1));
$excluded_articles =
$params->get('excluded_articles', '');
$excluded_articles =
explode("\r\n", $excluded_articles);
$articles->setState('filter.article_id', $excluded_articles);
$articles->setState('filter.article_id.include', false); // Exclude
$date_filtering =
$params->get('date_filtering', 'off');
if ($date_filtering !==
'off')
$articles->setState('filter.date_filtering', $date_filtering);
$articles->setState('filter.date_field', $params->get('date_field', 'a.created'));
$articles->setState('filter.start_date_range', $params->get('start_date_range', '1000-01-01 00:00:00'));
$articles->setState('filter.end_date_range', $params->get('end_date_range', '9999-12-31 23:59:59'));
$articles->setState('filter.relative_date', $params->get('relative_date', 30));
$articles->setState('filter.language', $app->getLanguageFilter());
$items =
$articles->getItems();
$show_date =
$params->get('show_date', 0);
$show_date_field =
$params->get('show_date_field', 'created');
$show_date_format =
$params->get('show_date_format', 'Y-m-d H:i:s');
$show_category =
$params->get('show_category', 0);
$show_hits =
$params->get('show_hits', 0);
$show_author =
$params->get('show_author', 0);
$show_introtext =
$params->get('show_introtext', 0);
$introtext_limit =
$params->get('introtext_limit', 100);
// Find current Article ID if on an article page
$option =
$app->input->get('option');
$view =
$app->input->get('view');
if ($option ===
'com_content' &&
$view ===
'article')
$active_article_id =
$app->input->getInt('id');
// Prepare data for display using display options
foreach ($items as &$item)
$item->slug =
$item->id.
':'.
$item->alias;
$item->catslug =
$item->catid ?
$item->catid .
':'.
$item->category_alias :
$item->catid;
if ($access ||
in_array($item->access, $authorised))
// We know that user has the privilege to view the article
$menuitems =
$menu->getItems('link', 'index.php?option=com_users&view=login');
if (isset
($menuitems[0]))
$Itemid =
$menuitems[0]->id;
elseif ($app->input->getInt('Itemid') >
0)
// Use Itemid from requesting page only if there is no existing menu
$Itemid =
$app->input->getInt('Itemid');
$item->link =
JRoute::_('index.php?option=com_users&view=login&Itemid='.
$Itemid);
// Used for styling the active article
$item->active =
$item->id ==
$active_article_id ?
'active' :
'';
$item->displayDate =
JHTML::_('date', $item->$show_date_field, $show_date_format);
$item->displayCategoryTitle =
$show_category ?
'<a href="'.
$item->displayCategoryLink.
'">'.
$item->category_title.
'</a>' :
'';
$item->displayCategoryTitle =
$show_category ?
$item->category_title :
'';
$item->displayHits =
$show_hits ?
$item->hits :
'';
$item->displayAuthorName =
$show_author ?
$item->author :
'';
$item->introtext =
JHtml::_('content.prepare', $item->introtext, '', 'mod_articles_category.content');
$item->introtext =
self::_cleanIntrotext($item->introtext);
$item->displayIntrotext =
$show_introtext ?
self::truncate($item->introtext, $introtext_limit) :
'';
$item->displayReadmore =
$item->alternative_readmore;
$introtext =
strip_tags($introtext, '<a><em><strong>');
$introtext =
trim($introtext);
* Method to truncate introtext
* The goal is to get the proper length plain text string with as much of
* the html intact as possible with all tags properly closed.
* @param string $html The content of the introtext to be truncated
* @param integer $maxLength The maximum number of charactes to render
* @return string The truncated string
public static function truncate($html, $maxLength =
0)
// First get the plain text string. This is the rendered text we want to end up with.
$ptString =
JHtml::_('string.truncate', $html, $maxLength, $noSplit =
true, $allowHtml =
false);
for ($maxLength; $maxLength <
$baseLength;)
// Now get the string if we allow html.
$htmlString =
JHtml::_('string.truncate', $html, $maxLength, $noSplit =
true, $allowHtml =
true);
// Now get the plain text from the html string.
$htmlStringToPtString =
JHtml::_('string.truncate', $htmlString, $maxLength, $noSplit =
true, $allowHtml =
false);
// If the new plain text string matches the original plain text string we are done.
if ($ptString ==
$htmlStringToPtString)
// Get the number of html tag characters in the first $maxlength characters
$diffLength =
strlen($ptString) -
strlen($htmlStringToPtString);
// Set new $maxlength that adjusts for the html tags
$maxLength +=
$diffLength;
if ($baseLength <=
$maxLength ||
$diffLength <=
0)
public static function groupBy($list, $fieldName, $article_grouping_direction, $fieldNameToKeep =
null)
foreach ($list as $key =>
$item)
if (!isset
($grouped[$item->$fieldName]))
$grouped[$item->$fieldName] =
array();
$grouped[$item->$fieldName][$key] =
$item;
$grouped[$item->$fieldName][$key] =
$item->$fieldNameToKeep;
$article_grouping_direction($grouped);
public static function groupByDate($list, $type =
'year', $article_grouping_direction, $month_year_format =
'F Y')
foreach ($list as $key =>
$item)
if (!isset
($grouped[$month_year]))
$grouped[$month_year] =
array();
$grouped[$month_year][$key] =
$item;
if (!isset
($grouped[$year]))
$grouped[$year] =
array();
$grouped[$year][$key] =
$item;
$article_grouping_direction($grouped);
if ($type ===
'month_year')
foreach ($grouped as $group =>
$items)
$date =
new JDate($group);
$formatted_group =
$date->format($month_year_format);
$grouped[$formatted_group] =
$items;
Documentation generated on Tue, 19 Nov 2013 15:04:33 +0100 by phpDocumentor 1.4.3