index.php 10.2 KB
Newer Older
moodler's avatar
moodler committed
1
2
<?PHP  // $Id$
       // index.php - the front page.
3

defacer's avatar
defacer committed
4
5
6
7
8
9
    // Bounds for block widths
    define('BLOCK_L_MIN_WIDTH', 160);
    define('BLOCK_L_MAX_WIDTH', 210);
    define('BLOCK_R_MIN_WIDTH', 160);
    define('BLOCK_R_MAX_WIDTH', 210);

10
11
    require_once("config.php");
    require_once("course/lib.php");
12
13
    require_once('lib/blocklib.php');
    require_once("mod/resource/lib.php");
14
    require_once("mod/forum/lib.php");
martin's avatar
martin committed
15

16
    if (! $site = get_site()) {
moodler's avatar
moodler committed
17
        redirect("$CFG->wwwroot/$CFG->admin/index.php");
martin's avatar
martin committed
18
19
    }

20
21
22
23
    if ($CFG->forcelogin) {
        require_login();
    }

24
25
    if (isadmin()) {
        if (moodle_needs_upgrading()) {
moodler's avatar
moodler committed
26
            redirect("$CFG->wwwroot/$CFG->admin/index.php");
27
        }
28
29
30
    }

    if (empty($USER->id)) {
31
32
33
34
35
36
        if (empty($CFG->loginhttps)) {
            $wwwroot = $CFG->wwwroot;
        } else {
            $wwwroot = str_replace('http','https',$CFG->wwwroot);
        }
        $loginstring = "<font size=2><a href=\"$wwwroot/login/index.php\">".get_string("login")."</a></font>";
37
    } else {
38
        $loginstring = "<font size=1>".user_login_string($site)."</font>";
martin's avatar
martin committed
39
    }
40

41
42
43
44
45
    if (empty($CFG->langmenu)) {
        $langmenu = "";
    } else {
        $currlang = current_language();
        $langs = get_list_of_languages();
46
        $langmenu = popup_form ("$CFG->wwwroot/index.php?lang=", $langs, "chooselang", $currlang, "", "", "", true);
47
    }
48

moodler's avatar
moodler committed
49
    print_header(strip_tags($site->fullname), "$site->fullname", "home", "",
50
                 "<meta name=\"description\" content=\"".s(strip_tags($site->summary))."\">",
51
                 true, "", "$loginstring$langmenu");
martin's avatar
martin committed
52

53
54
55
56
57
58
    $editing = isediting($site->id);

    $courseformat = COURSE_FORMAT_SITE;

    // Doing this now so we can pass the results to block_action()
    // and dodge the overhead of doing the same work twice.
59

60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
    $blocks = $site->blockinfo;
    $delimpos = strpos($blocks, ':');

    if($delimpos === false) {
        // No ':' found, we have all left blocks
        $leftblocks = explode(',', $blocks);
        $rightblocks = array();
    }
    else if($delimpos === 0) {
        // ':' at start of string, we have all right blocks
        $blocks = substr($blocks, 1);
        $leftblocks = array();
        $rightblocks = explode(',', $blocks);
    }
    else {
        // Both left and right blocks
        $leftpart = substr($blocks, 0, $delimpos);
        $rightpart = substr($blocks, $delimpos + 1);
        $leftblocks = explode(',', $leftpart);
        $rightblocks = explode(',', $rightpart);
moodler's avatar
moodler committed
80
81
    }

