diff --git a/deployed/mod_articles_news_adv/modules/mod_articles_news_adv/helper.php b/deployed/mod_articles_news_adv/modules/mod_articles_news_adv/helper.php
new file mode 100644
index 00000000..401a9d4a
--- /dev/null
+++ b/deployed/mod_articles_news_adv/modules/mod_articles_news_adv/helper.php
@@ -0,0 +1,203 @@
+ true));
+
+ // Set application parameters in model
+ $appParams = JFactory::getApplication()->getParams();
+ $model->setState('params', $appParams);
+
+ // Set the filters based on the module params
+ $model->setState('list.start', 0);
+ $model->setState('list.limit', (int) $params->get('count', 5));
+
+ $model->setState('filter.published', 1);
+
+ $model->setState('list.select', 'a.fulltext, a.id, a.title, a.alias, a.introtext, a.state, a.catid, a.created, a.created_by, a.created_by_alias,' .
+ ' a.modified, a.modified_by, a.publish_up, a.publish_down, a.images, a.urls, a.attribs, a.metadata, a.metakey, a.metadesc, a.access,' .
+ ' a.hits, a.featured' );
+
+ // Access filter
+ $access = !JComponentHelper::getParams('com_content')->get('show_noauth');
+ $authorised = JAccess::getAuthorisedViewLevels(JFactory::getUser()->get('id'));
+ $model->setState('filter.access', $access);
+
+ // Category filter
+ $model->setState('filter.category_id', $params->get('catid', array()));
+
+ // Filter by language
+ $model->setState('filter.language', $app->getLanguageFilter());
+
+ $catids = $params->get('catid');
+
+ if ($params->get('show_child_category_articles', 0) && (int) $params->get('levels', 0) > 0)
+ {
+ // Get an instance of the generic categories model
+ $categories = JModelLegacy::getInstance('Categories', 'ContentModel', array('ignore_request' => true));
+ $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);
+ $recursive = true;
+ $items = $categories->getItems($recursive);
+
+ if ($items)
+ {
+ foreach ($items as $category)
+ {
+ $condition = (($category->level - $categories->getParent()->level) <= $levels);
+ if ($condition)
+ {
+ $additional_catids[] = $category->id;
+ }
+
+ }
+ }
+ }
+
+ $catids = array_unique(array_merge($catids, $additional_catids));
+ }
+
+ $model->setState('filter.category_id', $catids);
+
+ // Set ordering
+ $ordering = $params->get('ordering', 'a.publish_up');
+ $model->setState('list.ordering', $ordering);
+ if (trim($ordering) == 'rand()')
+ {
+ $model->setState('list.direction', '');
+ }
+ else
+ {
+ $model->setState('list.direction', $params->get('article_ordering_direction', 'DESC'));
+ }
+
+ // Retrieve Content
+ $items = $model->getItems();
+
+ $show_introtext = $params->get('show_introtext', 1);
+ $introtext_limit = $params->get('introtext_limit', 0);
+
+ foreach ($items as &$item)
+ {
+ $item->readmore = strlen(trim($item->fulltext));
+ $item->slug = $item->id.':'.$item->alias;
+ $item->catslug = $item->catid.':'.$item->category_alias;
+
+ if ($access || in_array($item->access, $authorised))
+ {
+ // We know that user has the privilege to view the article
+ $item->link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catid));
+ $item->linkText = JText::_('MOD_ARTICLES_NEWS_READMORE');
+ }
+ else {
+ $item->link = JRoute::_('index.php?option=com_users&view=login');
+ $item->linkText = JText::_('MOD_ARTICLES_NEWS_READMORE_REGISTER');
+ }
+
+ if ($show_introtext)
+ {
+ $item->introtext = JHtml::_('content.prepare', $item->introtext, '', 'mod_articles_news.content');
+ $item->introtext = $introtext_limit ? self::_cleanIntrotext(self::truncate($item->introtext, $introtext_limit)) : $item->introtext;
+ }
+
+ //new
+ if (!$params->get('image'))
+ {
+ $item->introtext = preg_replace('/]*>/', '', $item->introtext);
+ }
+
+ $results = $app->triggerEvent('onContentAfterDisplay', array('com_content.article', &$item, &$params, 1));
+ $item->afterDisplayTitle = trim(implode("\n", $results));
+
+ $results = $app->triggerEvent('onContentBeforeDisplay', array('com_content.article', &$item, &$params, 1));
+ $item->beforeDisplayContent = trim(implode("\n", $results));
+ }
+
+ return $items;
+ }
+ public static function _cleanIntrotext($introtext)
+ {
+ $introtext = str_replace('
', ' ', $introtext); + $introtext = str_replace('
', ' ', $introtext); + $introtext = strip_tags($introtext, ''); + + $introtext = trim($introtext); + + return $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) + { + $baseLength = strlen($html); + + // 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) + { + return $htmlString; + } + // 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) + { + return $htmlString; + } + } + return $html; + } +} diff --git a/deployed/mod_articles_news_adv/modules/mod_articles_news_adv/index.html b/deployed/mod_articles_news_adv/modules/mod_articles_news_adv/index.html new file mode 100644 index 00000000..2efb97f3 --- /dev/null +++ b/deployed/mod_articles_news_adv/modules/mod_articles_news_adv/index.html @@ -0,0 +1 @@ +