diff --git a/main/admin/user_list.php b/main/admin/user_list.php index 63367fab70..1d2a7f3cd5 100755 --- a/main/admin/user_list.php +++ b/main/admin/user_list.php @@ -688,8 +688,8 @@ if (!empty($action)) { $number_of_deleted_users = 0; if (is_array($_POST['id'])) { foreach ($_POST['id'] as $index => $user_id) { - if($user_id != $_user['user_id']) { - if(UserManager :: delete_user($user_id)) { + if ($user_id != $_user['user_id']) { + if (UserManager::delete_user($user_id)) { $number_of_deleted_users++; } } diff --git a/main/course_info/infocours.php b/main/course_info/infocours.php index e0e9566fb9..de15b3ffb7 100755 --- a/main/course_info/infocours.php +++ b/main/course_info/infocours.php @@ -606,7 +606,7 @@ if ($form->validate() && is_settings_editable()) { 'activate_legal' ); - $activeLegal = isset($updateValues['activate_legal']) ? $updateValues['activate_legal'] : ''; + $activeLegal = isset($updateValues['activate_legal']) ? $updateValues['activate_legal'] : 0; $table_course = Database :: get_main_table(TABLE_MAIN_COURSE); $params = [ diff --git a/main/dropbox/dropbox_class.inc.php b/main/dropbox/dropbox_class.inc.php index 7c795e798d..c8094dbfd2 100755 --- a/main/dropbox/dropbox_class.inc.php +++ b/main/dropbox/dropbox_class.inc.php @@ -68,7 +68,7 @@ class Dropbox_Work * @param unknown_type $arg6 * @return Dropbox_Work */ - public function Dropbox_Work($arg1, $arg2 = null, $arg3 = null, $arg4 = null, $arg5 = null, $arg6 = null) + public function __construct($arg1, $arg2 = null, $arg3 = null, $arg4 = null, $arg5 = null, $arg6 = null) { if (func_num_args() > 1) { $this->_createNewWork($arg1, $arg2, $arg3, $arg4, $arg5, $arg6); @@ -148,9 +148,10 @@ class Dropbox_Work 'upload_date' => $this->upload_date, 'last_upload_date' => $this->last_upload_date, 'session_id' => api_get_session_id(), + 'cat_id' => 0 ]; - $this->id = Database::insert($dropbox_cnf['tbl_file'], $params); + $this->id = Database::insert($dropbox_cnf['tbl_file'], $params); if ($this->id) { $sql = "UPDATE ".$dropbox_cnf['tbl_file']." SET id = iid WHERE iid = {$this->id}"; Database::query($sql); @@ -248,7 +249,7 @@ class Dropbox_SentWork extends Dropbox_Work * @param unknown_type $arg7 * @return Dropbox_SentWork */ - function Dropbox_SentWork($arg1, $arg2 = null, $arg3 = null, $arg4 = null, $arg5 = null, $arg6 = null, $arg7 = null) + public function __construct($arg1, $arg2 = null, $arg3 = null, $arg4 = null, $arg5 = null, $arg6 = null, $arg7 = null) { if (func_num_args() > 1) { $this->_createNewSentWork($arg1, $arg2, $arg3, $arg4, $arg5, $arg6, $arg7); @@ -274,7 +275,7 @@ class Dropbox_SentWork extends Dropbox_Work $_course = api_get_course_info(); // Call constructor of Dropbox_Work object - $this->Dropbox_Work( + parent::__construct( $uploader_id, $title, $description, @@ -314,12 +315,14 @@ class Dropbox_SentWork extends Dropbox_Work $session_id = api_get_session_id(); $uploader_id = $this->uploader_id; $user = api_get_user_id(); + $now = api_get_utc_datetime(); + // Insert data in dropbox_post and dropbox_person table for each recipient foreach ($this->recipients as $rec) { $file_id = (int)$this->id; $user_id = (int)$rec['id']; - $sql = "INSERT INTO $table_post (c_id, file_id, dest_user_id, session_id) - VALUES ($course_id, $file_id, $user_id, $session_id)"; + $sql = "INSERT INTO $table_post (c_id, file_id, dest_user_id, session_id, feedback_date, cat_id) + VALUES ($course_id, $file_id, $user_id, $session_id, '$now', 0)"; Database::query($sql); // If work already exists no error is generated @@ -361,7 +364,7 @@ class Dropbox_SentWork extends Dropbox_Work * * @param unknown_type $id */ - function _createExistingSentWork($id) + public function _createExistingSentWork($id) { $dropbox_cnf = getDropboxConf(); $id = intval($id); @@ -369,7 +372,7 @@ class Dropbox_SentWork extends Dropbox_Work $course_id = api_get_course_int_id(); // Call constructor of Dropbox_Work object - $this->Dropbox_Work($id); + parent::__construct($id); // Fill in recipients array $this->recipients = array(); @@ -417,7 +420,7 @@ class Dropbox_Person * @param bool $isCourseTutor * @return Dropbox_Person */ - function Dropbox_Person($userId, $isCourseAdmin, $isCourseTutor) + public function __construct($userId, $isCourseAdmin, $isCourseTutor) { $course_id = api_get_course_int_id(); diff --git a/main/exercice/answer.class.php b/main/exercice/answer.class.php index c64d2a93ee..5d83f5eae5 100755 --- a/main/exercice/answer.class.php +++ b/main/exercice/answer.class.php @@ -275,7 +275,7 @@ class Answer */ public function selectAutoId($id) { - return isset($this->autoId[$id]) ? $this->autoId[$id] : null; + return isset($this->autoId[$id]) ? $this->autoId[$id] : 0; } /** @@ -572,12 +572,13 @@ class Answer $params = [ 'answer' => $answer, 'comment' => $comment, - 'correct' => $correct, + 'correct' => intval($correct), 'ponderation' => $weighting, 'position' => $position, 'destination' => $destination, 'hotspot_coordinates' => $hotspot_coordinates, - 'hotspot_type' => $hotspot_type, + 'hotspot_type' => $hotspot_type + ]; Database::update($answerTable, $params, ['id_auto = ?' => $autoId]); @@ -610,10 +611,11 @@ class Answer if (!isset($this->position[$i])) { $params = [ + 'id_auto' => $autoId, 'c_id' => $c_id, 'question_id' => $questionId, 'answer' => $answer, - 'correct' => $correct, + 'correct' => intval($correct), 'comment' => $comment, 'ponderation' => $weighting, 'position' => $position, diff --git a/main/forum/forumfunction.inc.php b/main/forum/forumfunction.inc.php index c92bb2532a..dba62a3da3 100755 --- a/main/forum/forumfunction.inc.php +++ b/main/forum/forumfunction.inc.php @@ -601,6 +601,7 @@ function store_forumcategory($values, $courseInfo = array(), $showMessage = true */ function store_forum($values, $courseInfo = array(), $returnId = false) { + $now = api_get_utc_datetime(); $courseInfo = empty($courseInfo) ? api_get_course_info() : $courseInfo; $course_id = $courseInfo['real_id']; $session_id = api_get_session_id(); @@ -739,7 +740,9 @@ function store_forum($values, $courseInfo = array(), $returnId = false) 'moderated'=> isset($values['moderated']['moderated']) ? 1 : 0, 'forum_order'=> isset($new_max) ? $new_max : null, 'session_id'=> $session_id, - 'lp_id' => isset($values['lp_id']) ? intval($values['lp_id']) : 0 + 'lp_id' => isset($values['lp_id']) ? intval($values['lp_id']) : 0, + 'locked' => 0, + 'forum_id' => 0 ]; $last_id = Database::insert($table_forums, $params); if ($last_id > 0) { @@ -3290,6 +3293,7 @@ function store_reply($current_forum, $values) 'thread_id' => $values['thread_id'], 'forum_id' => $values['forum_id'], 'poster_id' => api_get_user_id(), + 'post_id' => 0, 'post_date' => $post_date, 'post_notification' => isset($values['post_notification']) ? $values['post_notification'] : null, 'post_parent_id' => isset($values['post_parent_id']) ? $values['post_parent_id'] : null, diff --git a/main/gradebook/lib/GradebookUtils.php b/main/gradebook/lib/GradebookUtils.php index 5999b65407..c89e412a12 100644 --- a/main/gradebook/lib/GradebookUtils.php +++ b/main/gradebook/lib/GradebookUtils.php @@ -701,10 +701,11 @@ class GradebookUtils $path_image_in_default_course = api_get_path(WEB_CODE_PATH) . 'default_course_document'; $new_content_html = str_replace('/main/default_course_document', $path_image_in_default_course, $new_content_html); $new_content_html = str_replace(SYS_CODE_PATH . 'img/', api_get_path(WEB_IMG_PATH), $new_content_html); + $print = ''; //add print header if ($hide_print_button == false) { - $print = ''; + $print .= ''; $print .= ''; $print .= Display::return_icon('printmgr.gif', get_lang('Print')); $print .= ''; diff --git a/main/gradebook/lib/be/category.class.php b/main/gradebook/lib/be/category.class.php index 91a12de508..f6ce3b4f7a 100755 --- a/main/gradebook/lib/be/category.class.php +++ b/main/gradebook/lib/be/category.class.php @@ -1895,6 +1895,7 @@ class Category implements GradebookItem } /** + * Generates a certificate for this user if everything matches * @param int $category_id * @param int $user_id * @return bool|string @@ -1952,15 +1953,13 @@ class Category implements GradebookItem $userHasSkills = false; if ($skillToolEnabled) { - if ($category->getGenerateCertificates()) { - $skill = new Skill(); - $skill->add_skill_to_user( - $user_id, - $category_id, - $courseId, - $sessionId - ); - } + $skill = new Skill(); + $skill->add_skill_to_user( + $user_id, + $category_id, + $courseId, + $sessionId + ); $objSkillRelUser = new SkillRelUser(); $userSkills = $objSkillRelUser->get_user_skills($user_id, $courseId, $sessionId); diff --git a/main/gradebook/lib/be/learnpathlink.class.php b/main/gradebook/lib/be/learnpathlink.class.php index f5b8d32a31..84f2ea3885 100755 --- a/main/gradebook/lib/be/learnpathlink.class.php +++ b/main/gradebook/lib/be/learnpathlink.class.php @@ -120,7 +120,7 @@ class LearnpathLink extends AbstractLink $scores = Database::query($sql); // for 1 student if (isset($stud_id)) { - if ($data = Database::fetch_array($scores)) { + if ($data = Database::fetch_assoc($scores)) { return array ($data['progress'], 100); } else return null; diff --git a/main/inc/lib/attendance.lib.php b/main/inc/lib/attendance.lib.php index 07e6596c92..5e9561eccc 100755 --- a/main/inc/lib/attendance.lib.php +++ b/main/inc/lib/attendance.lib.php @@ -1584,7 +1584,8 @@ class Attendance $params = array( 'c_id' => $course_id, 'date_time' => $this->date_time, - 'attendance_id' => $attendance_id + 'attendance_id' => $attendance_id, + 'done_attendance' => 0 ); $id = Database::insert($tbl_attendance_calendar, $params); diff --git a/main/inc/lib/blog.lib.php b/main/inc/lib/blog.lib.php index c95fbd9ab0..dd34e39608 100755 --- a/main/inc/lib/blog.lib.php +++ b/main/inc/lib/blog.lib.php @@ -167,8 +167,8 @@ class Blog } // Put it on course homepage - $sql = "INSERT INTO $tbl_tool (c_id, name, link, image, visibility, admin, address, added_tool, session_id) - VALUES ($course_id, '".Database::escape_string($title)."','blog/blog.php?blog_id=".(int)$this_blog_id."','blog.gif','1','0','pastillegris.gif',0,'$session_id')"; + $sql = "INSERT INTO $tbl_tool (c_id, name, link, image, visibility, admin, address, added_tool, session_id, target) + VALUES ($course_id, '".Database::escape_string($title)."','blog/blog.php?blog_id=".(int)$this_blog_id."','blog.gif','1','0','pastillegris.gif',0,'$session_id', '')"; Database::query($sql); $toolId = Database::insert_id(); diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index 61937c15df..6123135ba3 100755 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -5080,7 +5080,7 @@ class CourseManager // Create Database::insert( $courseSettingTable, - array('value' => $value, 'c_id' => $courseId, 'variable' => $variable) + ['title' => $variable, 'value' => $value, 'c_id' => $courseId, 'variable' => $variable] ); } return true; diff --git a/main/inc/lib/fileDisplay.lib.php b/main/inc/lib/fileDisplay.lib.php index 37efff9f7c..fc1baf808f 100755 --- a/main/inc/lib/fileDisplay.lib.php +++ b/main/inc/lib/fileDisplay.lib.php @@ -287,7 +287,7 @@ function get_total_folder_size($path, $can_see_invisible = false) $visibility_rule = ' props.visibility ' . ($can_see_invisible ? '<> 2' : '= 1'); $sql = "SELECT SUM(table1.size) FROM ( - SELECT size + SELECT props.ref, size FROM $table_itemproperty AS props, $table_document AS docs WHERE docs.c_id = $course_id AND diff --git a/main/inc/lib/pear/HTML/Table/Storage.php b/main/inc/lib/pear/HTML/Table/Storage.php index ab09eab543..098c430824 100755 --- a/main/inc/lib/pear/HTML/Table/Storage.php +++ b/main/inc/lib/pear/HTML/Table/Storage.php @@ -137,7 +137,7 @@ class HTML_Table_Storage extends HTML_Common * @param boolean $useTGroups * @access public */ - function setUseTGroups($useTGroups) + public function setUseTGroups($useTGroups) { $this->_useTGroups = $useTGroups; } @@ -147,7 +147,7 @@ class HTML_Table_Storage extends HTML_Common * @access public * @return boolean */ - function getUseTGroups() + public function getUseTGroups() { return $this->_useTGroups; } @@ -157,7 +157,7 @@ class HTML_Table_Storage extends HTML_Common * @param mixed $fill * @access public */ - function setAutoFill($fill) + public function setAutoFill($fill) { $this->_autoFill = $fill; } @@ -167,7 +167,7 @@ class HTML_Table_Storage extends HTML_Common * @access public * @return mixed */ - function getAutoFill() + public function getAutoFill() { return $this->_autoFill; } @@ -177,7 +177,7 @@ class HTML_Table_Storage extends HTML_Common * @param bool $fill * @access public */ - function setAutoGrow($grow) + public function setAutoGrow($grow) { $this->_autoGrow = $grow; } @@ -187,7 +187,7 @@ class HTML_Table_Storage extends HTML_Common * @access public * @return mixed */ - function getAutoGrow() + public function getAutoGrow() { return $this->_autoGrow; } diff --git a/main/inc/lib/usermanager.lib.php b/main/inc/lib/usermanager.lib.php index e37b1bde34..9f88044282 100755 --- a/main/inc/lib/usermanager.lib.php +++ b/main/inc/lib/usermanager.lib.php @@ -465,6 +465,7 @@ class UserManager )); $hook->notifyCreateUser(HOOK_EVENT_TYPE_POST); } + return $return; } @@ -655,9 +656,6 @@ class UserManager WHERE lastedit_user_id = '".$user_id."'"; Database::query($sql); - - - // Delete user from database $sql = "DELETE FROM $table_user WHERE id = '".$user_id."'"; Database::query($sql); @@ -696,7 +694,7 @@ class UserManager * @assert (-1) === false * @assert (array(-1)) === false */ - static function delete_users($ids = array()) + public static function delete_users($ids = array()) { $result = false; $ids = is_array($ids) ? $ids : func_get_args(); @@ -721,7 +719,7 @@ class UserManager * @assert (null) === false * @assert (array(-1)) === false */ - static function deactivate_users($ids = array()) + public static function deactivate_users($ids = array()) { if (empty($ids)) { return false; @@ -751,7 +749,7 @@ class UserManager * @assert (null) === false * @assert (array(-1)) === false */ - static function activate_users($ids = array()) + public static function activate_users($ids = array()) { if (empty($ids)) { return false; @@ -1277,6 +1275,7 @@ class UserManager while ($row = Database::fetch_array($rs)) { $result[] = $row; } + return $result; } @@ -1288,8 +1287,12 @@ class UserManager * @todo optional course code parameter, optional sorting parameters... * @todo security filter order by */ - public static function get_user_list($conditions = array(), $order_by = array(), $limit_from = false, $limit_to = false) - { + public static function get_user_list( + $conditions = array(), + $order_by = array(), + $limit_from = false, + $limit_to = false + ) { $user_table = Database :: get_main_table(TABLE_MAIN_USER); $return_array = array(); $sql_query = "SELECT * FROM $user_table"; @@ -1326,8 +1329,12 @@ class UserManager * @todo optional course code parameter, optional sorting parameters... * @todo security filter order_by */ - public static function get_user_list_like($conditions = array(), $order_by = array(), $simple_like = false, $condition = 'AND') - { + public static function get_user_list_like( + $conditions = array(), + $order_by = array(), + $simple_like = false, + $condition = 'AND' + ) { $user_table = Database :: get_main_table(TABLE_MAIN_USER); $return_array = array(); $sql_query = "SELECT * FROM $user_table"; @@ -1455,7 +1462,7 @@ class UserManager try { mkdir($rootPath, $perm); } catch (Exception $e) { - // + error_log($e->getMessage()); } } } @@ -1812,8 +1819,8 @@ class UserManager /** * Remove a user production. * - * @param int $user_id User id - * @param string $production The production to remove + * @param int $user_id User id + * @param string $production The production to remove */ public static function remove_user_production($user_id, $production) { @@ -2061,6 +2068,7 @@ class UserManager { $extraField = new ExtraField('user'); $data = $extraField->get_handler_field_info_by_field_variable($variable); + return empty($data) ? true : false; } @@ -2728,7 +2736,8 @@ class UserManager $sql = "SELECT DISTINCT c.visibility, - c.id as real_id + c.id as real_id, + sc.position FROM $tbl_session_course_user as scu INNER JOIN $tbl_session_course sc ON (scu.session_id = sc.session_id AND scu.c_id = sc.c_id) @@ -2755,7 +2764,9 @@ class UserManager if (api_is_allowed_to_create_course()) { $sql = "SELECT DISTINCT - c.visibility, c.id as real_id + c.visibility, + c.id as real_id, + sc.position FROM $tbl_session_course_user as scu INNER JOIN $tbl_session as s ON (scu.session_id = s.id) diff --git a/main/newscorm/learnpath.class.php b/main/newscorm/learnpath.class.php index 5edd21b9df..9466f26bcc 100755 --- a/main/newscorm/learnpath.class.php +++ b/main/newscorm/learnpath.class.php @@ -4079,7 +4079,7 @@ class learnpath /** * Check that all prerequisites are fulfilled. Returns true and an - * empty string on succes, returns false + * empty string on success, returns false * and the prerequisite string on error. * This function is based on the rules for aicc_script language as * described in the SCORM 1.2 CAM documentation page 108. @@ -8480,12 +8480,14 @@ class learnpath $i = 0; while ($row_zero = Database :: fetch_array($res_zero)) { - if ($row_zero['item_type'] == TOOL_QUIZ) { - $row_zero['title'] = Exercise::get_formated_title_variable($row_zero['title']); + if ($row_zero['item_type'] !== TOOL_LP_FINAL_ITEM) { + if ($row_zero['item_type'] == TOOL_QUIZ) { + $row_zero['title'] = Exercise::get_formated_title_variable($row_zero['title']); + } + $js_var = json_encode(get_lang('After').' '.$row_zero['title']); + $return .= 'child_name[0][' . $i . '] = '.$js_var.' ;' . "\n"; + $return .= 'child_value[0][' . $i++ . '] = "' . $row_zero['id'] . '";' . "\n"; } - $js_var = json_encode(get_lang('After').' '.$row_zero['title']); - $return .= 'child_name[0][' . $i . '] = '.$js_var.' ;' . "\n"; - $return .= 'child_value[0][' . $i++ . '] = "' . $row_zero['id'] . '";' . "\n"; } $return .= "\n"; $sql = "SELECT * FROM " . $tbl_lp_item . " diff --git a/main/newscorm/lp_final_item.php b/main/newscorm/lp_final_item.php index 74ba8e04ae..99d989bd3f 100644 --- a/main/newscorm/lp_final_item.php +++ b/main/newscorm/lp_final_item.php @@ -1,123 +1,104 @@ + * @package chamilo.learnpath + */ +// Initialize context $_in_course = true; -require_once '../inc/global.inc.php'; +require_once __DIR__.'/../inc/global.inc.php'; $current_course_tool = TOOL_GRADEBOOK; +// Make sure no anonymous user gets here without permission api_protect_course_script(true); +// Get environment variables $courseCode = api_get_course_id(); $userId = api_get_user_id(); $sessionId = api_get_session_id(); $id = isset($_GET['id']) ? intval($_GET['id']) : 0; $lpId = isset($_GET['lp_id']) ? intval($_GET['lp_id']) : 0; +// This page can only be shown from inside a learning path if (!$id && !$lpId) { Display::display_warning_message(get_lang('FileNotFound')); exit; } -$catLoad = Category::load(null, null, $courseCode, null, null, $sessionId, 'ORDER By id'); - -if (!$catLoad) { - Display::display_warning_message(get_lang('FileNotFound')); - exit; -} - -$categoryId = $catLoad[0]->get_id(); -$link = LinkFactory::load(null, null, $lpId, null, $courseCode, $categoryId); +// Initialize variables required for the template $downloadCertificateLink = ''; $viewCertificateLink = ''; $badgeLink = ''; - -if ($link) { - $cat = new Category(); - $catCourseCode = CourseManager::get_course_by_category($categoryId); - $show_message = $cat->show_message_resource_delete($catCourseCode); - - if ($show_message == '') { - if (!api_is_allowed_to_edit() && !api_is_excluded_user_type()) { - $certificate = Category::register_user_certificate( - $categoryId, - $userId - ); - if (isset($certificate['pdf_url']) && isset($certificate['certificate_link']) && isset($certificate['badge_link'])) { - $downloadCertificateLink .= Display::url(Display::returnFontAwesomeIcon('file-pdf-o') . - get_lang('DownloadCertificatePdf'), - $certificate['pdf_url'], - ['class' => 'btn btn-default'] - ); - $viewCertificateLink .= $certificate['certificate_link']; - $downloadCertificateLink = " -