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   * This page lists public api for tool_monitor plugin.
  19   *
  20   * @package    report_insights
  21   * @copyright  2017 David Monllao {@link http://www.davidmonllao.com}
  22   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  23   */
  24  
  25  defined('MOODLE_INTERNAL') || die;
  26  
  27  /**
  28   * This function extends the navigation with the tool items
  29   *
  30   * @param navigation_node $navigation The navigation node to extend
  31   * @param stdClass        $course     The course to object for the tool
  32   * @param context         $context    The context of the course
  33   * @return void
  34   */
  35  function report_insights_extend_navigation_course($navigation, $course, $context) {
  36  
  37      if (\core_analytics\manager::is_analytics_enabled() && has_capability('moodle/analytics:listinsights', $context)) {
  38  
  39          $modelids = \core_analytics\manager::cached_models_with_insights($context);
  40          if (!empty($modelids)) {
  41              $url = new moodle_url('/report/insights/insights.php', array('contextid' => $context->id));
  42              $node = navigation_node::create(get_string('insights', 'report_insights'), $url, navigation_node::TYPE_SETTING,
  43                  null, null, new pix_icon('i/report', get_string('insights', 'report_insights')));
  44              $navigation->add_node($node);
  45          }
  46      }
  47  }
  48  
  49  /**
  50   * Add nodes to myprofile page.
  51   *
  52   * @param \core_user\output\myprofile\tree $tree Tree object
  53   * @param stdClass $user user object
  54   * @param bool $iscurrentuser
  55   * @param stdClass $course Course object
  56   *
  57   * @return bool
  58   */
  59  function report_insights_myprofile_navigation(core_user\output\myprofile\tree $tree, $user, $iscurrentuser, $course) {
  60  
  61      if (\core_analytics\manager::is_analytics_enabled()) {
  62          $context = \context_user::instance($user->id);
  63          if (\core_analytics\manager::check_can_list_insights($context, true)) {
  64  
  65              $modelids = \core_analytics\manager::cached_models_with_insights($context);
  66              if (!empty($modelids)) {
  67                  $url = new moodle_url('/report/insights/insights.php', array('contextid' => $context->id));
  68                  $node = new core_user\output\myprofile\node('reports', 'insights', get_string('insights', 'report_insights'),
  69                      null, $url);
  70                  $tree->add_node($node);
  71              }
  72          }
  73      }
  74  }
  75  
  76  /**
  77   * Adds nodes to category navigation
  78   *
  79   * @param navigation_node $navigation The navigation node to extend
  80   * @param context $context The context of the course
  81   * @return void|null return null if we don't want to display the node.
  82   */
  83  function report_insights_extend_navigation_category_settings($navigation, $context) {
  84  
  85      if (\core_analytics\manager::is_analytics_enabled() && has_capability('moodle/analytics:listinsights', $context)) {
  86  
  87          $modelids = \core_analytics\manager::cached_models_with_insights($context);
  88          if (!empty($modelids)) {
  89              $url = new moodle_url('/report/insights/insights.php', array('contextid' => $context->id));
  90  
  91              $node = navigation_node::create(
  92                  get_string('insights', 'report_insights'),
  93                  $url,
  94                  navigation_node::NODETYPE_LEAF,
  95                  null,
  96                  'insights',
  97                  new pix_icon('i/report', get_string('insights', 'report_insights'))
  98              );
  99  
 100              $navigation->add_node($node);
 101          }
 102      }
 103  }