Browse Source

Fix course image redirection see BT#12234

jmontoyaa 8 years ago
parent
commit
869ed502dc
4 changed files with 23 additions and 12 deletions
  1. 7 5
      .htaccess
  2. 1 1
      main/course_info/infocours.php
  3. 8 2
      main/inc/ajax/course.ajax.php
  4. 7 4
      main/inc/lib/course.lib.php

+ 7 - 5
.htaccess

@@ -27,15 +27,17 @@ RewriteRule ^courses/([^/]+)/scorm/(.*)$ main/document/download_scorm.php?doc_ur
 RewriteRule ^courses/([^/]+)/document/certificates/(.*)$ app/courses/$1/document/certificates/$2 [QSA,L]
 RewriteRule ^courses/([^/]+)/document/(.*)$ main/document/download.php?doc_url=/$2&cDir=$1 [QSA,L]
 
+# Course upload files
+RewriteRule ^courses/([^/]+)/upload/([^/]+)/(.*)$ main/document/download_uploaded_files.php?code=$1&type=$2&file=$3 [QSA,L]
+
 # Rewrite everything in the work folder
 RewriteRule ^courses/([^/]+)/work/(.*)$ main/work/download.php?file=work/$2&cDir=$1 [QSA,L]
 
-# Course upload files
-RewriteRule ^courses/([^/]+)/upload/([^/]+)/(.*)$ main/document/download_uploaded_files.php?code=$1&type=$2&file=$3 [QSA,L]
-RewriteRule ^courses/([^/]+)/(.*)$ app/courses/$1/$2 [QSA,L]
+RewriteRule ^courses/([^/]+)/course-pic85x85.png$ main/inc/ajax/course.ajax.php?a=get_course_image&code=$1&image=course_image_source [QSA,L]
+RewriteRule ^courses/([^/]+)/course-pic.png$ main/inc/ajax/course.ajax.php?a=get_course_image&code=$1&image=course_image_large_source [QSA,L]
 
-RewriteRule ^courses/([^/]+)/course-pic85x85.png$ app/courses/$1/course-pic85x85.png [QSA,L]
-RewriteRule ^courses/([^/]+)/course-pic.png$ app/courses/$1/course-pic.png [QSA,L]
+# Redirect all courses/ to app/courses/
+RewriteRule ^courses/([^/]+)/(.*)$ app/courses/$1/$2 [QSA,L]
 
 # About session
 RewriteRule ^session/(\d{1,})/about/?$ main/session/about.php?session_id=$1 [L]

+ 1 - 1
main/course_info/infocours.php

@@ -701,7 +701,7 @@ if ($form->validate() && is_settings_editable()) {
     $picture = $_FILES['picture'];
     if (!empty($picture['name'])) {
         $picture_uri = CourseManager::update_course_picture(
-            $course_code,
+            $_course,
             $picture['name'],
             $picture['tmp_name'],
             $updateValues['picture_crop_result']

+ 8 - 2
main/inc/ajax/course.ajax.php

@@ -11,7 +11,7 @@ $user_id = api_get_user_id();
 switch ($action) {
     case 'add_course_vote':
         $course_id = intval($_REQUEST['course_id']);
-        $star      = intval($_REQUEST['star']);
+        $star = intval($_REQUEST['star']);
 
         if (!api_is_anonymous()) {
             CourseManager::add_course_vote($user_id, $star, $course_id, 0);
@@ -25,7 +25,13 @@ switch ($action) {
             false
         );
         echo $rating;
-
+        break;
+    case 'get_course_image':
+        $courseInfo = api_get_course_info($_REQUEST['code']);
+        $image = isset($_REQUEST['image']) && in_array($_REQUEST['image'], ['course_image_large_source', 'course_image_source']) ? $_REQUEST['image'] : '';
+        if ($courseInfo && $image) {
+            DocumentManager::file_send_for_download($courseInfo[$image]);
+        }
         break;
     case 'get_user_courses':
         if (api_is_platform_admin()) {

+ 7 - 4
main/inc/lib/course.lib.php

@@ -3326,17 +3326,20 @@ class CourseManager
 
     /**
      * Update course picture
-     * @param   string  Course code
+     * @param   array  $courseInfo
      * @param   string  File name
      * @param   string  The full system name of the image from which course picture will be created.
      * @param   string $cropParameters Optional string that contents "x,y,width,height" of a cropped image format
      * @return  bool    Returns the resulting. In case of internal error or negative validation returns FALSE.
      */
-    public static function update_course_picture($course_code, $filename, $source_file = null, $cropParameters = null)
+    public static function update_course_picture($courseInfo, $filename, $source_file = null, $cropParameters = null)
     {
-        $course_info = api_get_course_info($course_code);
+        if (empty($courseInfo)) {
+            return false;
+        }
+
         // course path
-        $store_path = api_get_path(SYS_COURSE_PATH) . $course_info['path'];
+        $store_path = api_get_path(SYS_COURSE_PATH) . $courseInfo['path'];
         // image name for courses
         $course_image = $store_path . '/course-pic.png';
         $course_medium_image = $store_path . '/course-pic85x85.png';