MDL-34466 mod_folder Replace all instances of get_context_instance() with respective...
[moodle.git] / mod / folder / renderer.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/>.
18 /**
19  * Folder module renderer
20  *
21  * @package    mod
22  * @subpackage folder
23  * @copyright  2009 Petr Skoda  {@link http://skodak.org}
24  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25  */
26 defined('MOODLE_INTERNAL') || die();
28 class mod_folder_renderer extends plugin_renderer_base {
30     /**
31      * Prints file folder tree view
32      * @param object $folder instance
33      * @param object $cm instance
34      * @param object $course
35      * @return void
36      */
37     public function folder_tree($folder, $cm, $course) {
38         $this->render(new folder_tree($folder, $cm, $course));
39     }
41     public function render_folder_tree(folder_tree $tree) {
42         global $PAGE;
44         echo '<div id="folder_tree" class="filemanager">';
45         echo $this->htmllize_tree($tree, array('files' => array(), 'subdirs' => array($tree->dir)));
46         echo '</div>';
47         $this->page->requires->js_init_call('M.mod_folder.init_tree', array(true));
48     }
50     /**
51      * Internal function - creates htmls structure suitable for YUI tree.
52      */
53     protected function htmllize_tree($tree, $dir) {
54         global $CFG;
56         if (empty($dir['subdirs']) and empty($dir['files'])) {
57             return '';
58         }
59         $browser = get_file_browser();
60         $result = '<ul>';
61         foreach ($dir['subdirs'] as $subdir) {
62             $image = $this->output->pix_icon(file_folder_icon(24), $subdir['dirname'], 'moodle');
63             $filename = html_writer::tag('span', $image, array('class' => 'fp-icon')). html_writer::tag('span', s($subdir['dirname']), array('class' => 'fp-filename'));
64             $filename = html_writer::tag('div', $filename, array('class' => 'fp-filename-icon'));
65             $result .= html_writer::tag('li', $filename. $this->htmllize_tree($tree, $subdir));
66         }
67         foreach ($dir['files'] as $file) {
68             $fileinfo = $browser->get_file_info($tree->context, $file->get_component(),
69                     $file->get_filearea(), $file->get_itemid(), $file->get_filepath(), $file->get_filename());
70             $url = $fileinfo->get_url(true);
71             $filename = $file->get_filename();
72             if ($imageinfo = $fileinfo->get_imageinfo()) {
73                 $fileurl = new moodle_url($fileinfo->get_url());
74                 $image = $fileurl->out(false, array('preview' => 'tinyicon', 'oid' => $fileinfo->get_timemodified()));
75                 $image = html_writer::empty_tag('img', array('src' => $image));
76             } else {
77                 $image = $this->output->pix_icon(file_file_icon($file, 24), $filename, 'moodle');
78             }
79             $filename = html_writer::tag('span', $image, array('class' => 'fp-icon')). html_writer::tag('span', $filename, array('class' => 'fp-filename'));
80             $filename = html_writer::tag('span', html_writer::link($url, $filename), array('class' => 'fp-filename-icon'));
81             $result .= html_writer::tag('li', $filename);
82         }
83         $result .= '</ul>';
85         return $result;
86     }
87 }
89 class folder_tree implements renderable {
90     public $context;
91     public $folder;
92     public $cm;
93     public $course;
94     public $dir;
96     public function __construct($folder, $cm, $course) {
97         $this->folder = $folder;
98         $this->cm     = $cm;
99         $this->course = $course;
101         $this->context = context_module::instance($cm->id);
102         $fs = get_file_storage();
103         $this->dir = $fs->get_area_tree($this->context->id, 'mod_folder', 'content', 0);
104     }