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   * Lib API functions.
  19   *
  20   * @package   report_usersessions
  21   * @copyright 2014 Totara Learning Solutions Ltd {@link http://www.totaralms.com/}
  22   * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  23   * @author    Petr Skoda <petr.skoda@totaralms.com>
  24   */
  25  
  26  defined('MOODLE_INTERNAL') || die;
  27  
  28  /**
  29   * This function extends the course navigation with the report items
  30   *
  31   * @param navigation_node $navigation The navigation node to extend
  32   * @param stdClass $user
  33   * @param stdClass $course The course to object for the report
  34   */
  35  function report_usersessions_extend_navigation_user($navigation, $user, $course) {
  36      global $USER;
  37  
  38      if (isguestuser() or !isloggedin()) {
  39          return;
  40      }
  41  
  42      if (\core\session\manager::is_loggedinas() or $USER->id != $user->id) {
  43          // No peeking at somebody else's sessions!
  44          return;
  45      }
  46  
  47      $context = context_user::instance($USER->id);
  48      if (has_capability('report/usersessions:manageownsessions', $context)) {
  49          $navigation->add(get_string('navigationlink', 'report_usersessions'),
  50              new moodle_url('/report/usersessions/user.php'), $navigation::TYPE_SETTING);
  51      }
  52  }
  53  
  54  /**
  55   * Add nodes to myprofile page.
  56   *
  57   * @param \core_user\output\myprofile\tree $tree Tree object
  58   * @param stdClass $user user object
  59   * @param bool $iscurrentuser
  60   * @param stdClass $course Course object
  61   *
  62   * @return bool
  63   */
  64  function report_usersessions_myprofile_navigation(core_user\output\myprofile\tree $tree, $user, $iscurrentuser, $course) {
  65      global $USER;
  66  
  67      if (isguestuser() or !isloggedin()) {
  68          return;
  69      }
  70  
  71      if (\core\session\manager::is_loggedinas() or $USER->id != $user->id) {
  72          // No peeking at somebody else's sessions!
  73          return;
  74      }
  75  
  76      $context = context_user::instance($USER->id);
  77      if (has_capability('report/usersessions:manageownsessions', $context)) {
  78          $node = new core_user\output\myprofile\node('reports', 'usersessions',
  79                  get_string('navigationlink', 'report_usersessions'), null, new moodle_url('/report/usersessions/user.php'));
  80          $tree->add_node($node);
  81      }
  82      return true;
  83  }