MDL-22547 course->legacyfiles switch implemented
[moodle.git] / lib / file / file_info_course.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  * Utility class for browsing of course files.
21  *
22  * @package    moodlecore
23  * @subpackage file-browser
24  * @copyright  2008 Petr Skoda (http://skodak.org)
25  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
26  */
28 /**
29  * Represents a course context in the tree navigated by @see{file_browser}.
30  */
31 class file_info_course extends file_info {
32     protected $course;
34     public function __construct($browser, $context, $course) {
35         global $DB;
36         parent::__construct($browser, $context);
37         $this->course   = $course;
38     }
40     /**
41      * Returns list of standard virtual file/directory identification.
42      * The difference from stored_file parameters is that null values
43      * are allowed in all fields
44      * @return array with keys contextid, filearea, itemid, filepath and filename
45      */
46     public function get_params() {
47         return array('contextid'=>$this->context->id,
48                      'filearea' =>null,
49                      'itemid'   =>null,
50                      'filepath' =>null,
51                      'filename' =>null);
52     }
54     public function get_visible_name() {
55         return ($this->course->id == SITEID) ? get_string('frontpage', 'admin') : format_string($this->course->fullname);
56     }
58     /**
59      * Can I add new files or directories?
60      * @return bool
61      */
62     public function is_writable() {
63         return false;
64     }
66     /**
67      * Is directory?
68      * @return bool
69      */
70     public function is_directory() {
71         return true;
72     }
74     /**
75      * Returns list of children.
76      * @return array of file_info instances
77      */
78     public function get_children() {
79         $children = array();
81         if ($child = $this->browser->get_file_info($this->context, 'course_intro', 0)) {
82             $children[] = $child;
83         }
84         if ($child = $this->browser->get_file_info($this->context, 'course_section')) {
85             $children[] = $child;
86         }
87         if ($child = $this->browser->get_file_info($this->context, 'section_backup')) {
88             $children[] = $child;
89         }
91         if ($child = $this->browser->get_file_info($this->context, 'course_backup', 0)) {
92             $children[] = $child;
93         }
95         if ($this->course->legacyfiles == 2) {
96             if ($child = $this->browser->get_file_info($this->context, 'course_content', 0)) {
97                 $children[] = $child;
98             }
99         }
101         $modinfo = get_fast_modinfo($this->course);
102         foreach ($modinfo->cms as $cminfo) {
103             if (empty($cminfo->uservisible)) {
104                 continue;
105             }
106             $modcontext = get_context_instance(CONTEXT_MODULE, $cminfo->id);
107             if ($child = $this->browser->get_file_info($modcontext)) {
108                 $children[] = $child;
109             }
110         }
112         return $children;
113     }
115     /**
116      * Returns parent file_info instance
117      * @return file_info or null for root
118      */
119     public function get_parent() {
120         //TODO: error checking if get_parent_contextid() returns false
121         $pcid = get_parent_contextid($this->context);
122         $parent = get_context_instance_by_id($pcid);
123         return $this->browser->get_file_info($parent);
124     }