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  namespace core\event;
  18  
  19  /**
  20   * draft_file_added
  21   *
  22   * Event fired when a file is added to the draft area.
  23   *
  24   * @property-read array $other {
  25   *      Extra information about the event.
  26   *
  27   *      - string itemid: itemid of the file
  28   *      - string filename: Name of the file added to the draft area.
  29   *      - string filesize: The file size.
  30   *      - string filepath: The filepath.
  31   *      - string contenthash: The file contenthash.
  32   * }
  33   *
  34   * @package   core
  35   * @since     Moodle 4.2
  36   * @copyright 2023 The Open University.
  37   * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  38   */
  39  class draft_file_added extends base {
  40  
  41      protected function init() {
  42          $this->data['objecttable'] = 'files';
  43          $this->data['crud'] = 'c';
  44          $this->data['edulevel'] = self::LEVEL_OTHER;
  45      }
  46  
  47      public static function get_name() {
  48          return get_string('eventfileaddedtodraftarea', 'files');
  49      }
  50  
  51      public function get_description() {
  52          $humansize = display_size($this->other['filesize']);
  53          return "The user with id '{$this->userid}' has uploaded file '{$this->other['filepath']}{$this->other['filename']}' " .
  54              "to the draft file area with item id {$this->other['itemid']}. Size: {$humansize}. ".
  55              "Content hash: {$this->other['contenthash']}.";
  56      }
  57  
  58      protected function validate_data() {
  59          parent::validate_data();
  60  
  61          if (!isset($this->other['itemid'])) {
  62              throw new \coding_exception('The \'itemid\' must be set in other.');
  63          }
  64  
  65          if (!isset($this->other['filename'])) {
  66              throw new \coding_exception('The \'filename\' value must be set in other.');
  67          }
  68  
  69          if (!isset($this->other['filesize'])) {
  70              throw new \coding_exception('The \'filesize\' value must be set in other.');
  71          }
  72  
  73          if (!isset($this->other['filepath'])) {
  74              throw new \coding_exception('The \'filepath\' value must be set in other.');
  75          }
  76  
  77          if (!isset($this->other['contenthash'])) {
  78              throw new \coding_exception('The \'contenthash\' value must be set in other.');
  79          }
  80      }
  81  }