diff --git a/main/admin/access_url_edit_usergroup_to_url.php b/main/admin/access_url_edit_usergroup_to_url.php
index 8fcbc2be79..fdfd814d09 100755
--- a/main/admin/access_url_edit_usergroup_to_url.php
+++ b/main/admin/access_url_edit_usergroup_to_url.php
@@ -109,7 +109,7 @@ echo '';
api_display_tool_title($tool_name);
$noUserGroupList = $userGroupList = [];
-$ajax_search = $add_type == 'unique' ? true : false;
+$ajax_search = $add_type === 'unique' ? true : false;
if ($ajax_search) {
$userGroups = UrlManager::get_url_rel_usergroup_data($access_url_id);
diff --git a/main/admin/usergroup_user_import.php b/main/admin/usergroup_user_import.php
index 9355ad8128..8f151adb51 100755
--- a/main/admin/usergroup_user_import.php
+++ b/main/admin/usergroup_user_import.php
@@ -83,7 +83,7 @@ function save_data($users_classes, $deleteUsersNotInList = false)
WHERE username = '".Database::escape_string(UserManager::purify_username($user_class['UserName'], $purification_option_for_usernames))."'";
$res1 = Database::query($sql1);
$obj1 = Database::fetch_object($res1);
- $id = $usergroup->get_id_by_name($user_class['ClassName']);
+ $id = $usergroup->getIdByName($user_class['ClassName']);
if ($obj1 && $id) {
$csv_data[$id]['user_list'][] = $obj1->user_id;
diff --git a/main/inc/lib/formvalidator/FormValidator.class.php b/main/inc/lib/formvalidator/FormValidator.class.php
index 658a0ff121..e2430b6430 100755
--- a/main/inc/lib/formvalidator/FormValidator.class.php
+++ b/main/inc/lib/formvalidator/FormValidator.class.php
@@ -914,7 +914,9 @@ EOT;
*/
public function addHeader($text)
{
- $this->addElement('header', $text);
+ if (!empty($text)) {
+ $this->addElement('header', $text);
+ }
}
/**
diff --git a/main/inc/lib/sessionmanager.lib.php b/main/inc/lib/sessionmanager.lib.php
index 5230e1ad30..3a5dc6e258 100755
--- a/main/inc/lib/sessionmanager.lib.php
+++ b/main/inc/lib/sessionmanager.lib.php
@@ -9161,7 +9161,7 @@ SQL;
}
$usergroup->subscribe_sessions_to_usergroup(
- $usergroup->get_id_by_name($className),
+ $usergroup->getIdByName($className),
[$sessionId],
$deleteClassSessions
);
diff --git a/main/inc/lib/usergroup.lib.php b/main/inc/lib/usergroup.lib.php
index 14cb4afc25..176ecc7043 100755
--- a/main/inc/lib/usergroup.lib.php
+++ b/main/inc/lib/usergroup.lib.php
@@ -29,12 +29,20 @@ class UserGroup extends Model
public $useMultipleUrl = false;
public $groupType = 0;
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.
*/
public function __construct()
{
+ parent::__construct();
$this->table = Database::get_main_table(TABLE_USERGROUP);
$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);
@@ -62,7 +70,23 @@ class UserGroup extends Model
*/
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'];
}
@@ -77,22 +101,21 @@ class UserGroup extends Model
{
$id = (int) $id;
+ $select = ' u.* ';
if ($getCount) {
$select = 'COUNT(u.id) count ';
- } else {
- $select = ' u.* ';
}
- if ($this->useMultipleUrl) {
+ if ($this->getUseMultipleUrl()) {
$urlId = api_get_current_access_url_id();
$sql = "SELECT $select
- FROM ".$this->usergroup_rel_user_table." u
- INNER JOIN ".$this->access_url_rel_user." a
+ FROM $this->usergroup_rel_user_table u
+ INNER JOIN $this->access_url_rel_user a
ON (u.user_id = a.user_id)
WHERE u.usergroup_id = $id AND access_url_id = $urlId ";
} else {
$sql = "SELECT $select
- FROM ".$this->usergroup_rel_user_table." u
+ FROM $this->usergroup_rel_user_table u
WHERE u.usergroup_id = $id";
}
$result = Database::query($sql);
@@ -171,6 +194,8 @@ class UserGroup extends Model
public function get_count($type = -1)
{
$authorCondition = '';
+ $type = (int) $type;
+
if ($this->allowTeachers()) {
if (!api_is_platform_admin()) {
$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();
- $sql = "SELECT count(u.id) as count FROM ".$this->table." u
- INNER JOIN ".$this->access_url_rel_usergroup." a
+ $sql = "SELECT count(u.id) as count
+ FROM $this->table u
+ INNER JOIN $this->access_url_rel_usergroup a
ON (u.id = a.usergroup_id)
WHERE access_url_id = $urlId $authorCondition
";
@@ -197,10 +223,8 @@ class UserGroup extends Model
} else {
$typeCondition = '';
if ($type != -1) {
- $type = (int) $type;
$typeCondition = " AND group_type = $type ";
}
-
$sql = "SELECT count(a.id) as count
FROM {$this->table} a
WHERE 1 =1
@@ -224,7 +248,7 @@ class UserGroup extends Model
*/
public function getUserGroupByCourseWithDataCount($course_id, $type = -1)
{
- if ($this->useMultipleUrl) {
+ if ($this->getUseMultipleUrl()) {
$course_id = (int) $course_id;
$urlId = api_get_current_access_url_id();
$sql = "SELECT count(c.usergroup_id) as count
@@ -271,7 +295,7 @@ class UserGroup extends Model
*
* @return mixed
*/
- public function get_id_by_name($name)
+ public function getIdByName($name)
{
$row = Database::select(
'id',
@@ -350,7 +374,7 @@ class UserGroup extends Model
*/
public function get_courses_by_usergroup($id, $loadCourseData = false)
{
- if ($this->useMultipleUrl) {
+ if ($this->getUseMultipleUrl()) {
$urlId = api_get_current_access_url_id();
$from = $this->usergroup_rel_course_table." c
INNER JOIN {$this->access_url_rel_usergroup} a
@@ -360,30 +384,18 @@ class UserGroup extends Model
} else {
$whereConditionSql = 'usergroup_id = ?';
$whereConditionValues = [$id];
- $from = $this->usergroup_rel_course_table." c ";
+ $from = $this->usergroup_rel_course_table.' c ';
}
if ($loadCourseData) {
$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]];
+ $select = 'course_id';
if ($loadCourseData) {
$select = 'course.*';
- } else {
- $select = 'course_id';
}
$results = Database::select(
@@ -414,9 +426,10 @@ class UserGroup extends Model
*/
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
- INNER JOIN {$this->table} u
+ INNER JOIN {$this->table} u
ON (u.id = usergroup.usergroup_id)
INNER JOIN {$this->table_course} c
ON (usergroup.course_id = c.id)
@@ -448,7 +461,7 @@ class UserGroup extends Model
$sql .= $conditions;
- if ($this->useMultipleUrl) {
+ if ($this->getUseMultipleUrl()) {
$urlId = api_get_current_access_url_id();
$sql .= " AND access_url_id = $urlId ";
}
@@ -457,7 +470,7 @@ class UserGroup extends Model
$limits = explode(',', $options['LIMIT']);
$limits = array_map('intval', $limits);
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 ";
}
- if ($this->useMultipleUrl) {
- $urlId = api_get_current_access_url_id();
+ if ($this->getUseMultipleUrl()) {
$sql = "SELECT DISTINCT u.*
FROM {$this->table} u
INNER JOIN {$this->access_url_rel_usergroup} a
@@ -517,7 +529,8 @@ class UserGroup extends Model
$sql .= $conditions;
- if ($this->useMultipleUrl) {
+ if ($this->getUseMultipleUrl()) {
+ $urlId = api_get_current_access_url_id();
$sql .= " AND access_url_id = $urlId";
}
@@ -525,7 +538,7 @@ class UserGroup extends Model
$limits = explode(',', $options['LIMIT']);
$limits = array_map('intval', $limits);
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
- *
+ * @deprecated ?
* @return array
*/
public function get_usergroup_by_course($course_id)
{
- if ($this->useMultipleUrl) {
+ if ($this->getUseMultipleUrl()) {
$urlId = api_get_current_access_url_id();
$options = [
'where' => [
@@ -552,9 +565,9 @@ class UserGroup extends Model
],
],
];
- $from = $this->usergroup_rel_course_table." as c
- INNER JOIN ".$this->access_url_rel_usergroup." a
- ON c.usergroup_id = a.usergroup_id";
+ $from = " $this->usergroup_rel_course_table as c
+ INNER JOIN $this->access_url_rel_usergroup a
+ ON c.usergroup_id = a.usergroup_id ";
} else {
$options = ['where' => ['c.course_id = ?' => $course_id]];
$from = $this->usergroup_rel_course_table." c";
@@ -595,7 +608,7 @@ class UserGroup extends Model
/**
* Gets a list of session ids by user group.
*
- * @param int $id user group id
+ * @param int $id group id
*
* @return array
*/
@@ -638,9 +651,9 @@ class UserGroup extends Model
$relationConditionArray[] = " relation_type = $relation ";
}
}
- $relationCondition = " AND ( ";
+ $relationCondition = ' AND ( ';
$relationCondition .= implode('OR', $relationConditionArray);
- $relationCondition .= " ) ";
+ $relationCondition .= ' ) ';
}
if (empty($id)) {
@@ -709,7 +722,7 @@ class UserGroup extends Model
public function getUserGroupListByUser($userId, $filterByType = null)
{
$userId = (int) $userId;
- if ($this->useMultipleUrl) {
+ if ($this->getUseMultipleUrl()) {
$urlId = api_get_current_access_url_id();
$from = $this->usergroup_rel_user_table." u
INNER JOIN {$this->access_url_rel_usergroup} a
@@ -755,10 +768,11 @@ class UserGroup extends Model
public function get_usergroup_by_user($userId)
{
$userId = (int) $userId;
- if ($this->useMultipleUrl) {
+ if ($this->getUseMultipleUrl()) {
$urlId = api_get_current_access_url_id();
$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]]];
} else {
$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)
{
- $current_list = self::get_sessions_by_usergroup($usergroup_id);
- $user_list = self::get_users_by_usergroup($usergroup_id);
+ $current_list = $this->get_sessions_by_usergroup($usergroup_id);
+ $user_list = $this->get_users_by_usergroup($usergroup_id);
$delete_items = $new_items = [];
if (!empty($list)) {
@@ -853,8 +867,8 @@ class UserGroup extends Model
*/
public function subscribe_courses_to_usergroup($usergroup_id, $list, $delete_groups = true)
{
- $current_list = self::get_courses_by_usergroup($usergroup_id);
- $user_list = self::get_users_by_usergroup($usergroup_id);
+ $current_list = $this->get_courses_by_usergroup($usergroup_id);
+ $user_list = $this->get_users_by_usergroup($usergroup_id);
$delete_items = $new_items = [];
if (!empty($list)) {
@@ -874,7 +888,7 @@ class UserGroup extends Model
}
if ($delete_groups) {
- self::unsubscribe_courses_from_usergroup($usergroup_id, $delete_items);
+ $this->unsubscribe_courses_from_usergroup($usergroup_id, $delete_items);
}
// Adding new relationships
@@ -911,7 +925,7 @@ class UserGroup extends Model
{
// Deleting 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) {
$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,
$relationType = 0
) {
- $current_list = self::get_users_by_usergroup($usergroup_id);
- $course_list = self::get_courses_by_usergroup($usergroup_id);
- $session_list = self::get_sessions_by_usergroup($usergroup_id);
+ $current_list = $this->get_users_by_usergroup($usergroup_id);
+ $course_list = $this->get_courses_by_usergroup($usergroup_id);
+ $session_list = $this->get_sessions_by_usergroup($usergroup_id);
$session_list = array_filter($session_list);
$relationType = (int) $relationType;
@@ -1055,7 +1069,7 @@ class UserGroup extends Model
public function usergroup_exists($name)
{
$name = Database::escape_string($name);
- if ($this->useMultipleUrl) {
+ if ($this->getUseMultipleUrl()) {
$urlId = api_get_current_access_url_id();
$sql = "SELECT * FROM $this->table u
INNER JOIN {$this->access_url_rel_usergroup} a
@@ -1092,9 +1106,11 @@ class UserGroup extends Model
$start = (int) $start;
$limit = (int) $limit;
- if ($this->useMultipleUrl) {
+ if ($this->getUseMultipleUrl()) {
$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];
} else {
$from = $this->table.' u ';
@@ -1166,9 +1182,10 @@ class UserGroup extends Model
*/
public function getDataToExport($options = [])
{
- if ($this->useMultipleUrl) {
+ if ($this->getUseMultipleUrl()) {
$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)";
$options = ['where' => ['access_url_id = ? ' => $urlId]];
if ($this->allowTeachers()) {
@@ -1204,18 +1221,38 @@ class UserGroup extends Model
/**
* @param string $firstLetter
+ * @param int $limit
*
* @return array
*/
- public function filterByFirstLetter($firstLetter)
+ public function filterByFirstLetter($firstLetter, $limit = 0)
{
$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
name LIKE '".$firstLetter."%' OR
name LIKE '".api_strtolower($firstLetter)."%'
+ $urlCondition
ORDER BY name DESC ";
+ if (!empty($limit)) {
+ $sql .= " LIMIT $limit ";
+ }
+
$result = Database::query($sql);
return Database::store_result($result);
@@ -1237,7 +1274,19 @@ class UserGroup extends Model
$list = array_map('intval', $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);
return Database::store_result($result, 'ASSOC');
@@ -1262,7 +1311,7 @@ class UserGroup extends Model
}
$id = parent::save($params, $show_query);
if ($id) {
- if ($this->useMultipleUrl) {
+ if ($this->getUseMultipleUrl()) {
$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
*/
- 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)
{
- // Validation 1.
$group_id = (int) $group_id;
if (empty($group_id)) {
@@ -1383,7 +1431,7 @@ class UserGroup extends Model
}
// 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'];
@@ -1501,7 +1549,7 @@ class UserGroup extends Model
public function delete($id)
{
$id = (int) $id;
- if ($this->useMultipleUrl) {
+ if ($this->getUseMultipleUrl()) {
$this->unsubscribeToUrl($id, api_get_current_access_url_id());
}
@@ -1568,7 +1616,7 @@ class UserGroup extends Model
$charset = api_get_system_encoding();
$needle = api_convert_encoding($needle, $charset, 'utf-8');
$needle = Database::escape_string($needle);
- // search courses where username or firstname or lastname begins likes $needle
+
$sql = 'SELECT id, name
FROM '.Database::get_main_table(TABLE_USERGROUP).' u
WHERE name LIKE "'.$needle.'%"
@@ -1602,8 +1650,8 @@ class UserGroup extends Model
public function getUserListByUserGroup($id)
{
$id = (int) $id;
- $sql = "SELECT u.* FROM ".$this->table_user." u
- INNER JOIN ".$this->usergroup_rel_user_table." c
+ $sql = "SELECT u.* FROM $this->table_user u
+ INNER JOIN $this->usergroup_rel_user_table c
ON c.user_id = u.id
WHERE c.usergroup_id = $id"
;
@@ -1619,6 +1667,7 @@ class UserGroup extends Model
*/
public function setForm($form, $type = 'add', $data = [])
{
+ $header = '';
switch ($type) {
case 'add':
$header = get_lang('Add');
@@ -1628,9 +1677,9 @@ class UserGroup extends Model
break;
}
- $form->addElement('header', $header);
+ $form->addHeader($header);
- //Name
+ // Name
$form->addElement('text', 'name', get_lang('Name'), ['maxlength' => 255]);
$form->applyFilter('name', 'trim');
@@ -1690,7 +1739,7 @@ class UserGroup extends Model
* @param string $id group id
* @param string picture group name
* @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
*
* @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_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)) {
return true;
} else {
@@ -1924,11 +1973,15 @@ class UserGroup extends Model
{
$table_group_rel_user = $this->usergroup_rel_user_table;
$return_value = 0;
+ $user_id = (int) $user_id;
+ $group_id = (int) $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
- usergroup_id = ".intval($group_id)." AND
- user_id = ".intval($user_id)." ";
+ usergroup_id = $group_id AND
+ user_id = $user_id ";
$result = Database::query($sql);
if (Database::num_rows($result) > 0) {
$row = Database::fetch_array($result, 'ASSOC');
@@ -1947,7 +2000,7 @@ class UserGroup extends Model
*/
public function getUserRoleToString($userId, $groupId)
{
- $role = self::get_user_group_role($userId, $groupId);
+ $role = $this->get_user_group_role($userId, $groupId);
$roleToString = '';
switch ($role) {
@@ -1991,13 +2044,16 @@ class UserGroup extends Model
if (is_array($user_list) && is_array($group_list)) {
foreach ($group_list as $group_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) {
$sql = "INSERT INTO $table_url_rel_group
SET
- user_id = ".intval($user_id).",
- usergroup_id = ".intval($group_id).",
- relation_type = ".$relation_type;
+ user_id = $user_id ,
+ usergroup_id = $group_id ,
+ relation_type = $relation_type ";
$result = Database::query($sql);
if ($result) {
@@ -2057,7 +2113,7 @@ class UserGroup extends Model
{
$table_url_rel_group = $this->usergroup_rel_user_table;
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) {
$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)
{
$table_group_rel_user = $this->usergroup_rel_user_table;
- $group_id = intval($group_id);
- $user_id = intval($user_id);
+ $group_id = (int) $group_id;
+ $user_id = (int) $user_id;
+ $relation_type = (int) $relation_type;
$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";
Database::query($sql);
}
@@ -2122,27 +2179,40 @@ class UserGroup extends Model
}
}
- $sql = "SELECT
+ $sql = 'SELECT
g.picture,
g.name,
g.description,
g.id ,
- gu.relation_type
- FROM $tbl_group g
- INNER JOIN $table_group_rel_user gu
- ON gu.usergroup_id = g.id
- WHERE
+ gu.relation_type';
+
+ $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 .= " WHERE
g.group_type = ".self::SOCIAL_CLASS." AND
gu.user_id = $user_id
$relationCondition
+ $urlCondition
ORDER BY created_at DESC ";
$result = Database::query($sql);
-
$array = [];
if (Database::num_rows($result) > 0) {
while ($row = Database::fetch_array($result, 'ASSOC')) {
if ($with_image) {
- $picture = self::get_picture_group($row['id'], $row['picture'], 80);
+ $picture = $this->get_picture_group($row['id'], $row['picture'], 80);
$img = '';
$row['picture'] = $img;
}
@@ -2168,15 +2238,34 @@ class UserGroup extends Model
if (empty($num)) {
$num = 6;
} else {
- $num = intval($num);
+ $num = (int) $num;
}
// only show admins and readers
- $where_relation_condition = " WHERE g.group_type = ".self::SOCIAL_CLASS." AND
- gu.relation_type IN ('".GROUP_USER_PERMISSION_ADMIN."' , '".GROUP_USER_PERMISSION_READER."', '".GROUP_USER_PERMISSION_HRM."') ";
- $sql = "SELECT DISTINCT count(user_id) as count, g.picture, g.name, g.description, g.id
- FROM $tbl_group g
- INNER JOIN $table_group_rel_user gu
- ON gu.usergroup_id = g.id $where_relation_condition
+ $whereCondition = " WHERE
+ g.group_type = ".self::SOCIAL_CLASS." AND
+ gu.relation_type IN
+ ('".GROUP_USER_PERMISSION_ADMIN."' , '".GROUP_USER_PERMISSION_READER."', '".GROUP_USER_PERMISSION_HRM."') ";
+
+ $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
ORDER BY count DESC
LIMIT $num";
@@ -2185,7 +2274,7 @@ class UserGroup extends Model
$array = [];
while ($row = Database::fetch_array($result, 'ASSOC')) {
if ($with_image) {
- $picture = self::get_picture_group($row['id'], $row['picture'], 80);
+ $picture = $this->get_picture_group($row['id'], $row['picture'], 80);
$img = '
';
$row['picture'] = $img;
}
@@ -2200,13 +2289,13 @@ class UserGroup extends Model
/** Gets the last groups created
* @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
*
* @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;
$tbl_group = $this->table;
@@ -2214,7 +2303,7 @@ class UserGroup extends Model
if (empty($num)) {
$num = 6;
} else {
- $num = intval($num);
+ $num = (int) $num;
}
$where = " WHERE
@@ -2225,16 +2314,30 @@ class UserGroup extends Model
'".GROUP_USER_PERMISSION_MODERATOR."',
'".GROUP_USER_PERMISSION_HRM."')
";
- $sql = "SELECT DISTINCT
+ $sql = 'SELECT DISTINCT
count(user_id) as count,
g.picture,
g.name,
g.description,
- g.id
- FROM $tbl_group g
- INNER JOIN $table_group_rel_user gu
- ON gu.usergroup_id = g.id
+ 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 .= "
$where
+ $urlCondition
GROUP BY g.id
ORDER BY created_at DESC
LIMIT $num ";
@@ -2242,8 +2345,8 @@ class UserGroup extends Model
$result = Database::query($sql);
$array = [];
while ($row = Database::fetch_array($result, 'ASSOC')) {
- if ($with_image) {
- $picture = self::get_picture_group($row['id'], $row['picture'], 80);
+ if ($withImage) {
+ $picture = $this->get_picture_group($row['id'], $row['picture'], 80);
$img = '
';
$row['picture'] = $img;
}
@@ -2270,7 +2373,7 @@ class UserGroup extends Model
*/
public function get_users_by_group(
$group_id,
- $with_image = false,
+ $withImage = false,
$relation_type = [],
$from = null,
$limit = null,
@@ -2278,7 +2381,7 @@ class UserGroup extends Model
) {
$table_group_rel_user = $this->usergroup_rel_user_table;
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
- $group_id = intval($group_id);
+ $group_id = (int) $group_id;
if (empty($group_id)) {
return [];
@@ -2286,8 +2389,8 @@ class UserGroup extends Model
$limit_text = '';
if (isset($from) && isset($limit)) {
- $from = intval($from);
- $limit = intval($limit);
+ $from = (int) $from;
+ $limit = (int) $limit;
$limit_text = "LIMIT $from, $limit";
}
@@ -2296,7 +2399,7 @@ class UserGroup extends Model
} else {
$new_relation_type = [];
foreach ($relation_type as $rel) {
- $rel = intval($rel);
+ $rel = (int) $rel;
$new_relation_type[] = "'$rel'";
}
$relation_type = implode(',', $new_relation_type);
@@ -2318,10 +2421,9 @@ class UserGroup extends Model
$result = Database::query($sql);
$array = [];
while ($row = Database::fetch_array($result, 'ASSOC')) {
- if ($with_image) {
+ if ($withImage) {
$userInfo = api_get_user_info($row['id']);
$userPicture = UserManager::getUserPicture($row['id']);
-
$row['image'] = '
';
$row['user_info'] = $userInfo;
}
@@ -2343,7 +2445,7 @@ class UserGroup extends Model
{
$table_group_rel_user = $this->usergroup_rel_user_table;
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
- $group_id = intval($group_id);
+ $group_id = (int) $group_id;
if (empty($group_id)) {
return [];
@@ -2368,8 +2470,9 @@ class UserGroup extends Model
/**
* Shows the left column of the group page.
*
- * @param int group id
- * @param int user id
+ * @param int $group_id
+ * @param int $user_id
+ * @param string $show
*
* @return string
*/
@@ -2379,7 +2482,7 @@ class UserGroup extends Model
$group_info = $this->get($group_id);
//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
$links = '';
@@ -2470,10 +2573,11 @@ class UserGroup extends Model
public function delete_topic($group_id, $topic_id)
{
$table_message = Database::get_main_table(TABLE_MESSAGE);
- $topic_id = intval($topic_id);
- $group_id = intval($group_id);
+ $topic_id = (int) $topic_id;
+ $group_id = (int) $group_id;
+
$sql = "UPDATE $table_message SET
- msg_status = 3
+ msg_status = 3
WHERE
group_id = $group_id AND
(id = '$topic_id' OR parent_id = $topic_id)
@@ -2486,6 +2590,8 @@ class UserGroup extends Model
* @param string $relation_type
* @param bool $with_image
*
+ * @deprecated
+ *
* @return int
*/
public function get_groups_by_user_count(
@@ -2531,19 +2637,31 @@ class UserGroup extends Model
{
$group_table = $this->table;
$tag = Database::escape_string($tag);
- $from = intval($from);
- $number_of_items = intval($number_of_items);
+ $from = (int) $from;
+ $number_of_items = (int) $number_of_items;
$return = [];
$keyword = $tag;
- $sql = "SELECT g.id, g.name, g.description, g.url, g.picture
- FROM $group_table g";
+ $sql = 'SELECT g.id, g.name, g.description, g.url, g.picture ';
+ $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)) {
$sql .= " WHERE (
g.name LIKE '%".$keyword."%' OR
g.description LIKE '%".$keyword."%' OR
g.url LIKE '%".$keyword."%'
- )";
+ ) $urlCondition
+ ";
+ } else {
+ $sql .= " WHERE 1 = 1 $urlCondition ";
}
$direction = 'ASC';
@@ -2551,10 +2669,9 @@ class UserGroup extends Model
$direction = 'ASC';
}
- $from = intval($from);
- $number_of_items = intval($number_of_items);
-
- $sql .= " LIMIT $from,$number_of_items";
+ $from = (int) $from;
+ $number_of_items = (int) $number_of_items;
+ $sql .= " LIMIT $from, $number_of_items";
$res = Database::query($sql);
if (Database::num_rows($res) > 0) {
@@ -2579,10 +2696,9 @@ class UserGroup extends Model
$group_id = (int) $group_id;
$max_level = 10;
- $select_part = "SELECT ";
+ $select_part = 'SELECT ';
$cond_part = '';
for ($i = 1; $i <= $max_level; $i++) {
- $g_number = $i;
$rg_number = $i - 1;
if ($i == $max_level) {
$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, ";
}
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 {
- $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'";
@@ -2645,7 +2764,7 @@ class UserGroup extends Model
}
foreach ($groupsId as $groupId) {
- $groupUsers = self::get_users_by_group($groupId);
+ $groupUsers = $this->get_users_by_group($groupId);
if (empty($groupUsers)) {
continue;
@@ -2656,7 +2775,7 @@ class UserGroup extends Model
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);
$groupRelGroupTable = Database::get_main_table(TABLE_USERGROUP_REL_USERGROUP);
- $select = "SELECT ";
+ $select = 'SELECT ';
$from = "FROM $groupTable g1 ";
for ($i = 1; $i <= $levels; $i++) {
$tableIndexNumber = $i;
$tableIndexJoinNumber = $i - 1;
$select .= "g$i.id as id_$i ";
- $select .= ($i != $levels ? ", " : null);
+ $select .= $i != $levels ? ', ' : null;
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 {
$from .= "LEFT JOIN $groupRelGroupTable gg$tableIndexJoinNumber ";
$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)
{
$table = Database::get_main_table(TABLE_USERGROUP_REL_USERGROUP);
- $group_id = intval($group_id);
- $parent_group_id = intval($parent_group_id);
+ $group_id = (int) $group_id;
+ $parent_group_id = (int) $parent_group_id;
if ($parent_group_id == 0) {
$sql = "DELETE FROM $table WHERE subgroup_id = $group_id";
} else {
@@ -2780,7 +2900,6 @@ class UserGroup extends Model
}
$nameList = '