123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593 |
- <?php
- require_once('display.lib.php');
- class SessionManager {
- private function __construct() {
- }
-
- public static function fetch($id) {
- $t = Database::get_main_table(TABLE_MAIN_SESSION);
- if ($id != strval(intval($id))) { return array(); }
- $s = "SELECT * FROM $t WHERE id = $id";
- $r = Database::query($s,__FILE__,__LINE__);
- if (Database::num_rows($r) != 1) { return array(); }
- return Database::fetch_array($r,'ASSOC');
- }
-
- 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) {
- global $_user;
- $name= trim($sname);
- $year_start= intval($syear_start);
- $month_start=intval($smonth_start);
- $day_start=intval($sday_start);
- $year_end=intval($syear_end);
- $month_end=intval($smonth_end);
- $day_end=intval($sday_end);
- $nb_days_acess_before = intval($snb_days_acess_before);
- $nb_days_acess_after = intval($snb_days_acess_after);
- $tbl_user = Database::get_main_table(TABLE_MAIN_USER);
- $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
- $sql = 'SELECT user_id FROM '.$tbl_user.' WHERE username="'.Database::escape_string($coach_username).'"';
- $rs = api_sql_query($sql, __FILE__, __LINE__);
- $id_coach = Database::result($rs,0,'user_id');
- if (empty($nolimit)) {
- $date_start="$year_start-".(($month_start < 10)?"0$month_start":$month_start)."-".(($day_start < 10)?"0$day_start":$day_start);
- $date_end="$year_end-".(($month_end < 10)?"0$month_end":$month_end)."-".(($day_end < 10)?"0$day_end":$day_end);
- } else {
- $date_start="000-00-00";
- $date_end="000-00-00";
- }
- if (empty($name)) {
- $msg=get_lang('SessionNameIsRequired');
- return $msg;
- } elseif (empty($coach_username)) {
- $msg=get_lang('CoachIsRequired');
- return $msg;
- } elseif (empty($nolimit) && (!$month_start || !$day_start || !$year_start || !checkdate($month_start,$day_start,$year_start))) {
- $msg=get_lang('InvalidStartDate');
- return $msg;
- } elseif (empty($nolimit) && (!$month_end || !$day_end || !$year_end || !checkdate($month_end,$day_end,$year_end))) {
- $msg=get_lang('InvalidEndDate');
- return $msg;
- } elseif(empty($nolimit) && $date_start >= $date_end) {
- $msg=get_lang('StartDateShouldBeBeforeEndDate');
- return $msg;
- } else {
- $rs = api_sql_query("SELECT 1 FROM $tbl_session WHERE name='".addslashes($name)."'");
- if(Database::num_rows($rs)) {
- $msg=get_lang('SessionNameAlreadyExists');
- return $msg;
- } else {
- api_sql_query("INSERT INTO $tbl_session(name,date_start,date_end,id_coach,session_admin_id, nb_days_access_before_beginning, nb_days_access_after_end) VALUES('".Database::escape_string($name)."','$date_start','$date_end','$id_coach',".intval($_user['user_id']).",".$nb_days_acess_before.", ".$nb_days_acess_after.")",__FILE__,__LINE__);
- $id_session=Database::get_last_insert_id();
-
- $time = time();
- $user_id = api_get_user_id();
- event_system(LOG_SESSION_CREATE, LOG_SESSION_ID, $id_session, $time, $user_id);
- return $id_session;
- }
- }
- }
-
- 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) {
- global $_user;
- $name=trim(stripslashes($name));
- $year_start=intval($year_start);
- $month_start=intval($month_start);
- $day_start=intval($day_start);
- $year_end=intval($year_end);
- $month_end=intval($month_end);
- $day_end=intval($day_end);
- $id_coach= intval($id_coach);
- $nb_days_acess_before= intval($nb_days_acess_before);
- $nb_days_acess_after = intval($nb_days_acess_after);
- $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);
- $date_end="$year_end-".(($month_end < 10)?"0$month_end":$month_end)."-".(($day_end < 10)?"0$day_end":$day_end);
- } else {
- $date_start="000-00-00";
- $date_end="000-00-00";
- }
- if (empty($name)) {
- $msg=get_lang('SessionNameIsRequired');
- return $msg;
- } elseif (empty($id_coach)) {
- $msg=get_lang('CoachIsRequired');
- return $msg;
- } elseif (empty($nolimit) && (!$month_start || !$day_start || !$year_start || !checkdate($month_start,$day_start,$year_start))) {
- $msg=get_lang('InvalidStartDate');
- return $msg;
- } elseif (empty($nolimit) && (!$month_end || !$day_end || !$year_end || !checkdate($month_end,$day_end,$year_end))) {
- $msg=get_lang('InvalidEndDate');
- return $msg;
- } elseif (empty($nolimit) && $date_start >= $date_end) {
- $msg=get_lang('StartDateShouldBeBeforeEndDate');
- return $msg;
- } else {
- $rs = api_sql_query("SELECT id FROM $tbl_session WHERE name='".Database::escape_string($name)."'");
- $exists = false;
- while ($row = Database::fetch_array($rs)) {
- if($row['id']!=$id)
- $exists = true;
- }
- if ($exists) {
- $msg=get_lang('SessionNameAlreadyExists');
- return $msg;
- } else {
- $sql="UPDATE $tbl_session " .
- "SET name='".Database::escape_string($name)."',
- date_start='".$date_start."',
- date_end='".$date_end."',
- id_coach='".$id_coach."',
- nb_days_access_before_beginning = ".$nb_days_acess_before.",
- nb_days_access_after_end = ".$nb_days_acess_after."
- WHERE id='$id'";
- api_sql_query($sql,__FILE__,__LINE__);
-
- return $id;
- }
- }
- }
-
- public static function delete_session ($id_checked) {
- $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_user = Database::get_main_table(TABLE_MAIN_USER);
- global $_user;
- if(is_array($id_checked)) {
- $id_checked=Database::escape_string(implode(',',$id_checked));
- } else {
- $id_checked=intval($id_checked);
- }
- if (!api_is_platform_admin()) {
- $sql = 'SELECT session_admin_id FROM '.Database :: get_main_table(TABLE_MAIN_SESSION).' WHERE id='.$id_checked;
- $rs = api_sql_query($sql,__FILE__,__LINE__);
- if (Database::result($rs,0,0)!=$_user['user_id']) {
- api_not_allowed(true);
- }
- }
- api_sql_query("DELETE FROM $tbl_session WHERE id IN($id_checked)",__FILE__,__LINE__);
- api_sql_query("DELETE FROM $tbl_session_rel_course WHERE id_session IN($id_checked)",__FILE__,__LINE__);
- api_sql_query("DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session IN($id_checked)",__FILE__,__LINE__);
- api_sql_query("DELETE FROM $tbl_session_rel_user WHERE id_session IN($id_checked)",__FILE__,__LINE__);
-
- $t_sf = Database::get_main_table(TABLE_MAIN_SESSION_FIELD);
- $t_sfv = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES);
- $sql = "SELECT distinct field_id FROM $t_sfv WHERE session_id = '$id_checked'";
- $res_field_ids = @api_sql_query($sql,__FILE__,__LINE__);
- while($row_field_id = Database::fetch_row($res_field_ids)){
- $field_ids[] = $row_field_id[0];
- }
-
- $sql_session_field_value = "DELETE FROM $t_sfv WHERE session_id = '$id_checked'";
- @api_sql_query($sql_session_field_value,__FILE__,__LINE__);
- $sql = "SELECT distinct field_id FROM $t_sfv";
- $res_field_all_ids = @api_sql_query($sql,__FILE__,__LINE__);
- 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) {
-
- if (in_array($field_id,$field_all_ids)) {
- continue;
- } else {
- $sql_session_field = "DELETE FROM $t_sf WHERE id = '$field_id'";
- api_sql_query($sql_session_field,__FILE__,__LINE__);
- }
- }
- }
-
- $time = time();
- $user_id = api_get_user_id();
- event_system(LOG_SESSION_DELETE, LOG_SESSION_ID, $id_checked, $time, $user_id);
- }
-
- public static function suscribe_users_to_session ($id_session,$user_list,$empty_users=true) {
- if ($id_session!= strval(intval($id_session))) return false;
- foreach($user_list as $intUser){
- if ($intUser!= strval(intval($intUser))) return false;
- }
- $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_session = Database::get_main_table(TABLE_MAIN_SESSION);
- $sql = "SELECT id_user FROM $tbl_session_rel_user WHERE id_session='$id_session'";
- $result = api_sql_query($sql,__FILE__,__LINE__);
- $existingUsers = array();
- while($row = Database::fetch_array($result)){
- $existingUsers[] = $row['id_user'];
- }
- $sql = "SELECT course_code FROM $tbl_session_rel_course WHERE id_session='$id_session'";
- $result=api_sql_query($sql,__FILE__,__LINE__);
- $course_list=array();
- while($row=Database::fetch_array($result)) {
- $course_list[]=$row['course_code'];
- }
- foreach ($course_list as $enreg_course) {
-
- $nbr_users=0;
- $enreg_course = Database::escape_string($enreg_course);
-
- if ($empty_users!==false) {
- foreach ($existingUsers as $existing_user) {
- if(!in_array($existing_user, $user_list)) {
- $sql = "DELETE FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code='$enreg_course' AND id_user='$existing_user'";
- api_sql_query($sql,__FILE__,__LINE__);
- if(Database::affected_rows()) {
- $nbr_users--;
- }
- }
- }
- }
-
- foreach ($user_list as $enreg_user) {
- if(!in_array($enreg_user, $existingUsers)) {
- $enreg_user = Database::escape_string($enreg_user);
- $insert_sql = "INSERT IGNORE INTO $tbl_session_rel_course_rel_user(id_session,course_code,id_user) VALUES('$id_session','$enreg_course','$enreg_user')";
- api_sql_query($insert_sql,__FILE__,__LINE__);
- if(Database::affected_rows()) {
- $nbr_users++;
- }
- }
- }
-
- $sql = "SELECT COUNT(id_user) as nbUsers FROM $tbl_session_rel_course_rel_user WHERE id_session='$id_session' AND course_code='$enreg_course'";
- $rs = api_sql_query($sql, __FILE__, __LINE__);
- list($nbr_users) = Database::fetch_array($rs);
-
- $update_sql = "UPDATE $tbl_session_rel_course SET nbr_users=$nbr_users WHERE id_session='$id_session' AND course_code='$enreg_course'";
- api_sql_query($update_sql,__FILE__,__LINE__);
- }
-
- if ($empty_users===true){
- api_sql_query("DELETE FROM $tbl_session_rel_user WHERE id_session = $id_session",__FILE__,__LINE__);
- }
-
- $nbr_users = 0;
- foreach ($user_list as $enreg_user) {
- $enreg_user = Database::escape_string($enreg_user);
- $nbr_users++;
- $insert_sql = "INSERT IGNORE INTO $tbl_session_rel_user(id_session, id_user) VALUES('$id_session','$enreg_user')";
- api_sql_query($insert_sql,__FILE__,__LINE__);
- }
-
- $nbr_users = count($user_list);
- $update_sql = "UPDATE $tbl_session SET nbr_users= $nbr_users WHERE id='$id_session' ";
- api_sql_query($update_sql,__FILE__,__LINE__);
- }
-
- public static function add_courses_to_session ($id_session, $course_list, $empty_courses=true) {
-
- if ($id_session!= strval(intval($id_session))) { return false; }
- foreach($course_list as $intCourse){
- if ($intCourse!= strval(intval($intCourse))) { return false; }
- }
-
- $tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
- $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
- $tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
- $tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
- $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
-
- $id_coach = api_sql_query("SELECT id_coach FROM $tbl_session WHERE id=$id_session");
- $id_coach = Database::fetch_array($id_coach);
- $id_coach = $id_coach[0];
-
- $rs = api_sql_query("SELECT course_code FROM $tbl_session_rel_course WHERE id_session=$id_session");
- $existingCourses = api_store_result($rs);
- $nbr_courses=count($existingCourses);
-
- $sql="SELECT id_user
- FROM $tbl_session_rel_user
- WHERE id_session = $id_session";
- $result=api_sql_query($sql,__FILE__,__LINE__);
- $user_list=api_store_result($result);
-
- if ($empty_courses===true) {
- foreach ($existingCourses as $existingCourse) {
- if (!in_array($existingCourse['course_code'], $course_list)){
- api_sql_query("DELETE FROM $tbl_session_rel_course WHERE course_code='".$existingCourse['course_code']."' AND id_session=$id_session");
- api_sql_query("DELETE FROM $tbl_session_rel_course_rel_user WHERE course_code='".$existingCourse['course_code']."' AND id_session=$id_session");
- }
- }
- $nbr_courses=0;
- }
-
- foreach ($course_list as $enreg_course) {
- $enreg_course = Database::escape_string($enreg_course);
- $exists = false;
-
- foreach ($existingCourses as $existingCourse) {
- if ($enreg_course == $existingCourse['course_code']) {
- $exists=true;
- }
- }
- if (!$exists) {
-
- $sql_insert_rel_course= "INSERT INTO $tbl_session_rel_course (id_session,course_code, id_coach) VALUES ('$id_session','$enreg_course','$id_coach')";
- api_sql_query($sql_insert_rel_course ,__FILE__,__LINE__);
-
- $existingCourses[]=array('course_code'=>$enreg_course);
- $nbr_courses++;
-
- $nbr_users=0;
- foreach ($user_list as $enreg_user) {
- $enreg_user_id = Database::escape_string($enreg_user['id_user']);
- $sql_insert = "INSERT IGNORE INTO $tbl_session_rel_course_rel_user (id_session,course_code,id_user) VALUES ('$id_session','$enreg_course','$enreg_user_id')";
- api_sql_query($sql_insert,__FILE__,__LINE__);
- if (Database::affected_rows()) {
- $nbr_users++;
- }
- }
- api_sql_query("UPDATE $tbl_session_rel_course SET nbr_users=$nbr_users WHERE id_session='$id_session' AND course_code='$enreg_course'",__FILE__,__LINE__);
- }
- }
- api_sql_query("UPDATE $tbl_session SET nbr_courses=$nbr_courses WHERE id='$id_session'",__FILE__,__LINE__);
- }
-
- public static function create_session_extra_field ($fieldvarname, $fieldtype, $fieldtitle) {
-
- $t_sf = Database::get_main_table(TABLE_MAIN_SESSION_FIELD);
- $fieldvarname = Database::escape_string($fieldvarname);
- $fieldtitle = Database::escape_string($fieldtitle);
- $fieldtype = (int)$fieldtype;
- $time = time();
- $sql_field = "SELECT id FROM $t_sf WHERE field_variable = '$fieldvarname'";
- $res_field = api_sql_query($sql_field,__FILE__,__LINE__);
- $r_field = Database::fetch_row($res_field);
- if (Database::num_rows($res_field)>0) {
- $field_id = $r_field[0];
- } else {
-
- $sql = "SELECT MAX(field_order) FROM $t_sf";
- $res = api_sql_query($sql,__FILE__,__LINE__);
- $order = 0;
- if (Database::num_rows($res)>0) {
- $row = Database::fetch_row($res);
- $order = $row[0]+1;
- }
- $sql = "INSERT INTO $t_sf
- SET field_type = '$fieldtype',
- field_variable = '$fieldvarname',
- field_display_text = '$fieldtitle',
- field_order = '$order',
- tms = FROM_UNIXTIME($time)";
- $result = api_sql_query($sql,__FILE__,__LINE__);
- $field_id=Database::get_last_insert_id();
- }
- return $field_id;
- }
- public static function update_session_extra_field_value ($session_id,$fname,$fvalue='') {
- $t_sf = Database::get_main_table(TABLE_MAIN_SESSION_FIELD);
- $t_sfv = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES);
- $fname = Database::escape_string($fname);
- $session_id = (int)$session_id;
- $fvalues = '';
- if(is_array($fvalue))
- {
- foreach($fvalue as $val)
- {
- $fvalues .= Database::escape_string($val).';';
- }
- if(!empty($fvalues))
- {
- $fvalues = substr($fvalues,0,-1);
- }
- }
- else
- {
- $fvalues = Database::escape_string($fvalue);
- }
- $sqlsf = "SELECT * FROM $t_sf WHERE field_variable='$fname'";
- $ressf = api_sql_query($sqlsf,__FILE__,__LINE__);
- if(Database::num_rows($ressf)==1)
- {
-
- $rowsf = Database::fetch_array($ressf);
- $tms = time();
- $sqlsfv = "SELECT * FROM $t_sfv WHERE session_id = '$session_id' AND field_id = '".$rowsf['id']."' ORDER BY id";
- $ressfv = api_sql_query($sqlsfv,__FILE__,__LINE__);
- $n = Database::num_rows($ressfv);
- if ($n>1) {
-
- while($rowsfv = Database::fetch_array($ressfv))
- {
- if($n > 1)
- {
- $sqld = "DELETE FROM $t_sfv WHERE id = ".$rowsfv['id'];
- $resd = api_sql_query($sqld,__FILE__,__LINE__);
- $n--;
- }
- $rowsfv = Database::fetch_array($ressfv);
- if($rowsfv['field_value'] != $fvalues)
- {
- $sqlu = "UPDATE $t_sfv SET field_value = '$fvalues', tms = FROM_UNIXTIME($tms) WHERE id = ".$rowsfv['id'];
- $resu = api_sql_query($sqlu,__FILE__,__LINE__);
- return($resu?true:false);
- }
- return true;
- }
- } else if ($n==1) {
-
- $rowsfv = Database::fetch_array($ressfv);
- if($rowsfv['field_value'] != $fvalues)
- {
- $sqlu = "UPDATE $t_sfv SET field_value = '$fvalues', tms = FROM_UNIXTIME($tms) WHERE id = ".$rowsfv['id'];
-
- $resu = api_sql_query($sqlu,__FILE__,__LINE__);
- return($resu?true:false);
- }
- return true;
- } else {
- $sqli = "INSERT INTO $t_sfv (session_id,field_id,field_value,tms) " .
- "VALUES ('$session_id',".$rowsf['id'].",'$fvalues',FROM_UNIXTIME($tms))";
-
- $resi = api_sql_query($sqli,__FILE__,__LINE__);
- return($resi?true:false);
- }
- } else {
- return false;
- }
- }
-
- public static function relation_session_course_exist ($session_id, $course_id) {
- $tbl_session_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
- $return_value = false;
- $sql= "SELECT course_code FROM $tbl_session_course WHERE id_session = ".Database::escape_string($session_id)." AND course_code = '".Database::escape_string($course_id)."'";
- $result = api_sql_query($sql, __FILE__, __LINE__);
- $num = Database::num_rows($result);
- if ($num>0) {
- $return_value = true;
- }
- return $return_value;
- }
-
- public static function get_session_by_name ($session_name) {
- $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
- $sql = 'SELECT id, id_coach, date_start, date_end FROM '.$tbl_session.' WHERE name="'.Database::escape_string($session_name).'"';
- $result = api_sql_query($sql, __FILE__, __LINE__);
- $num = Database::num_rows($result);
- if ($num>0){
- return Database::fetch_array($result);
- } else {
- return false;
- }
- }
- }
|