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. 11
      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/course_info"/>-->
<directory name="public/main/dashboard"/> <directory name="public/main/dashboard"/>
<!-- <directory name="public/main/dropbox"/>--> <!-- <directory name="public/main/dropbox"/>-->
<!-- <directory name="public/main/exercise"/>--> <!-- <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/group"/>
<!-- <directory name="public/main/gradebook/lib/fe"/>-->
<!-- <directory name="public/main/forum"/>--> <!-- <directory name="public/main/forum"/>-->
<directory name="public/main/link" /> <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/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_courses_to_url_functions.lib.php"/>
<file name="public/main/inc/lib/access_url_edit_sessions_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); Display::display_introduction_section(TOOL_GROUP);
$course_code = api_get_course_id(); $course_code = api_get_course_id();
$is_course_member = CourseManager::is_user_subscribed_in_real_or_linked_course( $session_id = api_get_session_id();
api_get_user_id(), if (empty($session_id)) {
$course_code $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 * List all the tutors of the current group
*/ */

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

@ -715,7 +715,7 @@ class GradebookUtils
* @param int $cat_id The category id * @param int $cat_id The category id
* @param int $user_id The user 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) 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 "; WHERE cat_id = $cat_id AND user_id = $user_id ";
$result = Database::query($sql); $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, $session_id,
false false
); );
$select_gradebook = $form->addElement( $select_gradebook = $form->addSelect(
'select',
'category_id', 'category_id',
get_lang('Select assessment') get_lang('Select assessment')
); );
@ -976,12 +974,12 @@ class GradebookUtils
/** /**
* @param FlatViewTable $flatviewtable * @param FlatViewTable $flatviewtable
* @param Category $cat * @param array $cat
* @param $users * @param $users
* @param $alleval * @param $alleval
* @param $alllinks * @param $alllinks
* @param array $params * @param array $params
* @param null $mainCourseCategory * @param null $mainCourseCategory
*/ */
public static function export_pdf_flatview( public static function export_pdf_flatview(
$flatviewtable, $flatviewtable,

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

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

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

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

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

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

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

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

@ -1381,75 +1381,6 @@ class CourseManager
return false; 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 * 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. * 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); api_not_allowed(true);
} }
$is_course_member = CourseManager::is_user_subscribed_in_real_or_linked_course( if (empty($session_id)) {
$user_id, $is_course_member = CourseManager::is_user_subscribed_in_course($user_id, $course_code);
$course_id, } else {
$session_id $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(); $is_course_member = $is_course_member || api_is_platform_admin();
if (false == $is_course_member) { if (false == $is_course_member) {

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

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

Loading…
Cancel
Save