Remove courseInfo['entity'] use api_get_course_entity();

pull/3959/head
Julio 4 years ago
parent 5a5c46f86d
commit 3c173c95f4
  1. 3
      public/main/admin/course_edit.php
  2. 6
      public/main/inc/ajax/document.ajax.php
  3. 3
      public/main/inc/ajax/lp.ajax.php
  4. 3
      public/main/inc/lib/api.lib.php
  5. 180
      public/main/inc/lib/document.lib.php
  6. 3
      public/main/lp/learnpath.class.php
  7. 2
      public/main/lp/lp_add_audio.php
  8. 4
      public/main/work/add_document.php

@ -345,8 +345,7 @@ if ($form->validate()) {
$department_url = 'http://'.$department_url;
}
/** @var \Chamilo\CoreBundle\Entity\Course $courseEntity */
$courseEntity = $courseInfo['entity'];
$courseEntity = api_get_course_entity($courseId);
$courseEntity
->setCourseLanguage($course['course_language'])
->setTitle(str_replace('&', '&', $course['title']))

@ -32,10 +32,10 @@ switch ($action) {
echo DocumentManager::displaySimpleQuota($courseQuota, $total);
break;
case 'document_preview':
$courseInfo = api_get_course_info_by_id($_REQUEST['course_id']);
if (!empty($courseInfo) && is_array($courseInfo)) {
$course = api_get_course_entity($_REQUEST['course_id']);
if (null !== $course) {
echo DocumentManager::get_document_preview(
$courseInfo,
$course,
false,
'_blank',
$_REQUEST['session_id']

@ -48,7 +48,6 @@ switch ($action) {
echo json_encode($data);
break;
case 'get_documents':
$courseInfo = api_get_course_info();
$folderId = isset($_GET['folder_id']) ? $_GET['folder_id'] : null;
if (empty($folderId)) {
exit;
@ -57,7 +56,7 @@ switch ($action) {
$addMove = isset($_GET['add_move_button']) && 1 == $_GET['add_move_button'] ? true : false;
echo DocumentManager::get_document_preview(
$courseInfo,
api_get_course_entity(),
$lpId,
null,
api_get_session_id(),

@ -969,6 +969,8 @@ function api_protect_course_script($print_headers = false, $allow_session_admins
}
}
error_log((string )$is_visible);
if (!$is_visible) {
api_not_allowed($print_headers);
@ -2186,7 +2188,6 @@ function api_format_course_array(Course $course = null)
$courseData['course_public_url'] = $webCourseHome;
$courseData['about_url'] = $coursePath.$courseData['real_id'].'/about';
$courseData['add_teachers_to_sessions_courses'] = $course->isAddTeachersToSessionsCourses();
$courseData['entity'] = $course;
$image = Display::return_icon(
'course.png',

@ -1097,97 +1097,6 @@ class DocumentManager
return $is_visible;
}
/**
* Return true if user can see a file.
*
* @param int document id
* @param array course info
* @param int
* @param int
* @param bool
*
* @return bool
*/
public static function is_visible_by_id(
$doc_id,
$course_info,
$sessionId,
$user_id,
$admins_can_see_everything = true,
$userIsSubscribed = null
) {
$user_in_course = false;
//1. Checking the course array
if (empty($course_info)) {
$course_info = api_get_course_info();
if (empty($course_info)) {
return false;
}
}
$doc_id = (int) $doc_id;
$sessionId = (int) $sessionId;
// 2. Course and Session visibility are handle in local.inc.php/global.inc.php
// 3. Checking if user exist in course/session
if (0 == $sessionId) {
if (is_null($userIsSubscribed)) {
$userIsSubscribed = CourseManager::is_user_subscribed_in_course(
$user_id,
$course_info['code']
);
}
if (true === $userIsSubscribed || api_is_platform_admin()) {
$user_in_course = true;
}
// Check if course is open then we can consider that the student is registered to the course
if (isset($course_info) &&
in_array(
$course_info['visibility'],
[COURSE_VISIBILITY_OPEN_PLATFORM, COURSE_VISIBILITY_OPEN_WORLD]
)
) {
$user_in_course = true;
}
} else {
$user_status = SessionManager::get_user_status_in_course_session(
$user_id,
$course_info['real_id'],
$sessionId
);
if (in_array($user_status, ['0', '2', '6'])) {
//is true if is an student, course session teacher or coach
$user_in_course = true;
}
if (api_is_platform_admin()) {
$user_in_course = true;
}
}
$em = Database::getManager();
// 4. Checking document visibility (i'm repeating the code in order to be more clear when reading ) - jm
if ($user_in_course) {
$repo = $em->getRepository('ChamiloCourseBundle:CDocument');
/** @var CDocument $document */
$document = $repo->find($doc_id);
$link = $document->getFirstResourceLinkFromCourseSession($course_info['entity']);
if ($link && ResourceLink::VISIBILITY_PUBLISHED == $link->getVisibility()) {
return true;
}
return false;
} elseif ($admins_can_see_everything && api_is_platform_admin()) {
return true;
}
return false;
}
/**
* Allow attach a certificate to a course.
*
@ -2392,7 +2301,7 @@ class DocumentManager
}
/**
* @param array $course_info
* @param Course $course
* @param bool $lp_id
* @param string $target
* @param int $session_id
@ -2409,7 +2318,7 @@ class DocumentManager
* @return string
*/
public static function get_document_preview(
$course_info,
$course,
$lp_id = false,
$target = '',
$session_id = 0,
@ -2423,7 +2332,7 @@ class DocumentManager
$addAudioPreview = false,
$filterByExtension = []
) {
if (empty($course_info['real_id']) || empty($course_info['code']) || !is_array($course_info)) {
if (null === $course) {
return '';
}
@ -2499,7 +2408,7 @@ class DocumentManager
->leftJoin('node.resourceFile', 'file')
->where('type = :type')
->andWhere('links.course = :course')
->setParameters(['type' => $type, 'course' => $course_info['entity']])
->setParameters(['type' => $type, 'course' => $course])
->orderBy('node.parent', 'ASC')
->addSelect('file')
;
@ -2517,87 +2426,6 @@ class DocumentManager
return $nodeRepository->buildTree($query->getArrayResult(), $options);
}
/**
* @param int $doc_id
* @param array $courseInfo
* @param int $sessionId
* @param int $user_id
* @param int $groupId iid
* @param bool $checkParentVisibility
*
* @return bool
*/
public static function check_visibility_tree(
$doc_id,
$courseInfo,
$sessionId,
$user_id,
$groupId = 0,
$checkParentVisibility = true
) {
if (empty($courseInfo)) {
return false;
}
$courseCode = $courseInfo['code'];
if (empty($courseCode)) {
return false;
}
$document_data = self::get_document_data_by_id(
$doc_id,
$courseCode,
null,
$sessionId
);
if (0 != $sessionId && !$document_data) {
$document_data = self::get_document_data_by_id(
$doc_id,
$courseCode,
null,
0
);
}
if (!empty($document_data)) {
// If admin or course teacher, allow anyway
if (api_is_platform_admin() || CourseManager::isCourseTeacher($user_id, $courseInfo['real_id'])) {
return true;
}
if (false == $document_data['parent_id'] || empty($document_data['parent_id'])) {
if (!empty($groupId)) {
return true;
}
$visible = self::is_visible_by_id($doc_id, $courseInfo, $sessionId, $user_id);
return $visible;
} else {
$visible = self::is_visible_by_id($doc_id, $courseInfo, $sessionId, $user_id);
if (!$visible) {
return false;
} else {
if ($checkParentVisibility) {
return self::check_visibility_tree(
$document_data['parent_id'],
$courseInfo,
$sessionId,
$user_id,
$groupId
);
}
return true;
}
}
} else {
return false;
}
}
/**
* Index a given document.
*

@ -6493,10 +6493,9 @@ class learnpath
*/
public function get_documents($showInvisibleFiles = false)
{
$course_info = api_get_course_info();
$sessionId = api_get_session_id();
$documentTree = DocumentManager::get_document_preview(
$course_info,
api_get_course_entity(),
$this->lp_id,
null,
$sessionId,

@ -169,7 +169,7 @@ $form->addElement('hidden', 'id', $lp_item_id);
$form->addButtonSave(get_lang('Save recorded audio'));
$documentTree = DocumentManager::get_document_preview(
$courseInfo,
api_get_course_entity(),
$lp->get_id(),
null,
api_get_session_id(),

@ -33,8 +33,6 @@ if (!api_is_allowed_to_edit()) {
api_not_allowed(true);
}
$courseInfo = api_get_course_info();
$interbreadcrumb[] = [
'url' => api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq(),
'name' => get_lang('Assignments'),
@ -80,7 +78,7 @@ if (empty($docId)) {
}
$documentTree = DocumentManager::get_document_preview(
$courseInfo,
api_get_course_entity(),
false,
null,
api_get_session_id(),

Loading…
Cancel
Save