Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.0.x will end 8 May 2023 (12 months).
  • Bug fixes for security issues in 4.0.x will end 13 November 2023 (18 months).
  • PHP version: minimum PHP 7.3.0 Note: the minimum PHP version has increased since Moodle 3.10. PHP 7.4.x is also supported.
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

/**
 * Generator for test search area.
 *
 * @package   core_search
 * @category  phpunit
 * @copyright 2016 Eric Merrill {@link http://www.merrilldigital.com}
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

defined('MOODLE_INTERNAL') || die();

/**
 * Mock search area data generator class.
 *
 * @package    core_search
 * @category   test
 * @copyright  2016 Eric Merrill
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */
class core_search_generator extends component_generator_base {
    /**
     * Creates the mock search area temp table.
     */
< public function setup() {
> public function setUp(): void {
global $DB; $dbman = $DB->get_manager(); // Make our temp table if we need it. if (!$dbman->table_exists('temp_mock_search_area')) { $table = new \xmldb_table('temp_mock_search_area'); $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE, null); $table->add_field('timemodified', XMLDB_TYPE_INTEGER, 10, null, XMLDB_NOTNULL, null, '0'); $table->add_field('info', XMLDB_TYPE_TEXT, null, null, XMLDB_NOTNULL, null, null); $table->add_key('primary', XMLDB_KEY_PRIMARY, array('id')); $dbman->create_temp_table($table); } } /** * Destroys the mock search area temp table. */
< public function teardown() {
> public function tearDown(): void {
global $DB; $dbman = $DB->get_manager(); // Make our temp table if we need it. if ($dbman->table_exists('temp_mock_search_area')) { $table = new \xmldb_table('temp_mock_search_area'); $dbman->drop_table($table); } } /** * Deletes all records in the search area table. */ public function delete_all() { global $DB; // Delete any records in the search area. $DB->delete_records('temp_mock_search_area'); } /** * Adds a new record to the mock search area based on the provided options. */ public function create_record($options = null) { global $DB, $USER; $record = new \stdClass(); $info = new \stdClass(); if (empty($options->timemodified)) { $record->timemodified = time(); } else { $record->timemodified = $options->timemodified; } if (!isset($options->content)) { $info->content = 'A test message to find.'; } else { $info->content = $options->content; } if (!isset($options->description1)) { $info->description1 = 'Description 1.'; } else { $info->description1 = $options->description1; } if (!isset($options->description2)) { $info->description2 = 'Description 2.'; } else { $info->description2 = $options->description2; } if (!isset($options->title)) { $info->title = 'A basic title'; } else { $info->title = $options->title; } if (!isset($options->contextid)) { $info->contextid = \context_course::instance(SITEID)->id; } else { $info->contextid = $options->contextid; } if (!isset($options->courseid)) { $info->courseid = SITEID; } else { $info->courseid = $options->courseid; } if (!isset($options->userid)) { $info->userid = $USER->id; } else { $info->userid = $options->userid; } if (!isset($options->owneruserid)) { $info->owneruserid = \core_search\manager::NO_OWNER_ID; } else { $info->owneruserid = $options->owneruserid; } // This takes a userid (or array of) that will be denied when check_access() is called. if (!isset($options->denyuserids)) { $info->denyuserids = array(); } else { if (is_array($options->denyuserids)) { $info->denyuserids = $options->denyuserids; } else { $info->denyuserids = array($options->denyuserids); } } // Stored file ids that will be attached when attach_files() is called. if (!isset($options->attachfileids)) { $info->attachfileids = array(); } else { if (is_array($options->attachfileids)) { $info->attachfileids = $options->attachfileids; } else { $info->attachfileids = array($options->attachfileids); } } $record->info = serialize($info); $record->id = $DB->insert_record('temp_mock_search_area', $record); return $record; } /** * Creates a stored file that can be added to mock search area records for indexing. */ public function create_file($options = null) { // Add the searchable file fixture. $syscontext = \context_system::instance(); $filerecord = array( 'contextid' => $syscontext->id, 'component' => 'core', 'filearea' => 'unittest', 'itemid' => 0, 'filepath' => '/', 'filename' => 'searchfile.txt', ); if (isset($options->filename)) { $filerecord['filename'] = $options->filename; } if (isset($options->content)) { $content = $options->content; } else { $content = 'File contents'; } if (isset($options->timemodified)) { $filerecord['timemodified'] = $options->timemodified; } $fs = get_file_storage(); $file = $fs->create_file_from_string($filerecord, $content); return $file; } }