* @copyright 2015 Ruslan Kabalin, Lancaster University. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ require_once '../config.php'; require_once $CFG->libdir . '/adminlib.php'; require_once $CFG->libdir . '/tablelib.php'; $action = required_param('action', PARAM_ALPHANUMEXT); $antivirus = required_param('antivirus', PARAM_PLUGIN); $confirm = optional_param('confirm', 0, PARAM_BOOL); $PAGE->set_url('/admin/antiviruses.php', array('action' => $action, 'antivirus' => $antivirus)); $PAGE->set_context(context_system::instance()); require_login(); require_capability('moodle/site:config', context_system::instance()); $returnurl = "{$CFG->wwwroot}/{$CFG->admin}/settings.php?section=manageantiviruses"; // Get currently installed and enabled antivirus plugins. $availableantiviruses = \core\antivirus\manager::get_available(); if (!empty($antivirus) and empty($availableantiviruses[$antivirus])) { redirect($returnurl); } $activeantiviruses = explode(',', $CFG->antiviruses); foreach ($activeantiviruses as $key => $active) { if (empty($availableantiviruses[$active])) { unset($activeantiviruses[$key]); } } if (!confirm_sesskey()) { redirect($returnurl); } switch ($action) { case 'disable': // Remove from enabled list.
/** * Builds the XHTML to display the control * * @param string $data Unused * @param string $query * @return string */ public function output_html($data, $query = '') { global $CFG, $OUTPUT; // Display strings. $txt = get_strings(array('administration', 'settings', 'edit', 'name', 'enable', 'disable', 'up', 'down', 'none')); $struninstall = get_string('uninstallplugin', 'core_admin'); $txt->updown = "{$txt->up}/{$txt->down}"; $antivirusesavailable = \core\antivirus\manager::get_available(); $activeantiviruses = explode(',', $CFG->antiviruses); $activeantiviruses = array_reverse($activeantiviruses); foreach ($activeantiviruses as $key => $antivirus) { if (empty($antivirusesavailable[$antivirus])) { unset($activeantiviruses[$key]); } else { $name = $antivirusesavailable[$antivirus]; unset($antivirusesavailable[$antivirus]); $antivirusesavailable[$antivirus] = $name; } } $antivirusesavailable = array_reverse($antivirusesavailable, true); $return = $OUTPUT->heading(get_string('actantivirushdr', 'antivirus'), 3, 'main', true); $return .= $OUTPUT->box_start('generalbox antivirusesui'); $table = new html_table(); $table->head = array($txt->name, $txt->enable, $txt->updown, $txt->settings, $struninstall); $table->colclasses = array('leftalign', 'centeralign', 'centeralign', 'centeralign', 'centeralign'); $table->id = 'antivirusmanagement'; $table->attributes['class'] = 'admintable generaltable'; $table->data = array(); // Iterate through auth plugins and add to the display table. $updowncount = 1; $antiviruscount = count($activeantiviruses); $baseurl = new moodle_url('/admin/antiviruses.php', array('sesskey' => sesskey())); foreach ($antivirusesavailable as $antivirus => $name) { // Hide/show link. $class = ''; if (in_array($antivirus, $activeantiviruses)) { $hideshowurl = $baseurl; $hideshowurl->params(array('action' => 'disable', 'antivirus' => $antivirus)); $hideshowimg = html_writer::img($OUTPUT->pix_url('t/hide'), 'disable', array('class' => 'iconsmall')); $hideshow = html_writer::link($hideshowurl, $hideshowimg); $enabled = true; $displayname = $name; } else { $hideshowurl = $baseurl; $hideshowurl->params(array('action' => 'enable', 'antivirus' => $antivirus)); $hideshowimg = html_writer::img($OUTPUT->pix_url('t/show'), 'enable', array('class' => 'iconsmall')); $hideshow = html_writer::link($hideshowurl, $hideshowimg); $enabled = false; $displayname = $name; $class = 'dimmed_text'; } // Up/down link. $updown = ''; if ($enabled) { if ($updowncount > 1) { $updownurl = $baseurl; $updownurl->params(array('action' => 'up', 'antivirus' => $antivirus)); $updownimg = html_writer::img($OUTPUT->pix_url('t/up'), 'up', array('class' => 'iconsmall')); $updown = html_writer::link($updownurl, $updownimg); } else { $updown .= html_writer::img($OUTPUT->pix_url('spacer'), '', array('class' => 'iconsmall')); } if ($updowncount < $antiviruscount) { $updownurl = $baseurl; $updownurl->params(array('action' => 'down', 'antivirus' => $antivirus)); $updownimg = html_writer::img($OUTPUT->pix_url('t/down'), 'down', array('class' => 'iconsmall')); $updown = html_writer::link($updownurl, $updownimg); } else { $updown .= html_writer::img($OUTPUT->pix_url('spacer'), '', array('class' => 'iconsmall')); } ++$updowncount; } // Settings link. if (file_exists($CFG->dirroot . '/lib/antivirus/' . $antivirus . '/settings.php')) { $eurl = new moodle_url('/admin/settings.php', array('section' => 'antivirussettings' . $antivirus)); $settings = html_writer::link($eurl, $txt->settings); } else { $settings = ''; } $uninstall = ''; if ($uninstallurl = core_plugin_manager::instance()->get_uninstall_url('antivirus_' . $antivirus, 'manage')) { $uninstall = html_writer::link($uninstallurl, $struninstall); } // Add a row to the table. $row = new html_table_row(array($displayname, $hideshow, $updown, $settings, $uninstall)); if ($class) { $row->attributes['class'] = $class; } $table->data[] = $row; } $return .= html_writer::table($table); $return .= get_string('configantivirusplugins', 'antivirus') . html_writer::empty_tag('br') . get_string('tablenosave', 'admin'); $return .= $OUTPUT->box_end(); return highlight($query, $return); }