@ -181,41 +181,106 @@ class SessionManager
return $result['count'] > 0;
}
static function get_count_admin() {
/**
* @param string $where_condition
* @return mixed
*/
static function get_count_admin($where_condition = null)
{
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_session_category = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$table_access_url_rel_session= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$where = 'WHERE 1=1 ';
$user_id = api_get_user_id();
if (api_is_session_admin() & & api_get_setting('allow_session_admins_to_see_all_sessions') == 'false') {
$where.=" WHERE s.session_admin_id = $user_id ";
$extraJoin = null;
if (api_is_session_admin() & & api_get_setting('allow_session_admins_to_manage_all_sessions') == 'false') {
$where .= " AND (
s.session_admin_id = $user_id OR
sru.id_user = '$user_id' AND
sru.relation_type = '".SESSION_RELATION_TYPE_RRHH."'
)
";
$extraJoin = " INNER JOIN $tbl_session_rel_user sru
ON sru.id_session = s.id ";
}
$query_rows = "SELECT count(*) as total_rows
FROM $tbl_session s
LEFT JOIN $tbl_session_category sc ON s.session_category_id = sc.id
INNER JOIN $tbl_user u ON s.id_coach = u.user_id
$where ";
$today = api_get_utc_datetime();
$today = api_strtotime($today, 'UTC');
$today = date('Y-m-d', $today);
if (!empty($where_condition)) {
$where_condition = str_replace('category_name', 'sc.name', $where_condition);
$where_condition = str_replace(
array("AND session_active = '1' )", " AND ( session_active = '1' )"),
array(') GROUP BY s.name HAVING session_active = 1 ', " GROUP BY s.name HAVING session_active = 1 " )
, $where_condition
);
$where_condition = str_replace(
array("AND session_active = '0' )", " AND ( session_active = '0' )"),
array(') GROUP BY s.name HAVING session_active = 0 ', " GROUP BY s.name HAVING session_active = '0' "),
$where_condition
);
} else {
$where_condition = "1 = 1";
}
$sql = "SELECT count(id) as total_rows FROM (
SELECT
IF (
(s.date_start < = '$today' AND '$today' < s.date_end ) OR
(s.nb_days_access_before_beginning > 0 AND DATEDIFF(s.date_start,'".$today."' ".") < = s.nb_days_access_before_beginning) OR
(s.nb_days_access_after_end > 0 AND DATEDIFF('".$today."',s.date_end) < = s.nb_days_access_after_end) OR
(s.date_start = '0000-00-00' AND s.date_end = '0000-00-00' ) OR
(s.date_start < = '$today' AND '0000-00-00' = s.date_end) OR
('$today' < s.date_end AND ' 0000-00-00 ' = s . date_start )
, 1, 0)
as session_active,
s.id,
count(*) as total_rows
FROM $tbl_session s
LEFT JOIN $tbl_session_category sc ON s.session_category_id = sc.id
INNER JOIN $tbl_user u ON s.id_coach = u.user_id
$extraJoin
$where AND $where_condition ) as session_table";
if (api_is_multiple_url_enabled()) {
$table_access_url_rel_session= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1) {
$where.= " AND ar.access_url_id = $access_url_id ";
$query_rows = "SELECT count(*) as total_rows
$sql = "SELECT count(id) as total_rows FROM (
SELECT
IF (
(s.date_start < = '$today' AND '$today' < s.date_end ) OR
(s.nb_days_access_before_beginning > 0 AND DATEDIFF(s.date_start,'".$today."' ".") < = s.nb_days_access_before_beginning) OR
(s.nb_days_access_after_end > 0 AND DATEDIFF('".$today."',s.date_end) < = s.nb_days_access_after_end) OR
(s.date_start = '0000-00-00' AND s.date_end = '0000-00-00' ) OR
(s.date_start < = '$today' AND '0000-00-00' = s.date_end) OR
('$today' < s.date_end AND ' 0000-00-00 ' = s . date_start )
, 1, 0)
as session_active,
s.id
FROM $tbl_session s
LEFT JOIN $tbl_session_category sc ON s.session_category_id = sc.id
INNER JOIN $tbl_user u ON s.id_coach = u.user_id
INNER JOIN $table_access_url_rel_session ar ON ar.session_id = s.id
$where ";
$extraJoin
$where AND $where_condition) as session_table";
}
}
$result_rows = Database::query($query_rows);
$recorset = Database::fetch_array($result_rows);
$num = $recorset['total_rows'];
$result_rows = Database::query($sql);
$row = Database::fetch_array($result_rows);
$num = $row['total_rows'];
return $num;
}
@ -224,16 +289,29 @@ class SessionManager
* @param array $options order and limit keys
* @return array
*/
public static function get_sessions_admin($options) {
public static function get_sessions_admin($options)
{
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_session_category = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
$table_access_url_rel_session = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$where = 'WHERE 1=1 ';
$where = ' WHERE 1=1 ';
$user_id = api_get_user_id();
$extraJoin = null;
if (api_is_session_admin() & & api_get_setting('allow_session_admins_to_manage_all_sessions') == 'false') {
$where.=" AND s.session_admin_id = $user_id ";
$where .= " AND (
s.session_admin_id = $user_id OR
sru.id_user = '$user_id' AND
sru.relation_type = '".SESSION_RELATION_TYPE_RRHH."'
)
";
$extraJoin = " INNER JOIN $tbl_session_rel_user sru
ON sru.id_session = s.id ";
}
$coach_name = " CONCAT(u.lastname , ' ', u.firstname) as coach_name ";
@ -242,6 +320,18 @@ class SessionManager
$coach_name = " CONCAT(u.firstname, ' ', u.lastname) as coach_name ";
}
$options['where'] = str_replace(
array("AND session_active = '1' )", " AND ( session_active = '1' )"),
array(') GROUP BY s.name HAVING session_active = 1 ', " GROUP BY s.name HAVING session_active = 1 " )
, $options['where']
);
$options['where'] = str_replace(
array("AND session_active = '0' )", " AND ( session_active = '0' )"),
array(') GROUP BY s.name HAVING session_active = 0 ', " GROUP BY s.name HAVING session_active = '0' "),
$options['where']
);
$today = api_get_utc_datetime();
$today = api_strtotime($today, 'UTC');
$today = date('Y-m-d', $today);
@ -254,7 +344,6 @@ class SessionManager
(s.date_start = '0000-00-00' AND s.date_end = '0000-00-00' ) OR
(s.date_start < = '$today' AND '0000-00-00' = s.date_end) OR
('$today' < s.date_end AND ' 0000-00-00 ' = s . date_start )
, 1, 0)
as session_active,
s.name,
@ -273,43 +362,42 @@ class SessionManager
$limit = " LIMIT ".$options['limit'];
}
if (!empty($options['where'])) {
$where .= ' AND '.$options['where'];
}
$order = null;
if (!empty($options['order'])) {
$order = " ORDER BY ".$options['order'];
}
$query = "$select FROM $tbl_session s
LEFT JOIN $tbl_session_category sc ON s.session_category_id = sc.id
LEFT JOIN $tbl_session_category sc ON s.session_category_id = sc.id
LEFT JOIN $tbl_user u ON s.id_coach = u.user_id
$where $limit";
$extraJoin
$where $order $limit";
global $_configuration;
if ($_configuration['multiple_access_urls']) {
$table_access_url_rel_session= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
if (api_is_multiple_url_enabled()) {
$access_url_id = api_get_current_access_url_id();
if ($access_url_id != -1) {
$where.= " AND ar.access_url_id = $access_url_id ";
$query = " $select
FROM $tbl_session s
LEFT JOIN $tbl_session_category sc ON s.session_category_id = sc.id
INNER JOIN $tbl_user u ON s.id_coach = u.user_id
INNER JOIN $table_access_url_rel_session ar ON ar.session_id = s.id
$where $limit";
INNER JOIN $table_access_url_rel_session ar ON ar.session_id = s.id AND ar.access_url_id = $access_url_id
$extraJoin
$where $order $limit";
}
}
$query .= ") AS session_table";
if (!empty($options['where'])) {
$query .= ' WHERE '.$options['where'];
}
if (!empty($options['order'])) {
$query .= " ORDER BY ".$options['order'];
}
$result = Database::query($query);
$formatted_sessions = array();
if (Database::num_rows($result)) {
$sessions = Database::store_result($result);
$sessions = Database::store_result($result);
foreach ($sessions as $session) {
$session['name'] = Display::url($session['name'], "resume_session.php?id_session=".$session['id']);
$session['coach_name'] = Display::url($session['coach_name'], "user_information.php?user_id=".$session['user_id']);
if ($session['date_start'] == '0000-00-00' & & $session['date_end'] == '0000-00-00') {
@ -397,9 +485,28 @@ class SessionManager
* @return $id;
* The parameter id is a primary key
**/
public static function edit_session ($id,$name,$year_start,$month_start,$day_start,$year_end,$month_end,$day_end,$nb_days_acess_before,$nb_days_acess_after,$nolimit,$id_coach, $id_session_category, $id_visibility, $start_limit = true, $end_limit = true) {
global $_user;
$name=trim(stripslashes($name));
public static function edit_session (
$id,
$name,
$year_start,
$month_start,
$day_start,
$year_end,
$month_end,
$day_end,
$nb_days_acess_before,
$nb_days_acess_after,
$nolimit,
$id_coach,
$id_session_category,
$id_visibility,
$start_limit = true,
$end_limit = true,
$description = null,
$showDescription = null
)
{
$name = trim(stripslashes($name));
$year_start=intval($year_start);
$month_start=intval($month_start);
$day_start=intval($day_start);
@ -412,9 +519,7 @@ class SessionManager
$id_session_category = intval($id_session_category);
$id_visibility = intval($id_visibility);
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
if (empty($nolimit)) {
$date_start = "$year_start-".(($month_start < 10 ) ? " 0 $ month_start " : $ month_start ) . " - " . ( ( $ day_start < 10 ) ? " 0 $ day_start " : $ day_start ) ;
@ -454,17 +559,32 @@ class SessionManager
$msg=get_lang('StartDateShouldBeBeforeEndDate');
return $msg;
} else {
$rs = Database::query("SELECT id FROM $tbl_session WHERE name='".Database::escape_string($name)."'");
$exists = false;
while ($row = Database::fetch_array($rs)) {
if($row['id']!=$id)
if ($row['id'] != $id)
$exists = true;
}
if ($exists) {
$msg=get_lang('SessionNameAlreadyExists');
$msg = get_lang('SessionNameAlreadyExists');
return $msg;
} else {
$sql="UPDATE $tbl_session " .
$sessionInfo = SessionManager::fetch($id);
$descriptionCondition = null;
if (array_key_exists('description', $sessionInfo)) {
$descriptionCondition = ' description = "'.Database::escape_string($description).'" ,';
}
$showDescriptionCondition = null;
if (array_key_exists('show_description', $sessionInfo)) {
$showDescriptionCondition = ' show_description = "'.Database::escape_string($showDescription).'" ,';
}
$sql = "UPDATE $tbl_session " .
"SET name='".Database::escape_string($name)."',
date_start='".$date_start."',
date_end='".$date_end."',
@ -472,6 +592,8 @@ class SessionManager
nb_days_access_before_beginning = ".$nb_days_acess_before.",
nb_days_access_after_end = ".$nb_days_acess_after.",
session_category_id = ".$id_session_category." ,
$descriptionCondition
$showDescriptionCondition
visibility= ".$id_visibility."
WHERE id='$id'";
Database::query($sql);
@ -483,20 +605,22 @@ class SessionManager
/**
* Delete session
* @author Carlos Vargas from existing code
* @param array id_checked
* @param array id_checked an array to delete sessions
* @param boolean optional, true if the function is called by a webservice, false otherwise.
* @return void Nothing, or false on error
* The parameters is a array to delete sessions
**/
public static function delete_session($id_checked,$from_ws = false) {
public static function delete_session($id_checked, $from_ws = false)
{
$tbl_session= Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_session_rel_course= Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
$tbl_session_rel_course_rel_user= Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_session_rel_user= Database::get_main_table(TABLE_MAIN_SESSION_USER);
$tbl_url_session = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$t_sfv = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES);
global $_user;
if(is_array($id_checked)) {
$userId = api_get_user_id();
if (is_array($id_checked)) {
$id_checked = Database::escape_string(implode(',',$id_checked));
} else {
$id_checked = intval($id_checked);
@ -505,80 +629,22 @@ class SessionManager
if (!api_is_platform_admin() & & !$from_ws) {
$sql = 'SELECT session_admin_id FROM '.Database :: get_main_table(TABLE_MAIN_SESSION).' WHERE id='.$id_checked;
$rs = Database::query($sql);
if (Database::result($rs,0,0)!=$_user['user_id'] ) {
if (Database::result($rs, 0, 0) != $userId ) {
api_not_allowed(true);
}
}
Database::query("DELETE FROM $tbl_session WHERE id IN($id_checked)");
Database::query("DELETE FROM $tbl_session_rel_course WHERE id_session IN($id_checked)");
Database::query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session IN($id_checked)");
Database::query("DELETE FROM $tbl_session_rel_user WHERE id_session IN($id_checked)");
Database::query("DELETE FROM $tbl_url_session WHERE session_id IN($id_checked)");
// delete extra session fields
$t_sf = Database::get_main_table(TABLE_MAIN_SESSION_FIELD);
$t_sfv = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES);
// Delete extra fields from session where field variable is "SECCION"
$sql = "SELECT t_sfv.field_id FROM $t_sfv t_sfv, $t_sf t_sf WHERE t_sfv.session_id = '$id_checked' AND t_sf.field_variable = 'SECCION' ";
$rs_field = Database::query($sql);
$field_id = 0;
if (Database::num_rows($rs_field) == 1) {
$row_field = Database::fetch_row($rs_field);
$field_id = $row_field[0];
$sql_delete_sfv = "DELETE FROM $t_sfv WHERE session_id = '$id_checked' AND field_id = '$field_id'";
$rs_delete_sfv = Database::query($sql_delete_sfv);
}
$sql = "SELECT * FROM $t_sfv WHERE field_id = '$field_id' ";
$rs_field_id = Database::query($sql);
$sql_delete_sfv = "DELETE FROM $t_sfv WHERE session_id = '$id_checked'";
Database::query($sql_delete_sfv);
if (Database::num_rows($rs_field_id) == 0) {
$sql_delete_sf = "DELETE FROM $t_sf WHERE id = '$field_id'";
$rs_delete_sf = Database::query($sql_delete_sf);
}
/*
$sql = "SELECT distinct field_id FROM $t_sfv WHERE session_id = '$id_checked'";
$res_field_ids = @Database::query($sql);
if (Database::num_rows($res_field_ids) > 0) {
while($row_field_id = Database::fetch_row($res_field_ids)){
$field_ids[] = $row_field_id[0];
}
}
//delete from table_session_field_value from a given session id
$sql_session_field_value = "DELETE FROM $t_sfv WHERE session_id = '$id_checked'";
@Database::query($sql_session_field_value);
$sql = "SELECT distinct field_id FROM $t_sfv";
$res_field_all_ids = @Database::query($sql);
if (Database::num_rows($res_field_all_ids) > 0) {
while($row_field_all_id = Database::fetch_row($res_field_all_ids)){
$field_all_ids[] = $row_field_all_id[0];
}
}
if (count($field_ids) > 0 & & count($field_all_ids) > 0) {
foreach($field_ids as $field_id) {
// check if field id is used into table field value
if (in_array($field_id,$field_all_ids)) {
continue;
} else {
$sql_session_field = "DELETE FROM $t_sf WHERE id = '$field_id'";
Database::query($sql_session_field);
}
}
}
*/
// Add event to system log
$user_id = api_get_user_id();
event_system(LOG_SESSION_DELETE, LOG_SESSION_ID, $id_checked, api_get_utc_datetime(), $user_id);
event_system(LOG_SESSION_DELETE, LOG_SESSION_ID, $id_checked, api_get_utc_datetime(), $userId);
}
public static function clear_session_ref_promotion($id_promotion) {
@ -1334,7 +1400,7 @@ class SessionManager
* @param bool - optional, if is true the user don't be a coach now, otherwise it'll assign a coach
* @return bool true if there are affected rows, otherwise false
*/
public static function set_coach_to_course_session($user_id, $session_id = 0, $course_code = '',$nocoach = false) {
public static function set_coach_to_course_session($user_id, $session_id = 0, $course_code = '', $nocoach = false) {
// Definition of variables
$user_id = intval($user_id);
@ -1464,8 +1530,8 @@ class SessionManager
* @param int Human resources manager or Session admin id
* @return array sessions
*/
public static function get_sessions_followed_by_drh($hr_manager_id) {
global $_configuration;
public static function get_sessions_followed_by_drh($hr_manager_id)
{
// Database Table Definitions
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
$tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
@ -1536,10 +1602,11 @@ class SessionManager
/**
* Get users by session
* @param int session id
* @param int filter by status
* @param int filter by status coach = 2
* @return array a list with an user list
*/
public static function get_users_by_session($id, $with_status = null) {
public static function get_users_by_session($id, $with_status = null)
{
if (empty($id)) {
return array();
}
@ -1930,7 +1997,6 @@ class SessionManager
$tag_names = array();
foreach ($content as $key => $enreg) {
$enreg = explode(';', trim($enreg));
if ($key) {
foreach ($tag_names as $tag_key => $tag_name) {
@ -1962,9 +2028,15 @@ class SessionManager
$date_start = $enreg['DateStart'];
$date_end = $enreg['DateEnd'];
$visibility = isset($enreg['Visibility']) ? $enreg['Visibility'] : $sessionVisibility;
$session_category_id = $enreg['SessionCategory'];
$session_category_id = isset($enreg['SessionCategory']) ? $enreg['SessionCategory'] : null;
$sessionDescription = isset($enreg['SessionDescription']) ? $enreg['SessionDescription'] : null;
$extraSessionParameters = null;
if (!empty($sessionDescription)) {
$extraSessionParameters = " , description = '".Database::escape_string($sessionDescription)."'";
}
// Searching a coach.
// Searching a general coach.
if (!empty($enreg['Coach'])) {
$coach_id = UserManager::get_user_id_from_username($enreg['Coach']);
if ($coach_id === false) {
@ -1980,6 +2052,7 @@ class SessionManager
$unique_name = false; // This MUST be initializead.
$i = 0;
// Change session name, verify that session doesn't exist.
$suffix = null;
while (!$unique_name) {
if ($i > 1) {
$suffix = ' - '.$i;
@ -2003,13 +2076,12 @@ class SessionManager
date_end = '$date_end',
visibility = '$visibility',
session_category_id = '$session_category_id',
session_admin_id=".intval($defaultUserId).$extraParameters;
session_admin_id=".intval($defaultUserId).$extraParameters.$extraSessionParameters ;
Database::query($sql_session);
$session_id = Database::insert_id();
if ($debug) {
if ($session_id) {
foreach ($enreg as $key => $value) {
if (substr($key, 0, 6) == 'extra_') { //an extra field
self::update_session_extra_field_value($session_id, substr($key, 6), $value);
@ -2046,7 +2118,7 @@ class SessionManager
date_start = '$date_start',
date_end = '$date_end',
visibility = '$visibility',
session_category_id = '$session_category_id' ".$extraParameters;
session_category_id = '$session_category_id' ".$extraParameters.$extraSessionParameters ;
Database::query($sql_session);
@ -2077,6 +2149,10 @@ class SessionManager
'session_category_id' => $session_category_id
);
if (!empty($sessionDescription)) {
$params['description'] = $sessionDescription;
}
if (!empty($fieldsToAvoidUpdate)) {
foreach ($fieldsToAvoidUpdate as $field) {
unset($params[$field]);
@ -2134,22 +2210,9 @@ class SessionManager
if (CourseManager::course_exists($course_code)) {
$coach = api_strstr($course, '[');
$coach = api_substr($coach, 1, api_strpos($coach,']') - 1);
if (!empty($coach)) {
$coach_id = UserManager::get_user_id_from_username($coach);
if ($coach_id === false) {
$coach_id = '';
}
} else {
$coach = '';
}
// Adding the course to a session.
$sql_course = "INSERT IGNORE INTO $tbl_session_course SET
course_code = '$course_code',
id_session='$session_id'";
$sql_course = "INSERT IGNORE INTO $tbl_session_course
SET course_code = '$course_code', id_session='$session_id'";
Database::query($sql_course);
if ($debug) {
@ -2170,22 +2233,40 @@ class SessionManager
// Adding coaches to session course user
if (!empty($course_coaches)) {
$savedCoaches = array();
// Adding course teachers as course session teachers
$alreadyAddedTeachers = CourseManager::get_teacher_list_from_course_code($course_code);
if (!empty($alreadyAddedTeachers)) {
$teachersToAdd = array();
foreach ($alreadyAddedTeachers as $user) {
$teachersToAdd[] = $user['username'];
}
$course_coaches = array_merge($course_coaches, $teachersToAdd);
}
foreach ($course_coaches as $course_coach) {
$course_coach = trim($course_coach);
$coach_id = UserManager::get_user_id_from_username($course_coach);
if ($coach_id !== false) {
$sql = "INSERT IGNORE INTO $tbl_session_course_user SET
id_user='$coach_id',
course_code='$course_code',
id_user = '$coach_id',
course_code = '$course_code',
id_session = '$session_id',
status = 2 ";
Database::query($sql);
if ($debug) {
$logger->addInfo("Sessions - Adding course coach: user #$coach_id ($course_coach) to course: '$course_code' and session #$session_id");
}
$savedCoaches[] = $coach_id;
} else {
$error_message .= get_lang('UserDoesNotExist').' : '.$course_coach.$eol;
}
}
}
$users_in_course_counter = 0;
@ -2193,6 +2274,7 @@ class SessionManager
// Adding the relationship "Session - Course - User".
foreach ($course_users as $user) {
$user = trim($user);
$user_id = UserManager::get_user_id_from_username($user);
if ($user_id !== false) {
@ -2215,80 +2297,6 @@ class SessionManager
$course_info = CourseManager::get_course_information($course_code);
$inserted_in_course[$course_code] = $course_info['title'];
} else {
// TODO: We should create the course as in the XML import.
}
if (CourseManager::course_exists($course_code, true)) {
$list = CourseManager :: get_courses_info_from_visual_code($course_code);
foreach ($list as $vcourse) {
if ($vcourse['code'] == $course_code) {
// Ignore, this has already been inserted.
} else {
$coach = api_strstr($course, '[');
$coach = api_substr($coach, 1, api_strpos($coach,']') - 1);
// Adding the relationship "Session - Course".
$sql_course = "INSERT IGNORE INTO $tbl_session_course SET
course_code = '".$vcourse['code']."',
id_session='$session_id'";
Database::query($sql_course);
if ($debug) {
$logger->addInfo("Sessions - Adding course to session: course: '".$vcourse['code']."' and session #$session_id");
}
// Adding coachs to session course user
foreach ($course_coaches as $course_coach) {
$coach_id = UserManager::get_user_id_from_username($course_coach);
if ($coach_id !== false) {
$sql = "INSERT IGNORE INTO $tbl_session_course_user SET
id_user='$coach_id',
course_code='{$vcourse['code']}',
id_session = '$session_id',
status = 2 ";
Database::query($sql);
if ($debug) {
$logger->addInfo("Sessions - Adding coach to session: user #$coach_id ($course_coach) course: '".$vcourse['code']."' and session #$session_id");
}
} else {
$error_message .= get_lang('UserDoesNotExist').' : '.$course_coach.$eol;
}
}
$users_in_course_counter = 0;
// Adding the relationship "Session - Course - User".
foreach ($course_users as $user) {
$user_id = UserManager::get_user_id_from_username($user);
if ($user_id !== false) {
$sql = "INSERT IGNORE INTO $tbl_session_course_user SET
id_user='$user_id',
course_code='{$vcourse['code']}',
id_session = '$session_id'";
Database::query($sql);
if ($debug) {
$logger->addInfo("Sessions - Adding user to session: user #$user_id ($user) course: '".$vcourse['code']."' and session #$session_id");
}
$users_in_course_counter++;
} else {
$error_message .= get_lang('UserDoesNotExist').' : '.$user.$eol;
}
}
Database::query("UPDATE $tbl_session_course SET nbr_users='$users_in_course_counter' WHERE course_code='".$vcourse['code']."'");
}
}
$inserted_in_course[$vcourse['code']] = $vcourse['title'];
}
}
$access_url_id = api_get_current_access_url_id();
@ -2303,4 +2311,27 @@ class SessionManager
'session_counter' => $session_counter
);
}
/**
* @param int $sessionId
* @param string $courseCode
* @return array
*/
public static function getCoachesByCourseSession($sessionId, $courseCode)
{
$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$sessionId = intval($sessionId);
$courseCode = Database::escape_string($courseCode);
$sql = "SELECT id_user FROM $tbl_session_rel_course_rel_user WHERE id_session = '$sessionId' AND course_code = '$courseCode' AND status = 2";
$result = Database::query($sql);
$coaches = array();
if (Database::num_rows($result) > 0){
while ($row = Database::fetch_row($result)) {
$coaches[] = $row[0];
}
}
return $coaches;
}
}