Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
/**
18
 * Store management setting.
19
 *
20
 * @package    tool_log
21
 * @copyright  2013 Petr Skoda {@link http://skodak.org}
22
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23
 */
24
 
25
defined('MOODLE_INTERNAL') || die();
26
 
27
require_once("$CFG->libdir/adminlib.php");
28
 
29
class tool_log_setting_managestores extends admin_setting {
30
    /**
31
     * Calls parent::__construct with specific arguments
32
     */
33
    public function __construct() {
34
        $this->nosave = true;
35
        parent::__construct('tool_log_manageui', get_string('managelogging', 'tool_log'), '', '');
36
    }
37
 
38
    /**
39
     * Always returns true, does nothing.
40
     *
41
     * @return true
42
     */
43
    public function get_setting() {
44
        return true;
45
    }
46
 
47
    /**
48
     * Always returns true, does nothing.
49
     *
50
     * @return true
51
     */
52
    public function get_defaultsetting() {
53
        return true;
54
    }
55
 
56
    /**
57
     * Always returns '', does not write anything.
58
     *
59
     * @param mixed $data ignored
60
     * @return string Always returns ''
61
     */
62
    public function write_setting($data) {
63
        // Do not write any setting.
64
        return '';
65
    }
66
 
67
    /**
68
     * Checks if $query is one of the available log plugins.
69
     *
70
     * @param string $query The string to search for
71
     * @return bool Returns true if found, false if not
72
     */
73
    public function is_related($query) {
74
        if (parent::is_related($query)) {
75
            return true;
76
        }
77
 
78
        $query = core_text::strtolower($query);
79
        $plugins = \tool_log\log\manager::get_store_plugins();
80
        foreach ($plugins as $plugin => $fulldir) {
81
            if (strpos(core_text::strtolower($plugin), $query) !== false) {
82
                return true;
83
            }
84
            $localised = get_string('pluginname', $plugin);
85
            if (strpos(core_text::strtolower($localised), $query) !== false) {
86
                return true;
87
            }
88
        }
89
        return false;
90
    }
91
 
92
    /**
93
     * Builds the XHTML to display the control.
94
     *
95
     * @param string $data Unused
96
     * @param string $query
97
     * @return string
98
     */
99
    public function output_html($data, $query = '') {
100
        global $OUTPUT, $PAGE;
101
 
102
        // Display strings.
103
        $strup = get_string('up');
104
        $strdown = get_string('down');
105
        $strsettings = get_string('settings');
106
        $strenable = get_string('enable');
107
        $strdisable = get_string('disable');
108
        $struninstall = get_string('uninstallplugin', 'core_admin');
109
        $strversion = get_string('version');
110
 
111
        $pluginmanager = core_plugin_manager::instance();
112
        $logmanager = new \tool_log\log\manager();
113
        $available = $logmanager->get_store_plugins();
114
        $enabled = get_config('tool_log', 'enabled_stores');
115
        if (!$enabled) {
116
            $enabled = array();
117
        } else {
118
            $enabled = array_flip(explode(',', $enabled));
119
        }
120
 
121
        $allstores = array();
122
        foreach ($enabled as $key => $store) {
123
            $allstores[$key] = true;
124
            $enabled[$key] = true;
125
        }
126
        foreach ($available as $key => $store) {
127
            $allstores[$key] = true;
128
            $available[$key] = true;
129
        }
130
 
131
        $return = $OUTPUT->heading(get_string('actlogshdr', 'tool_log'), 3, 'main', true);
132
        $return .= $OUTPUT->box_start('generalbox loggingui');
133
 
134
        $table = new html_table();
135
        $table->head = array(get_string('name'), get_string('reportssupported', 'tool_log'), $strversion, $strenable,
136
                $strup . '/' . $strdown, $strsettings, $struninstall);
137
        $table->colclasses = array('leftalign', 'centeralign', 'centeralign', 'centeralign', 'centeralign', 'centeralign',
138
                'centeralign');
139
        $table->id = 'logstoreplugins';
140
        $table->attributes['class'] = 'admintable generaltable';
141
        $table->data = array();
142
 
143
        // Iterate through store plugins and add to the display table.
144
        $updowncount = 1;
145
        $storecount = count($enabled);
146
        $url = new moodle_url('/admin/tool/log/stores.php', array('sesskey' => sesskey()));
147
        $printed = array();
148
        foreach ($allstores as $store => $unused) {
149
            $plugininfo = $pluginmanager->get_plugin_info($store);
150
            $version = get_config($store, 'version');
151
            if ($version === false) {
152
                $version = '';
153
            }
154
 
155
            if (get_string_manager()->string_exists('pluginname', $store)) {
156
                $name = get_string('pluginname', $store);
157
            } else {
158
                $name = $store;
159
            }
160
 
161
            $reports = $logmanager->get_supported_reports($store);
162
            if (!empty($reports)) {
163
                $supportedreports = implode(', ', $reports);
164
            } else {
165
                $supportedreports = '-';
166
            }
167
 
168
            // Hide/show links.
169
            if (isset($enabled[$store])) {
170
                $aurl = new moodle_url($url, array('action' => 'disable', 'store' => $store));
171
                $hideshow = "<a href=\"$aurl\">";
172
                $hideshow .= $OUTPUT->pix_icon('t/hide', $strdisable) . '</a>';
173
                $isenabled = true;
174
                $displayname = "<span>$name</span>";
175
            } else {
176
                if (isset($available[$store])) {
177
                    $aurl = new moodle_url($url, array('action' => 'enable', 'store' => $store));
178
                    $hideshow = "<a href=\"$aurl\">";
179
                    $hideshow .= $OUTPUT->pix_icon('t/show', $strenable) . '</a>';
180
                    $isenabled = false;
181
                    $displayname = "<span>$name</span>";
182
                } else {
183
                    $hideshow = '';
184
                    $isenabled = false;
185
                    $displayname = '<span class="notifyproblem">' . $name . '</span>';
186
                }
187
            }
188
            if ($PAGE->theme->resolve_image_location('icon', $store, false)) {
189
                $icon = $OUTPUT->pix_icon('icon', '', $store, array('class' => 'icon pluginicon'));
190
            } else {
191
                $icon = $OUTPUT->spacer();
192
            }
193
 
194
            // Up/down link (only if store is enabled).
195
            $updown = '';
196
            if ($isenabled) {
197
                if ($updowncount > 1) {
198
                    $aurl = new moodle_url($url, array('action' => 'up', 'store' => $store));
199
                    $updown .= "<a href=\"$aurl\">";
200
                    $updown .= $OUTPUT->pix_icon('t/up', $strup) . '</a>&nbsp;';
201
                } else {
202
                    $updown .= $OUTPUT->spacer();
203
                }
204
                if ($updowncount < $storecount) {
205
                    $aurl = new moodle_url($url, array('action' => 'down', 'store' => $store));
206
                    $updown .= "<a href=\"$aurl\">";
207
                    $updown .= $OUTPUT->pix_icon('t/down', $strdown) . '</a>&nbsp;';
208
                } else {
209
                    $updown .= $OUTPUT->spacer();
210
                }
211
                ++$updowncount;
212
            }
213
 
214
            // Add settings link.
215
            if (!$version) {
216
                $settings = '';
217
            } else {
218
                if ($surl = $plugininfo->get_settings_url()) {
219
                    $settings = html_writer::link($surl, $strsettings);
220
                } else {
221
                    $settings = '';
222
                }
223
            }
224
 
225
            // Add uninstall info.
226
            $uninstall = '';
227
            if ($uninstallurl = core_plugin_manager::instance()->get_uninstall_url($store, 'manage')) {
228
                $uninstall = html_writer::link($uninstallurl, $struninstall);
229
            }
230
 
231
            // Add a row to the table.
232
            $table->data[] = array($icon . $displayname, $supportedreports, $version, $hideshow, $updown, $settings, $uninstall);
233
            $table->rowclasses[] = $isenabled ? '' : 'dimmed_text';
234
 
235
            $printed[$store] = true;
236
        }
237
 
238
        $return .= html_writer::table($table);
239
        $return .= get_string('configlogplugins', 'tool_log') . '<br />' . get_string('tablenosave', 'admin');
240
        $return .= $OUTPUT->box_end();
241
        return highlight($query, $return);
242
    }
243
}