You've already forked joomla_test
first commit
This commit is contained in:
222
modules/mod_k2_users/helper.php
Normal file
222
modules/mod_k2_users/helper.php
Normal file
@ -0,0 +1,222 @@
|
||||
<?php
|
||||
/**
|
||||
* @version $Id: helper.php 1812 2013-01-14 18:45:06Z lefteris.kavadas $
|
||||
* @package K2
|
||||
* @author JoomlaWorks http://www.joomlaworks.net
|
||||
* @copyright Copyright (c) 2006 - 2013 JoomlaWorks Ltd. All rights reserved.
|
||||
* @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
|
||||
// no direct access
|
||||
defined('_JEXEC') or die ;
|
||||
|
||||
require_once (JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'route.php');
|
||||
require_once (JPATH_SITE.DS.'components'.DS.'com_k2'.DS.'helpers'.DS.'utilities.php');
|
||||
|
||||
class modK2UsersHelper
|
||||
{
|
||||
|
||||
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
|
||||
LEFT JOIN #__k2_users AS profiles ON users.id=profiles.userID
|
||||
WHERE 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
|
||||
LEFT 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
|
||||
LEFT 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
|
||||
i.published = 1 AND {$itemAccessCheck} AND i.trash = 0 AND c.published = 1 AND {$categoryAccessCheck} AND c.trash = 0
|
||||
AND ( i.publish_up = ".$db->Quote($nullDate)." OR i.publish_up <= ".$db->Quote($now)." )
|
||||
AND ( i.publish_down = ".$db->Quote($nullDate)." OR i.publish_down >= ".$db->Quote($now)." )
|
||||
AND i.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
|
||||
LEFT JOIN #__k2_users AS profiles ON users.id=profiles.userID
|
||||
LEFT JOIN #__k2_items AS i ON users.id=i.created_by
|
||||
LEFT JOIN #__k2_categories AS c ON i.catid=c.id
|
||||
WHERE users.block=0 AND
|
||||
i.published = 1 AND {$itemAccessCheck} AND i.trash = 0 AND c.published = 1 AND {$categoryAccessCheck} AND c.trash = 0
|
||||
AND ( i.publish_up = ".$db->Quote($nullDate)." OR i.publish_up <= ".$db->Quote($now)." )
|
||||
AND ( i.publish_down = ".$db->Quote($nullDate)." OR i.publish_down >= ".$db->Quote($now)." )
|
||||
AND i.created_by_alias=''
|
||||
{$languageCheck}
|
||||
GROUP 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
|
||||
LEFT JOIN #__k2_users AS profiles ON users.id=profiles.userID
|
||||
LEFT JOIN #__k2_items AS i ON users.id=i.created_by
|
||||
LEFT JOIN #__k2_categories AS c ON i.catid=c.id
|
||||
WHERE users.block=0 AND
|
||||
i.published = 1 AND {$itemAccessCheck} AND i.trash = 0 AND c.published = 1 AND {$categoryAccessCheck} AND c.trash = 0
|
||||
AND ( i.publish_up = ".$db->Quote($nullDate)." OR i.publish_up <= ".$db->Quote($now)." )
|
||||
AND ( i.publish_down = ".$db->Quote($nullDate)." OR i.publish_down >= ".$db->Quote($now)." )
|
||||
AND i.created_by_alias=''
|
||||
{$languageCheck}
|
||||
GROUP 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
|
||||
LEFT JOIN #__k2_users AS profiles ON users.id=profiles.userID
|
||||
LEFT JOIN #__k2_items AS i ON users.id=i.created_by
|
||||
LEFT JOIN #__k2_categories AS c ON i.catid=c.id
|
||||
LEFT JOIN #__k2_comments AS comment ON i.id=comment.itemID
|
||||
WHERE users.block=0 AND
|
||||
i.published = 1 AND {$itemAccessCheck} AND i.trash = 0 AND c.published = 1 AND {$categoryAccessCheck} AND c.trash = 0
|
||||
AND ( i.publish_up = ".$db->Quote($nullDate)." OR i.publish_up <= ".$db->Quote($now)." )
|
||||
AND ( i.publish_down = ".$db->Quote($nullDate)." OR i.publish_down >= ".$db->Quote($now)." )
|
||||
AND i.created_by_alias=''
|
||||
AND comment.published=1
|
||||
{$languageCheck}
|
||||
GROUP 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
|
||||
AND {$itemAccessCheck}
|
||||
AND i.trash = 0
|
||||
AND c.published = 1
|
||||
AND {$categoryAccessCheck}
|
||||
AND c.trash = 0
|
||||
AND ( i.publish_up = ".$db->Quote($nullDate)." OR i.publish_up <= ".$db->Quote($now)." )
|
||||
AND ( i.publish_down = ".$db->Quote($nullDate)." OR i.publish_down >= ".$db->Quote($now)." )
|
||||
AND i.created_by=".(int)$userObject->UID."
|
||||
AND i.created_by_alias=''
|
||||
{$languageCheck}
|
||||
ORDER 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;
|
||||
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user