Fix course picture using Illustration resource

pull/3064/head
Julio Montoya 5 years ago
parent 4dc73d207d
commit 5627cd959c
  1. 2
      config/services.yaml
  2. 5
      main/auth/courses_categories.php
  3. 2
      main/course_info/about.php
  4. 3
      main/course_info/infocours.php
  5. 201
      main/inc/lib/api.lib.php
  6. 2
      main/inc/lib/course.lib.php
  7. 20
      src/CoreBundle/Entity/Course.php
  8. 10
      src/CoreBundle/Repository/IllustrationRepository.php
  9. 18
      src/CoreBundle/Repository/ResourceRepository.php
  10. 4
      src/CourseBundle/Component/CourseCopy/CourseBuilder.php

@ -36,7 +36,7 @@ parameters:
course_picture_small:
w: 85
h: 47
course_picture:
course_picture_medium:
w: 400
h: 225
document_thumbnail_small:

@ -325,7 +325,10 @@ function returnThumbnail($course)
true
);
$illustrationUrl = Container::getIllustrationRepository()->getIllustrationUrl($courseEntity);
$illustrationUrl = Container::getIllustrationRepository()->getIllustrationUrl(
$courseEntity,
'course_picture_medium'
);
if ($illustrationUrl) {
$courseMediumImage = $illustrationUrl;
}

