Proyectos de Subversion Moodle

Rev

Autoría | Ultima modificación | Ver Log |

<?php
// 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/>.

/**
 * Processor file for user exclusion overview and configuration
 *
 * File         exclude.php
 * Encoding     UTF-8
 *
 * @package     tool_usersuspension
 *
 * @copyright   Sebsoft.nl
 * @author      R.J. van Dongen <rogier@sebsoft.nl>
 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

require_once(dirname(__FILE__) . '/../../../../config.php');
require_once($CFG->libdir.'/adminlib.php');

use tool_usersuspension\config;
use tool_usersuspension\processor\csv as csvprocessor;

/**
 * Test script message output callback.
 *
 * @param string $msg
 */
function trtrace($msg) {
    echo html_writer::div($msg, 'alert alert-info');
}
/**
 * Write action links for this script.
 * @param moodle_url|string $pageurl
 */
function write_actiontype_links($pageurl) {
    $actiontypes = ['suspend', 'unsuspend'];
    foreach ($actiontypes as $type) {
        echo html_writer::link(new moodle_url($pageurl, ['actiontype' => $type]),
                get_string('testfromfolder:' . $type, 'tool_usersuspension'), []);
        echo '<br/>';
    }
}

admin_externalpage_setup('toolusersuspension');
$context       = \context_system::instance();

$thispageurl = new moodle_url('/' . $CFG->admin . '/tool/usersuspension/view/testfromfolder.php', array());

require_capability('tool/usersuspension:administration', $context);

