Browse Source

Should fix bug when copying a hotpost question see #3838

Julio Montoya 12 years ago
parent
commit
3fd9a8b3a1
1 changed files with 31 additions and 30 deletions
  1. 31 30
      main/exercice/question.class.php

+ 31 - 30
main/exercice/question.class.php

@@ -441,7 +441,7 @@ abstract class Question
     		$o_img->send_image($picturePath.'/'.$this->picture, -1, 'jpg');
             $document_id = add_document($this->course, '/images/'.$this->picture, 'file', filesize($picturePath.'/'.$this->picture),$this->picture);
     	    if ($document_id) {
-                return api_item_property_update($this->course, TOOL_DOCUMENT, $document_id, 'DocumentAdded', api_get_user_id);
+                return api_item_property_update($this->course, TOOL_DOCUMENT, $document_id, 'DocumentAdded', api_get_user_id());
             }
 		}
 
@@ -544,20 +544,30 @@ abstract class Question
 	 * @return - boolean - true if copied, otherwise false
 	 */
 	function exportPicture($questionId, $course_info) {
-		$course_id = $course_info['real_id'];
-        $TBL_QUESTIONS  = Database::get_course_table(TABLE_QUIZ_QUESTION);
-        $destination_path    = api_get_path(SYS_COURSE_PATH).$course_info['path'].'/document/images';
-        $source_path         = api_get_path(SYS_COURSE_PATH).$this->course['path'].'/document/images';
+		$course_id          = $course_info['real_id'];
+        $TBL_QUESTIONS      = Database::get_course_table(TABLE_QUIZ_QUESTION);
+        $destination_path   = api_get_path(SYS_COURSE_PATH).$course_info['path'].'/document/images';
+        $source_path        = api_get_path(SYS_COURSE_PATH).$this->course['path'].'/document/images';        
 
 		// if the question has got an ID and if the picture exists
-		if($this->id && !empty($this->picture)) {
+		if ($this->id && !empty($this->picture)) {
 			$picture=explode('.',$this->picture);
-			$Extension=$picture[sizeof($picture)-1];
-			$picture='quiz-'.$questionId.'.'.$Extension;
-			$sql="UPDATE $TBL_QUESTIONS SET picture='".Database::escape_string($picture)."' WHERE c_id = $course_id AND id='".intval($questionId)."'";
-			Database::query($sql);
-			return @copy($source_path.'/'.$this->picture, $destination_path.'/'.$picture)?true:false;
-		}
+			$extension = $picture[sizeof($picture)-1];
+			$picture = 'quiz-'.$questionId.'.'.$extension;			          
+			$result = @copy($source_path.'/'.$this->picture, $destination_path.'/'.$picture) ? true : false;
+            //If copy was correct then add to the database
+            if ($result) {
+                $sql = "UPDATE $TBL_QUESTIONS SET picture='".Database::escape_string($picture)."' WHERE c_id = $course_id AND id='".intval($questionId)."'";
+                Database::query($sql);
+            
+                $document_id = add_document($course_info, '/images/'.$picture, 'file', filesize($destination_path.'/'.$picture), $picture);
+                if ($document_id) {
+                    return api_item_property_update($course_info, TOOL_DOCUMENT, $document_id, 'DocumentAdded', api_get_user_id());
+                }
+            }
+            
+            return $result;
+		}        
 		return false;
 	}
 
@@ -572,9 +582,8 @@ abstract class Question
 	 */
 	function setTmpPicture($Picture,$PictureName) {
 		global $picturePath;
-
-		$PictureName=explode('.',$PictureName);
-		$Extension=$PictureName[sizeof($PictureName)-1];
+		$PictureName = explode('.',$PictureName);
+		$Extension = $PictureName[sizeof($PictureName)-1];
 
 		// saves the picture into a temporary file
 		@move_uploaded_file($Picture,$picturePath.'/tmp.'.$Extension);
@@ -606,24 +615,17 @@ abstract class Question
 		global $picturePath;
 
 		// if the question has got an ID and if the picture exists
-		if($this->id) {
-			if(file_exists($picturePath.'/tmp.jpg')) {
+		if ($this->id) {
+			if (file_exists($picturePath.'/tmp.jpg')) {
 				$Extension='jpg';
-			}
-			elseif(file_exists($picturePath.'/tmp.gif'))
-			{
+			} elseif(file_exists($picturePath.'/tmp.gif')) {
 				$Extension='gif';
-			}
-			elseif(file_exists($picturePath.'/tmp.png'))
-			{
+			} elseif(file_exists($picturePath.'/tmp.png')) {
 				$Extension='png';
 			}
-
 			$this->picture='quiz-'.$this->id.'.'.$Extension;
-
 			return @rename($picturePath.'/tmp.'.$Extension,$picturePath.'/'.$this->picture)?true:false;
 		}
-
 		return false;
 	}
 
@@ -666,7 +668,7 @@ abstract class Question
 			Database::query($sql);
 			$this->saveCategory($category);
 			if (!empty($exerciseId)) {
-				api_item_property_update($this->course, TOOL_QUIZ, $id,'QuizQuestionUpdated',api_get_user_id);
+				api_item_property_update($this->course, TOOL_QUIZ, $id,'QuizQuestionUpdated',api_get_user_id());
 			}
             if (api_get_setting('search_enabled')=='true') {
                 if ($exerciseId != 0) {
@@ -721,7 +723,6 @@ abstract class Question
 				Database::query($sql);
 			}
 
-
             if (api_get_setting('search_enabled')=='true') {
                 if ($exerciseId != 0) {
                     $this -> search_engine_edit($exerciseId, TRUE);
@@ -735,7 +736,7 @@ abstract class Question
 		}
 
 		// if the question is created in an exercise
-		if($exerciseId) {
+		if ($exerciseId) {
 			/*
 			$sql = 'UPDATE '.Database::get_course_table(TABLE_LP_ITEM).'
 					SET max_score = '.intval($weighting).'
@@ -1037,7 +1038,7 @@ abstract class Question
             }
         }
 
-		// Duplicates the picture
+		// Duplicates the picture of the hotspot
 		$this->exportPicture($new_question_id, $course_info);
 		return $new_question_id;
 	}