Gradebook: Switch to course ID (from course code) #dangerous - refs #5278

pull/5292/head
Yannick Warnier 1 year ago
parent 1cc8234e2a
commit b23447d69f
  1. 2
      public/main/admin/export_certificates.php
  2. 2
      public/main/admin/periodic_export.php
  3. 6
      public/main/exercise/exercise.class.php
  4. 8
      public/main/forum/forumfunction.inc.php
  5. 4
      public/main/gradebook/certificate_report.php
  6. 6
      public/main/gradebook/gradebook.php
  7. 20
      public/main/gradebook/gradebook_add_cat.php
  8. 11
      public/main/gradebook/gradebook_add_eval.php
  9. 5
      public/main/gradebook/gradebook_add_link.php
  10. 6
      public/main/gradebook/gradebook_add_link_select_course.php
  11. 13
      public/main/gradebook/gradebook_display_certificate.php
  12. 26
      public/main/gradebook/gradebook_display_summary.php
  13. 4
      public/main/gradebook/gradebook_edit_cat.php
  14. 6
      public/main/gradebook/gradebook_edit_link.php
  15. 5
      public/main/gradebook/gradebook_flatview.php
  16. 68
      public/main/gradebook/index.php
  17. 222
      public/main/gradebook/lib/GradebookUtils.php
  18. 97
      public/main/gradebook/lib/be/abstractlink.class.php
  19. 4
      public/main/gradebook/lib/be/attendancelink.class.php
  20. 543
      public/main/gradebook/lib/be/category.class.php
  21. 2
      public/main/gradebook/lib/be/evallink.class.php
  22. 205
      public/main/gradebook/lib/be/evaluation.class.php
  23. 5
      public/main/gradebook/lib/be/exerciselink.class.php
  24. 2
      public/main/gradebook/lib/be/forumthreadlink.class.php
  25. 2
      public/main/gradebook/lib/be/gradebookitem.class.php
  26. 2
      public/main/gradebook/lib/be/learnpathlink.class.php
  27. 6
      public/main/gradebook/lib/be/linkfactory.class.php
  28. 2
      public/main/gradebook/lib/be/studentpublicationlink.class.php
  29. 4
      public/main/gradebook/lib/be/surveylink.class.php
  30. 19
      public/main/gradebook/lib/fe/catform.class.php
  31. 17
      public/main/gradebook/lib/fe/displaygradebook.php
  32. 16
      public/main/gradebook/lib/fe/evalform.class.php
  33. 22
      public/main/gradebook/lib/fe/gradebooktable.class.php
  34. 5
      public/main/gradebook/lib/fe/linkaddeditform.class.php
  35. 24
      public/main/gradebook/lib/fe/linkform.class.php
  36. 22
      public/main/gradebook/lib/fe/resulttable.class.php
  37. 35
      public/main/gradebook/lib/flatview_data_generator.class.php
  38. 2
      public/main/gradebook/lib/gradebook_data_generator.class.php
  39. 23
      public/main/gradebook/lib/user_data_generator.class.php
  40. 2
      public/main/inc/ajax/gradebook.ajax.php
  41. 11
      public/main/inc/lib/api.lib.php
  42. 10
      public/main/inc/lib/attendance.lib.php
  43. 159
      public/main/inc/lib/course.lib.php
  44. 10
      public/main/inc/lib/sessionmanager.lib.php
  45. 16
      public/main/inc/lib/userportal.lib.php
  46. 2
      public/main/lp/learnpath.class.php
  47. 6
      public/main/lp/lp_final_item.php
  48. 2
      public/main/lp/lp_view.php
  49. 2
      public/main/my_space/myStudents.php
  50. 4
      public/main/my_space/session_filter.php
  51. 2
      public/main/survey/create_new_survey.php
  52. 6
      public/main/survey/survey.lib.php
  53. 2
      public/main/tracking/courseLog.php
  54. 2
      public/main/work/edit_work.php
  55. 10
      public/main/work/work.lib.php
  56. 4
      public/plugin/advanced_subscription/src/AdvancedSubscriptionPlugin.php
  57. 4
      public/plugin/customcertificate/src/export_pdf_all_in_one.php
  58. 16
      public/plugin/dashboard/block_evaluation_graph/block_evaluation_graph.class.php
  59. 4
      public/plugin/dashboard/block_student/block_student.class.php
  60. 4
      public/plugin/grading_electronic/generate.php
  61. 6
      src/CoreBundle/State/CStudentPublicationPostProcessor.php
  62. 26
      src/CourseBundle/Component/CourseCopy/CourseBuilder.php
  63. 2
      src/CourseBundle/Component/CourseCopy/CourseRestorer.php
  64. 4
      src/LtiBundle/Controller/CourseController.php

