From 48a3bdbf977fc1812eae8de23f99bed43b2e45ec Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Wed, 25 Jul 2012 14:21:22 +0200 Subject: [PATCH 01/18] Adding message when course does not belong to the course but wants to add a work see #5240 --- main/work/work.php | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/main/work/work.php b/main/work/work.php index 8b15e77e57..1082d81344 100644 --- a/main/work/work.php +++ b/main/work/work.php @@ -527,7 +527,8 @@ switch ($action) { } break; case 'upload': - $check = Security::check_token('post'); + $check = Security::check_token('post'); + if ($student_can_edit_in_session && $check) { //check the token inserted into the form @@ -593,7 +594,7 @@ switch ($action) { parent_id = '".$work_id."' , session_id = '".intval($id_session)."' , user_id = '".$user_id."'"; - //var_dump($sql_add_publication); + //var_dump($sql_add_publication);exit; Database::query($sql_add_publication); $id = Database::insert_id(); if ($id) { @@ -632,7 +633,7 @@ switch ($action) { $insertId = Database::insert_id(); api_item_property_update($_course, 'work', $insertId, 'DocumentAdded', $user_id, $group_id); $succeed = true;*/ - } elseif (isset($_POST['editWork'])) { + } elseif (isset($_POST['editWork'])) { /* * SPECIAL CASE ! For a work edited */ @@ -669,9 +670,14 @@ switch ($action) { } else { $error_message = get_lang('IsNotPosibleSaveTheDocument'); } - } + } else { + $error_message = get_lang('IsNotPosibleSaveTheDocument'); + } Security::clear_token(); - } + } else { + //Bad token or can't add works + $error_message = get_lang('IsNotPosibleSaveTheDocument'); + } if (!empty($succeed) && !empty($id)) { //last value is to check this is not "just" an edit @@ -691,7 +697,7 @@ switch ($action) { $emailto[$row_email['myemail']] = $row_email['myemail']; } } - } else { + } else { // coachs of the session $sql_resp = 'SELECT user.email as myemail FROM ' . $table_session . ' session INNER JOIN ' . $table_user . ' user @@ -718,7 +724,7 @@ switch ($action) { } } - if (count($emailto) > 0) { + if (count($emailto) > 0) { $emailto = implode(',', $emailto); $emailsubject = "[" . api_get_setting('siteName') . "] "; $sender_name = api_get_setting('administratorName').' '.api_get_setting('administratorSurname'); @@ -755,7 +761,11 @@ switch ($action) { } event_upload($Id); Display :: display_confirmation_message(get_lang('DocAdd'), false); - } + } else { + if (!empty($error_message)) { + Display :: display_warning_message($error_message, false); + } + } case 'create_dir': case 'add': //$check = Security::check_token('post'); @@ -950,7 +960,7 @@ switch ($action) { case 'move_to': case 'list': /* Move file command */ - if ($is_allowed_to_edit && $action == 'move_to') { + if ($is_allowed_to_edit && $action == 'move_to') { $move_to_path = get_work_path($_REQUEST['move_to_id']); if ($move_to_path==-1) { @@ -1139,7 +1149,7 @@ switch ($action) { } //User works - if (isset($work_id) && !empty($work_id) && !$display_list_users_without_publication) { + if (isset($work_id) && !empty($work_id) && !$display_list_users_without_publication) { $work_data = get_work_assignment_by_id($work_id); $check_qualification = intval($my_folder_data['qualification']); From b25ada27d77d3508521b61cba9ba73b228ad76a6 Mon Sep 17 00:00:00 2001 From: Julio Montoya Date: Wed, 25 Jul 2012 15:05:20 +0200 Subject: [PATCH 02/18] Minor - Adding static into some classes to avoid PHP warnings --- main/document/download_scorm.php | 2 +- main/inc/lib/events.lib.inc.php | 27 ++++++++++++------------ main/inc/lib/tracking.lib.php | 4 ++-- main/newscorm/download.php | 2 +- main/newscorm/learnpath.class.php | 7 +++--- main/newscorm/learnpathItem.class.php | 13 +++++++----- main/survey/survey.lib.php | 2 +- tests/main/inc/lib/tracking.lib.test.php | 4 ++-- 8 files changed, 32 insertions(+), 29 deletions(-) diff --git a/main/document/download_scorm.php b/main/document/download_scorm.php index f6c4c01dc5..78226ac352 100644 --- a/main/document/download_scorm.php +++ b/main/document/download_scorm.php @@ -29,7 +29,7 @@ if (isset($_SESSION['oLP'])) { } //If is visible for the current user -if (!$obj->is_lp_visible_for_student($obj->get_id(), api_get_user_id())) { +if (!learnpath::is_lp_visible_for_student($obj->get_id(), api_get_user_id())) { api_not_allowed(); } diff --git a/main/inc/lib/events.lib.inc.php b/main/inc/lib/events.lib.inc.php index 977f3bde4e..52cd3c84b8 100644 --- a/main/inc/lib/events.lib.inc.php +++ b/main/inc/lib/events.lib.inc.php @@ -846,6 +846,7 @@ function delete_student_lp_events($user_id, $lp_id, $course, $session_id) { $lp_view_table = Database::get_course_table(TABLE_LP_VIEW); $lp_item_view_table = Database::get_course_table(TABLE_LP_ITEM_VIEW); $course_id = $course['real_id']; + if (empty($course_id)) { $course_id = api_get_course_int_id(); } @@ -858,22 +859,22 @@ function delete_student_lp_events($user_id, $lp_id, $course, $session_id) { $lp_id = intval($lp_id); $session_id = intval($session_id); - //make sure we have the exact lp_view_id - $sqlview = "SELECT id FROM $lp_view_table WHERE c_id = $course_id AND user_id = $user_id AND lp_id = $lp_id AND session_id = $session_id "; + //Make sure we have the exact lp_view_id + $sqlview = "SELECT id FROM $lp_view_table WHERE c_id = $course_id AND user_id = $user_id AND lp_id = $lp_id AND session_id = $session_id "; $resultview = Database::query($sqlview); if (Database::num_rows($sqlview)) { $view = Database::fetch_array($resultview, 'ASSOC'); $lp_view_id = $view['id']; - $sql_delete = "DELETE FROM $lp_item_view_table WHERE c_id = $course_id AND lp_view_id = $lp_view_id "; - $result = Database::query($sql_delete); + $sql_delete = "DELETE FROM $lp_item_view_table WHERE c_id = $course_id AND lp_view_id = $lp_view_id "; + Database::query($sql_delete); } - $sql_delete = "DELETE FROM $lp_view_table WHERE c_id = $course_id AND user_id = $user_id AND lp_id= $lp_id AND session_id= $session_id "; - $result = Database::query($sql_delete); + $sql_delete = "DELETE FROM $lp_view_table WHERE c_id = $course_id AND user_id = $user_id AND lp_id= $lp_id AND session_id = $session_id "; + Database::query($sql_delete); - $select_all_attempts = "SELECT exe_id FROM $track_e_exercises WHERE exe_user_id = $user_id AND session_id= $session_id AND exe_cours_id = '{$course['code']}' AND orig_lp_id = $lp_id"; + $select_all_attempts = "SELECT exe_id FROM $track_e_exercises WHERE exe_user_id = $user_id AND session_id = $session_id AND exe_cours_id = '{$course['code']}' AND orig_lp_id = $lp_id"; $result = Database::query($select_all_attempts); $exe_list = array(); while ($row = Database::fetch_array($result, 'ASSOC')) { @@ -881,14 +882,14 @@ function delete_student_lp_events($user_id, $lp_id, $course, $session_id) { } if (!empty($exe_list) && is_array($exe_list) && count($exe_list) > 0) { - $sql_delete = "DELETE FROM $track_e_exercises WHERE exe_id IN (".implode(',',$exe_list).")"; - $result = Database::query($sql_delete); + $sql_delete = "DELETE FROM $track_e_exercises WHERE exe_id IN (".implode(',',$exe_list).")"; + Database::query($sql_delete); - $sql_delete = "DELETE FROM $track_attempts WHERE exe_id IN (".implode(',',$exe_list).")"; - $result = Database::query($sql_delete); + $sql_delete = "DELETE FROM $track_attempts WHERE exe_id IN (".implode(',',$exe_list).")"; + Database::query($sql_delete); - $sql_delete = "DELETE FROM $recording_table WHERE exe_id IN (".implode(',',$exe_list).")"; - $result = Database::query($sql_delete); + $sql_delete = "DELETE FROM $recording_table WHERE exe_id IN (".implode(',',$exe_list).")"; + Database::query($sql_delete); } } diff --git a/main/inc/lib/tracking.lib.php b/main/inc/lib/tracking.lib.php index 8e9faae2a3..34bcf04833 100644 --- a/main/inc/lib/tracking.lib.php +++ b/main/inc/lib/tracking.lib.php @@ -439,7 +439,7 @@ class Tracking { * @param int Learning path item id (optional), for showing attempts inside a learning path $lp_id and $lp_item_id params are required. * @return int count of attempts */ - public function count_student_exercise_attempts($student_id, $course_code, $exercise_id, $lp_id = 0, $lp_item_id = 0, $session_id = 0) { + public static function count_student_exercise_attempts($student_id, $course_code, $exercise_id, $lp_id = 0, $lp_item_id = 0, $session_id = 0) { $course_code = Database::escape_string($course_code); $student_id = intval($student_id); $exercise_id = intval($exercise_id); @@ -1511,7 +1511,7 @@ class Tracking { * @param int Session id (optional), if param $session_id is null(default) return count of messages including sessions, 0 = session is not filtered * @return int Count of messages */ - function count_student_messages($student_id, $course_code, $session_id = null) { + public static function count_student_messages($student_id, $course_code, $session_id = null) { // protect datas $student_id = intval($student_id); diff --git a/main/newscorm/download.php b/main/newscorm/download.php index 4bb035d029..ef5374bf46 100644 --- a/main/newscorm/download.php +++ b/main/newscorm/download.php @@ -41,7 +41,7 @@ if ($_SESSION['oLP']) { $lp_item_info = new learnpathItem($lp_item_id); if (!empty($lp_item_info)) { //if (basename($lp_item_info->path) == basename($doc_url)) { - $visible = $_SESSION['oLP']->is_lp_visible_for_student($lp_id, $user_id); + $visible = learnpath::is_lp_visible_for_student($lp_id, $user_id); if ($visible) { event_download($doc_url); diff --git a/main/newscorm/learnpath.class.php b/main/newscorm/learnpath.class.php index 9bf2aa8bf0..ef56698f73 100644 --- a/main/newscorm/learnpath.class.php +++ b/main/newscorm/learnpath.class.php @@ -1874,7 +1874,7 @@ class learnpath { * @param boolean Whether to return null if no record was found (true), or 0 (false) (optional, defaults to false) * @return integer Current progress value as found in the database */ - public function get_db_progress($lp_id, $user_id, $mode = '%', $course_code = '', $sincere = false,$session_id = 0) { + public static function get_db_progress($lp_id, $user_id, $mode = '%', $course_code = '', $sincere = false,$session_id = 0) { //if ($this->debug > 0) { error_log('New LP - In learnpath::get_db_progress()', 0); } $session_id = intval($session_id); @@ -2000,7 +2000,7 @@ class learnpath { * @param string Course code (optional) * @return bool True if */ - public function is_lp_visible_for_student($lp_id, $student_id, $course = null) { + public static function is_lp_visible_for_student($lp_id, $student_id, $course = null) { $lp_id = (int)$lp_id; $course = api_get_course_info($course); $tbl_learnpath = Database :: get_course_table(TABLE_LP_MAIN); @@ -2049,7 +2049,6 @@ class learnpath { } } } - return $is_visible; } return false; @@ -2620,7 +2619,7 @@ class learnpath { * @param boolean Return the name? If false, return the ID. Default is false. * @return mixed Type ID or name, depending on the parameter */ - public function get_type_static($lp_id = 0) { + public static function get_type_static($lp_id = 0) { $course_id = api_get_course_int_id(); $tbl_lp = Database :: get_course_table(TABLE_LP_MAIN); $sql = "SELECT lp_type FROM $tbl_lp WHERE c_id = $course_id AND id = '" . $lp_id . "'"; diff --git a/main/newscorm/learnpathItem.class.php b/main/newscorm/learnpathItem.class.php index ae81c971a9..d5f6e73f00 100644 --- a/main/newscorm/learnpathItem.class.php +++ b/main/newscorm/learnpathItem.class.php @@ -2302,11 +2302,14 @@ class learnpathItem { $rs_verified = Database::query($sql_verified); $row_verified = Database::fetch_array($rs_verified); $my_case_completed = array('completed', 'passed', 'browsed', 'failed'); // Added by Isaac Flores. - if (in_array($sql_verified['status'], $my_case_completed)) { - $save = false; - } else { - $save = true; - } + + $save = true; + + if (isset($sql_verified['status'])) { + if (in_array($sql_verified['status'], $my_case_completed)) { + $save = false; + } + } if ((($save===false && $this->type == 'sco') ||(($this->type == 'sco') && ($credit == 'no-credit' OR $mode == 'review' OR $mode == 'browse'))) && ($this->seriousgame_mode!=1 && $this->type == 'sco')) { diff --git a/main/survey/survey.lib.php b/main/survey/survey.lib.php index efb4e30dee..c993b1725c 100644 --- a/main/survey/survey.lib.php +++ b/main/survey/survey.lib.php @@ -27,7 +27,7 @@ $htmlHeadXtra[] = '