/modules/mod_tags_popular/helper.php

https://bitbucket.org/pastor399/newcastleunifc · PHP · 70 lines · 45 code · 9 blank · 16 comment · 6 complexity · 650826848e8a8b564c9836b0da174434 MD5 · raw file

  1. <?php
  2. /**
  3. * @package Joomla.Site
  4. * @subpackage mod_tags_popular
  5. *
  6. * @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
  7. * @license GNU General Public License version 2 or later; see LICENSE.txt
  8. */
  9. defined('_JEXEC') or die;
  10. /**
  11. * Helper for mod_tags_popular
  12. *
  13. * @package Joomla.Site
  14. * @subpackage mod_tags_popular
  15. * @since 3.1
  16. */
  17. abstract class ModTagsPopularHelper
  18. {
  19. public static function getList($params)
  20. {
  21. $db = JFactory::getDbo();
  22. $user = JFactory::getUser();
  23. $groups = implode(',', $user->getAuthorisedViewLevels());
  24. $timeframe = $params->get('timeframe', 'alltime');
  25. $maximum = $params->get('maximum', 5);
  26. $query = $db->getQuery(true)
  27. ->select(
  28. array(
  29. 'MAX(' . $db->quoteName('tag_id') . ') AS tag_id',
  30. ' COUNT(*) AS count', 'MAX(t.title) AS title',
  31. 'MAX(' .$db->quoteName('t.access') . ') AS access',
  32. 'MAX(' .$db->quoteName('t.alias') . ') AS alias'
  33. )
  34. )
  35. ->group($db->quoteName(array('tag_id', 'title', 'access', 'alias')))
  36. ->from($db->quoteName('#__contentitem_tag_map'))
  37. ->where($db->quoteName('t.access') . ' IN (' . $groups . ')');
  38. // Only return published tags
  39. $query->where($db->quoteName('t.published') . ' = 1 ');
  40. // Optionally filter on language
  41. $language = JComponentHelper::getParams('com_tags')->get('tag_list_language_filter', 'all');
  42. if ($language != 'all')
  43. {
  44. if ($language == 'current_language')
  45. {
  46. $language = JHelperContent::getCurrentLanguage();
  47. }
  48. $query->where($db->quoteName('t.language') . ' IN (' . $db->quote($language) . ', ' . $db->quote('*') . ')');
  49. }
  50. if ($timeframe != 'alltime')
  51. {
  52. $now = new JDate;
  53. $query->where($db->quoteName('tag_date') . ' > ' . $query->dateAdd($now->toSql('date'), '-1', strtoupper($timeframe)));
  54. }
  55. $query->join('INNER', $db->quoteName('#__tags', 't') . ' ON ' . $db->quoteName('tag_id') . ' = t.id')
  56. ->order('count DESC');
  57. $db->setQuery($query, 0, $maximum);
  58. $results = $db->loadObjectList();
  59. return $results;
  60. }
  61. }