Internal: Refactor code, add checks in psalm, remove deprecations

pull/3513/head
Julio Montoya 5 years ago
parent 6f3ca31e90
commit e0f121912f
  1. 8
      psalm.xml
  2. 25
      public/main/extra/group_space_tracking.php
  3. 3
      public/main/forum/forumfunction.inc.php
  4. 20
      public/main/gradebook/lib/GradebookUtils.php
  5. 10
      public/main/gradebook/lib/be/abstractlink.class.php
  6. 13
      public/main/gradebook/lib/be/attendancelink.class.php
  7. 16
      public/main/gradebook/lib/be/category.class.php
  8. 1
      public/main/gradebook/lib/be/evallink.class.php
  9. 2
      public/main/gradebook/lib/be/evaluation.class.php
  10. 5
      public/main/gradebook/lib/be/studentpublicationlink.class.php
  11. 2
      public/main/gradebook/lib/fe/catform.class.php
  12. 2
      public/main/gradebook/skill_rel_user.php
  13. 69
      public/main/inc/lib/course.lib.php
  14. 11
      public/main/work/edit.php
  15. 10
      public/main/work/upload.php
  16. 11
      public/main/work/upload_from_template.php
  17. 8
      tests/behat/features/course.feature

@ -19,15 +19,19 @@
<!-- <directory name="public/main/course_info"/>-->
<directory name="public/main/dashboard"/>
<!-- <directory name="public/main/dropbox"/>-->
<!-- <directory name="public/main/exercise"/>-->
<file name="public/main/exercise/oral_expression.class.php"/>
<file name="public/main/exercise/exercise.class.php"/>
<directory name="public/main/group"/>
<!-- <directory name="public/main/gradebook/lib/fe"/>-->
<!-- <directory name="public/main/forum"/>-->
<directory name="public/main/link" />
<!-- <directory name="public/main/session" /> -->
<!-- <directory name="public/main/session" /> -->
<!-- <directory name="public/main/inc/ajax" />-->
<directory name="public/main/work" />
<file name="public/main/inc/lib/access_url_edit_courses_to_url_functions.lib.php"/>
<file name="public/main/inc/lib/access_url_edit_sessions_to_url_functions.lib.php"/>

