public static function getLatestComments($params) { $model = K2Model::getInstance('Comments'); $model->setState('filter.items', true); $model->setState('state', 1); $filter = $params->get('category_id'); if ($filter && isset($filter->enabled) && $filter->enabled) { $model->setState('category', $filter->categories); } $model->setState('limit', (int) $params->get('comments_limit', '5')); $model->setState('sorting', 'id.reverse'); $comments = $model->getRows(); foreach ($comments as $comment) { if ((int) $params->get('comments_word_limit')) { $comment->text = K2HelperUtilities::wordLimit($comment->text, $params->get('comments_word_limit')); } $comment->user->displayName = $params->get('commenterName', 1) == 2 ? $comment->user->username : $comment->user->name; } return $comments; }
echo $user->name; ?> </a> <?php } ?> <?php if ($params->get('userDescription') && $user->description) { ?> <div class="ubUserDescription"> <?php if ($params->get('userDescriptionWordLimit')) { ?> <?php echo K2HelperUtilities::wordLimit($user->description, $params->get('userDescriptionWordLimit')); ?> <?php } else { ?> <?php echo $user->description; ?> <?php } ?> </div> <?php } ?>
function prepareFeedItem(&$item) { JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'tables'); $params =& JComponentHelper::getParams('com_k2'); $limitstart = 0; //Category $category =& JTable::getInstance('K2Category', 'Table'); $category->load($item->catid); $item->category = $category; //Read more link $item->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($item->id . ':' . $item->alias, $item->catid . ':' . urlencode($item->category->alias)))); //Filtering if ($params->get('introTextCleanup')) { $filterTags = preg_split('#[,\\s]+#', trim($params->get('introTextCleanupExcludeTags'))); $filterAttrs = preg_split('#[,\\s]+#', trim($params->get('introTextCleanupTagAttr'))); $filter = new JFilterInput($filterTags, $filterAttrs, 0, 1); $item->introtext = $filter->clean($item->introtext); } if ($params->get('fullTextCleanup')) { $filterTags = preg_split('#[,\\s]+#', trim($params->get('fullTextCleanupExcludeTags'))); $filterAttrs = preg_split('#[,\\s]+#', trim($params->get('fullTextCleanupTagAttr'))); $filter = new JFilterInput($filterTags, $filterAttrs, 0, 1); $item->fulltext = $filter->clean($item->fulltext); } //Description $item->description = ''; //Item image if ($params->get('feedItemImage') && JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_' . $params->get('feedImgSize') . '.jpg')) { $item->description .= '<div class="K2FeedImage"><img src="' . JURI::root() . '/media/k2/items/cache/' . md5('Image' . $item->id) . '_' . $params->get('feedImgSize') . '.jpg" alt="' . $item->title . '"/></div>'; } //Item Introtext if ($params->get('feedItemIntroText')) { //Introtext word limit if ($params->get('feedTextWordLimit')) { $item->introtext = K2HelperUtilities::wordLimit($item->introtext, $params->get('feedTextWordLimit')); } $item->description .= '<div class="K2FeedIntroText">' . $item->introtext . '<div>'; } //Item Fulltext if ($params->get('feedItemFullText')) { $item->description .= '<div class="K2FeedFullText">' . $item->fulltext . '<div>'; } //Author if (!empty($item->created_by_alias)) { $item->author->name = $item->created_by_alias; } else { $author = JFactory::getUser($item->created_by); $item->author = $author; $item->author->link = JRoute::_(K2HelperRoute::getUserRoute($item->created_by)); $item->author->profile = K2ModelItem::getUserProfile($item->created_by); } return $item; }
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 \n\t\t\t\tFROM #__k2_items as i \n\t\t\t\tLEFT JOIN #__k2_categories c ON c.id = i.catid \n\t\t\t\tWHERE 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 \n\t\t\t\tAND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " ) \n\t\t\t\tAND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " ) \n\t\t\t\tAND 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.*, CASE WHEN i.modified = 0 THEN i.created ELSE i.modified END as lastChanged, 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 RIGHT 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')) { $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')) { $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 ($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 = 'lastChanged 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) { //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)))); //Category link $item->categoryLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid . ':' . urlencode($item->categoryalias)))); // 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; } } // Restore the intotext variable after plugins execution $item->introtext = $item->text; //Clean the plugin tags $item->introtext = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', $item->introtext); $rows[] = $item; } return $rows; } }
function prepareFeedItem(&$item){ JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR.DS.'tables'); $params = & JComponentHelper::getParams('com_k2'); $limitstart=0; //Category $category = & JTable::getInstance('K2Category', 'Table'); $category->load($item->catid); $item->category=$category; //Read more link $item->link=urldecode(JRoute::_(K2HelperRoute::getItemRoute($item->id.':'.$item->alias,$item->catid.':'.urlencode($item->category->alias)))); //Filtering if ($params->get('introTextCleanup')){ $filterTags = preg_split( '#[,\s]+#', trim( $params->get( 'introTextCleanupExcludeTags' ) ) ); $filterAttrs = preg_split( '#[,\s]+#', trim( $params->get( 'introTextCleanupTagAttr' ) ) ); $filter = new JFilterInput( $filterTags, $filterAttrs, 0, 1 ); $item->introtext= $filter->clean( $item->introtext ); } if ($params->get('fullTextCleanup')){ $filterTags = preg_split( '#[,\s]+#', trim( $params->get( 'fullTextCleanupExcludeTags' ) ) ); $filterAttrs = preg_split( '#[,\s]+#', trim( $params->get( 'fullTextCleanupTagAttr' ) ) ); $filter = new JFilterInput( $filterTags, $filterAttrs, 0, 1 ); $item->fulltext= $filter->clean( $item->fulltext ); } //Description $item->description = ''; //Item image if ($params->get('feedItemImage') && JFile::exists(JPATH_SITE.DS.'media'.DS.'k2'.DS.'items'.DS.'cache'.DS.md5("Image".$item->id).'_'.$params->get('feedImgSize').'.jpg')){ $item->description.= '<div class="K2FeedImage"><img src="'.JURI::root().'/media/k2/items/cache/'.md5('Image'.$item->id).'_'.$params->get('feedImgSize').'.jpg" alt="'.$item->title.'" /></div>'; } //Item Introtext if($params->get('feedItemIntroText')){ //Introtext word limit if ($params->get('feedTextWordLimit') && $item->introtext){ $item->introtext=K2HelperUtilities::wordLimit($item->introtext,$params->get('feedTextWordLimit')); } $item->description.= '<div class="K2FeedIntroText">'.$item->introtext.'</div>'; } //Item Fulltext if($params->get('feedItemFullText') && $item->fulltext){ $item->description.= '<div class="K2FeedFullText">'.$item->fulltext.'</div>'; } //Item Tags if($params->get('feedItemTags')){ $tags = K2ModelItem::getItemTags($item->id); if(count($tags)){ $item->description.='<div class="K2FeedTags"><ul>'; foreach($tags as $tag){ $item->description.='<li>'.$tag->name.'</li>'; } $item->description.='<ul></div>'; } } //Item Video if($params->get('feedItemVideo') && $item->video){ if (!empty($item->video) && JString::substr($item->video, 0, 1) !== '{') { $item->description.= '<div class="K2FeedVideo">'.$item->video.'</div>'; } else { $params->set('vfolder', 'media/k2/videos'); if(JString::strpos($item->video, 'remote}')){ preg_match("#}(.*?){/#s",$item->video, $matches); if(!JString::strpos($matches[1], 'http://}')) $item->video = str_replace($matches[1], JURI::root().$matches[1], $item->video); } $dispatcher = &JDispatcher::getInstance(); JPluginHelper::importPlugin ('content'); $item->text=$item->video; $dispatcher->trigger ( 'onPrepareContent', array (&$item, &$params, $limitstart ) ); $item->description.= '<div class="K2FeedVideo">'.$item->text.'</div>'; } } //Item gallery if($params->get('feedItemGallery') && $item->gallery){ $params->set('galleries_rootfolder', 'media/k2/galleries'); $params->set('popup_engine', 'mootools_slimbox'); $params->set('enabledownload', '0'); $dispatcher = &JDispatcher::getInstance(); JPluginHelper::importPlugin ('content'); $item->text=$item->gallery; $dispatcher->trigger ( 'onPrepareContent', array (&$item, &$params, $limitstart ) ); $item->description.= '<div class="K2FeedGallery">'.$item->text.'</div>'; } //Item attachments if($params->get('feedItemAttachments')){ $attachments = K2ModelItem::getItemAttachments($item->id); if(count($attachments)){ $item->description.='<div class="K2FeedAttachments"><ul>'; foreach($attachments as $attachment){ $item->description.='<li><a title="'.htmlentities($attachment->titleAttribute, ENT_QUOTES, 'UTF-8').'" href="'.JRoute::_('index.php?option=com_k2&view=item&task=download&id='.$attachment->id).'">'.$attachment->title.'</a></li>'; } $item->description.='<ul></div>'; } } //Author if (!empty($item->created_by_alias)){ $item->author->name = $item->created_by_alias; } else { $author=&JFactory::getUser($item->created_by); $item->author = $author; $item->author->link = JRoute::_(K2HelperRoute::getUserRoute($item->created_by)); $item->author->profile = K2ModelItem::getUserProfile($item->created_by); } return $item; }
public static function getLatestComments(&$params) { $mainframe = JFactory::getApplication(); $limit = $params->get('comments_limit', '5'); $user = JFactory::getUser(); $aid = $user->get('aid'); $db = JFactory::getDBO(); $cid = $params->get('category_id', NULL); $jnow = JFactory::getDate(); $now = K2_JVERSION != '15' ? $jnow->toSql() : $jnow->toMySQL(); $nullDate = $db->getNullDate(); $model = K2Model::getInstance('Item', 'K2Model'); $componentParams = JComponentHelper::getParams('com_k2'); $query = "SELECT c.*, i.catid, i.title, i.alias, category.alias as catalias, category.name as categoryname\n\t\tFROM #__k2_comments as c\n\t\tLEFT JOIN #__k2_items as i ON i.id=c.itemID\n\t\tLEFT JOIN #__k2_categories as category ON category.id=i.catid\n\t\tWHERE i.published=1\n\t\tAND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " )\n\t\tAND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )\n\t\tAND i.trash=0 "; if (K2_JVERSION != '15') { $query .= " AND i.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") "; } else { $query .= " AND i.access<={$aid} "; } $query .= " AND category.published=1 AND category.trash=0 "; if (K2_JVERSION != '15') { $query .= " AND category.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") "; } else { $query .= " AND category.access<={$aid} "; } $query .= " AND c.published=1 "; if ($params->get('catfilter')) { if (!is_null($cid)) { if (is_array($cid)) { JArrayHelper::toInteger($cid); $query .= " AND i.catid IN(" . implode(',', $cid) . ")"; } else { $query .= " AND i.catid=" . (int) $cid; } } } if (K2_JVERSION != '15') { if ($mainframe->getLanguageFilter()) { $languageTag = JFactory::getLanguage()->getTag(); $query .= " AND category.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ") AND i.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ")"; } } $query .= " ORDER BY c.commentDate DESC "; $db->setQuery($query, 0, $limit); $rows = $db->loadObjectList(); $pattern = "@\\b(https?://)?(([0-9a-zA-Z_!~*'().&=+\$%-]+:)?[0-9a-zA-Z_!~*'().&=+\$%-]+\\@)?(([0-9]{1,3}\\.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+\\.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z]\\.[a-zA-Z]{2,6})(:[0-9]{1,4})?((/[0-9a-zA-Z_!~*'().;?:\\@&=+\$,%#-]+)*/?)@"; if (count($rows)) { foreach ($rows as $row) { if ($params->get('commentDateFormat') == 'relative') { $config = JFactory::getConfig(); $tzoffset = K2_JVERSION == '30' ? $config->get('config.offset') : $config->getValue('config.offset'); $now = new JDate(); $now->setOffset($tzoffset); $created = new JDate($row->commentDate); $diff = $now->toUnix() - $created->toUnix(); $dayDiff = floor($diff / 86400); if ($dayDiff == 0) { if ($diff < 5) { $row->commentDate = JText::_('K2_JUST_NOW'); } elseif ($diff < 60) { $row->commentDate = $diff . ' ' . JText::_('K2_SECONDS_AGO'); } elseif ($diff < 120) { $row->commentDate = JText::_('K2_1_MINUTE_AGO'); } elseif ($diff < 3600) { $row->commentDate = floor($diff / 60) . ' ' . JText::_('K2_MINUTES_AGO'); } elseif ($diff < 7200) { $row->commentDate = JText::_('K2_1_HOUR_AGO'); } elseif ($diff < 86400) { $row->commentDate = floor($diff / 3600) . ' ' . JText::_('K2_HOURS_AGO'); } } } $row->commentText = K2HelperUtilities::wordLimit($row->commentText, $params->get('comments_word_limit')); $row->commentText = preg_replace($pattern, '<a target="_blank" rel="nofollow" href="\\0">\\0</a>', $row->commentText); $row->itemLink = urldecode(JRoute::_(K2HelperRoute::getItemRoute($row->itemID . ':' . urlencode($row->alias), $row->catid . ':' . urlencode($row->catalias)))); $row->link = $row->itemLink . "#comment{$row->id}"; $row->catLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($row->catid . ':' . urlencode($row->catalias)))); if ($row->userID > 0) { $row->userLink = JRoute::_(K2HelperRoute::getUserRoute($row->userID)); $getExistingUser = JFactory::getUser($row->userID); $row->userUsername = $getExistingUser->username; } else { $row->userUsername = $row->userName; } // Switch between commenter name and username if ($params->get('commenterName', 1) == 2) { $row->userName = $row->userUsername; } $row->userImage = ''; if ($params->get('commentAvatar')) { $row->userImage = K2HelperUtilities::getAvatar($row->userID, $row->commentEmail, $componentParams->get('commenterImgWidth')); } $comments[] = $row; } return $comments; } }
<!-- K2 Plugins: K2BeforeDisplayContent --> <?php echo $this->item->event->K2BeforeDisplayContent; ?> <?php if ($this->item->params->get('catItemIntroText')) { ?> <!-- Item introtext --> <div class="catItemIntroText"> <?php if ($this->item->params->get('catItemIntroTextWordLimit') > 1) { echo K2HelperUtilities::wordLimit($this->item->introtext, $this->item->params->get('catItemIntroTextWordLimit') - 1, ''); } else { echo $this->item->introtext; } ?> </div> <?php } ?> <aside class="article-aside"> <dl class="article-info muted"> <dt></dt> <!-- Item Author --> <?php if ($this->item->params->get('catItemAuthor')) { ?>
public static function getItems($params) { // Component params $componentParams = JComponentHelper::getParams('com_k2'); // Get model $model = K2Model::getInstance('Items'); // Set site state $model->setState('site', true); // Set states depending on source if ($params->get('source') == 'specific') { $items = array(); if ($params->get('items')) { $itemIds = array_filter((array) $params->get('items')); if (count($itemIds)) { // Apply sorting foreach ($itemIds as $itemId) { // Fetch item $model->setState('id', $itemId); $items[] = $model->getRow(); } } } } else { // Category filter $model->setState('category.filter', $params->get('filter')); // Featured if ($params->get('featured') == 2) { $model->setState('featured', 1); } else { if ($params->get('featured') == 0) { $model->setState('featured', 0); } } // Set time range if sorting is comments or hits if ($params->get('timeRange') && ($params->get('sorting') == 'comments' || $params->get('sorting') == 'hits')) { $now = JFactory::getDate(); switch ($params->get('timeRange')) { case '1': $interval = 'P1D'; break; case '3': $interval = 'P3D'; break; case '7': $interval = 'P1W'; break; case '15': $interval = 'P2W'; break; case '30': $interval = 'P1M'; break; case '90': $interval = 'P3M'; break; case '180': $interval = 'P6M'; break; } $date = $now->sub(new DateInterval($interval)); $model->setState('created.value', $date->toSql()); $model->setState('created.operator', '>'); } // Fetch only items with media if ($params->get('media')) { $model->setState('media', true); } // Set limit $model->setState('limit', $params->get('limit')); // Set sorting $model->setState('sorting', $params->get('sorting')); // Get items $items = $model->getRows(); } // Prepare data foreach ($items as $item) { // Plugins $item->events = $item->getEvents('mod_k2_content', $params, 0, $params->get('k2Plugins'), $params->get('jPlugins')); // Introtext word limit if ($params->get('itemIntroTextWordLimit')) { $item->introtext = K2HelperUtilities::wordLimit($item->introtext, $params->get('itemIntroTextWordLimit')); } // Set the selected image as default $item->image = $item->getImage($params->get('itemImgSize')); } // Load the comments counters in a single query for all items if ($params->get('itemCommentsCounter') && $componentParams->get('comments')) { K2Items::countComments($items); } // Set the avatar width if it's inherited from component settings if ($params->get('itemAuthorAvatarWidthSelect') == 'custom') { $params->set('itemAuthorAvatarWidth', $componentParams->get('userImageWidth')); } // Set the custom link url if user has selected a menu link item if ($params->get('itemCustomLinkMenuItem') && $params->get('itemCustomLink')) { $application = JFactory::getApplication(); $menu = $application->getMenu(); $menuLink = $menu->getItem($params->get('itemCustomLinkMenuItem')); if ($menuLink) { if (!$params->get('itemCustomLinkTitle')) { $params->set('itemCustomLinkTitle', $menuLink->title); } $params->set('itemCustomLinkURL', JRoute::_('index.php?&Itemid=' . $menuLink->id)); } } // Return return $items; }
px; height:auto;" /> </a> </span> <div class="clr"></div> </div> <?php } ?> <?php if ($item->params->get('tagItemIntroText', 1)) { ?> <!-- Item introtext --> <div class="tagItemIntroText"> <?php echo $item->introtext = K2HelperUtilities::wordLimit(20); ?> </div> <?php } ?> <div class="clr"></div> </div> <div class="clr"></div> <?php if ($item->params->get('tagItemExtraFields', 0) && count($item->extra_fields)) { ?> <!-- Item extra fields -->
?> <?php } ?> </div> <?php } ?> <?php if ($params->get('itemIntroText')) { ?> <div class="moduleItemIntrotext"> <?php echo $params->get('itemIntroTextWordLimit') > 1 ? K2HelperUtilities::wordLimit($item->introtext, $params->get('itemIntroTextWordLimit') - 1, '') : $item->introtext; ?> </div> <?php } ?> <?php if ($params->get('itemExtraFields') && count($item->extra_fields)) { ?> <div class="moduleItemExtraFields"> <b><?php echo JText::_('K2_ADDITIONAL_INFO'); ?> </b> <ul>
function display($tpl = null) { $mainframe = JFactory::getApplication(); //$params = K2HelperUtilities::getParams('com_k2'); if ($mainframe->isSite()) { $params = $mainframe->getParams('com_jak2filter'); } else { $params = JComponentHelper::getParams('com_jak2filter'); } //JA K2 FILTER - custom params to display well search result with category view $params->set('show_page_heading', 1); $params->set('catItemImage', 1); $params->set('catCatalogMode', 0); $params->set('theme', JRequest::getString('theme', $params->get('theme', 'default'))); $params->def('num_leading_items', 0); $params->def('num_leading_columns', 1); $params->def('num_primary_items', 9); $params->def('num_primary_columns', 3); $params->def('num_secondary_items', 0); $params->def('num_secondary_columns', 1); $params->def('num_links', 0); $params->def('num_links_columns', 1); // $model = $this->getModel('itemlist'); $limitstart = JRequest::getInt('limitstart'); $view = JRequest::getWord('view'); $task = JRequest::getWord('task'); $db = JFactory::getDBO(); // Add link if (K2HelperPermissions::canAddItem()) { $addLink = JRoute::_('index.php?option=com_k2&view=item&task=add&tmpl=component'); } $this->assignRef('addLink', $addLink); // Get data depending on task switch ($task) { case 'category': // Get category $id = JRequest::getInt('id'); JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'tables'); $category = JTable::getInstance('K2Category', 'Table'); $category->load($id); $category->event = new stdClass(); // State check if (!$category->published || $category->trash) { JError::raiseError(404, JText::_('K2_CATEGORY_NOT_FOUND')); } // Access check $user = JFactory::getUser(); if (K2_JVERSION != '15') { if (!in_array($category->access, $user->getAuthorisedViewLevels())) { if ($user->guest) { $uri = JFactory::getURI(); $url = 'index.php?option=com_users&view=login&return=' . base64_encode($uri->toString()); $mainframe->enqueueMessage(JText::_('K2_YOU_NEED_TO_LOGIN_FIRST'), 'notice'); $mainframe->redirect(JRoute::_($url, false)); } else { JError::raiseError(403, JText::_('K2_ALERTNOTAUTH')); return; } } $languageFilter = $mainframe->getLanguageFilter(); $languageTag = JFactory::getLanguage()->getTag(); if ($languageFilter && $category->language != $languageTag && $category->language != '*') { return; } } else { if ($category->access > $user->get('aid', 0)) { if ($user->guest) { $uri = JFactory::getURI(); $url = 'index.php?option=com_user&view=login&return=' . base64_encode($uri->toString()); $mainframe->enqueueMessage(JText::_('K2_YOU_NEED_TO_LOGIN_FIRST'), 'notice'); $mainframe->redirect(JRoute::_($url, false)); } else { JError::raiseError(403, JText::_('K2_ALERTNOTAUTH')); return; } } } // Hide the add new item link if user cannot post in the specific category if (!K2HelperPermissions::canAddItem($id)) { unset($this->addLink); } // Merge params $cparams = class_exists('JParameter') ? new JParameter($category->params) : new JRegistry($category->params); // Get the meta information before merging params since we do not want them to be inherited $category->metaDescription = $cparams->get('catMetaDesc'); $category->metaKeywords = $cparams->get('catMetaKey'); $category->metaRobots = $cparams->get('catMetaRobots'); $category->metaAuthor = $cparams->get('catMetaAuthor'); if ($cparams->get('inheritFrom')) { $masterCategory = JTable::getInstance('K2Category', 'Table'); $masterCategory->load($cparams->get('inheritFrom')); $cparams = class_exists('JParameter') ? new JParameter($masterCategory->params) : new JRegistry($masterCategory->params); } $params->merge($cparams); // Category link $category->link = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($category->id . ':' . urlencode($category->alias)))); // Category image $category->image = K2HelperUtilities::getCategoryImage($category->image, $params); // Category plugins $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); $category->text = $category->description; if (K2_JVERSION != '15') { $dispatcher->trigger('onContentPrepare', array('com_k2.category', &$category, &$params, $limitstart)); } else { $dispatcher->trigger('onPrepareContent', array(&$category, &$params, $limitstart)); } $category->description = $category->text; // Category K2 plugins $category->event->K2CategoryDisplay = ''; JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2CategoryDisplay', array(&$category, &$params, $limitstart)); $category->event->K2CategoryDisplay = trim(implode("\n", $results)); $category->text = $category->description; $dispatcher->trigger('onK2PrepareContent', array(&$category, &$params, $limitstart)); $category->description = $category->text; $this->assignRef('category', $category); $this->assignRef('user', $user); // Category children $ordering = $params->get('subCatOrdering'); $children = $model->getCategoryFirstChildren($id, $ordering); if (count($children)) { foreach ($children as $child) { if ($params->get('subCatTitleItemCounter')) { $child->numOfItems = $model->countCategoryItems($child->id); } $child->image = K2HelperUtilities::getCategoryImage($child->image, $params); $child->name = htmlspecialchars($child->name, ENT_QUOTES); $child->link = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($child->id . ':' . urlencode($child->alias)))); $subCategories[] = $child; } $this->assignRef('subCategories', $subCategories); } // Set limit $limit = $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items') + $params->get('num_links'); // Set featured flag JRequest::setVar('featured', $params->get('catFeaturedItems')); // Set layout $this->setLayout('category'); // Set title $title = $category->name; $category->name = htmlspecialchars($category->name, ENT_QUOTES); // Set ordering if ($params->get('singleCatOrdering')) { $ordering = $params->get('singleCatOrdering'); } else { $ordering = $params->get('catOrdering'); } $addHeadFeedLink = $params->get('catFeedLink'); break; case 'user': // Get user $id = JRequest::getInt('id'); $userObject = JFactory::getUser($id); $userObject->event = new stdClass(); // Check user status if ($userObject->block) { JError::raiseError(404, JText::_('K2_USER_NOT_FOUND')); } // Get K2 user profile $userObject->profile = $model->getUserProfile(); // User image $userObject->avatar = K2HelperUtilities::getAvatar($userObject->id, $userObject->email, $params->get('userImageWidth')); // User K2 plugins $userObject->event->K2UserDisplay = ''; if (is_object($userObject->profile) && $userObject->profile->id > 0) { $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2UserDisplay', array(&$userObject->profile, &$params, $limitstart)); $userObject->event->K2UserDisplay = trim(implode("\n", $results)); $userObject->profile->url = htmlspecialchars($userObject->profile->url, ENT_QUOTES, 'UTF-8'); } $this->assignRef('user', $userObject); $date = JFactory::getDate(); $now = K2_JVERSION == '15' ? $date->toMySQL() : $date->toSql(); $this->assignRef('now', $now); // Set layout $this->setLayout('user'); // Set limit $limit = $params->get('userItemCount'); // Set title $title = $userObject->name; $userObject->name = htmlspecialchars($userObject->name, ENT_QUOTES); // Set ordering $ordering = $params->get('userOrdering'); $addHeadFeedLink = $params->get('userFeedLink', 1); break; case 'tag': // Set layout $this->setLayout('tag'); // Set limit $limit = $params->get('tagItemCount'); // Set title $title = JText::_('K2_DISPLAYING_ITEMS_BY_TAG') . ' ' . JRequest::getVar('tag'); // Set ordering $ordering = $params->get('tagOrdering'); $addHeadFeedLink = $params->get('tagFeedLink', 1); break; case 'search': // Set layout $this->setLayout('category'); // Set limit //$limit = $params->get('genericItemCount'); //JA K2 FILTER - like category view $limit = $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items') + $params->get('num_links'); // Set title $title = JText::_('JAK2FILTER_SEARCH_RESULTS') . ' ' . JRequest::getVar('searchword'); $addHeadFeedLink = $params->get('genericFeedLink', 1); //JA K2 FILTER - Set ordering $ordering = JRequest::getVar('ordering', $params->get('catOrdering')); break; case 'date': // Set layout $this->setLayout('generic'); // Set limit $limit = $params->get('genericItemCount'); // Fix wrong timezone if (function_exists('date_default_timezone_get')) { $originalTimezone = date_default_timezone_get(); } if (function_exists('date_default_timezone_set')) { date_default_timezone_set('UTC'); } // Set title if (JRequest::getInt('day')) { $date = strtotime(JRequest::getInt('year') . '-' . JRequest::getInt('month') . '-' . JRequest::getInt('day')); $dateFormat = K2_JVERSION == '15' ? '%A, %d %B %Y' : 'l, d F Y'; $title = JText::_('K2_ITEMS_FILTERED_BY_DATE') . ' ' . JHTML::_('date', $date, $dateFormat); } else { $date = strtotime(JRequest::getInt('year') . '-' . JRequest::getInt('month')); $dateFormat = K2_JVERSION == '15' ? '%B %Y' : 'F Y'; $title = JText::_('K2_ITEMS_FILTERED_BY_DATE') . ' ' . JHTML::_('date', $date, $dateFormat); } // Restore the original timezone if (function_exists('date_default_timezone_set') && isset($originalTimezone)) { date_default_timezone_set($originalTimezone); } // Set ordering $ordering = 'rdate'; $addHeadFeedLink = $params->get('genericFeedLink', 1); break; default: // Set layout $this->setLayout('category'); $user = JFactory::getUser(); $this->assignRef('user', $user); // Set limit $limit = $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items') + $params->get('num_links'); // Set featured flag JRequest::setVar('featured', $params->get('catFeaturedItems')); // Set title $title = $params->get('page_title'); // Set ordering $ordering = $params->get('catOrdering'); $addHeadFeedLink = $params->get('catFeedLink', 1); break; } // Set limit for model if (!$limit) { $limit = 10; } JRequest::setVar('limit', $limit); // Get items if (!isset($ordering)) { $items = $model->getData(); } else { $items = $model->getData($ordering); } if (count($items) == 0) { return JError::raiseNotice(500, JText::_('SEARCH_RESULT_NULL')); } // Pagination jimport('joomla.html.pagination'); $total = count($items) ? $model->getTotal() : 0; $pagination = new JPagination($total, $limitstart, $limit); $vars = JRequest::get('get'); $pagination->setAdditionalUrlParam('Itemid', $vars['Itemid']); //Fix bug: page navigation does not work properly if SEF is enabled /* if(count($vars)) { foreach ($vars as $k => $v) { if($k == 'task') continue; if(is_array($v)) { foreach ($v as $sk => $sv) { $pagination->setAdditionalUrlParam($k.'['.$sk.']', $sv); } } else { $pagination->setAdditionalUrlParam($k, $v); } } }*/ //Prepare items $user = JFactory::getUser(); $cache = JFactory::getCache('com_k2_extended'); $model = JModelLegacy::getInstance('item', 'K2Model'); for ($i = 0; $i < sizeof($items); $i++) { //Item group // JA K2 FILTER - using category view for displaying search result if ($task == "category" || $task == "search" || $task == "") { if ($i < $params->get('num_links') + $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items')) { $items[$i]->itemGroup = 'links'; } if ($i < $params->get('num_secondary_items') + $params->get('num_leading_items') + $params->get('num_primary_items')) { $items[$i]->itemGroup = 'secondary'; } if ($i < $params->get('num_primary_items') + $params->get('num_leading_items')) { $items[$i]->itemGroup = 'primary'; } if ($i < $params->get('num_leading_items')) { $items[$i]->itemGroup = 'leading'; } } // Check if the model should use the cache for preparing the item even if the user is logged in /* // JA K2 Filter: Remove cache method if ($user->guest || $task == 'tag' || $task == 'search' || $task == 'date') { $cacheFlag = true; } else { $cacheFlag = true; if (K2HelperPermissions::canEditItem($items[$i]->created_by, $items[$i]->catid)) { $cacheFlag = false; } } // Prepare item if ($cacheFlag) { $hits = $items[$i]->hits; $items[$i]->hits = 0; JTable::getInstance('K2Category', 'Table'); $items[$i] = $cache->call(array($model, 'prepareItem'), $items[$i], $view, $task); $items[$i]->hits = $hits; } else { $items[$i] = $model->prepareItem($items[$i], $view, $task); } */ // JA K2 Filter: PrepareItem $items[$i] = $model->prepareItem($items[$i], $view, ''); // Plugins $items[$i]->params->set('genericItemIntroText', $params->get('catItemIntroText')); $items[$i]->params->set('catItemK2Plugins', $params->get('catItemK2Plugins')); $items[$i] = $model->execPlugins($items[$i], 'itemlist', ''); // Trigger comments counter event $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2CommentsCounter', array(&$items[$i], &$params, $limitstart)); $items[$i]->event->K2CommentsCounter = trim(implode("\n", $results)); //JA K2 FILTER - CUSTOM VIEW OPTIONS $items[$i]->params->merge($params); if (!is_array($items[$i]->extra_fields)) { $items[$i]->extra_fields = $model->getItemExtraFields($items[$i]->extra_fields, $items[$i]); } if ($params->get('catItemIntroTextWordLimit')) { $items[$i]->introtext = K2HelperUtilities::wordLimit($items[$i]->introtext, $params->get('catItemIntroTextWordLimit')); } //JA K2 FILTER - CUSTOM VIEW OPTIONS - AUTHOR if (!empty($items[$i]->created_by_alias)) { $items[$i]->author = new stdClass(); $items[$i]->author->name = $items[$i]->created_by_alias; $items[$i]->author->avatar = K2HelperUtilities::getAvatar('alias'); $items[$i]->author->link = JURI::root(); } else { $author = JFactory::getUser($items[$i]->created_by); $items[$i]->author = $author; $items[$i]->author->link = JRoute::_(K2HelperRoute::getUserRoute($items[$i]->created_by)); $items[$i]->author->profile = $model->getUserProfile($items[$i]->created_by); $items[$i]->author->avatar = K2HelperUtilities::getAvatar($author->id, $author->email, $params->get('userImageWidth')); } if (!isset($items[$i]->author->profile) || is_null($items[$i]->author->profile)) { $items[$i]->author->profile = new JObject(); $items[$i]->author->profile->gender = NULL; } //JA K2 FILTER - CUSTOM VIEW OPTIONS - RATING $items[$i]->votingPercentage = $model->getVotesPercentage($items[$i]->id); $items[$i]->numOfvotes = $model->getVotesNum($items[$i]->id); } // Set title $document = JFactory::getDocument(); $application = JFactory::getApplication(); $menus = $application->getMenu(); $menu = $menus->getActive(); if (is_object($menu)) { if (is_string($menu->params)) { $menu_params = K2_JVERSION == '15' ? new JParameter($menu->params) : new JRegistry($menu->params); } else { $menu_params = $menu->params; } $params->set('page_title', $menu_params->get('page_title', $title)); $params->set('page_heading', $menu_params->get('page_heading', $title)); // override theming params $params_query = new JRegistry($menu->query); $params->set('theme', $params_query->get('theme', $params->get('theme'))); } else { $params->set('page_title', $title); } // We're adding a new variable here which won't get the appended/prepended site title, // when enabled via Joomla!'s SEO/SEF settings $params->set('page_title_clean', $title); if (K2_JVERSION != '15') { if ($mainframe->getCfg('sitename_pagetitles', 0) == 1) { $tmpTitle = JText::sprintf('JPAGETITLE', $mainframe->getCfg('sitename'), $params->get('page_title')); $params->set('page_title', $tmpTitle); } elseif ($mainframe->getCfg('sitename_pagetitles', 0) == 2) { $tmpTitle = JText::sprintf('JPAGETITLE', $params->get('page_title'), $mainframe->getCfg('sitename')); $params->set('page_title', $tmpTitle); } } $document->setTitle($params->get('page_title')); // Search - Update the Google Search results container (K2 v2.6.6+) /* if ($task == 'search') { $googleSearchContainerID = trim($params->get('googleSearchContainer', 'k2GoogleSearchContainer')); if ($googleSearchContainerID == 'k2Container') { $googleSearchContainerID = 'k2GoogleSearchContainer'; } $params->set('googleSearchContainer', $googleSearchContainerID); } */ // Set metadata for category if ($task == 'category') { if ($category->metaDescription) { $document->setDescription($category->metaDescription); } else { $metaDescItem = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', $this->category->description); $metaDescItem = strip_tags($metaDescItem); $metaDescItem = K2HelperUtilities::characterLimit($metaDescItem, $params->get('metaDescLimit', 150)); $metaDescItem = htmlspecialchars($metaDescItem, ENT_QUOTES, 'UTF-8'); $document->setDescription($metaDescItem); } if ($category->metaKeywords) { $document->setMetadata('keywords', $category->metaKeywords); } if ($category->metaRobots) { $document->setMetadata('robots', $category->metaRobots); } if ($category->metaAuthor) { $document->setMetadata('author', $category->metaAuthor); } } if (K2_JVERSION != '15') { // Menu metadata options if ($params->get('menu-meta_description')) { $document->setDescription($params->get('menu-meta_description')); } if ($params->get('menu-meta_keywords')) { $document->setMetadata('keywords', $params->get('menu-meta_keywords')); } if ($params->get('robots')) { $document->setMetadata('robots', $params->get('robots')); } // Menu page display options if ($params->get('page_heading')) { $params->set('page_title', $params->get('page_heading')); } $params->set('show_page_title', $params->get('show_page_heading')); } // Pathway $pathway = $mainframe->getPathWay(); if (!isset($menu->query['task'])) { $menu->query['task'] = ''; } if ($menu) { switch ($task) { case 'category': if ($menu->query['task'] != 'category' || $menu->query['id'] != JRequest::getInt('id')) { $pathway->addItem($title, ''); } break; case 'user': if ($menu->query['task'] != 'user' || $menu->query['id'] != JRequest::getInt('id')) { $pathway->addItem($title, ''); } break; case 'tag': if ($menu->query['task'] != 'tag' || $menu->query['tag'] != JRequest::getVar('tag')) { $pathway->addItem($title, ''); } break; case 'search': case 'date': $pathway->addItem($title, ''); break; } } // Feed link $config = JFactory::getConfig(); $menu = $application->getMenu(); $default = $menu->getDefault(); $active = $menu->getActive(); if ($task == 'tag') { $link = K2HelperRoute::getTagRoute(JRequest::getVar('tag')); } else { $link = ''; } $sef = K2_JVERSION == '30' ? $config->get('sef') : $config->getValue('config.sef'); if (!is_null($active) && $active->id == $default->id && $sef) { $link .= '&Itemid=' . $active->id . '&format=feed&limitstart='; } else { $link .= '&format=feed&limitstart='; } $feed = JRoute::_($link); $this->assignRef('feed', $feed); // Add head feed link if ($addHeadFeedLink) { $attribs = array('type' => 'application/rss+xml', 'title' => 'RSS 2.0'); $document->addHeadLink(JRoute::_($link . '&type=rss'), 'alternate', 'rel', $attribs); $attribs = array('type' => 'application/atom+xml', 'title' => 'Atom 1.0'); $document->addHeadLink(JRoute::_($link . '&type=atom'), 'alternate', 'rel', $attribs); } //JA K2 FILTER - custom item view option // Assign data if ($task == "category" || $task == "search" || $task == "") { $leading = @array_slice($items, 0, $params->get('num_leading_items')); $primary = @array_slice($items, $params->get('num_leading_items'), $params->get('num_primary_items')); $secondary = @array_slice($items, $params->get('num_leading_items') + $params->get('num_primary_items'), $params->get('num_secondary_items')); $links = @array_slice($items, $params->get('num_leading_items') + $params->get('num_primary_items') + $params->get('num_secondary_items'), $params->get('num_links')); $this->assignRef('leading', $leading); $this->assignRef('primary', $primary); $this->assignRef('secondary', $secondary); $this->assignRef('links', $links); } else { $this->assignRef('items', $items); } // Set default values to avoid division by zero if ($params->get('num_leading_columns') == 0) { $params->set('num_leading_columns', 1); } if ($params->get('num_primary_columns') == 0) { $params->set('num_primary_columns', 1); } if ($params->get('num_secondary_columns') == 0) { $params->set('num_secondary_columns', 1); } if ($params->get('num_links_columns') == 0) { $params->set('num_links_columns', 1); } $this->assignRef('params', $params); $this->assignRef('pagination', $pagination); // Set Facebook meta data $document = JFactory::getDocument(); $uri = JURI::getInstance(); $document->setMetaData('og:url', $uri->toString()); $document->setMetaData('og:title', htmlspecialchars($document->getTitle(), ENT_QUOTES, 'UTF-8')); $document->setMetaData('og:type', 'website'); if ($task == 'category' && $this->category->image && strpos($this->category->image, 'placeholder/category.png') === false) { $image = substr(JURI::root(), 0, -1) . str_replace(JURI::root(true), '', $this->category->image); $document->setMetaData('og:image', $image); $document->setMetaData('image', $image); } $document->setMetaData('og:description', htmlspecialchars(strip_tags($document->getDescription()), ENT_QUOTES, 'UTF-8')); // Look for template files in component folders $this->_addPath('template', JPATH_BASE . DS . 'components' . DS . 'com_k2' . DS . 'templates'); $this->_addPath('template', JPATH_BASE . DS . 'components' . DS . 'com_k2' . DS . 'templates' . DS . 'default'); // Look for overrides in template folder (K2 template structure) $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'templates'); $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'templates' . DS . 'default'); // Look for overrides in template folder (Joomla! template structure) $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'default'); $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2'); // Look for specific K2 theme files if ($params->get('theme')) { $this->_addPath('template', JPATH_BASE . DS . 'components' . DS . 'com_k2' . DS . 'templates' . DS . $params->get('theme')); $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . 'templates' . DS . $params->get('theme')); $this->_addPath('template', JPATH_SITE . DS . 'templates' . DS . $mainframe->getTemplate() . DS . 'html' . DS . 'com_k2' . DS . $params->get('theme')); } $nullDate = $db->getNullDate(); $this->assignRef('nullDate', $nullDate); $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('k2'); $dispatcher->trigger('onK2BeforeViewDisplay'); // Prevent spammers from using the tag view if ($task == 'tag' && !count($this->items)) { $tag = JRequest::getString('tag'); $db = JFactory::getDBO(); $db->setQuery('SELECT id FROM #__k2_tags WHERE name = ' . $db->quote($tag)); $tagID = $db->loadResult(); if (!$tagID) { JError::raiseError(404, JText::_('K2_NOT_FOUND')); return false; } } $badchars = array('#', '>', '<', '\\'); $searchword = JString::trim(JString::str_ireplace($badchars, '', JRequest::getString('searchword', null))); if ($params->get('enableHighlightSearchTerm', 0)) { $document->addScript(JURI::root(true) . '/modules/mod_jak2filter/assets/jquery/jquery.highlight-4.js'); $document->addStyleDeclaration('.highlight { background-color: #FFFFCC }'); if (!empty($searchword) && strpos($searchword, '-') !== 0) { $document->addScriptDeclaration("\n\t\t\t\t(function(\$) {\n\t\t\t\t\t\$(document).ready(function(){\n\t\t\t\t\t\tif(\$('#k2Container').length) {\n \t\t\t\t\tjak2Highlight(\$('#k2Container'), \"" . addslashes($searchword) . "\");\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t})(jQuery);\n\t\t\t\t"); } } parent::display($tpl); }
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 \n\t\t\t\tFROM #__k2_items as i \n\t\t\t\tLEFT JOIN #__k2_categories c ON c.id = i.catid \n\t\t\t\tWHERE 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 \n\t\t\t\tAND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " ) \n\t\t\t\tAND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " ) \n\t\t\t\tAND 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.*,"; if ($ordering == 'modified') { $query .= " CASE WHEN i.modified = 0 THEN i.created ELSE i.modified END as lastChanged,"; } $query .= "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 RIGHT 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')) { $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')) { $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 = 'lastChanged 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, $item); } //Comments counter if ($params->get('itemCommentsCounter')) { $item->numOfComments = $model->countItemComments($item->id); } //Attachments if ($params->get('itemAttachments')) { $item->attachments = $model->getItemAttachments($item->id); } //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_k2_content.', &$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 $item->event = new stdClass(); $item->event->BeforeDisplay = ''; $item->event->AfterDisplay = ''; $item->event->AfterDisplayTitle = ''; $item->event->BeforeDisplayContent = ''; $item->event->AfterDisplayContent = ''; if ($params->get('JPlugins', 1)) { //Plugins if (K2_JVERSION != '15') { $item->event->BeforeDisplay = ''; $item->event->AfterDisplay = ''; $dispatcher->trigger('onContentPrepare', array('mod_k2_content', &$item, &$params, $limitstart)); $results = $dispatcher->trigger('onContentAfterTitle', array('mod_k2_content', &$item, &$params, $limitstart)); $item->event->AfterDisplayTitle = trim(implode("\n", $results)); $results = $dispatcher->trigger('onContentBeforeDisplay', array('mod_k2_content', &$item, &$params, $limitstart)); $item->event->BeforeDisplayContent = trim(implode("\n", $results)); $results = $dispatcher->trigger('onContentAfterDisplay', array('mod_k2_content', &$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'); } $item->authorLink = Juri::root(true); } 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_k2_content', &$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; } } } $A = new K2ModelItem(); $item->votingPercentage = $A->getVotesPercentage($item->id); $item->numOfvotes = $A->getVotesNum($item->id); $rows[] = $item; } return $rows; } }
public static function getItems(&$params) { jimport('joomla.filesystem.file'); $mainframe = JFactory::getApplication(); $limit = $params->get('itemCount', 5); $cid = $params->get('category_id', NULL); $componentParams = JComponentHelper::getParams('com_k2'); $user = JFactory::getUser(); $db = JFactory::getDBO(); $jnow = JFactory::getDate(); $now = $jnow->toSql(); $nullDate = $db->getNullDate(); $query = "SELECT i.*,"; $query .= "c.name AS categoryname,c.id AS categoryid, c.alias AS categoryalias, c.params AS categoryparams"; $query .= " FROM #__k2_items as i RIGHT JOIN #__k2_categories c ON c.id = i.catid"; $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"; $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)) { $itemListModel = K2Model::getInstance('Itemlist', 'K2Model'); $categories = $itemListModel->getCategoryTree($cid); $sql = @implode(',', $categories); $query .= " AND i.catid IN ({$sql})"; } else { $itemListModel = K2Model::getInstance('Itemlist', 'K2Model'); $categories = $itemListModel->getCategoryTree($cid); $sql = @implode(',', $categories); $query .= " AND i.catid IN ({$sql})"; } } } $query .= " AND i.featured = 1"; $query .= " ORDER BY i.created DESC"; $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 $date = JFactory::getDate($item->modified); $timestamp = '?t=' . $date->toUnix(); if (JFile::exists(JPATH_SITE . '/media/k2/items/cache/' . 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 . '/media/k2/items/cache/' . 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 . '/media/k2/items/cache/' . 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 . '/media/k2/items/cache/' . 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 . '/media/k2/items/cache/' . 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 . '/media/k2/items/cache/' . 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}; } else { $item->image = JURI::base(true) . '/modules/mod_sp_k2_featured_slider/assets/images/no-image.png'; } //Read more link $item->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($item->id . ':' . urlencode($item->alias), $item->catid . ':' . urlencode($item->categoryalias)))); //Category link if ($params->get('itemCategory')) { $item->categoryLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid . ':' . urlencode($item->categoryalias)))); } // 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; } } $item->introtext = $item->text; $rows[] = $item; } return $rows; } }
function getLatestComments(&$params) { $limit = $params->get('comments_limit', '5'); $user =& JFactory::getUser(); $aid = $user->get('aid'); $db =& JFactory::getDBO(); $cid = $params->get('category_id', NULL); $jnow =& JFactory::getDate(); $now = $jnow->toMySQL(); $nullDate = $db->getNullDate(); require_once JPATH_SITE . DS . 'components' . DS . 'com_k2' . DS . 'models' . DS . 'item.php'; $model = new K2ModelItem(); $componentParams =& JComponentHelper::getParams('com_k2'); $query = "SELECT c.*, i.catid, i.title, i.alias, category.alias as catalias, category.name as categoryname FROM #__k2_comments as c" . " LEFT JOIN #__k2_items as i ON i.id=c.itemID" . " LEFT JOIN #__k2_categories as category ON category.id=i.catid" . " WHERE i.published=1 " . " 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.trash=0 AND i.access<={$aid}" . " AND category.published=1 AND category.trash=0 AND category.access<={$aid}" . " AND c.published=1 "; if ($params->get('catfilter')) { if (!is_null($cid)) { if (is_array($cid)) { JArrayHelper::toInteger($cid); $query .= " AND i.catid IN(" . implode(',', $cid) . ")"; } else { $query .= " AND i.catid=" . (int) $cid; } } } $query .= " ORDER BY c.commentDate DESC "; $db->setQuery($query, 0, $limit); $rows = $db->loadObjectList(); $pattern = "@\\b(https?://)?(([0-9a-zA-Z_!~*'().&=+\$%-]+:)?[0-9a-zA-Z_!~*'().&=+\$%-]+\\@)?(([0-9]{1,3}\\.){3}[0-9]{1,3}|([0-9a-zA-Z_!~*'()-]+\\.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z]\\.[a-zA-Z]{2,6})(:[0-9]{1,4})?((/[0-9a-zA-Z_!~*'().;?:\\@&=+\$,%#-]+)*/?)@"; if (count($rows)) { foreach ($rows as $row) { if ($params->get('commentDateFormat') == 'relative') { $config =& JFactory::getConfig(); $tzoffset = $config->getValue('config.offset'); $now = new JDate(); $now->setOffset($tzoffset); $created = new JDate($row->commentDate); $diff = $now->toUnix() - $created->toUnix(); $dayDiff = floor($diff / 86400); if ($dayDiff == 0) { if ($diff < 5) { $row->commentDate = JText::_('Just Now'); } elseif ($diff < 60) { $row->commentDate = $diff . ' ' . JText::_('Seconds ago'); } elseif ($diff < 120) { $row->commentDate = JText::_('1 Minute Ago'); } elseif ($diff < 3600) { $row->commentDate = floor($diff / 60) . ' ' . JText::_('Minutes Ago'); } elseif ($diff < 7200) { $row->commentDate = JText::_('1 Hour Ago'); } elseif ($diff < 86400) { $row->commentDate = floor($diff / 3600) . ' ' . JText::_('Hours Ago'); } } } $row->commentText = K2HelperUtilities::wordLimit($row->commentText, $params->get('comments_word_limit')); $row->commentText = preg_replace($pattern, '<a target="_blank" rel="nofollow" href="\\0">\\0</a>', $row->commentText); $row->itemLink = urldecode(JRoute::_(K2HelperRoute::getItemRoute($row->itemID . ':' . urlencode($row->alias), $row->catid . ':' . urlencode($row->catalias)))); $row->link = $row->itemLink . "#comment{$row->id}"; $row->catLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($row->catid . ':' . urlencode($row->catalias)))); if ($row->userID > 0) { $row->userLink = JRoute::_(K2HelperRoute::getUserRoute($row->userID)); } $row->userImage = ''; if ($params->get('commentAvatar')) { $row->userImage = K2HelperUtilities::getAvatar($row->userID, $row->commentEmail, $componentParams->get('commenterImgWidth')); } $comments[] = $row; } return $comments; } }
function getItems(&$params, $format = 'html') { jimport('joomla.filesystem.file'); $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 = $jnow->toMySQL(); $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"; $query .= " FROM #__k2_items as i LEFT JOIN #__k2_categories c ON c.id = i.catid"; $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) . " )"; $query .= " AND i.id={$id}"; $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"; } $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'; $allChildren = array(); foreach ($cid as $id) { $categories = K2ModelItemlist::getCategoryChilds($id, true); $categories[] = $id; $categories = @array_unique($categories); $allChildren = @array_merge($allChildren, $categories); } $allChildren = @array_unique($allChildren); JArrayHelper::toInteger($allChildren); $sql = @implode(',', $allChildren); $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::getCategoryChilds($cid, true); $categories[] = $cid; $categories = @array_unique($categories); JArrayHelper::toInteger($categories); $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"; } 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 = $datenow->toMySQL(); $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 = $datenow->toMySQL(); $query .= " AND i.created > DATE_SUB('{$date}',INTERVAL " . $params->get('popularityRange') . " DAY) "; } $query .= " GROUP BY i.id "; $orderby = 'numOfComments DESC'; break; case 'modified': $orderby = 'i.modified DESC'; break; default: $orderby = 'i.id DESC'; break; } $query .= " ORDER BY " . $orderby; $db->setQuery($query, 0, $limit); $items = $db->loadObjectList(); } require_once JPATH_SITE . DS . 'components' . DS . 'com_k2' . DS . 'models' . DS . 'item.php'; $model = new K2ModelItem(); if (count($items)) { foreach ($items as $item) { //Clean title $item->title = JFilterOutput::ampReplace($item->title); //Images if ($params->get('itemImage')) { if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_XS.jpg')) { $item->imageXSmall = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_XS.jpg'; } if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_S.jpg')) { $item->imageSmall = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_S.jpg'; } if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_M.jpg')) { $item->imageMedium = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_M.jpg'; } if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_L.jpg')) { $item->imageLarge = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_L.jpg'; } if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_XL.jpg')) { $item->imageXLarge = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_XL.jpg'; } if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $item->id) . '_Generic.jpg')) { $item->imageGeneric = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $item->id) . '_Generic.jpg'; } $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); } //Attachments if ($params->get('itemAttachments')) { $item->attachments = $model->getItemAttachments($item->id); } //Import plugins if ($format != 'feed') { $dispatcher =& JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); } //Video if ($params->get('itemVideo') && $format != 'feed') { $params->set('vfolder', 'media/k2/videos'); $item->text = $item->video; $dispatcher->trigger('onPrepareContent', array(&$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 $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)); $item->introtext = $item->text; } //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)); $item->introtext = $item->text; if ($params->get('itemCommentsCounter')) { $results = $dispatcher->trigger('onK2CommentsCounter', array(&$item, &$params, $limitstart)); $item->event->K2CommentsCounter = trim(implode("\n", $results)); } } } //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; if ($params->get('itemAuthorAvatar')) { $item->authorAvatar = K2HelperUtilities::getAvatar('alias'); } } else { $author =& JFactory::getUser($item->created_by); $item->author = $author->name; $query = "SELECT `gender` FROM #__k2_users WHERE userID=" . (int) $author->id; $db->setQuery($query, 0, 1); $item->authorGender = $db->loadResult(); 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)); } } $rows[] = $item; } return $rows; } }
echo $user->name; ?> </a> <?php } ?> <?php if ($userDescription && $user->description) { ?> <div class="ubUserDescription"> <?php if ($userDescriptionWordLimit) { ?> <?php echo K2HelperUtilities::wordLimit($user->description, $userDescriptionWordLimit); ?> <?php } else { ?> <?php echo $user->description; ?> <?php } ?> </div> <?php } ?>
protected function getCategoryItems($count = false) { // Get application $application = JFactory::getApplication(); // Get input $id = $application->input->get('id', 0, 'int'); $categories = $this->params->get('categories'); // Get model $model = K2Model::getInstance('Items'); $model->setState('site', true); // Single category if ($id) { // Get category $this->category = K2Categories::getInstance($id); // Check access $this->category->checkSiteAccess(); // Merge menu params with category params $effectiveParams = $this->category->getEffectiveParams(); $this->params->merge($effectiveParams); // Set model state $model->setState('category', $id); if (!$this->params->get('catCatalogMode')) { $model->setState('recursive', 1); } } else { if ($categories) { $model->setState('category.filter', $categories); } } // Determine offset and limit based on document type if ($this->type == 'html' || $this->type == 'raw') { $this->limit = (int) ($this->params->get('num_leading_items') + $this->params->get('num_primary_items') + $this->params->get('num_secondary_items') + $this->params->get('num_links')); } else { $this->limit = $this->params->get('feedLimit', 10, 'int'); } // @TODO Apply menu settings. Since they will be common all tasks we need to wait //$model->setState('sorting', 'ordering'); // Get items $model->setState('limit', $this->limit); $model->setState('limitstart', $this->offset); $this->items = $model->getRows(); // Word limit if ($this->params->get('catItemIntroTextWordLimit')) { foreach ($this->items as $item) { $item->introtext = K2HelperUtilities::wordLimit($item->introtext, $this->params->get('catItemIntroTextWordLimit')); } } // Count items if ($count) { $this->total = $model->countRows(); } }