Merge branch 'MDL-70137-310-2' of git://github.com/andrewnicols/moodle into MOODLE_31...
[moodle.git] / payment / classes / account_gateway.php
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/>.
17 /**
18  * Class account_gateway
19  *
20  * @package     core_payment
21  * @copyright   2020 Marina Glancy
22  * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
25 namespace core_payment;
27 use core\persistent;
29 /**
30  * Class account_gateway
31  *
32  * @package     core_payment
33  * @copyright   2020 Marina Glancy
34  * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
35  */
36 class account_gateway extends persistent {
37     /**
38      * Database table.
39      */
40     const TABLE = 'payment_gateways';
42     /**
43      * Return the definition of the properties of this model.
44      *
45      * @return array
46      */
47     protected static function define_properties(): array {
48         return array(
49             'accountid' => [
50                 'type' => PARAM_INT,
51             ],
52             'gateway' => [
53                 'type' => PARAM_COMPONENT,
54             ],
55             'enabled' => [
56                 'type' => PARAM_BOOL,
57                 'default' => true
58             ],
59             'config' => [
60                 'type' => PARAM_RAW,
61                 'optional' => true,
62                 'null' => NULL_ALLOWED,
63                 'default' => null
64             ],
65         );
66     }
68     /**
69      * Return the gateway name ready for display
70      *
71      * @return string
72      */
73     public function get_display_name(): string {
74         return get_string('pluginname', 'paygw_' . $this->get('gateway'));
75     }
77     /**
78      * Gateway management url
79      *
80      * @return \moodle_url
81      */
82     public function get_edit_url(): \moodle_url {
83         $params = $this->get('id') ? ['id' => $this->get('id')] :
84             ['accountid' => $this->get('accountid'), 'gateway' => $this->get('gateway')];
85         return new \moodle_url('/payment/manage_gateway.php', $params);
86     }
88     /**
89      * Get corresponding account
90      *
91      * @return account
92      */
93     public function get_account(): account {
94         return new account($this->get('accountid'));
95     }
97     /**
98      * Parse configuration from the json-encoded stored value
99      *
100      * @return array
101      */
102     public function get_configuration(): array {
103         $config = @json_decode($this->get('config'), true);
104         return ($config && is_array($config)) ? $config : [];
105     }