mirror of
https://github.com/e107inc/e107.git
synced 2025-08-06 14:46:56 +02:00
userclass class - Fixed get_users_in_class() and deprecated in favor of new method getUsersInClass()
This commit is contained in:
@@ -1122,41 +1122,102 @@ class user_class
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Alias of getUsersInClass()
|
||||||
|
* @param $classes
|
||||||
|
* @param string $fieldList
|
||||||
|
* @param bool $includeAncestors
|
||||||
|
* @param string $orderBy
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function get_users_in_class($classes, $fieldList = 'user_name, user_loginname', $includeAncestors = FALSE, $orderBy = 'user_id')
|
||||||
|
{
|
||||||
|
return $this->getUsersInClass($classes, $fieldList, $includeAncestors, $orderBy);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return all users in a particular class or set of classes.
|
* Return all users in a particular class or set of classes.
|
||||||
*
|
*
|
||||||
****** Can be verrrrryyyy slow - has to scan the whole user database at present ******
|
* Could potentially be verrrrryyyy slow - has to scan the whole user database at present.
|
||||||
*
|
* @param string $$classes - comma separated list of classes
|
||||||
********* NOT TESTED **********
|
* @param string $fields - comma separated list of fields to be returned. `user_id` is always returned as the key of the array entry
|
||||||
*
|
|
||||||
***** NOT SURE WHETHER THIS IS REALLY A USER OR A USER CLASS FUNCTION *****
|
|
||||||
* @param string $classList - comma separated list of classes
|
|
||||||
* @param string $fieldList - comma separated list of fields to be returned. `user_id` is always returned as the key of the array entry
|
|
||||||
* @param boolean $includeAncestors - if TRUE, also looks for classes in the hierarchy; otherwise checks exactly the classes passed
|
* @param boolean $includeAncestors - if TRUE, also looks for classes in the hierarchy; otherwise checks exactly the classes passed
|
||||||
* @param string $orderBy - optional field name to define the order of entries in the results array
|
* @param string $orderBy - optional field name to define the order of entries in the results array
|
||||||
* @return array indexed by user_id, each element is an array (database row) containing the requested fields
|
* @return array indexed by user_id, each element is an array (database row) containing the requested fields
|
||||||
*/
|
*/
|
||||||
public function get_users_in_class($classList, $fieldList = 'user_name, user_loginname', $includeAncestors = FALSE, $orderBy = 'user_id')
|
public function getUsersInClass($classes, $fields = 'user_name, user_loginname', $includeAncestors = false, $orderBy = 'user_id')
|
||||||
{
|
{
|
||||||
$ret = array();
|
|
||||||
$classList = str_replace(' ','', $classList); // clean up white spaces
|
$classes = str_replace(' ','', $classes); // clean up white spaces
|
||||||
if ($includeAncestors) $classList = $this->get_all_user_classes($classList);
|
|
||||||
$class_regex = '(^|,)('.str_replace(',', '|', $classList).')(,|$)';
|
$classList = explode(",", $classes);
|
||||||
$qry = "SELECT user_id,{$fieldList} FROM `#user` WHERE user_class REGEXP '{$class_regex}' ORDER BY '{$orderBy}'";
|
|
||||||
if ($this->sql_r->db_Select_gen($qry))
|
if(empty($classList))
|
||||||
{
|
{
|
||||||
while ($row = $this->sql_r->db_Fetch())
|
return array();
|
||||||
|
}
|
||||||
|
|
||||||
|
if($includeAncestors === true)
|
||||||
|
{
|
||||||
|
$classList = $this->get_all_user_classes($classes);
|
||||||
|
}
|
||||||
|
|
||||||
|
$classList = array_flip($classList);
|
||||||
|
|
||||||
|
$qry = array();
|
||||||
|
|
||||||
|
if(isset($classList[e_UC_MEMBER]))
|
||||||
|
{
|
||||||
|
$qry[] = "user_ban = 0";
|
||||||
|
unset($classList[e_UC_MEMBER]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isset($classList[e_UC_ADMIN]))
|
||||||
|
{
|
||||||
|
$qry[] = "user_admin = 1";
|
||||||
|
unset($classList[e_UC_ADMIN]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isset($classList[e_UC_MAINADMIN]))
|
||||||
|
{
|
||||||
|
$qry[] = "user_perms = '0' OR user_perms = '0.'";
|
||||||
|
unset($classList[e_UC_MAINADMIN]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!empty($classList))
|
||||||
|
{
|
||||||
|
$class_regex = implode('|', array_flip($classList));
|
||||||
|
$regex = "(^|,)(".e107::getParser()->toDB($class_regex).")(,|$)";
|
||||||
|
$qry[] = "user_class REGEXP '{$regex}' ORDER BY '{$orderBy}'";
|
||||||
|
}
|
||||||
|
|
||||||
|
if(empty($qry))
|
||||||
|
{
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = e107::getDb('sql_r');
|
||||||
|
|
||||||
|
$ret = array();
|
||||||
|
|
||||||
|
$query = "SELECT user_id,{$fields} FROM `#user` WHERE ".implode(" OR ",$qry);
|
||||||
|
|
||||||
|
if ($sql->gen($query))
|
||||||
|
{
|
||||||
|
while ($row = $sql->fetch())
|
||||||
{
|
{
|
||||||
$ret[$row['user_id']] = $row;
|
$ret[$row['user_id']] = $row;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear user class cache
|
* Clear user class cache
|
||||||
* @return none
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function clearCache()
|
public function clearCache()
|
||||||
{
|
{
|
||||||
@@ -1351,21 +1412,29 @@ class user_class_admin extends user_class
|
|||||||
*/
|
*/
|
||||||
protected function rebuild_tree($parent, $rights)
|
protected function rebuild_tree($parent, $rights)
|
||||||
{
|
{
|
||||||
if ($this->class_tree[$parent]['userclass_parent'] == e_UC_NOBODY)
|
|
||||||
|
if($this->class_tree[$parent]['userclass_parent'] == e_UC_NOBODY)
|
||||||
{
|
{
|
||||||
$this->topdown_tree($parent);
|
$this->topdown_tree($parent);
|
||||||
return;
|
return null;
|
||||||
}
|
}
|
||||||
if ($this->class_tree[$parent]['userclass_type'] == UC_TYPE_GROUP)
|
|
||||||
|
if($this->class_tree[$parent]['userclass_type'] == UC_TYPE_GROUP)
|
||||||
{
|
{
|
||||||
return; // Probably just stop here for a group class
|
return null; // Probably just stop here for a group class
|
||||||
}
|
}
|
||||||
$rights[] = $parent;
|
|
||||||
$imp_rights = implode(',',$rights);
|
$rights[] = $parent;
|
||||||
if ($this->class_tree[$parent]['userclass_accum'] != $imp_rights)
|
$imp_rights = implode(',', $rights);
|
||||||
|
|
||||||
|
if($this->class_tree[$parent]['userclass_accum'] != $imp_rights)
|
||||||
{
|
{
|
||||||
$this->class_tree[$parent]['userclass_accum'] = $imp_rights;
|
$this->class_tree[$parent]['userclass_accum'] = $imp_rights;
|
||||||
if (!isset($this->class_tree[$cp]['change_flag'])) $this->class_tree[$parent]['change_flag'] = 'UPDATE';
|
|
||||||
|
if(!isset($this->class_tree[$parent]['change_flag']))
|
||||||
|
{
|
||||||
|
$this->class_tree[$parent]['change_flag'] = 'UPDATE';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user