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/>.
/**
* Class registration_form
*
* @package tool_brickfield
* @copyright 2021 Brickfield Education Labs https://www.brickfield.ie
* @author 2020 JM Tomas <jmtomas@tresipunt.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL
*/
namespace tool_brickfield\form;
defined('MOODLE_INTERNAL') || die();
use coding_exception;
use dml_exception;
use html_writer;
use moodle_exception;
use moodleform;
use stdClass;
use tool_brickfield\manager;
use tool_brickfield\registration;
global $CFG;
require_once($CFG->libdir . '/formslib.php');
/**
* Class registration_form
*
* @package tool_brickfield
* @author 2020 JM Tomas <jmtomas@tresipunt.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL
*/
class registration_form extends moodleform {
/**
* Form definition.
* @throws moodle_exception
*/
public function definition() {
$mform = & $this->_form;
$required = get_string('required');
$info = $this->get_defaultinfo();
$registration = new registration();
$key = $registration->get_api_key();
$hash = $registration->get_secret_key();
$mform->addElement('header', 'activationheader', get_string('activationheader', manager::PLUGINNAME));
$mform->addElement('text', 'key', get_string('secretkey', manager::PLUGINNAME));
$mform->setType('key', PARAM_TEXT);
$mform->setDefault('key', !empty($key) ? $key : '');
$mform->addHelpButton('key', 'secretkey', manager::PLUGINNAME);
$mform->addElement('text', 'hash', get_string('sitehash', manager::PLUGINNAME));
$mform->setType('hash', PARAM_TEXT);
$mform->setDefault('hash', !empty($hash) ? $hash : '');
$mform->addHelpButton('hash', 'sitehash', manager::PLUGINNAME);
$mform->addElement('header', 'moreinfo', get_string('moreinfo', manager::PLUGINNAME));
$mform->addElement('static', 'siteinfosummary', '',
get_string('sendfollowinginfo', manager::PLUGINNAME, $info->moreinfostring));
$mform->addElement('hidden', 'lang', $info->languagecode);
$mform->setType('lang', PARAM_TEXT);
$mform->addElement('hidden', 'countrycode', $info->country);
$mform->setType('countrycode', PARAM_TEXT);
$mform->addElement('hidden', 'url', $info->url);
$mform->setType('url', PARAM_URL);
$this->add_action_buttons(false, get_string('activate', manager::PLUGINNAME, '#'));
}
/**
* Get default data for registration form
*
* @throws moodle_exception
* @return stdClass
*/
protected function get_defaultinfo(): stdClass {
global $CFG;
$admin = get_admin();
$site = get_site();
$data = new stdClass();
$data->name = $site->fullname;
$data->url = $CFG->wwwroot;
$data->language = get_string('thislanguage', 'langconfig');
$data->languagecode = $admin->lang ?: $CFG->lang;
$data->country = $admin->country ?: $CFG->country;
$data->email = $admin->email;
$data->moreinfo = self::get_moreinfo();
$data->moreinfostring = self::get_moreinfostring($data->moreinfo);
return $data;
}
/**
* Get more information.
* @return array
* @throws dml_exception
*/
private static function get_moreinfo(): array {
global $CFG, $DB;
$moreinfo = array();
$moodlerelease = $CFG->release;
if (preg_match('/^(\d+\.\d.*?)[. ]/', $moodlerelease, $matches)) {
$moodlerelease = $matches[1];
}
$moreinfo['release'] = $moodlerelease;
$moreinfo['numcourses'] = $DB->count_records('course') - 1;
$moreinfo['numusers'] = $DB->count_records('user', array('deleted' => 0));
$moreinfo['numfiles'] = $DB->count_records('files');
$moreinfo['numfactivities'] = $DB->count_records('course_modules');
$moreinfo['mobileservice'] = empty($CFG->enablemobilewebservice) ? 0 : $CFG->enablemobilewebservice;
$moreinfo['usersmobileregistered'] = $DB->count_records('user_devices');
$moreinfo['contentyperesults'] = '';
$moreinfo['contenttypeerrors'] = '';
$moreinfo['percheckerrors'] = '';
return $moreinfo;
}
/**
* Get HTML list for more information.
*
* @param array $moreinfo
* @return string
* @throws coding_exception
*/
private static function get_moreinfostring(array $moreinfo): string {
$html = html_writer::start_tag('ul');
foreach ($moreinfo as $key => $value) {
$html .= html_writer::tag('li', get_string($key, manager::PLUGINNAME, $value));
}
$html .= html_writer::end_tag('ul');
return $html;
}
}