Merge branch 'MDL-70137-310-2' of git://github.com/andrewnicols/moodle into MOODLE_31...
[moodle.git] / payment / classes / account_gateway.php
CommitLineData
895f38cc
MG
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/**
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 */
24
25namespace core_payment;
26
27use core\persistent;
28
895f38cc
MG
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 */
36class account_gateway extends persistent {
37 /**
38 * Database table.
39 */
40 const TABLE = 'payment_gateways';
41
42 /**
43 * Return the definition of the properties of this model.
44 *
45 * @return array
46 */
efc576fc 47 protected static function define_properties(): array {
895f38cc
MG
48 return array(
49 'accountid' => [
50 'type' => PARAM_INT,
51 ],
52 'gateway' => [
53 'type' => PARAM_COMPONENT,
895f38cc
MG
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 }
67
68 /**
69 * Return the gateway name ready for display
70 *
71 * @return string
895f38cc
MG
72 */
73 public function get_display_name(): string {
6b3d163a 74 return get_string('pluginname', 'paygw_' . $this->get('gateway'));
895f38cc
MG
75 }
76
77 /**
78 * Gateway management url
79 *
80 * @return \moodle_url
895f38cc
MG
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 }
87
88 /**
89 * Get corresponding account
90 *
91 * @return account
895f38cc
MG
92 */
93 public function get_account(): account {
94 return new account($this->get('accountid'));
95 }
96
97 /**
98 * Parse configuration from the json-encoded stored value
99 *
100 * @return array
895f38cc
MG
101 */
102 public function get_configuration(): array {
103 $config = @json_decode($this->get('config'), true);
104 return ($config && is_array($config)) ? $config : [];
105 }
106}