MDL-67585 core_course: Removing functions introduced this release.
authorAdrian Greeve <abgreeve@gmail.com>
Tue, 4 Feb 2020 00:39:10 +0000 (08:39 +0800)
committerJake Dallimore <jake@moodle.com>
Thu, 20 Feb 2020 03:42:23 +0000 (11:42 +0800)
For the initial rewrite of the activity chooser we had some
temporary functions to make everything work. These have been replaced
with different functions and so these functions are now being removed.

course/classes/external/course_module_chooser_exporter.php [deleted file]
course/externallib.php
course/tests/externallib_test.php
lib/db/services.php

diff --git a/course/classes/external/course_module_chooser_exporter.php b/course/classes/external/course_module_chooser_exporter.php
deleted file mode 100644 (file)
index 01715e6..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-<?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/>.
-
-/**
- * Author exporter.
- *
- * @package    core_course
- * @copyright  2019 Mihail Geshoski <mihail@moodle.com>
- * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
-
-namespace core_course\external;
-
-defined('MOODLE_INTERNAL') || die();
-
-use core\external\exporter;
-use renderer_base;
-
-/**
- * Course module chooser exporter.
- *
- * @copyright  2019 Mihail Geshoski <mihail@moodle.com>
- * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- */
-class course_module_chooser_exporter extends exporter {
-
-    /** @var array $modules Array containing the available modules */
-    private $modules;
-
-    /**
-     * Constructor.
-     *
-     * @param array $modules The available course modules
-     * @param array $related The related data for the export
-     */
-    public function __construct(array $modules, array $related = []) {
-        $this->modules = $modules;
-        return parent::__construct([], $related);
-    }
-
-    /**
-     * Return the list of additional properties.
-     *
-     * @return array
-     */
-    protected static function define_other_properties() {
-        return [
-            'options' => [
-                'multiple' => true,
-                'optional' => true,
-                'type' => [
-                    'label' => ['type' => PARAM_TEXT],
-                    'modulename' => ['type' => PARAM_TEXT],
-                    'description' => ['type' => PARAM_TEXT],
-                    'urls' => [
-                        'type' => [
-                            'addoption' => [
-                                'type' => PARAM_URL
-                            ]
-                        ]
-                    ],
-                    'icon' => [
-                        'type' => PARAM_RAW,
-                        'optional' => true,
-                        'default' => null,
-                        'null' => NULL_ALLOWED
-                    ]
-                ]
-            ]
-        ];
-    }
-
-    /**
-     * Get the additional values to inject while exporting.
-     *
-     * @param renderer_base $output The renderer.
-     * @return array Keys are the property names, values are their values.
-     */
-    protected function get_other_values(renderer_base $output) {
-
-        $options = new \stdClass();
-        $options->trusted = false;
-        $options->noclean = false;
-        $options->smiley = false;
-        $options->filter = false;
-        $options->para = true;
-        $options->newlines = false;
-        $options->overflowdiv = false;
-
-        $context = $this->related['context'];
-
-        $modulesdata = [];
-        foreach ($this->modules as $module) {
-            $customiconurl = null;
-
-            // The property 'name' may contain more than just the module, in which case we need to extract the true module name.
-            $modulename = $module->name;
-            if ($colon = strpos($modulename, ':')) {
-                $modulename = substr($modulename, 0, $colon);
-            }
-
-            if (isset($module->help) || !empty($module->help)) {
-                list($description) = external_format_text((string) $module->help, FORMAT_MARKDOWN,
-                    $context->id, null, null, null, $options);
-            } else {
-                $description = get_string('nohelpforactivityorresource', 'moodle');
-            }
-
-            $icon = new \pix_icon('icon', '', $modulename);
-
-            // When exporting check if the title is an object, we assume it's a lang string object otherwise we send the raw string.
-            $modulesdata[] = [
-                'label' => $module->title instanceof \lang_string ? $module->title->out() : $module->title,
-                'modulename' => $modulename,
-                'description' => $description,
-                'urls' => [
-                    'addoption' => $module->link->out(false),
-                ],
-                'icon' => $icon->export_for_template($output)
-            ];
-        }
-
-        return [
-            'options' => $modulesdata
-        ];
-    }
-
-    /**
-     * Returns a list of objects that are related.
-     *
-     * @return array
-     */
-    protected static function define_related() {
-        return [
-            'context' => 'context'
-        ];
-    }
-}
index caca77a..3095668 100644 (file)
@@ -4141,87 +4141,6 @@ class core_course_external extends external_api {
         return new external_single_structure($userfields);
     }
 
