parent
ca04bce15d
commit
205946b2ab
@ -0,0 +1,101 @@ |
||||
<?php |
||||
// By Arnaud Ligot <arnaud@cblue.be> |
||||
// Based on work done for old videoconference application |
||||
|
||||
// params: |
||||
// action=list cidReq=course_Code cwd=folder result: json output |
||||
|
||||
// I have about 30 minutes to write this peace of code so if somebody has more time, feel free to rewrite it... |
||||
|
||||
|
||||
|
||||
/* See license terms in /license.txt */ |
||||
|
||||
/* FIX for IE cache when using https */ |
||||
session_cache_limiter("none"); |
||||
|
||||
/*==== DEBUG ====*/ |
||||
$debug=0; |
||||
|
||||
|
||||
if ($debug>0) |
||||
{ |
||||
// dump the request |
||||
$v = array_keys(get_defined_vars()); |
||||
error_log(var_export($v, true),3, '/tmp/log'); |
||||
|
||||
foreach (array_keys(get_defined_vars()) as $k) { |
||||
if ($k == 'GLOBALS') |
||||
continue; |
||||
error_log($k, 3, '/tmp/log'); |
||||
error_log(var_export($$k, true), 3, '/tmp/log'); |
||||
} |
||||
|
||||
} |
||||
|
||||
/*==== INCLUDE ====*/ |
||||
require_once '../inc/global.inc.php'; |
||||
api_block_anonymous_users(); |
||||
require_once (api_get_path(LIBRARY_PATH)."course.lib.php"); |
||||
require_once (api_get_path(LIBRARY_PATH)."document.lib.php"); |
||||
require_once ("../newscorm/learnpath.class.php"); |
||||
|
||||
/*==== Variables initialisation ====*/ |
||||
$action = $_REQUEST["action"]; //safe as only used in if()'s |
||||
$seek = array('/','%2F','..'); |
||||
$destroy = array('','',''); |
||||
$cidReq = str_replace($seek,$destroy,$_REQUEST["cidReq"]); |
||||
$cidReq = Security::remove_XSS($cidReq); |
||||
|
||||
$user_id = api_get_user_id(); |
||||
$coursePath = api_get_path(SYS_COURSE_PATH).$cidReq.'/document'; |
||||
$_course = CourseManager::get_course_information($cidReq); |
||||
if ($_course == null) die ("problem when fetching course information"); |
||||
|
||||
// stupid variable initialisation for old version of DocumentManager functions. |
||||
$_course['path'] = $_course['directory']; |
||||
$_course['dbName'] = $_course['db_name']; |
||||
|
||||
$is_manager = (CourseManager::get_user_in_course_status($user_id, $cidReq) == COURSEMANAGER); |
||||
|
||||
if ($debug>0) error_log($coursePath, 0); |
||||
|
||||
// FIXME: check security around $_REQUEST["cwd"] |
||||
$cwd = $_REQUEST["cwd"]; |
||||
|
||||
|
||||
// treat /.. |
||||
$nParent = 0; // the number of /.. into the url |
||||
while (substr($cwd, -3, 3) == "/..") |
||||
{ |
||||
// go to parent directory |
||||
$cwd= substr($cwd, 0, -3); |
||||
if (strlen($cwd) == 0) $cwd="/"; |
||||
$nParent++; |
||||
} |
||||
for (;$nParent >0; $nParent--){ |
||||
$cwd = (strrpos($cwd,'/')>-1 ? substr($cwd, 0, strrpos($cwd,'/')) : $cwd); |
||||
} |
||||
|
||||
if (strlen($cwd) == 0) $cwd="/"; |
||||
|
||||
if (Security::check_abs_path($cwd,api_get_path(SYS_PATH))) |
||||
die(); |
||||
|
||||
|
||||
if ($action == "list") |
||||
{ |
||||
/*==== List files ====*/ |
||||
if ($debug>0) error_log("sending file list",0); |
||||
|
||||
// get files list |
||||
$files = DocumentManager::get_all_document_data($_course, $cwd, 0, NULL, false); |
||||
|
||||
// adding download link to files |
||||
foreach($files as $k=>$f) |
||||
if ($f['filetype'] == 'file') |
||||
$files[$k]['download'] = api_get_path(WEB_CODE_PATH)."/document/document.php?cidReq=$cidReq&action=download&id=".urlencode($f['path']); |
||||
print json_encode($files); |
||||
exit; |
||||
} |
||||
?> |
@ -0,0 +1,28 @@ |
||||
// JS interface enabling scrom content to use main/document/remote.php easily
|
||||
// CBlue SPRL, Arnaud Ligot <arnaud@cblue.be>
|
||||
|
||||
|
||||
lms_documents_list = function(path) { |
||||
var result; |
||||
$.ajax({ |
||||
async: false, |
||||
type: "POST", |
||||
datatype: "json", |
||||
url: "../document/remote.php", |
||||
data: { |
||||
action: "list", |
||||
cwd: path, |
||||
cidReq: chamilo_courseCode, |
||||
}, |
||||
success: function(data) { |
||||
result = eval("("+data+")"); |
||||
} |
||||
}); |
||||
return result; |
||||
} |
||||
|
||||
// Accessor object
|
||||
function DOCUMENTAPIobject() { |
||||
this.list = lms_documents_list; |
||||
} |
||||
var DOCUMENTAPI = new DOCUMENTAPIobject(); |
Loading…
Reference in new issue