You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.8 KiB
82 lines
2.8 KiB
<?php
|
|
|
|
/* JPEGCam Script *****UPDATED to lib webcamJS 2015-09-04***** */
|
|
/* Receives JPEG webcam submission and saves to local file. */
|
|
/* Make sure your directory has permission to write files as your web server user! */
|
|
|
|
//Changes on directory because move the proper script to the new lib upgrade directory
|
|
require_once '../inc/global.inc.php';
|
|
////Add security from Chamilo
|
|
api_protect_course_script();
|
|
api_block_anonymous_users();
|
|
///
|
|
# Save the audio to a URL-accessible directory for playback.
|
|
parse_str($_SERVER['QUERY_STRING'], $params);
|
|
|
|
if(isset($params['webcamname']) && isset($params['webcamdir']) && isset($params['webcamuserid'])) {
|
|
$webcamname = $params['webcamname'];
|
|
$webcamdir = $params['webcamdir'];
|
|
$webcamuserid = $params['webcamuserid'];
|
|
}
|
|
else {
|
|
api_not_allowed();
|
|
die();
|
|
}
|
|
|
|
if ($webcamuserid!= api_get_user_id() || api_get_user_id()==0 || $webcamuserid==0) {
|
|
api_not_allowed();
|
|
die();
|
|
}
|
|
|
|
|
|
//clean
|
|
$webcamname = Security::remove_XSS($webcamname);
|
|
$webcamname = Database::escape_string($webcamname);
|
|
$webcamname = addslashes(trim($webcamname));
|
|
$webcamname = api_replace_dangerous_char($webcamname);
|
|
$webcamname = disable_dangerous_file($webcamname);
|
|
$webcamdir = Security::remove_XSS($webcamdir);
|
|
|
|
//security extension
|
|
$ext = explode('.', $webcamname);
|
|
$ext = strtolower($ext[sizeof($ext) - 1]);
|
|
|
|
if($ext!= 'jpg'){
|
|
die();
|
|
}
|
|
|
|
//Do not use here check Fileinfo method because return: text/plain //CHECK THIS BEFORE COMMIT
|
|
|
|
$dirBaseDocuments = api_get_path(SYS_COURSE_PATH).$_course['path'].'/document';
|
|
$saveDir = $dirBaseDocuments.$webcamdir;
|
|
$current_session_id = api_get_session_id();
|
|
$groupId = api_get_group_id();
|
|
|
|
//Avoid duplicates
|
|
$webcamname_to_save=$webcamname;
|
|
$title_to_save=str_replace('_',' ',$webcamname);
|
|
$webcamname_noex=basename($webcamname, ".jpg");
|
|
if (file_exists($saveDir.'/'.$webcamname_noex.'.'.$ext)){
|
|
$i = 1;
|
|
while (file_exists($saveDir.'/'.$webcamname_noex.'_'.$i.'.'.$ext)) $i++;
|
|
$webcamname_to_save = $webcamname_noex . '_' . $i . '.'.$ext;
|
|
$title_to_save = $webcamname_noex . '_' . $i . '.'.$ext;
|
|
$title_to_save = str_replace('_',' ',$title_to_save);
|
|
}
|
|
|
|
$documentPath = $saveDir.'/'.$webcamname_to_save;
|
|
|
|
//read content
|
|
//Change to move_uploaded_file() function instead file_get_contents() to adapt the new lib
|
|
$content = move_uploaded_file($_FILES['webcam']['tmp_name'], $documentPath);
|
|
if (!$content) {
|
|
print "PHP ERROR: Failed to read data\n";
|
|
exit();
|
|
}
|
|
|
|
//add document to database
|
|
$doc_id = add_document($_course, $webcamdir.'/'.$webcamname_to_save, 'file', filesize($documentPath), $title_to_save);
|
|
api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'DocumentAdded', $_user['user_id'], $groupId, null, null, null, $current_session_id);
|
|
///
|
|
$url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']) . '/' . $documentPath;
|
|
print get_lang('ClipSent');
|
|
|