@ -30,7 +30,7 @@ if ($form->validate()) {
$cats = Category:: load(
null,
null,
$courseCode,
$courseId,
null,
null,
0,

@ -74,7 +74,7 @@ if ($form->validate()) {
$categories = Category::load(
null,
null,
$courseInfo['code'],
$courseId,
null,
false,
0

@ -1842,7 +1842,7 @@ class Exercise
}
$linkInfo = GradebookUtils::isResourceInCourseGradebook(
$this->course['code'],
$this->course_id,
LINK_EXERCISE,
$exerciseId,
$this->sessionId
@ -8700,7 +8700,7 @@ class Exercise
$links = AbstractLink::getGradebookLinksFromItem(
$this->getId(),
LINK_EXERCISE,
$courseInfo['code'],
$courseInfo['real_id'],
$sessionId
);
@ -8708,7 +8708,7 @@ class Exercise
$links = AbstractLink::getGradebookLinksFromItem(
$this->iId,
LINK_EXERCISE,
$courseInfo['code'],
$courseInfo['real_id'],
$sessionId
);
}

@ -176,7 +176,7 @@ function handleForum($url)
SkillModel::deleteSkillsFromItem($id, ITEM_TYPE_FORUM_THREAD);
$link_info = GradebookUtils::isResourceInCourseGradebook(
api_get_course_id(),
api_get_course_int_id(),
5,
$id,
api_get_session_id()
@ -1617,7 +1617,7 @@ function updateThread($values)
$id = $values['thread_id'];
$linkInfo = GradebookUtils::isResourceInCourseGradebook(
$courseCode,
$courseId,
LINK_FORUM_THREAD,
$id,
$sessionId
@ -1649,7 +1649,7 @@ function updateThread($values)
if (!$linkInfo) {
GradebookUtils::add_resource_to_course_gradebook(
$values['category_id'],
$courseCode,
$courseId,
LINK_FORUM_THREAD,
$id,
$title,
@ -1751,7 +1751,7 @@ function saveThread(
$resourcename = stripslashes($values['calification_notebook_title']);
GradebookUtils::add_resource_to_course_gradebook(
$values['category_id'],
$courseCode,
$course_id,
5,
$thread->getIid(),
$resourcename,

@ -118,7 +118,7 @@ if ($searchSessionAndCourse || $searchCourseOnly) {
$gradebookCategories = Category::load(
null,
null,
$selectedCourseInfo['code'],
$selectedCourse,
null,
false,
$selectedSession
@ -220,7 +220,7 @@ if ($searchSessionAndCourse || $searchCourseOnly) {
$gradebookCategories = Category::load(
null,
null,
$sessionCourse['code'],
$sessionCourse['real_id'],
null,
false,
$session['id']

@ -50,7 +50,7 @@ if (isset($_GET['createallcategories'])) {
foreach ($coursecat as $row) {
$cat = new Category();
$cat->set_name($row[1]);
$cat->set_course_code($row[0]);
$cat->setCourseId(api_get_course_int_id($row[0]));
$cat->set_description(null);
$cat->set_user_id(api_get_user_id());
$cat->set_parent_id(0);
@ -86,7 +86,7 @@ if (isset($_GET['movecat'])) {
} else {
$get_target_cat = Security::remove_XSS($_GET['targetcat']);
$targetcat = Category :: load($get_target_cat);
$course_to_crsind = (null != $cats[0]->get_course_code() && null == $targetcat[0]->get_course_code());
$course_to_crsind = (null != $cats[0]->getCourseId() && null == $targetcat[0]->getCourseId());
if (!($course_to_crsind && !isset($_GET['confirm']))) {
$cats[0]->move_to_cat($targetcat[0]);
@ -122,7 +122,7 @@ if (isset($_GET['moveeval'])) {
} else {
$get_target_cat = Security::remove_XSS($_GET['targetcat']);
$targetcat = Category :: load($get_target_cat);
$course_to_crsind = (null != $evals[0]->get_course_code() && null == $targetcat[0]->get_course_code());
$course_to_crsind = (null != $evals[0]->getCourseId() && null == $targetcat[0]->getCourseId());
if (!($course_to_crsind && !isset($_GET['confirm']))) {
$evals[0]->move_to_cat($targetcat[0]);

@ -4,7 +4,8 @@
require_once __DIR__.'/../inc/global.inc.php';
$_in_course = true;
$course_code = api_get_course_id();
if (empty($course_code)) {
$courseId = api_get_course_int_id();
if (empty($courseId)) {
$_in_course = false;
}
@ -21,12 +22,14 @@ $catadd->set_parent_id($get_select_cat);
$catcourse = Category :: load($get_select_cat);
if ($_in_course) {
$catadd->set_course_code($course_code);
$catadd->setCourseId($courseId);
} else {
$catadd->set_course_code($catcourse[0]->get_course_code());
$catadd->setCourseId($catcourse[0]->getCourseId());
}
$catadd->set_course_code(api_get_course_id());
// Todo: Fix this overwriting of code. Doesn't make sense given the previous block
$catadd->setCourseId(api_get_course_int_id());
$form = new CatForm(
CatForm::TYPE_ADD,
$catadd,
@ -42,20 +45,21 @@ if ($form->validate()) {
if ('0' == $values['hid_parent_id']) {
if ('COURSEINDEPENDENT' == $select_course) {
$cat->set_name($values['name']);
$cat->set_course_code(null);
$cat->setCourseId(null);
} else {
$cat->set_course_code($select_course);
$cat->setCourseId(api_get_course_int_id($select_course));
$cat->set_name($values['name']);
}
} else {
$cat->set_name($values['name']);
$cat->set_course_code($values['course_code']);
$cat->setCourseId(api_get_course_int_id($values['course_code']));
}
$cat->set_session_id(api_get_session_id());
// Todo: Fix this reassignment that ignores the block above
// Always add the gradebook to the course
$cat->set_course_code(api_get_course_id());
$cat->setCourseId(api_get_course_int_id());
if (isset($values['skills'])) {
$cat->set_skills($values['skills']);
}

@ -18,7 +18,7 @@ $evaladd->set_user_id($userId);
if (!empty($select_cat)) {
$evaladd->set_category_id($_GET['selectcat']);
$cat = Category::load($_GET['selectcat']);
$evaladd->set_course_code($cat[0]->get_course_code());
$evaladd->setCourseId($cat[0]->getCourseId());
} else {
$evaladd->set_category_id(0);
}
@ -40,11 +40,12 @@ if ($form->validate()) {
$eval->set_user_id($values['hid_user_id']);
if (!empty($values['hid_course_code'])) {
$eval->set_course_code($values['hid_course_code']);
$eval->setCourseId(api_get_course_int_id($values['hid_course_code']));
}
// Todo: Fix this assignment that ignores the block above
//Always add the gradebook to the course
$eval->set_course_code(api_get_course_id());
$eval->setCourseId(api_get_course_int_id());
$eval->set_category_id($values['hid_category_id']);
$parent_cat = Category::load($values['hid_category_id']);
@ -70,7 +71,7 @@ if ($form->validate()) {
];
Event::registerLog($logInfo);
if (null == $eval->get_course_code()) {
if (null == $eval->getCourseId()) {
if (1 == $values['adduser']) {
//Disabling code when course code is null see issue #2705
//header('Location: gradebook_add_user.php?selecteval=' . $eval->get_id());
@ -125,7 +126,7 @@ $(function() {
});
</script>';
if (null == $evaladd->get_course_code()) {
if (null == $evaladd->getCourseId()) {
Display::addFlash(Display::return_message(get_lang('Course independent evaluation'), 'normal', false));
}

@ -23,7 +23,7 @@ if (0 == $session_id) {
$all_categories = Category::load(
null,
null,
api_get_course_id(),
api_get_course_int_id(),
null,
null,
$session_id
@ -71,7 +71,8 @@ if (isset($typeSelected) && '0' != $typeSelected) {
$addvalues = $addform->exportValues();
$link = LinkFactory::create($typeSelected);
$link->set_user_id(api_get_user_id());
$link->set_course_code(api_get_course_id());
// Set course code *and* id
$link->setCourseId(api_get_course_int_id());
$link->set_category_id($addvalues['select_gradebook']);
if ($link->needs_name_and_description()) {

@ -13,9 +13,9 @@ $selectCat = isset($_GET['selectcat']) ? (int) $_GET['selectcat'] : 0;
$catadd = new Category();
$catadd->set_user_id(api_get_user_id());
$catadd->set_parent_id($selectCat);
$catcourse = Category :: load($selectCat);
$catcourse = Category::load($selectCat);
$form = new CatForm(
CatForm :: TYPE_SELECT_COURSE,
CatForm::TYPE_SELECT_COURSE,
$catadd,
'add_cat_form',
null,
@ -25,7 +25,7 @@ $form = new CatForm(
if ($form->validate()) {
$values = $form->exportValues();
$cat = new Category();
$cat->set_course_code($values['select_course']);
$cat->setCourseId(api_get_course_int_id($values['select_course']));
$cat->set_name($values['name']);
header('Location: gradebook_add_link.php?selectcat='.$selectCat.'&course_code='.Security::remove_XSS($values['select_course']).'&'.api_get_cidreq());
exit;

@ -82,7 +82,6 @@ if ('true' === $filter) {
}
$content = '';
$courseCode = api_get_course_id();
$allowCustomCertificate = 'true' === api_get_plugin_setting('customcertificate', 'enable_plugin_customcertificate') &&
1 == api_get_course_setting('customcertificate_course_enable', $courseInfo);
@ -171,7 +170,7 @@ switch ($action) {
}
exit;
case 'generate_all_certificates':
$userList = CourseManager::get_user_list_from_course_code(api_get_course_id(), api_get_session_id());
$userList = CourseManager::getUserListFromCourseId(api_get_course_int_id(), api_get_session_id());
if (!empty($userList)) {
foreach ($userList as $userInfo) {
if (INVITEE == $userInfo['status']) {
@ -222,7 +221,15 @@ if (!empty($content)) {
}
//@todo replace all this code with something like get_total_weight()
$cats = Category::load($categoryId, null, null, null, null, null, false);
$cats = Category::load(
$categoryId,
null,
0,
null,
null,
null,
null
);
if (!empty($cats)) {
//with this fix the teacher only can view 1 gradebook

@ -18,8 +18,8 @@ $sessionId = api_get_session_id();
$courseInfo = api_get_course_info();
$statusToFilter = empty($sessionId) ? STUDENT : 0;
$userList = CourseManager::get_user_list_from_course_code(
api_get_course_id(),
$userList = CourseManager::getUserListFromCourseId(
api_get_course_int_id(),
$sessionId,
null,
null,
@ -48,7 +48,15 @@ if ($cacheAvailable) {
switch ($action) {
case 'export_all':
//Session::write('use_gradebook_cache', true);
$cats = Category::load($cat_id, null, null, null, null, null, false);
$cats = Category::load(
$cat_id,
null,
0,
null,
null,
null,
null
);
/** @var Category $cat */
$cat = $cats[0];
$allcat = $cat->get_subcategories(
@ -65,7 +73,7 @@ switch ($action) {
$alllink = $cat->get_links(
null,
true,
api_get_course_id(),
api_get_course_int_id(),
api_get_session_id()
);
@ -141,7 +149,15 @@ switch ($action) {
break;
case 'download':
$userId = isset($_GET['user_id']) && $_GET['user_id'] ? $_GET['user_id'] : null;
$cats = Category::load($cat_id, null, null, null, null, null, false);
$cats = Category::load(
$cat_id,
null,
0,
null,
null,
null,
null
);
GradebookUtils::generateTable($courseInfo, $userId, $cats, false, false, $userList);
break;
case 'add_comment':

@ -33,9 +33,9 @@ if ($form->validate()) {
$cat->set_name($values['name']);
if (empty($values['course_code'])) {
$cat->set_course_code(null);
$cat->setCourseId(null);
} else {
$cat->set_course_code($values['course_code']);
$cat->setCourseId(api_get_course_int_id($values['course_code']));
}
if (isset($values['grade_model_id'])) {

@ -30,11 +30,11 @@ if (0 == $session_id) {
$cats = Category:: load(
null,
null,
$course_code,
$course_id,
null,
null,
$session_id,
false
null
); //already init
} else {
$cats = Category::loadSessionCategories(null, $session_id);
@ -50,7 +50,7 @@ $form = new LinkAddEditForm(
);
if ($form->validate()) {
$values = $form->exportValues();
$parent_cat = Category :: load($values['select_gradebook']);
$parent_cat = Category::load($values['select_gradebook']);
$final_weight = $values['weight_mask'];
$link->set_weight($final_weight);

@ -102,7 +102,7 @@ if (isset($_GET['search'])) {
$mainCourseCategory = Category::load(
null,
null,
api_get_course_id(),
api_get_course_int_id(),
null,
null,
api_get_session_id()
@ -272,7 +272,6 @@ if (isset($_GET['exportpdf'])) {
}
$studentView = api_is_student_view_active();
if (isset($_GET['isStudentView']) && 'false' === $_GET['isStudentView']) {
DisplayGradebook::display_header_reduce_flatview(
$cat[0],
@ -281,7 +280,7 @@ if (isset($_GET['isStudentView']) && 'false' === $_GET['isStudentView']) {
$simple_search_form
);
$flatViewTable->display();
} elseif (isset($_GET['selectcat']) && ('teacherview' === $studentView)) {
} elseif (isset($_GET['selectcat']) && (false === $studentView)) {
DisplayGradebook::display_header_reduce_flatview(
$cat[0],
$showeval,

@ -74,7 +74,15 @@ switch ($action) {
api_not_allowed(true);
}
if (isset($_GET['category_id'])) {
$cats = Category::load($_GET['category_id'], null, null, null, null, null, false);
$cats = Category::load(
$_GET['category_id'],
null,
0,
null,
null,
null,
null
);
GradebookUtils::generateTable($courseInfo, api_get_user_id(), $cats);
exit;
}
@ -189,11 +197,11 @@ $courseInfo = api_get_course_info();
$cats = Category::load(
null,
null,
$course_code,
$courseInfo['id'],
null,
null,
$session_id,
'ORDER By id'
'ORDER BY id'
);
$first_time = null;
@ -202,11 +210,11 @@ if (empty($cats)) {
$cats = Category::load(
0,
null,
$course_code,
$courseInfo['id'],
null,
null,
$session_id,
'ORDER By id'
'ORDER BY id'
);
$first_time = 1;
}
@ -231,7 +239,7 @@ if (isset($_GET['createallcategories'])) {
foreach ($coursecat as $row) {
$cat = new Category();
$cat->set_name($row[1]);
$cat->set_course_code($row[0]);
$cat->setCourseId(api_get_course_int_id($row[0]));
$cat->set_description(null);
$cat->set_user_id($stud_id);
$cat->set_parent_id(0);
@ -271,7 +279,7 @@ if (isset($_GET['movecat'])) {
}
} else {
$targetcat = Category::load($_GET['targetcat']);
$course_to_crsind = (null != $cats[0]->get_course_code() && null == $targetcat[0]->get_course_code());
$course_to_crsind = (null != $cats[0]->getCourseId() && null == $targetcat[0]->getCourseId());
if (!($course_to_crsind && !isset($_GET['confirm']))) {
$cats[0]->move_to_cat($targetcat[0]);
@ -305,7 +313,7 @@ if (isset($_GET['moveeval'])) {
}
} else {
$targetcat = Category::load($_GET['targetcat']);
$course_to_crsind = null != $evals[0]->get_course_code() && null == $targetcat[0]->get_course_code();
$course_to_crsind = null != $evals[0]->getCourseId() && null == $targetcat[0]->getCourseId();
if (!($course_to_crsind && !isset($_GET['confirm']))) {
$evals[0]->move_to_cat($targetcat[0]);
@ -672,9 +680,10 @@ $simple_search_form = '';
if (isset($_GET['studentoverview'])) {
//@todo this code also seems to be deprecated ...
/** @var Category[] $cats */
$cats = Category::load($selectCat);
$stud_id = api_is_allowed_to_edit() ? null : $stud_id;
$allcat = $cats[0]->get_subcategories($stud_id, $course_code, $session_id);
$allcat = $cats[0]->get_subcategories($stud_id, $course_id, $session_id);
$alleval = $cats[0]->get_evaluations($stud_id, true);
$alllink = $cats[0]->get_links($stud_id, true);
if (isset($_GET['exportpdf'])) {
@ -745,11 +754,11 @@ if (isset($_GET['studentoverview'])) {
$cats = Category:: load(
null,
null,
$course_code,
$course_id,
null,
null,
$session_id,
false
null
);
if (empty($cats)) {
@ -763,7 +772,7 @@ if (isset($_GET['studentoverview'])) {
$cat->set_name($course_code);
$cat->setIsRequirement(true);
}
$cat->set_course_code($course_code);
$cat->setCourseId($course_id);
$cat->set_description(null);
$cat->set_user_id($stud_id);
$cat->set_parent_id(0);
@ -777,15 +786,28 @@ if (isset($_GET['studentoverview'])) {
unset($cat);
}
$cats = Category::load($selectCat, null, null, null, null, null, false);
/** @var Category[] $cats */
$cats = Category::load(
$selectCat,
null,
0,
null,
null,
null,
null
);
// With this fix the teacher only can view 1 gradebook
if (api_is_platform_admin()) {
$stud_id = api_is_allowed_to_edit() ? null : api_get_user_id();
}
$allcat = $cats[0]->get_subcategories($stud_id, $course_code, $session_id);
$alleval = $cats[0]->get_evaluations($stud_id);
$alllink = $cats[0]->get_links($stud_id);
if (!empty($cats)) {
$allcat = $cats[0]->get_subcategories($stud_id, $course_id, $session_id);
$alleval = $cats[0]->get_evaluations($stud_id);
$alllink = $cats[0]->get_links($stud_id);
} else {
$allcat = $alleval = $alling = [];
}
}
// add params to the future links (in the table shown)
@ -859,11 +881,11 @@ if (isset($first_time) && 1 == $first_time && api_is_allowed_to_edit(null, true)
$cats = Category::load(
null,
null,
$course_code,
$course_id,
null,
null,
$session_id,
false
null
);
if (!empty($cats)) {
@ -917,11 +939,11 @@ if (isset($first_time) && 1 == $first_time && api_is_allowed_to_edit(null, true)
$cats = Category:: load(
null,
null,
$course_code,
$course_id,
null,
null,
$session_id,
false
null
);
} else {
$form_grade->display();
@ -943,9 +965,9 @@ if (isset($first_time) && 1 == $first_time && api_is_allowed_to_edit(null, true)
}
/** @var Category $cat */
foreach ($cats as $cat) {
$allcat = $cat->get_subcategories($stud_id, $course_code, $session_id);
$alleval = $cat->get_evaluations($stud_id, false, $course_code, $session_id);
$alllink = $cat->get_links($stud_id, true, $course_code, $session_id);
$allcat = $cat->get_subcategories($stud_id, $course_id, $session_id);
$alleval = $cat->get_evaluations($stud_id, false, $course_id, $session_id);
$alllink = $cat->get_links($stud_id, true, $course_id, $session_id);
if (0 != $cat->get_parent_id()) {
$i++;

@ -17,37 +17,39 @@ class GradebookUtils
/**
* Adds a resource to the unique gradebook of a given course.
*
* @param int
* @param string Course code
* @param int Resource type (use constants defined in linkfactory.class.php)
* @param int Resource ID in the corresponding tool
* @param string Resource name to show in the gradebook
* @param int Resource weight to set in the gradebook
* @param int Resource max
* @param string Resource description
* @param int Visibility (0 hidden, 1 shown)
* @param int Session ID (optional or 0 if not defined)
* @param int
* @param int
* @param int $courseId Course ID
* @param int Resource type (use constants defined in linkfactory.class.php)
* @param int Resource ID in the corresponding tool
* @param string Resource name to show in the gradebook
* @param int Resource weight to set in the gradebook
* @param int Resource max
* @param string Resource description
* @param int Visibility (0 hidden, 1 shown)
* @param int Session ID (optional or 0 if not defined)
* @param int
* @param int $resource_type
*
* @return bool True on success, false on failure
* @throws Exception
*/
public static function add_resource_to_course_gradebook(
$category_id,
$course_code,
$resource_type,
$resource_id,
$resource_name = '',
$weight = 0,
$max = 0,
$resource_description = '',
$visible = 0,
$session_id = 0,
$link_id = null
) {
int $category_id,
int $courseId,
string $resource_type,
int $resource_id,
?string $resource_name = '',
?int $weight = 0,
?int $max = 0,
?string $resource_description = '',
?int $visible = 0,
?int $session_id = 0,
?int $link_id = null
): bool
{
$link = LinkFactory::create($resource_type);
$link->set_user_id(api_get_user_id());
$link->set_course_code($course_code);
$link->setCourseId($courseId);
if (empty($category_id)) {
return false;
@ -80,25 +82,23 @@ class GradebookUtils
/**
* Update a resource weight.
*
* @param int Link/Resource ID
* @param string
* @param float
* @param int $link_id Link/Resource ID
* @param int $courseId
* @param float $weight
*
* @return bool false on error, true on success
* @throws Exception
*/
public static function updateResourceFromCourseGradebook(
$link_id,
$course_code,
$weight
) {
$link_id = (int) $link_id;
$courseInfo = api_get_course_info($course_code);
if (!empty($link_id) && !empty($courseInfo)) {
$link_id = intval($link_id);
$courseId = $courseInfo['real_id'];
int $link_id,
int $courseId,
float $weight
): bool
{
if (!empty($link_id) && !empty($courseId)) {
$sql = 'UPDATE '.Database::get_main_table(TABLE_MAIN_GRADEBOOK_LINK).'
SET weight = '."'".api_float_val($weight)."'".'
WHERE c_id = "'.$courseId.'" AND id = '.$link_id;
SET weight = '.$weight.'
WHERE c_id = '.$courseId.' AND id = '.$link_id;
Database::query($sql);
}
@ -467,37 +467,38 @@ class GradebookUtils
/**
* Checks if a resource is in the unique gradebook of a given course.
*
* @param string $course_code Course code
* @param int $courseId Course ID
* @param int $resource_type Resource type (use constants defined in linkfactory.class.php)
* @param int $resource_id Resource ID in the corresponding tool
* @param int $session_id Session ID (optional - 0 if not defined)
* @param int $resource_id Resource ID in the corresponding tool
* @param ?int $session_id Session ID (optional - 0 if not defined) (WARNING: not yet implemented)
*
* @return array false on error or array of resource
* @throws Exception
*/
public static function isResourceInCourseGradebook(
$course_code,
$resource_type,
$resource_id,
$session_id = 0
) {
int $courseId,
int $resource_type,
int $resource_id,
?int $session_id
): array
{
$table = Database::get_main_table(TABLE_MAIN_GRADEBOOK_LINK);
$courseInfo = api_get_course_info($course_code);
if (empty($courseInfo)) {
if (empty($courseId) or empty($resource_type) or empty($resource_id)) {
return [];
}
$sql = "SELECT * FROM $table l
WHERE
c_id = ".$courseInfo['real_id']." AND
type = ".(int) $resource_type." AND
ref_id = ".(int) $resource_id;
c_id = $courseId AND
type = $resource_type AND
ref_id = $resource_id";
$res = Database::query($sql);
if (Database::num_rows($res) < 1) {
return false;
return [];
}
return Database::fetch_array($res, 'ASSOC');
return Database::fetch_assoc($res);
}
/**
@ -733,8 +734,9 @@ class GradebookUtils
}
/**
* Gets the content of an HTML document with placeholders replaced
* @param int $user_id
* @param string $course_code
* @param int $courseId
* @param int $sessionId
* @param bool $is_preview
* @param bool $hide_print_button
@ -742,16 +744,17 @@ class GradebookUtils
* @return array
*/
public static function get_user_certificate_content(
$user_id,
$course_code,
$sessionId,
$is_preview = false,
$hide_print_button = false
) {
int $user_id,
int $courseId,
int $sessionId,
?bool $is_preview = false,
?bool $hide_print_button = false
): array
{
// Generate document HTML
$content_html = DocumentManager::replace_user_info_into_html(
$user_id,
api_get_course_info_by_id($course_code),
api_get_course_info_by_id($courseId),
$sessionId,
$is_preview
);
@ -796,25 +799,27 @@ class GradebookUtils
}
/**
* @param null $course_code
* @param int $gradebook_model_id
* Create a gradebook in the given course if no gradebook exists yet
* @param ?int $courseId
* @param ?int $gradebook_model_id
*
* @return mixed
* @return int 0 on failure, gradebook ID otherwise
* @throws Exception
*/
public static function create_default_course_gradebook(
$course_code = null,
$gradebook_model_id = 0
) {
?int $courseId = null,
?int $gradebook_model_id = 0
): int
{
if (api_is_allowed_to_edit(true, true)) {
if (!isset($course_code) || empty($course_code)) {
$course_code = api_get_course_id();
if (empty($courseId)) {
$courseId = api_get_course_int_id();
}
$session_id = api_get_session_id();
$courseInfo = api_get_course_info($course_code);
$t = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
$sql = "SELECT * FROM $t
WHERE c_id = '".$courseInfo['real_id']."' ";
WHERE c_id = $courseId ";
if (!empty($session_id)) {
$sql .= " AND session_id = ".$session_id;
} else {
@ -828,17 +833,17 @@ class GradebookUtils
if (!empty($session_id)) {
$my_session_id = api_get_session_id();
$s_name = api_get_session_name($my_session_id);
$cat->set_name($course_code.' - '.get_lang('Session').' '.$s_name);
$cat->set_name($courseId.' - '.get_lang('Session').' '.$s_name);
$cat->set_session_id($session_id);
} else {
$cat->set_name($course_code);
$cat->set_name(strval($courseId));
}
$cat->set_course_code($course_code);
$cat->set_description(null);
$cat->setCourseId($courseId);
$cat->set_description('');
$cat->set_user_id(api_get_user_id());
$cat->set_parent_id(0);
$default_weight_setting = api_get_setting('gradebook_default_weight');
$default_weight = isset($default_weight_setting) && !empty($default_weight_setting) ? $default_weight_setting : 100;
$default_weight = !empty($default_weight_setting) ? $default_weight_setting : 100;
$cat->set_weight($default_weight);
$cat->set_grade_model_id($gradebook_model_id);
$cat->set_certificate_min_score(75);
@ -854,7 +859,7 @@ class GradebookUtils
return $category_id;
}
return false;
return 0;
}
/**
@ -862,7 +867,6 @@ class GradebookUtils
*/
public static function load_gradebook_select_in_tool($form)
{
$course_code = api_get_course_id();
$session_id = api_get_session_id();
self::create_default_course_gradebook();
@ -871,11 +875,11 @@ class GradebookUtils
$all_categories = Category::load(
null,
null,
$course_code,
api_get_course_int_id(),
null,
null,
$session_id,
false
null
);
$select_gradebook = $form->addSelect(
'category_id',
@ -884,7 +888,7 @@ class GradebookUtils
if (!empty($all_categories)) {
foreach ($all_categories as $my_cat) {
if ($my_cat->get_course_code() == api_get_course_id()) {
if ($my_cat->getCourseId() == api_get_course_int_id()) {
$grade_model_id = $my_cat->get_grade_model_id();
if (empty($grade_model_id)) {
if (0 == $my_cat->get_parent_id()) {
@ -932,7 +936,6 @@ class GradebookUtils
);
// HTML report creation first
$course_code = trim($cat->get_course_code());
$displayscore = ScoreDisplay::instance();
$customDisplays = $displayscore->get_custom_score_display_settings();
@ -1029,6 +1032,7 @@ class GradebookUtils
$table->updateCellAttributes($row, $column, 'colspan="'.$columns.'" align="center" class="row_odd"');
}
$course_code = trim($cat->get_course_code());
$pdfParams = [
'filename' => get_lang('List View').'_'.api_get_local_time(),
'pdf_title' => $title,
@ -1070,23 +1074,20 @@ class GradebookUtils
/**
* returns users within a course given by param.
*
* @param string $courseCode
* @param ?int $courseId
*
* @return array
* @throws Exception
* @todo use CourseManager
*
* @return array
*/
public static function get_users_in_course($courseCode)
public static function get_users_in_course(?int $courseId = 0)
{
$tbl_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
$tbl_user = Database::get_main_table(TABLE_MAIN_USER);
$order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname ASC' : ' ORDER BY lastname, firstname ASC';
$current_session = api_get_session_id();
$courseCode = Database::escape_string($courseCode);
$courseInfo = api_get_course_info($courseCode);
$courseId = $courseInfo['real_id'];
if (!empty($current_session)) {
$sql = "SELECT user.id as user_id, user.username, lastname, firstname, official_code
@ -1095,8 +1096,8 @@ class GradebookUtils
ON (scru.user_id = user.id)
WHERE
scru.status = ".Session::STUDENT." AND
scru.c_id='$courseId' AND
session_id ='$current_session'
scru.c_id = $courseId AND
session_id = '$current_session'
$order_clause
";
} else {
@ -1106,7 +1107,7 @@ class GradebookUtils
ON (course_rel_user.user_id = user.id)
WHERE
course_rel_user.status = '.STUDENT.' AND
course_rel_user.c_id = "'.$courseId.'" '.
course_rel_user.c_id = '.$courseId.' '.
$order_clause;
}
@ -1143,21 +1144,23 @@ class GradebookUtils
* @param array $links
*
* @return array
* @throws Exception
*/
public static function get_all_users($evals = [], $links = [])
public static function get_all_users($evals = [], $links = []): array
{
$coursecodes = [];
// By default add all user in course
$coursecodes[api_get_course_id()] = '1';
$users = self::get_users_in_course(api_get_course_id());
$courseId = api_get_course_int_id();
// By default, add all user in course
$courseIds[$courseId] = '1';
$users = self::get_users_in_course($courseId);
foreach ($evals as $eval) {
$coursecode = $eval->get_course_code();
/* @var Evaluation $eval */
$loopCourseId = $eval->getCourseId();
// evaluation in course
if (isset($coursecode) && !empty($coursecode)) {
if (!array_key_exists($coursecode, $coursecodes)) {
$coursecodes[$coursecode] = '1';
$users = array_merge($users, self::get_users_in_course($coursecode));
if (!empty($loopCourseId)) {
if (!array_key_exists($loopCourseId, $courseIds)) {
$courseIds[$loopCourseId] = '1';
$users = array_merge($users, self::get_users_in_course($loopCourseId));
}
} else {
// course independent evaluation
@ -1167,7 +1170,7 @@ class GradebookUtils
$sql = 'SELECT user.id as user_id, lastname, firstname, user.official_code
FROM '.$tbl_res.' as res, '.$tbl_user.' as user
WHERE
res.evaluation_id = '.intval($eval->get_id()).' AND
res.evaluation_id = '.$eval->get_id().' AND
res.user_id = user.id
';
$sql .= ' ORDER BY lastname, firstname';
@ -1185,12 +1188,13 @@ class GradebookUtils
foreach ($links as $link) {
// links are always in a course
$coursecode = $link->get_course_code();
if (!array_key_exists($coursecode, $coursecodes)) {
$coursecodes[$coursecode] = '1';
/** @var EvalLink $link */
$loopCourseId = $link->getCourseId();
if (!array_key_exists($loopCourseId, $courseIds)) {
$courseIds[$loopCourseId] = '1';
$users = array_merge(
$users,
self::get_users_in_course($coursecode)
self::get_users_in_course($loopCourseId)
);
}
}
@ -1350,7 +1354,7 @@ class GradebookUtils
}
}
$category = Category::load(null, null, $course['code']);
$category = Category::load(null, null, $course['real_id']);
if (empty($category)) {
continue;
@ -1426,7 +1430,7 @@ class GradebookUtils
$category = Category::load(
null,
null,
$course['code'],
$course['real_id'],
null,
null,
$session['session_id']

@ -204,15 +204,20 @@ abstract class AbstractLink implements GradebookItem
}
/**
* @param string $course_code
*/
public function set_course_code($course_code)
{
$courseInfo = api_get_course_info($course_code);
if ($courseInfo) {
$this->course_code = $course_code;
$this->course_id = $courseInfo['real_id'];
* Set course ID and course code. If ID is empty, set both to null
* @param ?int $courseId
*/
public function setCourseId(?int $courseId = null): AbstractLink {
$courseInfo = api_get_course_info_by_id($courseId);
if (!empty($courseInfo)) {
$this->course_code = $courseInfo['code'];
$this->course_id = $courseId;
} else {
$this->course_code = null;
$this->course_id = null;
}
return $this;
}
/**
@ -282,7 +287,7 @@ abstract class AbstractLink implements GradebookItem
* @param int $type
* @param int $ref_id
* @param int $user_id
* @param string $course_code
* @param ?int $courseId
* @param int $category_id
* @param int $visible
*
@ -293,7 +298,7 @@ abstract class AbstractLink implements GradebookItem
$type = null,
$ref_id = null,
$user_id = null,
$course_code = null,
?int $courseId = null,
$category_id = null,
$visible = null
) {
@ -331,17 +336,14 @@ abstract class AbstractLink implements GradebookItem
$sql .= ' user_id = '.intval($user_id);
$paramcount++;
}
if (isset($course_code)) {
if (!empty($courseId)) {
if (0 != $paramcount) {
$sql .= ' AND';
} else {
$sql .= ' WHERE';
}
$courseInfo = api_get_course_info($course_code);
if ($courseInfo) {
$sql .= " c_id = '".$courseInfo['real_id']."'";
$paramcount++;
}
$sql .= " c_id = $courseId";
$paramcount++;
}
if (isset($category_id)) {
if (0 != $paramcount) {
@ -369,14 +371,16 @@ abstract class AbstractLink implements GradebookItem
/**
* Insert this link into the database.
* @return int 0 on error, or the link's database id
* @throws Exception
*/
public function add()
public function add(): int
{
$this->add_linked_data();
if (!empty($this->type) &&
!empty($this->ref_id) &&
!empty($this->user_id) &&
!empty($this->course_code) &&
!empty($this->course_id) &&
!empty($this->category)
) {
$table = Database::get_main_table(TABLE_MAIN_GRADEBOOK_LINK);
@ -388,7 +392,7 @@ abstract class AbstractLink implements GradebookItem
type = ".$this->type." ";
$result = Database::query($sql);
$row = Database::fetch_array($result, 'ASSOC');
$row = Database::fetch_assoc($result);
if (0 == $row['count']) {
$em = Database::getManager();
@ -405,7 +409,7 @@ abstract class AbstractLink implements GradebookItem
->setUser(api_get_user_entity($this->get_user_id()))
->setRefId($this->get_ref_id())
->setCategory($category)
->setCourse(api_get_course_entity())
->setCourse(api_get_course_entity($this->course_id))
;
$em->persist($link);
$em->flush();
@ -416,7 +420,7 @@ abstract class AbstractLink implements GradebookItem
}
}
return false;
return 0;
}
/**
@ -466,11 +470,11 @@ abstract class AbstractLink implements GradebookItem
$description_log = isset($arreval['description']) ? $arreval['description'] : '';
if (empty($nameLog)) {
if (isset($_POST['name_link'])) {
$name_log = isset($_POST['name_link']) ? $_POST['name_link'] : $arreval['course_code'];
$name_log = isset($_POST['name_link']) ? $_POST['name_link'] : $arreval['course_id'];
} elseif (isset($_POST['link_'.$evaluationId]) && $_POST['link_'.$evaluationId]) {
$name_log = $_POST['link_'.$evaluationId];
} else {
$name_log = $arreval['course_code'];
$name_log = $arreval['course_id'];
}
} else {
$name_log = $nameLog;
@ -513,7 +517,7 @@ abstract class AbstractLink implements GradebookItem
// links can only be moved to categories inside this course
$targets = [];
$level = 0;
$categories = Category::load(null, null, $this->get_course_code(), 0);
$categories = Category::load(null, null, $this->course_id, 0);
foreach ($categories as $cat) {
$targets[] = [$cat->get_id(), $cat->get_name(), $level + 1];
$targets = $this->addTargetSubcategories(
@ -530,12 +534,12 @@ abstract class AbstractLink implements GradebookItem
* Move this link to the given category.
* If this link moves to outside a course, delete it.
*/
public function move_to_cat($cat)
public function move_to_cat(GradebookCategory $cat)
{
if ($this->get_course_code() != $cat->get_course_code()) {
if ($this->getCourseId() != $cat->getCourse()->getId()) {
$this->delete();
} else {
$this->set_category_id($cat->get_id());
$this->set_category_id($cat->getId());
$this->save();
}
}
@ -709,44 +713,45 @@ abstract class AbstractLink implements GradebookItem
}
/**
* @param int $itemId
* @param int $linkType
* @param string $courseCode
* @param int $sessionId
* @param int $itemId
* @param int $linkType
* @param int $courseId
* @param int $sessionId
*
* @return array|bool|\Doctrine\DBAL\Driver\Statement
* @return array
* @throws Exception
*/
public static function getGradebookLinksFromItem($itemId, $linkType, $courseCode, $sessionId = 0)
public static function getGradebookLinksFromItem(
int $itemId,
int $linkType,
int $courseId,
?int $sessionId = 0
): array
{
if (empty($courseCode) || empty($itemId) || empty($linkType)) {
if (empty($courseId) || empty($itemId) || empty($linkType)) {
return false;
}
$table = Database::get_main_table(TABLE_MAIN_GRADEBOOK_LINK);
$tableCategory = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
$itemId = (int) $itemId;
$linkType = (int) $linkType;
$sessionId = (int) $sessionId;
$sessionCondition = api_get_session_condition($sessionId, true, false, 'c.session_id');
$courseCode = Database::escape_string($courseCode);
$sql = "SELECT DISTINCT l.*
FROM $table l INNER JOIN $tableCategory c
ON (c.course_code = l.course_code AND c.id = l.category_id)
ON (c.c_id = l.c_id AND c.id = l.category_id)
WHERE
ref_id = $itemId AND
type = $linkType AND
l.course_code = '$courseCode'
l.c_id = $courseId
$sessionCondition ";
$result = Database::query($sql);
if (Database::num_rows($result)) {
$result = Database::store_result($result);
return $result;
return Database::store_result($result);
}
return false;
return [];
}
/**
@ -769,14 +774,14 @@ abstract class AbstractLink implements GradebookItem
$link->set_type($data['type']);
$link->set_ref_id($data['ref_id']);
$link->set_user_id($data['user_id']);
$link->set_course_code(api_get_course_id());
$link->setCourseId(api_get_course_int_id());
$link->set_category_id($data['category_id']);
$link->set_date($data['created_at']);
$link->set_weight($data['weight']);
$link->set_visible($data['visible']);
$link->set_locked($data['locked']);
//session id should depend of the category --> $data['category_id']
//session id should depend on the category --> $data['category_id']
$session_id = api_get_session_id();
$link->set_session_id($session_id);
@ -800,7 +805,7 @@ abstract class AbstractLink implements GradebookItem
*/
private function addTargetSubcategories($targets, $level, $catid)
{
$subcats = Category::load(null, null, null, $catid);
$subcats = Category::load(null, null, 0, $catid);
foreach ($subcats as $cat) {
$targets[] = [$cat->get_id(), $cat->get_name(), $level + 1];
$targets = $this->addTargetSubcategories(

@ -41,9 +41,9 @@ class AttendanceLink extends AbstractLink
*
* @return array 2-dimensional array - every element contains 2 subelements (id, name)
*/
public function get_all_links()
public function get_all_links(): array
{
if (empty($this->course_code)) {
if (empty($this->getCourseId())) {
return [];
}
$sessionId = $this->get_session_id();

File diff suppressed because it is too large Load Diff

@ -177,7 +177,7 @@ abstract class EvalLink extends AbstractLink
$eval->set_visible(0); // is called
$eval->set_id(-1); // a 'real' id will be set when eval is added to db
$eval->set_user_id($this->get_user_id());
$eval->set_course_code($this->get_course_code());
$eval->setCourseId($this->getCourseId());
$this->evaluation = $eval;
$this->set_ref_id($eval->get_id());
}

@ -11,21 +11,21 @@ use ChamiloSession as Session;
class Evaluation implements GradebookItem
{
public $studentList;
/** @var GradebookEvaluation */
public $entity;
private $id;
private $name;
private $description;
private $user_id;
private $course_code;
/** @var Category */
private $category;
private $created_at;
public GradebookEvaluation $entity;
private int $id;
private string $name;
private string $description;
private int $user_id;
private ?string $course_code;
private Category $category;
private string $created_at;
private $weight;
private $eval_max;
private $visible;
private $courseId;
private $sessionId;
private int $visible;
private ?int $courseId;
private int $sessionId;
protected string $type;
protected int $locked;
/**
* Construct.
@ -184,11 +184,6 @@ class Evaluation implements GradebookItem
return $this->courseId;
}
public function set_course_code($course_code)
{
$this->course_code = $course_code;
}
public function set_date($date)
{
$this->created_at = $date;
@ -222,81 +217,80 @@ class Evaluation implements GradebookItem
/**
* Retrieve evaluations and return them as an array of Evaluation objects.
*
* @param int $id evaluation id
* @param int $user_id user id (evaluation owner)
* @param string $course_code course code
* @param int $category_id parent category
* @param int $visible visible
* @param ?int $id evaluation id
* @param ?int $userId user id (evaluation owner)
* @param ?int $courseId course code
* @param ?int $categoryId parent category
* @param ?int $visible Whether it is visible or not
* @param ?int $locked Whether it is locked or not
*
* @return array
* @throws Exception
*/
public static function load(
$id = null,
$user_id = null,
$course_code = null,
$category_id = null,
$visible = null,
$locked = null
?int $id = 0,
?int $userId = 0,
?int $courseId = 0,
?int $categoryId = 0,
?int $visible = -1,
?int $locked = -1
) {
$table = Database::get_main_table(TABLE_MAIN_GRADEBOOK_EVALUATION);
$sql = 'SELECT * FROM '.$table;
$paramcount = 0;
$parametersCount = 0;
if (isset($id)) {
$sql .= ' WHERE id = '.intval($id);
$paramcount++;
if (!empty($id)) {
$sql .= ' WHERE id = '.$id;
$parametersCount++;
}
if (isset($user_id)) {
if (0 != $paramcount) {
if (!empty($userId)) {
if (0 != $parametersCount) {
$sql .= ' AND';
} else {
$sql .= ' WHERE';
}
$sql .= ' user_id = '.intval($user_id);
$paramcount++;
$sql .= ' user_id = '.$userId;
$parametersCount++;
}
if (isset($course_code) && '-1' != $course_code) {
$courseInfo = api_get_course_info($course_code);
if ($courseInfo) {
if (0 != $paramcount) {
$sql .= ' AND';
} else {
$sql .= ' WHERE';
}
$sql .= " c_id = '".$courseInfo['real_id']."'";
$paramcount++;
if (!empty($courseId) && 0 < $courseId) {
if (0 != $parametersCount) {
$sql .= ' AND';
} else {
$sql .= ' WHERE';
}
$sql .= " c_id = $courseId";
$parametersCount++;
}
if (isset($category_id)) {
if (0 != $paramcount) {
if (!empty($categoryId)) {
if (0 != $parametersCount) {
$sql .= ' AND';
} else {
$sql .= ' WHERE';
}
$sql .= ' category_id = '.intval($category_id);
$paramcount++;
$sql .= ' category_id = '.$categoryId;
$parametersCount++;
}
if (isset($visible)) {
if (0 != $paramcount) {
if (isset($visible) && -1 < $visible) {
if (0 != $parametersCount) {
$sql .= ' AND';
} else {
$sql .= ' WHERE';
}
$sql .= ' visible = '.intval($visible);
$paramcount++;
$sql .= ' visible = '.$visible;
$parametersCount++;
}
if (isset($locked)) {
if (0 != $paramcount) {
if (isset($locked) && -1 < $locked) {
if (0 != $parametersCount) {
$sql .= ' AND';
} else {
$sql .= ' WHERE';
}
$sql .= ' locked = '.intval($locked);
$sql .= ' locked = '.$locked;
}
$result = Database::query($sql);
@ -306,6 +300,7 @@ class Evaluation implements GradebookItem
/**
* Insert this evaluation into the database.
* @throws \Doctrine\ORM\Exception\ORMException
*/
public function add()
{
@ -325,10 +320,7 @@ class Evaluation implements GradebookItem
$category = $em->getRepository(GradebookCategory::class)->find($this->get_category_id());
}
$courseId = 0;
if (!empty($this->course_code)) {
$courseId = api_get_course_int_id($this->course_code);
}
$courseId = $this->getCourseId();
$evaluation = new GradebookEvaluation();
$evaluation
@ -384,6 +376,7 @@ class Evaluation implements GradebookItem
/**
* Update the properties of this evaluation in the database.
* @throws Exception
*/
public function save()
{
@ -396,16 +389,16 @@ class Evaluation implements GradebookItem
} else {
$sql .= 'null';
}
$sql .= ', user_id = '.intval($this->get_user_id())
$sql .= ', user_id = '.$this->get_user_id()
.', c_id = ';
if (isset($this->courseId)) {
$sql .= "'".Database::escape_string($this->getCourseId())."'";
$sql .= $this->getCourseId();
} else {
$sql .= 'null';
}
$sql .= ', category_id = ';
if (!empty($this->category)) {
$sql .= intval($this->get_category_id());
$sql .= $this->get_category_id();
} else {
$sql .= 'null';
}
@ -422,8 +415,9 @@ class Evaluation implements GradebookItem
/**
* Delete this evaluation from the database.
* @throws Exception
*/
public function delete()
public function delete(): void
{
$table = Database::get_main_table(TABLE_MAIN_GRADEBOOK_EVALUATION);
$sql = 'DELETE FROM '.$table.'
@ -435,9 +429,10 @@ class Evaluation implements GradebookItem
* Check if an evaluation name (with the same parent category) already exists.
*
* @param string $name to check (if not given, the name property of this object will be checked)
* @param $parent parent category
* @param $parent parent category
*
* @return bool
* @throws Exception
*/
public function does_name_exist($name, $parent)
{
@ -484,13 +479,14 @@ class Evaluation implements GradebookItem
* The 'max' property should not be changed then.
*
* @return bool
* @throws Exception
*/
public function has_results()
public function has_results(): bool
{
$table = Database::get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
$sql = 'SELECT count(id) AS number
FROM '.$table.'
WHERE evaluation_id = '.intval($this->get_id()).' AND score IS NOT NULL';
WHERE evaluation_id = '.$this->get_id().' AND score IS NOT NULL';
$result = Database::query($sql);
$number = Database::fetch_row($result);
@ -499,8 +495,9 @@ class Evaluation implements GradebookItem
/**
* Delete all results for this evaluation.
* @throws Exception
*/
public function delete_results()
public function delete_results(): void
{
$table = Database::get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
$sql = 'DELETE FROM '.$table.'
@ -510,8 +507,9 @@ class Evaluation implements GradebookItem
/**
* Delete this evaluation and all underlying results.
* @throws Exception
*/
public function delete_with_results()
public function delete_with_results(): void
{
$this->delete_results();
$this->delete();
@ -520,7 +518,7 @@ class Evaluation implements GradebookItem
/**
* Check if the given score is possible for this evaluation.
*/
public function is_valid_score($score)
public function is_valid_score(mixed $score): bool
{
return is_numeric($score) && $score >= 0 && $score <= $this->eval_max;
}
@ -535,7 +533,7 @@ class Evaluation implements GradebookItem
* array (sum of scores, number of scores) otherwise
* or null if no scores available
*/
public function calc_score($studentId = null, $type = null)
public function calc_score($studentId = null, $type = null): array
{
$allowStats = ('true' === api_get_setting('gradebook.allow_gradebook_stats'));
@ -549,7 +547,7 @@ class Evaluation implements GradebookItem
$result = [$bestResult, $weight];
return $result;
break;
//break;
case 'average':
$count = count($evaluation->getUserScoreList());
if (empty($count)) {
@ -562,12 +560,12 @@ class Evaluation implements GradebookItem
$result = [$sumResult / $count, $weight];
return $result;
break;
//break;
case 'ranking':
$ranking = AbstractLink::getCurrentUserRanking($studentId, $evaluation->getUserScoreList());
return $ranking;
break;
//break;
default:
$weight = $evaluation->getMax();
if (!empty($studentId)) {
@ -585,7 +583,7 @@ class Evaluation implements GradebookItem
}
return $result;
break;
//break;
}
}
}
@ -656,10 +654,10 @@ class Evaluation implements GradebookItem
switch ($type) {
case 'best':
return [$bestResult, $weight];
break;
//break;
case 'average':
return [$sumResult / $count, $weight];
break;
//break;
case 'ranking':
$students = [];
/** @var Result $res */
@ -669,10 +667,10 @@ class Evaluation implements GradebookItem
}
return AbstractLink::getCurrentUserRanking($studentId, $students);
break;
//break;
default:
return [$sum, $count];
break;
//break;
}
}
}
@ -684,7 +682,7 @@ class Evaluation implements GradebookItem
*
* @return array 2-dimensional array - every element contains 3 subelements (id, name, level)
*/
public function get_target_categories()
public function get_target_categories(): array
{
// - course independent evaluation
// -> movable to root or other course independent categories
@ -696,8 +694,8 @@ class Evaluation implements GradebookItem
$root = [0, get_lang('Main folder'), $level];
$targets[] = $root;
if (isset($this->courseId) && !empty($this->courseId)) {
$crscats = Category::load(null, null, $this->course_code, 0);
if (!empty($this->courseId)) {
$crscats = Category::load(null, null, $this->courseId, 0);
foreach ($crscats as $cat) {
$targets[] = [$cat->get_id(), $cat->get_name(), $level + 1];
$targets = $this->addTargetSubcategories($targets, $level + 1, $cat->get_id());
@ -722,11 +720,12 @@ class Evaluation implements GradebookItem
* If this evaluation moves from inside a course to outside,
* its course code is also changed.
*/
public function move_to_cat($cat)
public function move_to_cat(GradebookCategory $cat)
{
$this->set_category_id($cat->get_id());
if ($this->get_course_code() != $cat->get_course_code()) {
$this->set_course_code($cat->get_course_code());
$this->set_category_id($cat->getId());
$categoryCourseId = $cat->getCourse()->getId();
if ($this->getCourseId() != $categoryCourseId) {
$this->setCourseId($categoryCourseId);
}
$this->save();
}
@ -735,12 +734,13 @@ class Evaluation implements GradebookItem
* Retrieve evaluations where a student has results for
* and return them as an array of Evaluation objects.
*
* @param int $cat_id parent category (use 'null' to retrieve them in all categories)
* @param int $stud_id student id
* @param int $stud_id student id
* @param ?int $cat_id parent category (use 'null' to retrieve them in all categories)
*
* @return array
* @throws Exception
*/
public static function get_evaluations_with_result_for_student($cat_id = null, $stud_id)
public static function get_evaluations_with_result_for_student(int $stud_id, ?int $cat_id = null): array
{
$tbl_grade_evaluations = Database::get_main_table(TABLE_MAIN_GRADEBOOK_EVALUATION);
$tbl_grade_results = Database::get_main_table(TABLE_MAIN_GRADEBOOK_RESULT);
@ -748,21 +748,20 @@ class Evaluation implements GradebookItem
$sql = 'SELECT * FROM '.$tbl_grade_evaluations.'
WHERE id IN (
SELECT evaluation_id FROM '.$tbl_grade_results.'
WHERE user_id = '.intval($stud_id).' AND score IS NOT NULL
WHERE user_id = '.$stud_id.' AND score IS NOT NULL
)';
if (!api_is_allowed_to_edit()) {
$sql .= ' AND visible = 1';
}
if (isset($cat_id)) {
$sql .= ' AND category_id = '.intval($cat_id);
$sql .= ' AND category_id = '.$cat_id;
} else {
$sql .= ' AND category_id >= 0';
}
$result = Database::query($sql);
$alleval = self::create_evaluation_objects_from_sql_result($result);
return $alleval;
return self::create_evaluation_objects_from_sql_result($result);
}
/**
@ -918,13 +917,21 @@ class Evaluation implements GradebookItem
}
/**
*
* @param int $courseId
*
* @return Evaluation
*/
public function setCourseId($courseId)
public function setCourseId(?int $courseId = null): Evaluation
{
$this->courseId = $courseId;
$courseInfo = api_get_course_info_by_id($courseId);
if (!empty($courseInfo)) {
$this->course_code = $courseInfo['code'];
$this->courseId = $courseId;
} else {
$this->course_code = null;
$this->courseId = null;
}
return $this;
}
@ -951,8 +958,6 @@ class Evaluation implements GradebookItem
$eval->set_description($data['description']);
$eval->set_user_id($data['user_id']);
$eval->setCourseId($data['c_id']);
$courseInfo = api_get_course_info_by_id($data['c_id']);
$eval->set_course_code($courseInfo['code']);
$eval->set_category_id($data['category_id']);
$eval->set_date(api_get_local_time($data['created_at']));
$eval->set_weight($data['weight']);
@ -984,7 +989,7 @@ class Evaluation implements GradebookItem
*/
private function addTargetSubcategories($targets, $level, $categoryId)
{
$subcats = Category::load(null, null, null, $categoryId);
$subcats = Category::load(null, null, 0, $categoryId);
foreach ($subcats as $cat) {
$targets[] = [$cat->get_id(), $cat->get_name(), $level + 1];
$targets = $this->addTargetSubcategories(

@ -42,7 +42,7 @@ class ExerciseLink extends AbstractLink
{
$exerciseTable = $this->get_exercise_table();
$lpItemTable = Database::get_course_table(TABLE_LP_ITEM);
if (empty($this->course_code)) {
if (empty($this->getCourseId())) {
return [];
}
$sessionId = $this->get_session_id();
@ -93,12 +93,13 @@ class ExerciseLink extends AbstractLink
/**
* Has anyone done this exercise yet ?
* @throws Exception
*/
public function has_results()
{
$tbl_stats = Database::get_main_table(TABLE_STATISTIC_TRACK_E_EXERCISES);
$sessionId = $this->get_session_id();
$course_id = api_get_course_int_id($this->get_course_code());
$course_id = ($this->getCourseId());
$sessionCondition = api_get_session_condition($sessionId);
$sql = "SELECT count(exe_id) AS number

@ -46,7 +46,7 @@ class ForumThreadLink extends AbstractLink
*/
public function get_all_links()
{
if (empty($this->course_code)) {
if (empty($this->getCourseId())) {
return [];
}

@ -30,5 +30,5 @@ interface GradebookItem
public function setStudentList($list);
public function calc_score($studentId = null, $type = null);
public function calc_score(?int $studentId = null, ?string $type = null);
}

@ -32,7 +32,7 @@ class LearnpathLink extends AbstractLink
*/
public function get_all_links()
{
if (empty($this->course_code)) {
if (empty($this->getCourseId())) {
return [];
}

@ -16,7 +16,7 @@ class LinkFactory
* @param int $type link type
* @param int $ref_id reference id
* @param int $user_id user id (link owner)
* @param string $course_code course code
* @param int $courseId course ID
* @param int $category_id parent category
* @param int $visible visible
*
@ -27,7 +27,7 @@ class LinkFactory
$type = null,
$ref_id = null,
$user_id = null,
$course_code = null,
$courseId = null,
$category_id = null,
$visible = null
) {
@ -36,7 +36,7 @@ class LinkFactory
$type,
$ref_id,
$user_id,
$course_code,
$courseId,
$category_id,
$visible
);

@ -40,7 +40,7 @@ class StudentPublicationLink extends AbstractLink
*/
public function get_all_links()
{
if (empty($this->course_code)) {
if (empty($this->course_id)) {
return [];
}

@ -79,8 +79,8 @@ class SurveyLink extends AbstractLink
*/
public function get_all_links()
{
if (empty($this->course_code)) {
exit('Error in get_all_links() : course code not set');
if (empty($this->course_id)) {
exit('Error in get_all_links() : course ID not set');
}
$sessionId = $this->get_session_id();
$course_id = $this->getCourseId();

@ -117,6 +117,11 @@ class CatForm extends FormValidator
'course_code',
$this->category_object->get_course_code()
);
$this->addElement(
'hidden',
'course_id',
$this->category_object->getCourseId()
);
}
$this->build_basic_form();
}
@ -134,11 +139,11 @@ class CatForm extends FormValidator
$test_cats = Category::load(
null,
null,
$course_code,
api_get_course_int_id(),
null,
null,
$session_id,
false
null
);
$links = null;
@ -182,6 +187,11 @@ class CatForm extends FormValidator
'course_code',
$this->category_object->get_course_code()
);
$this->addElement(
'hidden',
'course_id',
$this->category_object->getCourseId()
);
$this->build_basic_form();
}
@ -352,16 +362,15 @@ class CatForm extends FormValidator
);
// Freeze or not
$course_code = api_get_course_id();
$session_id = api_get_session_id();
$test_cats = Category::load(
null,
null,
$course_code,
api_get_course_int_id(),
null,
null,
$session_id,
false
null
);
$links = null;
if (!empty($test_cats[0])) {

@ -25,7 +25,7 @@ class DisplayGradebook
Display::getMdiIcon(ActionIcon::BACK, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Assessment home'))
.'</a>';
if ('view_result' === $page) {
if ((null != $evalobj->get_course_code()) && !$evalobj->has_results()) {
if (!empty($evalobj->getCourseId()) && !$evalobj->has_results()) {
$links[] = '<a href="gradebook_add_result.php?'.api_get_cidreq().'&selectcat='.$selectcat.'&selecteval='.$evalobj->get_id().'">
'.Display::getMdiIcon(ActionIcon::GRADE, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Grade learners')).'</a>';
}
@ -90,10 +90,10 @@ class DisplayGradebook
$description = get_lang('Description').' :<b> '.$evalobj->get_description().'</b><br>';
}
if (null == $evalobj->get_course_code()) {
if (!empty($evalobj->getCourseId())) {
$course = get_lang('Independent from course');
} else {
$course = CourseManager::getCourseNameFromCode($evalobj->get_course_code());
$course = api_get_course_info_by_id($evalobj->getCourseId())['title'];
}
$evalinfo = '<h2>'.$evalobj->get_name().'</h2><hr>';
@ -264,7 +264,7 @@ class DisplayGradebook
$categories = Category::load(
null,
null,
null,
0,
$catobj->get_id(),
null,
$sessionId
@ -371,20 +371,19 @@ class DisplayGradebook
$isCoach = api_is_coach(api_get_session_id(), api_get_course_int_id());
$accessToRead = api_is_allowed_to_edit(null, true) || $isCoach;
$accessToEdit = api_is_allowed_to_edit(null, true);
$courseCode = api_get_course_id();
if ($accessToRead) {
$my_category = $catobj->showAllCategoryInfo($catobj->get_id());
if ('0' != $selectcat && $accessToEdit) {
if ('' == $my_api_cidreq) {
$my_api_cidreq = 'cidReq='.$my_category['course_code'];
$my_api_cidreq = 'cid='.$my_category['c_id'];
}
if ($show_add_link && empty($messageResource)) {
$actionsLeft .= '<a href="gradebook_add_eval.php?'.$my_api_cidreq.'&selectcat='.$catobj->get_id().'" >'.
Display::getMdiIcon('table-plus', 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Add classroom activity')).'</a>';
$cats = Category::load($selectcat);
if (null != $cats[0]->get_course_code() && empty($messageResource)) {
if (!empty($cats[0]->getCourseId()) && empty($messageResource)) {
$actionsLeft .= '<a href="gradebook_add_link.php?'.$my_api_cidreq.'&selectcat='.$catobj->get_id().'">'.
Display::getMdiIcon('link-plus', 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Add online activity')).'</a>';
} else {
@ -427,7 +426,7 @@ class DisplayGradebook
// Right icons
if ($accessToEdit) {
$actionsRight = '<a href="gradebook_edit_cat.php?editcat='.$catobj->get_id(
).'&cidReq='.$catobj->get_course_code().'&id_session='.$catobj->get_session_id().'">'.
).'&cid='.$catobj->getCourseId().'&id_session='.$catobj->get_session_id().'">'.
Display::getMdiIcon(ActionIcon::EDIT, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Edit')).'</a>';
if ('true' == api_get_plugin_setting('customcertificate', 'enable_plugin_customcertificate') &&
@ -505,7 +504,7 @@ class DisplayGradebook
}
$min_certification = get_lang('Minimum certification score').' : '.$min_certification;
$edit_icon = '<a href="gradebook_edit_cat.php?editcat='.$catobj->get_id().'&cidReq='.$catobj->get_course_code().'&id_session='.$catobj->get_session_id().'">'.
$edit_icon = '<a href="gradebook_edit_cat.php?editcat='.$catobj->get_id().'&cid='.$catobj->getCourseId().'&id_session='.$catobj->get_session_id().'">'.
Display::getMdiIcon(ActionIcon::EDIT, 'ch-tool-icon', null, ICON_SIZE_MEDIUM, get_lang('Edit')).'</a>';
$msg = $weight.' - '.$min_certification.$edit_icon;

@ -302,8 +302,9 @@ class EvalForm extends FormValidator
/**
* Builds a result form containing inputs for all students with a given course_code.
* @throws Exception
*/
protected function build_result_add_form()
protected function build_result_add_form(): void
{
$renderer = &$this->defaultRenderer();
$renderer->setFormTemplate(
@ -316,7 +317,7 @@ class EvalForm extends FormValidator
</form>'
);
$users = GradebookUtils::get_users_in_course($this->evaluation_object->get_course_code());
$users = GradebookUtils::get_users_in_course($this->evaluation_object->getCourseId());
$nr_users = 0;
//extra field for check on maxvalue
$this->addElement('hidden', 'maxvalue', $this->evaluation_object->get_max());
@ -466,11 +467,12 @@ class EvalForm extends FormValidator
'hid_user_id' => $this->evaluation_object->get_user_id(),
'hid_category_id' => $this->evaluation_object->get_category_id(),
'hid_course_code' => $this->evaluation_object->get_course_code(),
'hid_course_id' => $this->evaluation_object->getCourseId(),
'created_at' => api_get_utc_datetime(),
]
);
$this->build_basic_form();
if (null == $this->evaluation_object->get_course_code()) {
if (null == $this->evaluation_object->getCourseId()) {
$this->addElement('checkbox', 'adduser', null, get_lang('Add users to evaluation'));
} else {
$this->addElement('checkbox', 'addresult', null, get_lang('Grade learners'));
@ -500,6 +502,7 @@ class EvalForm extends FormValidator
'description' => $this->evaluation_object->get_description(),
'hid_user_id' => $this->evaluation_object->get_user_id(),
'hid_course_code' => $this->evaluation_object->get_course_code(),
'hid_course_id' => $this->evaluation_object->getCourseId(),
'hid_category_id' => $this->evaluation_object->get_category_id(),
'created_at' => api_get_utc_datetime($this->evaluation_object->get_date()),
'weight' => $weight,
@ -542,15 +545,14 @@ class EvalForm extends FormValidator
$cat_id = $this->evaluation_object->get_category_id();
$session_id = api_get_session_id();
$course_code = api_get_course_id();
$all_categories = Category:: load(
null,
null,
$course_code,
api_get_course_int_id(),
null,
null,
$session_id,
false
null
);
if (1 == count($all_categories)) {
@ -566,7 +568,7 @@ class EvalForm extends FormValidator
$default_weight = 0;
if (!empty($all_categories)) {
foreach ($all_categories as $my_cat) {
if ($my_cat->get_course_code() == api_get_course_id()) {
if ($my_cat->getCourseId() == api_get_course_int_id()) {
$grade_model_id = $my_cat->get_grade_model_id();
if (empty($grade_model_id)) {
if (0 == $my_cat->get_parent_id()) {

@ -328,6 +328,7 @@ class GradebookTable extends SortableTable
// Status of user in course.
$user_id = $this->userId;
$course_code = api_get_course_id();
$courseId = api_get_course_int_id();
$session_id = api_get_session_id();
$statusToFilter = 0;
@ -336,8 +337,8 @@ class GradebookTable extends SortableTable
}
if (empty($this->studentList) && $this->loadStats) {
$studentList = CourseManager::get_user_list_from_course_code(
$course_code,
$studentList = CourseManager::getUserListFromCourseId(
$courseId,
$session_id,
null,
null,
@ -362,7 +363,7 @@ class GradebookTable extends SortableTable
$main_cat = Category::load(
null,
null,
$course_code,
api_get_course_int_id(),
null,
null,
$session_id,
@ -565,7 +566,7 @@ class GradebookTable extends SortableTable
$cats = Category::load(
$parent_id,
null,
null,
0,
null,
null,
null
@ -574,7 +575,7 @@ class GradebookTable extends SortableTable
if (isset($cats[0])) {
/** @var Category $subCategory */
$subCategory = $cats[0];
$allcat = $subCategory->get_subcategories($this->userId, $course_code, $session_id);
$allcat = $subCategory->get_subcategories($this->userId, $courseId, $session_id);
$alleval = $subCategory->get_evaluations($this->userId);
$alllink = $subCategory->get_links($this->userId);
@ -825,7 +826,7 @@ class GradebookTable extends SortableTable
$score = $main_cat[0]->calc_score(
$student['user_id'],
null,
$course_code,
$courseId,
$session_id
);
if (!empty($score[0])) {
@ -948,6 +949,8 @@ class GradebookTable extends SortableTable
$category = Category::load($id_cat);
$weight_category = (int) $this->build_weight($category[0]);
$course_code = $this->build_course_code($category[0]);
$localCourseInfo = api_get_course_info($course_code);
$localCourseId = $localCourseInfo['real_id'];
$weight_total_links = round($weight_total_links);
if ($weight_total_links > $weight_category ||
@ -956,7 +959,7 @@ class GradebookTable extends SortableTable
) {
$warning_message = sprintf(get_lang('The sum of all weights of activities must be %s'), $weight_category);
$modify_icons =
'<a href="gradebook_edit_cat.php?editcat='.$id_cat.'&cidReq='.$course_code.'&id_session='.api_get_session_id().'">'.
'<a href="gradebook_edit_cat.php?editcat='.$id_cat.'&cid='.$localCourseId.'&sid='.api_get_session_id().'">'.
Display::getMdiIcon(ActionIcon::EDIT, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Edit'), ['alt' => $warning_message]);
$warning_message .= $modify_icons;
echo Display::return_message($warning_message, 'warning', false);
@ -964,7 +967,7 @@ class GradebookTable extends SortableTable
$content_html = DocumentManager::replace_user_info_into_html(
api_get_user_id(),
api_get_course_info($course_code),
$localCourseInfo,
api_get_session_id()
);
@ -974,8 +977,7 @@ class GradebookTable extends SortableTable
if (empty($new_content[0])) {
// Set default certificate
$courseData = api_get_course_info($course_code);
DocumentManager::generateDefaultCertificate($courseData);
DocumentManager::generateDefaultCertificate($localCourseInfo);
}
}

@ -33,7 +33,8 @@ class LinkAddEditForm extends FormValidator
$link = $link_object;
} elseif (isset($link_type) && isset($category_object)) {
$link = LinkFactory:: create($link_type);
$link->set_course_code(api_get_course_id());
// Set course code *and* course id
$link->setCourseId(api_get_course_int_id());
$link->set_session_id(api_get_session_id());
$link->set_category_id($category_object[0]->get_id());
} else {
@ -84,7 +85,7 @@ class LinkAddEditForm extends FormValidator
$default_weight = 0;
if (!empty($category_object)) {
foreach ($category_object as $my_cat) {
if ($my_cat->get_course_code() == api_get_course_id()) {
if ($my_cat->getCourseId() == api_get_course_int_id()) {
$grade_model_id = $my_cat->get_grade_model_id();
if (empty($grade_model_id)) {
if (0 == $my_cat->get_parent_id()) {

@ -94,19 +94,18 @@ class LinkForm extends FormValidator
);
$select->addOption('['.get_lang('Choose type of activity to assess').']', 0);
$courseCode = $this->category_object->get_course_code();
$courseId = $this->category_object->getCourseId();
$linkTypes = LinkFactory::get_all_types();
foreach ($linkTypes as $linkType) {
// The hot potatoe link will be added "inside" the exercise option.
// The hotpotatoes link will be added "inside" the exercise option.
if (LINK_HOTPOTATOES == $linkType) {
continue;
}
$link = $this->createLink($linkType, $courseCode);
// disable this element if the link works with a dropdownlist
$link = $this->createLink($linkType, $courseId);
// disable this element if the link works with a drop-down list
$link->set_session_id(api_get_session_id());
// and if there are no links left
// and if there are no links left
if (!$link->needs_name_and_description() && '0' == count($link->get_all_links())) {
$select->addOption($link->get_type_name(), $linkType, 'disabled');
} else {
@ -115,7 +114,7 @@ class LinkForm extends FormValidator
if (LINK_EXERCISE == $link->get_type()) {
// Adding hot potatoes
/*$linkHot = $this->createLink(LINK_HOTPOTATOES, $courseCode);
/*$linkHot = $this->createLink(LINK_HOTPOTATOES, $courseId);
$linkHot->setHp(true);
if ($linkHot->get_all_links(true)) {
$select->addOption(
@ -138,18 +137,19 @@ class LinkForm extends FormValidator
}
/**
* @param int $link
* @param string|null $courseCode
* @param int $link
* @param ?int $courseId
*
* @return AttendanceLink|DropboxLink|ExerciseLink|ForumThreadLink|LearnpathLink|StudentPublicationLink|SurveyLink|null
*/
private function createLink($link, $courseCode)
private function createLink(int $link, ?int $courseId = null)
{
$link = LinkFactory::create($link);
if (!empty($courseCode)) {
$link->set_course_code($courseCode);
if (!empty($courseId)) {
$link->setCourseId($courseId);
} elseif (!empty($_GET['course_code'])) {
$link->set_course_code(Database::escape_string($_GET['course_code'], null, false));
$courseInfo = api_get_course_info($_GET['course_code']);
$link->setCourseId($courseInfo['real_id']);
}
return $link;

@ -21,18 +21,18 @@ class ResultTable extends SortableTable
/**
* ResultTable constructor.
*
* @param string $evaluation
* @param array $results
* @param string|null $iscourse
* @param array $addparams
* @param bool $forprint
* @param Evaluation $evaluation
* @param ?array $results
* @param ?string $iscourse
* @param ?array $addparams
* @param ?bool $forprint
*/
public function __construct(
$evaluation,
$results = [],
$iscourse,
$addparams = [],
$forprint = false
Evaluation $evaluation,
?array $results = [],
?string $iscourse = '0',
?array $addparams = [],
?bool $forprint = false
) {
parent:: __construct(
'resultlist',
@ -253,7 +253,7 @@ class ResultTable extends SortableTable
Display::getMdiIcon(ActionIcon::DELETE, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Delete')).'</a>';
}
if (null == $this->evaluation->get_course_code()) {
if (null == $this->evaluation->getCourseId()) {
$editColumn .= '&nbsp;<a href="'.api_get_self().'?resultdelete='.$item['result_id'].'&selecteval='.$this->evaluation->get_id().'" onclick="return confirmationuser();">';
$editColumn .= Display::getMdiIcon(ActionIcon::DELETE, 'ch-tool-icon', null, ICON_SIZE_SMALL, get_lang('Delete'));
$editColumn .= '</a>';

@ -26,18 +26,18 @@ class FlatViewDataGenerator
private $mainCourseCategory;
/**
* @param array $users
* @param array $evals
* @param array $links
* @param array $params
* @param Category|null $mainCourseCategory
* @param ?array $users
* @param ?array $evals
* @param ?array $links
* @param ?array $params
* @param ?Category $mainCourseCategory
*/
public function __construct(
$users = [],
$evals = [],
$links = [],
$params = [],
$mainCourseCategory = null
?array $users = [],
?array $evals = [],
?array $links = [],
?array $params = [],
?Category $mainCourseCategory = null
) {
$this->users = isset($users) ? $users : [];
$this->evals = isset($evals) ? $evals : [];
@ -122,7 +122,7 @@ class FlatViewDataGenerator
) {
$main_weight = $this->category->get_weight();
} else {
$main_cat = Category::load($parent_id, null, null);
$main_cat = Category::load($parent_id, null, 0);
$main_weight = $main_cat[0]->get_weight();
}
@ -136,12 +136,11 @@ class FlatViewDataGenerator
}
// No category was added
$course_code = api_get_course_id();
$session_id = api_get_session_id();
$model = ExerciseLib::getCourseScoreModel();
$allcat = $this->category->get_subcategories(
null,
$course_code,
api_get_course_int_id(),
$session_id,
'ORDER BY id'
);
@ -348,7 +347,7 @@ class FlatViewDataGenerator
$categories = Category::load(
null,
null,
null,
0,
$this->category->get_id()
);
if (!empty($categories)) {
@ -367,7 +366,7 @@ class FlatViewDataGenerator
) {
$main_weight = $this->category->get_weight();
} else {
$main_cat = Category::load($parent_id, null, null);
$main_cat = Category::load($parent_id, null, 0);
$main_weight = $main_cat[0]->get_weight();
}
@ -376,7 +375,6 @@ class FlatViewDataGenerator
$export_to_pdf = true;
}
$course_code = api_get_course_id();
$session_id = api_get_session_id();
$model = ExerciseLib::getCourseScoreModel();
@ -438,7 +436,7 @@ class FlatViewDataGenerator
$allcat = $this->category->get_subcategories(
null,
$course_code,
api_get_course_int_id(),
$session_id,
'ORDER BY id'
);
@ -897,7 +895,6 @@ class FlatViewDataGenerator
*/
public function get_data_to_graph2($displayWarning = true)
{
$course_code = api_get_course_id();
$session_id = api_get_session_id();
// do some checks on users/items counts, redefine if invalid values
$usertable = [];
@ -920,7 +917,7 @@ class FlatViewDataGenerator
$item_value_total = 0;
$allcat = $this->category->get_subcategories(
null,
$course_code,
api_get_course_int_id(),
$session_id,
'ORDER BY id'
);

@ -565,7 +565,7 @@ class GradebookDataGenerator
$score = $item->calc_score(
null,
'best',
api_get_course_id(),
api_get_course_int_id(),
api_get_session_id()
);

@ -41,10 +41,11 @@ class UserDataGenerator
{
$this->userid = $userid;
$result = [];
/** @var Evaluation $eval */
foreach ($evals as $eval) {
$toadd = true;
$coursecode = $eval->get_course_code();
if (isset($coursecode)) {
$courseId = $eval->getCourseId();
if (!empty($courseId)) {
$result = Result::load(null, $userid, $eval->get_id());
if (0 == count($result)) {
$toadd = false;
@ -305,7 +306,7 @@ class UserDataGenerator
/**
* @param $item
*
* @return mixed
* @return string
*/
private function build_course_name($item)
{
@ -388,19 +389,19 @@ class UserDataGenerator
}
/**
* @param string $coursecode
* @param string $courseCode
*
* @return mixed
* @return string
*/
private function get_course_name_from_code_cached($coursecode)
private function get_course_name_from_code_cached(string $courseCode): string
{
if (isset($this->coursecodecache) &&
isset($this->coursecodecache[$coursecode])
isset($this->coursecodecache[$courseCode])
) {
return $this->coursecodecache[$coursecode];
return $this->coursecodecache[$courseCode];
} else {
$name = CourseManager::getCourseNameFromCode($coursecode);
$this->coursecodecache[$coursecode] = $name;
$name = CourseManager::getCourseNameFromCode($courseCode);
$this->coursecodecache[$courseCode] = $name;
return $name;
}
@ -409,7 +410,7 @@ class UserDataGenerator
/**
* @param int $category_id
*/
private function get_category_cached($category_id)
private function get_category_cached(int $category_id)
{
if (isset($this->categorycache) &&
isset($this->categorycache[$category_id])

@ -27,7 +27,7 @@ switch ($action) {
case 'get_gradebook_weight':
if (api_is_allowed_to_edit(null, true)) {
$cat_id = $_GET['cat_id'];
$cat = Category :: load($cat_id);
$cat = Category::load($cat_id);
if ($cat && isset($cat[0])) {
echo $cat[0]->get_weight();
} else {

@ -1829,11 +1829,11 @@ function api_get_course_id()
/**
* Returns the current course id (integer).
*
* @param string $code Optional course code
* @param ?string $code Optional course code
*
* @return int
*/
function api_get_course_int_id($code = null)
function api_get_course_int_id(?string $code = null): int
{
if (!empty($code)) {
$code = Database::escape_string($code);
@ -1847,7 +1847,7 @@ function api_get_course_int_id($code = null)
if (is_array($row) && isset($row['id'])) {
return $row['id'];
} else {
return false;
return 0;
}
}
@ -2176,9 +2176,8 @@ function api_get_url_entity($id = 0): ?AccessUrl
*
* @return array The course info as an array formatted by api_format_course_array, including category.title
*/
function api_get_course_info_by_id($id = 0)
function api_get_course_info_by_id(?int $id = 0)
{
$id = (int) $id;
if (empty($id)) {
$course = Session::read('_course', []);
@ -7327,7 +7326,7 @@ function api_protect_session_admin_list_users()
/**
* @return bool
*/
function api_is_student_view_active()
function api_is_student_view_active(): bool
{
$studentView = Session::read('studentview');

@ -363,7 +363,7 @@ class Attendance
if ($link_to_gradebook && !empty($this->category_id)) {
$description = '';
$linkInfo = GradebookUtils::isResourceInCourseGradebook(
$courseCode,
$course->getId(),
7,
$lastId,
$sessionId
@ -372,7 +372,7 @@ class Attendance
if (!$linkInfo) {
GradebookUtils::add_resource_to_course_gradebook(
$this->category_id,
$courseCode,
$courseInfo['real_id'],
7,
$lastId,
$titleGradebook,
@ -443,7 +443,7 @@ class Attendance
if ($link_to_gradebook && !empty($this->category_id)) {
$description = '';
$link_info = GradebookUtils::isResourceInCourseGradebook(
$course_code,
$_course['real_id'],
7,
$attendanceId,
$session_id
@ -451,7 +451,7 @@ class Attendance
if (!$link_info) {
GradebookUtils::add_resource_to_course_gradebook(
$this->category_id,
$course_code,
$_course['real_id'],
7,
$attendanceId,
$title_gradebook,
@ -2413,7 +2413,7 @@ class Attendance
$default['skills'] = array_keys($skillList);
$link_info = GradebookUtils::isResourceInCourseGradebook(
api_get_course_id(),
api_get_course_int_id(),
7,
$attendance->getIid(),
$sessionId

@ -1214,28 +1214,28 @@ class CourseManager
}
/**
* Return user info array of all users registered in a course
* This only returns the users that are registered in this actual course, not linked courses.
*
* @param string|null $courseCode Cours code is allowed to be null if we want all users
* @param int $sessionId
* @param string $limit
* @param string $order_by the field to order the users by.
* Get user info array of all users registered in a course, by course code.
* Wrapper: This method calls getUserListFromCourseId() in the background.
* @param string|null $courseCode Cours code is allowed to be null if we want all users
* @param int $sessionId
* @param string $limit
* @param string $order_by the field to order the users by.
* Valid values are 'lastname', 'firstname', 'username', 'email',
* 'official_code' OR a part of a SQL statement that starts with ORDER BY ...
* @param int|null $filter_by_status if using the session_id: 0 or 2 (student, coach),
* @param int|null $filter_by_status if using the session_id: 0 or 2 (student, coach),
* if using session_id = 0 STUDENT or COURSEMANAGER
* @param bool|null $return_count
* @param bool $add_reports
* @param bool $resumed_report
* @param array $extra_field
* @param array $courseCodeList
* @param array $userIdList
* @param bool $filterByActive
* @param array $sessionIdList
* @param string $searchByKeyword
* @param bool|null $return_count
* @param bool $add_reports
* @param bool $resumed_report
* @param array $extra_field
* @param array $courseCodeList
* @param array $userIdList
* @param bool $filterByActive
* @param array $sessionIdList
* @param string $searchByKeyword
*
* @return array|int
* @throws Exception
*/
public static function get_user_list_from_course_code(
$courseCode,
@ -1253,22 +1253,79 @@ class CourseManager
$sessionIdList = [],
$searchByKeyword = '',
$options = []
)
{
$courseId = api_get_course_int_id($courseCode);
return self::getUserListFromCourseId(
$courseId,
$sessionId,
$limit,
$order_by,
$filter_by_status,
$return_count,
$add_reports,
$resumed_report,
$extra_field,
$courseCodeList,
$userIdList,
$filterByActive,
$sessionIdList,
$searchByKeyword,
$options
);
}
/**
* Return user info array of all users registered in a course (by course ID and session ID).
* This only returns the users that are registered in this actual course, not linked courses.
*
* @param ?int $courseCode Course ID is allowed to be null if we want all users
* @param ?int $sessionId
* @param ?string $limit
* @param ?string $order_by the field to order the users by.
* Valid values are 'lastname', 'firstname', 'username', 'email',
* 'official_code' OR a part of a SQL statement that starts with ORDER BY ...
* @param ?int $filter_by_status if using the session_id: 0 or 2 (student, coach),
* if using session_id = 0 STUDENT or COURSEMANAGER
* @param ?bool $return_count
* @param ?bool $add_reports
* @param ?bool $resumed_report
* @param ?array $extra_field
* @param ?array $courseCodeList
* @param ?array $userIdList
* @param ?bool $filterByActive
* @param ?array $sessionIdList
* @param ?string $searchByKeyword
* @param ?array
*
* @return array|int
* @throws Exception
*/
public static function getUserListFromCourseId(
?int $courseId = null,
?int $sessionId = 0,
?string $limit = null,
?string $order_by = null,
?int $filter_by_status = null,
?bool $return_count = null,
?bool $add_reports = false,
?bool $resumed_report = false,
?array $extra_field = [],
?array $courseIdsList = [],
?array $userIdList = [],
?bool $filterByActive = null,
?array $sessionIdList = [],
?string $searchByKeyword = '',
?array $options = []
) {
$course_table = Database::get_main_table(TABLE_MAIN_COURSE);
$sessionTable = Database::get_main_table(TABLE_MAIN_SESSION);
$sessionId = (int) $sessionId;
$courseCode = Database::escape_string($courseCode);
$courseInfo = api_get_course_info($courseCode);
$courseId = 0;
if (!empty($courseInfo)) {
$courseId = $courseInfo['real_id'];
}
$session = null;
if (!empty($sessionId)) {
$session = api_get_session_entity($sessionId);
}
$course = api_get_course_entity($courseId);
$where = [];
if (empty($order_by)) {
$order_by = 'user.lastname, user.firstname';
@ -1288,7 +1345,6 @@ class CourseManager
}
$filter_by_status_condition = null;
$sqlInjectWhere = '';
$whereExtraField = '';
$injectExtraFields = ' , ';
$sqlInjectJoins = '';
@ -1358,7 +1414,7 @@ class CourseManager
// 2 = coach
// 0 = student
if (isset($filter_by_status)) {
$filter_by_status = (int) $filter_by_status;
$filter_by_status = $filter_by_status;
$filter_by_status_condition = " session_course_user.status = $filter_by_status AND ";
}
} else {
@ -1402,8 +1458,8 @@ class CourseManager
}
$where[] = ' course_rel_user.c_id IS NOT NULL ';
if (isset($filter_by_status) && is_numeric($filter_by_status)) {
$filter_by_status = (int) $filter_by_status;
if (isset($filter_by_status)) {
$filter_by_status = $filter_by_status;
$filter_by_status_condition = " course_rel_user.status = $filter_by_status AND ";
}
}
@ -1443,11 +1499,11 @@ class CourseManager
$sql .= ' AND field_id IS NOT NULL GROUP BY value ';
}
if (!empty($courseCodeList)) {
$courseCodeList = array_map(['Database', 'escape_string'], $courseCodeList);
$courseCodeList = implode('","', $courseCodeList);
if (!empty($courseIdsList)) {
$courseIdsList = array_map('intval', $courseIdsList);
$courseIdsList = implode('","', $courseIdsList);
if (empty($sessionIdList)) {
$sql .= ' AND course.code IN ("'.$courseCodeList.'")';
$sql .= ' AND course.id IN ("'.$courseIdsList.'")';
}
}
@ -1510,7 +1566,7 @@ class CourseManager
$user_info['status_session'] = $user['status_session'];
}
$sessionId = isset($user['session_id']) ? $user['session_id'] : 0;
$sessionId = $user['session_id'] ?? 0;
$sessionName = isset($user['session_name']) ? ' ('.$user['session_name'].') ' : '';
if ($add_reports) {
@ -1567,10 +1623,10 @@ class CourseManager
$users[$row_key]['count_users_registered'] = $registered_users_with_extra_field;
$users[$row_key]['average_hours_per_user'] = $users[$row_key]['training_hours'] / $users[$row_key]['count_users'];
$category = Category:: load(
$category = Category::load(
null,
null,
$user['code'],
$user['c_id'],
null,
null,
$sessionId
@ -1611,7 +1667,7 @@ class CourseManager
$category = Category:: load(
null,
null,
$user['code'],
$user['c_id'],
null,
null,
$sessionId
@ -3486,12 +3542,13 @@ class CourseManager
if ($number_of_courses > 0) {
while ($course = Database::fetch_array($rs_special_course)) {
$course_info = api_get_course_info($course['code']);
$courseId = $course_info['real_id'];
$courseId = $course['id'];
if (Course::HIDDEN == $course_info['visibility']) {
continue;
}
$params = [];
$params['c_id'] = $courseId;
//Param (course_code) needed to get the student info in page "My courses"
$params['course_code'] = $course['code'];
$params['code'] = $course['code'];
@ -6210,20 +6267,19 @@ class CourseManager
/**
* Helper function to create a default gradebook (if necessary) upon course creation.
*
* @param int $modelId The gradebook model ID
* @param string $courseCode Course code
* @param int $modelId The gradebook model ID
* @param int $courseId Course ID
* @return void
* @throws Exception
*/
public static function createDefaultGradebook($modelId, $courseCode)
public static function createDefaultGradebook(int $modelId, int $courseId): void
{
if ('true' === api_get_setting('gradebook_enable_grade_model')) {
//Create gradebook_category for the new course and add
// a gradebook model for the course
if (isset($modelId) &&
!empty($modelId) &&
'-1' != $modelId
) {
if ('-1' != $modelId) {
GradebookUtils::create_default_course_gradebook(
$courseCode,
$courseId,
$modelId
);
}
@ -6627,13 +6683,14 @@ class CourseManager
/**
* Fill course with all necessary items.
*
* @param array $params Parameters from the course creation form
* @param int $authorId
* @param Course $course
* @param array $params Parameters from the course creation form
* @param ?int $authorId
* @throws Exception
*/
private static function fillCourse(Course $course, $params, $authorId = 0)
private static function fillCourse(Course $course, array $params, ?int $authorId = 0)
{
$authorId = empty($authorId) ? api_get_user_id() : (int) $authorId;
$authorId = empty($authorId) ? api_get_user_id() : $authorId;
AddCourse::fillCourse(
$course,
@ -6644,7 +6701,7 @@ class CourseManager
if (isset($params['gradebook_model_id'])) {
self::createDefaultGradebook(
$params['gradebook_model_id'],
$course->getCode()
$course->getId()
);
}

@ -2743,7 +2743,7 @@ class SessionManager
foreach ($courseList as $courseId) {
$courseInfo = api_get_course_info_by_id($courseId);
// If course doesn't exists continue!
// If course doesn't exist continue!
if (empty($courseInfo)) {
continue;
}
@ -2760,16 +2760,16 @@ class SessionManager
// Copy gradebook categories and links (from base course)
// to the new course session
if ($copyEvaluation) {
$cats = Category::load(null, null, $courseInfo['code']);
$cats = Category::load(null, null, $courseId);
if (!empty($cats)) {
$sessionCategory = Category:: load(
null,
null,
$courseInfo['code'],
$courseId,
null,
null,
$sessionId,
false
null
);
// @todo remove commented code
@ -2805,7 +2805,7 @@ class SessionManager
$links = $cat->get_links(
null,
false,
$courseInfo['code'],
$courseId,
0
);

@ -960,7 +960,7 @@ class IndexManager
$category = Category::load(
null,
null,
$specialCourseInfo['course_code'],
$specialCourseInfo['c_id'],
null,
null,
null
@ -987,6 +987,7 @@ class IndexManager
if (isset($courses['in_category'][$key1]['courses'])) {
foreach ($courses['in_category'][$key1]['courses'] as $key2 => $courseInCatInfo) {
$courseCode = $courseInCatInfo['course_code'];
$loopCourseId = api_get_course_int_id($courseCode);
if ($studentInfoProgress) {
$progress = Tracking::get_avg_student_progress(
$user_id,
@ -1008,7 +1009,7 @@ class IndexManager
$category = Category::load(
null,
null,
$courseCode,
$loopCourseId,
null,
null,
null
@ -1047,6 +1048,7 @@ class IndexManager
foreach ($courses['not_category'] as $key => $courseNotInCatInfo) {
$courseCode = $courseNotInCatInfo['course_code'];
$loopCourseId = api_get_course_int_id($courseCode);
if ($studentInfoProgress) {
$progress = Tracking::get_avg_student_progress(
$user_id,
@ -1068,7 +1070,7 @@ class IndexManager
$category = Category::load(
null,
null,
$courseCode,
$loopCourseId,
null,
null,
null
@ -1289,7 +1291,7 @@ class IndexManager
$category = Category::load(
null,
null,
$course['course_code'],
api_get_course_int_id($course['course_code']),
null,
null,
$session_id
@ -1732,7 +1734,8 @@ class IndexManager
$mainCategoryList = [];
foreach ($subscribedCourses as $courseInfo) {
$courseCode = $courseInfo['code'];
$categories = Category::load(null, null, $courseCode);
$loopCourseId = api_get_course_int_id($courseCode);
$categories = Category::load(null, null, $loopCourseId);
/** @var Category $category */
$category = !empty($categories[0]) ? $categories[0] : [];
if (!empty($category)) {
@ -1784,8 +1787,7 @@ class IndexManager
$countDependenciesPassed = 0;
foreach ($dependencies as $courseId) {
$courseInfo = api_get_course_info_by_id($courseId);
$courseCode = $courseInfo['code'];
$categories = Category::load(null, null, $courseCode);
$categories = Category::load(null, null, $courseId);
$subCategory = !empty($categories[0]) ? $categories[0] : null;
if (!empty($subCategory)) {
$score = Category::userFinishedCourse(

@ -822,7 +822,7 @@ class learnpath
->removeByResourceInContext($lp, $course, $session);
$link_info = GradebookUtils::isResourceInCourseGradebook(
api_get_course_id(),
api_get_course_int_id(),
4,
$id,
api_get_session_id()

@ -106,11 +106,11 @@ if (false == $accessGranted) {
$catLoad = Category::load(
null,
null,
$courseCode,
$courseId,
null,
null,
$sessionId,
'ORDER By id'
'ORDER BY id'
);
// If not gradebook has been defined
if (empty($catLoad)) {
@ -131,7 +131,7 @@ if (false == $accessGranted) {
null,
$lpId,
null,
$courseCode,
$courseId,
$categoryId
);

@ -417,7 +417,7 @@ if ($oLP->current == $oLP->get_last()) {
$categories = Category::load(
null,
null,
$course_code,
$course_id,
null,
null,
$sessionId

@ -1344,7 +1344,7 @@ if (empty($details)) {
$cats = Category::load(
null,
null,
$courseCodeItem,
$courseId,
null,
null,
$sId

@ -133,7 +133,7 @@ if ($form->validate()) {
$cats = Category::load(
null,
null,
$courseCode,
$courseId,
null,
null,
$sessionId,
@ -145,7 +145,7 @@ if ($form->validate()) {
$cats = Category::load(
0,
null,
$courseCode,
$courseId,
null,
null,
$sessionId,

@ -75,7 +75,7 @@ if ('edit' === $action && isset($survey_id) && is_numeric($survey_id)) {
$defaults['end_date'] = $defaults['avail_till'];
$link_info = GradebookUtils::isResourceInCourseGradebook(
$course_id,
api_get_course_int_id(),
$gradebook_link_type,
$survey_id,
$session_id

@ -481,7 +481,7 @@ class SurveyManager
$gradebook_link_type = 8;
$link_info = GradebookUtils::isResourceInCourseGradebook(
$courseCode,
api_get_course_int_id(),
$gradebook_link_type,
$survey_id,
$session_id
@ -499,7 +499,7 @@ class SurveyManager
if (!$gradebook_link_id && isset($values['category_id'])) {
GradebookUtils::add_resource_to_course_gradebook(
$values['category_id'],
$courseCode,
api_get_course_int_id(),
$gradebook_link_type,
$survey_id,
$title_gradebook,
@ -512,7 +512,7 @@ class SurveyManager
} else {
GradebookUtils::updateResourceFromCourseGradebook(
$gradebook_link_id,
$courseCode,
api_get_course_int_id(),
$survey_weight
);
}

@ -397,7 +397,7 @@ if ($nbStudents > 0) {
$category = Category::load(
null,
null,
$courseCode,
$courseId,
null,
null,
$sessionId

@ -56,7 +56,7 @@ $there_is_a_end_date = false;
if (Gradebook::is_active()) {
$link_info = GradebookUtils::isResourceInCourseGradebook(
api_get_course_id(),
api_get_course_int_id(),
LINK_STUDENTPUBLICATION,
$workId
);

@ -245,7 +245,7 @@ function getWorkList($id, $my_folder_data, $add_in_where_query = null, $course_i
$is_allowed_to_edit = api_is_allowed_to_edit(null, true);
$linkInfo = GradebookUtils::isResourceInCourseGradebook(
api_get_course_id(),
api_get_course_int_id(),
3,
$id,
api_get_session_id()
@ -879,7 +879,7 @@ function deleteDirWork($id)
);
$linkInfo = GradebookUtils::isResourceInCourseGradebook(
api_get_course_id(),
api_get_course_int_id(),
3,
$id,
$sessionId
@ -5146,7 +5146,7 @@ function updatePublicationAssignment($workId, $params, $courseInfo, $groupId)
if (!empty($params['category_id'])) {
$link_info = GradebookUtils::isResourceInCourseGradebook(
$courseInfo['code'],
$course_id,
LINK_STUDENTPUBLICATION,
$workId,
api_get_session_id()
@ -5163,7 +5163,7 @@ function updatePublicationAssignment($workId, $params, $courseInfo, $groupId)
if (empty($linkId)) {
GradebookUtils::add_resource_to_course_gradebook(
$params['category_id'],
$courseInfo['code'],
$courseInfo['real_id'],
LINK_STUDENTPUBLICATION,
$workId,
$params['new_dir'],
@ -5176,7 +5176,7 @@ function updatePublicationAssignment($workId, $params, $courseInfo, $groupId)
} else {
GradebookUtils::updateResourceFromCourseGradebook(
$linkId,
$courseInfo['code'],
$course_id,
$params['weight']
);
}

@ -1535,11 +1535,11 @@ class AdvancedSubscriptionPlugin extends Plugin implements HookPluginInterface
$courseCategories = Category::load(
null,
null,
$course['code'],
$course['real_id'],
null,
null,
$session['id'],
false
null
);
if (count($courseCategories) > 0 &&

@ -86,7 +86,7 @@ foreach ($result as $value) {
$cats = Category::load(
null,
null,
$courseCode,
$courseId,
null,
null,
$sessionId,
@ -98,7 +98,7 @@ foreach ($result as $value) {
$cats = Category::load(
0,
null,
$courseCode,
$courseId,
null,
null,
$sessionId,

@ -127,11 +127,11 @@ class BlockEvaluationGraph extends Block
$cats = Category::load(
null,
null,
$course_code,
api_get_course_int_id($course_code),
null,
null,
null,
false
null
);
if (isset($cats) && isset($cats[0])) {
@ -310,10 +310,18 @@ class BlockEvaluationGraph extends Block
if (!empty($this->sessions)) {
$session_ids = array_keys($this->sessions);
foreach ($session_ids as $session_id) {
$courses_code = array_keys(Tracking::get_courses_list_from_session($session_id));
$courses = Tracking::get_courses_list_from_session($session_id);
$courses_code = array_keys($courses);
$courses_graph = [];
foreach ($courses_code as $course_code) {
$cats = Category::load(null, null, $course_code, null, null, $session_id);
$cats = Category::load(
null,
null,
$courses[$course_code]['c_id'],
null,
null,
$session_id
);
if (isset($cats) && isset($cats[0])) {
$alleval = $cats[0]->get_evaluations(null, true, $course_code);
$alllinks = $cats[0]->get_links(null, true);

@ -182,11 +182,11 @@ class BlockStudent extends Block
$cats = Category::load(
null,
null,
$course_code,
$course['real_id'],
null,
null,
null,
false
null
);
$scoretotal = [];
if (isset($cats) && isset($cats[0])) {

@ -90,11 +90,11 @@ try {
$cats = Category::load(
null,
null,
$course->getCode(),
$course->getId(),
null,
null,
$session ? $session->getId() : 0,
'ORDER By id'
'ORDER BY id'
);
/** @var \Category $gradebook */

@ -147,7 +147,7 @@ class CStudentPublicationPostProcessor implements ProcessorInterface
}
$gradebookLinkInfo = GradebookUtils::isResourceInCourseGradebook(
$course->getCode(),
$course->getId(),
LINK_STUDENTPUBLICATION,
$publication->getIid(),
$session?->getId()
@ -159,7 +159,7 @@ class CStudentPublicationPostProcessor implements ProcessorInterface
if (empty($linkId)) {
GradebookUtils::add_resource_to_course_gradebook(
$publication->gradebookCategoryId,
$course->getCode(),
$course->getId(),
LINK_STUDENTPUBLICATION,
$publication->getIid(),
$publication->getTitle(),
@ -172,7 +172,7 @@ class CStudentPublicationPostProcessor implements ProcessorInterface
} else {
GradebookUtils::updateResourceFromCourseGradebook(
$linkId,
$course->getCode(),
$course->getId(),
$publication->getWeight()
);
}

@ -36,6 +36,7 @@ use Chamilo\CourseBundle\Component\CourseCopy\Resources\Work;
use Chamilo\CourseBundle\Entity\CLpCategory;
use CourseManager;
use Database;
use Doctrine\DBAL\Exception;
use DocumentManager;
use learnpath;
use Link as LinkManager;
@ -1789,10 +1790,12 @@ class CourseBuilder
/**
* Build the attendances.
*
* @param int $session_id Internal session ID
* @param int $courseId Internal course ID
* @param int $session_id Internal session ID
* @param int $courseId Internal course ID
* @param bool $withBaseContent Whether to include content from the course without session or not
* @param array $id_list If you want to restrict the structure to only the given IDs
* @param array $id_list If you want to restrict the structure to only the given IDs
* @throws \Exception
* @throws Exception
*/
public function build_attendance(
$session_id = 0,
@ -1808,13 +1811,13 @@ class CourseBuilder
$sql = 'SELECT * FROM '.$table_attendance.'
WHERE c_id = '.$courseId.' '.$sessionCondition;
$db_result = Database::query($sql);
while ($row = Database::fetch_array($db_result, 'ASSOC')) {
while ($row = Database::fetch_assoc($db_result)) {
$obj = new Attendance($row);
$sql = 'SELECT * FROM '.$table_attendance_calendar.'
WHERE c_id = '.$courseId.' AND attendance_id = '.$row['id'];
$result = Database::query($sql);
while ($sub_row = Database::fetch_array($result, 'ASSOC')) {
while ($sub_row = Database::fetch_assoc($result)) {
$obj->add_attendance_calendar($sub_row);
}
$this->course->add_resource($obj);
@ -1824,14 +1827,15 @@ class CourseBuilder
/**
* Build the works (or "student publications", or "assignments").
*
* @param int $session_id Internal session ID
* @param int $courseId Internal course ID
* @param int $session_id Internal session ID
* @param int $courseId Internal course ID
* @param bool $withBaseContent Whether to include content from the course without session or not
* @param array $idList If you want to restrict the structure to only the given IDs
* @param array $idList If you want to restrict the structure to only the given IDs
* @throws Exception
*/
public function build_works(
$session_id = 0,
$courseId = 0,
int $session_id = 0,
int $courseId = 0,
$withBaseContent = false,
$idList = []
) {
@ -1859,7 +1863,7 @@ class CourseBuilder
$idCondition
";
$result = Database::query($sql);
while ($row = Database::fetch_array($result, 'ASSOC')) {
while ($row = Database::fetch_assoc($result)) {
$obj = new Work($row);
$this->course->add_resource($obj);
}

@ -3501,7 +3501,7 @@ class CourseRestorer
$cats = Category::load(
null,
null,
$destinationCourseCode,
api_get_course_int_id($destinationCourseCode),
null,
null,
$sessionId

@ -424,7 +424,7 @@ class CourseController extends ToolBaseController
$form->handleRequest($request);
if (!$form->isSubmitted() || !$form->isValid()) {
$categories = Category::load(null, null, $course->getCode());
$categories = Category::load(null, null, $course->getId());
$actions = '';
if (!empty($categories)) {
@ -511,7 +511,7 @@ class CourseController extends ToolBaseController
/** @var User $user */
$user = $this->getUser();
$categories = Category::load(null, null, $course->getCode());
$categories = Category::load(null, null, $course->getId());
if (empty($categories)) {
throw $this->createNotFoundException();

Loading…
Cancel
Save