0byt3m1n1-V2
Path:
/
home
/
phangnga
/
modules
/
mod_minik2
/
[
Home
]
File: helper.php
<?php /** * @version $Id: helper.php 1053 2011-10-06 12:36:44Z lefteris.kavadas $ * @package K2 * @author JoomlaWorks http://www.joomlaworks.gr * @copyright Copyright (c) 2006 - 2011 JoomlaWorks Ltd. All rights reserved. * @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html */ // no direct access defined('_JEXEC') or die('Restricted access'); require_once(JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'route.php'); require_once(JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'utilities.php'); class modMiniK2Helper { public static function getItems(&$params, $format = 'html') { jimport('joomla.filesystem.file'); $mainframe = JFactory::getApplication(); $limit = $params->get('itemCount', 5); $cid = $params->get('category_id', NULL); $ordering = $params->get('itemsOrdering',''); $componentParams = JComponentHelper::getParams('com_k2'); $limitstart = JRequest::getInt('limitstart'); $user = JFactory::getUser(); $aid = $user->get('aid'); $db = JFactory::getDBO(); $jnow = JFactory::getDate(); $now = K2_JVERSION == '15'? $jnow->toMySQL() : $jnow->toSql(); $nullDate = $db->getNullDate(); if($params->get('source')=='specific') { $value = $params->get('items'); $current = array(); if(is_string($value) && !empty($value)) $current[]=$value; if(is_array($value)) $current=$value; $items = array(); foreach($current as $id) { $query = "SELECT i.*, c.name AS categoryname,c.id AS categoryid, c.alias AS categoryalias, c.params AS categoryparams FROM #__k2_items as i LEFT JOIN #__k2_categories c ON c.id = i.catid WHERE i.published = 1 "; if (K2_JVERSION != '15') { $query .= " AND i.access IN(".implode(',', $user->getAuthorisedViewLevels()).") "; } else { $query .= " AND i.access<={$aid} "; } $query .= " AND i.trash = 0 AND c.published = 1 "; if (K2_JVERSION != '15') { $query .= " AND c.access IN(".implode(',', $user->getAuthorisedViewLevels()).") "; } else { $query .= " AND c.access<={$aid} "; } $query .= " AND c.trash = 0 AND ( i.publish_up = ".$db->Quote($nullDate)." OR i.publish_up <= ".$db->Quote($now)." ) AND ( i.publish_down = ".$db->Quote($nullDate)." OR i.publish_down >= ".$db->Quote($now)." ) AND i.id={$id}"; if (K2_JVERSION != '15') { if ($mainframe->getLanguageFilter()) { $languageTag = JFactory::getLanguage()->getTag(); $query .= " AND c.language IN (".$db->Quote($languageTag).", ".$db->Quote('*').") AND i.language IN (".$db->Quote($languageTag).", ".$db->Quote('*').")"; } } $db->setQuery($query); $item = $db->loadObject(); if($item) $items[]=$item; } } else { $query = "SELECT i.*, c.name AS categoryname,c.id AS categoryid, c.alias AS categoryalias, c.params AS categoryparams"; if ($ordering == 'best') $query .= ", (r.rating_sum/r.rating_count) AS rating"; if ($ordering == 'comments') $query .= ", COUNT(comments.id) AS numOfComments"; $query .= " FROM #__k2_items as i LEFT JOIN #__k2_categories c ON c.id = i.catid"; if ($ordering == 'best') $query .= " LEFT JOIN #__k2_rating r ON r.itemID = i.id"; if ($ordering == 'comments') $query .= " LEFT JOIN #__k2_comments comments ON comments.itemID = i.id"; if (K2_JVERSION != '15') { $query .= " WHERE i.published = 1 AND i.access IN(".implode(',', $user->getAuthorisedViewLevels()).") AND i.trash = 0 AND c.published = 1 AND c.access IN(".implode(',', $user->getAuthorisedViewLevels()).") AND c.trash = 0"; } else { $query .= " WHERE i.published = 1 AND i.access <= {$aid} AND i.trash = 0 AND c.published = 1 AND c.access <= {$aid} AND c.trash = 0"; } $query .= " AND ( i.publish_up = ".$db->Quote($nullDate)." OR i.publish_up <= ".$db->Quote($now)." )"; $query .= " AND ( i.publish_down = ".$db->Quote($nullDate)." OR i.publish_down >= ".$db->Quote($now)." )"; if ($params->get('catfilter')) { if (!is_null($cid)) { if (is_array($cid)) { if ($params->get('getChildren')) { //require_once (JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'models'.DS.'itemlist.php'); //$categories = K2ModelItemlist::getCategoryTree($cid); $itemListModel = K2Model::getInstance('Itemlist', 'K2Model'); $categories = $itemListModel->getCategoryTree($cid); $sql = @implode(',', $categories); $query .= " AND i.catid IN ({$sql})"; } else { JArrayHelper::toInteger($cid); $query .= " AND i.catid IN(".implode(',', $cid).")"; } } else { if ($params->get('getChildren')) { //require_once (JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'models'.DS.'itemlist.php'); //$categories = K2ModelItemlist::getCategoryTree($cid); $itemListModel = K2Model::getInstance('Itemlist', 'K2Model'); $categories = $itemListModel->getCategoryTree($cid); $sql = @implode(',', $categories); $query .= " AND i.catid IN ({$sql})"; } else { $query .= " AND i.catid=".(int)$cid; } } } } if ($params->get('FeaturedItems') == '0') $query .= " AND i.featured != 1"; if ($params->get('FeaturedItems') == '2') $query .= " AND i.featured = 1"; if ($params->get('videosOnly')) $query .= " AND (i.video IS NOT NULL AND i.video!='')"; if ($ordering == 'comments') $query .= " AND comments.published = 1"; if (K2_JVERSION != '15') { if ($mainframe->getLanguageFilter()) { $languageTag = JFactory::getLanguage()->getTag(); $query .= " AND c.language IN (".$db->Quote($languageTag).", ".$db->Quote('*').") AND i.language IN (".$db->Quote($languageTag).", ".$db->Quote('*').")"; } } switch ($ordering) { case 'date': $orderby = 'i.created ASC'; break; case 'rdate': $orderby = 'i.created DESC'; break; case 'alpha': $orderby = 'i.title'; break; case 'ralpha': $orderby = 'i.title DESC'; break; case 'order': if ($params->get('FeaturedItems') == '2') $orderby = 'i.featured_ordering'; else $orderby = 'i.ordering'; break; case 'rorder': if ($params->get('FeaturedItems') == '2') $orderby = 'i.featured_ordering DESC'; else $orderby = 'i.ordering DESC'; break; case 'hits': if ($params->get('popularityRange')){ $datenow = JFactory::getDate(); $date = K2_JVERSION == '15'?$datenow->toMySQL():$datenow->toSql(); $query.=" AND i.created > DATE_SUB('{$date}',INTERVAL ".$params->get('popularityRange')." DAY) "; } $orderby = 'i.hits DESC'; break; case 'rand': $orderby = 'RAND()'; break; case 'best': $orderby = 'rating DESC'; break; case 'comments': if ($params->get('popularityRange')){ $datenow = JFactory::getDate(); $date = K2_JVERSION == '15'?$datenow->toMySQL():$datenow->toSql(); $query.=" AND i.created > DATE_SUB('{$date}',INTERVAL ".$params->get('popularityRange')." DAY) "; } $query.=" GROUP BY i.id "; $orderby = 'numOfComments DESC'; break; case 'modified': $orderby = 'modified DESC'; break; case 'publishUp' : $orderby = 'i.publish_up DESC'; break; default: $orderby = 'i.id DESC'; break; } $query .= " ORDER BY ".$orderby; $db->setQuery($query, 0, $limit); $items = $db->loadObjectList(); } $model = K2Model::getInstance('Item', 'K2Model'); if (count($items)) { foreach ($items as $item) { $item->event = new stdClass; //Clean title $item->title = JFilterOutput::ampReplace($item->title); //Images if ($params->get('itemImage')) { $date = JFactory::getDate($item->modified); $timestamp = '?t='.$date->toUnix(); if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_XS.jpg')) { $item->imageXSmall = JURI::base(true).'/media/k2/items/cache/'.md5("Image".$item->id).'_XS.jpg'; if($componentParams->get('imageTimestamp')) { $item->imageXSmall.=$timestamp; } } if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_S.jpg')) { $item->imageSmall = JURI::base(true).'/media/k2/items/cache/'.md5("Image".$item->id).'_S.jpg'; if($componentParams->get('imageTimestamp')){ $item->imageSmall.=$timestamp; } } if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_M.jpg')) { $item->imageMedium = JURI::base(true).'/media/k2/items/cache/'.md5("Image".$item->id).'_M.jpg'; if($componentParams->get('imageTimestamp')){ $item->imageMedium.=$timestamp; } } if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_L.jpg')) { $item->imageLarge = JURI::base(true).'/media/k2/items/cache/'.md5("Image".$item->id).'_L.jpg'; if($componentParams->get('imageTimestamp')){ $item->imageLarge.=$timestamp; } } if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_XL.jpg')) { $item->imageXLarge = JURI::base(true).'/media/k2/items/cache/'.md5("Image".$item->id).'_XL.jpg'; if($componentParams->get('imageTimestamp')){ $item->imageXLarge.=$timestamp; } } if (JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_Generic.jpg')){ $item->imageGeneric = JURI::base(true).'/media/k2/items/cache/'.md5("Image".$item->id).'_Generic.jpg'; if($componentParams->get('imageTimestamp')){ $item->imageGeneric.=$timestamp; } } $image = 'image'.$params->get('itemImgSize','Small'); if (isset($item->$image)) $item->image = $item->$image; } //Read more link $item->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($item->id.':'.urlencode($item->alias), $item->catid.':'.urlencode($item->categoryalias)))); //Tags if ($params->get('itemTags')) { $tags = $model->getItemTags($item->id); for ($i = 0; $i < sizeof($tags); $i++) { $tags[$i]->link = JRoute::_(K2HelperRoute::getTagRoute($tags[$i]->name)); } $item->tags = $tags; } //Category link if ($params->get('itemCategory')) $item->categoryLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid.':'.urlencode($item->categoryalias)))); //Extra fields if ($params->get('itemExtraFields')) { $item->extra_fields = $model->getItemExtraFields($item->extra_fields); } //Comments counter if ($params->get('itemCommentsCounter')) { $item->numOfComments = $model->countItemComments($item->id); } // Votes counter if ($params->get('itemVotesNumber')) { $item->votingPercentage = $model->getVotesPercentage($item->id); $vote = $model->getRating($item->id); $rating_count = (!empty($vote->rating_count)) ? $vote->rating_count : 0; if($rating_count > 0) { $item->voteVal = number_format(intval($vote->rating_sum)/intval($vote->rating_count), 2); } else { $item->voteVal = ''; } //$item->numOfVotes = $model->getVotesNum($item->id); $item->numOfVotes = $rating_count; } // Voting percentage //Import plugins if ($format != 'feed') { $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); } //Video if ($params->get('itemVideo') && $format != 'feed') { $params->set('vfolder', 'media/k2/videos'); $params->set('afolder', 'media/k2/audio'); $item->text = $item->video; if (K2_JVERSION == '15') { $dispatcher->trigger('onPrepareContent', array(&$item, &$params, $limitstart)); } else { $dispatcher->trigger('onContentPrepare', array('mod_minik2.', &$item, &$params, $limitstart)); } $item->video = $item->text; } // Introtext $item->text = ''; if ($params->get('itemIntroText')) { // Word limit if ($params->get('itemIntroTextWordLimit')) { $item->text .= K2HelperUtilities::wordLimit($item->introtext, $params->get('itemIntroTextWordLimit')); } else { $item->text .= $item->introtext; } } if ($format != 'feed') { $params->set('parsedInModule', 1); // for plugins to know when they are parsed inside this module if($params->get('JPlugins',1)) { //Plugins if (K2_JVERSION != '15') { $item->event->BeforeDisplay = ''; $item->event->AfterDisplay = ''; $dispatcher->trigger('onContentPrepare', array('mod_minik2', &$item, &$params, $limitstart)); $results = $dispatcher->trigger('onContentAfterTitle', array('mod_minik2', &$item, &$params, $limitstart)); $item->event->AfterDisplayTitle = trim(implode("\n", $results)); $results = $dispatcher->trigger('onContentBeforeDisplay', array('mod_minik2', &$item, &$params, $limitstart)); $item->event->BeforeDisplayContent = trim(implode("\n", $results)); $results = $dispatcher->trigger('onContentAfterDisplay', array('mod_minik2', &$item, &$params, $limitstart)); $item->event->AfterDisplayContent = trim(implode("\n", $results)); } else { $results = $dispatcher->trigger('onBeforeDisplay', array(&$item, &$params, $limitstart)); $item->event->BeforeDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onAfterDisplay', array(&$item, &$params, $limitstart)); $item->event->AfterDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onAfterDisplayTitle', array(&$item, &$params, $limitstart)); $item->event->AfterDisplayTitle = trim(implode("\n", $results)); $results = $dispatcher->trigger('onBeforeDisplayContent', array(&$item, &$params, $limitstart)); $item->event->BeforeDisplayContent = trim(implode("\n", $results)); $results = $dispatcher->trigger('onAfterDisplayContent', array(&$item, &$params, $limitstart)); $item->event->AfterDisplayContent = trim(implode("\n", $results)); $dispatcher->trigger('onPrepareContent', array(&$item, &$params, $limitstart)); } } //Init K2 plugin events $item->event->K2BeforeDisplay = ''; $item->event->K2AfterDisplay = ''; $item->event->K2AfterDisplayTitle = ''; $item->event->K2BeforeDisplayContent = ''; $item->event->K2AfterDisplayContent = ''; $item->event->K2CommentsCounter = ''; if($params->get('K2Plugins',1)) { //K2 plugins JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2BeforeDisplay', array(&$item, &$params, $limitstart)); $item->event->K2BeforeDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2AfterDisplay', array(&$item, &$params, $limitstart)); $item->event->K2AfterDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2AfterDisplayTitle', array(&$item, &$params, $limitstart)); $item->event->K2AfterDisplayTitle = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2BeforeDisplayContent', array(&$item, &$params, $limitstart)); $item->event->K2BeforeDisplayContent = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2AfterDisplayContent', array(&$item, &$params, $limitstart)); $item->event->K2AfterDisplayContent = trim(implode("\n", $results)); $dispatcher->trigger('onK2PrepareContent', array(&$item, &$params, $limitstart)); if ($params->get('itemCommentsCounter')) { $results = $dispatcher->trigger('onK2CommentsCounter', array ( & $item, &$params, $limitstart)); $item->event->K2CommentsCounter = trim(implode("\n", $results)); } } } // Restore the intotext variable after plugins execution $item->introtext = $item->text; //Clean the plugin tags $item->introtext = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', $item->introtext); //Author if ($params->get('itemAuthor')) { if (! empty($item->created_by_alias)) { $item->author = $item->created_by_alias; $item->authorGender = NULL; $item->authorDescription = NULL; if ($params->get('itemAuthorAvatar')) $item->authorAvatar = K2HelperUtilities::getAvatar('alias'); } else { $author = JFactory::getUser($item->created_by); $item->author = $author->name; $query = "SELECT `description`, `gender` FROM #__k2_users WHERE userID=".(int)$author->id; $db->setQuery($query, 0, 1); $result = $db->loadObject(); if ($result) { $item->authorGender = $result->gender; $item->authorDescription = $result->description; } else { $item->authorGender = NULL; $item->authorDescription = NULL; } if ($params->get('itemAuthorAvatar')) { $item->authorAvatar = K2HelperUtilities::getAvatar($author->id, $author->email, $componentParams->get('userImageWidth')); } //Author Link $item->authorLink = JRoute::_(K2HelperRoute::getUserRoute($item->created_by)); } } // Extra fields plugins if (is_array($item->extra_fields)) { foreach($item->extra_fields as $key => $extraField) { if($extraField->type == 'textarea' || $extraField->type == 'textfield') { $tmp = new JObject(); $tmp->text = $extraField->value; if($params->get('JPlugins',1)){ if (K2_JVERSION != '15') { $dispatcher->trigger('onContentPrepare', array('mod_minik2', &$tmp, &$params, $limitstart)); } else { $dispatcher->trigger('onPrepareContent', array(&$tmp, &$params, $limitstart)); } } if($params->get('K2Plugins',1)) { $dispatcher->trigger('onK2PrepareContent', array ( & $tmp, &$params, $limitstart)); } $extraField->value = $tmp->text; } } } $rows[] = $item; } return $rows; } } public static function getCategories(&$params) { $db = JFactory::getDBO(); $cid = $params->get('category_id', NULL); $limit = $params->get('itemCount', 5); $query = "SELECT c.name AS categoryname,c.id AS categoryid, c.alias AS categoryalias, c.params AS categoryparams FROM #__k2_categories c"; if (!is_null($cid)) { if (is_array($cid)) { if ($params->get('getChildren')) { require_once (JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'models'.DS.'itemlist.php'); $categories = K2ModelItemlist::getCategoryTree($cid); $sql = @implode(',', $categories); $query .= " WHERE c.id IN ({$sql})"; } else { JArrayHelper::toInteger($cid); $query .= " WHERE c.id IN(".implode(',', $cid).")"; } } else { if ($params->get('getChildren')) { require_once (JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'models'.DS.'itemlist.php'); $categories = K2ModelItemlist::getCategoryTree($cid); $sql = @implode(',', $categories); $query .= " WHERE c.id IN ({$sql})"; } else { $query .= " WHERE c.id=".(int)$cid; } } } $query .= " ORDER BY c.id"; $db->setQuery($query, 0, $limit); $categories = $db->loadObjectList(); return $categories; } }
©
2018.