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
defined('MOODLE_INTERNAL') || die();
18
require_once($CFG->dirroot . '/iplookup/lib.php');
19
 
20
/**
21
 * Email renderer.
22
 *
23
 * @package     factor_email
24
 * @author      Peter Burnett <peterburnett@catalyst-au.net>
25
 * @copyright   Catalyst IT
26
 * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
27
 */
28
class factor_email_renderer extends plugin_renderer_base {
29
 
30
    /**
31
     * Generates an email
32
     *
33
     * @param   int $instanceid
34
     * @return  string|boolean
35
     */
36
    public function generate_email(int $instanceid): string|bool {
37
        global $DB, $USER, $CFG;;
38
        $instance = $DB->get_record('tool_mfa', ['id' => $instanceid]);
39
        $site = get_site();
40
        $validity = get_config('factor_email', 'duration');
41
        $authurl = new \moodle_url('/admin/tool/mfa/factor/email/email.php',
42
            ['instance' => $instance->id, 'pass' => 1, 'secret' => $instance->secret]);
43
        $authurlstring = \html_writer::link($authurl, get_string('email:link', 'factor_email'));
44
        $blockurl = new \moodle_url('/admin/tool/mfa/factor/email/email.php', ['instance' => $instanceid]);
45
        $blockurlstring = \html_writer::link($blockurl, get_string('email:stoploginlink', 'factor_email'));
46
        $geoinfo = iplookup_find_location($instance->createdfromip);
47
 
48
        $templateinfo = [
49
            'logo' => $this->get_compact_logo_url(100, 100),
50
            'name' => $USER->firstname,
51
            'sitename' => $site->fullname,
52
            'siteurl' => $CFG->wwwroot,
53
            'code' => $instance->secret,
54
            'validity' => format_time($validity),
55
            'authlink' => get_string('email:loginlink', 'factor_email', $authurlstring),
56
            'revokelink' => get_string('email:revokelink', 'factor_email', $blockurlstring),
57
            'ip' => $instance->createdfromip,
58
            'geocity' => $geoinfo['city'],
59
            'geocountry' => $geoinfo['country'],
60
            'ua' => $instance->label,
61
        ];
62
        return $this->render_from_template('factor_email/email', $templateinfo);
63
    }
64
}