From f51696ff20bb5afed27d3ff313cb4fda273fe60e Mon Sep 17 00:00:00 2001 From: ANKIT AGARWAL Date: Tue, 29 Mar 2011 19:39:03 +0530 Subject: [PATCH] patch for 26890 --- repository/lib.php | 20 ++++++++++++++++++++ repository/repository_ajax.php | 20 +++++++++++--------- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/repository/lib.php b/repository/lib.php index 545d1d1..3a9dbe6 100644 --- a/repository/lib.php +++ b/repository/lib.php @@ -1144,6 +1144,26 @@ abstract class repository { $c->download(array(array('url'=>$url, 'file'=>$fp))); return array('path'=>$path, 'url'=>$url); } + + /** + * Return size of a file. + * This function used by local draft corusefiles user repositories to check file size limit. + * @source string encoded and searlised data of file + */ + public function get_file_size($source) { + $browser = get_file_browser(); + $params = unserialize(base64_decode($source)); + $contextid = clean_param($params['contextid'], PARAM_INT); + $fileitemid = clean_param($params['itemid'], PARAM_INT); + $filename = clean_param($params['filename'], PARAM_FILE); + $filepath = clean_param($params['filepath'], PARAM_PATH); + $filearea = clean_param($params['filearea'], PARAM_ALPHAEXT); + $component = clean_param($params['component'], PARAM_ALPHAEXT); + $context = get_context_instance_by_id($contextid); + $file_info = $browser->get_file_info($context, $component, $filearea, $fileitemid, $filepath, $filename); + $filesize=$file_info->get_filesize(); + return $filesize; + } /** * Return is the instance is visible diff --git a/repository/repository_ajax.php b/repository/repository_ajax.php index a2d354c..c614a71 100644 --- a/repository/repository_ajax.php +++ b/repository/repository_ajax.php @@ -202,17 +202,19 @@ switch ($action) { die; } else { if (in_array($repo->options['type'], array('local', 'recent', 'user', 'coursefiles'))) { //TODO: this hardcoding is a really ugly hack (skodak) - $fileinfo = $repo->copy_to_area($source, $itemid, $saveas_path, $saveas_filename); - $info = array(); - $info['file'] = $fileinfo['title']; - $info['id'] = $itemid; - $info['url'] = $CFG->httpswwwroot.'/draftfile.php/'.$fileinfo['contextid'].'/user/draft/'.$itemid.'/'.$fileinfo['title']; - $filesize = $fileinfo['filesize']; - if (($maxbytes!==-1) && ($filesize>$maxbytes)) { + $filesize = $repo->get_file_size($source); + if (($maxbytes!==-1) && ($filesize>$maxbytes)) { throw new file_exception('maxbytes'); + } else { + $fileinfo = $repo->copy_to_area($source, $itemid, $saveas_path, $saveas_filename); + $info = array(); + $info['file'] = $fileinfo['title']; + $info['id'] = $itemid; + $info['url'] = $CFG->httpswwwroot.'/draftfile.php/'.$fileinfo['contextid'].'/user/draft/'.$itemid.'/'.$fileinfo['title']; + $filesize = $fileinfo['filesize']; + echo json_encode($info); + die; } - echo json_encode($info); - die; } // Download file to moodle $file = $repo->get_file($source, $saveas_filename); -- 1.7.3.1.msysgit.0