Fix queries when using multiple URL config see BT#15891

pull/2958/head
Julio Montoya 6 years ago
parent 9c2d6005c9
commit 1dacd354a3
  1. 2
      main/admin/access_url_edit_usergroup_to_url.php
  2. 2
      main/admin/usergroup_user_import.php
  3. 4
      main/inc/lib/formvalidator/FormValidator.class.php
  4. 2
      main/inc/lib/sessionmanager.lib.php
  5. 423
      main/inc/lib/usergroup.lib.php
  6. 6
      main/social/groups.php

@ -109,7 +109,7 @@ echo '</div>';
api_display_tool_title($tool_name); api_display_tool_title($tool_name);
$noUserGroupList = $userGroupList = []; $noUserGroupList = $userGroupList = [];
$ajax_search = $add_type == 'unique' ? true : false; $ajax_search = $add_type === 'unique' ? true : false;
if ($ajax_search) { if ($ajax_search) {
$userGroups = UrlManager::get_url_rel_usergroup_data($access_url_id); $userGroups = UrlManager::get_url_rel_usergroup_data($access_url_id);

@ -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))."'"; WHERE username = '".Database::escape_string(UserManager::purify_username($user_class['UserName'], $purification_option_for_usernames))."'";
$res1 = Database::query($sql1); $res1 = Database::query($sql1);
$obj1 = Database::fetch_object($res1); $obj1 = Database::fetch_object($res1);
$id = $usergroup->get_id_by_name($user_class['ClassName']); $id = $usergroup->getIdByName($user_class['ClassName']);
if ($obj1 && $id) { if ($obj1 && $id) {
$csv_data[$id]['user_list'][] = $obj1->user_id; $csv_data[$id]['user_list'][] = $obj1->user_id;

@ -914,7 +914,9 @@ EOT;
*/ */
public function addHeader($text) public function addHeader($text)
{ {
$this->addElement('header', $text); if (!empty($text)) {
$this->addElement('header', $text);
}
} }
/** /**

@ -9161,7 +9161,7 @@ SQL;
} }
$usergroup->subscribe_sessions_to_usergroup( $usergroup->subscribe_sessions_to_usergroup(
$usergroup->get_id_by_name($className), $usergroup->getIdByName($className),
[$sessionId], [$sessionId],
$deleteClassSessions $deleteClassSessions
); );

@ -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>';
} }

@ -21,10 +21,10 @@ $allowed_views = ['mygroups', 'newest', 'pop'];
$content = null; $content = null;
if (isset($_GET['view']) && in_array($_GET['view'], $allowed_views)) { if (isset($_GET['view']) && in_array($_GET['view'], $allowed_views)) {
if ($_GET['view'] == 'mygroups') { if ($_GET['view'] === 'mygroups') {
$interbreadcrumb[] = ['url' => 'groups.php', 'name' => get_lang('Groups')]; $interbreadcrumb[] = ['url' => 'groups.php', 'name' => get_lang('Groups')];
$interbreadcrumb[] = ['url' => '#', 'name' => get_lang('MyGroups')]; $interbreadcrumb[] = ['url' => '#', 'name' => get_lang('MyGroups')];
} elseif ($_GET['view'] == 'newest') { } elseif ($_GET['view'] === 'newest') {
$interbreadcrumb[] = ['url' => 'groups.php', 'name' => get_lang('Groups')]; $interbreadcrumb[] = ['url' => 'groups.php', 'name' => get_lang('Groups')];
$interbreadcrumb[] = ['url' => '#', 'name' => get_lang('Newest')]; $interbreadcrumb[] = ['url' => '#', 'name' => get_lang('Newest')];
} else { } else {
@ -41,9 +41,7 @@ if (isset($_GET['view']) && in_array($_GET['view'], $allowed_views)) {
// getting group information // getting group information
$relation_group_title = ''; $relation_group_title = '';
$my_group_role = 0; $my_group_role = 0;
$usergroup = new UserGroup(); $usergroup = new UserGroup();
$create_thread_link = ''; $create_thread_link = '';
$show_menu = 'browse_groups'; $show_menu = 'browse_groups';

Loading…
Cancel
Save