Search moodle.org's
Developer Documentation

See Release Notes
Long Term Support Release

  • Bug fixes for general core bugs in 4.1.x will end 13 November 2023 (12 months).
  • Bug fixes for security issues in 4.1.x will end 10 November 2025 (36 months).
  • PHP version: minimum PHP 7.4.0 Note: minimum PHP version has increased since Moodle 4.0. PHP 8.0.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   * Activity base class.
  19   *
  20   * @package   mod_chat
  21   * @copyright 2017 onwards Ankit Agarwal <ankit.agrr@gmail.com>
  22   * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  23   */
  24  
  25  namespace mod_chat\analytics\indicator;
  26  
  27  defined('MOODLE_INTERNAL') || die();
  28  
  29  /**
  30   * Activity base class.
  31   *
  32   * @package   mod_chat
  33   * @copyright 2017 onwards Ankit Agarwal <ankit.agrr@gmail.com>
  34   * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  35   */
  36  abstract class activity_base extends \core_analytics\local\indicator\community_of_inquiry_activity {
  37  
  38      /**
  39       * feedback_viewed_events
  40       *
  41       * @return string[]
  42       */
  43      protected function feedback_viewed_events() {
  44          return array('\mod_chat\event\course_module_viewed', '\mod_chat\event\message_sent',
  45              '\mod_chat\event\sessions_viewed');
  46      }
  47  
  48      /**
  49       * feedback_replied_events
  50       *
  51       * @return string[]
  52       */
  53      protected function feedback_replied_events() {
  54          return array('\mod_chat\event\message_sent');
  55      }
  56  
  57      /**
  58       * feedback_post_action
  59       *
  60       * @param \cm_info $cm
  61       * @param int $contextid
  62       * @param int $userid
  63       * @param string[] $eventnames
  64       * @param int $after
  65       * @return bool
  66       */
  67      protected function feedback_post_action(\cm_info $cm, $contextid, $userid, $eventnames, $after = false) {
  68  
  69          if (empty($this->activitylogs[$contextid][$userid])) {
  70              return false;
  71          }
  72  
  73          $logs = $this->activitylogs[$contextid][$userid];
  74  
  75          if (empty($logs['\mod_chat\event\message_sent'])) {
  76              // No feedback viewed if there is no submission.
  77              return false;
  78          }
  79  
  80          // First user message time.
  81          $firstmessage = $logs['\mod_chat\event\message_sent']->timecreated[0];
  82  
  83          // We consider feedback another user messages.
  84          foreach ($this->activitylogs[$contextid] as $anotheruserid => $logs) {
  85              if ($anotheruserid == $userid) {
  86                  continue;
  87              }
  88              if (empty($logs['\mod_chat\event\message_sent'])) {
  89                  continue;
  90              }
  91              $firstmessagesenttime = $logs['\mod_chat\event\message_sent']->timecreated[0];
  92  
  93              if (parent::feedback_post_action($cm, $contextid, $userid, $eventnames, $firstmessagesenttime)) {
  94                  return true;
  95              }
  96              // Continue with the next user.
  97          }
  98  
  99          return false;
 100      }
 101  
 102      /**
 103       * feedback_check_grades
 104       *
 105       * @return bool
 106       */
 107      protected function feedback_check_grades() {
 108          // Chat's feedback is not contained in grades.
 109          return false;
 110      }
 111  }