diff --git a/composer.lock b/composer.lock index 0d6ec59cec..46136db738 100755 --- a/composer.lock +++ b/composer.lock @@ -1365,16 +1365,16 @@ }, { "name": "monolog/monolog", - "version": "1.12.0", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "1fbe8c2641f2b163addf49cc5e18f144bec6b19f" + "reference": "c41c218e239b50446fd883acb1ecfd4b770caeae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1fbe8c2641f2b163addf49cc5e18f144bec6b19f", - "reference": "1fbe8c2641f2b163addf49cc5e18f144bec6b19f", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c41c218e239b50446fd883acb1ecfd4b770caeae", + "reference": "c41c218e239b50446fd883acb1ecfd4b770caeae", "shasum": "" }, "require": { @@ -1391,6 +1391,7 @@ "phpunit/phpunit": "~4.0", "raven/raven": "~0.5", "ruflin/elastica": "0.90.*", + "swiftmailer/swiftmailer": "~5.3", "videlalvaro/php-amqplib": "~2.4" }, "suggest": { @@ -1407,7 +1408,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.12.x-dev" + "dev-master": "1.13.x-dev" } }, "autoload": { @@ -1433,19 +1434,19 @@ "logging", "psr-3" ], - "time": "2014-12-29 21:29:35" + "time": "2015-03-05 01:12:12" }, { "name": "mpdf/mpdf", "version": "v5.7.4", "source": { "type": "git", - "url": "https://github.com/finwe/mpdf.git", + "url": "https://github.com/mpdf/mpdf.git", "reference": "f9a374c7ea975ce8c795cec4dfd17ef55addac9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/finwe/mpdf/zipball/f9a374c7ea975ce8c795cec4dfd17ef55addac9c", + "url": "https://api.github.com/repos/mpdf/mpdf/zipball/f9a374c7ea975ce8c795cec4dfd17ef55addac9c", "reference": "f9a374c7ea975ce8c795cec4dfd17ef55addac9c", "shasum": "" }, diff --git a/main/attendance/attendance_list.php b/main/attendance/attendance_list.php index b5b70b8769..014108dc9e 100755 --- a/main/attendance/attendance_list.php +++ b/main/attendance/attendance_list.php @@ -18,10 +18,6 @@ if (api_is_allowed_to_edit(null, true)) { echo '
'; echo ''. Display::return_icon('new_attendance_list.png',get_lang('CreateANewAttendance'),'',ICON_SIZE_MEDIUM).''; - - /*echo ''. - Display::return_icon('attendance_list.png',get_lang('Logins'),'',ICON_SIZE_MEDIUM).'';*/ - echo '
'; } $attendance = new Attendance(); diff --git a/main/coursecopy/classes/CourseRestorer.class.php b/main/coursecopy/classes/CourseRestorer.class.php index 7028326f70..f019203568 100755 --- a/main/coursecopy/classes/CourseRestorer.class.php +++ b/main/coursecopy/classes/CourseRestorer.class.php @@ -889,7 +889,7 @@ class CourseRestorer foreach ($resources[RESOURCE_FORUM] as $id => $forum) { $params = (array)$forum->obj; if ($this->course->resources[RESOURCE_FORUMCATEGORY][$params['forum_category']]->destination_id == -1) { - $cat_id = $this->restore_forum_category($params['forum_category']); + $cat_id = $this->restore_forum_category($params['forum_category'], $sessionId); } else { $cat_id = $this->course->resources[RESOURCE_FORUMCATEGORY][$params['forum_category']]->destination_id; } @@ -924,7 +924,7 @@ class CourseRestorer if (is_array($this->course->resources[RESOURCE_FORUMTOPIC])) { foreach ($this->course->resources[RESOURCE_FORUMTOPIC] as $topic_id => $topic) { if ($topic->obj->forum_id == $id) { - $this->restore_topic($topic_id, $new_id); + $this->restore_topic($topic_id, $new_id, $sessionId); $forum_topics ++; } } @@ -941,7 +941,7 @@ class CourseRestorer /** * Restore forum-categories */ - public function restore_forum_category($my_id = null) + public function restore_forum_category($my_id = null, $sessionId = 0) { $forum_cat_table = Database :: get_course_table(TABLE_FORUM_CATEGORY); $resources = $this->course->resources; @@ -964,7 +964,14 @@ class CourseRestorer } $params = (array) $forum_cat->obj; $params['c_id'] = $this->destination_course_id; - $params['cat_comment'] = DocumentManager::replace_urls_inside_content_html_from_copy_course($params['cat_comment'], $this->course->code, $this->course->destination_path, $this->course->backup_path, $this->course->info['path']); + $params['cat_comment'] = DocumentManager::replace_urls_inside_content_html_from_copy_course( + $params['cat_comment'], + $this->course->code, + $this->course->destination_path, + $this->course->backup_path, + $this->course->info['path'] + ); + $params['session_id'] = intval($sessionId); unset($params['cat_id']); $params = self::DBUTF8_array($params); $new_id = Database::insert($forum_cat_table, $params); @@ -980,14 +987,14 @@ class CourseRestorer /** * Restore a forum-topic */ - public function restore_topic($thread_id, $forum_id) + public function restore_topic($thread_id, $forum_id, $sessionId = 0) { $table = Database :: get_course_table(TABLE_FORUM_THREAD); $topic = $this->course->resources[RESOURCE_FORUMTOPIC][$thread_id]; $params = (array)$topic->obj; $params = self::DBUTF8_array($params); - $params['c_id'] = $this->destination_course_id; + $params['c_id'] = $this->destination_course_id; $params['forum_id'] = $forum_id; $params['thread_poster_id'] = $this->first_teacher_id; $params['thread_date'] = api_get_utc_datetime(); @@ -995,19 +1002,31 @@ class CourseRestorer $params['thread_last_post'] = 0; $params['thread_replies'] = 0; $params['thread_views'] = 0; + $params['session_id'] = intval($sessionId); unset($params['thread_id']); $new_id = Database::insert($table, $params); - api_item_property_update($this->destination_course_info, TOOL_FORUM_THREAD, $new_id, 'ThreadAdded', api_get_user_id(), 0, 0, null, null); + api_item_property_update( + $this->destination_course_info, + TOOL_FORUM_THREAD, + $new_id, + 'ThreadAdded', + api_get_user_id(), + 0, + 0, + null, + null, + $sessionId + ); $this->course->resources[RESOURCE_FORUMTOPIC][$thread_id]->destination_id = $new_id; $topic_replies = -1; - foreach ($this->course->resources[RESOURCE_FORUMPOST] as $post_id => $post){ + foreach ($this->course->resources[RESOURCE_FORUMPOST] as $post_id => $post) { if ($post->obj->thread_id == $thread_id) { $topic_replies++; - $this->restore_post($post_id, $new_id, $forum_id); + $this->restore_post($post_id, $new_id, $forum_id, $sessionId); } } return $new_id; @@ -1017,7 +1036,7 @@ class CourseRestorer * Restore a forum-post * @TODO Restore tree-structure of posts. For example: attachments to posts. */ - public function restore_post($id, $topic_id, $forum_id) + public function restore_post($id, $topic_id, $forum_id, $sessionId = 0) { $table_post = Database :: get_course_table(TABLE_FORUM_POST); $post = $this->course->resources[RESOURCE_FORUMPOST][$id]; @@ -1028,9 +1047,26 @@ class CourseRestorer $params['poster_id'] = $this->first_teacher_id; $params['post_date'] = api_get_utc_datetime(); unset($params['post_id']); - $params['post_text'] = DocumentManager::replace_urls_inside_content_html_from_copy_course($params['post_text'], $this->course->code, $this->course->destination_path, $this->course->backup_path, $this->course->info['path']); + $params['post_text'] = DocumentManager::replace_urls_inside_content_html_from_copy_course( + $params['post_text'], + $this->course->code, + $this->course->destination_path, + $this->course->backup_path, + $this->course->info['path'] + ); $new_id = Database::insert($table_post, $params); - api_item_property_update($this->destination_course_info, TOOL_FORUM_POST, $new_id, 'PostAdded', api_get_user_id(), 0, 0, null, null); + api_item_property_update( + $this->destination_course_info, + TOOL_FORUM_POST, + $new_id, + 'PostAdded', + api_get_user_id(), + 0, + 0, + null, + null, + $sessionId + ); $this->course->resources[RESOURCE_FORUMPOST][$id]->destination_id = $new_id; return $new_id; } @@ -1045,7 +1081,8 @@ class CourseRestorer $resources = $this->course->resources; foreach ($resources[RESOURCE_LINK] as $id => $link) { $cat_id = $this->restore_link_category($link->category_id, $session_id); - $sql = "SELECT MAX(display_order) FROM $link_table WHERE c_id = ".$this->destination_course_id." AND category_id='" . self::DBUTF8escapestring($cat_id). "'"; + $sql = "SELECT MAX(display_order) FROM $link_table + WHERE c_id = ".$this->destination_course_id." AND category_id='" . self::DBUTF8escapestring($cat_id). "'"; $result = Database::query($sql); list($max_order) = Database::fetch_array($result); @@ -1055,13 +1092,13 @@ class CourseRestorer } $sql = "INSERT INTO ".$link_table." SET - c_id = ".$this->destination_course_id." , - url = '".self::DBUTF8escapestring($link->url)."', - title = '".self::DBUTF8escapestring($link->title)."', - description = '".self::DBUTF8escapestring($link->description)."', - category_id = '".$cat_id."', - on_homepage = '".$link->on_homepage."', - display_order = '".($max_order+1)."' $condition_session"; + c_id = ".$this->destination_course_id." , + url = '".self::DBUTF8escapestring($link->url)."', + title = '".self::DBUTF8escapestring($link->title)."', + description = '".self::DBUTF8escapestring($link->description)."', + category_id = '".$cat_id."', + on_homepage = '".$link->on_homepage."', + display_order = '".($max_order+1)."' $condition_session"; Database::query($sql); $this->course->resources[RESOURCE_LINK][$id]->destination_id = Database::insert_id(); @@ -2632,14 +2669,15 @@ class CourseRestorer api_get_user_id(), $this->destination_course_info, 0, - 0 + $sessionId ); } else { $workId = $workData['id']; updateWork( $workId, $obj->params, - $this->destination_course_info + $this->destination_course_info, + $sessionId ); updatePublicationAssignment( $workId, diff --git a/main/gradebook/gradebook_flatview.php b/main/gradebook/gradebook_flatview.php index feb5455634..db77643c25 100755 --- a/main/gradebook/gradebook_flatview.php +++ b/main/gradebook/gradebook_flatview.php @@ -97,6 +97,11 @@ if (!empty($keyword)) { } $offset = isset($_GET['offset']) ? $_GET['offset'] : '0'; +$addparams = array('selectcat' => $cat[0]->get_id()); +if (isset($_GET['search'])) { + $addparams['search'] = $keyword; +} + // Main course category $mainCourseCategory = Category::load( null, @@ -237,11 +242,6 @@ if (!empty($_GET['export_report']) && $_GET['export_report'] == 'export_report') } } -$addparams = array ('selectcat' => $cat[0]->get_id()); -if (isset($_GET['search'])) { - $addparams['search'] = $keyword; -} - $this_section = SECTION_COURSES; if (isset($_GET['exportpdf'])) { diff --git a/main/gradebook/lib/be/category.class.php b/main/gradebook/lib/be/category.class.php index 26a6bfc0d9..740b6009d6 100755 --- a/main/gradebook/lib/be/category.class.php +++ b/main/gradebook/lib/be/category.class.php @@ -22,25 +22,40 @@ class Category implements GradebookItem private $grade_model_id; private $generateCertificates; + /** + * Consctructor + */ public function __construct() { } + /** + * @return int + */ public function get_id() { return $this->id; } + /** + * @return string + */ public function get_name() { return $this->name; } + /** + * @return string + */ public function get_description() { return $this->description; } + /** + * @return int + */ public function get_user_id() { return $this->user_id; @@ -249,7 +264,8 @@ class Category implements GradebookItem * @param int $parent_id parent category * @param bool $visible * @param int $session_id (in case we are in a session) - * @param bool $order_by Whether to show all "session" categories (true) or hide them (false) in case there is no session id + * @param bool $order_by Whether to show all "session" + * categories (true) or hide them (false) in case there is no session id */ public static function load( $id = null, @@ -522,7 +538,9 @@ class Category implements GradebookItem { $tbl_grade_categories = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY); - $sql = 'UPDATE '.$tbl_grade_categories." SET name = '".Database::escape_string($this->get_name())."'".', description = '; + $sql = 'UPDATE '.$tbl_grade_categories." SET + name = '".Database::escape_string($this->get_name())."'".', + description = '; if (isset($this->description)) { $sql .= "'".Database::escape_string($this->get_description())."'"; } else { @@ -604,7 +622,7 @@ class Category implements GradebookItem * Update link weights see #5168 * @param type $new_weight */ - function update_children_weight($new_weight) + public function update_children_weight($new_weight) { $links = $this->get_links(); $old_weight = $this->get_weight(); @@ -636,7 +654,8 @@ class Category implements GradebookItem public function update_category_delete($course_id) { $tbl_grade_categories = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY); - $sql = 'UPDATE '.$tbl_grade_categories.' SET visible=3 WHERE course_code ="'.Database::escape_string($course_id).'"'; + $sql = 'UPDATE '.$tbl_grade_categories.' SET visible=3 + WHERE course_code ="'.Database::escape_string($course_id).'"'; Database::query($sql); } @@ -668,7 +687,9 @@ class Category implements GradebookItem return null; } else { $tbl_category = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY); - $sql='SELECT name,description,user_id,course_code,parent_id,weight,visible,certif_min_score,session_id, generate_certificates FROM '.$tbl_category.' c WHERE c.id='.intval($selectcat); + $sql = 'SELECT name,description,user_id,course_code,parent_id,weight,visible,certif_min_score,session_id, generate_certificates + FROM '.$tbl_category.' c + WHERE c.id='.intval($selectcat); $result = Database::query($sql); $row = Database::fetch_array($result, 'ASSOC'); @@ -727,7 +748,7 @@ class Category implements GradebookItem */ public function is_certificate_available($user_id) { - $score = $this->calc_score($user_id, $this->course_code); + $score = $this->calc_score($user_id, null, $this->course_code); if (isset($score) && isset($score[0])) { // Get a percentage score to compare to minimum certificate score @@ -760,7 +781,7 @@ class Category implements GradebookItem * @return array (score sum, weight sum) * or null if no scores available */ - public function calc_score($stud_id = null, $course_code = '', $session_id = null) + public function calc_score($stud_id = null, $type = null, $course_code = '', $session_id = null) { // Get appropriate subcategories, evaluations and links if (!empty($course_code)) { @@ -773,22 +794,25 @@ class Category implements GradebookItem $links = $this->get_links($stud_id); } - // calculate score - $rescount = 0; - $ressum = 0; + // Calculate score + $rescount = 0; + $ressum = 0; $weightsum = 0; + $bestResult = 0; if (!empty($cats)) { /** @var Category $cat */ foreach ($cats as $cat) { - $catres = $cat->calc_score($stud_id, $course_code, $session_id); + $score = $cat->calc_score($stud_id, $type, $course_code, $session_id); + if ($cat->get_weight() != 0) { $catweight = $cat->get_weight(); $rescount++; $weightsum += $catweight; } - if (isset($catres)) { - $ressum += (($catres[0]/$catres[1]) * $catweight); + if (isset($score)) { + $ressum += $score[0]/$score[1] * $catweight; + $bestResult += $ressum; } } } @@ -796,13 +820,13 @@ class Category implements GradebookItem if (!empty($evals)) { /** @var Evaluation $eval */ foreach ($evals as $eval) { - $evalres = $eval->calc_score($stud_id); + $evalres = $eval->calc_score($stud_id, $type); if (isset($evalres) && $eval->get_weight() != 0) { $evalweight = $eval->get_weight(); $weightsum += $evalweight; $rescount++; - $ressum += (($evalres[0]/$evalres[1]) * $evalweight); + $ressum += $evalres[0]/$evalres[1] * $evalweight; } else { if ($eval->get_weight() != 0) { $evalweight = $eval->get_weight(); @@ -810,18 +834,25 @@ class Category implements GradebookItem } } } + if ($type == 'best') { + //var_dump($ressum); + } } if (!empty($links)) { + + $bestResult = 0; + $weight = 0; + /** @var EvalLink|ExerciseLink $link */ - foreach ($links as $link) { - $linkres = $link->calc_score($stud_id); + foreach ($links as $link) { + $linkres = $link->calc_score($stud_id, $type); if (!empty($linkres) && $link->get_weight() != 0) { $linkweight = $link->get_weight(); $link_res_denom = $linkres[1] == 0 ? 1 : $linkres[1]; $rescount++; $weightsum += $linkweight; - $ressum += ($linkres[0] / $link_res_denom) * $linkweight; + $ressum += $linkres[0] / $link_res_denom * $linkweight; } else { // Adding if result does not exists if ($link->get_weight() != 0) { @@ -830,11 +861,21 @@ class Category implements GradebookItem } } } + if ($type == 'best') { + //var_dump($ressum); + } } if ($rescount == 0) { return null; } else { + if ($type == 'best') { + return array($ressum, $weightsum); + } + if ($type == 'average') { + return array($ressum, $weightsum); + } + return array($ressum, $weightsum); } } @@ -872,7 +913,7 @@ class Category implements GradebookItem * @param string Course code * @param int Session id */ - public function get_root_categories_for_student ($stud_id, $course_code = null, $session_id = null) + public function get_root_categories_for_student($stud_id, $course_code = null, $session_id = null) { $main_course_user_table = Database :: get_main_table(TABLE_MAIN_COURSE_USER); $tbl_grade_categories = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY); @@ -1063,7 +1104,7 @@ class Category implements GradebookItem */ private function can_be_moved_to_cat ($cat) { - return ($cat->get_id() != $this->get_id()); + return $cat->get_id() != $this->get_id(); } /** @@ -1073,7 +1114,7 @@ class Category implements GradebookItem * of all underlying categories and evaluations. All links will * be deleted as well ! */ - public function move_to_cat ($cat) + public function move_to_cat($cat) { $this->set_parent_id($cat->get_id()); if ($this->get_course_code() != $cat->get_course_code()) { @@ -1086,7 +1127,7 @@ class Category implements GradebookItem /** * Internal function used by move_to_cat() */ - private function apply_course_code_to_children () + private function apply_course_code_to_children() { $cats = Category::load(null, null, null, $this->id, null); $evals = Evaluation::load(null, null, null, $this->id, null); @@ -1305,11 +1346,12 @@ class Category implements GradebookItem /** * Get appropriate subcategories visible for the user (and optionally the course and session) - * @param int $stud_id student id (default: all students) - * @param string Course code (optional) - * @param int Session ID (optional) - * - * @return array Array of subcategories + * @param int $stud_id student id (default: all students) + * @param string $course_code Course code (optional) + * @param int $session_id Session ID (optional) + * @param bool $order + + * @return array Array of subcategories */ public function get_subcategories($stud_id = null, $course_code = null, $session_id = null, $order = null) { @@ -1374,8 +1416,11 @@ class Category implements GradebookItem * * @return array */ - public function get_evaluations($stud_id = null, $recursive = false, $course_code = '') - { + public function get_evaluations( + $stud_id = null, + $recursive = false, + $course_code = '' + ) { $evals = array(); if (empty($course_code)) { @@ -1384,14 +1429,14 @@ class Category implements GradebookItem // 1 student if (isset($stud_id) && !empty($stud_id)) { - // special case: this is the root + // Special case: this is the root if ($this->id == 0) { $evals = Evaluation::get_evaluations_with_result_for_student(0, $stud_id); } else { $evals = Evaluation::load(null,null, $course_code, $this->id, api_is_allowed_to_edit() ? null : 1); } } else { - // all students + // All students // course admin if ((api_is_allowed_to_edit() || api_is_drh() || api_is_session_admin()) && !api_is_platform_admin()) { // root @@ -1404,8 +1449,7 @@ class Category implements GradebookItem // course independent $evals = Evaluation::load(null, api_get_user_id(), null, $this->id, null); } - } elseif (api_is_platform_admin()) { - //platform admin + } else { $evals = Evaluation::load(null, null, $course_code, $this->id, null); } } @@ -1433,8 +1477,12 @@ class Category implements GradebookItem * * @return array */ - public function get_links($stud_id = null, $recursive = false, $course_code = '', $sessionId = null) - { + public function get_links( + $stud_id = null, + $recursive = false, + $course_code = '', + $sessionId = null + ) { $links = array(); if (empty($course_code)) { @@ -1458,8 +1506,9 @@ class Category implements GradebookItem $this->id, api_is_allowed_to_edit() ? null : 1 ); - } elseif (api_is_allowed_to_edit() || api_is_drh() || api_is_session_admin()) { - // all students -> only for course/platform admin + //} elseif (api_is_allowed_to_edit() || api_is_drh() || api_is_session_admin()) { + } else { + // All students -> only for course/platform admin $links = LinkFactory::load( null, null, @@ -1502,7 +1551,8 @@ class Category implements GradebookItem public function getCategories($catId) { $tblGradeCategories = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY); - $sql='SELECT * FROM '.$tblGradeCategories.' WHERE parent_id = '.intval($catId); + $sql = 'SELECT * FROM '.$tblGradeCategories.' + WHERE parent_id = '.intval($catId); $result = Database::query($sql); $allcats = Category::create_category_objects_from_sql_result($result); @@ -1561,7 +1611,8 @@ class Category implements GradebookItem } /** - * This function, locks a category , only one who can unlock it is the platform administrator. + * This function, locks a category , only one who can unlock it is + * the platform administrator. * @param int locked 1 or unlocked 0 * @return bool @@ -1569,7 +1620,8 @@ class Category implements GradebookItem public function lock($locked) { $table = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY); - $sql = "UPDATE $table SET locked = '".intval($locked)."' WHERE id='".intval($this->id)."'"; + $sql = "UPDATE $table SET locked = '".intval($locked)."' + WHERE id='".intval($this->id)."'"; Database::query($sql); } @@ -1673,7 +1725,8 @@ class Category implements GradebookItem $cattotal = Category::load($category_id); $scoretotal = $cattotal[0]->calc_score($user_id); - //Do not remove this the gradebook/lib/fe/gradebooktable.class.php file load this variable as a global + // Do not remove this the gradebook/lib/fe/gradebooktable.class.php + // file load this variable as a global $scoredisplay = ScoreDisplay::instance(); $my_score_in_gradebook = $scoredisplay->display_score($scoretotal, SCORE_SIMPLE); diff --git a/main/gradebook/lib/fe/gradebooktable.class.php b/main/gradebook/lib/fe/gradebooktable.class.php index af3968588b..659e71fa2a 100755 --- a/main/gradebook/lib/fe/gradebooktable.class.php +++ b/main/gradebook/lib/fe/gradebooktable.class.php @@ -164,6 +164,11 @@ class GradebookTable extends SortableTable $total_categories_weight = 0; $scoredisplay = ScoreDisplay :: instance(); + $totalResult = [0, 0]; + $totalGlobal = [0, 0]; + $totalBest = [0, 0]; + $totalAverage = [0, 0]; + // Categories. foreach ($data_array as $data) { @@ -239,13 +244,15 @@ class GradebookTable extends SortableTable $score = $item->calc_score(api_get_user_id()); if (!empty($score[1])) { + $categoryScoreArray = $score; $completeScore = $scoredisplay->display_score($score, SCORE_DIV_PERCENT); $score = $score[0]/$score[1]*$item->get_weight(); - $score = $scoredisplay->display_score(array($score, null), SCORE_SIMPLE); + $categoryScore = $scoredisplay->display_score(array($score, $mainCategoryWeight), SCORE_DIV); $scoreToDisplay = Display::tip($score, $completeScore); } else { + $categoryScoreArray = [0, $item->get_weight()]; $scoreToDisplay = '-'; $categoryScore = null; } @@ -256,21 +263,38 @@ class GradebookTable extends SortableTable $best = isset($data['best']) ? $data['best'] : null; $average = isset($data['average']) ? $data['average'] : null; - //if (!is_null($value_data)) { - // Student result - $row[] = Display::tag('h4', $value_data); - // Global - $row[] = Display::tag('h4', $categoryScore); - // Best - $row[] = Display::tag('h4', $best); - // Average - $row[] = Display::tag('h4', $average); - + $totalResult = [ + $totalResult[0] + $data['result_score'][0], + $totalResult[1] + $data['result_score'][1], + ]; + + $totalGlobal = [ + $totalGlobal[0] + $categoryScoreArray[0], + $totalGlobal[1] + $categoryScoreArray[1], + ]; + + $totalBest = [ + $totalBest[0] + $data['best_score'][0], + $totalBest[1] + $data['best_score'][1], + ]; + + $totalAverage = [ + $totalAverage[0] + $data['average_score'][0], + $totalAverage[1] + $data['average_score'][1], + ]; + + // Student result + $row[] = $value_data; + // Global + $row[] = $categoryScore; + // Best + $row[] = $best; + // Average + $row[] = $average; + + if (get_class($item) == 'Category') { $row[] = $this->build_edit_column($item); - - /*} else { - - }*/ + } } else { $row[] = $scoreToDisplay; @@ -300,20 +324,20 @@ class GradebookTable extends SortableTable $data_array = $sub_cat_info->get_data($sorting, $from, $this->per_page); $total_weight = 0; - //$score = $cats[0]->calc_score(api_get_user_id()); - //$categoryScore = $scoredisplay->display_score(array($score, $cats[0]->get_weight()), SCORE_DIV); - // Links. foreach ($data_array as $data) { + $row = array(); $item = $data[0]; //if the item is invisible, wrap it in a span with class invisible - $invisibility_span_open = (api_is_allowed_to_edit() && $item->is_visible() == '0') ? '' : ''; + $invisibility_span_open = api_is_allowed_to_edit() && $item->is_visible() == '0' ? '' : ''; - $main_categories[$parent_id]['children'][$item->get_id()]['name'] = $item->get_name(); - $main_categories[$parent_id]['children'][$item->get_id()]['weight'] = $item->get_weight(); + if (isset($item)) { + $main_categories[$parent_id]['children'][$item->get_id()]['name'] = $item->get_name(); + $main_categories[$parent_id]['children'][$item->get_id()]['weight'] = $item->get_weight(); + } if (api_is_allowed_to_edit(null, true)) { $row[] = $this->build_id_column($item); @@ -348,16 +372,18 @@ class GradebookTable extends SortableTable $row[] = $this->build_edit_column($item); } } else { - //students get the results and certificates columns + // Students get the results and certificates columns $eval_n_links = array_merge($alleval, $alllink); - if (count($eval_n_links)> 0 && $status_user!=1 ) { + if (count($eval_n_links)> 0 && $status_user != 1) { $value_data = isset($data[4]) ? $data[4] : null; + if (!is_null($value_data)) { $score = $item->calc_score(api_get_user_id()); $new_score = $data[3] * $score[0] / $score[1]; $new_score = floatval(number_format($new_score, api_get_setting('gradebook_number_decimals'))); - //$row[] = Display::tip($new_score, $data[4]); + + // Result $row[] = $value_data; $best = isset($data['best']) ? $data['best'] : null; @@ -368,13 +394,14 @@ class GradebookTable extends SortableTable array($new_score, $cattotal[0]->get_weight()), SCORE_DIV ); - $row[] = Display::tag('h4', $categoryScore); + $row[] = $categoryScore; // Best - $row[] = Display::tag('h4', $best); + $row[] = $best; // Average - $row[] = Display::tag('h4', $average); + $row[] = $average; } } + if (!empty($cats)) { $row[] = null; } @@ -413,6 +440,7 @@ class GradebookTable extends SortableTable } //end looping categories if (api_is_allowed_to_edit()) { + // Total for teacher. if (count($main_cat) > 1) { $main_weight = intval($main_cat[0]->get_weight()); @@ -421,7 +449,54 @@ class GradebookTable extends SortableTable } else { $total = Display::badge($total_categories_weight.' / '.$main_weight, 'warning'); } - $row = array(null, null, '

'.get_lang('Total').'

', null, $total); + $row = array( + null, + null, + '

' . get_lang('Total') . '

', + null, + $total + ); + $sortable_data[] = $row; + } + } else { + // Total for student. + if (count($main_cat) > 1) { + $main_weight = intval($main_cat[0]->get_weight()); + + $global = null; + $average = null; + + $totalResult = $scoredisplay->display_score( + $totalResult, + SCORE_DIV + ); + + $totalGlobal = $scoredisplay->display_score( + $totalGlobal, + SCORE_DIV + ); + + $totalBest = $scoredisplay->display_score( + $totalBest, + SCORE_DIV + ); + + $totalAverage = $scoredisplay->display_score( + $totalAverage, + SCORE_DIV + ); + + $row = array( + null, + '

' . get_lang('Total') . '

', + null, + $main_weight, + $totalResult, + $totalGlobal, + $totalBest, + $totalAverage, + ); + $sortable_data[] = $row; } } @@ -430,7 +505,9 @@ class GradebookTable extends SortableTable $view = isset($_GET['view']) ? $_GET['view']: null; if (api_is_allowed_to_edit()) { - if (isset($_GET['selectcat']) && $_GET['selectcat'] > 0 && $view <> 'presence') { + if (isset($_GET['selectcat']) && + $_GET['selectcat'] > 0 && $view <> 'presence' + ) { $id_cat = intval($_GET['selectcat']); $category = Category::load($id_cat); @@ -492,7 +569,9 @@ class GradebookTable extends SortableTable $certificate_min_score = intval($certificate_min_scores[$x]); $course_code = $course_codes[$x]; - if (empty($certificate_min_score) || ($certificate_min_score > $weight_category)) { + if (empty($certificate_min_score) || + ($certificate_min_score > $weight_category) + ) { $warning_message .= $course_code .' - '.get_lang('CertificateMinimunScoreIsRequiredAndMustNotBeMoreThan').' '.$weight_category.'
'; } } @@ -558,7 +637,7 @@ class GradebookTable extends SortableTable * @param array $attributes * @return string */ - private function build_type_column ($item, $attributes = array()) + private function build_type_column($item, $attributes = array()) { return GradebookUtils::build_type_icon_tag($item->get_icon_name(), $attributes); } @@ -592,11 +671,9 @@ class GradebookTable extends SortableTable case 'E' : $cat = new Category(); $course_id = CourseManager::get_course_by_category($_GET['selectcat']); - $show_message = $cat->show_message_resource_delete($course_id); // course/platform admin can go to the view_results page - if (api_is_allowed_to_edit() && $show_message===false) { if ($item->get_type() == 'presence') { return ' ' diff --git a/main/gradebook/lib/flatview_data_generator.class.php b/main/gradebook/lib/flatview_data_generator.class.php index 710cc6c3b2..a0570724f4 100755 --- a/main/gradebook/lib/flatview_data_generator.class.php +++ b/main/gradebook/lib/flatview_data_generator.class.php @@ -553,12 +553,12 @@ class FlatViewDataGenerator $score = $item->calc_score($user_id); $real_score = $score; - $divide = (($score[1])==0 ) ? 1 : $score[1]; + $divide = isset($score[1]) && !empty($score[1]) ? $score[1] : 1; // Sub cat weight $sub_cat_percentage = $sum_categories_weight_array[$item->get_category_id()]; - $item_value = $score[0]/$divide; + $item_value = isset($score[0]) ? $score[0]/$divide : 0; // Fixing total when using one or multiple gradebooks. if (empty($parentCategoryIdFilter)) { diff --git a/main/gradebook/lib/gradebook_data_generator.class.php b/main/gradebook/lib/gradebook_data_generator.class.php index b128a048cc..c7b6f8f23a 100755 --- a/main/gradebook/lib/gradebook_data_generator.class.php +++ b/main/gradebook/lib/gradebook_data_generator.class.php @@ -119,28 +119,45 @@ class GradebookDataGenerator // Generate the data to display $data = array(); /** @var GradebookItem $item */ + $totalWeight = 0; foreach ($visibleitems as $item) { - $row = array (); + $row = array(); $row[] = $item; $row[] = $item->get_name(); // display the 2 first line of description, and all description on mouseover (https://support.chamilo.org/issues/6588) $row[] = ''. api_get_short_text_from_html($item->get_description(), 160).''; + $totalWeight += $item->get_weight(); $row[] = $item->get_weight(); if (count($this->evals_links) > 0) { if (!api_is_allowed_to_edit() || $status_user != 1 ) { - $row[] = $this->build_result_column($item, $ignore_score_color); - $row['best'] = $this->buildBestResultColumn($item); - $row['average'] = $this->buildAverageResultColumn($item); + $row[] = $this->build_result_column($item, $ignore_score_color)['display']; + $row['result_score'] = $this->build_result_column($item, $ignore_score_color)['score']; + $row['best'] = $this->buildBestResultColumn($item)['display']; + $row['best_score'] = $this->buildBestResultColumn($item)['score']; + $row['average'] = $this->buildAverageResultColumn($item)['display']; + $row['average_score'] = $this->buildAverageResultColumn($item)['score']; $row[] = $item; } } else { - $row[] = $this->build_result_column($item, $ignore_score_color, true); - $row['best'] = $this->buildBestResultColumn($item); - $row['average'] = $this->buildAverageResultColumn($item); + $row[] = $this->build_result_column($item, $ignore_score_color, true)['display']; + $row['result_score'] = $this->build_result_column($item, $ignore_score_color)['score']; + $row['best'] = $this->buildBestResultColumn($item)['display']; + $row['best_score'] = $this->buildBestResultColumn($item)['score']; + $row['average'] = $this->buildAverageResultColumn($item)['display']; + $row['average_score'] = $this->buildAverageResultColumn($item)['score']; } $data[] = $row; } + + // Total + /*$totalRow = []; + $totalRow[] = null; + $totalRow[] = get_lang('Total'); + $totalRow[] = null; // Description + $totalRow[] = $totalWeight; + $data[] = $totalRow;*/ + return $data; } @@ -161,7 +178,10 @@ class GradebookDataGenerator $scoreDisplay = ScoreDisplay :: instance(); - return $scoreDisplay->display_score($score, SCORE_DIV); + return array( + 'display' => $scoreDisplay->display_score($score, SCORE_DIV), + 'score' => $score + ); } /** @@ -172,7 +192,11 @@ class GradebookDataGenerator { $score = $item->calc_score(null, 'average'); $scoreDisplay = ScoreDisplay :: instance(); - return $scoreDisplay->display_score($score, SCORE_DIV); + + return array( + 'display' => $scoreDisplay->display_score($score, SCORE_DIV), + 'score' => $score + ); } /** @@ -195,11 +219,21 @@ class GradebookDataGenerator $displaytype |= SCORE_IGNORE_SPLIT; } if ($forceSimpleResult) { - return $scoredisplay->display_score($score, SCORE_DIV); + return + array( + 'display' => $scoredisplay->display_score($score, SCORE_DIV), + 'score' => $score + ); } - return get_lang('Total') . ' : '. $scoredisplay->display_score($score, $displaytype); + return array( + 'display' => get_lang('Total') . ' : '. $scoredisplay->display_score($score, $displaytype), + 'score' => $score + ); } else { - return ''; + return array( + 'display' => null, + 'score' => $score + ); } break; // evaluation and link @@ -209,10 +243,17 @@ class GradebookDataGenerator if ($ignore_score_color) { $displaytype |= SCORE_IGNORE_SPLIT; }*/ - return $scoredisplay->display_score($score, SCORE_DIV_PERCENT_WITH_CUSTOM); + return array( + 'display' => $scoredisplay->display_score($score, SCORE_DIV), + 'score' => $score, + ); } } - return null; + + return array( + 'display' => null, + 'score' => null + ); } /** diff --git a/main/gradebook/lib/scoredisplay.class.php b/main/gradebook/lib/scoredisplay.class.php index 061890176c..603808f370 100755 --- a/main/gradebook/lib/scoredisplay.class.php +++ b/main/gradebook/lib/scoredisplay.class.php @@ -3,7 +3,7 @@ /** * Class ScoreDisplay - * Class to display scores according to the settings made by the platform admin. + * Display scores according to the settings made by the platform admin. * This class works as a singleton: call instance() to retrieve an object. * @author Bert SteppĂ© * @package chamilo.gradebook @@ -19,6 +19,7 @@ class ScoreDisplay /** * Get the instance of this class + * @param int $category_id */ public static function instance($category_id = 0) { @@ -48,7 +49,6 @@ class ScoreDisplay } else { return (($score1[0]/$score1[1]) < ($score2[0]/$score2[1]) ? -1 : 1); } - } } @@ -224,6 +224,10 @@ class ScoreDisplay Database::query($sql); } + /** + * @param int $category_id + * @return bool + */ public function insert_defaults($category_id) { if (empty($category_id)) { @@ -252,6 +256,9 @@ class ScoreDisplay } } + /** + * @return int|null|string + */ public function get_number_decimals() { $number_decimals = api_get_setting('gradebook_number_decimals'); @@ -284,8 +291,12 @@ class ScoreDisplay * * @return string */ - public function display_score($score, $type = SCORE_DIV_PERCENT, $what = SCORE_BOTH, $no_color = false) - { + public function display_score( + $score, + $type = SCORE_DIV_PERCENT, + $what = SCORE_BOTH, + $no_color = false + ) { $my_score = $score == 0 ? 1 : $score; if ($type == SCORE_BAR) { @@ -306,8 +317,9 @@ class ScoreDisplay } if ($this->coloring_enabled && $no_color == false) { - $my_score_denom = ($score[1]==0)?1:$score[1]; - if (($score[0] / $my_score_denom) < ($this->color_split_value / 100)) { + $my_score_denom = isset($score[1]) && !empty($score[1]) ? $score[1] : 1; + $scoreCleaned = isset($score[0]) ? $score[0] : 0; + if (($scoreCleaned / $my_score_denom) < ($this->color_split_value / 100)) { $display = Display::tag('font', $display, array('color'=>'red')); } } @@ -319,7 +331,7 @@ class ScoreDisplay * @param $type * @return float|string */ - private function display_default ($score, $type) + private function display_default($score, $type) { switch ($type) { case SCORE_DIV : // X / Y @@ -422,7 +434,7 @@ class ScoreDisplay * Depends on the teacher's configuration of thresholds. i.e. [0 50] "Bad", [50:100] "Good" * @param array $score */ - private function display_custom ($score) + private function display_custom($score) { $my_score_denom= ($score[1]==0) ? 1 : $score[1]; $scaledscore = $score[0] / $my_score_denom; @@ -480,7 +492,9 @@ class ScoreDisplay } else { $category_id = $this->get_current_gradebook_category_id(); } - $sql = 'SELECT * FROM '.$tbl_display.' WHERE category_id = '.$category_id.' ORDER BY score'; + $sql = 'SELECT * FROM '.$tbl_display.' + WHERE category_id = '.$category_id.' + ORDER BY score'; $result = Database::query($sql); return Database::store_result($result,'ASSOC'); } diff --git a/main/gradebook/lib/user_data_generator.class.php b/main/gradebook/lib/user_data_generator.class.php index ba849e4e42..3a30e7f37b 100755 --- a/main/gradebook/lib/user_data_generator.class.php +++ b/main/gradebook/lib/user_data_generator.class.php @@ -146,7 +146,7 @@ class UserDataGenerator $row[] = $this->build_course_name($item); $row[] = $this->build_category_name($item); $row[] = $this->build_average_column($item, $ignore_score_color); - $row[] = $this->build_result_column($item, $ignore_score_color); + $row[] = $this->build_result_column($item, $ignore_score_color)['display']; if ($scoredisplay->is_custom()) $row[] = $this->build_mask_column($item, $ignore_score_color); $data[] = $row; @@ -154,9 +154,11 @@ class UserDataGenerator return $data; } - // Sort functions - // Make sure to only use functions as defined in the GradebookItem interface ! - + /** + * @param $item1 + * @param $item2 + * @return int + */ function sort_by_type($item1, $item2) { if ($item1->get_item_type() == $item2->get_item_type()) { @@ -166,6 +168,11 @@ class UserDataGenerator } } + /** + * @param $item1 + * @param $item2 + * @return int + */ function sort_by_course($item1, $item2) { $name1 = api_strtolower($this->get_course_name_from_code_cached($item1->get_course_code())); @@ -173,6 +180,11 @@ class UserDataGenerator return api_strnatcmp($name1, $name2); } + /** + * @param $item1 + * @param $item2 + * @return int + */ function sort_by_category($item1, $item2) { $cat1 = $this->get_category_cached($item1->get_category_id()); @@ -182,11 +194,21 @@ class UserDataGenerator return api_strnatcmp($name1, $name2); } + /** + * @param $item1 + * @param $item2 + * @return int + */ function sort_by_name($item1, $item2) { return api_strnatcmp($item1->get_name(),$item2->get_name()); } + /** + * @param $item1 + * @param $item2 + * @return int + */ function sort_by_average($item1, $item2) { $score1 = $this->avgcache[$item1->get_item_type() . $item1->get_id()]; @@ -194,6 +216,11 @@ class UserDataGenerator return $this->compare_scores($score1, $score2); } + /** + * @param $item1 + * @param $item2 + * @return int + */ function sort_by_score($item1, $item2) { $score1 = $this->scorecache[$item1->get_item_type() . $item1->get_id()]; @@ -201,6 +228,11 @@ class UserDataGenerator return $this->compare_scores($score1, $score2); } + /** + * @param $item1 + * @param $item2 + * @return int + */ function sort_by_mask($item1, $item2) { $score1 = $this->scorecache[$item1->get_item_type() . $item1->get_id()]; @@ -208,7 +240,12 @@ class UserDataGenerator return ScoreDisplay :: compare_scores_by_custom_display($score1, $score2); } - function compare_scores ($score1, $score2) + /** + * @param $score1 + * @param $score2 + * @return int + */ + function compare_scores($score1, $score2) { if (!isset($score1)) { return (isset($score2) ? 1 : 0); @@ -221,19 +258,32 @@ class UserDataGenerator } } - private function build_course_name ($item) + /** + * @param $item + * @return mixed + */ + private function build_course_name($item) { return $this->get_course_name_from_code_cached($item->get_course_code()); } - private function build_category_name ($item) + /** + * @param $item + * @return string + */ + private function build_category_name($item) { $cat = $this->get_category_cached($item->get_category_id()); return $this->get_category_name_to_display($cat); } - private function build_average_column ($item, $ignore_score_color) + /** + * @param $item + * @param $ignore_score_color + * @return string + */ + private function build_average_column($item, $ignore_score_color) { if (isset($this->avgcache)) { $avgscore = $this->avgcache[$item->get_item_type() . $item->get_id()]; @@ -249,7 +299,12 @@ class UserDataGenerator return $scoredisplay->display_score($avgscore, $displaytype); } - private function build_result_column ($item, $ignore_score_color) + /** + * @param $item + * @param $ignore_score_color + * @return string + */ + private function build_result_column($item, $ignore_score_color) { $studscore = $this->scorecache[$item->get_item_type() . $item->get_id()]; $scoredisplay = ScoreDisplay :: instance(); @@ -260,6 +315,11 @@ class UserDataGenerator return $scoredisplay->display_score($studscore, $displaytype, SCORE_ONLY_DEFAULT); } + /** + * @param $item + * @param $ignore_score_color + * @return string + */ private function build_mask_column($item, $ignore_score_color) { $studscore = $this->scorecache[$item->get_item_type() . $item->get_id()]; @@ -271,8 +331,12 @@ class UserDataGenerator return $scoredisplay->display_score($studscore, $displaytype, SCORE_ONLY_CUSTOM); } - - private function get_course_name_from_code_cached ($coursecode) { + /** + * @param $coursecode + * @return mixed + */ + private function get_course_name_from_code_cached($coursecode) + { if (isset ($this->coursecodecache) && isset ($this->coursecodecache[$coursecode])) { return $this->coursecodecache[$coursecode]; @@ -283,7 +347,12 @@ class UserDataGenerator } } - private function get_category_cached ($category_id) { + /** + * @param $category_id + * @return null + */ + private function get_category_cached($category_id) + { if (isset ($this->categorycache) && isset ($this->categorycache[$category_id])) { return $this->categorycache[$category_id]; @@ -297,7 +366,12 @@ class UserDataGenerator } } - private function get_category_name_to_display ($cat) { + /** + * @param $cat + * @return string + */ + private function get_category_name_to_display($cat) + { if (isset($cat)) { if ($cat->get_parent_id() == '0' || $cat->get_parent_id() == null){ return ''; diff --git a/main/inc/lib/attendance.lib.php b/main/inc/lib/attendance.lib.php index 846eedf301..e95a09da6e 100755 --- a/main/inc/lib/attendance.lib.php +++ b/main/inc/lib/attendance.lib.php @@ -182,11 +182,14 @@ class Attendance $actions .= '
'; if (api_is_platform_admin()) { - $actions .= ''.Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL).' '; + $actions .= ''. + Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL).' '; if ($attendance[5] == 1) { - $actions .= ''.Display::return_icon('visible.png', get_lang('Hide'), array(), ICON_SIZE_SMALL).''; + $actions .= ''. + Display::return_icon('visible.png', get_lang('Hide'), array(), ICON_SIZE_SMALL).''; } else { - $actions .= ''.Display::return_icon('invisible.png', get_lang('Show'), array(), ICON_SIZE_SMALL).''; + $actions .= ''. + Display::return_icon('invisible.png', get_lang('Show'), array(), ICON_SIZE_SMALL).''; $attendance[2] = ''.$attendance[2].''; } } else { @@ -195,8 +198,10 @@ class Attendance $actions .= Display::return_icon('edit_na.png', get_lang('Edit')).' '; $actions .= Display::return_icon('visible.png', get_lang('Hide')); } else { - $actions .= ''.Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL).' '; - $actions .= ''.Display::return_icon('visible.png', get_lang('Hide'), array(), ICON_SIZE_SMALL).''; + $actions .= ''. + Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL).' '; + $actions .= ''. + Display::return_icon('visible.png', get_lang('Hide'), array(), ICON_SIZE_SMALL).''; } } @@ -204,22 +209,31 @@ class Attendance $is_done_all_calendar = self::is_all_attendance_calendar_done($attendance[0]); if ($is_done_all_calendar) { - $locked = $attendance[4]; + $locked = $attendance[4]; if ($locked == 0) { if (api_is_platform_admin()) { $message_alert = get_lang('AreYouSureToLockTheAttendance'); } else { $message_alert = get_lang('UnlockMessageInformation'); } - $actions .= ' '.Display::return_icon('unlock.png', get_lang('LockAttendance')).''; + $actions .= ' '. + Display::return_icon('unlock.png', get_lang('LockAttendance')).''; } else { if (api_is_platform_admin()) { - $actions .= ' '.Display::return_icon('locked.png', get_lang('UnlockAttendance')).''; + $actions .= ' '. + Display::return_icon('locked.png', get_lang('UnlockAttendance')).''; } else { $actions .= ' '.Display::return_icon('locked_na.png', get_lang('LockedAttendance')); } } } + /*if (api_is_allowed_to_edit(null, true)) { + $message_alert = get_lang('AreYouSureToDelete'); + $actions .= ' ' . + Display::return_icon('delete.png', + get_lang('DeleteAttendance')) . ''; + }*/ + $actions .= '
'; $attendances[] = array($attendance[0], $attendance[1], $attendance[2], $attendance[3],$actions); diff --git a/main/install/db_main.sql b/main/install/db_main.sql index 3eeccb6480..23a3a848e0 100755 --- a/main/install/db_main.sql +++ b/main/install/db_main.sql @@ -3464,8 +3464,10 @@ CREATE TABLE track_e_attempt_coeff ( ); -- Course - +DROP TABLE IF EXISTS c_student_publication_rel_document; CREATE TABLE IF NOT EXISTS c_student_publication_rel_document (id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, work_id INT NOT NULL, document_id INT NOT NULL, c_id INT NOT NULL); +DROP TABLE IF EXISTS c_student_publication_rel_user; CREATE TABLE IF NOT EXISTS c_student_publication_rel_user ( id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, work_id INT NOT NULL, user_id INT NOT NULL, c_id INT NOT NULL); +DROP TABLE IF EXISTS c_student_publication_comment; CREATE TABLE IF NOT EXISTS c_student_publication_comment ( id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, work_id INT NOT NULL, c_id INT NOT NULL, comment text, file VARCHAR(255), user_id int NOT NULL, sent_at datetime NOT NULL); diff --git a/main/newscorm/lp_controller.php b/main/newscorm/lp_controller.php index b98f87b560..e6d4d048e1 100755 --- a/main/newscorm/lp_controller.php +++ b/main/newscorm/lp_controller.php @@ -34,16 +34,22 @@ $language_file[] = 'exercice'; // Including the global initialization file. require_once '../inc/global.inc.php'; $current_course_tool = TOOL_LEARNPATH; -if (api_get_setting('show_glossary_in_documents') == 'ismanual' || - api_get_setting('show_glossary_in_documents') == 'isautomatic' -) { - $htmlHeadXtra[] = ''; - $htmlHeadXtra[] = ''; - $htmlHeadXtra[] = ''; + +$glossaryExtraTools = api_get_setting('show_glossary_in_extra_tools'); +$showGlossary = in_array($glossaryExtraTools, array('true', 'lp', 'exercise_and_lp')); + +if ($showGlossary) { + if (api_get_setting('show_glossary_in_documents') == 'ismanual' || + api_get_setting('show_glossary_in_documents') == 'isautomatic' + ) { + $htmlHeadXtra[] = ''; + $htmlHeadXtra[] = ''; + $htmlHeadXtra[] = ''; + } } $htmlHeadXtra[] = '