Fixing record issues see BT#6449

1.9.x
Julio Montoya 12 years ago
parent 6276fb969b
commit 386940ecd4
  1. 9
      main/inc/lib/wami-recorder/record_document.php
  2. 35
      main/newscorm/learnpathItem.class.php
  3. 4
      main/newscorm/lp_add_audio.php
  4. 14
      main/newscorm/lp_controller.php
  5. 7
      main/template/default/learnpath/record_voice.tpl

@ -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);
}

@ -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',

@ -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);

@ -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();
}

@ -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;

Loading…
Cancel
Save