"MDL-21021, added a block to manager user private files"
[moodle.git] / blocks / private_files / block_private_files.php
1 <?php
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/>.
19 /**
20  * Manage user private area files
21  *
22  * @package    moodlecore
23  * @subpackage repository
24  * @copyright  2010 Dongsheng Cai <dongsheng@moodle.com> 
25  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
26  */
29 require_once($CFG->dirroot. '/repository/lib.php');
31 class block_private_files extends block_base {
33     function init() {
34         $this->title = get_string('privatefiles', 'block_private_files');
35         $this->version = 2010030100;
36     }
38     function specialization() {
39     }
40     function applicable_formats() {
41         return array('all' => true);
42     }
44     function instance_allow_multiple() {
45         return false;
46     }
48     function get_content() {
49         global $CFG, $USER, $PAGE;
50         if ($this->content !== NULL) {
51             return $this->content;
52         }
53         if (empty($this->instance)) {
54             return null;
55         }
56         $this->content->text = '';
57         $this->content->footer = '';
58         if (isloggedin() && !isguestuser()) {   // Show the block
59             $usercontext = get_context_instance(CONTEXT_USER, $USER->id);
60             $client_id = uniqid();
62             $params = new stdclass;
63             $params->accepted_types = '*';
64             $params->return_types = FILE_INTERNAL;
65             $params->context = $PAGE->context;
66             $params->env = 'filemanager';
68             $filepicker_options = initialise_filepicker($params);
70             $fs = get_file_storage();
71             $draftfiles = $fs->get_area_files($usercontext->id, 'user_private', 0, 'id', false);
72             // the number of existing files in user private area
73             $filecount = count($draftfiles);
75             // read existing user private files
76             $options = file_get_user_area_files(0, '/', 'user_private');
77             $options->maxbytes  = -1;
78             $options->maxfiles  = -1;
79             $options->filearea  = 'user_private';
80             $options->client_id = $client_id;
81             $options->filecount = $filecount;
82             $options->itemid    = 0;
83             $options->subdirs   = true;
84             // store filepicker options
85             $options->filepicker = $filepicker_options;
87             $this->content = new stdClass;
88             $this->content->text = print_filemanager($options, true);
89 ;
90             $this->content->footer = '';
92         }
93         return $this->content;
94     }
95 }