82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
    if($editing) {
        if (isset($_GET['blockaction'])) {
            if (isset($_GET['blockid'])) {
                block_action($site, $leftblocks, $rightblocks, strtolower($_GET['blockaction']), intval($_GET['blockid']));
            }
        }

        // This has to happen after block_action() has possibly updated the two arrays
        $allblocks = array_merge($leftblocks, $rightblocks);

        $missingblocks = array();
        $recblocks = get_records('blocks','visible','1');

        // Note down which blocks are going to get displayed
        blocks_used($allblocks, $recblocks);

        if($editing && $recblocks) {
            foreach($recblocks as $recblock) {
                // If it's not hidden or displayed right now...
                if(!in_array($recblock->id, $allblocks) && !in_array(-($recblock->id), $allblocks)) {
                    // And if it's applicable for display in this format...
                    if(block_method_result($recblock->name, 'applicable_formats') & $courseformat) {
                        // Add it to the missing blocks
                        $missingblocks[] = $recblock->id;
                    }
                }
            }
        }
moodler's avatar
moodler committed
110
    }
111
112
113
114
115
116
117
118
    else {
        // Note down which blocks are going to get displayed
        $allblocks = array_merge($leftblocks, $rightblocks);
        $recblocks = get_records('blocks','visible','1');
        blocks_used($allblocks, $recblocks);
    }

    // If the block width cache is not set, set it
moodler's avatar
moodler committed
119
120
    if(!isset($SESSION) or !isset($SESSION->blockcache) or 
        !isset($SESSION->blockcache->width->{$site->id}) or $editing) {
121
122
123
124
125
126
        // This query might be optimized away if we 're in editing mode
        if(!isset($recblocks)) {
            $recblocks = get_records('blocks','visible','1');
        }
        $preferred_width_left = blocks_preferred_width($leftblocks, $recblocks);
        $preferred_width_right = blocks_preferred_width($rightblocks, $recblocks);
moodler's avatar
moodler committed
127

128
129
130
131
        // This may be kind of organizational overkill, granted...
        // But is there any real need to simplify the structure?
        $SESSION->blockcache->width->{$site->id}->left = $preferred_width_left;
        $SESSION->blockcache->width->{$site->id}->right = $preferred_width_right;
moodler's avatar
moodler committed
132
    } else {
133
134
135
        $preferred_width_left = $SESSION->blockcache->width->{$site->id}->left;
        $preferred_width_right = $SESSION->blockcache->width->{$site->id}->right;
    }
moodler's avatar
moodler committed
136

defacer's avatar
defacer committed
137
138
139
140
141
    $preferred_width_left = min($preferred_width_left, BLOCK_L_MAX_WIDTH);
    $preferred_width_left = max($preferred_width_left, BLOCK_L_MIN_WIDTH);
    $preferred_width_right = min($preferred_width_right, BLOCK_R_MAX_WIDTH);
    $preferred_width_right = max($preferred_width_right, BLOCK_R_MIN_WIDTH);

martin's avatar
martin committed
142
143
?>

144

145
146
<table width="100%" border="0" cellspacing="5" cellpadding="5">
  <tr>
147
148
149
150
151
152
153
154
155
  <?PHP

    if(block_have_active($leftblocks) || $editing) {
        echo '<td style="vertical-align: top; width: '.$preferred_width_left.'px;">';
        print_course_blocks($site, $leftblocks, BLOCK_LEFT);
        echo '</td>';
    }

    echo '<td style="vertical-align: top;">';
