|
|
|
|
@ -37,19 +37,22 @@ class SessionManager { |
|
|
|
|
* Create a session |
|
|
|
|
* @author Carlos Vargas from existing code |
|
|
|
|
* @param string name |
|
|
|
|
* @param integer year_start |
|
|
|
|
* @param integer month_start |
|
|
|
|
* @param integer day_start |
|
|
|
|
* @param integer year_end |
|
|
|
|
* @param integer month_end |
|
|
|
|
* @param integer day_end |
|
|
|
|
* @param integer nb_days_acess_before |
|
|
|
|
* @param integer nb_days_acess_after |
|
|
|
|
* @param integer nolimit |
|
|
|
|
* @param string coach_username |
|
|
|
|
* @param integer id_session_category |
|
|
|
|
* @return $id_session; |
|
|
|
|
**/ |
|
|
|
|
* @param integer Start year (yyyy) |
|
|
|
|
* @param integer Start month (mm) |
|
|
|
|
* @param integer Start day (dd) |
|
|
|
|
* @param integer End year (yyyy) |
|
|
|
|
* @param integer End month (mm) |
|
|
|
|
* @param integer End day (dd) |
|
|
|
|
* @param integer Number of days that the coach can access the session before the start date |
|
|
|
|
* @param integer Number of days that the coach can access the session after the end date |
|
|
|
|
* @param integer If 1, means there are no date limits |
|
|
|
|
* @param mixed If integer, this is the session coach id, if string, the coach ID will be looked for from the user table |
|
|
|
|
* @param integer ID of the session category in which this session is registered |
|
|
|
|
* @param integer Visibility after end date (0 = read-only, 1 = invisible, 2 = accessible) |
|
|
|
|
* @param string Start limit = true if the start date has to be considered |
|
|
|
|
* @param string End limit = true if the end date has to be considered |
|
|
|
|
* @return mixed Session ID on success, error message otherwise |
|
|
|
|
**/ |
|
|
|
|
public static function create_session($sname,$syear_start,$smonth_start,$sday_start,$syear_end,$smonth_end,$sday_end,$snb_days_acess_before,$snb_days_acess_after,$nolimit,$coach_username, $id_session_category,$id_visibility, $start_limit = true, $end_limit = true) { |
|
|
|
|
$name= Database::escape_string(trim($sname)); |
|
|
|
|
$year_start= intval($syear_start); |
|
|
|
|
@ -115,7 +118,6 @@ class SessionManager { |
|
|
|
|
} else { |
|
|
|
|
$sql_insert = "INSERT INTO $tbl_session(name,date_start,date_end,id_coach,session_admin_id, nb_days_access_before_beginning, nb_days_access_after_end, session_category_id,visibility) |
|
|
|
|
VALUES('".$name."','$date_start','$date_end','$id_coach',".api_get_user_id().",".$nb_days_acess_before.", ".$nb_days_acess_after.", ".$id_session_category.", ".$id_visibility.")"; |
|
|
|
|
|
|
|
|
|
Database::query($sql_insert); |
|
|
|
|
$id_session=Database::insert_id(); |
|
|
|
|
|
|
|
|
|
@ -357,14 +359,11 @@ class SessionManager { |
|
|
|
|
//from function parameter |
|
|
|
|
$session_visibility = $visibility; |
|
|
|
|
if (empty($session_visibility)) { |
|
|
|
|
$session_visibility = $session_info['name']; |
|
|
|
|
$session_visivility = $session_info['visibility']; //loaded from DB |
|
|
|
|
//default status loaded if empty |
|
|
|
|
if (empty($session_visivility)) |
|
|
|
|
$session_visibility = SESSION_VISIBLE_READ_ONLY; // by default readonly 1 |
|
|
|
|
} |
|
|
|
|
$session_info = api_get_session_info($id_session); |
|
|
|
|
$session_name = $session_info['name']; |
|
|
|
|
|
|
|
|
|
//$sql = "SELECT id_user FROM $tbl_session_rel_user WHERE id_session='$id_session' AND relation_type<>".SESSION_RELATION_TYPE_RRHH.""; |
|
|
|
|
$sql = "SELECT id_user FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' "; |
|
|
|
|
@ -533,9 +532,9 @@ class SessionManager { |
|
|
|
|
public static function add_courses_to_session ($id_session, $course_list, $empty_courses=true) { |
|
|
|
|
// security checks |
|
|
|
|
if ($id_session!= strval(intval($id_session))) { return false; } |
|
|
|
|
foreach($course_list as $intCourse){ |
|
|
|
|
if ($intCourse!= strval(intval($intCourse))) { return false; } |
|
|
|
|
} |
|
|
|
|
//foreach($course_list as $intCourse){ |
|
|
|
|
// if ($intCourse!= strval(intval($intCourse))) { return false; } |
|
|
|
|
//} |
|
|
|
|
// initialisation |
|
|
|
|
$tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER); |
|
|
|
|
$tbl_session = Database::get_main_table(TABLE_MAIN_SESSION); |
|
|
|
|
@ -1300,12 +1299,65 @@ class SessionManager { |
|
|
|
|
* @param int session id |
|
|
|
|
* @param int status |
|
|
|
|
*/ |
|
|
|
|
function set_session_status($session_id, $status) { |
|
|
|
|
public function set_session_status($session_id, $status) { |
|
|
|
|
$t = Database::get_main_table(TABLE_MAIN_SESSION); |
|
|
|
|
$params['visibility'] = $status; |
|
|
|
|
Database::update($t, $params, array('id = ?'=>$session_id)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Copies a session with the same data to a new session. |
|
|
|
|
* The new copy is not assigned to the same promotion. @see suscribe_sessions_to_promotions() for that |
|
|
|
|
* @param int Session ID |
|
|
|
|
* @param bool Whether to copy the relationship with courses |
|
|
|
|
* @param bool Whether to copy the relationship with users |
|
|
|
|
* @return int The new session ID on success, 0 otherwise |
|
|
|
|
* @todo make sure the extra session fields are copied too |
|
|
|
|
*/ |
|
|
|
|
public function copy_session($id, $copy_courses=true, $copy_users=true) { |
|
|
|
|
$id = (int)$id; |
|
|
|
|
$s = self::fetch($id); |
|
|
|
|
$s['year_start'] = substr($s['date_start'],0,4); |
|
|
|
|
$s['month_start'] = substr($s['date_start'],5,2); |
|
|
|
|
$s['day_start'] = substr($s['date_start'],8,2); |
|
|
|
|
$s['year_end'] = substr($s['date_end'],0,4); |
|
|
|
|
$s['month_end'] = substr($s['date_end'],5,2); |
|
|
|
|
$s['day_end'] = substr($s['date_end'],8,2); |
|
|
|
|
$sid = self::create_session($s['name'].' '.get_lang('Copy'), |
|
|
|
|
$s['year_start'], $s['month_start'], $s['day_start'], |
|
|
|
|
$s['year_end'],$s['month_end'],$s['day_end'], |
|
|
|
|
$s['nb_days_acess_before_beginning'],$s['nb_days_acess_after_end'], |
|
|
|
|
false,(int)$s['id_coach'], $s['session_category_id'], |
|
|
|
|
(int)$s['visibility'],true, true); |
|
|
|
|
if (!is_numeric($sid)) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
if ($copy_courses) { |
|
|
|
|
// Register courses from the original session to the new session |
|
|
|
|
$courses = self::get_course_list_by_session_id($id); |
|
|
|
|
$short_courses = array(); |
|
|
|
|
if (is_array($courses) && count($courses)>0) { |
|
|
|
|
foreach ($courses as $course) { |
|
|
|
|
$short_courses[] = $course['course_code']; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$courses = null; |
|
|
|
|
$res = self::add_courses_to_session($sid, $short_courses, true); |
|
|
|
|
$short_courses = null; |
|
|
|
|
} |
|
|
|
|
if ($copy_users) { |
|
|
|
|
// Register users from the original session to the new session |
|
|
|
|
$users = self::get_users_by_session($id); |
|
|
|
|
$short_users = array(); |
|
|
|
|
if (is_array($users) && count($users)>0) { |
|
|
|
|
foreach ($users as $user) { |
|
|
|
|
$short_users[] = $user['user_id']; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$users = null; |
|
|
|
|
$res = self::suscribe_users_to_session($sid, $short_users, 1, true, false); |
|
|
|
|
$short_users = null; |
|
|
|
|
} |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|