|
|
|
@ -29,12 +29,20 @@ class UserGroup extends Model |
|
|
|
public $useMultipleUrl = false; |
|
|
|
public $useMultipleUrl = false; |
|
|
|
public $groupType = 0; |
|
|
|
public $groupType = 0; |
|
|
|
public $showGroupTypeSetting = false; |
|
|
|
public $showGroupTypeSetting = false; |
|
|
|
|
|
|
|
public $usergroup_rel_user_table; |
|
|
|
|
|
|
|
public $usergroup_rel_course_table; |
|
|
|
|
|
|
|
public $usergroup_rel_session_table; |
|
|
|
|
|
|
|
public $access_url_rel_usergroup; |
|
|
|
|
|
|
|
public $access_url_rel_user; |
|
|
|
|
|
|
|
public $table_course; |
|
|
|
|
|
|
|
public $table_user; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Set ups DB tables. |
|
|
|
* Set ups DB tables. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function __construct() |
|
|
|
public function __construct() |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
parent::__construct(); |
|
|
|
$this->table = Database::get_main_table(TABLE_USERGROUP); |
|
|
|
$this->table = Database::get_main_table(TABLE_USERGROUP); |
|
|
|
$this->usergroup_rel_user_table = Database::get_main_table(TABLE_USERGROUP_REL_USER); |
|
|
|
$this->usergroup_rel_user_table = Database::get_main_table(TABLE_USERGROUP_REL_USER); |
|
|
|
$this->usergroup_rel_course_table = Database::get_main_table(TABLE_USERGROUP_REL_COURSE); |
|
|
|
$this->usergroup_rel_course_table = Database::get_main_table(TABLE_USERGROUP_REL_COURSE); |
|
|
|
@ -62,7 +70,23 @@ class UserGroup extends Model |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function getTotalCount() |
|
|
|
public function getTotalCount() |
|
|
|
{ |
|
|
|
{ |
|
|
|
$row = Database::select('count(*) as count', $this->table, [], 'first'); |
|
|
|
$options = []; |
|
|
|
|
|
|
|
$from = $this->table; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
|
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
|
|
|
|
$options = [ |
|
|
|
|
|
|
|
'where' => [ |
|
|
|
|
|
|
|
'access_url_id = ?' => [ |
|
|
|
|
|
|
|
$urlId, |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
$from = " $this->table u |
|
|
|
|
|
|
|
INNER JOIN $this->access_url_rel_usergroup a |
|
|
|
|
|
|
|
ON (u.id = a.usergroup_id) "; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
$row = Database::select('count(*) as count', $from, $options, 'first'); |
|
|
|
|
|
|
|
|
|
|
|
return $row['count']; |
|
|
|
return $row['count']; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -77,22 +101,21 @@ class UserGroup extends Model |
|
|
|
{ |
|
|
|
{ |
|
|
|
$id = (int) $id; |
|
|
|
$id = (int) $id; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$select = ' u.* '; |
|
|
|
if ($getCount) { |
|
|
|
if ($getCount) { |
|
|
|
$select = 'COUNT(u.id) count '; |
|
|
|
$select = 'COUNT(u.id) count '; |
|
|
|
} else { |
|
|
|
|
|
|
|
$select = ' u.* '; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ($this->useMultipleUrl) { |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$sql = "SELECT $select |
|
|
|
$sql = "SELECT $select |
|
|
|
FROM ".$this->usergroup_rel_user_table." u |
|
|
|
FROM $this->usergroup_rel_user_table u |
|
|
|
INNER JOIN ".$this->access_url_rel_user." a |
|
|
|
INNER JOIN $this->access_url_rel_user a |
|
|
|
ON (u.user_id = a.user_id) |
|
|
|
ON (u.user_id = a.user_id) |
|
|
|
WHERE u.usergroup_id = $id AND access_url_id = $urlId "; |
|
|
|
WHERE u.usergroup_id = $id AND access_url_id = $urlId "; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$sql = "SELECT $select |
|
|
|
$sql = "SELECT $select |
|
|
|
FROM ".$this->usergroup_rel_user_table." u |
|
|
|
FROM $this->usergroup_rel_user_table u |
|
|
|
WHERE u.usergroup_id = $id"; |
|
|
|
WHERE u.usergroup_id = $id"; |
|
|
|
} |
|
|
|
} |
|
|
|
$result = Database::query($sql); |
|
|
|
$result = Database::query($sql); |
|
|
|
@ -171,6 +194,8 @@ class UserGroup extends Model |
|
|
|
public function get_count($type = -1) |
|
|
|
public function get_count($type = -1) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$authorCondition = ''; |
|
|
|
$authorCondition = ''; |
|
|
|
|
|
|
|
$type = (int) $type; |
|
|
|
|
|
|
|
|
|
|
|
if ($this->allowTeachers()) { |
|
|
|
if ($this->allowTeachers()) { |
|
|
|
if (!api_is_platform_admin()) { |
|
|
|
if (!api_is_platform_admin()) { |
|
|
|
$userId = api_get_user_id(); |
|
|
|
$userId = api_get_user_id(); |
|
|
|
@ -178,10 +203,11 @@ class UserGroup extends Model |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ($this->useMultipleUrl) { |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$sql = "SELECT count(u.id) as count FROM ".$this->table." u |
|
|
|
$sql = "SELECT count(u.id) as count |
|
|
|
INNER JOIN ".$this->access_url_rel_usergroup." a |
|
|
|
FROM $this->table u |
|
|
|
|
|
|
|
INNER JOIN $this->access_url_rel_usergroup a |
|
|
|
ON (u.id = a.usergroup_id) |
|
|
|
ON (u.id = a.usergroup_id) |
|
|
|
WHERE access_url_id = $urlId $authorCondition |
|
|
|
WHERE access_url_id = $urlId $authorCondition |
|
|
|
"; |
|
|
|
"; |
|
|
|
@ -197,10 +223,8 @@ class UserGroup extends Model |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$typeCondition = ''; |
|
|
|
$typeCondition = ''; |
|
|
|
if ($type != -1) { |
|
|
|
if ($type != -1) { |
|
|
|
$type = (int) $type; |
|
|
|
|
|
|
|
$typeCondition = " AND group_type = $type "; |
|
|
|
$typeCondition = " AND group_type = $type "; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$sql = "SELECT count(a.id) as count |
|
|
|
$sql = "SELECT count(a.id) as count |
|
|
|
FROM {$this->table} a |
|
|
|
FROM {$this->table} a |
|
|
|
WHERE 1 =1 |
|
|
|
WHERE 1 =1 |
|
|
|
@ -224,7 +248,7 @@ class UserGroup extends Model |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function getUserGroupByCourseWithDataCount($course_id, $type = -1) |
|
|
|
public function getUserGroupByCourseWithDataCount($course_id, $type = -1) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if ($this->useMultipleUrl) { |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
$course_id = (int) $course_id; |
|
|
|
$course_id = (int) $course_id; |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$sql = "SELECT count(c.usergroup_id) as count |
|
|
|
$sql = "SELECT count(c.usergroup_id) as count |
|
|
|
@ -271,7 +295,7 @@ class UserGroup extends Model |
|
|
|
* |
|
|
|
* |
|
|
|
* @return mixed |
|
|
|
* @return mixed |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function get_id_by_name($name) |
|
|
|
public function getIdByName($name) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$row = Database::select( |
|
|
|
$row = Database::select( |
|
|
|
'id', |
|
|
|
'id', |
|
|
|
@ -350,7 +374,7 @@ class UserGroup extends Model |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function get_courses_by_usergroup($id, $loadCourseData = false) |
|
|
|
public function get_courses_by_usergroup($id, $loadCourseData = false) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if ($this->useMultipleUrl) { |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$from = $this->usergroup_rel_course_table." c |
|
|
|
$from = $this->usergroup_rel_course_table." c |
|
|
|
INNER JOIN {$this->access_url_rel_usergroup} a |
|
|
|
INNER JOIN {$this->access_url_rel_usergroup} a |
|
|
|
@ -360,30 +384,18 @@ class UserGroup extends Model |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$whereConditionSql = 'usergroup_id = ?'; |
|
|
|
$whereConditionSql = 'usergroup_id = ?'; |
|
|
|
$whereConditionValues = [$id]; |
|
|
|
$whereConditionValues = [$id]; |
|
|
|
$from = $this->usergroup_rel_course_table." c "; |
|
|
|
$from = $this->usergroup_rel_course_table.' c '; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ($loadCourseData) { |
|
|
|
if ($loadCourseData) { |
|
|
|
$from .= " INNER JOIN {$this->table_course} as course ON c.course_id = course.id"; |
|
|
|
$from .= " INNER JOIN {$this->table_course} as course ON c.course_id = course.id"; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
|
|
if (!empty($conditionsLike)) { |
|
|
|
|
|
|
|
$from .= " INNER JOIN {$this->table_course} as course ON c.course_id = course.id"; |
|
|
|
|
|
|
|
$conditionSql = []; |
|
|
|
|
|
|
|
foreach ($conditionsLike as $field => $value) { |
|
|
|
|
|
|
|
$conditionSql[] = $field.' LIKE %?%'; |
|
|
|
|
|
|
|
$whereConditionValues[] = $value; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
$whereConditionSql .= ' AND '.implode(' AND ', $conditionSql); |
|
|
|
|
|
|
|
}*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$where = ['where' => [$whereConditionSql => $whereConditionValues]]; |
|
|
|
$where = ['where' => [$whereConditionSql => $whereConditionValues]]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$select = 'course_id'; |
|
|
|
if ($loadCourseData) { |
|
|
|
if ($loadCourseData) { |
|
|
|
$select = 'course.*'; |
|
|
|
$select = 'course.*'; |
|
|
|
} else { |
|
|
|
|
|
|
|
$select = 'course_id'; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$results = Database::select( |
|
|
|
$results = Database::select( |
|
|
|
@ -414,9 +426,10 @@ class UserGroup extends Model |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function getUserGroupInCourse($options = [], $type = -1) |
|
|
|
public function getUserGroupInCourse($options = [], $type = -1) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if ($this->useMultipleUrl) { |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
|
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$sql = "SELECT u.* FROM {$this->usergroup_rel_course_table} usergroup |
|
|
|
$sql = "SELECT u.* FROM {$this->usergroup_rel_course_table} usergroup |
|
|
|
INNER JOIN {$this->table} u |
|
|
|
INNER JOIN {$this->table} u |
|
|
|
ON (u.id = usergroup.usergroup_id) |
|
|
|
ON (u.id = usergroup.usergroup_id) |
|
|
|
INNER JOIN {$this->table_course} c |
|
|
|
INNER JOIN {$this->table_course} c |
|
|
|
ON (usergroup.course_id = c.id) |
|
|
|
ON (usergroup.course_id = c.id) |
|
|
|
@ -448,7 +461,7 @@ class UserGroup extends Model |
|
|
|
|
|
|
|
|
|
|
|
$sql .= $conditions; |
|
|
|
$sql .= $conditions; |
|
|
|
|
|
|
|
|
|
|
|
if ($this->useMultipleUrl) { |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$sql .= " AND access_url_id = $urlId "; |
|
|
|
$sql .= " AND access_url_id = $urlId "; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -457,7 +470,7 @@ class UserGroup extends Model |
|
|
|
$limits = explode(',', $options['LIMIT']); |
|
|
|
$limits = explode(',', $options['LIMIT']); |
|
|
|
$limits = array_map('intval', $limits); |
|
|
|
$limits = array_map('intval', $limits); |
|
|
|
if (isset($limits[0]) && isset($limits[1])) { |
|
|
|
if (isset($limits[0]) && isset($limits[1])) { |
|
|
|
$sql .= " LIMIT ".$limits[0].', '.$limits[1]; |
|
|
|
$sql .= ' LIMIT '.$limits[0].', '.$limits[1]; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -491,8 +504,7 @@ class UserGroup extends Model |
|
|
|
$typeCondition = " AND group_type = $type "; |
|
|
|
$typeCondition = " AND group_type = $type "; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ($this->useMultipleUrl) { |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
|
|
|
|
$sql = "SELECT DISTINCT u.* |
|
|
|
$sql = "SELECT DISTINCT u.* |
|
|
|
FROM {$this->table} u |
|
|
|
FROM {$this->table} u |
|
|
|
INNER JOIN {$this->access_url_rel_usergroup} a |
|
|
|
INNER JOIN {$this->access_url_rel_usergroup} a |
|
|
|
@ -517,7 +529,8 @@ class UserGroup extends Model |
|
|
|
|
|
|
|
|
|
|
|
$sql .= $conditions; |
|
|
|
$sql .= $conditions; |
|
|
|
|
|
|
|
|
|
|
|
if ($this->useMultipleUrl) { |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
|
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$sql .= " AND access_url_id = $urlId"; |
|
|
|
$sql .= " AND access_url_id = $urlId"; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -525,7 +538,7 @@ class UserGroup extends Model |
|
|
|
$limits = explode(',', $options['LIMIT']); |
|
|
|
$limits = explode(',', $options['LIMIT']); |
|
|
|
$limits = array_map('intval', $limits); |
|
|
|
$limits = array_map('intval', $limits); |
|
|
|
if (isset($limits[0]) && isset($limits[1])) { |
|
|
|
if (isset($limits[0]) && isset($limits[1])) { |
|
|
|
$sql .= " LIMIT ".$limits[0].', '.$limits[1]; |
|
|
|
$sql .= ' LIMIT '.$limits[0].', '.$limits[1]; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -537,12 +550,12 @@ class UserGroup extends Model |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* @param int $course_id |
|
|
|
* @param int $course_id |
|
|
|
* |
|
|
|
* @deprecated ? |
|
|
|
* @return array |
|
|
|
* @return array |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function get_usergroup_by_course($course_id) |
|
|
|
public function get_usergroup_by_course($course_id) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if ($this->useMultipleUrl) { |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$options = [ |
|
|
|
$options = [ |
|
|
|
'where' => [ |
|
|
|
'where' => [ |
|
|
|
@ -552,9 +565,9 @@ class UserGroup extends Model |
|
|
|
], |
|
|
|
], |
|
|
|
], |
|
|
|
], |
|
|
|
]; |
|
|
|
]; |
|
|
|
$from = $this->usergroup_rel_course_table." as c |
|
|
|
$from = " $this->usergroup_rel_course_table as c |
|
|
|
INNER JOIN ".$this->access_url_rel_usergroup." a |
|
|
|
INNER JOIN $this->access_url_rel_usergroup a |
|
|
|
ON c.usergroup_id = a.usergroup_id"; |
|
|
|
ON c.usergroup_id = a.usergroup_id "; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$options = ['where' => ['c.course_id = ?' => $course_id]]; |
|
|
|
$options = ['where' => ['c.course_id = ?' => $course_id]]; |
|
|
|
$from = $this->usergroup_rel_course_table." c"; |
|
|
|
$from = $this->usergroup_rel_course_table." c"; |
|
|
|
@ -595,7 +608,7 @@ class UserGroup extends Model |
|
|
|
/** |
|
|
|
/** |
|
|
|
* Gets a list of session ids by user group. |
|
|
|
* Gets a list of session ids by user group. |
|
|
|
* |
|
|
|
* |
|
|
|
* @param int $id user group id |
|
|
|
* @param int $id group id |
|
|
|
* |
|
|
|
* |
|
|
|
* @return array |
|
|
|
* @return array |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@ -638,9 +651,9 @@ class UserGroup extends Model |
|
|
|
$relationConditionArray[] = " relation_type = $relation "; |
|
|
|
$relationConditionArray[] = " relation_type = $relation "; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
$relationCondition = " AND ( "; |
|
|
|
$relationCondition = ' AND ( '; |
|
|
|
$relationCondition .= implode('OR', $relationConditionArray); |
|
|
|
$relationCondition .= implode('OR', $relationConditionArray); |
|
|
|
$relationCondition .= " ) "; |
|
|
|
$relationCondition .= ' ) '; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (empty($id)) { |
|
|
|
if (empty($id)) { |
|
|
|
@ -709,7 +722,7 @@ class UserGroup extends Model |
|
|
|
public function getUserGroupListByUser($userId, $filterByType = null) |
|
|
|
public function getUserGroupListByUser($userId, $filterByType = null) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$userId = (int) $userId; |
|
|
|
$userId = (int) $userId; |
|
|
|
if ($this->useMultipleUrl) { |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$from = $this->usergroup_rel_user_table." u |
|
|
|
$from = $this->usergroup_rel_user_table." u |
|
|
|
INNER JOIN {$this->access_url_rel_usergroup} a |
|
|
|
INNER JOIN {$this->access_url_rel_usergroup} a |
|
|
|
@ -755,10 +768,11 @@ class UserGroup extends Model |
|
|
|
public function get_usergroup_by_user($userId) |
|
|
|
public function get_usergroup_by_user($userId) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$userId = (int) $userId; |
|
|
|
$userId = (int) $userId; |
|
|
|
if ($this->useMultipleUrl) { |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$from = $this->usergroup_rel_user_table." u |
|
|
|
$from = $this->usergroup_rel_user_table." u |
|
|
|
INNER JOIN {$this->access_url_rel_usergroup} a ON (a.usergroup_id = u.usergroup_id)"; |
|
|
|
INNER JOIN {$this->access_url_rel_usergroup} a |
|
|
|
|
|
|
|
ON (a.usergroup_id = u.usergroup_id) "; |
|
|
|
$where = ['where' => ['user_id = ? AND access_url_id = ? ' => [$userId, $urlId]]]; |
|
|
|
$where = ['where' => ['user_id = ? AND access_url_id = ? ' => [$userId, $urlId]]]; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$from = $this->usergroup_rel_user_table.' u '; |
|
|
|
$from = $this->usergroup_rel_user_table.' u '; |
|
|
|
@ -790,8 +804,8 @@ class UserGroup extends Model |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function subscribe_sessions_to_usergroup($usergroup_id, $list, $deleteCurrentSessions = true) |
|
|
|
public function subscribe_sessions_to_usergroup($usergroup_id, $list, $deleteCurrentSessions = true) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$current_list = self::get_sessions_by_usergroup($usergroup_id); |
|
|
|
$current_list = $this->get_sessions_by_usergroup($usergroup_id); |
|
|
|
$user_list = self::get_users_by_usergroup($usergroup_id); |
|
|
|
$user_list = $this->get_users_by_usergroup($usergroup_id); |
|
|
|
|
|
|
|
|
|
|
|
$delete_items = $new_items = []; |
|
|
|
$delete_items = $new_items = []; |
|
|
|
if (!empty($list)) { |
|
|
|
if (!empty($list)) { |
|
|
|
@ -853,8 +867,8 @@ class UserGroup extends Model |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function subscribe_courses_to_usergroup($usergroup_id, $list, $delete_groups = true) |
|
|
|
public function subscribe_courses_to_usergroup($usergroup_id, $list, $delete_groups = true) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$current_list = self::get_courses_by_usergroup($usergroup_id); |
|
|
|
$current_list = $this->get_courses_by_usergroup($usergroup_id); |
|
|
|
$user_list = self::get_users_by_usergroup($usergroup_id); |
|
|
|
$user_list = $this->get_users_by_usergroup($usergroup_id); |
|
|
|
|
|
|
|
|
|
|
|
$delete_items = $new_items = []; |
|
|
|
$delete_items = $new_items = []; |
|
|
|
if (!empty($list)) { |
|
|
|
if (!empty($list)) { |
|
|
|
@ -874,7 +888,7 @@ class UserGroup extends Model |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if ($delete_groups) { |
|
|
|
if ($delete_groups) { |
|
|
|
self::unsubscribe_courses_from_usergroup($usergroup_id, $delete_items); |
|
|
|
$this->unsubscribe_courses_from_usergroup($usergroup_id, $delete_items); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Adding new relationships |
|
|
|
// Adding new relationships |
|
|
|
@ -911,7 +925,7 @@ class UserGroup extends Model |
|
|
|
{ |
|
|
|
{ |
|
|
|
// Deleting items. |
|
|
|
// Deleting items. |
|
|
|
if (!empty($delete_items)) { |
|
|
|
if (!empty($delete_items)) { |
|
|
|
$user_list = self::get_users_by_usergroup($usergroup_id); |
|
|
|
$user_list = $this->get_users_by_usergroup($usergroup_id); |
|
|
|
|
|
|
|
|
|
|
|
foreach ($delete_items as $course_id) { |
|
|
|
foreach ($delete_items as $course_id) { |
|
|
|
$course_info = api_get_course_info_by_id($course_id); |
|
|
|
$course_info = api_get_course_info_by_id($course_id); |
|
|
|
@ -953,9 +967,9 @@ class UserGroup extends Model |
|
|
|
$delete_users_not_present_in_list = true, |
|
|
|
$delete_users_not_present_in_list = true, |
|
|
|
$relationType = 0 |
|
|
|
$relationType = 0 |
|
|
|
) { |
|
|
|
) { |
|
|
|
$current_list = self::get_users_by_usergroup($usergroup_id); |
|
|
|
$current_list = $this->get_users_by_usergroup($usergroup_id); |
|
|
|
$course_list = self::get_courses_by_usergroup($usergroup_id); |
|
|
|
$course_list = $this->get_courses_by_usergroup($usergroup_id); |
|
|
|
$session_list = self::get_sessions_by_usergroup($usergroup_id); |
|
|
|
$session_list = $this->get_sessions_by_usergroup($usergroup_id); |
|
|
|
$session_list = array_filter($session_list); |
|
|
|
$session_list = array_filter($session_list); |
|
|
|
$relationType = (int) $relationType; |
|
|
|
$relationType = (int) $relationType; |
|
|
|
|
|
|
|
|
|
|
|
@ -1055,7 +1069,7 @@ class UserGroup extends Model |
|
|
|
public function usergroup_exists($name) |
|
|
|
public function usergroup_exists($name) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$name = Database::escape_string($name); |
|
|
|
$name = Database::escape_string($name); |
|
|
|
if ($this->useMultipleUrl) { |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$sql = "SELECT * FROM $this->table u |
|
|
|
$sql = "SELECT * FROM $this->table u |
|
|
|
INNER JOIN {$this->access_url_rel_usergroup} a |
|
|
|
INNER JOIN {$this->access_url_rel_usergroup} a |
|
|
|
@ -1092,9 +1106,11 @@ class UserGroup extends Model |
|
|
|
|
|
|
|
|
|
|
|
$start = (int) $start; |
|
|
|
$start = (int) $start; |
|
|
|
$limit = (int) $limit; |
|
|
|
$limit = (int) $limit; |
|
|
|
if ($this->useMultipleUrl) { |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$from = $this->table." u INNER JOIN {$this->access_url_rel_usergroup} a ON (u.id = a.usergroup_id)"; |
|
|
|
$from = $this->table." u |
|
|
|
|
|
|
|
INNER JOIN {$this->access_url_rel_usergroup} a |
|
|
|
|
|
|
|
ON (u.id = a.usergroup_id)"; |
|
|
|
$where = [' access_url_id = ?' => $urlId]; |
|
|
|
$where = [' access_url_id = ?' => $urlId]; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$from = $this->table.' u '; |
|
|
|
$from = $this->table.' u '; |
|
|
|
@ -1166,9 +1182,10 @@ class UserGroup extends Model |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function getDataToExport($options = []) |
|
|
|
public function getDataToExport($options = []) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if ($this->useMultipleUrl) { |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
$from = $this->table." u INNER JOIN {$this->access_url_rel_usergroup} a |
|
|
|
$from = $this->table." u |
|
|
|
|
|
|
|
INNER JOIN {$this->access_url_rel_usergroup} a |
|
|
|
ON (u.id = a.usergroup_id)"; |
|
|
|
ON (u.id = a.usergroup_id)"; |
|
|
|
$options = ['where' => ['access_url_id = ? ' => $urlId]]; |
|
|
|
$options = ['where' => ['access_url_id = ? ' => $urlId]]; |
|
|
|
if ($this->allowTeachers()) { |
|
|
|
if ($this->allowTeachers()) { |
|
|
|
@ -1204,18 +1221,38 @@ class UserGroup extends Model |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* @param string $firstLetter |
|
|
|
* @param string $firstLetter |
|
|
|
|
|
|
|
* @param int $limit |
|
|
|
* |
|
|
|
* |
|
|
|
* @return array |
|
|
|
* @return array |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function filterByFirstLetter($firstLetter) |
|
|
|
public function filterByFirstLetter($firstLetter, $limit = 0) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$firstLetter = Database::escape_string($firstLetter); |
|
|
|
$firstLetter = Database::escape_string($firstLetter); |
|
|
|
$sql = "SELECT id, name FROM $this->table |
|
|
|
$limit = (int) $limit; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$sql = ' SELECT g.id, name '; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$urlCondition = ''; |
|
|
|
|
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
|
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
|
|
|
|
$sql .= " FROM $this->table g |
|
|
|
|
|
|
|
INNER JOIN $this->access_url_rel_usergroup a |
|
|
|
|
|
|
|
ON (g.id = a.usergroup_id) "; |
|
|
|
|
|
|
|
$urlCondition = " AND access_url_id = $urlId "; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
$sql = " FROM $this->table g "; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
$sql .= " |
|
|
|
WHERE |
|
|
|
WHERE |
|
|
|
name LIKE '".$firstLetter."%' OR |
|
|
|
name LIKE '".$firstLetter."%' OR |
|
|
|
name LIKE '".api_strtolower($firstLetter)."%' |
|
|
|
name LIKE '".api_strtolower($firstLetter)."%' |
|
|
|
|
|
|
|
$urlCondition |
|
|
|
ORDER BY name DESC "; |
|
|
|
ORDER BY name DESC "; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!empty($limit)) { |
|
|
|
|
|
|
|
$sql .= " LIMIT $limit "; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$result = Database::query($sql); |
|
|
|
$result = Database::query($sql); |
|
|
|
|
|
|
|
|
|
|
|
return Database::store_result($result); |
|
|
|
return Database::store_result($result); |
|
|
|
@ -1237,7 +1274,19 @@ class UserGroup extends Model |
|
|
|
$list = array_map('intval', $list); |
|
|
|
$list = array_map('intval', $list); |
|
|
|
$listToString = implode("','", $list); |
|
|
|
$listToString = implode("','", $list); |
|
|
|
|
|
|
|
|
|
|
|
$sql = "SELECT * FROM {$this->table} WHERE id NOT IN ('$listToString')"; |
|
|
|
$sql = 'SELECT * '; |
|
|
|
|
|
|
|
$urlCondition = ''; |
|
|
|
|
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
|
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
|
|
|
|
$sql .= " FROM $this->table g |
|
|
|
|
|
|
|
INNER JOIN $this->access_url_rel_usergroup a |
|
|
|
|
|
|
|
ON (g.id = a.usergroup_id)"; |
|
|
|
|
|
|
|
$urlCondition = " AND access_url_id = $urlId "; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
$sql = " FROM $this->table g "; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$sql .= " WHERE g.id NOT IN ('$listToString') $urlCondition "; |
|
|
|
$result = Database::query($sql); |
|
|
|
$result = Database::query($sql); |
|
|
|
|
|
|
|
|
|
|
|
return Database::store_result($result, 'ASSOC'); |
|
|
|
return Database::store_result($result, 'ASSOC'); |
|
|
|
@ -1262,7 +1311,7 @@ class UserGroup extends Model |
|
|
|
} |
|
|
|
} |
|
|
|
$id = parent::save($params, $show_query); |
|
|
|
$id = parent::save($params, $show_query); |
|
|
|
if ($id) { |
|
|
|
if ($id) { |
|
|
|
if ($this->useMultipleUrl) { |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
$this->subscribeToUrl($id, api_get_current_access_url_id()); |
|
|
|
$this->subscribeToUrl($id, api_get_current_access_url_id()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -1343,13 +1392,13 @@ class UserGroup extends Model |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* @param $group_id |
|
|
|
* @param int $groupId |
|
|
|
* |
|
|
|
* |
|
|
|
* @return string |
|
|
|
* @return string |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function delete_group_picture($group_id) |
|
|
|
public function delete_group_picture($groupId) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return self::update_group_picture($group_id); |
|
|
|
return $this->update_group_picture($groupId); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -1371,7 +1420,6 @@ class UserGroup extends Model |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function update_group_picture($group_id, $file = null, $source_file = null) |
|
|
|
public function update_group_picture($group_id, $file = null, $source_file = null) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// Validation 1. |
|
|
|
|
|
|
|
$group_id = (int) $group_id; |
|
|
|
$group_id = (int) $group_id; |
|
|
|
|
|
|
|
|
|
|
|
if (empty($group_id)) { |
|
|
|
if (empty($group_id)) { |
|
|
|
@ -1383,7 +1431,7 @@ class UserGroup extends Model |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// User-reserved directory where photos have to be placed. |
|
|
|
// User-reserved directory where photos have to be placed. |
|
|
|
$path_info = self::get_group_picture_path_by_id($group_id, 'system', true); |
|
|
|
$path_info = $this->get_group_picture_path_by_id($group_id, 'system', true); |
|
|
|
|
|
|
|
|
|
|
|
$path = $path_info['dir']; |
|
|
|
$path = $path_info['dir']; |
|
|
|
|
|
|
|
|
|
|
|
@ -1501,7 +1549,7 @@ class UserGroup extends Model |
|
|
|
public function delete($id) |
|
|
|
public function delete($id) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$id = (int) $id; |
|
|
|
$id = (int) $id; |
|
|
|
if ($this->useMultipleUrl) { |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
$this->unsubscribeToUrl($id, api_get_current_access_url_id()); |
|
|
|
$this->unsubscribeToUrl($id, api_get_current_access_url_id()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -1568,7 +1616,7 @@ class UserGroup extends Model |
|
|
|
$charset = api_get_system_encoding(); |
|
|
|
$charset = api_get_system_encoding(); |
|
|
|
$needle = api_convert_encoding($needle, $charset, 'utf-8'); |
|
|
|
$needle = api_convert_encoding($needle, $charset, 'utf-8'); |
|
|
|
$needle = Database::escape_string($needle); |
|
|
|
$needle = Database::escape_string($needle); |
|
|
|
// search courses where username or firstname or lastname begins likes $needle |
|
|
|
|
|
|
|
$sql = 'SELECT id, name |
|
|
|
$sql = 'SELECT id, name |
|
|
|
FROM '.Database::get_main_table(TABLE_USERGROUP).' u |
|
|
|
FROM '.Database::get_main_table(TABLE_USERGROUP).' u |
|
|
|
WHERE name LIKE "'.$needle.'%" |
|
|
|
WHERE name LIKE "'.$needle.'%" |
|
|
|
@ -1602,8 +1650,8 @@ class UserGroup extends Model |
|
|
|
public function getUserListByUserGroup($id) |
|
|
|
public function getUserListByUserGroup($id) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$id = (int) $id; |
|
|
|
$id = (int) $id; |
|
|
|
$sql = "SELECT u.* FROM ".$this->table_user." u |
|
|
|
$sql = "SELECT u.* FROM $this->table_user u |
|
|
|
INNER JOIN ".$this->usergroup_rel_user_table." c |
|
|
|
INNER JOIN $this->usergroup_rel_user_table c |
|
|
|
ON c.user_id = u.id |
|
|
|
ON c.user_id = u.id |
|
|
|
WHERE c.usergroup_id = $id" |
|
|
|
WHERE c.usergroup_id = $id" |
|
|
|
; |
|
|
|
; |
|
|
|
@ -1619,6 +1667,7 @@ class UserGroup extends Model |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function setForm($form, $type = 'add', $data = []) |
|
|
|
public function setForm($form, $type = 'add', $data = []) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
$header = ''; |
|
|
|
switch ($type) { |
|
|
|
switch ($type) { |
|
|
|
case 'add': |
|
|
|
case 'add': |
|
|
|
$header = get_lang('Add'); |
|
|
|
$header = get_lang('Add'); |
|
|
|
@ -1628,9 +1677,9 @@ class UserGroup extends Model |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$form->addElement('header', $header); |
|
|
|
$form->addHeader($header); |
|
|
|
|
|
|
|
|
|
|
|
//Name |
|
|
|
// Name |
|
|
|
$form->addElement('text', 'name', get_lang('Name'), ['maxlength' => 255]); |
|
|
|
$form->addElement('text', 'name', get_lang('Name'), ['maxlength' => 255]); |
|
|
|
$form->applyFilter('name', 'trim'); |
|
|
|
$form->applyFilter('name', 'trim'); |
|
|
|
|
|
|
|
|
|
|
|
@ -1690,7 +1739,7 @@ class UserGroup extends Model |
|
|
|
* @param string $id group id |
|
|
|
* @param string $id group id |
|
|
|
* @param string picture group name |
|
|
|
* @param string picture group name |
|
|
|
* @param string height |
|
|
|
* @param string height |
|
|
|
* @param string picture size it can be small_, medium_ or big_ |
|
|
|
* @param string $size_picture picture size it can be small_, medium_ or big_ |
|
|
|
* @param string style css |
|
|
|
* @param string style css |
|
|
|
* |
|
|
|
* |
|
|
|
* @return array with the file and the style of an image i.e $array['file'] $array['style'] |
|
|
|
* @return array with the file and the style of an image i.e $array['file'] $array['style'] |
|
|
|
@ -1902,7 +1951,7 @@ class UserGroup extends Model |
|
|
|
GROUP_USER_PERMISSION_READER, |
|
|
|
GROUP_USER_PERMISSION_READER, |
|
|
|
GROUP_USER_PERMISSION_HRM, |
|
|
|
GROUP_USER_PERMISSION_HRM, |
|
|
|
]; |
|
|
|
]; |
|
|
|
$user_role = self::get_user_group_role($user_id, $group_id); |
|
|
|
$user_role = $this->get_user_group_role($user_id, $group_id); |
|
|
|
if (in_array($user_role, $roles)) { |
|
|
|
if (in_array($user_role, $roles)) { |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
@ -1924,11 +1973,15 @@ class UserGroup extends Model |
|
|
|
{ |
|
|
|
{ |
|
|
|
$table_group_rel_user = $this->usergroup_rel_user_table; |
|
|
|
$table_group_rel_user = $this->usergroup_rel_user_table; |
|
|
|
$return_value = 0; |
|
|
|
$return_value = 0; |
|
|
|
|
|
|
|
$user_id = (int) $user_id; |
|
|
|
|
|
|
|
$group_id = (int) $group_id; |
|
|
|
|
|
|
|
|
|
|
|
if (!empty($user_id) && !empty($group_id)) { |
|
|
|
if (!empty($user_id) && !empty($group_id)) { |
|
|
|
$sql = "SELECT relation_type FROM $table_group_rel_user |
|
|
|
$sql = "SELECT relation_type |
|
|
|
|
|
|
|
FROM $table_group_rel_user |
|
|
|
WHERE |
|
|
|
WHERE |
|
|
|
usergroup_id = ".intval($group_id)." AND |
|
|
|
usergroup_id = $group_id AND |
|
|
|
user_id = ".intval($user_id)." "; |
|
|
|
user_id = $user_id "; |
|
|
|
$result = Database::query($sql); |
|
|
|
$result = Database::query($sql); |
|
|
|
if (Database::num_rows($result) > 0) { |
|
|
|
if (Database::num_rows($result) > 0) { |
|
|
|
$row = Database::fetch_array($result, 'ASSOC'); |
|
|
|
$row = Database::fetch_array($result, 'ASSOC'); |
|
|
|
@ -1947,7 +2000,7 @@ class UserGroup extends Model |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function getUserRoleToString($userId, $groupId) |
|
|
|
public function getUserRoleToString($userId, $groupId) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$role = self::get_user_group_role($userId, $groupId); |
|
|
|
$role = $this->get_user_group_role($userId, $groupId); |
|
|
|
$roleToString = ''; |
|
|
|
$roleToString = ''; |
|
|
|
|
|
|
|
|
|
|
|
switch ($role) { |
|
|
|
switch ($role) { |
|
|
|
@ -1991,13 +2044,16 @@ class UserGroup extends Model |
|
|
|
if (is_array($user_list) && is_array($group_list)) { |
|
|
|
if (is_array($user_list) && is_array($group_list)) { |
|
|
|
foreach ($group_list as $group_id) { |
|
|
|
foreach ($group_list as $group_id) { |
|
|
|
foreach ($user_list as $user_id) { |
|
|
|
foreach ($user_list as $user_id) { |
|
|
|
$role = self::get_user_group_role($user_id, $group_id); |
|
|
|
$user_id = (int) $user_id; |
|
|
|
|
|
|
|
$group_id = (int) $group_id; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$role = $this->get_user_group_role($user_id, $group_id); |
|
|
|
if ($role == 0) { |
|
|
|
if ($role == 0) { |
|
|
|
$sql = "INSERT INTO $table_url_rel_group |
|
|
|
$sql = "INSERT INTO $table_url_rel_group |
|
|
|
SET |
|
|
|
SET |
|
|
|
user_id = ".intval($user_id).", |
|
|
|
user_id = $user_id , |
|
|
|
usergroup_id = ".intval($group_id).", |
|
|
|
usergroup_id = $group_id , |
|
|
|
relation_type = ".$relation_type; |
|
|
|
relation_type = $relation_type "; |
|
|
|
|
|
|
|
|
|
|
|
$result = Database::query($sql); |
|
|
|
$result = Database::query($sql); |
|
|
|
if ($result) { |
|
|
|
if ($result) { |
|
|
|
@ -2057,7 +2113,7 @@ class UserGroup extends Model |
|
|
|
{ |
|
|
|
{ |
|
|
|
$table_url_rel_group = $this->usergroup_rel_user_table; |
|
|
|
$table_url_rel_group = $this->usergroup_rel_user_table; |
|
|
|
if (!empty($user_id) && !empty($group_id)) { |
|
|
|
if (!empty($user_id) && !empty($group_id)) { |
|
|
|
$role = self::get_user_group_role($user_id, $group_id); |
|
|
|
$role = $this->get_user_group_role($user_id, $group_id); |
|
|
|
|
|
|
|
|
|
|
|
if ($role == 0) { |
|
|
|
if ($role == 0) { |
|
|
|
$sql = "INSERT INTO $table_url_rel_group |
|
|
|
$sql = "INSERT INTO $table_url_rel_group |
|
|
|
@ -2087,11 +2143,12 @@ class UserGroup extends Model |
|
|
|
public function update_user_role($user_id, $group_id, $relation_type = GROUP_USER_PERMISSION_READER) |
|
|
|
public function update_user_role($user_id, $group_id, $relation_type = GROUP_USER_PERMISSION_READER) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$table_group_rel_user = $this->usergroup_rel_user_table; |
|
|
|
$table_group_rel_user = $this->usergroup_rel_user_table; |
|
|
|
$group_id = intval($group_id); |
|
|
|
$group_id = (int) $group_id; |
|
|
|
$user_id = intval($user_id); |
|
|
|
$user_id = (int) $user_id; |
|
|
|
|
|
|
|
$relation_type = (int) $relation_type; |
|
|
|
|
|
|
|
|
|
|
|
$sql = "UPDATE $table_group_rel_user |
|
|
|
$sql = "UPDATE $table_group_rel_user |
|
|
|
SET relation_type = ".intval($relation_type)." |
|
|
|
SET relation_type = $relation_type |
|
|
|
WHERE user_id = $user_id AND usergroup_id = $group_id"; |
|
|
|
WHERE user_id = $user_id AND usergroup_id = $group_id"; |
|
|
|
Database::query($sql); |
|
|
|
Database::query($sql); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -2122,27 +2179,40 @@ class UserGroup extends Model |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$sql = "SELECT |
|
|
|
$sql = 'SELECT |
|
|
|
g.picture, |
|
|
|
g.picture, |
|
|
|
g.name, |
|
|
|
g.name, |
|
|
|
g.description, |
|
|
|
g.description, |
|
|
|
g.id , |
|
|
|
g.id , |
|
|
|
gu.relation_type |
|
|
|
gu.relation_type'; |
|
|
|
FROM $tbl_group g |
|
|
|
|
|
|
|
INNER JOIN $table_group_rel_user gu |
|
|
|
$urlCondition = ''; |
|
|
|
ON gu.usergroup_id = g.id |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
WHERE |
|
|
|
$sql .= " FROM $tbl_group g |
|
|
|
|
|
|
|
INNER JOIN ".$this->access_url_rel_usergroup." a |
|
|
|
|
|
|
|
ON (g.id = a.usergroup_id) |
|
|
|
|
|
|
|
INNER JOIN $table_group_rel_user gu |
|
|
|
|
|
|
|
ON gu.usergroup_id = g.id"; |
|
|
|
|
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
|
|
|
|
$urlCondition = " AND access_url_id = $urlId "; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
$sql .= " FROM $tbl_group g |
|
|
|
|
|
|
|
INNER JOIN $table_group_rel_user gu |
|
|
|
|
|
|
|
ON gu.usergroup_id = g.id"; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$sql .= " WHERE |
|
|
|
g.group_type = ".self::SOCIAL_CLASS." AND |
|
|
|
g.group_type = ".self::SOCIAL_CLASS." AND |
|
|
|
gu.user_id = $user_id |
|
|
|
gu.user_id = $user_id |
|
|
|
$relationCondition |
|
|
|
$relationCondition |
|
|
|
|
|
|
|
$urlCondition |
|
|
|
ORDER BY created_at DESC "; |
|
|
|
ORDER BY created_at DESC "; |
|
|
|
$result = Database::query($sql); |
|
|
|
$result = Database::query($sql); |
|
|
|
|
|
|
|
|
|
|
|
$array = []; |
|
|
|
$array = []; |
|
|
|
if (Database::num_rows($result) > 0) { |
|
|
|
if (Database::num_rows($result) > 0) { |
|
|
|
while ($row = Database::fetch_array($result, 'ASSOC')) { |
|
|
|
while ($row = Database::fetch_array($result, 'ASSOC')) { |
|
|
|
if ($with_image) { |
|
|
|
if ($with_image) { |
|
|
|
$picture = self::get_picture_group($row['id'], $row['picture'], 80); |
|
|
|
$picture = $this->get_picture_group($row['id'], $row['picture'], 80); |
|
|
|
$img = '<img src="'.$picture['file'].'" />'; |
|
|
|
$img = '<img src="'.$picture['file'].'" />'; |
|
|
|
$row['picture'] = $img; |
|
|
|
$row['picture'] = $img; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -2168,15 +2238,34 @@ class UserGroup extends Model |
|
|
|
if (empty($num)) { |
|
|
|
if (empty($num)) { |
|
|
|
$num = 6; |
|
|
|
$num = 6; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$num = intval($num); |
|
|
|
$num = (int) $num; |
|
|
|
} |
|
|
|
} |
|
|
|
// only show admins and readers |
|
|
|
// only show admins and readers |
|
|
|
$where_relation_condition = " WHERE g.group_type = ".self::SOCIAL_CLASS." AND |
|
|
|
$whereCondition = " WHERE |
|
|
|
gu.relation_type IN ('".GROUP_USER_PERMISSION_ADMIN."' , '".GROUP_USER_PERMISSION_READER."', '".GROUP_USER_PERMISSION_HRM."') "; |
|
|
|
g.group_type = ".self::SOCIAL_CLASS." AND |
|
|
|
$sql = "SELECT DISTINCT count(user_id) as count, g.picture, g.name, g.description, g.id |
|
|
|
gu.relation_type IN |
|
|
|
FROM $tbl_group g |
|
|
|
('".GROUP_USER_PERMISSION_ADMIN."' , '".GROUP_USER_PERMISSION_READER."', '".GROUP_USER_PERMISSION_HRM."') "; |
|
|
|
INNER JOIN $table_group_rel_user gu |
|
|
|
|
|
|
|
ON gu.usergroup_id = g.id $where_relation_condition |
|
|
|
$sql = 'SELECT DISTINCT count(user_id) as count, g.picture, g.name, g.description, g.id '; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$urlCondition = ''; |
|
|
|
|
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
|
|
|
|
$sql .= " FROM $tbl_group g |
|
|
|
|
|
|
|
INNER JOIN ".$this->access_url_rel_usergroup." a |
|
|
|
|
|
|
|
ON (g.id = a.usergroup_id) |
|
|
|
|
|
|
|
INNER JOIN $table_group_rel_user gu |
|
|
|
|
|
|
|
ON gu.usergroup_id = g.id"; |
|
|
|
|
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
|
|
|
|
$urlCondition = " AND access_url_id = $urlId "; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
$sql .= " FROM $tbl_group g |
|
|
|
|
|
|
|
INNER JOIN $table_group_rel_user gu |
|
|
|
|
|
|
|
ON gu.usergroup_id = g.id"; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$sql .= " |
|
|
|
|
|
|
|
$whereCondition |
|
|
|
|
|
|
|
$urlCondition |
|
|
|
GROUP BY g.id |
|
|
|
GROUP BY g.id |
|
|
|
ORDER BY count DESC |
|
|
|
ORDER BY count DESC |
|
|
|
LIMIT $num"; |
|
|
|
LIMIT $num"; |
|
|
|
@ -2185,7 +2274,7 @@ class UserGroup extends Model |
|
|
|
$array = []; |
|
|
|
$array = []; |
|
|
|
while ($row = Database::fetch_array($result, 'ASSOC')) { |
|
|
|
while ($row = Database::fetch_array($result, 'ASSOC')) { |
|
|
|
if ($with_image) { |
|
|
|
if ($with_image) { |
|
|
|
$picture = self::get_picture_group($row['id'], $row['picture'], 80); |
|
|
|
$picture = $this->get_picture_group($row['id'], $row['picture'], 80); |
|
|
|
$img = '<img src="'.$picture['file'].'" />'; |
|
|
|
$img = '<img src="'.$picture['file'].'" />'; |
|
|
|
$row['picture'] = $img; |
|
|
|
$row['picture'] = $img; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -2200,13 +2289,13 @@ class UserGroup extends Model |
|
|
|
|
|
|
|
|
|
|
|
/** Gets the last groups created |
|
|
|
/** Gets the last groups created |
|
|
|
* @param int $num quantity of records |
|
|
|
* @param int $num quantity of records |
|
|
|
* @param bool $with_image show groups with image or not |
|
|
|
* @param bool $withImage show groups with image or not |
|
|
|
* |
|
|
|
* |
|
|
|
* @return array with group content |
|
|
|
* @return array with group content |
|
|
|
* |
|
|
|
* |
|
|
|
* @author Julio Montoya |
|
|
|
* @author Julio Montoya |
|
|
|
* */ |
|
|
|
* */ |
|
|
|
public function get_groups_by_age($num = 6, $with_image = true) |
|
|
|
public function get_groups_by_age($num = 6, $withImage = true) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$table_group_rel_user = $this->usergroup_rel_user_table; |
|
|
|
$table_group_rel_user = $this->usergroup_rel_user_table; |
|
|
|
$tbl_group = $this->table; |
|
|
|
$tbl_group = $this->table; |
|
|
|
@ -2214,7 +2303,7 @@ class UserGroup extends Model |
|
|
|
if (empty($num)) { |
|
|
|
if (empty($num)) { |
|
|
|
$num = 6; |
|
|
|
$num = 6; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$num = intval($num); |
|
|
|
$num = (int) $num; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$where = " WHERE |
|
|
|
$where = " WHERE |
|
|
|
@ -2225,16 +2314,30 @@ class UserGroup extends Model |
|
|
|
'".GROUP_USER_PERMISSION_MODERATOR."', |
|
|
|
'".GROUP_USER_PERMISSION_MODERATOR."', |
|
|
|
'".GROUP_USER_PERMISSION_HRM."') |
|
|
|
'".GROUP_USER_PERMISSION_HRM."') |
|
|
|
"; |
|
|
|
"; |
|
|
|
$sql = "SELECT DISTINCT |
|
|
|
$sql = 'SELECT DISTINCT |
|
|
|
count(user_id) as count, |
|
|
|
count(user_id) as count, |
|
|
|
g.picture, |
|
|
|
g.picture, |
|
|
|
g.name, |
|
|
|
g.name, |
|
|
|
g.description, |
|
|
|
g.description, |
|
|
|
g.id |
|
|
|
g.id '; |
|
|
|
FROM $tbl_group g |
|
|
|
|
|
|
|
INNER JOIN $table_group_rel_user gu |
|
|
|
$urlCondition = ''; |
|
|
|
ON gu.usergroup_id = g.id |
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
|
|
|
|
$sql .= " FROM $tbl_group g |
|
|
|
|
|
|
|
INNER JOIN ".$this->access_url_rel_usergroup." a |
|
|
|
|
|
|
|
ON (g.id = a.usergroup_id) |
|
|
|
|
|
|
|
INNER JOIN $table_group_rel_user gu |
|
|
|
|
|
|
|
ON gu.usergroup_id = g.id"; |
|
|
|
|
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
|
|
|
|
$urlCondition = " AND access_url_id = $urlId "; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
$sql .= " FROM $tbl_group g |
|
|
|
|
|
|
|
INNER JOIN $table_group_rel_user gu |
|
|
|
|
|
|
|
ON gu.usergroup_id = g.id"; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
$sql .= " |
|
|
|
$where |
|
|
|
$where |
|
|
|
|
|
|
|
$urlCondition |
|
|
|
GROUP BY g.id |
|
|
|
GROUP BY g.id |
|
|
|
ORDER BY created_at DESC |
|
|
|
ORDER BY created_at DESC |
|
|
|
LIMIT $num "; |
|
|
|
LIMIT $num "; |
|
|
|
@ -2242,8 +2345,8 @@ class UserGroup extends Model |
|
|
|
$result = Database::query($sql); |
|
|
|
$result = Database::query($sql); |
|
|
|
$array = []; |
|
|
|
$array = []; |
|
|
|
while ($row = Database::fetch_array($result, 'ASSOC')) { |
|
|
|
while ($row = Database::fetch_array($result, 'ASSOC')) { |
|
|
|
if ($with_image) { |
|
|
|
if ($withImage) { |
|
|
|
$picture = self::get_picture_group($row['id'], $row['picture'], 80); |
|
|
|
$picture = $this->get_picture_group($row['id'], $row['picture'], 80); |
|
|
|
$img = '<img src="'.$picture['file'].'" />'; |
|
|
|
$img = '<img src="'.$picture['file'].'" />'; |
|
|
|
$row['picture'] = $img; |
|
|
|
$row['picture'] = $img; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -2270,7 +2373,7 @@ class UserGroup extends Model |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function get_users_by_group( |
|
|
|
public function get_users_by_group( |
|
|
|
$group_id, |
|
|
|
$group_id, |
|
|
|
$with_image = false, |
|
|
|
$withImage = false, |
|
|
|
$relation_type = [], |
|
|
|
$relation_type = [], |
|
|
|
$from = null, |
|
|
|
$from = null, |
|
|
|
$limit = null, |
|
|
|
$limit = null, |
|
|
|
@ -2278,7 +2381,7 @@ class UserGroup extends Model |
|
|
|
) { |
|
|
|
) { |
|
|
|
$table_group_rel_user = $this->usergroup_rel_user_table; |
|
|
|
$table_group_rel_user = $this->usergroup_rel_user_table; |
|
|
|
$tbl_user = Database::get_main_table(TABLE_MAIN_USER); |
|
|
|
$tbl_user = Database::get_main_table(TABLE_MAIN_USER); |
|
|
|
$group_id = intval($group_id); |
|
|
|
$group_id = (int) $group_id; |
|
|
|
|
|
|
|
|
|
|
|
if (empty($group_id)) { |
|
|
|
if (empty($group_id)) { |
|
|
|
return []; |
|
|
|
return []; |
|
|
|
@ -2286,8 +2389,8 @@ class UserGroup extends Model |
|
|
|
|
|
|
|
|
|
|
|
$limit_text = ''; |
|
|
|
$limit_text = ''; |
|
|
|
if (isset($from) && isset($limit)) { |
|
|
|
if (isset($from) && isset($limit)) { |
|
|
|
$from = intval($from); |
|
|
|
$from = (int) $from; |
|
|
|
$limit = intval($limit); |
|
|
|
$limit = (int) $limit; |
|
|
|
$limit_text = "LIMIT $from, $limit"; |
|
|
|
$limit_text = "LIMIT $from, $limit"; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -2296,7 +2399,7 @@ class UserGroup extends Model |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$new_relation_type = []; |
|
|
|
$new_relation_type = []; |
|
|
|
foreach ($relation_type as $rel) { |
|
|
|
foreach ($relation_type as $rel) { |
|
|
|
$rel = intval($rel); |
|
|
|
$rel = (int) $rel; |
|
|
|
$new_relation_type[] = "'$rel'"; |
|
|
|
$new_relation_type[] = "'$rel'"; |
|
|
|
} |
|
|
|
} |
|
|
|
$relation_type = implode(',', $new_relation_type); |
|
|
|
$relation_type = implode(',', $new_relation_type); |
|
|
|
@ -2318,10 +2421,9 @@ class UserGroup extends Model |
|
|
|
$result = Database::query($sql); |
|
|
|
$result = Database::query($sql); |
|
|
|
$array = []; |
|
|
|
$array = []; |
|
|
|
while ($row = Database::fetch_array($result, 'ASSOC')) { |
|
|
|
while ($row = Database::fetch_array($result, 'ASSOC')) { |
|
|
|
if ($with_image) { |
|
|
|
if ($withImage) { |
|
|
|
$userInfo = api_get_user_info($row['id']); |
|
|
|
$userInfo = api_get_user_info($row['id']); |
|
|
|
$userPicture = UserManager::getUserPicture($row['id']); |
|
|
|
$userPicture = UserManager::getUserPicture($row['id']); |
|
|
|
|
|
|
|
|
|
|
|
$row['image'] = '<img src="'.$userPicture.'" />'; |
|
|
|
$row['image'] = '<img src="'.$userPicture.'" />'; |
|
|
|
$row['user_info'] = $userInfo; |
|
|
|
$row['user_info'] = $userInfo; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -2343,7 +2445,7 @@ class UserGroup extends Model |
|
|
|
{ |
|
|
|
{ |
|
|
|
$table_group_rel_user = $this->usergroup_rel_user_table; |
|
|
|
$table_group_rel_user = $this->usergroup_rel_user_table; |
|
|
|
$tbl_user = Database::get_main_table(TABLE_MAIN_USER); |
|
|
|
$tbl_user = Database::get_main_table(TABLE_MAIN_USER); |
|
|
|
$group_id = intval($group_id); |
|
|
|
$group_id = (int) $group_id; |
|
|
|
|
|
|
|
|
|
|
|
if (empty($group_id)) { |
|
|
|
if (empty($group_id)) { |
|
|
|
return []; |
|
|
|
return []; |
|
|
|
@ -2368,8 +2470,9 @@ class UserGroup extends Model |
|
|
|
/** |
|
|
|
/** |
|
|
|
* Shows the left column of the group page. |
|
|
|
* Shows the left column of the group page. |
|
|
|
* |
|
|
|
* |
|
|
|
* @param int group id |
|
|
|
* @param int $group_id |
|
|
|
* @param int user id |
|
|
|
* @param int $user_id |
|
|
|
|
|
|
|
* @param string $show |
|
|
|
* |
|
|
|
* |
|
|
|
* @return string |
|
|
|
* @return string |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@ -2379,7 +2482,7 @@ class UserGroup extends Model |
|
|
|
$group_info = $this->get($group_id); |
|
|
|
$group_info = $this->get($group_id); |
|
|
|
|
|
|
|
|
|
|
|
//my relation with the group is set here |
|
|
|
//my relation with the group is set here |
|
|
|
$my_group_role = self::get_user_group_role($user_id, $group_id); |
|
|
|
$my_group_role = $this->get_user_group_role($user_id, $group_id); |
|
|
|
|
|
|
|
|
|
|
|
// Loading group permission |
|
|
|
// Loading group permission |
|
|
|
$links = ''; |
|
|
|
$links = ''; |
|
|
|
@ -2470,10 +2573,11 @@ class UserGroup extends Model |
|
|
|
public function delete_topic($group_id, $topic_id) |
|
|
|
public function delete_topic($group_id, $topic_id) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$table_message = Database::get_main_table(TABLE_MESSAGE); |
|
|
|
$table_message = Database::get_main_table(TABLE_MESSAGE); |
|
|
|
$topic_id = intval($topic_id); |
|
|
|
$topic_id = (int) $topic_id; |
|
|
|
$group_id = intval($group_id); |
|
|
|
$group_id = (int) $group_id; |
|
|
|
|
|
|
|
|
|
|
|
$sql = "UPDATE $table_message SET |
|
|
|
$sql = "UPDATE $table_message SET |
|
|
|
msg_status = 3 |
|
|
|
msg_status = 3 |
|
|
|
WHERE |
|
|
|
WHERE |
|
|
|
group_id = $group_id AND |
|
|
|
group_id = $group_id AND |
|
|
|
(id = '$topic_id' OR parent_id = $topic_id) |
|
|
|
(id = '$topic_id' OR parent_id = $topic_id) |
|
|
|
@ -2486,6 +2590,8 @@ class UserGroup extends Model |
|
|
|
* @param string $relation_type |
|
|
|
* @param string $relation_type |
|
|
|
* @param bool $with_image |
|
|
|
* @param bool $with_image |
|
|
|
* |
|
|
|
* |
|
|
|
|
|
|
|
* @deprecated |
|
|
|
|
|
|
|
* |
|
|
|
* @return int |
|
|
|
* @return int |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function get_groups_by_user_count( |
|
|
|
public function get_groups_by_user_count( |
|
|
|
@ -2531,19 +2637,31 @@ class UserGroup extends Model |
|
|
|
{ |
|
|
|
{ |
|
|
|
$group_table = $this->table; |
|
|
|
$group_table = $this->table; |
|
|
|
$tag = Database::escape_string($tag); |
|
|
|
$tag = Database::escape_string($tag); |
|
|
|
$from = intval($from); |
|
|
|
$from = (int) $from; |
|
|
|
$number_of_items = intval($number_of_items); |
|
|
|
$number_of_items = (int) $number_of_items; |
|
|
|
$return = []; |
|
|
|
$return = []; |
|
|
|
|
|
|
|
|
|
|
|
$keyword = $tag; |
|
|
|
$keyword = $tag; |
|
|
|
$sql = "SELECT g.id, g.name, g.description, g.url, g.picture |
|
|
|
$sql = 'SELECT g.id, g.name, g.description, g.url, g.picture '; |
|
|
|
FROM $group_table g"; |
|
|
|
$urlCondition = ''; |
|
|
|
|
|
|
|
if ($this->getUseMultipleUrl()) { |
|
|
|
|
|
|
|
$urlId = api_get_current_access_url_id(); |
|
|
|
|
|
|
|
$sql .= " FROM $this->table g |
|
|
|
|
|
|
|
INNER JOIN $this->access_url_rel_usergroup a |
|
|
|
|
|
|
|
ON (g.id = a.usergroup_id)"; |
|
|
|
|
|
|
|
$urlCondition = " AND access_url_id = $urlId "; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
$sql .= " FROM $group_table g"; |
|
|
|
|
|
|
|
} |
|
|
|
if (isset($keyword)) { |
|
|
|
if (isset($keyword)) { |
|
|
|
$sql .= " WHERE ( |
|
|
|
$sql .= " WHERE ( |
|
|
|
g.name LIKE '%".$keyword."%' OR |
|
|
|
g.name LIKE '%".$keyword."%' OR |
|
|
|
g.description LIKE '%".$keyword."%' OR |
|
|
|
g.description LIKE '%".$keyword."%' OR |
|
|
|
g.url LIKE '%".$keyword."%' |
|
|
|
g.url LIKE '%".$keyword."%' |
|
|
|
)"; |
|
|
|
) $urlCondition |
|
|
|
|
|
|
|
"; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
$sql .= " WHERE 1 = 1 $urlCondition "; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$direction = 'ASC'; |
|
|
|
$direction = 'ASC'; |
|
|
|
@ -2551,10 +2669,9 @@ class UserGroup extends Model |
|
|
|
$direction = 'ASC'; |
|
|
|
$direction = 'ASC'; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$from = intval($from); |
|
|
|
$from = (int) $from; |
|
|
|
$number_of_items = intval($number_of_items); |
|
|
|
$number_of_items = (int) $number_of_items; |
|
|
|
|
|
|
|
$sql .= " LIMIT $from, $number_of_items"; |
|
|
|
$sql .= " LIMIT $from,$number_of_items"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$res = Database::query($sql); |
|
|
|
$res = Database::query($sql); |
|
|
|
if (Database::num_rows($res) > 0) { |
|
|
|
if (Database::num_rows($res) > 0) { |
|
|
|
@ -2579,10 +2696,9 @@ class UserGroup extends Model |
|
|
|
$group_id = (int) $group_id; |
|
|
|
$group_id = (int) $group_id; |
|
|
|
|
|
|
|
|
|
|
|
$max_level = 10; |
|
|
|
$max_level = 10; |
|
|
|
$select_part = "SELECT "; |
|
|
|
$select_part = 'SELECT '; |
|
|
|
$cond_part = ''; |
|
|
|
$cond_part = ''; |
|
|
|
for ($i = 1; $i <= $max_level; $i++) { |
|
|
|
for ($i = 1; $i <= $max_level; $i++) { |
|
|
|
$g_number = $i; |
|
|
|
|
|
|
|
$rg_number = $i - 1; |
|
|
|
$rg_number = $i - 1; |
|
|
|
if ($i == $max_level) { |
|
|
|
if ($i == $max_level) { |
|
|
|
$select_part .= "rg$rg_number.group_id as id_$rg_number "; |
|
|
|
$select_part .= "rg$rg_number.group_id as id_$rg_number "; |
|
|
|
@ -2590,9 +2706,12 @@ class UserGroup extends Model |
|
|
|
$select_part .= "rg$rg_number.group_id as id_$rg_number, "; |
|
|
|
$select_part .= "rg$rg_number.group_id as id_$rg_number, "; |
|
|
|
} |
|
|
|
} |
|
|
|
if ($i == 1) { |
|
|
|
if ($i == 1) { |
|
|
|
$cond_part .= "FROM $t_rel_group rg0 LEFT JOIN $t_rel_group rg$i on rg$rg_number.group_id = rg$i.subgroup_id "; |
|
|
|
$cond_part .= "FROM $t_rel_group rg0 |
|
|
|
|
|
|
|
LEFT JOIN $t_rel_group rg$i |
|
|
|
|
|
|
|
ON rg$rg_number.group_id = rg$i.subgroup_id "; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$cond_part .= " LEFT JOIN $t_rel_group rg$i on rg$rg_number.group_id = rg$i.subgroup_id "; |
|
|
|
$cond_part .= " LEFT JOIN $t_rel_group rg$i |
|
|
|
|
|
|
|
ON rg$rg_number.group_id = rg$i.subgroup_id "; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
$sql = $select_part.' '.$cond_part."WHERE rg0.subgroup_id='$group_id'"; |
|
|
|
$sql = $select_part.' '.$cond_part."WHERE rg0.subgroup_id='$group_id'"; |
|
|
|
@ -2645,7 +2764,7 @@ class UserGroup extends Model |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
foreach ($groupsId as $groupId) { |
|
|
|
foreach ($groupsId as $groupId) { |
|
|
|
$groupUsers = self::get_users_by_group($groupId); |
|
|
|
$groupUsers = $this->get_users_by_group($groupId); |
|
|
|
|
|
|
|
|
|
|
|
if (empty($groupUsers)) { |
|
|
|
if (empty($groupUsers)) { |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
@ -2656,7 +2775,7 @@ class UserGroup extends Model |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$userIdList[] = intval($member['user_id']); |
|
|
|
$userIdList[] = (int) $member['user_id']; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -2680,17 +2799,18 @@ class UserGroup extends Model |
|
|
|
$groupTable = Database::get_main_table(TABLE_USERGROUP); |
|
|
|
$groupTable = Database::get_main_table(TABLE_USERGROUP); |
|
|
|
$groupRelGroupTable = Database::get_main_table(TABLE_USERGROUP_REL_USERGROUP); |
|
|
|
$groupRelGroupTable = Database::get_main_table(TABLE_USERGROUP_REL_USERGROUP); |
|
|
|
|
|
|
|
|
|
|
|
$select = "SELECT "; |
|
|
|
$select = 'SELECT '; |
|
|
|
$from = "FROM $groupTable g1 "; |
|
|
|
$from = "FROM $groupTable g1 "; |
|
|
|
|
|
|
|
|
|
|
|
for ($i = 1; $i <= $levels; $i++) { |
|
|
|
for ($i = 1; $i <= $levels; $i++) { |
|
|
|
$tableIndexNumber = $i; |
|
|
|
$tableIndexNumber = $i; |
|
|
|
$tableIndexJoinNumber = $i - 1; |
|
|
|
$tableIndexJoinNumber = $i - 1; |
|
|
|
$select .= "g$i.id as id_$i "; |
|
|
|
$select .= "g$i.id as id_$i "; |
|
|
|
$select .= ($i != $levels ? ", " : null); |
|
|
|
$select .= $i != $levels ? ', ' : null; |
|
|
|
|
|
|
|
|
|
|
|
if ($i == 1) { |
|
|
|
if ($i == 1) { |
|
|
|
$from .= "INNER JOIN $groupRelGroupTable gg0 ON g1.id = gg0.subgroup_id and gg0.group_id = $groupId "; |
|
|
|
$from .= " INNER JOIN $groupRelGroupTable gg0 |
|
|
|
|
|
|
|
ON g1.id = gg0.subgroup_id and gg0.group_id = $groupId "; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
$from .= "LEFT JOIN $groupRelGroupTable gg$tableIndexJoinNumber "; |
|
|
|
$from .= "LEFT JOIN $groupRelGroupTable gg$tableIndexJoinNumber "; |
|
|
|
$from .= " ON g$tableIndexJoinNumber.id = gg$tableIndexJoinNumber.group_id "; |
|
|
|
$from .= " ON g$tableIndexJoinNumber.id = gg$tableIndexJoinNumber.group_id "; |
|
|
|
@ -2724,8 +2844,8 @@ class UserGroup extends Model |
|
|
|
public function setParentGroup($group_id, $parent_group_id, $relation_type = 1) |
|
|
|
public function setParentGroup($group_id, $parent_group_id, $relation_type = 1) |
|
|
|
{ |
|
|
|
{ |
|
|
|
$table = Database::get_main_table(TABLE_USERGROUP_REL_USERGROUP); |
|
|
|
$table = Database::get_main_table(TABLE_USERGROUP_REL_USERGROUP); |
|
|
|
$group_id = intval($group_id); |
|
|
|
$group_id = (int) $group_id; |
|
|
|
$parent_group_id = intval($parent_group_id); |
|
|
|
$parent_group_id = (int) $parent_group_id; |
|
|
|
if ($parent_group_id == 0) { |
|
|
|
if ($parent_group_id == 0) { |
|
|
|
$sql = "DELETE FROM $table WHERE subgroup_id = $group_id"; |
|
|
|
$sql = "DELETE FROM $table WHERE subgroup_id = $group_id"; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
@ -2780,7 +2900,6 @@ class UserGroup extends Model |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
$nameList = '<ul class="list-unstyled">'; |
|
|
|
$nameList = '<ul class="list-unstyled">'; |
|
|
|
|
|
|
|
|
|
|
|
foreach ($groupsNameListParsed as $name) { |
|
|
|
foreach ($groupsNameListParsed as $name) { |
|
|
|
$nameList .= '<li>'.Display::span($name, ['class' => 'label label-info']).'</li>'; |
|
|
|
$nameList .= '<li>'.Display::span($name, ['class' => 'label label-info']).'</li>'; |
|
|
|
} |
|
|
|
} |
|
|
|
|