See Release Notes
Long Term Support Release
Differences Between: [Versions 401 and 403]
1 <?php 2 3 // This file is part of Moodle - http://moodle.org/ 4 // 5 // Moodle is free software: you can redistribute it and/or modify 6 // it under the terms of the GNU General Public License as published by 7 // the Free Software Foundation, either version 3 of the License, or 8 // (at your option) any later version. 9 // 10 // Moodle is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 // GNU General Public License for more details. 14 // 15 // You should have received a copy of the GNU General Public License 16 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 17 18 /** 19 * This plugin is used to access user's private files 20 * 21 * @since Moodle 2.0 22 * @package repository_user 23 * @copyright 2010 Dongsheng Cai {@link http://dongsheng.org} 24 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 25 */ 26 require_once($CFG->dirroot . '/repository/lib.php'); 27 28 /** 29 * repository_user class is used to browse user private files 30 * 31 * @since Moodle 2.0 32 * @package repository_user 33 * @copyright 2010 Dongsheng Cai {@link http://dongsheng.org} 34 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 35 */ 36 class repository_user extends repository { 37 38 /** 39 * user plugin doesn't require login 40 * 41 * @return mixed 42 */ 43 public function print_login() { 44 return $this->get_listing(); 45 } 46 47 /** 48 * Get file listing 49 * 50 * @param string $encodedpath 51 * @return mixed 52 */ 53 public function get_listing($encodedpath = '', $page = '') { 54 global $CFG, $USER, $OUTPUT; 55 $ret = array(); 56 $ret['dynload'] = true; 57 $ret['nosearch'] = true; 58 $ret['nologin'] = true; 59 $manageurl = new moodle_url('/user/files.php'); 60 $ret['manage'] = $manageurl->out(); 61 $list = array(); 62 63 if (!empty($encodedpath)) { 64 $params = json_decode(base64_decode($encodedpath), true); 65 if (is_array($params)) { 66 $filepath = clean_param($params['filepath'], PARAM_PATH); 67 $filename = clean_param($params['filename'], PARAM_FILE); 68 } 69 } else { 70 $itemid = 0; 71 $filepath = '/'; 72 $filename = null; 73 } 74 $filearea = 'private'; 75 $component = 'user'; 76 $itemid = 0; 77 $context = context_user::instance($USER->id); 78 79 try { 80 $browser = get_file_browser(); 81 82 if ($fileinfo = $browser->get_file_info($context, $component, $filearea, $itemid, $filepath, $filename)) { 83 $pathnodes = array(); 84 $level = $fileinfo; 85 $params = $fileinfo->get_params(); 86 while ($level && $params['component'] == 'user' && $params['filearea'] == 'private') { 87 $encodedpath = base64_encode(json_encode($level->get_params())); 88 $pathnodes[] = array('name'=>$level->get_visible_name(), 'path'=>$encodedpath); 89 $level = $level->get_parent(); 90 $params = $level->get_params(); 91 } 92 $ret['path'] = array_reverse($pathnodes); 93 94 // build file tree 95 $children = $fileinfo->get_children(); 96 foreach ($children as $child) { 97 if ($child->is_directory()) { 98 $encodedpath = base64_encode(json_encode($child->get_params())); 99 $node = array( 100 'title' => $child->get_visible_name(), 101 'datemodified' => $child->get_timemodified(), 102 'datecreated' => $child->get_timecreated(), 103 'path' => $encodedpath, 104 'children'=>array(), 105 'thumbnail' => $OUTPUT->image_url(file_folder_icon(90))->out(false) 106 ); 107 $list[] = $node; 108 } else { 109 $encodedpath = base64_encode(json_encode($child->get_params())); 110 $node = array( 111 'title' => $child->get_visible_name(), 112 'size' => $child->get_filesize(), 113 'datemodified' => $child->get_timemodified(), 114 'datecreated' => $child->get_timecreated(), 115 'author' => $child->get_author(), 116 'license' => $child->get_license(), 117 'isref' => $child->is_external_file(), 118 'source'=> $encodedpath, 119 'icon' => $OUTPUT->image_url(file_file_icon($child, 24))->out(false), 120 'thumbnail' => $OUTPUT->image_url(file_file_icon($child, 90))->out(false) 121 ); 122 if ($child->get_status() == 666) { 123 $node['originalmissing'] = true; 124 } 125 if ($imageinfo = $child->get_imageinfo()) { 126 $fileurl = new moodle_url($child->get_url()); 127 $node['realthumbnail'] = $fileurl->out(false, array('preview' => 'thumb', 'oid' => $child->get_timemodified())); 128 $node['realicon'] = $fileurl->out(false, array('preview' => 'tinyicon', 'oid' => $child->get_timemodified())); 129 $node['image_width'] = $imageinfo['width']; 130 $node['image_height'] = $imageinfo['height']; 131 } 132 $list[] = $node; 133 } 134 } 135 } 136 } catch (Exception $e) { 137 throw new repository_exception('emptyfilelist', 'repository_user'); 138 } 139 $ret['list'] = $list; 140 $ret['list'] = array_filter($list, array($this, 'filter')); 141 return $ret; 142 } 143 144 /** 145 * Does this repository used to browse moodle files? 146 * 147 * @return boolean 148 */ 149 public function has_moodle_files() { 150 return true; 151 } 152 153 /** 154 * User cannot use the external link to dropbox 155 * 156 * @return int 157 */ 158 public function supported_returntypes() { 159 return FILE_INTERNAL | FILE_REFERENCE; 160 } 161 162 /** 163 * Is this repository accessing private data? 164 * 165 * @return bool 166 */ 167 public function contains_private_data() { 168 return false; 169 } 170 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body