environment.php 6.12 KB
Newer Older
1
<?php  //$Id$
2
3
4
5
6
7
8
9

///////////////////////////////////////////////////////////////////////////
//                                                                       //
// NOTICE OF COPYRIGHT                                                   //
//                                                                       //
// Moodle - Modular Object-Oriented Dynamic Learning Environment         //
//          http://moodle.com                                            //
//                                                                       //
10
// Copyright (C) 1999 onwards Martin Dougiamas     http://dougiamas.com  //
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//           (C) 2001-3001 Eloy Lafuente (stronk7) http://contiento.com  //
//                                                                       //
// This program 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 2 of the License, or     //
// (at your option) any later version.                                   //
//                                                                       //
// This program 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:                          //
//                                                                       //
//          http://www.gnu.org/copyleft/gpl.html                         //
//                                                                       //
///////////////////////////////////////////////////////////////////////////

27
28
29
30
// This file is the admin frontend to execute all the checks available
// in the environment.xml file. It includes database, php and
// php_extensions. Also, it's possible to update the xml file
// from moodle.org be able to check more and more versions.
31

stronk7's avatar
stronk7 committed
32
    require_once('../config.php');
33
    require_once($CFG->libdir.'/adminlib.php');
stronk7's avatar
stronk7 committed
34
    require_once($CFG->libdir.'/environmentlib.php');
35
    require_once($CFG->libdir.'/componentlib.class.php');
stronk7's avatar
stronk7 committed
36

37
    admin_externalpage_setup('environment');
stronk7's avatar
stronk7 committed
38
39

/// Parameters
skodak's avatar
skodak committed
40
41
    $action  = optional_param('action', '', PARAM_ACTION);
    $version = optional_param('version', '', PARAM_FILE); //
stronk7's avatar
stronk7 committed
42
43
44
45
46
47
48
49


/// Get some strings
    $stradmin = get_string('administration');
    $stradminhelpenvironment = get_string("adminhelpenvironment");
    $strenvironment = get_string('environment', 'admin');
    $strerror = get_string('error');
    $strmoodleversion = get_string('moodleversion');
50
    $strupdate = get_string('updatecomponent', 'admin');
stronk7's avatar
stronk7 committed
51
    $strupwards = get_string('upwards', 'admin');
52
    $strmisc = get_string('miscellaneous');
stronk7's avatar
stronk7 committed
53
54

/// Print the header stuff
55
    admin_externalpage_print_header();
stronk7's avatar
stronk7 committed
56

57
/// Print the component download link
skodak's avatar
skodak committed
58
    echo '<div class="reportlink"><a href="environment.php?action=updatecomponent&amp;sesskey='.sesskey().'">'.$strupdate.'</a></div>';
59

60
    echo $OUTPUT->heading($strenvironment);
stronk7's avatar
stronk7 committed
61

62
63
64
65
66
/// Handle the 'updatecomponent' action
    if ($action == 'updatecomponent' && confirm_sesskey()) {
    /// Create component installer and execute it
        if ($cd = new component_installer('http://download.moodle.org', 
                                          'environment', 
stronk7's avatar
stronk7 committed
67
                                          'environment.zip')) {
68
            $status = $cd->install(); //returns COMPONENT_(ERROR | UPTODATE | INSTALLED)
69
            switch ($status) {
70
                case COMPONENT_ERROR:
71
                    if ($cd->get_error() == 'remotedownloaderror') {
72
73
74
75
76
77
78
79
                        $a = new stdClass();
                        $a->url = 'http://download.moodle.org/environment/environment.zip';
                        $a->dest= $CFG->dataroot.'/';
                        print_simple_box(get_string($cd->get_error(), 'error', $a), 'center', '', '', 5, 'errorbox');
                    } else {
                        print_simple_box(get_string($cd->get_error(), 'error'), 'center', '', '', 5, 'errorbox');
                    }
                    break;
80
                case COMPONENT_UPTODATE:
81
82
                    print_simple_box(get_string($cd->get_error(), 'error'), 'center');
                    break;
83
                case COMPONENT_INSTALLED:
84
85
86
87
88
89
                    print_simple_box(get_string('componentinstalled', 'admin'), 'center');
                    break;
            }
        }
    }

stronk7's avatar
stronk7 committed
90
/// Start of main box
91
92
    print_simple_box_start('center');

toyomoyo's avatar
toyomoyo committed
93
    echo "<div style=\"text-align:center\">".$stradminhelpenvironment."</div><br />";
stronk7's avatar
stronk7 committed
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122

/// Get current Moodle version
    $current_version = $CFG->release;

/// Calculate list of versions
    $versions = array();
    if ($contents = load_environment_xml()) {
        if ($env_versions = get_list_of_environment_versions($contents)) {
        /// Set the current version at the beginning
            $env_version = normalize_version($current_version); //We need this later (for the upwards)
            $versions[$env_version] = $current_version;
        /// If no version has been previously selected, default to $current_version
            if (empty($version)) {
                $version =  $env_version;
            }
        ///Iterate over each version, adding bigged than current
            foreach ($env_versions as $env_version) {
                if (version_compare(normalize_version($current_version), $env_version, '<')) {
                    $versions[$env_version] = $env_version;
                }
            }
        /// Add 'upwards' to the last element
            $versions[$env_version] = $env_version.' '.$strupwards;
        } else {
            $versions = array('error' => $strerror);
        }
    }

/// Print form and popup menu
toyomoyo's avatar
toyomoyo committed
123
    echo '<div style="text-align:center">'.$strmoodleversion.' ';
124
125
126
127
    popup_form("$CFG->wwwroot/$CFG->admin/environment.php?version=",
        $versions, 'selectversion', $version, '');
    echo '</div>';

stronk7's avatar
stronk7 committed
128
129
130
/// End of main box
    print_simple_box_end();

131
132
133
/// Gather and show results
    $status = check_moodle_environment($version, $environment_results);

stronk7's avatar
stronk7 committed
134
/// Print footer
135
    echo $OUTPUT->footer();
stronk7's avatar
stronk7 committed
136
?>