Browse Source

Fixing record issues see BT#6449

Julio Montoya 11 years ago
parent
commit
386940ecd4

+ 4 - 5
main/inc/lib/wami-recorder/record_document.php

@@ -29,7 +29,6 @@ if ($wamiuserid != api_get_user_id() || api_get_user_id() == 0 || $wamiuserid ==
 //clean
 $waminame = Security::remove_XSS($waminame);
 $waminame = Database::escape_string($waminame);
-$waminame = addslashes(trim($waminame));
 $waminame = replace_dangerous_char($waminame, 'strict');
 $waminame = disable_dangerous_file($waminame);
 $wamidir  = Security::remove_XSS($wamidir);
@@ -68,7 +67,6 @@ if (file_exists($saveDir.'/'.$waminame_noex.'.'.$ext)) {
 }
 
 $documentPath = $saveDir.'/'.$waminame_to_save;
-
 // Add to disk
 $fh = fopen($documentPath, 'w') or die("can't open file");
 fwrite($fh, $content);
@@ -79,7 +77,6 @@ $addToLP = false;
 if (isset($_REQUEST['lp_item_id']) && !empty($_REQUEST['lp_item_id'])) {
     $lpItemId = $_REQUEST['lp_item_id'];
     $lp = isset($_SESSION['oLP']) ? $_SESSION['oLP'] : null;
-
     if (!empty($lp)) {
         $addToLP = true;
         // Converts wav into mp3
@@ -87,12 +84,14 @@ if (isset($_REQUEST['lp_item_id']) && !empty($_REQUEST['lp_item_id'])) {
         $ffmpeg = \FFMpeg\FFMpeg::create();
         $oldWavFile = $documentPath;
         if (file_exists($oldWavFile)) {
-            $video = $ffmpeg->open($documentPath);
+            $video = $ffmpeg->open($oldWavFile);
+
             $waminame_to_save = str_replace('wav', 'mp3', $waminame_to_save);
             $documentPath = $saveDir.'/'.$waminame_to_save;
             $title_to_save = $waminame_to_save;
-
+            //$video->save(new \FFMpeg\Format\Audio\Vorbis());
             $result = $video->save(new FFMpeg\Format\Audio\Mp3(), $documentPath);
+
             if ($result) {
                 unlink($oldWavFile);
             }

+ 25 - 10
main/newscorm/learnpathItem.class.php

@@ -74,7 +74,8 @@ class learnpathItem
      * @param	integer	course int id
 	 * @return	boolean	True on success, false on failure
 	 */
-	public function __construct($id, $user_id = null, $course_id = null, $item_content = null) {
+	public function __construct($id, $user_id = null, $course_id = null, $item_content = null)
+    {
 		// Get items table.
 		if (!isset($user_id)) { $user_id = api_get_user_id(); }
 		if (self::debug > 0) { error_log("learnpathItem constructor: id: $id user_id: $user_id course_id: $course_id item_content: $item_content", 0); }
@@ -2592,7 +2593,11 @@ class learnpathItem
 	 	return true;
 	 }
 
-     function add_audio() {
+    /**
+     * @return bool|null|string
+     */
+    public function add_audio()
+    {
         $course_info = api_get_course_info();
         $filepath = api_get_path(SYS_COURSE_PATH).$course_info['path'].'/document/';
 
@@ -2600,7 +2605,7 @@ class learnpathItem
             mkdir($filepath.'audio', api_get_permissions_for_new_directories());
             $audio_id = add_document($course_info, '/audio', 'folder', 0, 'audio');
             api_item_property_update($course_info, TOOL_DOCUMENT, $audio_id, 'FolderCreated', api_get_user_id(), null, null, null, null, api_get_session_id());
-			api_item_property_update($course_info, TOOL_DOCUMENT, $audio_id, 'invisible', api_get_user_id(), null, null, null, null, api_get_session_id());
+            api_item_property_update($course_info, TOOL_DOCUMENT, $audio_id, 'invisible', api_get_user_id(), null, null, null, null, api_get_session_id());
         }
 
         $key = 'file';
@@ -2623,7 +2628,12 @@ class learnpathItem
         return $file_path;
     }
 
-     function add_audio_from_documents($doc_id) {
+    /**
+     * @param int $doc_id
+     * @return string
+     */
+    public function add_audio_from_documents($doc_id)
+    {
         $course_info = api_get_course_info();
         $document_data = DocumentManager::get_document_data_by_id($doc_id, $course_info['code']);
 
@@ -2631,24 +2641,29 @@ class learnpathItem
             $file_path = basename($document_data['path']);
             // Store the mp3 file in the lp_item table.
             $tbl_lp_item = Database::get_course_table(TABLE_LP_ITEM);
-            $sql_insert_audio = "UPDATE $tbl_lp_item SET audio = '".Database::escape_string($file_path)."'
-                                 WHERE c_id = {$course_info['real_id']} AND id = '".Database::escape_string($this->db_id)."'";
-            Database::query($sql_insert_audio);
+            $sql = "UPDATE $tbl_lp_item SET audio = '".Database::escape_string($file_path)."'
+                    WHERE c_id = {$course_info['real_id']} AND id = ".intval($this->db_id);
+            Database::query($sql);
         }
         return $file_path;
     }
 
-    function remove_audio() {
+    /**
+     * @return bool
+     */
+    public function remove_audio()
+    {
         $tbl_lp_item = Database::get_course_table(TABLE_LP_ITEM);
         $course_id = api_get_course_int_id();
         if (empty($this->db_id)) {
             return false;
         }
-        $sql 	= "UPDATE $tbl_lp_item SET audio = '' WHERE c_id = $course_id AND id IN (".$this->db_id.")";
+        $sql = "UPDATE $tbl_lp_item SET audio = '' WHERE c_id = $course_id AND id IN (".$this->db_id.")";
         Database::query($sql);
     }
 
-    static function humanize_status($status, $decorate = true) {
+    static function humanize_status($status, $decorate = true)
+    {
         $mylanglist = array(
             'completed' => 'ScormCompstatus',
             'incomplete' => 'ScormIncomplete',

+ 3 - 1
main/newscorm/lp_add_audio.php

@@ -96,6 +96,7 @@ $page = $_SESSION['oLP']->build_action_menu(true);
 $page .= '<div class="row-fluid" style="overflow:hidden">';
 $page .= '<div id="lp_sidebar" class="span4">';
 $page .= $_SESSION['oLP']->return_new_tree(null, true);
+
 // Show the template list.
 $page .= '</div>';
 
@@ -113,7 +114,8 @@ $form->addElement('header', get_lang('UplUpload'));
 $form->addElement('html', $lp_item->get_title());
 $form->addElement('file', 'file', get_lang('AudioFile'), 'style="width: 250px"');
 if (!empty($file)) {
-    $form->addElement('checkbox', 'delete_file', null, get_lang('RemoveAudio'));
+    $url = api_get_path(WEB_CODE_PATH).'newscorm/lp_controller.php?lp_id='.$_SESSION['oLP']->get_id().'&action=add_audio&id='.$lp_item_id.'&delete_file=1&'.api_get_cidreq();
+    $form->addElement('label', null, Display::url(get_lang('RemoveAudio'), $url, array('class' => 'btn btn-danger')));
 }
 
 $form->addElement('hidden', 'id', $lp_item_id);

+ 9 - 5
main/newscorm/lp_controller.php

@@ -443,14 +443,18 @@ switch ($action) {
             if (isset($_REQUEST['id'])) {
                 $lp_item_obj = new learnpathItem($_REQUEST['id']);
 
-                //Remove audio
-                if (isset($_POST['delete_file']) && $_POST['delete_file'] == 1) {
-                     $lp_item_obj->remove_audio();
+                // Remove audio
+                if (isset($_GET['delete_file']) && $_GET['delete_file'] == 1) {
+                    $lp_item_obj->remove_audio();
+
+                    $url = api_get_self().'?action=add_audio&lp_id='.intval($_SESSION['oLP']->lp_id).'&id='.$lp_item_obj->get_id().'&'.api_get_cidreq();
+                    header('Location: '.$url);
+                    exit;
                 }
 
-                //Upload audio
+                // Upload audio
                 if (isset($_FILES['file']) && !empty($_FILES['file'])) {
-                    //Updating the lp.modified_on
+                    // Updating the lp.modified_on
                     $_SESSION['oLP']->set_modified_on();
                     $lp_item_obj->add_audio();
                 }

+ 3 - 4
main/template/default/learnpath/record_voice.tpl

@@ -36,12 +36,11 @@ function setupGUI() {
     var uniq = 'rec_' + (new Date()).getTime() + ".wav";
     var gui = new Wami.GUI({
         id : "wami-recorder",
+        singleButton : true,
         recordUrl : "{{ _p.web_lib }}wami-recorder/record_document.php?lp_item_id={{ lp_item_id }}&waminame="+uniq+"&wamidir={{ lp_dir }}&wamiuserid={{ _u.user_id }}",
-        //playUrl : "https://wami-recorder.appspot.com/audio",
         buttonUrl : "{{ _p.web_lib }}wami-recorder/buttons.png",
         buttonNoUrl: "{{ _p.web_img }}blank.gif",
         onRecordStart : function() {
-
             $('#start-recording').show();
         },
         onRecordFinish: function() {
@@ -49,8 +48,7 @@ function setupGUI() {
             window.location.reload();
         },
         onError : function() {
-        },
-        singleButton : true
+        }
     });
 
     gui.setPlayEnabled(true);
@@ -69,6 +67,7 @@ function setupGUI() {
             $('#wami').show();
 
             var recordWami = $('#record-wami');
+
             recordWami.on('click', function() {
                 setupRecorder();
                 return false;