/** * Prepare item properties */ protected function _prepareItem($item) { $item->link = JRoute::_(K2HelperRoute::getItemRoute($item->id, $item->catid)); $item->introtext = JHtml::_('string.truncate', $item->introtext, $this->_params->get('intro_length', 200)); $item->cat_link = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid . ':' . urlencode($item->catslug)))); return $item; }
public static function getAssociations($id = 0, $view = null) { jimport('helper.route', JPATH_COMPONENT_SITE); $application = JFactory::getApplication(); $view = is_null($view) ? $application->input->get('view') : $view; $task = $application->input->get('task'); $id = empty($id) ? $application->input->getInt('id') : $id; if ($view == 'item') { if ($id) { $associations = self::getItemAssociations($id); $return = array(); foreach ($associations as $tag => $item) { $return[$tag] = K2HelperRoute::getItemRoute($item->id, $item->catid, $item->language); } return $return; } } else { if ($view == 'itemlist' && $task == 'category') { if ($id) { $associations = self::getCategoryAssociations($id); $return = array(); foreach ($associations as $tag => $category) { $return[$tag] = K2HelperRoute::getCategoryRoute($category->id, $category->language); } return $return; } } } return array(); }
/** I HAVE NOT MODIFIED BELOW THIS LINE **/ function getItems($args) { global $mainframe; $advlink =& AdvLink::getInstance(); require_once JPATH_SITE . DS . 'components' . DS . 'com_k2' . DS . 'helpers' . DS . 'route.php'; $items = array(); $view = isset($args->view) ? $args->view : ''; switch ($view) { default: $categories = AdvlinkK2::_getK2Categories(); foreach ($categories as $category) { $items[] = array('id' => K2HelperRoute::getCategoryRoute($category->id), 'name' => $category->name, 'class' => 'folder content'); } break; case 'itemlist': $categories = AdvlinkK2::_getK2Categories($args->id); $itemlist = AdvlinkK2::_getK2Items($args->id); foreach ($categories as $category) { $items[] = array('id' => K2HelperRoute::getCategoryRoute($category->id), 'name' => $category->name, 'class' => 'folder content'); } foreach ($itemlist as $item) { $items[] = array('id' => K2HelperRoute::getItemRoute($item->id, $args->id), 'name' => $item->title, 'class' => 'file'); } break; case 'item': break; } return $items; }
public function getChildCategories($catId, $titleMax) { $categories = array(); $query = "\n\t\t\t\tSELECT c.id, c.name as title, c.alias\n\t\t\t\tFROM #__k2_categories c\n\t\t\t\tWHERE\n\t\t\t\t\tc.published = 1\n\t\t\t\t\tAND c.parent = {$catId}\n\t\t\t"; $this->db->setQuery($query); $rows = $this->db->loadObjectList(); foreach ($rows as $category) { $categories[$category->id] = $category; // // category url // $slug = $category->alias ? $category->id.':'.$category->alias : $category->id; // $category->url = JRoute::_( ContentHelperRoute::getCategoryRoute($slug) ); $category->url = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($category->id . ':' . urlencode($category->alias)))); // category title truncate $category->title = YtUtils::shorten($category->title, $titleMax); } return $categories; }
public static function getList(&$params) { $list = array(); $categories = array(); if ($params->get('catfilter')) { $category_ids = $params->get('category_id'); } else { $category_ids = self::getAllCategories(); } if (!empty($category_ids)) { foreach ($category_ids as $cat_ids) { $category = self::getCategory($cat_ids); $categories[$cat_ids] = $category; } foreach ($categories as $keys => $cat) { if (!empty($cat)) { $temp_cat = array(); $slug = $cat->alias ? $cat->id . ':' . $cat->alias : $cat->id; $cat->url = JRoute::_(K2HelperRoute::getCategoryRoute($slug)); $temp_cat['id'] = $cat->id; $temp_cat['title'] = $cat->name; $temp_cat['url'] = $cat->url; $child_category = array(); foreach ($cat->child_category as $key_cat => $cat_child) { $temp_child = array(); $slug = $cat_child->alias ? $cat_child->id . ':' . $cat_child->alias : $cat_child->id; $cat_child->url = JRoute::_(K2HelperRoute::getCategoryRoute($slug)); $temp_child['id'] = $cat_child->id; $temp_child['title'] = $cat_child->name; $temp_child['url'] = $cat_child->url; $items = array(); $cat_child->child = self::getK2Items($cat_child->id, $params); if (isset($cat_child->child) && !empty($cat_child->child)) { $temp_child['child'] = $cat_child->child; $child_category[$key_cat] = $temp_child; } } if (!empty($child_category)) { $temp_cat['child_category'] = $child_category; $list[$keys] = $temp_cat; } } } } return $list; }
public function go($allGet) { $uri = JUri::getInstance(); $currentLink = $uri->toString(array('path', 'query')); $start = JFactory::getApplication()->input->getInt('start', 0); JTable::addIncludePath(JPATH_ROOT . '/administrator/components/com_k2/tables'); $limitstring = ''; if ($start > 0) { $limits = $this->params->get('limits', 5); if ($start % $limits != 0) { $start = intval($start / $limits) * $limits; } $limitstring .= "?start=" . $start; } if ($allGet['view'] == 'item' && $allGet['task'] == '') { $item = JTable::getInstance('K2Item', 'Table'); $item->load($allGet['id']); $category = JTable::getInstance('K2Category', 'Table'); $category->load($item->catid); $original_link = JRoute::_(K2HelperRoute::getItemRoute($item->id . ':' . urlencode($item->alias), $item->catid . ':' . urlencode($category->alias)), false); } else { if ($allGet['view'] == 'itemlist' && $allGet['task'] == 'category') { $category = JTable::getInstance('K2Category', 'Table'); $category->load((int) $allGet['id']); $original_link = JRoute::_(K2HelperRoute::getCategoryRoute((int) $allGet['id'] . ':' . urlencode($category->alias)), false) . $limitstring; } else { if ($allGet['view'] == 'itemlist' && $allGet['task'] == 'user') { $original_link = JRoute::_(K2HelperRoute::getUserRoute((int) $allGet['id']), false) . $limitstring; } else { return false; } } } if ($original_link && $original_link != $currentLink) { $this->shRedirect($original_link); } return true; }
private function format(&$items, $params) { if (!$items) { return; } // Add K2's table path JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_k2/tables'); foreach ($items as $item) { $category = JTable::getInstance('K2Category', 'Table'); $category->load($item->catid); $item->category = $category; $item->permalink = K2HelperRoute::getItemRoute($item->id . ':' . $item->alias, $item->catid); $item->category->permalink = K2HelperRoute::getCategoryRoute($category->id . ':' . $category->alias); $item->content = empty($item->introtext) ? $item->fulltext : $item->introtext; $titleLength = $params->get('title_length'); $contentLength = $params->get('content_length'); if ($titleLength) { $item->title = JString::substr($item->title, 0, $titleLength); } if ($contentLength) { $item->content = JString::substr(strip_tags($item->content), 0, $contentLength); } } }
static function categoryLink($item) { return urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item['cid'] . ':' . urlencode($item['cat_alias'])))); }
public static function getList($params) { $app = JFactory::getApplication(); $lang = JFactory::getLanguage(); $user = JFactory::getUser(); $db = JFactory::getDbo(); $query = $db->getQuery(true); // Source $source = $params->get('source', 'categories'); $exclude = $params->get('exclude', array()); $articles_k2 = $params->get('articles_k2', array()); $categories_k2 = $params->get('categories_k2', array()); // General $readmore = $params->get('readmore', ''); $ordering = $params->get('ordering', 'random'); $item_counts = $params->get('item_counts', 5); $skip_counts = $params->get('skip_counts', 0); $limit_intro = $params->get('limit_intro', 200); // Display $show_date = $params->get('show_date', 1); $show_hits = $params->get('show_hits', 1); $show_tags = $params->get('show_tags', 1); $show_image = $params->get('show_image', 1); $show_intro = $params->get('show_intro', 1); $show_title = $params->get('show_title', 1); $show_author = $params->get('show_author', 1); $show_avatar = $params->get('show_avatar', 1); $show_rating = $params->get('show_rating', 1); $show_profile = $params->get('show_profile', 1); $show_category = $params->get('show_category', 1); $show_comments = $params->get('show_comments', 1); // Date $date_type = $params->get('date_type', 'created'); $date_format = $params->get('date_format', 'd F Y'); // Image $image_width = $params->get('image_width', 200); $image_height = $params->get('image_height', 100); $image_quality = $params->get('image_quality', 100); $image_link = $params->get('image_link', 'none'); $image_title = $params->get('image_title', 1); $image_resize = $params->get('image_resize', 1); $image_source = $params->get('image_source', 'auto'); // 3rd-party $avatar_width = $params->get('avatar_width', 60); $avatar_height = $params->get('avatar_height', 60); $avatar_system = $params->get('avatar_system', 'kunena'); $profile_system = $params->get('profile_system', 'kunena'); $comments_system = $params->get('comments_system', 'komento'); // User access $authorised = implode(',', $user->getAuthorisedViewLevels()); // Clean HTML tags $clean_intro = $params->get('clean_intro', 1); $allowed_tags = str_replace(' ', '', $params->get('allowed_tags')); $allowed_tags = "<" . str_replace(',', '><', $allowed_tags) . ">"; // Content filtering $tags_k2 = $params->get('tags_k2', array()); $author = $params->get('author', array()); $featured = $params->get('featured', 0); // Featured label/ribbon $featured_label = $params->get('featured_label', 0); $featured_label_text = $params->get('featured_label_text', 'Featured'); $featured_label_color = $params->get('featured_label_color', '#e52626'); // Link $title_link = $params->get('title_link', 1); $category_link = $params->get('category_link', 1); if (JFile::exists(JPATH_SITE . '/components/com_k2/k2.php')) { if ($source == 'categories' && $categories_k2) { if ($categories_k2[0] != '') { $categories_k2 = count($categories_k2) == 1 ? ' = ' . $categories_k2[0] . '' : 'IN (' . implode(',', $categories_k2) . ')'; $query->where('a.catid ' . $categories_k2); } $exclude ? $query->where('a.id NOT IN (' . $exclude . ')') : ''; } else { if ($source == 'articles' && $articles_k2) { $query->where('a.id IN (' . implode(',', $articles_k2) . ')'); } else { echo JText::_('MOD_GIANTCONTENT_ERROR_SOURCE'); return; } } } else { echo JText::_('MOD_GIANTCONTENT_ERROR_TYPE_K2'); return; } // Ordering switch ($ordering) { case 'random': $orderBy = 'RAND()'; break; case 'id_asc': $orderBy = 'a.id ASC'; break; case 'id_desc': $orderBy = 'a.id DESC'; break; case 'title_asc': $orderBy = 'a.title ASC'; break; case 'title_desc': $orderBy = 'a.title DESC'; break; case 'popular_last': $orderBy = 'a.hits ASC'; break; case 'popular_first': $orderBy = 'a.hits DESC'; break; case 'created_oldest': $orderBy = 'date ASC'; break; case 'created_newest': $orderBy = 'date DESC'; break; case 'most_rated': $orderBy = 'rating_total DESC, r.rating_count DESC'; break; case 'least_rated': $orderBy = 'rating_total ASC, r.rating_count ASC'; break; case 'most_commented': $orderBy = 'comments_count DESC, comments_date DESC'; break; case 'latest_commented': $orderBy = 'comments_date DESC, date DESC'; break; } // Content $query->select('a.id, a.title, a.alias, a.introtext, a.fulltext, a.hits'); $query->from('#__k2_items AS a'); // Category $query->select('a.catid AS category_id, c.name AS category_name, c.alias AS category_alias'); $query->join('LEFT', '#__k2_categories AS c ON c.id = a.catid'); // Join user $query->select('u.id AS user_id, u.email AS user_email, u.name AS user_name, a.created_by_alias AS user_alias'); $query->join('LEFT', '#__users AS u ON u.id = a.created_by'); // Join rating $query->select('ROUND(AVG(r.rating_sum / r.rating_count), 2) AS rating_average, r.rating_count'); $query->join('LEFT', '#__k2_rating AS r ON r.itemID = a.id'); // Select date if ($date_type !== 'created') { $query->select('CASE WHEN a.' . $date_type . ' = "0000-00-00 00:00:00" THEN a.created ELSE a.' . $date_type . ' END AS date'); } else { $query->select('a.created AS date'); } // Join avatar for author if ($show_avatar) { switch ($avatar_system) { // K2 avatar integration - http://getk2.org case 'k2': if (JFile::exists(JPATH_SITE . '/components/com_k2/k2.php')) { $query->select('ua.image AS avatar_user'); $query->join('LEFT', '#__k2_users AS ua ON ua.userID = u.id'); $avatar_path = 'media/k2/users/'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_AVATAR_SYSTEM_K2'); return; } break; // Kunena avatar integration - http://kunena.org // Kunena avatar integration - http://kunena.org case 'kunena': if (JFile::exists(JPATH_SITE . '/components/com_kunena/kunena.php')) { $query->select('ua.avatar AS avatar_user'); $query->join('LEFT', '#__kunena_users AS ua ON ua.userid = u.id'); $avatar_path = 'media/kunena/avatars/'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_AVATAR_SYSTEM_KUNENA'); return; } break; // JomSocial avatar integration - http://jomsocial.com // JomSocial avatar integration - http://jomsocial.com case 'jomsocial': if (JFile::exists(JPATH_SITE . '/components/com_community/community.php')) { $query->select("ua.avatar AS avatar_user"); $query->join('LEFT', '#__community_users AS ua ON ua.userid = u.id'); $avatar_path = ''; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_AVATAR_SYSTEM_JOMSOCIAL'); return; } break; // Comprofiler avatar integration - http://joomlapolis.com // Comprofiler avatar integration - http://joomlapolis.com case 'comprofiler': if (JFile::exists(JPATH_SITE . '/components/com_comprofiler/comprofiler.php')) { $query->select('ua.avatar AS avatar_user'); $query->join('LEFT', '#__comprofiler AS ua ON ua.user_id = u.id'); $avatar_path = 'images/comprofiler/'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_AVATAR_SYSTEM_COMPROFILER'); return; } break; // EasyBlog avatar integration - http://stackideas.com // EasyBlog avatar integration - http://stackideas.com case 'easyblog': if (JFile::exists(JPATH_SITE . '/components/com_easyblog/easyblog.php')) { $query->select("ua.avatar AS avatar_user"); $query->join('LEFT', '#__easyblog_users AS ua ON ua.id = u.id'); $avatar_path = 'images/easyblog_avatar/'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_AVATAR_SYSTEM_EASYBLOG'); return; } break; // EasySocial avatar integration - http://stackideas.com // EasySocial avatar integration - http://stackideas.com case 'easysocial': if (JFile::exists(JPATH_SITE . '/components/com_easysocial/easysocial.php')) { $query->select("ua.large AS avatar_user"); $query->join('LEFT', '#__social_avatars AS ua ON ua.uid = u.id'); $avatar_path = 'media/com_easysocial/avatars/users/'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_AVATAR_SYSTEM_EASYSOCIAL'); return; } break; // EasyDiscuss avatar integration - http://stackideas.com // EasyDiscuss avatar integration - http://stackideas.com case 'easydiscuss': if (JFile::exists(JPATH_SITE . '/components/com_easydiscuss/easydiscuss.php')) { $query->select("ua.avatar AS avatar_user"); $query->join('LEFT', '#__discuss_users AS ua ON ua.id = u.id'); $avatar_path = 'images/discuss_avatar/'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_AVATAR_SYSTEM_EASYDISCUSS'); return; } break; } } // Join comments for content if ($show_comments || $ordering == 'most_commented' || $ordering == 'latest_commented') { switch ($comments_system) { // Default comment system case 'default': $query->select('COUNT(cm.id) AS comments_count, MAX(cm.commentDate) AS comments_date'); $query->join('LEFT', '#__k2_comments AS cm ON cm.itemID = a.id AND cm.published = 1'); $comments_link = '#itemCommentsAnchor'; break; // Komento comment integration - http://stackideas.com // Komento comment integration - http://stackideas.com case 'komento': if (JFile::exists(JPATH_SITE . '/components/com_komento/komento.php')) { $query->select('COUNT(cm.id) AS comments_count, MAX(cm.created) AS comments_date'); $query->join('LEFT', '#__komento_comments AS cm ON cm.cid = a.id AND cm.component = "com_k2" AND cm.published = 1'); $comments_link = '#section-kmt'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_COMMENTS_SYSTEM_KOMENTO'); return; } break; // CComment comment integration - http://compojoom.com // CComment comment integration - http://compojoom.com case 'ccomment': if (JFile::exists(JPATH_SITE . '/components/com_comment/comment.php')) { $query->select('COUNT(cm.id) AS comments_count, MAX(cm.date) AS comments_date'); $query->join('LEFT', '#__comment AS cm ON cm.contentid = a.id AND cm.component = "com_k2" AND cm.published = 1'); $comments_link = '#!/ccomment'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_COMMENTS_SYSTEM_CCOMMENT'); return; } break; // JComments comment integration - http://joomlatune.com // JComments comment integration - http://joomlatune.com case 'jcomments': if (JFile::exists(JPATH_SITE . '/components/com_jcomments/jcomments.php')) { $query->select('COUNT(cm.id) AS comments_count, MAX(cm.date) AS comments_date'); $query->join('LEFT', '#__jcomments AS cm ON cm.object_id = a.id AND cm.object_group = "com_k2" AND cm.published = 1'); $comments_link = '#comments'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_COMMENTS_SYSTEM_JCOMMENTS'); return; } break; // JA Comment comment integration - http://joomlart.com // JA Comment comment integration - http://joomlart.com case 'jacomment': if (JFile::exists(JPATH_SITE . '/components/com_jacomment/jacomment.php')) { $query->select('COUNT(cm.id) AS comments_count, MAX(cm.date) AS comments_date'); $query->join('LEFT', '#__jacomment_items AS cm ON cm.contentid = a.id AND cm.option = "com_k2" AND cm.published = 1'); $comments_link = '#jac-wrapper'; } else { echo JText::_('MOD_GIANTCONTENT_ERROR_COMMENTS_SYSTEM_JACOMMENT'); return; } break; } } // Filter tags if ($tags_k2) { $query->join('INNER', '#__k2_tags_xref AS t ON t.itemID = a.id'); $query->where('t.tagID IN (' . implode(',', $tags_k2) . ')'); } // Filter author if ($author) { $query->where('a.created_by IN (' . implode(',', $author) . ')'); } // Filter featured if ($featured) { $query->where('a.featured = 1'); } // Access or published $query->where('a.trash = 0 AND c.trash = 0 AND a.published = 1 AND c.published = 1 AND a.access IN (' . $authorised . ') AND c.access IN (' . $authorised . ') AND a.publish_up <= "' . JFactory::getDate() . '"'); $query->group('a.id'); $query->order($orderBy); $db->setQuery($query, $skip_counts, $item_counts); $items = $db->loadObjectList(); $lists = array(); foreach ($items as $i => &$item) { $lists[$i] = new stdClass(); $lists[$i]->id = $item->id; $lists[$i]->date = ''; $lists[$i]->hits = ''; $lists[$i]->link = ''; $lists[$i]->tags = ''; $lists[$i]->intro = ''; $lists[$i]->image = ''; $lists[$i]->title = ''; $lists[$i]->author = ''; $lists[$i]->avatar = ''; $lists[$i]->rating = ''; $lists[$i]->featured = ''; $lists[$i]->category = ''; $lists[$i]->comments = ''; $lists[$i]->readmore = ''; $lists[$i]->fulltext = $item->fulltext; $lists[$i]->introtext = $item->introtext; $lists[$i]->category_id = $item->category_id; $lists[$i]->category_alias = $item->category_alias; // Content link $lists[$i]->link = JRoute::_(K2HelperRoute::getItemRoute($item->id . ':' . $item->alias, $item->category_id)); // Readmore link $lists[$i]->readmore = $readmore ? '<a href="' . $lists[$i]->link . '"><span>' . $readmore . '</span></a>' : ''; // Show content date $lists[$i]->date = $show_date ? JHtml::_('date', $item->date, $date_format) : ''; // Show content hits $lists[$i]->hits = $show_hits ? '<span>' . $item->hits . '</span>' : ''; // Show content image if ($show_image) { $img = array(); $image = md5("Image" . $item->id); if (JFile::exists(JPATH_SITE . '/media/k2/items/src/' . $image . '.jpg')) { $image = 'media/k2/items/src/' . $image . '.jpg'; } else { $image = ''; } if ($image_source == 'auto') { if (@$image) { $img_source = 'media'; } else { $img_source = 'content'; } } else { $img_source = $image_source; } if ($img_source == 'media') { if (@$image) { $img['src'] = $image; $img['alt'] = $item->title; $img['ttl'] = $item->title; } } else { $pattern = '/<img[^>]+>/i'; preg_match($pattern, $item->introtext, $img_tag); if (!count($img_tag)) { preg_match($pattern, $item->fulltext, $img_tag); } if (count($img_tag)) { preg_match_all('/(src|alt|title)\\s*=\\s*(["\'])(.*?)\\2/i', $img_tag[0], $img_elem); $img_elem = array_combine($img_elem[1], $img_elem[3]); if (@$img_elem['src']) { $img['src'] = trim(@$img_elem['src']); $img['alt'] = trim(@$img_elem['alt']); $img['ttl'] = trim(@$img_elem['title']); $item->introtext = preg_replace($pattern, '', $item->introtext, 1); } } } if (!@$img['src']) { // Default image $img['src'] = 'modules/mod_giantcontent/assets/images/default.png'; $img['alt'] = $item->title; } if ($img['src']) { $img_src = $img_attr = $img_title = ''; // Use timthumb to resize image if ($image_resize) { $img_src = JURI::base(true) . '/modules/mod_giantcontent/assets/libraries/includes/timthumb.php?src='; $img_attr = '&w=' . $image_width . '&h=' . $image_height . '&q=' . $image_quality; } $img_src = $img_src && strncasecmp($img['src'], "http", 4) !== 0 ? $img_src . JURI::base(true) . '/' : $img_src; $img['ttl'] = $image_title ? $item->title : @$img['ttl']; $img_title = $img['ttl'] ? 'title="' . $img['ttl'] . '"' : ''; $lists[$i]->image = '<img src="' . @$img_src . @$img['src'] . @$img_attr . '" alt="' . @$img['alt'] . '" ' . @$img_title . ' />'; switch ($image_link) { case 'none': $lists[$i]->image = $lists[$i]->image; break; case 'content': $lists[$i]->image = '<a href="' . $lists[$i]->link . '">' . $lists[$i]->image . '</a>'; break; case 'shadowbox': $lists[$i]->image = '<a href="' . @$img['src'] . '" rel="shadowbox" ' . @$img_title . '>' . $lists[$i]->image . '</a>'; break; } $lists[$i]->image_src = @$img['src']; $lists[$i]->image_alt = @$img['alt']; $lists[$i]->image_title = @$img['ttl']; } } // Show author profile if ($show_profile) { switch ($profile_system) { // K2 profile integration - http://getk2.org case 'k2': if (JFile::exists(JPATH_SITE . '/components/com_k2/k2.php')) { require_once JPATH_SITE . '/components/com_k2/helpers/route.php'; $profile_link = JRoute::_(K2HelperRoute::getUserRoute($item->user_id)); } else { echo JText::_('MOD_GIANTCONTENT_ERROR_PROFILE_SYSTEM_K2'); return; } break; // Kunena profile integration - http://kunena.org // Kunena profile integration - http://kunena.org case 'kunena': if (JFile::exists(JPATH_SITE . '/components/com_kunena/kunena.php')) { $profile_link = KunenaRoute::_('index.php?option=com_kunena&view=profile&userid=' . $item->user_id); } else { echo JText::_('MOD_GIANTCONTENT_ERROR_PROFILE_SYSTEM_KUNENA'); return; } break; // JomSocial profile integration - http://jomsocial.com // JomSocial profile integration - http://jomsocial.com case 'jomsocial': if (JFile::exists(JPATH_SITE . '/components/com_community/community.php')) { require_once JPATH_SITE . '/components/com_community/libraries/core.php'; $profile_link = CRoute::_('index.php?option=com_community&view=profile&userid=' . $item->user_id); } else { echo JText::_('MOD_GIANTCONTENT_ERROR_PROFILE_SYSTEM_JOMSOCIAL'); return; } break; // Comprofiler profile integration - http://joomlapolis.com // Comprofiler profile integration - http://joomlapolis.com case 'comprofiler': if (JFile::exists(JPATH_SITE . '/components/com_comprofiler/comprofiler.php')) { $profile_link = JRoute::_('index.php?option=com_comprofiler&task=userProfile&user='******'MOD_GIANTCONTENT_ERROR_PROFILE_SYSTEM_COMPROFILER'); return; } break; // EasyBlog profile integration - http://stackideas.com // EasyBlog profile integration - http://stackideas.com case 'easyblog': if (JFile::exists(JPATH_SITE . '/components/com_easyblog/easyblog.php')) { require_once JPATH_SITE . '/components/com_easyblog/helpers/router.php'; $profile_link = EasyBlogRouter::_('index.php?option=com_easyblog&view=blogger&layout=listings&id=' . $item->user_id); } else { echo JText::_('MOD_GIANTCONTENT_ERROR_PROFILE_SYSTEM_EASYBLOG'); return; } break; // EasySocial profile integration - http://stackideas.com // EasySocial profile integration - http://stackideas.com case 'easysocial': if (JFile::exists(JPATH_SITE . '/components/com_easysocial/easysocial.php')) { $profile_link = Foundry::user($item->user_id)->getPermalink(); } else { echo JText::_('MOD_GIANTCONTENT_ERROR_PROFILE_SYSTEM_EASYSOCIAL'); return; } break; // EasyDiscuss profile integration - http://stackideas.com // EasyDiscuss profile integration - http://stackideas.com case 'easydiscuss': if (JFile::exists(JPATH_SITE . '/components/com_easydiscuss/easydiscuss.php')) { require_once JPATH_SITE . '/components/com_easydiscuss/helpers/router.php'; $profile_link = DiscussHelper::getTable('Profile')->load($item->user_id)->getLink(); } else { echo JText::_('MOD_GIANTCONTENT_ERROR_PROFILE_SYSTEM_EASYDISCUSS'); return; } break; } } // Show content intro if ($show_intro) { // Clean HTML tags if ($clean_intro) { $item->introtext = strip_tags($item->introtext, $allowed_tags); $item->introtext = str_replace(' ', ' ', $item->introtext); $item->introtext = preg_replace('/\\s{2,}/u', ' ', trim($item->introtext)); } $lists[$i]->intro = $limit_intro ? self::truncateText($item->introtext, $limit_intro) : $item->introtext; } // Show content title if ($show_title) { $lists[$i]->title_name = $item->title; $lists[$i]->title = $title_link ? '<a href="' . $lists[$i]->link . '">' . $lists[$i]->title_name . '</a>' : $lists[$i]->title_name; } // Show content category if ($show_category) { $lists[$i]->category_name = $item->category_name; $lists[$i]->category_link = JRoute::_(K2HelperRoute::getCategoryRoute($item->category_id . ':' . $item->category_alias)); $lists[$i]->category = $category_link ? '<a href="' . $lists[$i]->category_link . '">' . $lists[$i]->category_name . '</a>' : $lists[$i]->category_name; } // Show content comments if ($show_comments) { $lists[$i]->comments_count = $item->comments_count; $lists[$i]->comments_link = $lists[$i]->link . $comments_link; $lists[$i]->comments = '<a href="' . $lists[$i]->comments_link . '">' . $item->comments_count . '</a>'; } // Show content author if ($show_author) { $lists[$i]->author_name = $item->user_alias ? $item->user_alias : $item->user_name; $lists[$i]->author = $show_profile ? '<a href="' . $profile_link . '">' . $lists[$i]->author_name . '</a>' : $lists[$i]->author_name; } // Show profile avatar if ($show_avatar) { $avatar_src = 'modules/mod_giantcontent/assets/libraries/includes/timthumb.php?src=' . JURI::base(true) . '/'; $avatar_attr = '&w=' . $avatar_width . '&h=' . $avatar_height; $avatar_default = '<img src="' . $avatar_src . '/modules/mod_giantcontent/assets/images/avatar.png' . $avatar_attr . '" alt="' . $item->user_name . '" />'; $lists[$i]->avatar_user = $item->avatar_user; if ($avatar_system == 'easysocial') { $avatar_img = $avatar_path . $item->user_id . '/' . $item->avatar_user; } else { $avatar_img = $avatar_path . $item->avatar_user; } if (JFile::exists($avatar_img)) { $lists[$i]->avatar = '<img src="' . $avatar_src . $avatar_img . $avatar_attr . '" alt="' . $item->user_name . '" />'; $lists[$i]->avatar = $show_profile ? '<a href="' . $profile_link . '">' . $lists[$i]->avatar . '</a>' : $lists[$i]->avatar; } else { $lists[$i]->avatar = $show_profile ? '<a href="' . $profile_link . '">' . $avatar_default . '</a>' : $avatar_default; } } // Show content rating if ($show_rating) { if ($item->rating_count > 0) { $lists[$i]->rating_count = $item->rating_count; $lists[$i]->rating_average = $item->rating_average; } else { $lists[$i]->rating_count = 0; $lists[$i]->rating_average = 0.0; } $rating_current = $item->rating_average * 20; $lists[$i]->rating = '<span class="gc-rating-list"><span style="width:' . $rating_current . '%;" class="gc-rating-current"></span></span>'; } // Show content tags if ($show_tags) { $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select('t.id, t.name AS title'); $query->from('#__k2_tags AS t'); $query->join('LEFT', '#__k2_tags_xref AS tm ON tm.tagID = t.id'); $query->where('t.published = 1 AND tm.itemID = ' . $item->id); $db->setQuery($query); $tags = $db->loadObjectList(); $list_tags = ''; if ($tags) { foreach ($tags as $tag) { $link_tags = JRoute::_(K2HelperRoute::getTagRoute($tag->title)); $list_tags .= '<a class="gc-tag" href="' . $link_tags . '">' . $tag->title . '</a>'; } } $lists[$i]->tags = $list_tags; } // Show featured label if ($featured_label) { $db = JFactory::getDbo(); $db->setQuery('SELECT * FROM #__k2_items WHERE id = ' . $item->id . ' AND featured = 1'); $featured = $db->loadResult(); if ($featured) { $lists[$i]->featured = '<span class="gc-featured" style="background: ' . $featured_label_color . '">' . $featured_label_text . '</span>'; } } } return $lists; }
function display($tpl = null) { $mainframe =& JFactory::getApplication(); $params =& JComponentHelper::getParams('com_k2'); $document =& JFactory::getDocument(); $model =& $this->getModel('itemlist'); $limitstart = JRequest::getInt('limitstart'); $moduleID = JRequest::getInt('moduleID'); if ($moduleID) { $result = $model->getModuleItems($moduleID); $items = $result->items; $title = $result->title; } else { //Get data depending on task $task = JRequest::getCmd('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); //Access check $user =& JFactory::getUser(); if ($category->access > $user->get('aid', 0)) { JError::raiseError(403, JText::_("ALERTNOTAUTH")); } if (!$category->published || $category->trash) { JError::raiseError(404, JText::_("Category not found")); } //Merge params $cparams = new JParameter($category->params); if ($cparams->get('inheritFrom')) { $masterCategory =& JTable::getInstance('K2Category', 'Table'); $masterCategory->load($cparams->get('inheritFrom')); $cparams = new JParameter($masterCategory->params); } $params->merge($cparams); //Category link $category->link = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($category->id . ':' . urlencode($category->alias)))); //Set featured flag JRequest::setVar('featured', $params->get('catFeaturedItems')); //Set title $title = $category->name; break; case 'user': //Get user $id = JRequest::getInt('id'); $user =& JFactory::getUser($id); //Check user status if ($user->block) { JError::raiseError(404, JText::_('User not found')); } //Set title $title = $user->name; break; case 'tag': //set title $title = JText::_('Displaying items by tag:') . ' ' . JRequest::getVar('tag'); if (JRequest::getCmd('type') != 'atom') { $title = JFilterOutput::ampReplace($title); } break; case 'search': //Set title $title = JText::_('Search results for:') . ' ' . JRequest::getVar('searchword'); break; case 'date': //Set title if (JRequest::getInt('day')) { $date = strtotime(JRequest::getInt('year') . '-' . JRequest::getInt('month') . '-' . JRequest::getInt('day')); $title = JText::_('Items filtered by date:') . ' ' . JHTML::_('date', $date, '%A, %d %B %Y'); } else { $date = strtotime(JRequest::getInt('year') . '-' . JRequest::getInt('month')); $title = JText::_('Items filtered by date:') . ' ' . JHTML::_('date', $date, '%B %Y'); } break; default: //Set featured flag JRequest::setVar('featured', $params->get('catFeaturedItems')); //Set title $title = $params->get('page_title'); break; } //Get ordering if ($task == 'tag') { $ordering = $params->get('tagOrdering'); } else { $ordering = $params->get('catOrdering'); } //Get items $items = $model->getData($ordering); } //Prepare feed items $model =& $this->getModel('item'); foreach ($items as $item) { $item = $model->prepareFeedItem($item); $item->title = $this->escape($item->title); $item->title = html_entity_decode($item->title); $feedItem = new JFeedItem(); $feedItem->title = $item->title; $feedItem->link = $item->link; $feedItem->description = $item->description; $feedItem->date = $item->created; $feedItem->category = $item->category->name; $feedItem->author = $item->author->name; //Add item $document->addItem($feedItem); } //Set title $document =& JFactory::getDocument(); $menus =& JSite::getMenu(); $menu = $menus->getActive(); if (is_object($menu)) { $menu_params = new JParameter($menu->params); if (!$menu_params->get('page_title')) { $params->set('page_title', $title); } } else { $params->set('page_title', $title); } $document->setTitle($params->get('page_title')); }
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; } }
public static function getCategoryPath($catid, &$array = array()) { if (isset(self::$paths[$catid])) { return self::$paths[$catid]; } $mainframe = JFactory::getApplication(); $user = JFactory::getUser(); $aid = (int) $user->get('aid'); $catid = (int) $catid; $db = JFactory::getDBO(); $query = "SELECT * FROM #__k2_categories WHERE id={$catid} AND published=1 AND trash=0 "; if (K2_JVERSION != '15') { $query .= " AND access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") "; if ($mainframe->getLanguageFilter()) { $languageTag = JFactory::getLanguage()->getTag(); $query .= " AND language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ") "; } } else { $query .= " AND access <= {$aid}"; } $db->setQuery($query); $rows = $db->loadObjectList(); if ($db->getErrorNum()) { echo $db->stderr(); return false; } foreach ($rows as $row) { array_push($array, '<a href="' . urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($row->id . ':' . urlencode($row->alias)))) . '">' . $row->name . '</a>'); modK2ToolsHelper::getCategoryPath($row->parent, $array); } $return = array_reverse($array); self::$paths[$catid] = $return; return $return; }
/** * get the list of k2 items * * @param JParameter $params; * @return Array */ public function __getList($params) { global $mainframe; $maxTitle = $params->get('max_title', '100'); $maxDesciption = $params->get('max_description', 100); $openTarget = $params->get('open_target', 'parent'); $formatter = $params->get('style_displaying', 'title'); $titleMaxChars = $params->get('title_max_chars', '100'); $descriptionMaxChars = $params->get('description_max_chars', 100); $condition = $this->buildConditionQuery($params); $ordering = $params->get('k2_ordering', 'created_asc'); $limit = $params->get('limit_items', 5); $ordering = str_replace('_', ' ', $ordering); $my =& JFactory::getUser(); $aid = $my->get('aid', 0); $limitDescriptionBy = $params->get('limit_description_by', 'char'); $thumbWidth = (int) $params->get('thumbnail_width', 35); $thumbHeight = (int) $params->get('thumbnail_height', 60); $imageHeight = (int) $params->get('main_height', 300); $imageWidth = (int) $params->get('main_width', 660); $isThumb = $params->get('auto_renderthumb', 1); $isStripedTags = $params->get('auto_strip_tags', 1); $extraURL = $params->get('open_target') != 'modalbox' ? '' : '&tmpl=component'; $db =& JFactory::getDBO(); $date =& JFactory::getDate(); $now = $date->toMySQL(); require_once JPath::clean(JPATH_SITE . '/components/com_k2/helpers/route.php'); $query = "SELECT a.*, cr.rating_sum/cr.rating_count as rating, c.name as category_title,\n\t\t\t\t\t\t\tc.id as categoryid, c.alias as categoryalias, c.params as categoryparams, cc.commentcount as commentcount" . " FROM #__k2_items as a" . " LEFT JOIN #__k2_categories c ON c.id = a.catid" . " LEFT JOIN #__k2_rating as cr ON a.id = cr.itemid" . " LEFT JOIN (select cm.itemid as id, count(cm.id) as commentcount from #__k2_comments as cm\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twhere cm.published=1 group by cm.itemid) as cc on a.id = cc.id"; $query .= " WHERE a.published = 1" . " AND a.access IN (" . implode(',', $my->authorisedLevels()) . ")" . " AND a.trash = 0"; if ($params->get('featured_items_show', '0') == 0) { $query .= " AND a.featured != 1"; } elseif ($params->get('featured_items_show', '0') == 2) { $query .= " AND a.featured = 1"; } $query .= $condition . ' ORDER BY ' . $ordering; $query .= $limit ? ' LIMIT ' . $limit : ''; $db->setQuery($query); $data = $db->loadObjectlist(); if (empty($data)) { return array(); } foreach ($data as $key => &$item) { $item->link = JRoute::_(K2HelperRoute::getItemRoute($item->id . ':' . $item->alias, $item->catid . ':' . $item->categoryalias) . $extraURL); $item->date = JHtml::_('date', $item->created, JText::_('DATE_FORMAT_LC2')); $item->subtitle = $this->substring($item->title, $titleMaxChars); if ($limitDescriptionBy == 'word') { $string = preg_replace("/\\s+/", " ", strip_tags($item->introtext)); $tmp = explode(" ", $string); $item->description = $descriptionMaxChars > count($tmp) ? $string : implode(" ", array_slice($tmp, 0, $descriptionMaxChars)); } else { $item->description = self::substring($item->introtext, $descriptionMaxChars, '', $isStripedTags); } $item->rating = is_numeric($item->rating) ? floatval($item->rating / 5 * 100) : null; $item->author = $item->created_by; $item = $this->generateImages($item, $isThumb); $item->categoryLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid . ':' . urlencode($item->categoryalias)))); if ($params->get('itemAuthor')) { if (!empty($item->created_by_alias)) { $item->author = $item->created_by_alias; $item->authorGender = NULL; } 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(); //Author Link $item->authorLink = JRoute::_(K2HelperRoute::getUserRoute($item->created_by)); } } } return $data; }
/** * * Get Articles of K2 * @param array $catids categories of K2 * @param object $helper * @param object $params * @return object */ function getArticles($catids, &$helper, $params) { jimport('joomla.filesystem.file'); $limit = (int) $params->get('introitems', $helper->get('introitems')) + (int) $params->get('linkitems', $helper->get('linkitems')); if (!$limit) { $limit = 4; } $ordering = $helper->get('ordering', ''); //get params of K2 component $componentParams = JComponentHelper::getParams('com_k2'); $limitstart = 0; $user = JFactory::getUser(); $aid = $user->get('aid') ? $user->get('aid') : 1; $db = JFactory::getDBO(); $jnow = JFactory::getDate(); //$now = $jnow->toMySQL(); if (version_compare(JVERSION, '3.0', 'ge')) { $now = $jnow->toSql(); } else { if (version_compare(JVERSION, '2.5', 'ge')) { $now = $jnow->toMySQL(); } else { $now = $jnow->toMySQL(); } } $nullDate = $db->getNullDate(); $query = "SELECT i.*, c.name AS categoryname,c.id AS categoryid, c.alias AS categoryalias, c.name as cattitle, c.params AS categoryparams"; $query .= "\n FROM #__k2_items as i LEFT JOIN #__k2_categories c ON c.id = i.catid"; $query .= "\n 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 .= "\n AND i.catid IN ({$catids})"; $query .= "\n AND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " )"; $query .= "\n AND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )"; if ($helper->get('featured') == 'hide') { $query .= "\n AND i.featured = 0"; } if ($helper->get('featured') == 'only') { $query .= "\n AND i.featured = 1"; } if ($helper->get('timerange') > 0) { $datenow = JFactory::getDate(); //$date = $datenow->toMySQL(); if (version_compare(JVERSION, '3.0', 'ge')) { $date = $datenow->toSql(); } else { if (version_compare(JVERSION, '2.5', 'ge')) { $date = $datenow->toMySQL(); } else { $date = $datenow->toMySQL(); } } $query .= " AND i.created > DATE_SUB('{$date}',INTERVAL " . $helper->get('timerange') . " DAY) "; } $sort_order = $helper->get('sort_order', 'DESC'); switch ($ordering) { case 'ordering': $ordering = 'ordering ' . $sort_order; break; case 'rand': $ordering = 'RAND()'; break; case 'hits': $ordering = 'hits ' . $sort_order; break; case 'created': $ordering = 'created ' . $sort_order; break; case 'modified': $ordering = 'modified ' . $sort_order; break; case 'title': $ordering = 'title ' . $sort_order; break; } if ($ordering == 'RAND()') { $query .= "\n ORDER BY " . $ordering; } else { $query .= "\n ORDER BY i." . $ordering; } $db->setQuery($query, 0, $limit); $rows = $db->loadObjectList(); $autoresize = intval(trim($helper->get('autoresize', 0))); $width_img = (int) $helper->get('width', 100) < 0 ? 100 : $helper->get('width', 100); $height_img = (int) $helper->get('height', 100) < 0 ? 100 : $helper->get('height', 100); $img_w = intval(trim($width_img)); $img_h = intval(trim($height_img)); //$img_w = intval(trim($helper->get('width', 100))); //$img_h = intval(trim($helper->get('height', 100))); $img_align = $helper->get('align', 'left'); $showimage = $params->get('showimage', $helper->get('showimage', 0)); $maxchars = intval(trim($helper->get('maxchars', 200))); $hiddenClasses = trim($helper->get('hiddenClasses', '')); $showdate = $helper->get('showdate', 0); $enabletimestamp = $helper->get('timestamp', 0); if (count($rows)) { foreach ($rows as $j => $row) { $row->introtext1 = ""; $row->cat_link = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($row->categoryid . ':' . urlencode($row->categoryalias)))); //Clean title $row->title = JFilterOutput::ampReplace($row->title); //Images $image = ''; if (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $row->id) . '_XL.jpg')) { $image = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $row->id) . '_XL.jpg'; } elseif (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $row->id) . '_XS.jpg')) { $image = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $row->id) . '_XS.jpg'; } elseif (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $row->id) . '_L.jpg')) { $image = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $row->id) . '_L.jpg'; } elseif (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $row->id) . '_S.jpg')) { $image = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $row->id) . '_S.jpg'; } elseif (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $row->id) . '_M.jpg')) { $image = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $row->id) . '_M.jpg'; } elseif (JFile::exists(JPATH_SITE . DS . 'media' . DS . 'k2' . DS . 'items' . DS . 'cache' . DS . md5("Image" . $row->id) . '_Generic.jpg')) { $image = JURI::root() . 'media/k2/items/cache/' . md5("Image" . $row->id) . '_Generic.jpg'; } if ($image != '') { $thumbnailMode = $helper->get('thumbnail_mode', 'crop'); $aspect = $helper->get('use_ratio', '1'); $crop = $thumbnailMode == 'crop' ? true : false; $align = $img_align ? "align=\"{$img_align}\"" : ""; $jaimage = JAImage::getInstance(); if ($thumbnailMode != 'none' && $jaimage->sourceExited($image)) { $imageURL = $jaimage->resize($image, $img_w, $img_h, $crop, $aspect); $imageURL = str_replace(JURI::base(), '', $imageURL); $imageURL = JURI::base() . $imageURL; $row->image = $imageURL ? "<img class=\"{$img_align}\" src=\"" . $imageURL . "\" alt=\"{$row->title}\" {$align} />" : ""; } else { $width = $img_w ? "width=\"{$img_w}\"" : ""; $height = $img_h ? "height=\"{$img_h}\"" : ""; $imageURL = str_replace(JURI::base(), '', $imageURL); $imageURL = JURI::base() . $imageURL; $row->image = "<img class=\"{$img_align}\" src=\"" . $image . "\" alt=\"{$row->title}\" {$img_w} {$img_h} {$align} />"; } if ($maxchars && strlen($row->introtext) > $maxchars) { $doc = JDocument::getInstance(); if (function_exists('mb_substr')) { $row->introtext1 = SmartTrim::mb_trim($row->introtext, 0, $maxchars, $doc->_charset); } else { $row->introtext1 = SmartTrim::trim($row->introtext, 0, $maxchars); } } elseif ($maxchars == 0) { $row->introtext1 = ''; } $helper->replaceImage($row, $img_align, $autoresize, $maxchars, $showimage, $img_w, $img_h, $hiddenClasses); } else { $row->image = $helper->replaceImage($row, $img_align, $autoresize, $maxchars, $showimage, $img_w, $img_h, $hiddenClasses); if ($maxchars == 0) { $row->introtext1 = ''; } } // Introtext $row->text = $row->introtext; //Read more link $row->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($row->id . ':' . urlencode($row->alias), $row->catid . ':' . urlencode($row->categoryalias)))); $helper->_params->set('parsedInModule', 1); $dispatcher = JDispatcher::getInstance(); if ($helper->get('JPlugins', 1)) { //Plugins $results = $dispatcher->trigger('onBeforeDisplay', array(&$row, &$helper->_params, $limitstart)); $row->event->BeforeDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onAfterDisplay', array(&$row, &$helper->_params, $limitstart)); $row->event->AfterDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onAfterDisplayTitle', array(&$row, &$helper->_params, $limitstart)); $row->event->AfterDisplayTitle = trim(implode("\n", $results)); $results = $dispatcher->trigger('onBeforeDisplayContent', array(&$row, &$helper->_params, $limitstart)); $row->event->BeforeDisplayContent = trim(implode("\n", $results)); $results = $dispatcher->trigger('onAfterDisplayContent', array(&$row, &$helper->_params, $limitstart)); $row->event->AfterDisplayContent = trim(implode("\n", $results)); $dispatcher->trigger('onPrepareContent', array(&$row, &$helper->_params, $limitstart)); $row->introtext = $row->text; } //Init K2 plugin events $row->event->K2BeforeDisplay = ''; $row->event->K2AfterDisplay = ''; $row->event->K2AfterDisplayTitle = ''; $row->event->K2BeforeDisplayContent = ''; $row->event->K2AfterDisplayContent = ''; $row->event->K2CommentsCounter = ''; //K2 plugins if ($helper->get('K2Plugins', 1)) { JPluginHelper::importPlugin('k2'); $results = $dispatcher->trigger('onK2BeforeDisplay', array(&$row, &$helper->_params, $limitstart)); $row->event->K2BeforeDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2AfterDisplay', array(&$row, &$helper->_params, $limitstart)); $row->event->K2AfterDisplay = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2AfterDisplayTitle', array(&$row, &$helper->_params, $limitstart)); $row->event->K2AfterDisplayTitle = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2BeforeDisplayContent', array(&$row, &$helper->_params, $limitstart)); $row->event->K2BeforeDisplayContent = trim(implode("\n", $results)); $results = $dispatcher->trigger('onK2AfterDisplayContent', array(&$row, &$helper->_params, $limitstart)); $row->event->K2AfterDisplayContent = trim(implode("\n", $results)); $dispatcher->trigger('onK2PrepareContent', array(&$row, &$helper->_params, $limitstart)); $row->introtext = $row->text; } //Clean the plugin tags $row->introtext = preg_replace("#{(.*?)}(.*?){/(.*?)}#s", '', $row->introtext); $row->introtext = '<p>' . $row->introtext . '</p>'; //Author if ($helper->get('showcreator')) { if (!empty($row->created_by_alias)) { $row->author = $row->created_by_alias; $row->authorGender = NULL; } else { $author = JFactory::getUser($row->created_by); $row->author = $author->name; $query = "SELECT `gender` FROM #__k2_users WHERE userID=" . (int) $author->id; $db->setQuery($query, 0, 1); $row->authorGender = $db->loadResult(); //Author Link $row->authorLink = JRoute::_(K2HelperRoute::getUserRoute($row->created_by)); } } $row->created = $row->modified != '' && $row->modified != '0000-00-00 00:00:00' ? $row->modified : $row->created; if ($enabletimestamp) { $row->created = $helper->generatTimeStamp($row->created); } else { $row->created = JHTML::_('date', $row->created); } $rows[$j] = $row; } } return $rows; }
function display($tpl = null) { $mainframe = JFactory::getApplication(); $params = K2HelperUtilities::getParams('com_k2'); $document = JFactory::getDocument(); if (K2_JVERSION == '15') { $document->setMimeEncoding('application/json'); $document->setType('json'); } $model = $this->getModel('itemlist'); //Set limit for model $limit = JRequest::getInt('limit'); if ($limit > 100 || $limit == 0) { $limit = 100; JRequest::setVar('limit', $limit); } $page = JRequest::getInt('page'); if ($page <= 0) { $limitstart = 0; } else { $page--; $limitstart = $page * $limit; } JRequest::setVar('limitstart', $limitstart); $view = JRequest::getWord('view'); $task = JRequest::getWord('task'); $response = new JObject(); unset($response->_errors); // Site $response->site = new stdClass(); $uri = JURI::getInstance(); $response->site->url = $uri->toString(array('scheme', 'host', 'port')); $config = JFactory::getConfig(); $response->site->name = K2_JVERSION == '30' ? $config->get('sitename') : $config->getValue('config.sitename'); $moduleID = JRequest::getInt('moduleID'); if ($moduleID) { $result = $model->getModuleItems($moduleID); $items = $result->items; $title = $result->title; $prefix = 'cat'; } else { //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); // 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())) { JError::raiseError(403, JText::_('K2_ALERTNOTAUTH')); } $languageFilter = $mainframe->getLanguageFilter(); $languageTag = JFactory::getLanguage()->getTag(); if ($languageFilter && $category->language != $languageTag && $category->language != '*') { return; } } else { if ($category->access > $user->get('aid', 0)) { JError::raiseError(403, JText::_('K2_ALERTNOTAUTH')); } } //Merge params $cparams = class_exists('JParameter') ? new JParameter($category->params) : new JRegistry($category->params); 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; //Category children $ordering = $params->get('subCatOrdering'); $children = $model->getCategoryFirstChildren($id, $ordering); $subCategories = array(); 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->link = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($child->id . ':' . urlencode($child->alias)))); unset($child->params); unset($child->access); unset($child->published); unset($child->trash); unset($child->language); $subCategories[] = $child; } } //Set featured flag JRequest::setVar('featured', $params->get('catFeaturedItems')); //Set title $title = $category->name; // Set ordering if ($params->get('singleCatOrdering')) { $ordering = $params->get('singleCatOrdering'); } else { $ordering = $params->get('catOrdering'); } // Set parameters prefix $prefix = 'cat'; // Prepare the JSON category object; $row = new JObject(); unset($row->_errors); $row->id = $category->id; $row->name = $category->name; $row->alias = $category->alias; $row->link = $category->link; $row->parent = $category->parent; $row->extraFieldsGroup = $category->extraFieldsGroup; $row->image = $category->image; $row->ordering = $category->ordering; //$row->plugins = $category->plugins; $row->events = $category->event; $row->chidlren = $subCategories; $response->category = $row; break; case 'user': //Get user $id = JRequest::getInt('id'); $userObject = JFactory::getUser($id); //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'); } //Set title $title = $userObject->name; // Set ordering $ordering = $params->get('userOrdering'); // Set parameters prefix $prefix = 'user'; // Prepare the JSON user object; $row = new JObject(); unset($row->_errors); //$row->id = $userObject->id; $row->name = $userObject->name; //$row->username = $userObject->username; if (isset($userObject->profile->plugins)) { unset($userObject->profile->plugins); } $row->profile = $userObject->profile; $row->avatar = $userObject->avatar; $row->events = $userObject->event; $response->user = $row; break; case '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'); // Set parameters prefix $prefix = 'tag'; $response->tag = JRequest::getVar('tag'); break; case 'search': //Set title $title = JText::_('K2_SEARCH_RESULTS_FOR') . ' ' . JRequest::getVar('searchword'); // Set parameters prefix $prefix = 'generic'; $response->search = JRequest::getVar('searchword'); break; case 'date': // 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); } // Set ordering $ordering = 'rdate'; // Set parameters prefix $prefix = 'generic'; $response->date = JHTML::_('date', $date, $dateFormat); break; default: $user = JFactory::getUser(); //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'); // Set parameters prefix $prefix = 'cat'; break; } if (!isset($ordering)) { $items = $model->getData(); } else { $items = $model->getData($ordering); } } //Prepare items $user = JFactory::getUser(); $cache = JFactory::getCache('com_k2_extended'); $model = JModelLegacy::getInstance('item', 'K2Model'); $rows = array(); for ($i = 0; $i < sizeof($items); $i++) { //Item group if ($task == "category" || $task == "") { $items[$i]->itemGroup = 'links'; 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'; } } else { $items[$i]->itemGroup = ''; } $itemParams = class_exists('JParameter') ? new JParameter($items[$i]->params) : new JRegistry($items[$i]->params); $itemParams->set($prefix . 'ItemIntroText', true); $itemParams->set($prefix . 'ItemFullText', true); $itemParams->set($prefix . 'ItemTags', true); $itemParams->set($prefix . 'ItemExtraFields', true); $itemParams->set($prefix . 'ItemAttachments', true); $itemParams->set($prefix . 'ItemRating', true); $itemParams->set($prefix . 'ItemAuthor', true); $itemParams->set($prefix . 'ItemImageGallery', true); $itemParams->set($prefix . 'ItemVideo', true); $itemParams->set($prefix . 'ItemImage', true); $items[$i]->params = $itemParams->toString(); //Check if model should use cache for preparing item even if user is logged in 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); } //Plugins $items[$i]->params->set('genericItemIntroText', $params->get('catItemIntroText')); $items[$i] = $model->execPlugins($items[$i], $view, $task); //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)); // Set default image if ($task == 'user' || $task == 'tag' || $task == 'search' || $task == 'date') { $items[$i]->image = isset($items[$i]->imageGeneric) ? $items[$i]->imageGeneric : ''; } else { if (!$moduleID) { K2HelperUtilities::setDefaultImage($items[$i], $view, $params); } } $rows[] = $model->prepareJSONItem($items[$i]); } $response->items = $rows; // Prevent spammers from using the tag view if ($task == 'tag' && !count($response->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; } } // Output $json = json_encode($response); $callback = JRequest::getCmd('callback'); if ($callback) { $document->setMimeEncoding('application/javascript'); echo $callback . '(' . $json . ')'; } else { echo $json; } }
/** * Returns the URL for an article * * @param Table $row * @param boolean $htmlspecialchars * @param string $type 'article', 'section' or 'category' * @return string URL */ public static function getUrl($row, $htmlspecialchars = true, $type = 'article') { global $_CB_framework; /** @noinspection PhpIncludeInspection */ require_once $_CB_framework->getCfg('absolute_path') . '/components/com_k2/helpers/route.php'; $categorySlug = $row->get('category') . ($row->get('category_alias') ? ':' . $row->get('category_alias') : null); $articleSlug = $row->get('id') . ($row->get('alias') ? ':' . $row->get('alias') : null); switch ($type) { case 'section': /** @noinspection PhpUndefinedClassInspection */ $url = K2HelperRoute::getCategoryRoute($row->get('parent')); break; case 'category': /** @noinspection PhpUndefinedClassInspection */ $url = K2HelperRoute::getCategoryRoute($categorySlug); break; case 'article': default: /** @noinspection PhpUndefinedClassInspection */ $url = K2HelperRoute::getItemRoute($articleSlug, $categorySlug); break; } if (!stristr($url, 'Itemid')) { $url = $_CB_framework->getCfg('live_site') . '/' . $url; } else { $url = JRoute::_($url, false); } if ($url) { if ($htmlspecialchars) { $url = htmlspecialchars($url); } } return $url; }
function display($tpl = null) { $mainframe =& JFactory::getApplication(); $params =& JComponentHelper::getParams('com_k2'); $user =& JFactory::getUser(); $cache =& JFactory::getCache('com_k2_extended'); $limit = $params->get('latestItemsLimit', 3); $limitstart = JRequest::getInt('limitstart'); $model =& $this->getModel('itemlist'); $itemModel =& $this->getModel('item'); if ($params->get('source')) { $categoryIDs = $params->get('categoryIDs'); if (is_string($categoryIDs) && !empty($categoryIDs)) { $categoryIDs = array(); $categoryIDs[] = $params->get('$categoryIDs'); } $categories = array(); JTable::addIncludePath(JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_k2' . DS . 'tables'); foreach ($categoryIDs as $categoryID) { $category =& JTable::getInstance('K2Category', 'Table'); $category->load($categoryID); if ($category->published && $category->access <= $user->get('aid', 0)) { //Merge params $cparams = new JParameter($category->params); if ($cparams->get('inheritFrom')) { $masterCategory =& JTable::getInstance('K2Category', 'Table'); $masterCategory->load($cparams->get('inheritFrom')); $cparams = new JParameter($masterCategory->params); } $params->merge($cparams); //Category image if (!empty($category->image)) { $category->image = JURI::root() . 'media/k2/categories/' . $category->image; } else { if ($params->get('catImageDefault')) { $category->image = JURI::root() . 'components/com_k2/images/placeholder/category.png'; } } //Category plugins $dispatcher =& JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); $category->text = $category->description; $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; //Category link $link = urldecode(K2HelperRoute::getCategoryRoute($category->id . ':' . urlencode($category->alias))); $category->link = JRoute::_($link); $category->feed = JRoute::_($link . '&format=feed'); JRequest::setVar('view', 'itemlist'); JRequest::setVar('task', 'category'); JRequest::setVar('id', $category->id); JRequest::setVar('featured', 1); JRequest::setVar('limit', $limit); $category->items = $model->getData('rdate'); JRequest::setVar('view', 'latest'); JRequest::setVar('task', ''); for ($i = 0; $i < sizeof($category->items); $i++) { if ($user->guest) { $hits = $category->items[$i]->hits; $category->items[$i]->hits = 0; $category->items[$i] = $cache->call(array('K2ModelItem', 'prepareItem'), $category->items[$i], 'latest', ''); $category->items[$i]->hits = $hits; } else { $category->items[$i] = $itemModel->prepareItem($category->items[$i], 'latest', ''); } } $categories[] = $category; } } $source = 'categories'; $this->assignRef('blocks', $categories); } else { $usersIDs = $params->get('userIDs'); if (is_string($usersIDs) && !empty($usersIDs)) { $usersIDs = array(); $usersIDs[] = $params->get('userIDs'); } $users = array(); foreach ($usersIDs as $userID) { $userObject = JFactory::getUser($userID); if (!$userObject->block) { //User profile $userObject->profile = $model->getUserProfile($userID); //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)); } $link = K2HelperRoute::getUserRoute($userObject->id); $userObject->link = JRoute::_($link); $userObject->feed = JRoute::_($link . '&format=feed'); $userObject->items = $model->getAuthorLatest(0, $limit, $userID); for ($i = 0; $i < sizeof($userObject->items); $i++) { if ($user->guest) { $hits = $userObject->items[$i]->hits; $userObject->items[$i]->hits = 0; $userObject->items[$i] = $cache->call(array('K2ModelItem', 'prepareItem'), $userObject->items[$i], 'latest', ''); $userObject->items[$i]->hits = $hits; } else { $userObject->items[$i] = $itemModel->prepareItem($userObject->items[$i], 'latest', ''); } } $users[] = $userObject; } } $source = 'users'; $this->assignRef('blocks', $users); } //Look for template files in component folders $this->_addPath('template', JPATH_COMPONENT . DS . 'templates'); $this->_addPath('template', JPATH_COMPONENT . 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'); //Assign params $this->assignRef('params', $params); $this->assignRef('source', $source); //Set layout $this->setLayout('latest'); //Display 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.*, 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; } }
static function getList($params, $count) { $mainframe = JFactory::getApplication(); $catids = $params->get('k2catids', array()); $ordering = $params->get('ordering', 'a.ordering'); $ordering_direction = $params->get('ordering_direction', 'ASC'); $user_id = $params->get('user_id'); $show_featured = $params->get('show_featured'); $user = JFactory::getUser(); $aid = $user->get('aid'); $db = JFactory::getDBO(); $jnow = JFactory::getDate(); if (version_compare(JVERSION, '3.0', '<') == 1) { $now = $jnow->toMySQL(); } else { $now = $jnow->toSql(); } $nullDate = $db->getNullDate(); $query = "SELECT a.*, c.name as categoryname,c.id as categoryid, c.alias as categoryalias, c.params as categoryparams" . " FROM #__k2_items as a" . " LEFT JOIN #__k2_categories c ON c.id = a.catid"; if (version_compare(JVERSION, '3.0', '<') == 1) { $query .= " WHERE a.published = 1 AND a.access IN(" . implode(',', $user->authorisedLevels()) . ") AND a.trash = 0 AND c.published = 1 AND c.access IN(" . implode(',', $user->authorisedLevels()) . ") AND c.trash = 0"; } else { $query .= " WHERE a.published = 1 AND a.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") AND a.trash = 0 AND c.published = 1 AND c.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") AND c.trash = 0"; } // User filter $userId = JFactory::getUser()->get('id'); switch ($params->get('user_id')) { case 'by_me': $query .= ' AND (a.created_by = ' . (int) $userId . ' OR a.modified_by = ' . (int) $userId . ')'; break; case 'not_me': $query .= ' AND (a.created_by <> ' . (int) $userId . ' AND a.modified_by <> ' . (int) $userId . ')'; break; case '0': break; default: $query .= ' AND (a.created_by = ' . (int) $userId . ' OR a.modified_by = ' . (int) $userId . ')'; break; } //Added Category if (!is_null($catids)) { if (is_array($catids)) { JArrayHelper::toInteger($catids); $query .= " AND a.catid IN(" . implode(',', $catids) . ")"; } else { $query .= " AND a.catid=" . (int) $catids; } } // Featured items filter if ($show_featured == '0') { $query .= " AND a.featured != 1"; } if ($show_featured == '1') { $query .= " AND a.featured = 1"; } // ensure should be published $query .= " AND ( a.publish_up = " . $db->Quote($nullDate) . " OR a.publish_up <= " . $db->Quote($now) . " )"; $query .= " AND ( a.publish_down = " . $db->Quote($nullDate) . " OR a.publish_down >= " . $db->Quote($now) . " )"; 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('*') . ")"; } } //Ordering $orderby = $ordering . ' ' . $ordering_direction; //ordering $query .= " ORDER BY " . $orderby; $db->setQuery($query, 0, $count); $items = $db->loadObjectList(); $model = K2Model::getInstance('Item', 'K2Model'); if (count($items)) { foreach ($items as $item) { if (!empty($item->created_by_alias)) { $item->author = $item->created_by_alias; } else { $author = JFactory::getUser($item->created_by); $item->author = $author->name; } $item->created = $item->created; $item->hits = $item->hits; $item->category = $item->categoryname; $item->cat_link = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid . ':' . urlencode($item->categoryalias)))); $item->image = modTzContentSliderK2Helper::getImage($item->id, $item->introtext); $item->title = htmlspecialchars($item->title); $item->introtext = $item->introtext; $item->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($item->id . ':' . urlencode($item->alias), $item->catid . ':' . urlencode($item->categoryalias)))); $item->comment = '<a class="tzcontentslider-comments" href="' . $item->link . '#itemCommentsAnchor">' . JText::_('COMMENTS_TEXT') . ' (' . $model->countItemComments($item->id) . ')</a>'; $item->rating = $model->getVotesPercentage($item->id); if ($params->get('article_extra_fields')) { $item->extra_fields = $model->getItemExtraFields($item->extra_fields, $item); } $rows[] = $item; } return $rows; } }
/** * call back function for processing data before render */ public static function onBeforeRender($item, $descriptionMaxChars = 100, $limitDescriptionBy = 'char', $isAuthor = false) { //Read more link $item->link = urldecode(JRoute::_(K2HelperRoute::getItemRoute($item->id . ':' . urlencode($item->alias), $item->catid . ':' . urlencode($item->categoryalias)))); $item->date = JHtml::_('date', $item->created, JText::_('DATE_FORMAT_LC3')); if ($limitDescriptionBy == 'word') { $string = preg_replace("/\\s+/", " ", strip_tags($item->introtext)); $tmp = explode(" ", $string); $item->description = $descriptionMaxChars > count($tmp) ? $string : implode(" ", array_slice($tmp, 0, $descriptionMaxChars)); } else { $item->description = self::substring($item->introtext, $descriptionMaxChars); } $item->rating = is_numeric($item->rating) ? floatval($item->rating / 5 * 100) : null; $item->categoryLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid . ':' . urlencode($item->categoryalias)))); $item->authorLink = JRoute::_(K2HelperRoute::getUserRoute($item->created_by)); if ($isAuthor) { if (!empty($item->created_by_alias)) { $item->author = $item->created_by_alias; } else { $author =& JFactory::getUser($item->created_by); $item->author = $author->name; } } return $item; }
function display($tpl = null) { $mainframe = JFactory::getApplication(); $params = K2HelperUtilities::getParams('com_k2'); $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->redirect(JRoute::_($url, false), JText::_('K2_YOU_NEED_TO_LOGIN_FIRST')); } 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->redirect(JRoute::_($url, false), JText::_('K2_YOU_NEED_TO_LOGIN_FIRST')); } 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('generic'); // Set limit $limit = $params->get('genericItemCount'); // Set title $title = JText::_('K2_SEARCH_RESULTS_FOR') . ' ' . JRequest::getVar('searchword'); $addHeadFeedLink = $params->get('genericFeedLink', 1); 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); } // Pagination jimport('joomla.html.pagination'); $total = count($items) ? $model->getTotal() : 0; $pagination = new JPagination($total, $limitstart, $limit); //Prepare items $user = JFactory::getUser(); $cache = JFactory::getCache('com_k2_extended'); $model = $this->getModel('item'); for ($i = 0; $i < sizeof($items); $i++) { //Item group if ($task == "category" || $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 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); } // Plugins $items[$i] = $model->execPlugins($items[$i], $view, $task); // 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)); } // 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; } if (!$menu_params->get('page_title')) { $params->set('page_title', $title); } } 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); } // Assign data if ($task == "category" || $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_COMPONENT . DS . 'templates'); $this->_addPath('template', JPATH_COMPONENT . 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_COMPONENT . 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; } } parent::display($tpl); }
/** * get the list of k2 items * * @param JParameter $params; * @return Array */ public function getList() { // check k2 existing if (!is_file(JPATH_SITE . "/components/com_k2/k2.php")) { return array(); } $params =& $this->_params; // Init vars $show_title = $params->get('show_title', 1); $titleMaxChars = $params->get('title_max_chars', '100'); $limit_title_by = $params->get('limit_title_by', 'char'); $replacer = $params->get('replacer', '...'); $isStrips = $params->get("auto_strip_tags", 1); $stringtags = ''; if ($isStrips) { $allow_tags = $params->get("allow_tags", ''); $stringtags = ''; if (!is_array($allow_tags)) { $allow_tags = explode(',', $allow_tags); } foreach ($allow_tags as $tag) { $stringtags .= '<' . $tag . '>'; } } if (!$params->get('default_thumb', 1)) { $this->_defaultThumb = ''; } /* intro */ $show_intro = $params->get('show_intro', 1); $maxDesciption = $params->get('description_max_chars', 100); $limitDescriptionBy = $params->get('limit_description_by', 'char'); $ordering = $params->get('ordering', 'created-desc'); $limit = $params->get('limit_items', 12); // Set ordering $ordering = explode('-', $ordering); if (trim($ordering[0]) == 'rand') { $ordering = ' RAND() '; } else { $ordering = $ordering[0] . ' ' . $ordering[1]; } $user = JFactory::getUser(); $isThumb = $params->get('image_thumb', 1); $thumbWidth = (int) $params->get('thumbnail_width', 280); $thumbHeight = (int) $params->get('thumbnail_height', 150); $quality = (int) $params->get('image_quality', 80); $db = JFactory::getDBO(); $date = JFactory::getDate(); $now = $date->toSQL(); $dateFormat = $params->get('date_format', 'DATE_FORMAT_LC3'); $show_author = $params->get('show_author', 0); // main query $query = "SELECT a.*, c.name as category_title,\n\t\t\t\t\t\tc.id as categoryid, c.alias as categoryalias, c.params as categoryparams, c.image as category_image" . " FROM #__k2_items as a" . " LEFT JOIN #__k2_categories c ON c.id = a.catid"; $query .= " WHERE a.published = 1" . " AND a.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ")" . " AND a.trash = 0" . " AND c.published = 1" . " AND c.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ")" . " AND c.trash = 0 "; // filter by user $userId = $user->get('id'); switch ($params->get('user_id')) { case 'by_me': $query .= 'AND a.created_by = ' . $userId; break; case 'not_me': $query .= 'AND a.created_by != ' . $userId; break; case 0: break; default: $query .= 'AND a.created_by = ' . $userId; break; } // filter by featured params if ($params->get('show_featured', '1') == 2) { $query .= " AND a.featured != 1"; } elseif ($params->get('show_featured', '1') == 3) { $query .= " AND a.featured = 1"; } // valid publish date $jnow = JFactory::getDate(); $now = $jnow->toSql(); $nullDate = $db->getNullDate(); $query .= " AND ( a.publish_up = " . $db->Quote($nullDate) . " OR a.publish_up <= " . $db->Quote($now) . " )"; $query .= " AND ( a.publish_down = " . $db->Quote($nullDate) . " OR a.publish_down >= " . $db->Quote($now) . " )"; //filter by language $languageTag = JFactory::getLanguage()->getTag(); $query .= " AND a.language IN (" . $db->quote($languageTag) . "," . $db->quote('*') . ") AND c.language IN (" . $db->quote($languageTag) . "," . $db->quote('*') . ")"; //Get data $data = array(); $source = trim($this->_params->get('source', 'k2_category')); $catids = self::getCategoryIds(); if ($source == 'k2_category' && !empty($catids) && $this->_params->get('limit_items_for_each')) { $db->setQuery('SELECT id from #__k2_categories where id in (' . implode($catids, ',') . ') order by ordering'); $catids = $db->loadColumn(); foreach ($catids as $catid) { $condition = ' AND a.catid = ' . $catid . ' '; $db->setQuery($query . $condition . ' ORDER BY ' . $ordering . ($limit ? ' LIMIT ' . $limit : '')); $data = array_merge($data, $db->loadObjectlist()); } } else { $condition = $this->buildConditionQuery($source, $catids); $db->setQuery($query . $condition . ' ORDER BY ' . $ordering . ($limit ? ' LIMIT ' . $limit : '')); $data = array_merge($data, $db->loadObjectlist()); } // Rebuild data foreach ($data as $key => &$item) { // authorise if (in_array($item->access, $user->getAuthorisedViewLevels())) { $item->link = JRoute::_(K2HelperRoute::getItemRoute($item->id . ':' . $item->alias, $item->catid . ':' . $item->categoryalias)); } else { $item->link = JRoute::_('index.php?option=com_users&view=login'); } // format date $item->date = JHtml::_('date', $item->created, JText::_($dateFormat)); //cut title if ($limit_title_by == 'word' && $titleMaxChars > 0) { $item->title_cut = self::substrword($item->title, $titleMaxChars, $replacer, $isStrips); } elseif ($limit_title_by == 'char' && $titleMaxChars > 0) { $item->title_cut = self::substring($item->title, $titleMaxChars, $replacer, $isStrips); } // escape html characters $item->title = htmlspecialchars($item->title); // import joomla content prepare plugin if ($params->get('content_plugin')) { $item->introtext = JHtml::_('content.prepare', $item->introtext); } // cut introtext if ($limitDescriptionBy == 'word') { $item->description = self::substrword($item->introtext, $maxDesciption, $replacer, $isStrips, $stringtags); } else { $item->description = self::substring($item->introtext, $maxDesciption, $replacer, $isStrips, $stringtags); } $item->categoryLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid . ':' . urlencode($item->categoryalias)))); // get author name & link if ($show_author) { if (!empty($item->created_by_alias)) { $item->author = $item->created_by_alias; } else { $author = JFactory::getUser($item->created_by); $item->author = $author->name; } $item->authorLink = JRoute::_(K2HelperRoute::getUserRoute($item->created_by)); } // make thumbnail $item->thumbnail = ''; $item->mainImage = ''; if ($params->get('show_image')) { $item = $this->generateImages($item, $isThumb, $quality); } //get extrafields $showExtrafields = $params->get('show_extrafields', array()); if (count($showExtrafields) && $item->extra_fields) { $item->extra_fields = json_decode($item->extra_fields); if (count($item->extra_fields)) { $exIds = array(); foreach ($item->extra_fields as $ex) { $exIds[] = $ex->id; } $exIds = implode(',', $exIds); $query = 'SELECT name FROM #__k2_extra_fields WHERE id IN (' . $exIds . ') ORDER BY ordering'; $db->setQuery($query); $rs = $db->loadObjectlist(); foreach ($item->extra_fields as $key => &$ex) { $ex->name = $rs[$key]->name; } } } } return $data; }
function prepareItem($item, $view, $task) { jimport('joomla.filesystem.file'); JTable::addIncludePath(JPATH_COMPONENT_ADMINISTRATOR . DS . 'tables'); $limitstart = JRequest::getInt('limitstart'); //Initialize params if ($view != 'item') { $component = JComponentHelper::getComponent('com_k2'); $params = new JParameter($component->params); $itemid = JRequest::getInt('Itemid'); if ($itemid) { $menu = JSite::getMenu(); $menuparams = $menu->getParams($itemid); $params->merge($menuparams); } } else { $params =& JComponentHelper::getParams('com_k2'); } //Category $db =& JFactory::getDBO(); $query = "SELECT * FROM #__k2_categories WHERE id={$item->catid}"; $db->setQuery($query, 0, 1); $category = $db->loadObject(); $item->category = $category; $item->category->link = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($category->id . ':' . urlencode($category->alias)))); //Read more link $link = K2HelperRoute::getItemRoute($item->id . ':' . urlencode($item->alias), $item->catid . ':' . urlencode($item->category->alias)); $item->link = urldecode(JRoute::_($link)); //Print link $item->printLink = urldecode(JRoute::_($link . '&tmpl=component&print=1')); //Params $cparams = new JParameter($category->params); $iparams = new JParameter($item->params); $item->params = $params; if ($cparams->get('inheritFrom')) { $masterCategoryID = $cparams->get('inheritFrom'); $query = "SELECT * FROM #__k2_categories WHERE id={$masterCategoryID}"; $db->setQuery($query, 0, 1); $masterCategory = $db->loadObject(); $cparams = new JParameter($masterCategory->params); } $item->params->merge($cparams); $item->params->merge($iparams); //Edit link if (K2HelperPermissions::canEditItem($item->created_by, $item->catid)) { $item->editLink = JRoute::_('index.php?option=com_k2&view=item&task=edit&cid=' . $item->id . '&tmpl=component'); } //Tags if ($view == 'item' && ($item->params->get('itemTags') || $item->params->get('itemRelated')) || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemTags') || $view == 'itemlist' && $task == 'user' && $item->params->get('userItemTags') || $view == 'latest' && $params->get('latestItemTags')) { $tags = K2ModelItem::getItemTags($item->id); for ($i = 0; $i < sizeof($tags); $i++) { $tags[$i]->link = urldecode(JRoute::_(K2HelperRoute::getTagRoute($tags[$i]->name))); } $item->tags = $tags; } //Image $item->imageXSmall = ''; $item->imageSmall = ''; $item->imageMedium = ''; $item->imageLarge = ''; $item->imageXLarge = ''; 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'; } //Extra fields if ($view == 'item' && $item->params->get('itemExtraFields') || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemExtraFields') || $view == 'itemlist' && ($task == 'search' || $task == 'tag' || $task == 'date') && $item->params->get('genericItemExtraFields')) { $item->extra_fields = K2ModelItem::getItemExtraFields($item->extra_fields); } //Attachments if ($view == 'item' && $item->params->get('itemAttachments') || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemAttachments')) { $item->attachments = K2ModelItem::getItemAttachments($item->id); } //Import plugins $dispatcher =& JDispatcher::getInstance(); JPluginHelper::importPlugin('content'); //Gallery if ($view == 'item' && $item->params->get('itemImageGallery') || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemImageGallery')) { $params->set('galleries_rootfolder', 'media/k2/galleries'); $params->set('popup_engine', 'mootools_slimbox'); $params->set('enabledownload', '0'); $item->text = $item->gallery; $dispatcher->trigger('onPrepareContent', array(&$item, &$params, $limitstart)); $item->gallery = $item->text; } //Video if ($view == 'item' && $item->params->get('itemVideo') || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemVideo') || $view == 'latest' && $item->params->get('latestItemVideo')) { if (!empty($item->video) && JString::substr($item->video, 0, 1) !== '{') { $item->video = $item->video; $item->videoType = 'embedded'; } else { $item->videoType = 'allvideos'; $params->set('vfolder', 'media/k2/videos'); if ($view == 'item') { $params->set('vwidth', $item->params->get('itemVideoWidth')); $params->set('vheight', $item->params->get('itemVideoHeight')); $params->set('autoplay', $item->params->get('itemVideoAutoPlay')); } else { if ($view == 'latest') { $params->set('vwidth', $item->params->get('latestItemVideoWidth')); $params->set('vheight', $item->params->get('latestItemVideoHeight')); $params->set('autoplay', $item->params->get('latestItemVideoAutoPlay')); } else { $params->set('vwidth', $item->params->get('catItemVideoWidth')); $params->set('vheight', $item->params->get('catItemVideoHeight')); $params->set('autoplay', $item->params->get('catItemVideoAutoPlay')); } } $item->text = $item->video; $dispatcher->trigger('onPrepareContent', array(&$item, &$params, $limitstart)); $item->video = $item->text; } } //Rating if ($view == 'item' && $item->params->get('itemRating') || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemRating')) { $item->votingPercentage = K2ModelItem::getVotesPercentage($item->id); $item->numOfvotes = K2ModelItem::getVotesNum($item->id); } //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); } if ($item->params->get('catItemIntroTextWordLimit') && $task == 'category') { $item->introtext = K2HelperUtilities::wordLimit($item->introtext, $item->params->get('catItemIntroTextWordLimit')); } //Plugins $item->text = ''; $params->set('vfolder', NULL); $params->set('vwidth', NULL); $params->set('vheight', NULL); $params->set('autoplay', NULL); $params->set('galleries_rootfolder', NULL); $params->set('popup_engine', NULL); $params->set('enabledownload', NULL); if ($view == 'item') { if ($item->params->get('itemIntroText')) { $item->text .= $item->introtext; } if ($item->params->get('itemFullText')) { $item->text .= '{K2Splitter}' . $item->fulltext; } } else { switch ($task) { case '': case 'category': if ($item->params->get('catItemIntroText')) { $item->text .= $item->introtext; } break; case 'user': if ($item->params->get('userItemIntroText')) { $item->text .= $item->introtext; } break; default: if ($item->params->get('genericItemIntroText')) { $item->text .= $item->introtext; } break; } } $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)); //Author if ($view == 'item' && ($item->params->get('itemAuthorBlock') || $item->params->get('itemAuthor')) || $view == 'itemlist' && ($task == '' || $task == 'category') && ($item->params->get('catItemAuthorBlock') || $item->params->get('catItemAuthor')) || $view == 'itemlist' && $task == 'user') { if (!empty($item->created_by_alias)) { $item->author->name = $item->created_by_alias; $item->author->avatar = K2HelperUtilities::getAvatar('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); $item->author->avatar = K2HelperUtilities::getAvatar($author->id, $author->email, $params->get('userImageWidth')); } if (!is_object($item->author->profile)) { $item->author->profile = new JObject(); $item->author->profile->gender = NULL; } } //Num of comments $item->numOfComments = K2ModelItem::countItemComments($item->id); //K2 plugins $item->event->K2BeforeDisplay = ''; $item->event->K2AfterDisplay = ''; $item->event->K2AfterDisplayTitle = ''; $item->event->K2BeforeDisplayContent = ''; $item->event->K2AfterDisplayContent = ''; if ($view == 'item' && $item->params->get('itemK2Plugins') || $view == 'itemlist' && ($task == '' || $task == 'category') && $item->params->get('catItemK2Plugins') || $view == 'itemlist' && $task == 'user' && $item->params->get('userItemK2Plugins')) { 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 ($view == 'item') { @(list($item->introtext, $item->fulltext) = explode('{K2Splitter}', $item->text)); } else { $item->introtext = $item->text; } return $item; }
<?php
function display($tpl = null) { $mainframe = JFactory::getApplication(); $params = K2HelperUtilities::getParams('com_k2'); $document = JFactory::getDocument(); $model = $this->getModel('itemlist'); $limitstart = JRequest::getInt('limitstart'); $moduleID = JRequest::getInt('moduleID'); if ($moduleID) { $result = $model->getModuleItems($moduleID); $items = $result->items; $title = $result->title; } else { //Get data depending on task $task = JRequest::getCmd('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); // 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->redirect(JRoute::_($url, false), JText::_('K2_YOU_NEED_TO_LOGIN_FIRST')); } 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->redirect(JRoute::_($url, false), JText::_('K2_YOU_NEED_TO_LOGIN_FIRST')); } else { JError::raiseError(403, JText::_('K2_ALERTNOTAUTH')); return; } } } //Merge params $cparams = class_exists('JParameter') ? new JParameter($category->params) : new JRegistry($category->params); 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)))); //Set featured flag JRequest::setVar('featured', $params->get('catFeaturedItems')); //Set title $title = $category->name; // Set ordering if ($params->get('singleCatOrdering')) { $ordering = $params->get('singleCatOrdering'); } else { $ordering = $params->get('catOrdering'); } break; case 'user': //Get user $id = JRequest::getInt('id'); $userObject = JFactory::getUser($id); //Check user status if ($userObject->block) { JError::raiseError(404, JText::_('K2_USER_NOT_FOUND')); } //Set title $title = $userObject->name; // Set ordering $ordering = $params->get('userOrdering'); break; case 'tag': //set title $title = JText::_('K2_DISPLAYING_ITEMS_BY_TAG') . ' ' . JRequest::getVar('tag'); // Set ordering $ordering = $params->get('tagOrdering'); break; case 'search': //Set title $title = JText::_('K2_SEARCH_RESULTS_FOR') . ' ' . JRequest::getVar('searchword'); break; case 'date': // 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); } // Set ordering $ordering = 'rdate'; break; default: //Set featured flag JRequest::setVar('featured', $params->get('catFeaturedItems')); //Set title $title = $params->get('page_title'); // Set ordering $ordering = $params->get('catOrdering'); break; } // Various Feed Validations $title = JFilterOutput::ampReplace($title); // Get items if (!isset($ordering)) { $items = $model->getData(); } else { $items = $model->getData($ordering); } } // Prepare feed items //$model = &$this->getModel('itemlist'); foreach ($items as $item) { $item = $model->prepareFeedItem($item); $item->title = $this->escape($item->title); $item->title = html_entity_decode($item->title); $feedItem = new JFeedItem(); $feedItem->title = $item->title; $feedItem->link = $item->link; $feedItem->description = $item->description; $feedItem->date = $item->created; $feedItem->category = $item->category->name; $feedItem->author = $item->author->name; if ($params->get('feedBogusEmail')) { $feedItem->authorEmail = $params->get('feedBogusEmail'); } else { if ($mainframe->getCfg('feed_email') == 'author') { $feedItem->authorEmail = $item->author->email; } else { $feedItem->authorEmail = $mainframe->getCfg('mailfrom'); } } // Add item $document->addItem($feedItem); } // Set title $document = JFactory::getDocument(); $menus = JSite::getMenu(); $menu = $menus->getActive(); if (is_object($menu)) { $menu_params = class_exists('JParameter') ? new JParameter($menu->params) : new JRegistry($menu->params); if (!$menu_params->get('page_title')) { $params->set('page_title', $title); } } else { $params->set('page_title', $title); } if (K2_JVERSION != '15') { if ($mainframe->getCfg('sitename_pagetitles', 0) == 1) { $title = JText::sprintf('JPAGETITLE', $mainframe->getCfg('sitename'), $params->get('page_title')); $params->set('page_title', $title); } elseif ($mainframe->getCfg('sitename_pagetitles', 0) == 2) { $title = JText::sprintf('JPAGETITLE', $params->get('page_title'), $mainframe->getCfg('sitename')); $params->set('page_title', $title); } } $document->setTitle($params->get('page_title')); // Prevent spammers from using the tag view if ($task == 'tag' && !count($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; } } }
function display($tpl = null) { $mainframe =& JFactory::getApplication(); $params =& K2HelperUtilities::getParams('com_k2'); $model =& $this->getModel('itemlist'); $limitstart = JRequest::getInt('limitstart'); $view = JRequest::getWord('view'); $task = JRequest::getWord('task'); //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); // State Check if (!$category->published || $category->trash) { JError::raiseError(404, JText::_('K2_CATEGORY_NOT_FOUND')); } //Access check $user =& JFactory::getUser(); if (K2_JVERSION == '16') { if (!in_array($category->access, $user->authorisedLevels())) { JError::raiseError(403, JText::_('K2_ALERTNOTAUTH')); } $languageFilter = $mainframe->getLanguageFilter(); $languageTag = JFactory::getLanguage()->getTag(); if ($languageFilter && $category->language != $languageTag && $category->language != '*') { return; } } else { if ($category->access > $user->get('aid', 0)) { JError::raiseError(403, JText::_('K2_ALERTNOTAUTH')); } } // Hide the add new item link if user cannot post in the specific category if (!K2HelperPermissions::canAddItem($id)) { unset($this->addLink); } //Merge params $cparams = new JParameter($category->params); if ($cparams->get('inheritFrom')) { $masterCategory =& JTable::getInstance('K2Category', 'Table'); $masterCategory->load($cparams->get('inheritFrom')); $cparams = new JParameter($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 == '16') { $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->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; // Set ordering if ($params->get('singleCatOrdering')) { $ordering = $params->get('singleCatOrdering'); } else { $ordering = $params->get('catOrdering'); } break; case 'user': //Get user $id = JRequest::getInt('id'); $userObject =& JFactory::getUser($id); //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)); } $this->assignRef('user', $userObject); //Set layout $this->setLayout('user'); //Set limit $limit = $params->get('userItemCount'); //Set title $title = $userObject->name; // Set ordering $ordering = $params->get('userOrdering'); 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'); break; case 'search': //Set layout $this->setLayout('generic'); $tpl = JRequest::getCmd('tpl', null); //Set limit $limit = $params->get('genericItemCount'); //Set title $title = JText::_('K2_SEARCH_RESULTS_FOR') . ' ' . JRequest::getVar('searchword'); break; case 'date': //Set layout $this->setLayout('generic'); //Set limit $limit = $params->get('genericItemCount'); // 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); } // Set ordering $ordering = 'rdate'; 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'); break; } //Set limit for model JRequest::setVar('limit', $limit); if (!isset($ordering)) { $items = $model->getData(); } else { $items = $model->getData($ordering); } //Pagination jimport('joomla.html.pagination'); $total = $model->getTotal(); $pagination = new JPagination($total, $limitstart, $limit); //Prepare items $user =& JFactory::getUser(); $cache =& JFactory::getCache('com_k2_extended'); $model =& $this->getModel('item'); for ($i = 0; $i < sizeof($items); $i++) { //Item group if ($task == "category" || $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 model should use cache for preparing item even if user is logged in 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('K2ModelItem', 'prepareItem'), $items[$i], $view, $task); $items[$i]->hits = $hits; } else { $items[$i] = $model->prepareItem($items[$i], $view, $task); } //Plugins $items[$i] = $model->execPlugins($items[$i], $view, $task); //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)); } //Pathway $pathway =& $mainframe->getPathWay(); $pathway->addItem($title); //Feed link $config =& JFactory::getConfig(); $menu =& JSite::getMenu(); $default = $menu->getDefault(); $active = $menu->getActive(); if ($task == 'tag') { $link = K2HelperRoute::getTagRoute(JRequest::getVar('tag')); } else { $link = ''; } if (!is_null($active) && $active->id == $default->id && $config->getValue('config.sef')) { $link .= '&Itemid=' . $active->id . '&format=feed&limitstart='; } else { $link .= '&format=feed&limitstart='; } $feed = JRoute::_($link); $this->assignRef('feed', $feed); //Assign data if ($task == "category" || $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); //Look for template files in component folders $this->_addPath('template', JPATH_COMPONENT . DS . 'templates'); $this->_addPath('template', JPATH_COMPONENT . 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_COMPONENT . 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')); } $db =& JFactory::getDBO(); $nullDate = $db->getNullDate(); $this->assignRef('nullDate', $nullDate); parent::display($tpl); }
/** * @param int|TableInterface $row * @param bool $htmlspecialchars * @param string $type * @return string */ static public function getUrl( $row, $htmlspecialchars = true, $type = 'article' ) { global $_CB_framework; $plugin = cbconsultationsClass::getPlugin(); if ( is_integer( $row ) ) { $row = new cbconsultationsconsultationTable(); $row->load( (int) $row ); } $category = $row->getCategory(); /** @noinspection PhpIncludeInspection */ require_once ( $_CB_framework->getCfg( 'absolute_path' ) . '/components/com_k2/helpers/route.php' ); $categorySlug = $row->get( 'catid' ) . ( $category->get( 'alias' ) ? ':' . $category->get( 'alias' ) : null ); $articleSlug = $row->get( 'id' ) . ( $row->get( 'alias' ) ? ':' . $row->get( 'alias' ) : null ); switch ( $type ) { case 'section': /** @noinspection PhpUndefinedClassInspection */ $url = K2HelperRoute::getCategoryRoute( $plugin->params->get( 'consultation_section', null ) ); break; case 'category': /** @noinspection PhpUndefinedClassInspection */ $url = K2HelperRoute::getCategoryRoute( $categorySlug ); break; case 'article': default: /** @noinspection PhpUndefinedClassInspection */ $url = K2HelperRoute::getItemRoute( $articleSlug, $categorySlug ); break; } if ( ! stristr( $url, 'Itemid' ) ) { $url = $_CB_framework->getCfg( 'live_site' ) . '/' . $url; } else { $url = JRoute::_( $url, false ); } if ( $url ) { if ( $htmlspecialchars ) { $url = htmlspecialchars( $url ); } } return $url; }
public static function getUsers(&$params) { $mainframe = JFactory::getApplication(); $user = JFactory::getUser(); $aid = (int) $user->get('aid'); $db = JFactory::getDBO(); $jnow = JFactory::getDate(); $now = K2_JVERSION == '15' ? $jnow->toMySQL() : $jnow->toSql(); $nullDate = $db->getNullDate(); $userObjects = array(); if (K2_JVERSION != '15') { $itemAccessCheck = " i.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") "; $categoryAccessCheck = " c.access IN(" . implode(',', $user->getAuthorisedViewLevels()) . ") "; $languageCheck = ''; if ($mainframe->getLanguageFilter()) { $languageTag = JFactory::getLanguage()->getTag(); $languageCheck = " AND c.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ") AND i.language IN (" . $db->Quote($languageTag) . ", " . $db->Quote('*') . ")"; } } else { $itemAccessCheck = " i.access <= {$aid} "; $categoryAccessCheck = " c.access <= {$aid} "; $languageCheck = ''; } if ($params->get('source') == 'specific' && $params->get('userIDs')) { $IDs = array(); if (is_string($params->get('userIDs'))) { $IDs[] = $params->get('userIDs'); } else { $IDs = $params->get('userIDs'); } JArrayHelper::toInteger($IDs); $query = "SELECT users.name,users.email, users.id AS UID, profiles.* FROM #__users AS users\n\t\t\tLEFT JOIN #__k2_users AS profiles ON users.id=profiles.userID\n\t\t\tWHERE users.block=0 AND users.id IN (" . implode(',', $IDs) . ")"; $db->setQuery($query); $userObjects = $db->loadObjectList(); $newUserObjects = array(); foreach ($IDs as $id) { foreach ($userObjects as $uO) { if ($uO->UID == $id) { $newUserObjects[] = $uO; break; } } } $userObjects = $newUserObjects; } else { switch ($params->get('filter', 0)) { case 0: $query = "SELECT users.name,users.email,users.id AS UID, profiles.*"; if ($params->get('ordering') == 'recent') { $query .= ", MAX(i.created) AS counter"; } $query .= " FROM #__users AS users\n\t\t\t\t\tLEFT JOIN #__k2_users AS profiles ON users.id=profiles.userID"; if ($params->get('ordering') == 'recent') { $query .= " LEFT JOIN #__k2_items AS i ON users.id=i.created_by\n\t\t\t\t\t\t\t\tLEFT JOIN #__k2_categories AS c ON i.catid=c.id"; } $query .= " WHERE users.block=0 AND profiles.`group`=" . (int) $params->get('K2UserGroup'); if ($params->get('ordering') == 'recent') { $query .= " AND\n\t\t\t\t\t\ti.published = 1 AND {$itemAccessCheck} AND i.trash = 0 AND c.published = 1 AND {$categoryAccessCheck} AND c.trash = 0\n\t\t\t\t\t\tAND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " )\n\t\t\t\t\t\tAND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )\n\t\t\t\t\t\tAND i.created_by_alias=''"; $query .= $languageCheck; } if ($params->get('ordering') == 'alpha') { $query .= " ORDER BY users.name"; } elseif ($params->get('ordering') == 'random') { $query .= " ORDER BY RAND()"; } elseif ($params->get('ordering') == 'recent') { $query .= " GROUP BY users.id ORDER BY counter DESC"; } break; case 1: $query = "SELECT users.name,users.email,users.id AS UID, profiles.*, COUNT(i.id) AS counter FROM #__users AS users\n\t\t\t\t\tLEFT JOIN #__k2_users AS profiles ON users.id=profiles.userID\n\t\t\t\t\tLEFT JOIN #__k2_items AS i ON users.id=i.created_by\n\t\t\t\t\tLEFT JOIN #__k2_categories AS c ON i.catid=c.id\n\t\t\t\t\tWHERE users.block=0 AND\n\t\t\t\t\ti.published = 1 AND {$itemAccessCheck} AND i.trash = 0 AND c.published = 1 AND {$categoryAccessCheck} AND c.trash = 0\n\t\t\t\t\tAND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " )\n\t\t\t\t\tAND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )\n\t\t\t\t\tAND i.created_by_alias=''\n\t\t\t\t\t{$languageCheck}\n\t\t\t\t\tGROUP BY users.id ORDER BY counter DESC"; break; case 2: $query = "SELECT users.name,users.email,users.id AS UID, profiles.*, MAX(i.hits) AS counter FROM #__users AS users\n\t\t\t\t\tLEFT JOIN #__k2_users AS profiles ON users.id=profiles.userID\n\t\t\t\t\tLEFT JOIN #__k2_items AS i ON users.id=i.created_by\n\t\t\t\t\tLEFT JOIN #__k2_categories AS c ON i.catid=c.id\n\t\t\t\t\tWHERE users.block=0 AND\n\t\t\t\t\ti.published = 1 AND {$itemAccessCheck} AND i.trash = 0 AND c.published = 1 AND {$categoryAccessCheck} AND c.trash = 0\n\t\t\t\t\tAND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " )\n\t\t\t\t\tAND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )\n\t\t\t\t\tAND i.created_by_alias=''\n\t\t\t\t\t{$languageCheck}\n\t\t\t\t\tGROUP BY users.id ORDER BY counter DESC"; break; case 3: $query = "SELECT users.name,users.email,users.id AS UID, profiles.*, COUNT(comment.id) AS counter FROM #__users AS users\n\t\t\t\t\tLEFT JOIN #__k2_users AS profiles ON users.id=profiles.userID\n\t\t\t\t\tLEFT JOIN #__k2_items AS i ON users.id=i.created_by\n\t\t\t\t\tLEFT JOIN #__k2_categories AS c ON i.catid=c.id\n\t\t\t\t\tLEFT JOIN #__k2_comments AS comment ON i.id=comment.itemID\n\t\t\t\t\tWHERE users.block=0 AND\n\t\t\t\t\ti.published = 1 AND {$itemAccessCheck} AND i.trash = 0 AND c.published = 1 AND {$categoryAccessCheck} AND c.trash = 0\n\t\t\t\t\tAND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " )\n\t\t\t\t\tAND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )\n\t\t\t\t\tAND i.created_by_alias=''\n\t\t\t\t\tAND comment.published=1\n\t\t\t\t\t{$languageCheck}\n\t\t\t\t\tGROUP BY users.id ORDER BY counter DESC"; break; } $db->setQuery($query, 0, $params->get('limit', 4)); $userObjects = $db->loadObjectList(); } if (count($userObjects)) { foreach ($userObjects as $userObject) { $userObject->avatar = K2HelperUtilities::getAvatar($userObject->UID, $userObject->email, $params->get('userImageWidth')); $userObject->link = JRoute::_(K2HelperRoute::getUserRoute($userObject->UID)); $userObject->feed = JRoute::_(K2HelperRoute::getUserRoute($userObject->UID) . '&format=feed'); $userObject->url = htmlspecialchars($userObject->url, ENT_QUOTES, 'UTF-8'); if ($params->get('userItemCount')) { $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 AS c ON c.id = i.catid WHERE i.published = 1\n\t\t\t\t\tAND {$itemAccessCheck}\n\t\t\t\t\tAND i.trash = 0\n\t\t\t\t\tAND c.published = 1\n\t\t\t\t\tAND {$categoryAccessCheck}\n\t\t\t\t\tAND c.trash = 0\n\t\t\t\t\tAND ( i.publish_up = " . $db->Quote($nullDate) . " OR i.publish_up <= " . $db->Quote($now) . " )\n\t\t\t\t\tAND ( i.publish_down = " . $db->Quote($nullDate) . " OR i.publish_down >= " . $db->Quote($now) . " )\n\t\t\t\t\tAND i.created_by=" . (int) $userObject->UID . "\n\t\t\t\t\tAND i.created_by_alias=''\n\t\t\t\t\t{$languageCheck}\n\t\t\t\t\tORDER BY i.created DESC"; $db->setQuery($query, 0, $params->get('userItemCount')); $userObject->items = $db->loadObjectList(); if (count($userObject->items)) { foreach ($userObject->items as $item) { $link = K2HelperRoute::getItemRoute($item->id . ':' . urlencode($item->alias), $item->catid . ':' . urlencode($item->categoryalias)); $item->link = urldecode(JRoute::_($link)); $item->categoryLink = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($item->catid . ':' . urlencode($item->categoryalias)))); } } } else { $userObject->items = null; } } } return $userObjects; }
<?php if ($showCategories) { ?> <!-- CONTENT RIGHT OF THE BOX //--> <div class="lof-box-right"> <div class="lof-header"><span><?php echo JTEXT::_('Topic'); ?> </span></div> <div class="lof-subcategories"> <?php foreach ($categories as $cii => $category) { ?> <p><a href="<?php echo urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($category->id . ':' . urlencode($category->alias)))); ?> "><?php echo $category->name; ?> </a></p> <?php if ($cii + 1 >= $maxCatsShowed) { break; } } ?> </div> </div> <!-- ENDCONTENT RIGHT OF THE BOX //--> <?php
function output() { $renderer = new NSP_GK4_Layout_Parts(); // detecting mode - com_content or K2 $k2_mode = false; $vm_mode = false; //check the source if ($this->parent->config["data_source"] == 'k2_categories' || $this->parent->config["data_source"] == 'k2_articles' || $this->parent->config["data_source"] == 'all_k2_articles' || $this->parent->config["data_source"] == 'k2_tags') { if ($this->parent->config['k2_categories'] != -1) { $k2_mode = true; } else { // exception when K2 is not installed $this->parent->content = array("ID" => array(), "alias" => array(), "CID" => array(), "title" => array(), "text" => array(), "date" => array(), "date_publish" => array(), "author" => array(), "cat_name" => array(), "cat_alias" => array(), "hits" => array(), "news_amount" => 0, "rating_sum" => 0, "rating_count" => 0, "plugins" => ''); } } elseif ($this->parent->config["data_source"] == 'vm_categories' || $this->parent->config["data_source"] == 'vm_products') { if ($this->parent->config['vm_categories'] != -1) { $vm_mode = true; } else { // exception when VirtueMart is not installed $this->parent->content = array("ID" => array(), "CID" => array(), "title" => array(), "text" => array(), "date" => array(), "date_publish" => array(), "price" => array(), "price_currency" => array(), "discount_amount" => array(), "discount_is_percent" => array(), "discount_start" => array(), "discount_end" => array(), "tax" => array(), "cat_name" => array(), "manufacturer" => array(), "manufacturer_id" => array(), "product_image" => array(), "news_amount" => 0); } } // tables which will be used in generated content $news_content_tab = array(); $news_title_tab = array(); // Generating content $uri = JURI::getInstance(); // for ($i = 0; $i < count($this->parent->content["ID"]); $i++) { // GENERATING NEWS CONTENT if ($k2_mode == FALSE) { // GENERATING HEADER $news_header = $renderer->header($this->parent->config, $this->parent->content['ID'][$i], $this->parent->content['CID'][$i], $this->parent->content['title'][$i]); // GENERATING IMAGE $news_image = $renderer->image($this->parent->config, $uri, $this->parent->content['ID'][$i], $this->parent->content['IID'][$i], $this->parent->content['CID'][$i], $this->parent->content['text'][$i], $this->parent->content['title'][$i], $this->parent->content['images'][$i]); // GENERATE NEWS INFO $news_date = JHTML::_('date', $this->parent->config['date_publish'] == TRUE ? $this->parent->content['date_publish'][$i] : $this->parent->content['date'][$i], $this->parent->config['date_format']); // GENERATE NEWS CATEGORY $news_category = $this->parent->config['category_link'] == 1 ? '<a href="' . JRoute::_(ContentHelperRoute::getCategoryRoute($this->parent->content['CID'][$i])) . '" >' . $this->parent->content['catname'][$i] . '</a>' : $this->parent->content['catname'][$i]; // GENERATING READMORE $news_readmore = $renderer->readMore($this->parent->config, $this->parent->content['ID'][$i], $this->parent->content['CID'][$i]); // GENERATING TEXT $news_textt = $renderer->text($this->parent->config, $this->parent->content['ID'][$i], $this->parent->content['CID'][$i], $this->parent->content['text'][$i], $news_readmore); } else { // GENERATING HEADER $news_header = $renderer->header_k2($this->parent->config, $this->parent->content['ID'][$i], $this->parent->content['alias'][$i], $this->parent->content['CID'][$i], $this->parent->content['cat_alias'][$i], $this->parent->content['title'][$i]); // GENERATING IMAGE $news_image = $renderer->image_k2($this->parent->config, $uri, $this->parent->content['ID'][$i], $this->parent->content['alias'][$i], $this->parent->content['CID'][$i], $this->parent->content['cat_alias'][$i], $this->parent->content['text'][$i], $this->parent->content['title'][$i]); // GENERATE NEWS INFO $news_date = JHTML::_('date', $this->parent->config['date_publish'] == TRUE ? $this->parent->content['date_publish'][$i] : $this->parent->content['date'][$i], $this->parent->config['date_format']); // GENERATE NEWS CATEGORY $news_category = urldecode(JRoute::_(K2HelperRoute::getCategoryRoute($this->parent->content['CID'][$i]))); $news_readmore = $renderer->readMore_k2($this->parent->config, $this->parent->content['ID'][$i], $this->parent->content['alias'][$i], $this->parent->content['CID'][$i], $this->parent->content['cat_alias'][$i]); // GENERATING TEXT $news_textt = $renderer->text_k2($this->parent->config, $this->parent->content['ID'][$i], $this->parent->content['alias'][$i], $this->parent->content['CID'][$i], $this->parent->content['cat_alias'][$i], $this->parent->content['text'][$i], $news_readmore); } /*else { // GENERATING HEADER $news_header = $renderer->header_vm($this->parent->config, $this->parent->content['ID'][$i], $this->parent->content['CID'][$i], $this->parent->content['title'][$i]); // GENERATING IMAGE $news_image = $renderer->image_vm($this->parent->config, $this->parent->content['ID'][$i], $this->parent->content['CID'][$i], $this->parent->content['product_image'][$i], $this->parent->content['title'][$i]); // GENERATE NEWS INFO $news_date = JHTML::_('date', ($this->parent->config['date_publish'] == TRUE) ? $this->parent->content['date_publish'][$i] : $this->parent->content['date'][$i], $this->parent->config['date_format']); // GENERATE NEWS CATEGORY $news_category = ($this->parent->config['category_link'] == 1) ? '<a href="'.JRoute::_(ContentHelperRoute::getCategoryRoute($this->parent->content['CID'][$i], $this->parent->content['SID'][$i])).'" >'.$this->parent->content['catname'][$i].'</a>' : $this->parent->content['catname'][$i]; // GENERATING READMORE $news_readmore = $renderer->readMore_vm($this->parent->config, $this->parent->content['ID'][$i], $this->parent->content['CID'][$i]); // GENERATING TEXT $news_textt = $renderer->text_vm($this->config, $this->parent->content['ID'][$i], $this->parent->content['CID'][$i], $this->parent->content['text'][$i], $news_readmore); } */ // PARSING PLUGINS if ($this->parent->config['parse_plugins'] == TRUE) { $news_textt = JHTML::_('content.prepare', $news_textt); } // CLEANING PLUGINS if ($this->parent->config['clean_plugins'] == TRUE) { $news_textt = preg_replace("/\\{.+?\\}/", "", $news_textt); } // GENERATE CONTENT FOR TAB $news_title_content = '<div class="nspTitleTab"><div class="nspDate">' . $news_date . '</div><div class="nspTitle">' . $this->parent->content['title'][$i] . '</div></div>'; $news_generated_content = ''; // initialize variable // for ($j = 1; $j < 7; $j++) { if ($this->parent->config['news_image_order'] == $j) { $news_generated_content .= $news_image; } if ($this->parent->config['news_text_order'] == $j) { $news_generated_content .= $news_textt; } } // if ($this->parent->config['news_content_readmore_pos'] != 'after') { $news_generated_content .= $news_readmore; } $news_generated_content = '<div class="nspArtMore unvisible"><div class="nspArtMain">' . $news_generated_content . '</div></div>'; // creating table with news content array_push($news_content_tab, $news_generated_content); array_push($news_title_tab, $news_title_content); } /** GENERATING FINAL XHTML CODE START **/ // create instances of basic Joomla! classes $document = JFactory::getDocument(); $uri = JURI::getInstance(); // add stylesheets to document header if ($this->parent->config["useCSS"] == 1) { $document->addStyleSheet($uri->root() . 'modules/mod_news_pro_gk4/interface/css/style.portal.mode.3.css', 'text/css'); } // init $headData variable $headData = false; // add scripts with automatic mode to document header if ($this->parent->config['useScript'] == 2) { // getting module head section datas unset($headData); $headData = $document->getHeadData(); // generate keys of script section $headData_keys = array_keys($headData["scripts"]); // set variable for false $engine_founded = false; // searching phrase mootools in scripts paths if (array_search($uri->root() . 'modules/mod_news_pro_gk4/interface/scripts/engine.portal_mode_3.js', $headData_keys) > 0) { $engine_founded = true; } // if mootools file doesn't exists in document head section if (!$engine_founded) { // add new script tag connected with mootools from module $headData["scripts"][$uri->root() . 'modules/mod_news_pro_gk4/interface/scripts/engine.portal.mode.3.js'] = "text/javascript"; $document->setHeadData($headData); } } /* if($this->parent->config['k2store_support'] == 1) { // getting module head section datas $headData = $document->getHeadData(); $headData_keys = array_keys($headData["scripts"]); $k2store_founded = false; // searching phrase mootools in scripts paths if(array_search($uri->root().'components/com_k2store/js/k2store.js', $headData_keys) > 0) $k2store_founded = true; // if mootools file doesn't exists in document head section if(!$k2store_founded){ // add new script tag connected with mootools from module $headData["scripts"][$uri->root().'components/com_k2store/js/k2store.js'] = "text/javascript"; $document->setHeadData($headData); } } */ // require JModuleHelper::getLayoutPath('mod_news_pro_gk4', 'content.portal.mode.3'); require JModuleHelper::getLayoutPath('mod_news_pro_gk4', 'default.portal.mode.3'); }