%PDF- %PDF-
Direktori : /home/lightco1/luminero.com.au/modules/mod_articleplacedanywhere/ |
Current File : /home/lightco1/luminero.com.au/modules/mod_articleplacedanywhere/helper.php |
<?php /** * @copyright Copyright (C) 2008 Ian MacLennan. All rights reserved. * @copyright Upgrade to J2.5. Copyright 2012 HartlessByDesign, LLC. * @copyright Portions Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved. * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html */ // no direct access defined('_JEXEC') or die('Restricted access'); class modArticlePlacedAnywhereHelper { static function renderItem(&$item, &$params) { require_once JPATH_SITE.'/components/com_content/helpers/route.php'; $item->readmore = (trim($item->fulltext) != ''); $item->readmore_link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug)); JPluginHelper::importPlugin('content'); $dispatcher = JDispatcher::getInstance(); $offset = 0; if ($params->get('show_readmore', 1) || $params->get('show_intro_only', 1)) { $item->text = $item->introtext; } else { $item->text = $item->introtext . ' ' . $item->fulltext; } $results = $dispatcher->trigger('onContentPrepare', array ('com_content.article', &$item, &$params, $offset)); $item->event = new stdClass(); $results = $dispatcher->trigger('onContentAfterTitle', array('com_content.article', &$item, &$params, $offset)); $item->event->afterDisplayTitle = trim(implode("\n", $results)); $results = $dispatcher->trigger('onContentBeforeDisplay', array('com_content.article', &$item, &$params, $offset)); $item->event->beforeDisplayContent = trim(implode("\n", $results)); $results = $dispatcher->trigger('onContentAfterDisplay', array('com_content.article', &$item, &$params, $offset)); $item->event->afterDisplayContent = trim(implode("\n", $results)); $item->groups = ''; $item->metadesc = ''; $item->metakey = ''; $item->access = ''; $item->created = ''; $item->modified = ''; if (!$params->get('image')) { $item->text = preg_replace( '/<img[^>]*>/', '', $item->text ); } require(JModuleHelper::getLayoutPath('mod_articleplacedanywhere', '_item')); } static function getItem(&$params) { $db = JFactory::getDBO(); $id = (int) $params->get('id', 0); jimport('joomla.utilities.date'); // query to get article $query = $db->getQuery(true); $query->select( 'a.id, a.asset_id, a.title, a.alias, a.introtext, a.fulltext, ' . // If badcats is not null, this means that the article is inside an unpublished category // In this case, the state is set to 0 to indicate Unpublished (even if the article state is Published) 'CASE WHEN badcats.id is null THEN a.state ELSE 0 END AS state, ' . 'a.catid, a.created, a.created_by, a.created_by_alias, ' . // use created if modified is 0 'CASE WHEN a.modified = 0 THEN a.created ELSE a.modified END as modified, ' . 'a.modified_by, a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, ' . 'a.images, a.urls, a.attribs, a.version, a.ordering, ' . 'a.metakey, a.metadesc, a.access, a.hits, a.metadata, a.featured, a.language, a.xreference' ); $query->from('#__content AS a'); // Join on category table. $query->select('c.title AS category_title, c.alias AS category_alias, c.access AS category_access'); $query->join('LEFT', '#__categories AS c on c.id = a.catid'); // Join on user table. $query->select('u.name AS author'); $query->join('LEFT', '#__users AS u on u.id = a.created_by'); // Join over the categories to get parent category titles $query->select('parent.title as parent_title, parent.id as parent_id, parent.path as parent_route, parent.alias as parent_alias'); $query->join('LEFT', '#__categories as parent ON parent.id = c.parent_id'); $query->where('a.id = ' . (int) $id); // Filter by start and end dates. $nullDate = $db->Quote($db->getNullDate()); $date = JFactory::getDate(); $nowDate = $db->Quote($date->toSql()); $query->where('(a.publish_up = ' . $nullDate . ' OR a.publish_up <= ' . $nowDate . ')'); $query->where('(a.publish_down = ' . $nullDate . ' OR a.publish_down >= ' . $nowDate . ')'); $user = JFactory::getUser(); $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN ('.$groups.')'); $query->where('a.state = 1'); // Join to check for category published state in parent categories up the tree // If all categories are published, badcats.id will be null, and we just use the article state $subquery = ' (SELECT cat.id as id FROM #__categories AS cat JOIN #__categories AS parent '; $subquery .= 'ON cat.lft BETWEEN parent.lft AND parent.rgt '; $subquery .= 'WHERE parent.extension = ' . $db->quote('com_content'); $subquery .= ' AND parent.published <= 0 GROUP BY cat.id)'; $query->join('LEFT OUTER', $subquery . ' AS badcats ON badcats.id = c.id'); $db->setQuery($query); $row = $db->loadObject(); if (!empty($row)) { $articleParams = new JRegistry; $articleParams->loadString($row->attribs); $row->slug = $row->alias ? ($row->id.':'.$row->alias) : $row->id; $row->catslug = $row->category_alias ? ($row->catid.':'.$row->category_alias) : $row->catid; $row->parent_slug = $row->category_alias ? ($row->parent_id.':'.$row->parent_alias) : $row->parent_id; $row->alternative_readmore = $articleParams->get('alternative_readmore'); $row->layout = $articleParams->get('layout'); $user = JFactory::getUser(); $groups = $user->getAuthorisedViewLevels(); if ($row->catid == 0 || $row->category_access === null) { $row->access_view = in_array($row->access, $groups); } else { $row->access_view = (in_array($row->access, $groups) && in_array($row->category_access, $groups)); } } return $row; } }