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   * Behat data generator for mod_bigbluebuttonbn.
  19   *
  20   * @package   mod_bigbluebuttonbn
  21   * @category  test
  22   * @copyright  2018 - present, Blindside Networks Inc
  23   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  24   * @author     Laurent David (laurent@call-learning.fr)
  25   */
  26  
  27  /**
  28   * Behat data generator for behat_mod_bigbluebuttonbn_generator.
  29   *
  30   * @package   mod_bigbluebuttonbn
  31   * @copyright  2018 - present, Blindside Networks Inc
  32   * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
  33   * @author     Laurent David (laurent@call-learning.fr)
  34   */
  35  class behat_mod_bigbluebuttonbn_generator extends behat_generator_base {
  36  
  37      /**
  38       * Get all entities that can be create through this behat_generator
  39       *
  40       * @return array
  41       */
  42      protected function get_creatable_entities(): array {
  43          return [
  44              'recordings' => [
  45                  'singular' => 'recording',
  46                  'datagenerator' => 'recording',
  47                  'required' => ['bigbluebuttonbn', 'name'],
  48                  'switchids' => [
  49                      'bigbluebuttonbn' => 'bigbluebuttonbnid',
  50                      'group' => 'groupid',
  51                  ],
  52              ],
  53              'logs' => [
  54                  'singular' => 'log',
  55                  'datagenerator' => 'override',
  56                  'required' => ['bigbluebuttonbn', 'user'],
  57                  'switchids' => [
  58                      'bigbluebuttonbn' => 'bigbluebuttonbnid',
  59                      'user' => 'userid',
  60                  ],
  61              ],
  62              'meetings' => [
  63                  'singular' => 'meeting',
  64                  'datagenerator' => 'meeting',
  65                  'required' => [
  66                      'activity',
  67                  ],
  68                  'switchids' => [
  69                      'activity' => 'instanceid',
  70                      'group' => 'groupid',
  71                  ],
  72              ],
  73          ];
  74      }
  75  
  76      /**
  77       * Look up the id of a bigbluebutton activity from its name.
  78       *
  79       * @param string $bbactivityname the bigbluebutton activity name, for example 'Test meeting'.
  80       * @return int corresponding id.
  81       * @throws Exception
  82       */
  83      protected function get_bigbluebuttonbn_id(string $bbactivityname): int {
  84          global $DB;
  85  
  86          if (!$id = $DB->get_field('bigbluebuttonbn', 'id', ['name' => $bbactivityname])) {
  87              throw new Exception('There is no bigbluebuttonbn with name "' . $bbactivityname . '" does not exist');
  88          }
  89          return $id;
  90      }
  91  
  92      /**
  93       * Get the activity id from its name
  94       *
  95       * @param string $activityname
  96       * @return int
  97       * @throws Exception
  98       */
  99      protected function get_activity_id(string $activityname): int {
 100          global $DB;
 101  
 102          $sql = <<<EOF
 103              SELECT cm.instance
 104                FROM {course_modules} cm
 105          INNER JOIN {modules} m ON m.id = cm.module
 106          INNER JOIN {bigbluebuttonbn} bbb ON bbb.id = cm.instance
 107               WHERE cm.idnumber = :idnumber or bbb.name = :name
 108  EOF;
 109          $id = $DB->get_field_sql($sql, ['idnumber' => $activityname, 'name' => $activityname]);
 110          if (empty($id)) {
 111              throw new Exception("There is no bigbluebuttonbn with name '{$activityname}' does not exist");
 112          }
 113  
 114          return $id;
 115      }
 116  }