// Process exclusion?
$actiontype = optional_param('actiontype', null, PARAM_ALPHA);
$actiontypes = ['suspend', 'unsuspend'];
if (!in_array($actiontype, $actiontypes)) {
    echo $OUTPUT->header();
    echo '<div class="tool-usersuspension-container">';
    echo '<div>';
    \tool_usersuspension\util::print_view_tabs(array(), 'testfromfolder');
    echo '</div>';
    write_actiontype_links($thispageurl);
    echo '</div>';
    echo $OUTPUT->footer();
} else if ($actiontype === 'suspend') {
    echo $OUTPUT->header();
    echo '<div class="tool-usersuspension-container">';
    echo '<div>';
    \tool_usersuspension\util::print_view_tabs(array(), 'testfromfolder');
    echo '</div>';
    write_actiontype_links($thispageurl);

    echo $OUTPUT->heading(get_string('testing:suspendfromfolder', 'tool_usersuspension'), 4);

    if (!(bool)config::get('enabled')) {
        echo html_writer::div(get_string('config:tool:disabled', 'tool_usersuspension'), 'alert alert-danger');
    } else {
        echo html_writer::div(get_string('config:tool:enabled', 'tool_usersuspension'), 'alert alert-info');
    }

    if (!(bool)config::get('enablefromfolder')) {
        echo html_writer::div(get_string('config:fromfolder:disabled', 'tool_usersuspension'), 'alert alert-danger');
    } else {
        echo html_writer::div(get_string('config:fromfolder:enabled', 'tool_usersuspension'), 'alert alert-info');
    }

    if (is_dir(config::get('uploadfolder'))) {
        echo html_writer::div(get_string('config:uploadfolder:exists', 'tool_usersuspension',
                config::get('uploadfolder')), 'alert alert-info');
    } else {
        echo html_writer::div(get_string('config:uploadfolder:not-exists', 'tool_usersuspension',
                config::get('uploadfolder')), 'alert alert-danger');
    }

    $uploadedfile = config::get('uploadfolder') . '/' . config::get('uploadfilename');
    if (!file_exists($uploadedfile) || is_dir($uploadedfile)) {
        echo html_writer::div(get_string('config:uploadfile:not-exists', 'tool_usersuspension',
                $uploadedfile), 'alert alert-danger');
    } else {
        echo html_writer::div(get_string('config:uploadfile:exists', 'tool_usersuspension',
                $uploadedfile), 'alert alert-info');
        if (!is_readable($uploadedfile)) {
            echo html_writer::div(get_string('msg:file-not-readable', 'tool_usersuspension',
                    $uploadedfile), 'alert alert-danger');
        }

        $choices = \csv_import_reader::get_delimiter_list();
        // Process uploaded file.
        $proc = new csvprocessor();
        $proc->set_file($uploadedfile);
        $proc->set_delimiter($choices[config::get('csvdelimiter')]);
        $proc->set_enclosure('"');
        $proc->set_notifycallback('trtrace');
        $proc->set_mode(csvprocessor::MODE_SUSPEND);
        $proc->set_testmode();
        $proc->process();

        if (is_writable($uploadedfile)) {
            echo html_writer::div(get_string('msg:file-would-delete', 'tool_usersuspension',
                    $uploadedfile), 'alert alert-success');
        } else {
            echo html_writer::div(get_string('msg:file-not-writeable', 'tool_usersuspension',
                    $uploadedfile), 'alert alert-danger');
        }
    }
    echo '</div>';
    echo $OUTPUT->footer();
} else if ($actiontype === 'unsuspend') {
    echo $OUTPUT->header();
    echo '<div class="tool-usersuspension-container">';
    echo '<div>';
    \tool_usersuspension\util::print_view_tabs(array(), 'testfromfolder');
    echo '</div>';
    write_actiontype_links($thispageurl);

    echo $OUTPUT->heading(get_string('testing:unsuspendfromfolder', 'tool_usersuspension'), 4);

    if (!(bool)config::get('enabled')) {
        echo html_writer::div(get_string('config:tool:disabled', 'tool_usersuspension'), 'alert alert-danger');
    } else {
        echo html_writer::div(get_string('config:tool:enabled', 'tool_usersuspension'), 'alert alert-info');
    }

    if (!(bool)config::get('enableunsuspendfromfolder')) {
        echo html_writer::div(get_string('config:unsuspendfromfolder:disabled', 'tool_usersuspension'), 'alert alert-danger');
    } else {
        echo html_writer::div(get_string('config:unsuspendfromfolder:enabled', 'tool_usersuspension'), 'alert alert-info');
    }

    if (is_dir(config::get('uploadfolder'))) {
        echo html_writer::div(get_string('config:uploadfolder:exists', 'tool_usersuspension',
                config::get('uploadfolder')), 'alert alert-info');
    } else {
        echo html_writer::div(get_string('config:uploadfolder:not-exists', 'tool_usersuspension',
                config::get('uploadfolder')), 'alert alert-danger');
    }

    $uploadedfile = config::get('uploadfolder') . '/' . config::get('unsuspenduploadfilename');
    if (!file_exists($uploadedfile) || is_dir($uploadedfile)) {
        echo html_writer::div('CSV File "'.$uploadedfile.'" does not exist', 'alert alert-danger');
    } else {
        echo html_writer::div(get_string('config:uploadfile:exists', 'tool_usersuspension',
                $uploadedfile), 'alert alert-info');
        if (!is_readable($uploadedfile)) {
            echo html_writer::div(get_string('msg:file-not-readable', 'tool_usersuspension',
                    $uploadedfile), 'alert alert-danger');
        }

        $choices = \csv_import_reader::get_delimiter_list();
        // Process uploaded file.
        $proc = new csvprocessor();
        $proc->set_file($uploadedfile);
        $proc->set_delimiter($choices[config::get('csvdelimiter')]);
        $proc->set_enclosure('"');
        $proc->set_notifycallback('trtrace');
        $proc->set_mode(csvprocessor::MODE_UNSUSPEND);
        $proc->set_testmode();
        $proc->process();

        if (is_writable($uploadedfile)) {
            echo html_writer::div(get_string('msg:file-would-delete', 'tool_usersuspension',
                    $uploadedfile), 'alert alert-danger');
        } else {
            echo html_writer::div(get_string('msg:file-not-writeable', 'tool_usersuspension',
                    $uploadedfile), 'alert alert-danger');
        }
    }
    echo '</div>';
    echo $OUTPUT->footer();
}