156
157
158
159
    
    
/// Print Section
    if ($site->numsections > 0) {
moodler's avatar
moodler committed
160
        print_simple_box_start('center', '100%', $THEME->cellcontent, 5, 'sitetopic');
161
162
163
164
165
    
        /// If currently moving a file then show the current clipboard
        if (ismoving($site->id)) {
            $stractivityclipboard = strip_tags(get_string("activityclipboard", "", addslashes($USER->activitycopyname)));
            echo "<p><font size=2>";
moodler's avatar
moodler committed
166
            echo "$stractivityclipboard&nbsp;&nbsp;(<a href=\"course/mod.php?cancelcopy=true\">".get_string("cancel")."</a>)";
167
168
169
170
            echo "</font></p>";
        }


moodler's avatar
moodler committed
171
172
173
174
175
176
177
178
        if (!$section = get_record('course_sections', 'course', $site->id, 'section', 1)) {
            delete_records('course_sections', 'course', $site->id, 'section', 1); // Just in case
            $section->course = $site->id;
            $section->section = 1;
            $section->summary = '';
            $section->visible = 1;
            $section->id = insert_record('course_sections', $section);
        }
179

moodler's avatar
moodler committed
180
        echo format_text($section->summary, FORMAT_HTML);
181
182

        if ($editing) {
moodler's avatar
moodler committed
183
            $streditsummary = get_string('editsummary');
184
            echo "<a title=\"$streditsummary\" ".
moodler's avatar
moodler committed
185
                 " href=\"course/editsection.php?id=$section->id\"><img src=\"$CFG->pixpath/t/edit.gif\" ".
186
187
188
189
190
                 " height=11 width=11 border=0 alt=\"$streditsummary\"></a><br />";
        }

        echo '<br clear="all">';

moodler's avatar
moodler committed
191
192
        get_all_mods($site->id, $mods, $modnames, $modnamesplural, $modnamesused);
        print_section($site, $section, $mods, $modnamesused, true);
193
194

        if ($editing) {
195
            print_section_add_menus($site, $section->section, $modnames);
196
        }
moodler's avatar
moodler committed
197
198
        print_simple_box_end();
        print_spacer(10);
199
200
    }

201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
    switch ($CFG->frontpage) {     /// Display the main part of the front page.
        case FRONTPAGENEWS:
            if (! $newsforum = forum_get_course_forum($site->id, "news")) {
                error("Could not find or create a main news forum for the site");
            }

            if (isset($USER->id)) {
                $SESSION->fromdiscussion = "$CFG->wwwroot";
                if (forum_is_subscribed($USER->id, $newsforum->id)) {
                    $subtext = get_string("unsubscribe", "forum");
                } else {
                    $subtext = get_string("subscribe", "forum");
                }
                $headertext = "<table border=0 width=100% cellpadding=0 cellspacing=0 class=headingblockcontent><tr>
                               <td>$newsforum->name</td>
                               <td align=right><font size=1>
                               <a href=\"mod/forum/subscribe.php?id=$newsforum->id\">$subtext</a>
                               </td></tr></table>";
            } else {
                $headertext = $newsforum->name;
            }
            print_heading_block($headertext);
            print_spacer(8,1);
            forum_print_latest_discussions($newsforum->id, $site->newsitems);
        break;

        case FRONTPAGECOURSELIST:
        case FRONTPAGECATEGORYNAMES:
            if (isset($USER->id) and !isset($USER->admin)) {
                print_heading_block(get_string("mycourses"));
                print_spacer(8,1);
                print_my_moodle();
            } else {
                if (count_records("course_categories") > 1) {
                    if ($CFG->frontpage == FRONTPAGECOURSELIST) {
                        print_heading_block(get_string("availablecourses"));
                    } else {
                        print_heading_block(get_string("categories"));
                    }
                    print_spacer(8,1);
                    print_simple_box_start("center", "100%");
                    print_whole_category_list();
                    print_simple_box_end();
                    print_course_search("", false, "short");
                } else {
                    print_heading_block(get_string("availablecourses"));
                    print_spacer(8,1);
                    print_courses(0, "100%");
                }
            }
        break;

    }

    echo '</td>';
    if(block_have_active($rightblocks) || $editing || isadmin()) {
        echo '<td style="vertical-align: top; width: '.$preferred_width_right.'px;">';
        if (isadmin()) {
            echo '<div align="center">'.update_course_icon($site->id).'</div>';
            echo '<br />';
        }
        print_course_blocks($site, $rightblocks, BLOCK_RIGHT);
        if ($editing && !empty($missingblocks)) {
264
            block_print_blocks_admin($site, $missingblocks);
265
266
267
268
        }
        echo '</td>';
    }
?>
269

270
271
  </tr>
</table>
martin's avatar
martin committed
272

273
<?PHP print_footer('home');     // Please do not modify this line ?>
martin's avatar
martin committed
274