Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.2.x will end 22 April 2024 (12 months).
  • Bug fixes for security issues in 4.2.x will end 7 October 2024 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.1.x is supported too.
   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  
  25  namespace core_payment;
  26  
  27  use core\persistent;
  28  
  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';
  41  
  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      }
  67  
  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      }
  76  
  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      }
  87  
  88      /**
  89       * Get corresponding account
  90       *
  91       * @return account
  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
 101       */
 102      public function get_configuration(): array {
 103          $config = @json_decode($this->get('config'), true);
 104          return ($config && is_array($config)) ? $config : [];
 105      }
 106  }