-    /**
-     * Returns description of method result value
-     *
-     * @return external_description
-     */
-    public static function fetch_modules_activity_chooser_returns() {
-        return new external_single_structure([
-            'allmodules' => new external_multiple_structure(
-                new external_single_structure([
-                    'label' => new external_value(PARAM_TEXT, 'Human readable module name', VALUE_OPTIONAL),
-                    'modulename' => new external_value(PARAM_TEXT, 'Module name', VALUE_OPTIONAL),
-                    'description' => new external_value(PARAM_RAW, 'Help panel information', VALUE_OPTIONAL),
-                    'urls' => new external_single_structure([
-                        'addoption' => new external_value(PARAM_URL, 'The edit link for the module', VALUE_OPTIONAL),
-                    ]),
-                    'icon' => new external_single_structure([
-                        'attributes' => new external_multiple_structure(
-                            new external_single_structure([
-                                'name' => new external_value(PARAM_RAW, 'HTML attr', VALUE_OPTIONAL),
-                                'value' => new external_value(PARAM_RAW, 'Value of the HTML attr', VALUE_OPTIONAL),
-                            ])
-                        ),
-                        'extraclasses' => new external_value(PARAM_RAW, 'Anything extra the module defines', VALUE_OPTIONAL),
-                    ]),
-                ])
-            ),
-            'warnings' => new external_warnings()
-        ]);
-    }
-
-    /**
-     * Returns description of method parameters
-     *
-     * @return external_function_parameters
-     */
-    public static function fetch_modules_activity_chooser_parameters() {
-        return new external_function_parameters([
-            'courseid' => new external_value(PARAM_INT, 'ID of the course', VALUE_REQUIRED),
-        ]);
-    }
-
-    /**
-     * Given a course ID fetch all accessible modules for that course
-     *
-     * @param int $courseid The course we want to fetch the modules for
-     * @return array Contains array of modules and their metadata
-     * @throws moodle_exception
-     */
-    public static function fetch_modules_activity_chooser(int $courseid) {
-        global $DB, $OUTPUT;
-        [
-            'courseid' => $courseid,
-        ] = self::validate_parameters(self::fetch_modules_activity_chooser_parameters(), [
-            'courseid' => $courseid,
-        ]);
-        $warnings = array();
-
-        // Validate the course context.
-        $coursecontext = context_course::instance($courseid);
-        self::validate_context($coursecontext);
-        // Check to see if user can add menus and there are modules to add.
-        if (!has_capability('moodle/course:manageactivities', $coursecontext)
-            || !($modnames = get_module_types_names()) || empty($modnames)) {
-            return '';
-        }
-
-        $course = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST);
-        // Retrieve all modules with associated metadata.
-        $modules = get_module_metadata($course, $modnames, null);
-        $related = [
-            'context' => $coursecontext
-        ];
-        // Export the module chooser data.
-        $modchooserdata = new \core_course\external\course_module_chooser_exporter($modules, $related);
-
-        $result = [];
-        $result['allmodules'] = $modchooserdata->export($OUTPUT)->options;
-        $result['warnings'] = $warnings;
-        return $result;
-    }
-
     /**
      * Returns description of method parameters.
      *
index ab49748..82811be 100644 (file)
@@ -3050,41 +3050,6 @@ class core_course_externallib_testcase extends externallib_advanced_testcase {
         $this->assertEquals($expectedusers, $users);
     }
 
-    /**
-     * Test fetch_modules_activity_chooser
-     */
-    public function test_fetch_modules_activity_chooser() {
-        global $OUTPUT;
-
-        $this->resetAfterTest(true);
-
-        // Log in as Admin.
-        $this->setAdminUser();
-
-        $course1  = self::getDataGenerator()->create_course();
-
-        // Fetch course modules.
-        $result = core_course_external::fetch_modules_activity_chooser($course1->id);
-        $result = external_api::clean_returnvalue(core_course_external::fetch_modules_activity_chooser_returns(), $result);
-        // Check for 0 warnings.
-        $this->assertEquals(0, count($result['warnings']));
-        // Check we have the right number of standard modules.
-        $this->assertEquals(21, count($result['allmodules']));
-
-        $coursecontext = context_course::instance($course1->id);
-        $modnames = get_module_types_names();
-        $modules = get_module_metadata($course1, $modnames, null);
-        $related = [
-            'context' => $coursecontext
-        ];
-        // Export the module chooser data.
-        $modchooserdata = new \core_course\external\course_module_chooser_exporter($modules, $related);
-        $formatteddata = $modchooserdata->export($OUTPUT)->options;
-
-        // Check if the webservice returns exactly what the exporter defines.
-        $this->assertEquals($formatteddata, $result['allmodules']);
-    }
-
     /**
      * Verify that content items can be added to user favourites.
      */
index da5dbc2..3579809 100644 (file)
@@ -645,14 +645,6 @@ $functions = array(
         'type' => 'write',
         'ajax' => true,
     ),
-    'core_course_get_activity_picker_info' => array(
-        'classname' => 'core_course_external',
-        'methodname' => 'fetch_modules_activity_chooser',
-        'classpath' => 'course/externallib.php',
-        'description' => 'Fetch all the module information for the activity picker',
-        'type' => 'read',
-        'ajax' => true,
-    ),
     'core_course_get_course_content_items' => array(
         'classname' => 'core_course_external',
         'methodname' => 'get_course_content_items',