Minor - merge from 1.11.x

pull/2715/head
Julio Montoya 8 years ago
parent 18fad1b459
commit 1f3f113fca
  1. 4
      main/inc/lib/course.lib.php
  2. 2
      main/inc/lib/message.lib.php
  3. 195
      main/inc/lib/sessionmanager.lib.php
  4. 9
      main/inc/lib/social.lib.php
  5. 86
      main/session/add_users_to_session.php
  6. 8
      main/session/resume_session.php
  7. 2
      main/social/personal_data.php
  8. 4
      main/survey/ch_multipleresponse.php
  9. 34
      main/tracking/messages.php

@ -6104,8 +6104,8 @@ class CourseManager
*/
public static function addGroupMultiSelect($form, $groupInfo, $to = [])
{
$group_users = GroupManager::get_subscribed_users($groupInfo);
$array = self::buildSelectOptions([$groupInfo], $group_users, $to);
$groupUsers = GroupManager::get_subscribed_users($groupInfo);
$array = self::buildSelectOptions([$groupInfo], $groupUsers, $to);
$result = [];
foreach ($array as $content) {

@ -699,7 +699,7 @@ class MessageManager
).' <br />'.$message;
self::send_message_simple(
$drhInfo['user_id'],
$drhInfo['id'],
$subject,
$message,
$sender_id,

@ -621,9 +621,9 @@ class SessionManager
foreach ($sessions as $session) {
$session_id = $session['id'];
if ($showCountUsers) {
$session['users'] = SessionManager::get_users_by_session(
$session['users'] = self::get_users_by_session(
$session['id'],
null,
0,
true
);
}
@ -1874,6 +1874,7 @@ class SessionManager
* @param array $userList
* @param int $session_visibility
* @param bool $empty_users
* @param bool $registerUsersToAllCourses
*
* @return bool
*/
@ -1881,7 +1882,8 @@ class SessionManager
$sessionId,
$userList,
$session_visibility = SESSION_VISIBLE_READ_ONLY,
$empty_users = true
$empty_users = true,
$registerUsersToAllCourses = true
) {
if ($sessionId != strval(intval($sessionId))) {
return false;
@ -1990,96 +1992,98 @@ class SessionManager
}
}
foreach ($course_list as $courseId) {
// for each course in the session
$nbr_users = 0;
$courseId = (int) $courseId;
$sql = "SELECT DISTINCT user_id
FROM $tbl_session_rel_course_rel_user
WHERE
session_id = $sessionId AND
c_id = $courseId AND
status = 0
";
$result = Database::query($sql);
$existingUsers = [];
while ($row = Database::fetch_array($result)) {
$existingUsers[] = $row['user_id'];
}
// Delete existing users
if ($empty_users) {
foreach ($existingUsers as $existing_user) {
if (!in_array($existing_user, $userList)) {
$sql = "DELETE FROM $tbl_session_rel_course_rel_user
WHERE
session_id = $sessionId AND
c_id = $courseId AND
user_id = $existing_user AND
status = 0 ";
$result = Database::query($sql);
Event::addEvent(
LOG_SESSION_DELETE_USER_COURSE,
LOG_USER_ID,
$existing_user,
api_get_utc_datetime(),
api_get_user_id(),
$courseId,
$sessionId
);
if ($registerUsersToAllCourses) {
foreach ($course_list as $courseId) {
// for each course in the session
$nbr_users = 0;
$courseId = (int) $courseId;
if (Database::affected_rows($result)) {
$nbr_users--;
}
}
$sql = "SELECT DISTINCT user_id
FROM $tbl_session_rel_course_rel_user
WHERE
session_id = $sessionId AND
c_id = $courseId AND
status = 0
";
$result = Database::query($sql);
$existingUsers = [];
while ($row = Database::fetch_array($result)) {
$existingUsers[] = $row['user_id'];
}
}
// Replace with this new function
// insert new users into session_rel_course_rel_user and ignore if they already exist
foreach ($userList as $enreg_user) {
if (!in_array($enreg_user, $existingUsers)) {
$status = self::get_user_status_in_course_session(
$enreg_user,
$courseId,
$sessionId
);
// Delete existing users
if ($empty_users) {
foreach ($existingUsers as $existing_user) {
if (!in_array($existing_user, $userList)) {
$sql = "DELETE FROM $tbl_session_rel_course_rel_user
WHERE
session_id = $sessionId AND
c_id = $courseId AND
user_id = $existing_user AND
status = 0 ";
$result = Database::query($sql);
Event::addEvent(
LOG_SESSION_DELETE_USER_COURSE,
LOG_USER_ID,
$existing_user,
api_get_utc_datetime(),
api_get_user_id(),
$courseId,
$sessionId
);
// Avoid duplicate entries.
if ($status === false || ($status !== false && $status != 0)) {
$enreg_user = (int) $enreg_user;
$sql = "INSERT IGNORE INTO $tbl_session_rel_course_rel_user (session_id, c_id, user_id, visibility, status)
VALUES($sessionId, $courseId, $enreg_user, $session_visibility, 0)";
$result = Database::query($sql);
if (Database::affected_rows($result)) {
$nbr_users++;
if (Database::affected_rows($result)) {
$nbr_users--;
}
}
}
}
Event::addEvent(
LOG_SESSION_ADD_USER_COURSE,
LOG_USER_ID,
// Replace with this new function
// insert new users into session_rel_course_rel_user and ignore if they already exist
foreach ($userList as $enreg_user) {
if (!in_array($enreg_user, $existingUsers)) {
$status = self::get_user_status_in_course_session(
$enreg_user,
api_get_utc_datetime(),
api_get_user_id(),
$courseId,
$sessionId
);
// Avoid duplicate entries.
if ($status === false || ($status !== false && $status != 0)) {
$enreg_user = (int) $enreg_user;
$sql = "INSERT IGNORE INTO $tbl_session_rel_course_rel_user (session_id, c_id, user_id, visibility, status)
VALUES($sessionId, $courseId, $enreg_user, $session_visibility, 0)";
$result = Database::query($sql);
if (Database::affected_rows($result)) {
$nbr_users++;
}
Event::addEvent(
LOG_SESSION_ADD_USER_COURSE,
LOG_USER_ID,
$enreg_user,
api_get_utc_datetime(),
api_get_user_id(),
$courseId,
$sessionId
);
}
}
}
}
// Count users in this session-course relation
$sql = "SELECT COUNT(user_id) as nbUsers
FROM $tbl_session_rel_course_rel_user
WHERE session_id = $sessionId AND c_id = $courseId AND status<>2";
$rs = Database::query($sql);
list($nbr_users) = Database::fetch_array($rs);
// update the session-course relation to add the users total
$sql = "UPDATE $tbl_session_rel_course SET nbr_users = $nbr_users
WHERE session_id = $sessionId AND c_id = $courseId";
Database::query($sql);
// Count users in this session-course relation
$sql = "SELECT COUNT(user_id) as nbUsers
FROM $tbl_session_rel_course_rel_user
WHERE session_id = $sessionId AND c_id = $courseId AND status<>2";
$rs = Database::query($sql);
list($nbr_users) = Database::fetch_array($rs);
// update the session-course relation to add the users total
$sql = "UPDATE $tbl_session_rel_course SET nbr_users = $nbr_users
WHERE session_id = $sessionId AND c_id = $courseId";
Database::query($sql);
}
}
// Delete users from the session
@ -2126,17 +2130,10 @@ class SessionManager
}
// update number of users in the session
$nbr_users = count($userList);
if ($empty_users) {
// update number of users in the session
$sql = "UPDATE $tbl_session SET nbr_users= $nbr_users
WHERE id = $sessionId ";
Database::query($sql);
} else {
$sql = "UPDATE $tbl_session SET nbr_users = nbr_users + $nbr_users
WHERE id = $sessionId";
Database::query($sql);
}
$sql = "UPDATE $tbl_session
SET nbr_users = (SELECT count(user_id) FROM $tbl_session_rel_user WHERE session_id = $sessionId)
WHERE id = $sessionId";
Database::query($sql);
}
/**
@ -7152,11 +7149,12 @@ SQL;
/**
* Get the count of user courses in session.
*
* @param int $sessionId The session id
* @param int $sessionId
* @param int $courseId
*
* @return array
*/
public static function getTotalUserCoursesInSession($sessionId)
public static function getTotalUserCoursesInSession($sessionId, $courseId = 0)
{
$tableUser = Database::get_main_table(TABLE_MAIN_USER);
$table = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
@ -7165,6 +7163,12 @@ SQL;
return [];
}
$courseCondition = '';
if (!empty($courseId)) {
$courseId = (int) $courseId;
$courseCondition = " c_id = $courseId AND ";
}
$sql = "SELECT
COUNT(u.id) as count,
u.id,
@ -7173,7 +7177,9 @@ SQL;
FROM $table scu
INNER JOIN $tableUser u
ON scu.user_id = u.id
WHERE scu.session_id = ".intval($sessionId)."
WHERE
$courseCondition
scu.session_id = ".intval($sessionId)."
GROUP BY u.id";
$result = Database::query($sql);
@ -8192,7 +8198,6 @@ SQL;
'name' => 'id',
'index' => 's.id',
'width' => '160',
'width' => '160',
'hidden' => 'true',
],
[

@ -1282,12 +1282,12 @@ class SocialManager extends UserManager
$course_url = '&amp;cidReq='.Security::remove_XSS($_GET['cidReq']);
}
$hide = api_get_configuration_value('hide_complete_name_in_whoisonline');
foreach ($user_list as $uid) {
$user_info = api_get_user_info($uid, true);
$lastname = $user_info['lastname'];
$firstname = $user_info['firstname'];
$completeName = $firstname.', '.$lastname;
$user_rol = $user_info['status'] == 1 ? Display::return_icon('teacher.png', get_lang('Teacher'), null, ICON_SIZE_TINY) : Display::return_icon('user.png', get_lang('Student'), null, ICON_SIZE_TINY);
$status_icon_chat = null;
if (isset($user_info['user_is_online_in_chat']) && $user_info['user_is_online_in_chat'] == 1) {
@ -1301,6 +1301,13 @@ class SocialManager extends UserManager
if (api_get_setting('show_official_code_whoisonline') == 'true') {
$officialCode .= '<div class="items-user-official-code"><p style="min-height: 30px;" title="'.get_lang('OfficialCode').'">'.$user_info['official_code'].'</p></div>';
}
if ($hide === true) {
$completeName = '';
$firstname = '';
$lastname = '';
}
$img = '<img class="img-responsive img-circle" title="'.$completeName.'" alt="'.$completeName.'" src="'.$userPicture.'">';
$url = null;

@ -281,6 +281,8 @@ function add_user_to_session (code, content) {
}
destination.options[destination.length] = new Option(content,code);
destination.selectedIndex = -1;
$("#remove_user").show();
sortOptions(destination.options);
}
@ -327,14 +329,14 @@ if (isset($_POST['form_sent']) && $_POST['form_sent']) {
}
if ($form_sent == 1) {
$notEmptyList = api_get_configuration_value('session_multiple_subscription_students_list_avoid_emptying');
//$notEmptyList = api_get_configuration_value('session_multiple_subscription_students_list_avoid_emptying');
// Added a parameter to send emails when registering a user
SessionManager::subscribeUsersToSession(
$id_session,
$UserList,
null,
!$notEmptyList
false
);
Display::addFlash(Display::return_message(get_lang('Updated')));
header('Location: resume_session.php?id_session='.$id_session);
@ -364,43 +366,6 @@ if ($orderListByOfficialCode === 'true') {
}
if ($ajax_search) {
$sql = "
SELECT u.id, u.lastname, u.firstname, u.username, session_id, u.official_code
FROM $tbl_user u
INNER JOIN $tbl_session_rel_user su
ON su.user_id = u.id
AND su.relation_type <> ".SESSION_RELATION_TYPE_RRHH."
AND su.session_id = ".intval($id_session)."
WHERE u.status<>".DRH."
AND u.status <> 6
$order_clause
";
if (api_is_multiple_url_enabled()) {
$tbl_user_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1) {
$sql = "
SELECT u.id, u.lastname, u.firstname, u.username, session_id, u.official_code
FROM $tbl_user u
INNER JOIN $tbl_session_rel_user su
ON su.user_id = u.id
AND su.relation_type <> ".SESSION_RELATION_TYPE_RRHH."
AND su.session_id = ".intval($id_session)."
INNER JOIN $tbl_user_rel_access_url url_user ON (url_user.user_id = u.id)
WHERE access_url_id = $access_url_id
AND u.status <> ".DRH."
AND u.status <> 6
$order_clause
";
}
}
$result = Database::query($sql);
$users = Database::store_result($result);
foreach ($users as $user) {
$sessionUsersList[$user['id']] = $user;
}
$sessionUserInfo = SessionManager::getTotalUserCoursesInSession($id_session);
// Filter the user list in all courses in the session
@ -413,10 +378,6 @@ if ($ajax_search) {
if (!array_key_exists($sessionUser['id'], $sessionUsersList)) {
continue;
}
/*if ($sessionUser['count'] != $countSessionCoursesList) {
unset($sessionUsersList[$sessionUser['id']]);
}*/
}
unset($users); //clean to free memory
@ -686,11 +647,12 @@ $newLinks .= Display::url(
<div id="multiple-add-session" class="row">
<div class="col-md-4">
<div class="form-group">
<label><?php echo get_lang('UserListInPlatform'); ?> </label>
<?php
if (!($add_type == 'multiple')) {
?>
<input type="text" id="user_to_add" onkeyup="xajax_search_users(this.value,'single')"
<input
placeholder="<?php echo get_lang('Search'); ?>"
type="text" id="user_to_add" onkeyup="xajax_search_users(this.value,'single')"
class="form-control"/>
<div id="ajax_list_users_single" class="select-list-ajax"></div>
<?php
@ -749,12 +711,7 @@ $newLinks .= Display::url(
<?php
if ($ajax_search) {
?>
<div class="separate-action">
<button name="remove_user" class="btn btn-primary" type="button"
onclick="remove_item(document.getElementById('destination_users'))">
<em class="fa fa-chevron-left"></em>
</button>
</div>
<?php
} else {
?>
@ -787,30 +744,15 @@ $newLinks .= Display::url(
</div>
<div class="col-md-4">
<label><?php echo get_lang('UserListInSession'); ?> :</label>
<select id="destination_users" name="sessionUsersList[]" multiple="multiple" size="15"
class="form-control">
<?php
foreach ($sessionUsersList as $enreg) {
?>
<option value="<?php echo $enreg['id']; ?>">
<?php
$personName = $enreg['lastname'].' '.$enreg['firstname'].' ('.$enreg['username'].') '
.$enreg['official_code'];
if ($showOfficialCode) {
$officialCode =
!empty($enreg['official_code']) ? $enreg['official_code'].' - ' : '? - ';
$personName =
$officialCode.$enreg['lastname'].' '.$enreg['firstname'].' ('.$enreg['username']
.')';
}
echo $personName; ?>
</option>
<?php
}
unset($sessionUsersList);
?>
</select>
<br />
<button style="display:none" id="remove_user" name="remove_user" class="btn btn-primary" type="button"
onclick="remove_item(document.getElementById('destination_users'))">
<?php echo get_lang('Remove'); ?> <em class="fa fa-trash"></em>
</button>
</div>
</div>
</form>

@ -221,8 +221,10 @@ if ($session->getNbrCourses() === 0) {
api_get_path(WEB_CODE_PATH).'admin/skill_rel_course.php?session_id='.$sessionId.'&course_id='.$course->getId()
);
}
$courseItem .= $orderButtons;
$courseItem .= '<a href="add_users_to_session_course.php?id_session='.$sessionId.'&course_id='.$course->getId().'">'.
Display::return_icon('new_user.png', get_lang('AddUsers'), ['style' => 'width:22px'], ICON_SIZE_MEDIUM).'</a>';
$courseItem .= '<a href="session_course_user_list.php?id_session='.$sessionId.'&course_code='.$course->getCode().'">'.
Display::return_icon('user.png', get_lang('Users'), '', ICON_SIZE_SMALL).'</a>';
$courseItem .= '<a href="'.api_get_path(WEB_CODE_PATH).'user/user_import.php?action=import&cidReq='.$course->getCode().'&id_session='.$sessionId.'">'.
@ -243,8 +245,8 @@ if ($session->getNbrCourses() === 0) {
}
$courseListToShow .= '</table><br />';
$url = Display::url(
Display::return_icon('edit.png', get_lang('Edit'), [], ICON_SIZE_SMALL),
$url = '&nbsp;'.Display::url(
Display::return_icon('user_subscribe_session.png', get_lang('Add'), [], ICON_SIZE_SMALL),
"add_users_to_session.php?page=resume_session.php&id_session=$sessionId"
);
$url .= Display::url(

@ -128,7 +128,7 @@ switch ($action) {
$userInfo
);
$url = api_get_path(WEB_CODE_PATH).'admin/';
$url = api_get_path(WEB_CODE_PATH).'admin/user_list_consent.php';
$link = Display::url($url, $url);
$subject = get_lang('RequestForAccountDeletion');
$content = sprintf(

@ -49,9 +49,9 @@ class ch_multipleresponse extends survey_question
$answers = []
) {
if ($questionData['display'] == 'vertical') {
$class = 'checkbox';
$class = 'checkbox ';
} else {
$class = 'checkbox-inline';
$class = 'checkbox-inline ';
}
$name = 'question'.$questionData['question_id'];

@ -23,8 +23,38 @@ if (empty($fromUserId) || empty($toUserId)) {
if (api_is_drh()) {
$isFollowed = UserManager::is_user_followed_by_drh($fromUserId, api_get_user_id());
if (!$isFollowed) {
api_not_allowed(true);
if (api_drh_can_access_all_session_content()) {
$students = SessionManager::getAllUsersFromCoursesFromAllSessionFromStatus(
'drh_all',
api_get_user_id(),
false,
0, //$from,
null, //$limit,
null, //$column,
'desc', //$direction,
null, //$keyword,
null, //$active,
null, //$lastConnectionDate,
null,
null,
STUDENT
);
if (empty($students)) {
api_not_allowed(true);
}
$userIdList = [];
foreach ($students as $student) {
$userIdList[] = $student['user_id'];
}
if (!in_array($fromUserId, $userIdList)) {
api_not_allowed(true);
}
} else {
if (!$isFollowed) {
api_not_allowed(true);
}
}
}

Loading…
Cancel
Save