Merge branch '1.9.x' of github.com:chamilo/chamilo-lms into 1.9.x

1.9.x
Yannick Warnier 11 years ago
commit 466e086899
  1. 4
      main/admin/user_edit.php
  2. 714
      main/admin/user_move_stats.php
  3. 158
      main/inc/lib/course.lib.php
  4. 178
      main/inc/lib/sessionmanager.lib.php

@ -260,7 +260,6 @@ $creatorInfo = api_get_user_info($user_data['creator_id']);
$date = sprintf(get_lang('CreatedByXYOnZ'), 'user_information.php?user_id='.$user_data['creator_id'], $creatorInfo['username'], $user_data['registration_date']); $date = sprintf(get_lang('CreatedByXYOnZ'), 'user_information.php?user_id='.$user_data['creator_id'], $creatorInfo['username'], $user_data['registration_date']);
$form->addElement('html', '<div class="control-group"><label class="control-label">'.get_lang('RegistrationDate').'</label><div class="controls">'.$date.'</div></div>'); $form->addElement('html', '<div class="control-group"><label class="control-label">'.get_lang('RegistrationDate').'</label><div class="controls">'.$date.'</div></div>');
if (!$user_data['platform_admin']) { if (!$user_data['platform_admin']) {
// Expiration Date // Expiration Date
$form->addElement('radio', 'radio_expiration_date', get_lang('ExpirationDate'), get_lang('NeverExpires'), 0); $form->addElement('radio', 'radio_expiration_date', get_lang('ExpirationDate'), get_lang('NeverExpires'), 0);
@ -274,7 +273,6 @@ if (!$user_data['platform_admin']) {
$form->addElement('radio', 'active', '', get_lang('Inactive'), 0); $form->addElement('radio', 'active', '', get_lang('Inactive'), 0);
} }
// EXTRA FIELDS // EXTRA FIELDS
$return_params = UserManager::set_extra_fields_in_form($form, $extra_data, 'user_edit', true, $user_id); $return_params = UserManager::set_extra_fields_in_form($form, $extra_data, 'user_edit', true, $user_id);
$jquery_ready_content = $return_params['jquery_ready_content']; $jquery_ready_content = $return_params['jquery_ready_content'];
@ -432,7 +430,7 @@ if ($form->validate()) {
} else { } else {
UserManager::update_extra_field_value($user_id, substr($key, 6), $value); UserManager::update_extra_field_value($user_id, substr($key, 6), $value);
} }
} elseif (strpos($key,'remove_extra') !== false) { } elseif (strpos($key, 'remove_extra') !== false) {
$extra_value = Security::filter_filename(urldecode(key($value))); $extra_value = Security::filter_filename(urldecode(key($value)));
// To remove from user_field_value and folder // To remove from user_field_value and folder
UserManager::update_extra_field_value($user_id, substr($key,13), $extra_value); UserManager::update_extra_field_value($user_id, substr($key,13), $extra_value);

File diff suppressed because it is too large Load Diff

@ -1379,7 +1379,7 @@ class CourseManager
$session_id = intval($session_id); $session_id = intval($session_id);
$course_code = Database::escape_string($course_code); $course_code = Database::escape_string($course_code);
$where = array(); $where = array();
if (empty($order_by)) { if (empty($order_by)) {
$order_by = 'user.lastname, user.firstname'; $order_by = 'user.lastname, user.firstname';
if (api_is_western_name_order()) { if (api_is_western_name_order()) {
@ -1917,6 +1917,13 @@ class CourseManager
} }
} }
/**
* @param int $session_id
* @param string $course_code
* @param string $separator
* @param bool $add_link_to_profile
* @return null|string
*/
public static function get_coachs_from_course_to_string( public static function get_coachs_from_course_to_string(
$session_id = 0, $session_id = 0,
$course_code = null, $course_code = null,
@ -1943,6 +1950,11 @@ class CourseManager
return $coaches_to_string; return $coaches_to_string;
} }
/**
* @param string $course_code
* @param int $session_id
* @return string
*/
public static function get_coach_list_from_course_code_to_string($course_code, $session_id) public static function get_coach_list_from_course_code_to_string($course_code, $session_id)
{ {
$tutor_data = ''; $tutor_data = '';
@ -1960,11 +1972,13 @@ class CourseManager
} }
/** /**
* Return user info array of all users registered in the specified course * Return user info array of all users registered in the specified course
* this includes the users of the course itsel and the users of all linked courses. * this includes the users of the course itself and the users of all linked courses.
* *
* @param array $course_info * @param string $course_code
* @return array with user info * @param bool $with_sessions
* @param int $session_id
* @return array with user info
*/ */
public static function get_real_and_linked_user_list($course_code, $with_sessions = true, $session_id = 0) public static function get_real_and_linked_user_list($course_code, $with_sessions = true, $session_id = 0)
{ {
@ -1991,14 +2005,14 @@ class CourseManager
} }
/** /**
* Return an array of arrays, listing course info of all courses in the list * Return an array of arrays, listing course info of all courses in the list
* linked to the real course $real_course_code, to which the user $user_id is subscribed. * linked to the real course $real_course_code, to which the user $user_id is subscribed.
* *
* @param $user_id, the id (int) of the user * @param $user_id, the id (int) of the user
* @param $real_course_code, the id (char) of the real course * @param $real_course_code, the id (char) of the real course
* *
* @return array of course info arrays * @return array of course info arrays
* @deprecated virtual course feature is not supported * @deprecated virtual course feature is not supported
*/ */
public static function get_list_of_virtual_courses_for_specific_user_and_real_course($user_id, $course_code) public static function get_list_of_virtual_courses_for_specific_user_and_real_course($user_id, $course_code)
{ {
@ -2027,9 +2041,9 @@ class CourseManager
/** /**
* Get the list of groups from the course * Get the list of groups from the course
* @param string Course code * @param string $course_code
* @param int Session ID (optional) * @param int $session_id Session ID (optional)
* @param boolean get empty groups (optional) * @param boolean $in_get_empty_group get empty groups (optional)
* @return array List of groups info * @return array List of groups info
*/ */
public static function get_group_list_of_course($course_code, $session_id = 0, $in_get_empty_group = 0) public static function get_group_list_of_course($course_code, $session_id = 0, $in_get_empty_group = 0)
@ -2482,10 +2496,12 @@ class CourseManager
$course_found = true; $course_found = true;
$course_sort = $courses['sort']; $course_sort = $courses['sort'];
if ($counter == 0) { if ($counter == 0) {
$sql = 'UPDATE '.$TABLECOURSUSER.' SET sort = sort+1 WHERE user_id= "'.$user_id.'" AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.' AND user_course_cat="0" AND sort > "'.$course_sort.'"'; $sql = 'UPDATE '.$TABLECOURSUSER.' SET sort = sort+1
WHERE user_id= "'.$user_id.'" AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.' AND user_course_cat="0" AND sort > "'.$course_sort.'"';
$course_sort++; $course_sort++;
} else { } else {
$sql = 'UPDATE '.$TABLECOURSUSER.' SET sort = sort+1 WHERE user_id= "'.$user_id.'" AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.' AND user_course_cat="0" AND sort >= "'.$course_sort.'"'; $sql = 'UPDATE '.$TABLECOURSUSER.' SET sort = sort+1
WHERE user_id= "'.$user_id.'" AND relation_type<>'.COURSE_RELATION_TYPE_RRHH.' AND user_course_cat="0" AND sort >= "'.$course_sort.'"';
} }
Database::query($sql); Database::query($sql);
break; break;
@ -2610,7 +2626,11 @@ class CourseManager
} }
} }
public static function get_special_course_list() { /**
* @return array
*/
public static function get_special_course_list()
{
$tbl_course_field = Database :: get_main_table(TABLE_MAIN_COURSE_FIELD); $tbl_course_field = Database :: get_main_table(TABLE_MAIN_COURSE_FIELD);
$tbl_course_field_value = Database :: get_main_table(TABLE_MAIN_COURSE_FIELD_VALUES); $tbl_course_field_value = Database :: get_main_table(TABLE_MAIN_COURSE_FIELD_VALUES);
@ -2643,12 +2663,13 @@ class CourseManager
/** /**
* Get list of courses for a given user * Get list of courses for a given user
* @param int user ID * @param int $user_id
* @param boolean Whether to include courses from session or not * @param boolean $include_sessions Whether to include courses from session or not
* @return array List of codes and db names * @return array List of codes and db names
* @author isaac flores paz * @author isaac flores paz
*/ */
public static function get_courses_list_by_user_id($user_id, $include_sessions = false) { public static function get_courses_list_by_user_id($user_id, $include_sessions = false)
{
$user_id = intval($user_id); $user_id = intval($user_id);
$course_list = array(); $course_list = array();
$codes = array(); $codes = array();
@ -2712,6 +2733,7 @@ class CourseManager
} }
} }
} }
return $course_list; return $course_list;
} }
@ -2876,7 +2898,8 @@ class CourseManager
} }
/** /**
* Update course attributes. Will only update attributes with a non-empty value. Note that you NEED to check that your attributes are valid before using this function * Update course attributes. Will only update attributes with a non-empty value.
* Note that you NEED to check that your attributes are valid before using this function
* *
* @param int Course id * @param int Course id
* @param array Associative array with field names as keys and field values as values * @param array Associative array with field names as keys and field values as values
@ -3014,9 +3037,10 @@ class CourseManager
$extra_fields = array(); $extra_fields = array();
while($rowcf = Database::fetch_array($res_field)) { while($rowcf = Database::fetch_array($res_field)) {
$extra_field_id = $rowcf['id']; $extra_field_id = $rowcf['id'];
$sql_field_value = "SELECT field_value FROM $tbl_course_field_value WHERE course_code = '$code' AND field_id = '$extra_field_id' "; $sql = "SELECT field_value FROM $tbl_course_field_value
$res_field_value = Database::query($sql_field_value); WHERE course_code = '$code' AND field_id = '$extra_field_id'";
if(Database::num_rows($res_field_value) > 0 ) { $res_field_value = Database::query($sql);
if (Database::num_rows($res_field_value) > 0 ) {
$r_field_value = Database::fetch_row($res_field_value); $r_field_value = Database::fetch_row($res_field_value);
$rowcf['extra_field_value'] = $r_field_value[0]; $rowcf['extra_field_value'] = $r_field_value[0];
} }
@ -3042,8 +3066,9 @@ class CourseManager
if(!$row) { if(!$row) {
return null; return null;
} else { } else {
$sql_field_value = "SELECT field_value FROM $tbl_course_field_value WHERE course_code = '$code' AND field_id = '{$row->id}';"; $sql = "SELECT field_value FROM $tbl_course_field_value
$res_field_value = Database::query($sql_field_value); WHERE course_code = '$code' AND field_id = '{$row->id}';";
$res_field_value = Database::query($sql);
$row_field_value = Database::fetch_object($res_field_value); $row_field_value = Database::fetch_object($res_field_value);
if(!$row_field_value) { if(!$row_field_value) {
return null; return null;
@ -3199,9 +3224,12 @@ class CourseManager
//Deleting assigned courses to hrm_id //Deleting assigned courses to hrm_id
if ($_configuration['multiple_access_urls']) { if ($_configuration['multiple_access_urls']) {
$sql = "SELECT s.course_code FROM $tbl_course_rel_user s INNER JOIN $tbl_course_rel_access_url a ON (a.course_code = s.course_code) WHERE user_id = $hr_manager_id AND relation_type=".COURSE_RELATION_TYPE_RRHH." AND access_url_id = ".api_get_current_access_url_id().""; $sql = "SELECT s.course_code FROM $tbl_course_rel_user s
INNER JOIN $tbl_course_rel_access_url a ON (a.course_code = s.course_code)
WHERE user_id = $hr_manager_id AND relation_type=".COURSE_RELATION_TYPE_RRHH." AND access_url_id = ".api_get_current_access_url_id()."";
} else { } else {
$sql = "SELECT course_code FROM $tbl_course_rel_user WHERE user_id = $hr_manager_id AND relation_type=".COURSE_RELATION_TYPE_RRHH." "; $sql = "SELECT course_code FROM $tbl_course_rel_user
WHERE user_id = $hr_manager_id AND relation_type=".COURSE_RELATION_TYPE_RRHH." ";
} }
$result = Database::query($sql); $result = Database::query($sql);
if (Database::num_rows($result) > 0) { if (Database::num_rows($result) > 0) {
@ -3574,10 +3602,10 @@ class CourseManager
public static function display_special_courses($user_id, $load_dirs = false) public static function display_special_courses($user_id, $load_dirs = false)
{ {
$user_id = intval($user_id); $user_id = intval($user_id);
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER); $tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$special_course_list = self::get_special_course_list(); $special_course_list = self::get_special_course_list();
$with_special_courses = $without_special_courses = ''; $with_special_courses = $without_special_courses = '';
if (!empty($special_course_list)) { if (!empty($special_course_list)) {
@ -3589,7 +3617,8 @@ class CourseManager
$sql = "SELECT course.id, course.code, course.subscribe subscr, course.unsubscribe unsubscr, course_rel_user.status status, $sql = "SELECT course.id, course.code, course.subscribe subscr, course.unsubscribe unsubscr, course_rel_user.status status,
course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat, course_rel_user.user_id course_rel_user.sort sort, course_rel_user.user_course_cat user_course_cat, course_rel_user.user_id
FROM $tbl_course course FROM $tbl_course course
LEFT JOIN $tbl_course_user course_rel_user ON course.code = course_rel_user.course_code AND course_rel_user.user_id = '$user_id' LEFT JOIN $tbl_course_user course_rel_user
ON course.code = course_rel_user.course_code AND course_rel_user.user_id = '$user_id'
WHERE $with_special_courses group by course.code"; WHERE $with_special_courses group by course.code";
$rs_special_course = Database::query($sql); $rs_special_course = Database::query($sql);
@ -3604,8 +3633,6 @@ class CourseManager
} }
$params = array(); $params = array();
// Get notifications. // Get notifications.
//$course['id_session'] = null;
//$course['status'] = $course['status'];
$course_info['id_session'] = null; $course_info['id_session'] = null;
$course_info['status'] = $course['status']; $course_info['status'] = $course['status'];
@ -3665,6 +3692,7 @@ class CourseManager
} }
} }
} }
return $html; return $html;
} }
@ -3703,6 +3731,7 @@ class CourseManager
// Step 2: We display the course without a user category. // Step 2: We display the course without a user category.
$html .= self :: display_courses_in_category(0, $load_dirs); $html .= self :: display_courses_in_category(0, $load_dirs);
return $html; return $html;
} }
@ -3717,10 +3746,10 @@ class CourseManager
{ {
$user_id = api_get_user_id(); $user_id = api_get_user_id();
// Table definitions // Table definitions
$TABLECOURS = Database :: get_main_table(TABLE_MAIN_COURSE); $TABLECOURS = Database :: get_main_table(TABLE_MAIN_COURSE);
$TABLECOURSUSER = Database :: get_main_table(TABLE_MAIN_COURSE_USER); $TABLECOURSUSER = Database :: get_main_table(TABLE_MAIN_COURSE_USER);
$TABLE_ACCESS_URL_REL_COURSE = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE); $TABLE_ACCESS_URL_REL_COURSE = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_COURSE);
$current_url_id = api_get_current_access_url_id(); $current_url_id = api_get_current_access_url_id();
// Get course list auto-register // Get course list auto-register
$special_course_list = self::get_special_course_list(); $special_course_list = self::get_special_course_list();
@ -3763,7 +3792,6 @@ class CourseManager
$html = ''; $html = '';
$course_list = array(); $course_list = array();
$showCustomIcon = api_get_configuration_value('course_images_in_courses_list'); $showCustomIcon = api_get_configuration_value('course_images_in_courses_list');
// Browse through all courses. // Browse through all courses.
@ -3863,6 +3891,7 @@ class CourseManager
} }
$html .= self::course_item_html($params, $is_subcontent); $html .= self::course_item_html($params, $is_subcontent);
} }
return $html; return $html;
} }
@ -3871,7 +3900,8 @@ class CourseManager
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University * @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
* @return array containing all the titles of the user defined courses with the id as key of the array * @return array containing all the titles of the user defined courses with the id as key of the array
*/ */
function get_user_course_categories() { public static function get_user_course_categories()
{
global $_user; global $_user;
$output = array(); $output = array();
$table_category = Database::get_user_personal_table(TABLE_USER_COURSE_CATEGORY); $table_category = Database::get_user_personal_table(TABLE_USER_COURSE_CATEGORY);
@ -4189,7 +4219,8 @@ class CourseManager
* if the course code doest not exist in the DB the same course code will be returned * if the course code doest not exist in the DB the same course code will be returned
* @return string wanted unused code * @return string wanted unused code
*/ */
public static function generate_nice_next_course_code($wanted_code) { public static function generate_nice_next_course_code($wanted_code)
{
require_once api_get_path(LIBRARY_PATH).'add_course.lib.inc.php'; require_once api_get_path(LIBRARY_PATH).'add_course.lib.inc.php';
$course_code_ok = !self::course_code_exists($wanted_code); $course_code_ok = !self::course_code_exists($wanted_code);
if (!$course_code_ok) { if (!$course_code_ok) {
@ -4209,6 +4240,7 @@ class CourseManager
} }
return false; return false;
} }
return $wanted_code; return $wanted_code;
} }
@ -4260,6 +4292,7 @@ class CourseManager
} }
return false; return false;
} }
return false; return false;
} }
@ -4306,11 +4339,10 @@ class CourseManager
*/ */
public static function get_user_course_vote($user_id, $course_id, $session_id = null, $url_id = null) public static function get_user_course_vote($user_id, $course_id, $session_id = null, $url_id = null)
{ {
$table_user_course_vote = Database::get_main_table(TABLE_MAIN_USER_REL_COURSE_VOTE); $table_user_course_vote = Database::get_main_table(TABLE_MAIN_USER_REL_COURSE_VOTE);
$session_id = !isset($session_id) ? api_get_session_id() : intval($session_id);
$url_id = empty($url_id) ? api_get_current_access_url_id() : intval($url_id);
$session_id = !isset($session_id) ? api_get_session_id() : intval($session_id);
$url_id = empty($url_id) ? api_get_current_access_url_id() : intval($url_id);
$user_id = intval($user_id); $user_id = intval($user_id);
if (empty($user_id)) { if (empty($user_id)) {
@ -4324,7 +4356,14 @@ class CourseManager
'url_id' => $url_id 'url_id' => $url_id
); );
$result = Database::select('vote', $table_user_course_vote, array('where' => array('user_id = ? AND c_id = ? AND session_id = ? AND url_id = ?' => $params)), 'first'); $result = Database::select(
'vote',
$table_user_course_vote,
array('where' => array(
'user_id = ? AND c_id = ? AND session_id = ? AND url_id = ?' => $params)
),
'first'
);
if (!empty($result)) { if (!empty($result)) {
return $result['vote']; return $result['vote'];
} }
@ -4756,7 +4795,6 @@ class CourseManager
return $row[0]; return $row[0];
} }
/** /**
* Get available le courses count * Get available le courses count
* @param int Access URL ID (optional) * @param int Access URL ID (optional)
@ -4796,6 +4834,7 @@ class CourseManager
} }
$res = Database::query($sql); $res = Database::query($sql);
$row = Database::fetch_row($res); $row = Database::fetch_row($res);
return $row[0]; return $row[0];
} }
@ -4897,22 +4936,27 @@ class CourseManager
// Delete only teacher relations that doesn't match the selected teachers // Delete only teacher relations that doesn't match the selected teachers
$cond = null; $cond = null;
if (count($teachers)>0) { if (count($teachers)>0) {
foreach($teachers as $key) { foreach ($teachers as $key) {
$key = Database::escape_string($key);
$cond.= " AND user_id <> '".$key."'"; $cond.= " AND user_id <> '".$key."'";
} }
} }
$sql = 'DELETE FROM '.$course_user_table.' WHERE course_code="'.Database::escape_string($course_code).'" AND status="1"'.$cond; $sql = 'DELETE FROM '.$course_user_table.'
WHERE course_code="'.Database::escape_string($course_code).'" AND status="1"'.$cond;
Database::query($sql); Database::query($sql);
} }
if (count($teachers) > 0) { if (count($teachers) > 0) {
foreach ($teachers as $userId) { foreach ($teachers as $userId) {
$userId = intval($userId);
// We check if the teacher is already subscribed in this course // We check if the teacher is already subscribed in this course
$sql = 'SELECT 1 FROM '.$course_user_table.' WHERE user_id = "'.$userId.'" AND course_code = "'.$course_code.'" '; $sql = 'SELECT 1 FROM '.$course_user_table.'
HERE user_id = "'.$userId.'" AND course_code = "'.$course_code.'" ';
$result = Database::query($sql); $result = Database::query($sql);
if (Database::num_rows($result)) { if (Database::num_rows($result)) {
$sql = 'UPDATE '.$course_user_table.' SET status = "1" WHERE course_code = "'.$course_code.'" AND user_id = "'.$userId.'" '; $sql = 'UPDATE '.$course_user_table.' SET status = "1"
WHERE course_code = "'.$course_code.'" AND user_id = "'.$userId.'" ';
} else { } else {
$sql = "INSERT INTO ".$course_user_table . " SET $sql = "INSERT INTO ".$course_user_table . " SET
course_code = '".Database::escape_string($course_code). "', course_code = '".Database::escape_string($course_code). "',
@ -5011,6 +5055,7 @@ class CourseManager
$pluginCourseSettings $pluginCourseSettings
); );
} }
return $courseSettings; return $courseSettings;
} }
@ -5059,7 +5104,8 @@ class CourseManager
$courseSetting = Database::get_course_table(TABLE_COURSE_SETTING); $courseSetting = Database::get_course_table(TABLE_COURSE_SETTING);
$courseId = intval($courseId); $courseId = intval($courseId);
$variable = Database::escape_string($variable); $variable = Database::escape_string($variable);
$sql = "SELECT variable FROM $courseSetting WHERE c_id = $courseId AND variable = '$variable'"; $sql = "SELECT variable FROM $courseSetting
WHERE c_id = $courseId AND variable = '$variable'";
$result = Database::query($sql); $result = Database::query($sql);
return Database::num_rows($result) > 0; return Database::num_rows($result) > 0;
} }
@ -5113,8 +5159,8 @@ class CourseManager
WHERE WHERE
course_code = $courseCode AND course_code = $courseCode AND
session_id = $sessionId AND session_id = $sessionId AND
login_course_date BETWEEN $startDate AND $endDate login_course_date BETWEEN '$startDate' AND '$endDate'
"; ";
$result = Database::query($sql); $result = Database::query($sql);
@ -5168,9 +5214,11 @@ class CourseManager
FROM $forum f FROM $forum f
where f.c_id = %s and f.session_id = %s"; where f.c_id = %s and f.session_id = %s";
} }
$sql_query = sprintf($sql, $courseId, $sessionId);
$result = Database::query($sql_query); $sql = sprintf($sql, intval($courseId), intval($sessionId));
$result = Database::query($sql);
$row = Database::fetch_array($result); $row = Database::fetch_array($result);
return $row['count']; return $row['count'];
} }

@ -536,15 +536,18 @@ class SessionManager
$tbl_user = Database::get_main_table(TABLE_MAIN_USER); $tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_course = Database::get_main_table(TABLE_MAIN_COURSE); $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
$sql = "select count(*) as total_rows $sessionId = intval($sessionId);
$sql = "SELECT count(*) as total_rows
FROM $tbl_lp_view v FROM $tbl_lp_view v
INNER JOIN $tbl_lp l ON l.id = v.lp_id INNER JOIN $tbl_lp l ON l.id = v.lp_id
INNER JOIN $tbl_user u ON u.user_id = v.user_id INNER JOIN $tbl_user u ON u.user_id = v.user_id
INNER JOIN $tbl_course c"; INNER JOIN $tbl_course c
$sql .= ' WHERE v.session_id = ' . $sessionId; WHERE v.session_id = " . $sessionId;
$result_rows = Database::query($sql); $result_rows = Database::query($sql);
$row = Database::fetch_array($result_rows); $row = Database::fetch_array($result_rows);
$num = $row['total_rows']; $num = $row['total_rows'];
return $num; return $num;
} }
@ -569,7 +572,6 @@ class SessionManager
$course = api_get_course_info_by_id($courseId); $course = api_get_course_info_by_id($courseId);
//getting all the students of the course //getting all the students of the course
//we are not using this because it only returns user ids //we are not using this because it only returns user ids
/* if (empty($sessionId) /* if (empty($sessionId)
@ -604,8 +606,8 @@ class SessionManager
} }
$sql = "SELECT u.user_id, u.lastname, u.firstname, u.username, u.email, s.course_code $sql = "SELECT u.user_id, u.lastname, u.firstname, u.username, u.email, s.course_code
FROM $session_course_user s FROM $session_course_user s
INNER JOIN $user u ON u.user_id = s.id_user INNER JOIN $user u ON u.user_id = s.id_user
$where $order $limit"; $where $order $limit";
$sql_query = sprintf($sql, Database::escape_string($course['code']), $sessionId); $sql_query = sprintf($sql, Database::escape_string($course['code']), $sessionId);
@ -903,19 +905,21 @@ class SessionManager
//total //total
if ($getAllSessions) { if ($getAllSessions) {
$sql = "SELECT count(w.id) as count $sql = "SELECT count(w.id) as count
FROM $workTable w FROM $workTable w
LEFT JOIN $workTableAssignment a ON (a.publication_id = w.id AND a.c_id = w.c_id) LEFT JOIN $workTableAssignment a
WHERE w.c_id = %s ON (a.publication_id = w.id AND a.c_id = w.c_id)
AND parent_id = 0 WHERE w.c_id = %s
AND active IN (1, 0)"; AND parent_id = 0
AND active IN (1, 0)";
} else { } else {
$sql = "SELECT count(w.id) as count $sql = "SELECT count(w.id) as count
FROM $workTable w FROM $workTable w
LEFT JOIN $workTableAssignment a ON (a.publication_id = w.id AND a.c_id = w.c_id) LEFT JOIN $workTableAssignment a
WHERE w.c_id = %s ON (a.publication_id = w.id AND a.c_id = w.c_id)
AND parent_id = 0 WHERE w.c_id = %s
AND active IN (1, 0) AND parent_id = 0
AND session_id = %s"; AND active IN (1, 0)
AND session_id = %s";
} }
$sql_query = sprintf($sql, $course['real_id'], $sessionId); $sql_query = sprintf($sql, $course['real_id'], $sessionId);
@ -928,10 +932,10 @@ class SessionManager
*/ */
if ($getAllSessions) { if ($getAllSessions) {
$sql = "SELECT count(distinct page_id) as count FROM $wiki $sql = "SELECT count(distinct page_id) as count FROM $wiki
WHERE c_id = %s"; WHERE c_id = %s";
} else { } else {
$sql = "SELECT count(distinct page_id) as count FROM $wiki $sql = "SELECT count(distinct page_id) as count FROM $wiki
WHERE c_id = %s and session_id = %s"; WHERE c_id = %s and session_id = %s";
} }
$sql_query = sprintf($sql, $course['real_id'], $sessionId); $sql_query = sprintf($sql, $course['real_id'], $sessionId);
$result = Database::query($sql_query); $result = Database::query($sql_query);
@ -945,9 +949,12 @@ class SessionManager
$survey_list = survey_manager::get_surveys($course['code'], $sessionId); $survey_list = survey_manager::get_surveys($course['code'], $sessionId);
$surveys_total = count($survey_list); $surveys_total = count($survey_list);
$survey_data = array();
foreach ($survey_list as $survey) { foreach ($survey_list as $survey) {
$user_list = survey_manager::get_people_who_filled_survey($survey['survey_id'], false, $course['real_id']); $user_list = survey_manager::get_people_who_filled_survey(
$survey['survey_id'],
false,
$course['real_id']
);
foreach ($user_list as $user_id) { foreach ($user_list as $user_id) {
isset($survey_user_list[$user_id]) ? $survey_user_list[$user_id] ++ : $survey_user_list[$user_id] = 1; isset($survey_user_list[$user_id]) ? $survey_user_list[$user_id] ++ : $survey_user_list[$user_id] = 1;
} }
@ -966,11 +973,11 @@ class SessionManager
foreach ($users as $user) { foreach ($users as $user) {
//Course description //Course description
$sql = "SELECT count(*) as count $sql = "SELECT count(*) as count
FROM $table_stats_access FROM $table_stats_access
WHERE access_tool = 'course_description' WHERE access_tool = 'course_description'
AND access_cours_code = '%s' AND access_cours_code = '%s'
AND access_session_id = %s AND access_session_id = %s
AND access_user_id = %s "; AND access_user_id = %s ";
$sql_query = sprintf($sql, $course['code'], $user['id_session'], $user['user_id']); $sql_query = sprintf($sql, $course['code'], $user['id_session'], $user['user_id']);
$result = Database::query($sql_query); $result = Database::query($sql_query);
@ -1003,7 +1010,6 @@ class SessionManager
$assignments_progress = 0; $assignments_progress = 0;
} }
//Wiki //Wiki
//total revisions per user //total revisions per user
$sql = "SELECT count(*) as count $sql = "SELECT count(*) as count
@ -1015,12 +1021,12 @@ class SessionManager
$wiki_revisions = $row['count']; $wiki_revisions = $row['count'];
//count visited wiki pages //count visited wiki pages
$sql = "SELECT count(distinct default_value) as count $sql = "SELECT count(distinct default_value) as count
FROM $table_stats_default FROM $table_stats_default
WHERE default_user_id = %s WHERE default_user_id = %s
AND default_cours_code = '%s' AND default_cours_code = '%s'
AND default_event_type = 'wiki_page_view' AND default_event_type = 'wiki_page_view'
AND default_value_type = 'wiki_page_id' AND default_value_type = 'wiki_page_id'
AND c_id = %s"; AND c_id = %s";
$sql_query = sprintf($sql, $user['user_id'], $course['code'], $course['real_id']); $sql_query = sprintf($sql, $user['user_id'], $course['code'], $course['real_id']);
$result = Database::query($sql_query); $result = Database::query($sql_query);
$row = Database::fetch_array($result); $row = Database::fetch_array($result);
@ -1033,7 +1039,6 @@ class SessionManager
$wiki_progress = 0; $wiki_progress = 0;
} }
//Surveys //Surveys
$surveys_done = (isset($survey_user_list[$user['user_id']]) ? $survey_user_list[$user['user_id']] : 0); $surveys_done = (isset($survey_user_list[$user['user_id']]) ? $survey_user_list[$user['user_id']] : 0);
$surveys_left = $surveys_total - $surveys_done; $surveys_left = $surveys_total - $surveys_done;
@ -1113,10 +1118,11 @@ class SessionManager
'surveys_progress' => sprintf($linkSurvey, $surveys_progress . '%'), 'surveys_progress' => sprintf($linkSurvey, $surveys_progress . '%'),
); );
} }
return $table; return $table;
} }
function get_number_of_tracking_access_overview() public static function get_number_of_tracking_access_overview()
{ {
// database table definition // database table definition
$track_e_course_access = Database :: get_main_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS); $track_e_course_access = Database :: get_main_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS);
@ -1130,7 +1136,7 @@ class SessionManager
* @author César Perales <cesar.perales@beeznest.com>, Beeznest Team * @author César Perales <cesar.perales@beeznest.com>, Beeznest Team
* @version Chamilo 1.9.6 * @version Chamilo 1.9.6
*/ */
static function get_user_data_access_tracking_overview( public static function get_user_data_access_tracking_overview(
$sessionId, $sessionId,
$courseId, $courseId,
$studentId = 0, $studentId = 0,
@ -1163,6 +1169,7 @@ class SessionManager
$is_western_name_order = api_is_western_name_order(); $is_western_name_order = api_is_western_name_order();
} }
$where = null;
if (isset($sessionId) && !empty($sessionId)) { if (isset($sessionId) && !empty($sessionId)) {
$where = sprintf(" WHERE a.session_id = %d", $sessionId); $where = sprintf(" WHERE a.session_id = %d", $sessionId);
} }
@ -1286,7 +1293,8 @@ class SessionManager
if (!$session_name_ok) { if (!$session_name_ok) {
$table = Database::get_main_table(TABLE_MAIN_SESSION); $table = Database::get_main_table(TABLE_MAIN_SESSION);
$session_name = Database::escape_string($session_name); $session_name = Database::escape_string($session_name);
$sql = "SELECT count(*) as count FROM $table WHERE name LIKE '$session_name%'"; $sql = "SELECT count(*) as count FROM $table
WHERE name LIKE '$session_name%'";
$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); $row = Database::fetch_array($result);
@ -1513,8 +1521,9 @@ class SessionManager
{ {
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$id_promotion = intval($id_promotion); $id_promotion = intval($id_promotion);
$update_sql = "UPDATE $tbl_session SET promotion_id=0 WHERE promotion_id='$id_promotion'"; $sql = "UPDATE $tbl_session SET promotion_id=0
if (Database::query($update_sql)) { WHERE promotion_id='$id_promotion'";
if (Database::query($sql)) {
return true; return true;
} else { } else {
return false; return false;
@ -1783,18 +1792,19 @@ class SessionManager
if ($updateTotal) { if ($updateTotal) {
// Count users in this session-course relation // Count users in this session-course relation
$sql = "SELECT COUNT(id_user) as nbUsers FROM $table $sql = "SELECT COUNT(id_user) as nbUsers
WHERE FROM $table
id_session='$sessionId' AND WHERE
course_code='$courseCode' AND id_session='$sessionId' AND
status<>2"; course_code='$courseCode' AND
status<>2";
$result = Database::query($sql); $result = Database::query($sql);
list($userCount) = Database::fetch_array($result); list($userCount) = Database::fetch_array($result);
// update the session-course relation to add the users total // update the session-course relation to add the users total
$sql = "UPDATE $tableSessionCourse SET $sql = "UPDATE $tableSessionCourse SET
nbr_users = $userCount nbr_users = $userCount
WHERE id_session='$sessionId' AND course_code = '$courseCode'"; WHERE id_session='$sessionId' AND course_code = '$courseCode'";
Database::query($sql); Database::query($sql);
} }
} }
@ -2200,7 +2210,8 @@ class SessionManager
$rowsf = Database::fetch_array($ressf); $rowsf = Database::fetch_array($ressf);
$tms = time(); $tms = time();
$sqlsfv = "SELECT * FROM $t_sfv WHERE session_id = '$session_id' AND field_id = '" . $rowsf['id'] . "' ORDER BY id"; $sqlsfv = "SELECT * FROM $t_sfv
WHERE session_id = '$session_id' AND field_id = '" . $rowsf['id'] . "' ORDER BY id";
$ressfv = Database::query($sqlsfv); $ressfv = Database::query($sqlsfv);
$n = Database::num_rows($ressfv); $n = Database::num_rows($ressfv);
if ($n > 1) { if ($n > 1) {
@ -2213,7 +2224,8 @@ class SessionManager
} }
$rowsfv = Database::fetch_array($ressfv); $rowsfv = Database::fetch_array($ressfv);
if ($rowsfv['field_value'] != $fvalues) { if ($rowsfv['field_value'] != $fvalues) {
$sqlu = "UPDATE $t_sfv SET field_value = '$fvalues', tms = FROM_UNIXTIME($tms) WHERE id = " . $rowsfv['id']; $sqlu = "UPDATE $t_sfv SET field_value = '$fvalues', tms = FROM_UNIXTIME($tms)
WHERE id = " . $rowsfv['id'];
$resu = Database::query($sqlu); $resu = Database::query($sqlu);
return($resu ? true : false); return($resu ? true : false);
} }
@ -2223,7 +2235,8 @@ class SessionManager
//we need to update the current record //we need to update the current record
$rowsfv = Database::fetch_array($ressfv); $rowsfv = Database::fetch_array($ressfv);
if ($rowsfv['field_value'] != $fvalues) { if ($rowsfv['field_value'] != $fvalues) {
$sqlu = "UPDATE $t_sfv SET field_value = '$fvalues', tms = FROM_UNIXTIME($tms) WHERE id = " . $rowsfv['id']; $sqlu = "UPDATE $t_sfv SET field_value = '$fvalues', tms = FROM_UNIXTIME($tms)
WHERE id = " . $rowsfv['id'];
//error_log('UM::update_extra_field_value: '.$sqlu); //error_log('UM::update_extra_field_value: '.$sqlu);
$resu = Database::query($sqlu); $resu = Database::query($sqlu);
return($resu ? true : false); return($resu ? true : false);
@ -2231,10 +2244,9 @@ class SessionManager
return true; return true;
} else { } else {
$sqli = "INSERT INTO $t_sfv (session_id,field_id,field_value,tms) " . $sqli = "INSERT INTO $t_sfv (session_id,field_id,field_value,tms) " .
"VALUES ('$session_id'," . $rowsf['id'] . ",'$fvalues',FROM_UNIXTIME($tms))"; "VALUES ('$session_id'," . $rowsf['id'] . ",'$fvalues',FROM_UNIXTIME($tms))";
//error_log('UM::update_extra_field_value: '.$sqli);
$resi = Database::query($sqli); $resi = Database::query($sqli);
return($resi ? true : false); return $resi ? true : false;
} }
} else { } else {
return false; //field not found return false; //field not found
@ -2561,7 +2573,9 @@ class SessionManager
{ {
$tbl_session_category = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY); $tbl_session_category = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
$id = api_get_current_access_url_id(); $id = api_get_current_access_url_id();
$sql = 'SELECT * FROM ' . $tbl_session_category . ' WHERE access_url_id ="' . $id . '" ORDER BY name ASC'; $sql = 'SELECT * FROM ' . $tbl_session_category . '
WHERE access_url_id ="' . $id . '"
ORDER BY name ASC';
$result = Database::query($sql); $result = Database::query($sql);
if (Database::num_rows($result) > 0) { if (Database::num_rows($result) > 0) {
$data = Database::store_result($result, 'ASSOC'); $data = Database::store_result($result, 'ASSOC');
@ -2969,7 +2983,8 @@ class SessionManager
// select the courses // select the courses
$sql = "SELECT * FROM $tbl_course c $sql = "SELECT * FROM $tbl_course c
INNER JOIN $tbl_session_rel_course src ON c.code = src.course_code INNER JOIN $tbl_session_rel_course src
ON c.code = src.course_code
WHERE src.id_session = '$session_id' "; WHERE src.id_session = '$session_id' ";
if (!empty($course_name)) { if (!empty($course_name)) {
@ -3276,10 +3291,11 @@ class SessionManager
$tbl_user = Database::get_main_table(TABLE_MAIN_USER); $tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$sql = "SELECT session_rcru.status $sql = "SELECT session_rcru.status
FROM $tbl_session_rel_course_rel_user session_rcru, $tbl_user user FROM $tbl_session_rel_course_rel_user session_rcru, $tbl_user user
WHERE session_rcru.id_user = user.user_id AND WHERE
session_rcru.id_session = '" . intval($session_id) . "' AND session_rcru.id_user = user.user_id AND
session_rcru.course_code ='" . Database::escape_string($course_code) . "' AND session_rcru.id_session = '" . intval($session_id) . "' AND
user.user_id = " . intval($user_id); session_rcru.course_code ='" . Database::escape_string($course_code) . "' AND
user.user_id = " . intval($user_id);
$result = Database::query($sql); $result = Database::query($sql);
$status = false; $status = false;
@ -3308,9 +3324,9 @@ class SessionManager
$sql = "SELECT session_rcru.status $sql = "SELECT session_rcru.status
FROM $tbl_session_rel_course_rel_user session_rcru, $tbl_user user FROM $tbl_session_rel_course_rel_user session_rcru, $tbl_user user
WHERE session_rcru.id_user = user.user_id AND WHERE session_rcru.id_user = user.user_id AND
session_rcru.id_session = '" . intval($session_id) . "' AND session_rcru.id_session = '" . intval($session_id) . "' AND
session_rcru.course_code ='" . Database::escape_string($course_code) . "' AND session_rcru.course_code ='" . Database::escape_string($course_code) . "' AND
user.user_id = " . intval($user_id); user.user_id = " . intval($user_id);
$result = Database::query($sql); $result = Database::query($sql);
$status = false; $status = false;
if (Database::num_rows($result)) { if (Database::num_rows($result)) {
@ -3572,7 +3588,8 @@ class SessionManager
$table_session = Database::get_main_table(TABLE_MAIN_SESSION); $table_session = Database::get_main_table(TABLE_MAIN_SESSION);
$course_code = Database::escape_string($course_code); $course_code = Database::escape_string($course_code);
$sql = "SELECT name, s.id $sql = "SELECT name, s.id
FROM $table_session_course sc INNER JOIN $table_session s ON (sc.id_session = s.id) FROM $table_session_course sc
INNER JOIN $table_session s ON (sc.id_session = s.id)
WHERE sc.course_code = '$course_code' "; WHERE sc.course_code = '$course_code' ";
$result = Database::query($sql); $result = Database::query($sql);
return Database::store_result($result); return Database::store_result($result);
@ -4263,6 +4280,7 @@ class SessionManager
); );
} }
} }
return array_to_string($list, CourseManager::USER_SEPARATOR); return array_to_string($list, CourseManager::USER_SEPARATOR);
} }
@ -4287,6 +4305,7 @@ class SessionManager
$coaches[] = $row['id_user']; $coaches[] = $row['id_user'];
} }
} }
return $coaches; return $coaches;
} }
@ -4924,7 +4943,12 @@ class SessionManager
$sessionList[] = $sessionInfo['session_id']; $sessionList[] = $sessionInfo['session_id'];
} }
$userInfo = $data['user_info']; $userInfo = $data['user_info'];
self::suscribe_sessions_to_hr_manager($userInfo, $sessionList, $sendEmail, $removeOldRelationShips); self::suscribe_sessions_to_hr_manager(
$userInfo,
$sessionList,
$sendEmail,
$removeOldRelationShips
);
} }
} }
} }
@ -4970,6 +4994,7 @@ class SessionManager
} }
} }
} }
return $message; return $message;
} }
@ -5211,14 +5236,15 @@ class SessionManager
* @param int $userId The user id * @param int $userId The user id
* @return boolean Whether is subscribed * @return boolean Whether is subscribed
*/ */
public static function isUserSusbcribedAsStudent($sessionId, $userId) { public static function isUserSusbcribedAsStudent($sessionId, $userId)
{
$sessionRelUserTable = Database::get_main_table(TABLE_MAIN_SESSION_USER); $sessionRelUserTable = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$sessionId = intval($sessionId); $sessionId = intval($sessionId);
$userId = intval($userId); $userId = intval($userId);
$sql = "SELECT COUNT(1) AS qty FROM $sessionRelUserTable " $sql = "SELECT COUNT(1) AS qty FROM $sessionRelUserTable
. "WHERE id_session = $sessionId AND id_user = $userId AND relation_type = 0"; WHERE id_session = $sessionId AND id_user = $userId AND relation_type = 0";
$result = Database::fetch_assoc(Database::query($sql)); $result = Database::fetch_assoc(Database::query($sql));
@ -5239,9 +5265,6 @@ class SessionManager
if ($sessionInfo['date_start'] == '0000-00-00' && $sessionInfo['date_end'] == '0000-00-00') { if ($sessionInfo['date_start'] == '0000-00-00' && $sessionInfo['date_end'] == '0000-00-00') {
return get_lang('NoTimeLimits'); return get_lang('NoTimeLimits');
} else { } else {
$startDate = '';
$endDate = '';
if ($sessionInfo['date_start'] != '0000-00-00') { if ($sessionInfo['date_start'] != '0000-00-00') {
$startDate = get_lang('From') . ' ' . api_format_date($sessionInfo['date_start'], DATE_FORMAT_LONG_NO_DAY); $startDate = get_lang('From') . ' ' . api_format_date($sessionInfo['date_start'], DATE_FORMAT_LONG_NO_DAY);
} else { } else {
@ -5301,19 +5324,22 @@ class SessionManager
* Check if the course belongs to the session * Check if the course belongs to the session
* @param int $sessionId The session id * @param int $sessionId The session id
* @param string $courseCode The course code * @param string $courseCode The course code
*
* @return bool
*/ */
public static function sessionHasCourse($sessionId, $courseCode) { public static function sessionHasCourse($sessionId, $courseCode)
{
$sessionId = intval($sessionId); $sessionId = intval($sessionId);
$courseCode = Database::escape_string($courseCode); $courseCode = Database::escape_string($courseCode);
$courseTablee = Database::get_main_table(TABLE_MAIN_COURSE); $courseTable = Database::get_main_table(TABLE_MAIN_COURSE);
$sessionRelCourseTable = Database::get_main_table(TABLE_MAIN_SESSION_COURSE); $sessionRelCourseTable = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$sql = "SELECT COUNT(1) AS qty FROM $courseTablee c " $sql = "SELECT COUNT(1) AS qty FROM $courseTable c
. "INNER JOIN $sessionRelCourseTable src " INNER JOIN $sessionRelCourseTable src
. "ON c.code = src.course_code " ON c.code = src.course_code
. "WHERE src.id_session = $sessionId " WHERE src.id_session = $sessionId
. "AND c.code = '$courseCode'"; AND c.code = '$courseCode' ";
$result = Database::query($sql); $result = Database::query($sql);

Loading…
Cancel
Save