@ -63,11 +63,12 @@ Display::display_header($nameTools.' '.Security::remove_XSS($current_group['name
Display::display_introduction_section(TOOL_GROUP);
$course_code = api_get_course_id();
$is_course_member = CourseManager::is_user_subscribed_in_real_or_linked_course(
api_get_user_id(),
$course_code
);
$session_id = api_get_session_id();
if (empty($session_id)) {
$is_course_member = CourseManager::is_user_subscribed_in_course($user_id, $course_code);
} else {
$is_course_member = CourseManager::is_user_subscribed_in_course($user_id, $course_code, true, $session_id);
}
/*
* List all the tutors of the current group
*/
@ -164,14 +165,14 @@ $tbl_group_course_info = Database:: get_course_table(TABLE_GROUP);
$course_id = api_get_course_int_id();
//on trouve le vrai groupID
$sql = "SELECT iid FROM ".$tbl_group_course_info."
$sql = "SELECT iid FROM ".$tbl_group_course_info."
WHERE c_id=".$course_id." and id=".$current_group['id'];
$current_group_result = Database::query($sql);
$current_group = Database::fetch_assoc($current_group_result)['iid'];
//on trouve les user dans le groupe
$sql = "SELECT *
FROM ".$table_user." user, ".$table_group_user." group_rel_user
WHERE group_rel_user.c_id = $course_id AND group_rel_user.user_id = user.user_id
FROM ".$table_user." user, ".$table_group_user." group_rel_user
WHERE group_rel_user.c_id = $course_id AND group_rel_user.user_id = user.user_id
AND group_rel_user.group_id = ".$current_group." order by lastname
";
$result = Database::query($sql);
@ -254,7 +255,7 @@ while ($resulta = Database::fetch_array($result)) {
//on sort le temps passé dans chaque cours
$sql = "SELECT SUM(UNIX_TIMESTAMP(logout_course_date) - UNIX_TIMESTAMP(login_course_date)) as nb_seconds
FROM track_e_course_access
WHERE UNIX_TIMESTAMP(logout_course_date) > UNIX_TIMESTAMP(login_course_date) AND c_id = $course_id AND user_id = '$user_in_groupe'
WHERE UNIX_TIMESTAMP(logout_course_date) > UNIX_TIMESTAMP(login_course_date) AND c_id = $course_id AND user_id = '$user_in_groupe'
";
//echo($sql);
$rs = Database::query($sql);
@ -283,7 +284,7 @@ while ($resulta = Database::fetch_array($result)) {
$lp_id_view = $result3['id'];
$c_id_view = $result3['c_id'];
$Req4 = "SELECT id, lp_id ,title ,item_type
$Req4 = "SELECT id, lp_id ,title ,item_type
FROM c_lp_item
WHERE lp_id = '$lp_id'
AND title LIKE '(+)%'
@ -335,9 +336,9 @@ while ($resulta = Database::fetch_array($result)) {
$tour++;
$date = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d") - $tour, date("Y")));
$sql4 = "SELECT * FROM $tbl_personal_agenda
WHERE user = '$user_in_groupe' AND
WHERE user = '$user_in_groupe' AND
text='Pour le calendrier, ne pas effacer'
AND date like '".$date." %:%'
AND date like '".$date." %:%'
";
$result4 = Database::query($sql4);
$res4 = Database::fetch_array($result4);

@ -3912,7 +3912,8 @@ function store_edit_post(CForumForum $forum, $values)
}
if (!empty($values['remove_attach'])) {
delete_attachment($post->getIid());
throw new Exception('remove_attach');
//delete_attachment($post->getIid());
}
if (empty($values['id_attach'])) {

@ -715,7 +715,7 @@ class GradebookUtils
* @param int $cat_id The category id
* @param int $user_id The user id
*
* @return Datetime The date when you obtained the certificate
* @return array
*/
public static function get_certificate_by_user_id($cat_id, $user_id)
{
@ -727,9 +727,8 @@ class GradebookUtils
WHERE cat_id = $cat_id AND user_id = $user_id ";
$result = Database::query($sql);
$row = Database::fetch_array($result, 'ASSOC');
return $row;
return Database::fetch_array($result, 'ASSOC');
}
/**
@ -948,8 +947,7 @@ class GradebookUtils
$session_id,
false
);
$select_gradebook = $form->addElement(
'select',
$select_gradebook = $form->addSelect(
'category_id',
get_lang('Select assessment')
);
@ -976,12 +974,12 @@ class GradebookUtils
/**
* @param FlatViewTable $flatviewtable
* @param Category $cat
* @param $users
* @param $alleval
* @param $alllinks
* @param array $params
* @param null $mainCourseCategory
* @param array $cat
* @param $users
* @param $alleval
* @param $alllinks
* @param array $params
* @param null $mainCourseCategory
*/
public static function export_pdf_flatview(
$flatviewtable,

@ -421,19 +421,15 @@ abstract class AbstractLink implements GradebookItem
public function save()
{
$em = Database::getManager();
$link = $em->find('ChamiloCoreBundle:GradebookLink', $this->id);
$link = $em->find(GradebookLink::class, $this->id);
if (!$link) {
return;
}
self::add_link_log($this->id);
$this->save_linked_data();
$course = api_get_course_entity($this->getCourseId());
$link
->setType($this->get_type())
->setRefId($this->get_ref_id())
@ -543,7 +539,7 @@ abstract class AbstractLink implements GradebookItem
*
* @return array
*/
public function find_links($name_mask, $selectcat)
public static function find_links($name_mask, $selectcat)
{
$rootcat = Category::load($selectcat);
$links = $rootcat[0]->get_links((api_is_allowed_to_edit() ? null : api_get_user_id()), true);
@ -753,7 +749,7 @@ abstract class AbstractLink implements GradebookItem
$allow = api_get_configuration_value('allow_gradebook_stats');
if ($allow) {
$em = Database::getManager();
$repo = $em->getRepository('ChamiloCoreBundle:GradebookLink');
$repo = $em->getRepository(GradebookLink::class);
}
while ($data = Database::fetch_array($result)) {

@ -89,11 +89,11 @@ class AttendanceLink extends AbstractLink
}
/**
* @param int $stud_id
* @param int $studentId
*
* @return array|null
*/
public function calc_score($stud_id = null, $type = null)
public function calc_score($studentId = null, $type = null)
{
$tbl_attendance_result = Database::get_course_table(TABLE_ATTENDANCE_RESULT);
$sessionId = $this->get_session_id();
@ -112,12 +112,12 @@ class AttendanceLink extends AbstractLink
$sql = 'SELECT *
FROM '.$tbl_attendance_result.'
WHERE c_id = '.$this->course_id.' AND attendance_id = '.$this->get_ref_id();
if (isset($stud_id)) {
$sql .= ' AND user_id = '.intval($stud_id);
if (isset($studentId)) {
$sql .= ' AND user_id = '.intval($studentId);
}
$scores = Database::query($sql);
// for 1 student
if (isset($stud_id)) {
if (isset($studentId)) {
if ($data = Database::fetch_array($scores, 'ASSOC')) {
return [
$data['score'],
@ -135,7 +135,6 @@ class AttendanceLink extends AbstractLink
$sum = 0;
$sumResult = 0;
$bestResult = 0;
while ($data = Database::fetch_array($scores)) {
if (!(array_key_exists($data['user_id'], $students))) {
if (0 != $attendance['attendance_qualify_max']) {
@ -162,7 +161,7 @@ class AttendanceLink extends AbstractLink
return [$sumResult / $rescount, $weight];
break;
case 'ranking':
return AbstractLink::getCurrentUserRanking($stud_id, $students);
return AbstractLink::getCurrentUserRanking($studentId, $students);
break;
default:
return [$sum, $rescount];

@ -652,27 +652,25 @@ class Category implements GradebookItem
/** @var GradebookCategory $gradebookCategory */
$gradebookCategory = $em
->getRepository('ChamiloCoreBundle:GradebookCategory')
->getRepository(GradebookCategory::class)
->find($this->id);
if (empty($gradebookCategory)) {
return false;
}
$course = api_get_user_course_entity();
$course = api_get_course_entity();
$gradebookCategory->setName($this->name);
$gradebookCategory->setDescription($this->description);
$gradebookCategory->setUserId($this->user_id);
$gradebookCategory->setUser(api_get_user_entity($this->user_id));
$gradebookCategory->setCourse($course);
//$gradebookCategory->setCourseCode($this->course_code);
$gradebookCategory->setParentId($this->parent);
$gradebookCategory->setWeight($this->weight);
$gradebookCategory->setVisible($this->visible);
$gradebookCategory->setCertifMinScore($this->certificate_min_score);
$gradebookCategory->setGenerateCertificates(
$this->generateCertificates
);
$gradebookCategory->setGenerateCertificates($this->generateCertificates);
$gradebookCategory->setGradeModelId($this->grade_model_id);
$gradebookCategory->setIsRequirement($this->isRequirement);
@ -725,7 +723,7 @@ class Category implements GradebookItem
/**
* Update link weights see #5168.
*
* @param type $new_weight
* @param int $new_weight
*/
public function updateChildrenWeight($new_weight)
{
@ -1509,7 +1507,7 @@ class Category implements GradebookItem
*
* @return array 2-dimensional array - every element contains 2 subelements (code, title)
*/
public function get_not_created_course_categories($user_id)
public static function get_not_created_course_categories($user_id)
{
$tbl_main_courses = Database::get_main_table(TABLE_MAIN_COURSE);
$tbl_main_course_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
@ -2653,7 +2651,7 @@ class Category implements GradebookItem
$allow = api_get_configuration_value('allow_gradebook_stats');
if ($allow) {
$em = Database::getManager();
$repo = $em->getRepository('ChamiloCoreBundle:GradebookCategory');
$repo = $em->getRepository(GradebookCategory::class);
}
while ($data = Database::fetch_array($result)) {

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
/**

@ -921,7 +921,7 @@ class Evaluation implements GradebookItem
$allow = api_get_configuration_value('allow_gradebook_stats');
if ($allow) {
$em = Database::getManager();
$repo = $em->getRepository('ChamiloCoreBundle:GradebookEvaluation');
$repo = $em->getRepository(GradebookEvaluation::class);
}
if (Database::num_rows($result)) {

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Framework\Container;
@ -371,13 +372,13 @@ class StudentPublicationLink extends AbstractLink
return '';
}
if (!empty($id)) {
/*if (!empty($id)) {
//Cleans works
$sql = 'UPDATE '.$this->get_studpub_table().'
SET weight = 0
WHERE c_id = '.$this->course_id.' AND id ='.$id;
Database::query($sql);
}
}*/
}
/**

@ -71,7 +71,7 @@ class CatForm extends FormValidator
'"'.$this->category_object->get_name().'" '
);
$this->addElement('static', null, null, get_lang('Move to').' : ');
$select = $this->addElement('select', 'move_cat', null, null);
$select = $this->addSelect( 'move_cat', null);
$line = null;
foreach ($this->category_object->get_target_categories() as $cat) {
for ($i = 0; $i < $cat[2]; $i++) {

@ -50,7 +50,7 @@ foreach ($skills as $skill) {
'skillRelItem' => $skill,
];
/** @var SkillRelItemRelUser $skillRelItemRelUser */
$skillRelItemRelUser = $em->getRepository('ChamiloCoreBundle:SkillRelItemRelUser')->findOneBy($criteria);
$skillRelItemRelUser = $em->getRepository(SkillRelItemRelUser::class)->findOneBy($criteria);
$itemInfo['status'] = $skillRelItemRelUser ? true : false;
$itemInfo['url_activity'] = $codePath.$skill->getItemResultList(api_get_cidreq());
if ($skillRelItemRelUser) {

@ -1381,75 +1381,6 @@ class CourseManager
return false;
}
/**
* Is the user subscribed in the real course or linked courses?
*
* @param int the id of the user
* @param int $courseId
*
* @deprecated linked_courses definition doesn't exists
*
* @return bool if the user is registered in the real course or linked courses, false otherwise
*/
public static function is_user_subscribed_in_real_or_linked_course($user_id, $courseId, $session_id = 0)
{
if ($user_id != strval(intval($user_id))) {
return false;
}
$courseId = intval($courseId);
$session_id = intval($session_id);
if (empty($session_id)) {
$result = Database::fetch_array(
Database::query(
"SELECT *
FROM ".Database::get_main_table(TABLE_MAIN_COURSE)." course
LEFT JOIN ".Database::get_main_table(TABLE_MAIN_COURSE_USER)." course_user
ON course.id = course_user.c_id
WHERE
course_user.user_id = $user_id AND
course_user.relation_type<>".COURSE_RELATION_TYPE_RRHH." AND
( course.id = $courseId)"
)
);
return !empty($result);
}
// From here we trust session id.
// Is he/she subscribed to the session's course?
// A user?
if (Database::num_rows(Database::query("SELECT user_id
FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)."
WHERE session_id = $session_id
AND user_id = $user_id"))
) {
return true;
}
// A course coach?
if (Database::num_rows(Database::query("SELECT user_id
FROM ".Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER)."
WHERE session_id = $session_id
AND user_id = $user_id AND status = 2
AND c_id = $courseId"))
) {
return true;
}
// A session coach?
if (Database::num_rows(Database::query("SELECT id_coach
FROM ".Database::get_main_table(TABLE_MAIN_SESSION)." AS session
WHERE session.id = $session_id
AND id_coach = $user_id"))
) {
return true;
}
return false;
}
/**
* 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.

@ -41,12 +41,11 @@ if (empty($parent_data)) {
api_not_allowed(true);
}
$is_course_member = CourseManager::is_user_subscribed_in_real_or_linked_course(
$user_id,
$course_id,
$session_id
);
if (empty($session_id)) {
$is_course_member = CourseManager::is_user_subscribed_in_course($user_id, $course_code);
} else {
$is_course_member = CourseManager::is_user_subscribed_in_course($user_id, $course_code, true, $session_id);
}
$is_course_member = $is_course_member || api_is_platform_admin();
if (false == $is_course_member) {

@ -29,11 +29,11 @@ if (empty($work_id)) {
protectWork($course_info, $work_id);
$workInfo = get_work_data_by_id($work_id);
$is_course_member = CourseManager::is_user_subscribed_in_real_or_linked_course(
$user_id,
$course_id,
$session_id
);
if (empty($session_id)) {
$is_course_member = CourseManager::is_user_subscribed_in_course($user_id, $course_code);
} else {
$is_course_member = CourseManager::is_user_subscribed_in_course($user_id, $course_code, true, $session_id);
}
$is_course_member = $is_course_member || api_is_platform_admin();
if (false == $is_course_member || api_is_invitee()) {

@ -33,12 +33,11 @@ protectWork($course_info, $work_id);
$workInfo = get_work_data_by_id($work_id);
$is_course_member = CourseManager::is_user_subscribed_in_real_or_linked_course(
$user_id,
$course_id,
$session_id
);
if (empty($session_id)) {
$is_course_member = CourseManager::is_user_subscribed_in_course($user_id, $course_code);
} else {
$is_course_member = CourseManager::is_user_subscribed_in_course($user_id, $course_code, true, $session_id);
}
$is_course_member = $is_course_member || api_is_platform_admin();
if (false == $is_course_member) {

@ -117,10 +117,10 @@ Feature: Course tools basic testing
# And I am on "/main/chat/chat.php?cid=1"
# Then I should not see an error
Scenario: Make sure the assignments tool is available
Given I am on course "TEMP" homepage
And I am on "/main/work/work.php?cid=1"
Then I should not see an error
# Scenario: Make sure the assignments tool is available
# Given I am on course "TEMP" homepage
# And I am on "/main/work/work.php?cid=1"
# Then I should not see an error
Scenario: Make sure the surveys tool is available
Given I am on course "TEMP" homepage

Loading…
Cancel
Save