@ -149,7 +149,7 @@ $courseItem = [
'code' => $course->getCode(),
'title' => $course->getTitle(),
'description' => $courseDescription,
'image' => Container::getIllustrationRepository()->getIllustrationUrl($course),
'image' => Container::getIllustrationRepository()->getIllustrationUrl($course, 'course_picture_medium'),
'syllabus' => $topics,
'tags' => $courseTags,
'teachers' => $teachersData,

@ -23,7 +23,6 @@ api_protect_course_script(true);
api_block_anonymous_users();
$_course = api_get_course_info();
$courseEntity = api_get_course_entity();
$currentCourseRepository = $_course['path'];
$isAllowToEdit = api_is_course_admin() || api_is_platform_admin();
$course_code = api_get_course_id();
$courseId = api_get_course_int_id();
@ -87,7 +86,7 @@ function card_settings_close()
$form->addHtml(card_settings_open('course_settings', get_lang('Course settings'), true, 'settings.png', 'accordionSettings'));
$image = '';
$illustrationUrl = $illustrationRepo->getIllustrationUrl($courseEntity);
$illustrationUrl = $illustrationRepo->getIllustrationUrl($courseEntity, 'course_picture_medium');
if (!empty($illustrationUrl)) {
$image = '<div class="row"><label class="col-md-2 control-label">'.get_lang('Image').'</label>

@ -2058,39 +2058,49 @@ function api_remove_in_gradebook()
function api_get_course_info($course_code = null)
{
if (!empty($course_code)) {
$course_code = Database::escape_string($course_code);
$courseId = api_get_course_int_id($course_code);
if (empty($courseId)) {
$course = Container::getCourseRepository()->findOneByCode($course_code);
if (empty($course)) {
return [];
}
$course_table = Database::get_main_table(TABLE_MAIN_COURSE);
$course_cat_table = Database::get_main_table(TABLE_MAIN_CATEGORY);
$sql = "SELECT
course.*,
course_category.code faCode,
course_category.name faName
FROM $course_table
LEFT JOIN $course_cat_table
ON course.category_code = course_category.code
WHERE course.id = $courseId";
$result = Database::query($sql);
$courseInfo = [];
if (Database::num_rows($result) > 0) {
$data = Database::fetch_array($result);
$courseInfo = api_format_course_array($data);
}
$courseInfo = api_format_course_array($course);
Session::write('_course', $courseInfo);
return $courseInfo;
}
$_course = Session::read('_course');
if ($_course == '-1') {
$_course = [];
/*$course_code = Database::escape_string($course_code);
$courseId = api_get_course_int_id($course_code);
if (empty($courseId)) {
return [];
}
$course_table = Database::get_main_table(TABLE_MAIN_COURSE);
$course_cat_table = Database::get_main_table(TABLE_MAIN_CATEGORY);
$sql = "SELECT
course.*,
course_category.code faCode,
course_category.name faName
FROM $course_table
LEFT JOIN $course_cat_table
ON course.category_code = course_category.code
WHERE course.id = $courseId";
$result = Database::query($sql);
$courseInfo = [];
if (Database::num_rows($result) > 0) {
$data = Database::fetch_array($result);
$courseInfo = api_format_course_array($data);
}
return $courseInfo;*/
$course = Session::read('_course');
if ($course == '-1') {
$course = [];
}
return $_course;
return $course;
}
/**
@ -2168,96 +2178,79 @@ function api_get_course_info_by_id($id = 0)
return $course;
}
$course_table = Database::get_main_table(TABLE_MAIN_COURSE);
$course_cat_table = Database::get_main_table(TABLE_MAIN_CATEGORY);
$sql = "SELECT
course.*,
course_category.code faCode,
course_category.name faName,
course_category.id faId
FROM $course_table
LEFT JOIN $course_cat_table
ON course.category_code = course_category.code
WHERE course.id = $id";
$result = Database::query($sql);
if (Database::num_rows($result) > 0) {
$row = Database::fetch_array($result);
$course = api_format_course_array($row);
return $course;
$course = Container::getCourseRepository()->find($id);
if (empty($course)) {
return [];
}
return [];
return api_format_course_array($course);
}
/**
* Reformat the course array (output by api_get_course_info()) in order, mostly,
* to switch from 'code' to 'id' in the array. This is a legacy feature and is
* now possibly causing massive confusion as a new "id" field has been added to
* the course table in 1.9.0.
* to switch from 'code' to 'id' in the array.
*
* @param $course_data
* @param Course $course
*
* @return array
*
* @todo eradicate the false "id"=code field of the $_course array and use the int id
*/
function api_format_course_array($course_data)
function api_format_course_array(Course $course)
{
if (empty($course_data)) {
if (empty($course)) {
return [];
}
$_course = [];
$_course['id'] = $course_data['code'];
$_course['real_id'] = $course_data['id'];
$categoryCode = $course->getCategoryCode();
$courseData = [];
$courseData['categoryCode'] = '';
$courseData['categoryName'] = '';
if (!empty($categoryCode)) {
$categoryRepo = Database::getManager()->getRepository('ChamiloCoreBundle:CourseCategory');
$category = $categoryRepo->findOneBy(['code' => $categoryCode]);
$courseData['categoryCode'] = $category->getCode();
$courseData['categoryName'] = $category->getName();
}
$courseData['id'] = $courseData['real_id'] = $course->getId();
// Added
$_course['code'] = $course_data['code'];
$_course['name'] = $course_data['title'];
$_course['title'] = $course_data['title'];
$_course['official_code'] = $course_data['visual_code'];
$_course['visual_code'] = $course_data['visual_code'];
$_course['sysCode'] = $course_data['code'];
$_course['path'] = $course_data['directory']; // Use as key in path.
$_course['directory'] = $course_data['directory'];
$_course['creation_date'] = $course_data['creation_date'];
$_course['titular'] = $course_data['tutor_name'];
$_course['language'] = $course_data['course_language'];
$_course['extLink']['url'] = $course_data['department_url'];
$_course['extLink']['name'] = $course_data['department_name'];
$_course['categoryCode'] = $course_data['faCode'];
$_course['categoryName'] = $course_data['faName'];
$_course['visibility'] = $course_data['visibility'];
$_course['subscribe_allowed'] = $course_data['subscribe'];
$_course['subscribe'] = $course_data['subscribe'];
$_course['unsubscribe'] = $course_data['unsubscribe'];
$_course['course_language'] = $course_data['course_language'];
$_course['activate_legal'] = isset($course_data['activate_legal']) ? $course_data['activate_legal'] : false;
$_course['legal'] = $course_data['legal'];
$_course['show_score'] = $course_data['show_score']; //used in the work tool
$_course['department_name'] = $course_data['department_name'];
$_course['department_url'] = $course_data['department_url'];
$courseSys = api_get_path(SYS_COURSE_PATH).$course_data['directory'];
$webCourseHome = api_get_path(WEB_COURSE_PATH).$course_data['directory'];
$courseData['code'] = $courseData['sysCode'] = $course->getCode();
$courseData['name'] = $courseData['title'] = $course->getTitle();
$courseData['official_code'] = $courseData['visual_code'] = $course->getVisualCode();
//$courseData['path'] = $course_data['directory']; // Use as key in path.
//$courseData['directory'] = $course_data['directory'];
$courseData['creation_date'] = $course->getCreationDate()->format('Y-m-d H:i:s');
$courseData['titular'] = $course->getTutorName();
$courseData['language'] = $courseData['course_language'] = $course->getCourseLanguage();
$courseData['extLink']['url'] = $courseData['department_url'] = $course->getDepartmentUrl();
$courseData['extLink']['name'] = $courseData['department_name'] = $course->getDepartmentName();
$courseData['visibility'] = $course->getVisibility();
$courseData['subscribe_allowed'] = $courseData['subscribe'] = $course->getSubscribe();
$courseData['unsubscribe'] = $course->getUnsubscribe();
$courseData['activate_legal'] = $course->getActivateLegal();
$courseData['legal'] = $course->getLegal();
$courseData['show_score'] = $course->getShowScore(); //used in the work tool
//$courseSys = api_get_path(SYS_COURSE_PATH).$course_data['directory'];
$webCourseHome = api_get_path(WEB_COURSE_PATH).$courseData['code'];
// Course password
$_course['registration_code'] = !empty($course_data['registration_code']) ? sha1($course_data['registration_code']) : null;
$_course['disk_quota'] = $course_data['disk_quota'];
$_course['course_public_url'] = $webCourseHome.'/index.php';
$_course['course_sys_path'] = $courseSys.'/';
if (array_key_exists('add_teachers_to_sessions_courses', $course_data)) {
$_course['add_teachers_to_sessions_courses'] = $course_data['add_teachers_to_sessions_courses'];
}
$courseData['registration_code'] = $course->getRegistrationCode();
$courseData['disk_quota'] = $course->getDiskQuota();
$courseData['course_public_url'] = $webCourseHome.'/index.php';
//$courseData['course_sys_path'] = $courseSys.'/';
$courseData['add_teachers_to_sessions_courses'] = $course->isAddTeachersToSessionsCourses();
$courseData['entity'] = $course;
// Course image
$_course['course_image_source'] = '';
/*$courseData['course_image_source'] = '';
if (file_exists($courseSys.'/course-pic85x85.png')) {
$url_image = $webCourseHome.'/course-pic85x85.png';
$_course['course_image_source'] = $courseSys.'/course-pic85x85.png';
$courseData['course_image_source'] = $courseSys.'/course-pic85x85.png';
} else {
$url_image = Display::return_icon(
'course.png',
@ -2268,14 +2261,30 @@ function api_format_course_array($course_data)
true,
false
);
}*/
$image = Display::return_icon(
'course.png',
null,
null,
ICON_SIZE_BIG,
null,
true,
false
);
$illustration = Container::getIllustrationRepository()->getIllustrationUrl($course);
if (!empty($illustration)) {
$image = $illustration;
}
$_course['course_image'] = $url_image;
$courseData['course_image'] = $image.'?filter=course_picture_small';
// Course large image
$_course['course_image_large_source'] = '';
/*$courseData['course_image_large_source'] = '';
if (file_exists($courseSys.'/course-pic.png')) {
$url_image = $webCourseHome.'/course-pic.png';
$_course['course_image_large_source'] = $courseSys.'/course-pic.png';
$courseData['course_image_large_source'] = $courseSys.'/course-pic.png';
} else {
$url_image = Display::return_icon(
'session_default.png',
@ -2286,11 +2295,11 @@ function api_format_course_array($course_data)
true,
true
);
}
}*/
$_course['course_image_large'] = $url_image;
$courseData['course_image_large'] = $image.'?filter=course_picture_medium';
return $_course;
return $courseData;
}
/**

@ -3810,7 +3810,7 @@ class CourseManager
);
}
$courseUrl = api_get_path(WEB_COURSE_PATH).$course_info['path'].'/index.php?id_session=0';
$courseUrl = $course_info['course_public_url'].'?id_session=0';
$teachers = [];
if (api_get_setting('display_teacher_in_courselist') === 'true') {
$teachers = self::getTeachersFromCourse(

@ -1177,6 +1177,26 @@ class Course extends AbstractResource implements ResourceInterface
return $this->activateLegal;
}
/**
* @return bool
*/
public function isAddTeachersToSessionsCourses()
{
return $this->addTeachersToSessionsCourses;
}
/**
* @param bool $addTeachersToSessionsCourses
*
* @return Course
*/
public function setAddTeachersToSessionsCourses($addTeachersToSessionsCourses): Course
{
$this->addTeachersToSessionsCourses = $addTeachersToSessionsCourses;
return $this;
}
/**
* Set courseTypeId.
*

@ -75,17 +75,23 @@ class IllustrationRepository extends ResourceRepository
/**
* @param AbstractResource $resource
* @param string $filter
*
* @return string
*/
public function getIllustrationUrl(AbstractResource $resource)
public function getIllustrationUrl(AbstractResource $resource, $filter = '')
{
$node = $this->getIllustrationNodeFromResource($resource);
if ($node !== null) {
$params = ['id' => $node->getId()];
if (!empty($filter)) {
$params['filter'] = $filter;
}
return $this->router->generate(
'core_tool_resource',
['id' => $node->getId(), 'filter' => 'course_picture']
$params
);
}

@ -138,24 +138,6 @@ class ResourceRepository extends EntityRepository
return $this->getRepository()->findOneBy($criteria, $orderBy);
}
/**
* @param AbstractResource $resource
*
* @return ResourceNode|mixed
*/
/*public function getIllustration(AbstractResource $resource)
{
$node = $resource->getResourceNode();
// @todo also filter by the resource type = Illustration
$criteria = Criteria::create()->where(
Criteria::expr()->eq('name', 'course_picture')
);
$illustration = $node->getChildren()->matching($criteria)->first();
return $illustration;
}*/
/**
* @param ResourceNode $resourceNode
* @param UploadedFile $file

@ -269,7 +269,7 @@ class CourseBuilder
}
// Add asset
if ($course['course_image_source'] && basename($course['course_image_source']) !== 'course.png') {
/*if ($course['course_image_source'] && basename($course['course_image_source']) !== 'course.png') {
// Add course image courses/XXX/course-pic85x85.png
$asset = new Asset(
$course['course_image_source'],
@ -284,7 +284,7 @@ class CourseBuilder
basename($course['course_image_large_source'])
);
$this->course->add_resource($asset);
}
}*/
// Once we've built the resources array a bit more, try to get items
// from the item_property table and order them in the "resources" array

Loading…
Cancel
Save