index.php 10.3 KB
Newer Older
1
<?php
2

Petr Skoda's avatar
Petr Skoda committed
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

/**
 * Moodle frontpage.
 *
 * @package    core
 * @copyright  1999 onwards Martin Dougiamas (http://dougiamas.com)
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
25

26
27
28
29
30
    if (!file_exists('./config.php')) {
        header('Location: install.php');
        die;
    }

31
32
    require_once('config.php');
    require_once($CFG->dirroot .'/course/lib.php');
33
    require_once($CFG->libdir .'/filelib.php');
34

35
    redirect_if_major_upgrade_required();
36

37
38
    if ($CFG->forcelogin) {
        require_login();
39
40
    } else {
        user_accesstime_log();
41
42
    }

43
44
45
    $PAGE->set_url('/');
    $PAGE->set_course($SITE);

46
47
48
49
50
/// If the site is currently under maintenance, then print a message
    if (!empty($CFG->maintenance_enabled) and !has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) {
        print_maintenance_message();
    }

51
52
    if (has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) {
        if (moodle_needs_upgrading()) {
dhawes's avatar
dhawes committed
53
            redirect($CFG->wwwroot .'/'. $CFG->admin .'/index.php');
54
        }
55
56
57
58
59
60
61
62
    } else if (get_home_page() != HOMEPAGE_SITE) {
        // Redirect logged-in users to My Moodle overview if required
        if (optional_param('setdefaulthome', false, PARAM_BOOL)) {
            set_user_preference('user_home_page_preference', HOMEPAGE_SITE);
        } else if ($CFG->defaulthomepage == HOMEPAGE_MY && optional_param('redirect', true, PARAM_BOOL)) {
            redirect($CFG->wwwroot .'/my/');
        } else if (!empty($CFG->defaulthomepage) && $CFG->defaulthomepage == HOMEPAGE_USER) {
            $PAGE->settingsnav->get('usercurrentsettings')->add(get_string('makethismyhome'), new moodle_url('/', array('setdefaulthome'=>true)), navigation_node::TYPE_SETTING);
63
        }
64
65
    }

66
67
    if (get_moodle_cookie() == '') {
        set_moodle_cookie('nobody');   // To help search for cookies on login page
68
69
    }

70
    if (isloggedin()) {
moodler's avatar
moodler committed
71
        add_to_log(SITEID, 'course', 'view', 'view.php?id='.SITEID, SITEID);
martin's avatar
martin committed
72
    }
73

74
/// If the hub plugin is installed then we let it take over the homepage here
75
76
77
    if (get_config('local_hub', 'hubenabled') && file_exists($CFG->dirroot.'/local/hub/lib.php')) {
        require_once($CFG->dirroot.'/local/hub/lib.php');
        $hub = new local_hub();
78
        $hub->display_homepage();
79
80
81
        exit;
    }

82
    $PAGE->set_pagetype('site-index');
83
    $PAGE->set_other_editing_capability('moodle/course:manageactivities');
tjhunt's avatar
tjhunt committed
84
    $PAGE->set_docs_path('');
85
    $PAGE->set_pagelayout('frontpage');
86
    $editing = $PAGE->user_is_editing();
87
88
    $PAGE->set_title($SITE->fullname);
    $PAGE->set_heading($SITE->fullname);
89
    echo $OUTPUT->header();
urs_hunkler's avatar
urs_hunkler committed
90

91
/// Print Section
92
    if ($SITE->numsections > 0) {
93

94
        if (!$section = $DB->get_record('course_sections', array('course'=>$SITE->id, 'section'=>1))) {
95
            $DB->delete_records('course_sections', array('course'=>$SITE->id, 'section'=>1)); // Just in case
moodler's avatar
moodler committed
96
            $section->course = $SITE->id;
moodler's avatar
moodler committed
97
98
            $section->section = 1;
            $section->summary = '';
99
            $section->summaryformat = FORMAT_HTML;
100
            $section->sequence = '';
moodler's avatar
moodler committed
101
            $section->visible = 1;
102
            $section->id = $DB->insert_record('course_sections', $section);
moodler's avatar
moodler committed
103
        }
104

105
        if (!empty($section->sequence) or !empty($section->summary) or $editing) {
106
            echo $OUTPUT->box_start('generalbox sitetopic');
107

108
109
            /// If currently moving a file then show the current clipboard
            if (ismoving($SITE->id)) {
110
                $stractivityclipboard = strip_tags(get_string('activityclipboard', '', $USER->activitycopyname));
111
                echo '<p><font size="2">';
skodak's avatar
skodak committed
112
                echo "$stractivityclipboard&nbsp;&nbsp;(<a href=\"course/mod.php?cancelcopy=true&amp;sesskey=".sesskey()."\">". get_string('cancel') .'</a>)';
113
114
                echo '</font></p>';
            }
115

116
            $context = get_context_instance(CONTEXT_COURSE, SITEID);
117
            $summarytext = file_rewrite_pluginfile_urls($section->summary, 'pluginfile.php', $context->id, 'course', 'section', $section->id);
118
119
120
            $summaryformatoptions = new object();
            $summaryformatoptions->noclean = true;

121
            echo format_text($summarytext, $section->summaryformat, $summaryformatoptions);
122

123
124
125
            if ($editing) {
                $streditsummary = get_string('editsummary');
                echo "<a title=\"$streditsummary\" ".
126
                     " href=\"course/editsection.php?id=$section->id\"><img src=\"" . $OUTPUT->pix_url('t/edit') . "\" ".
127
                     " class=\"iconsmall\" alt=\"$streditsummary\" /></a><br /><br />";
128
129
130
131
            }

            get_all_mods($SITE->id, $mods, $modnames, $modnamesplural, $modnamesused);
            print_section($SITE, $section, $mods, $modnamesused, true);
132

133
134
135
            if ($editing) {
                print_section_add_menus($SITE, $section->section, $modnames);
            }
136
            echo $OUTPUT->box_end();
137
138
139
        }
    }

140
    if (isloggedin() and !isguestuser() and isset($CFG->frontpageloggedin)) {
141
142
143
144
145
        $frontpagelayout = $CFG->frontpageloggedin;
    } else {
        $frontpagelayout = $CFG->frontpage;
    }

146
    foreach (explode(',',$frontpagelayout) as $v) {
147
        switch ($v) {     /// Display the main part of the front page.
148
            case FRONTPAGENEWS:
149
150
151
152
                if ($SITE->newsitems) { // Print forums only when needed
                    require_once($CFG->dirroot .'/mod/forum/lib.php');

                    if (! $newsforum = forum_get_course_forum($SITE->id, 'news')) {
dongsheng's avatar
dongsheng committed
153
                        print_error('cannotfindorcreateforum', 'forum');
154
                    }
155
                    echo html_writer::tag('a', get_string('skipa', 'access', moodle_strtolower($newsforum->name)), array('href'=>'#skipsitenews', 'class'=>'skip-block'));
156

157
                    if (isloggedin()) {
158
                        $SESSION->fromdiscussion = $CFG->wwwroot;
159
                        $subtext = '';
160
                        if (forum_is_subscribed($USER->id, $newsforum)) {
161
162
163
                            if (!forum_is_forcesubscribed($newsforum)) {
                                $subtext = get_string('unsubscribe', 'forum');
                            }
164
165
166
                        } else {
                            $subtext = get_string('subscribe', 'forum');
                        }
167
                        echo $OUTPUT->heading($newsforum->name, 2, 'headingblock header');
168
                        echo '<div class="subscribelink"><a href="mod/forum/subscribe.php?id='.$newsforum->id.'">'.$subtext.'</a></div>';
169
                    } else {
170
                        echo $OUTPUT->heading($newsforum->name, 2, 'headingblock header');
171
                    }
172

173
                    forum_print_latest_discussions($SITE, $newsforum, $SITE->newsitems, 'plain', 'p.modified DESC');
174
                    echo html_writer::tag('span', '', array('class'=>'skip-block-to', 'id'=>'skipsitenews'));
175
                }
176
            break;
177

178
            case FRONTPAGECOURSELIST:
179
                if (isloggedin() and !has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM)) and !isguestuser() and empty($CFG->disablemycourses)) {
180
                    echo html_writer::tag('a', get_string('skipa', 'access', moodle_strtolower(get_string('mycourses'))), array('href'=>'#skipmycourses', 'class'=>'skip-block'));
181
                    echo $OUTPUT->heading(get_string('mycourses'), 2, 'headingblock header');
182
                    print_my_moodle();
183
                    echo html_writer::tag('span', '', array('class'=>'skip-block-to', 'id'=>'skipmycourses'));
184
                } else if ((!has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM)) and !isguestuser()) or ($DB->count_records('course') <= FRONTPAGECOURSELIMIT)) {
185
                    // admin should not see list of courses when there are too many of them
186
                    echo html_writer::tag('a', get_string('skipa', 'access', moodle_strtolower(get_string('availablecourses'))), array('href'=>'#skipavailablecourses', 'class'=>'skip-block'));
187
                    echo $OUTPUT->heading(get_string('availablecourses'), 2, 'headingblock header');
188
                    print_courses(0);
189
                    echo html_writer::tag('span', '', array('class'=>'skip-block-to', 'id'=>'skipavailablecourses'));
190
                }
191
            break;
192

193
            case FRONTPAGECATEGORYNAMES:
194
                echo html_writer::tag('a', get_string('skipa', 'access', moodle_strtolower(get_string('categories'))), array('href'=>'#skipcategories', 'class'=>'skip-block'));
195
                echo $OUTPUT->heading(get_string('categories'), 2, 'headingblock header');
196
                echo $OUTPUT->box_start('generalbox categorybox');
197
                print_whole_category_list(NULL, NULL, NULL, -1, false);
198
                echo $OUTPUT->box_end();
199
                print_course_search('', false, 'short');
200
                echo html_writer::tag('span', '', array('class'=>'skip-block-to', 'id'=>'skipcategories'));
201
202
            break;

203
            case FRONTPAGECATEGORYCOMBO:
204
205
                echo html_writer::tag('a', get_string('skipa', 'access', moodle_strtolower(get_string('courses'))), array('href'=>'#skipcourses', 'class'=>'skip-block'));
                echo $OUTPUT->heading(get_string('courses'), 2, 'headingblock header');
206
207
                $renderer = $PAGE->get_renderer('core','course');
                echo $renderer->course_category_tree(get_course_category_tree());
208
                print_course_search('', false, 'short');
209
                echo html_writer::tag('span', '', array('class'=>'skip-block-to', 'id'=>'skipcourses'));
210
211
            break;

212
213
            case FRONTPAGETOPICONLY:    // Do nothing!!  :-)
            break;
214

215
216
        }
        echo '<br />';
217
218
    }

219
    echo $OUTPUT->footer();