From cc4a62140a4ee0152f052811d706a392b5470d26 Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Wed, 16 Nov 2022 12:12:48 +0100 Subject: [PATCH 01/23] Remove some errors and warnings from codechecker + format README.txt in markdown --- README.md | 43 +++++++++++++++++++++++++++ README.txt | 33 -------------------- classes/db/abstract_dbrow.php | 2 -- classes/db/providerrow.php | 4 +-- classes/output/managementpage.php | 2 -- classes/output/providermodel.php | 2 -- classes/output/renderer.php | 2 -- classes/plugininfo/oembedprovider.php | 4 +-- classes/provider/endpoint.php | 4 +-- classes/provider/provider.php | 1 - classes/task/update_providers.php | 2 -- db/install.php | 4 +-- db/upgrade.php | 4 +-- settings.php | 2 +- tests/filter_test.php | 1 + tests/oembed_test.php | 5 ++++ 16 files changed, 55 insertions(+), 60 deletions(-) create mode 100644 README.md delete mode 100644 README.txt diff --git a/README.md b/README.md new file mode 100644 index 0000000..53fdc40 --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +# Moodle oEmbed Filter # +![Licence](https://img.shields.io/github/license/PoetOS/moodle-filter_oembed) + + +## Description +This is a text filter for Moodle that converts urls from many different media sites into embeded content. +Embed code is retrieved from the original site so should work even if the site changes embed format. + +## Installation +1. Download the source files. (zip file is available under download section) +2. Unzip the package +3. Copy the "oembed" folder to moodle/filter on the Moodle server. +4. Login as an admin on the Moodle site and install the filter. + +### Upgrading from earlier versions +Upgrade per normal procedures. Your settings from earlier plugins will be preserved. + +**NOTE** Embed providers may change the text that identifies them. +It is possible that media embedded previously on your site no +longer meets the provider text definitions, and as such, may not show up as embedded media. +Check the provider definition to see if the media link needs to change. + +## To use +Under Plugins > Filters > Oembed Filter / Settings, you can choose: + + - The type of tag to identify the embedded media. + - To delay the media loading or load it immediately. + +By default the oembed filter disables all providers. +You can change this under *Plugins > Filters > Oembed Filter / Manage providers*. + +When inserting a media link url into a discussion, create a hyperlink and insert the url as the target. +When the discussion is posted the url will be changed into the embed content. + +**N.B.** if you enable the *Convert URLs into links and images* filter ahead of this then it is easier for users to embed media. + +The embedded media providers are in three groups: + + - Downloaded from [//oembed.com/providers.json](https://oembed.com/providers.json). This is the main repository that manages Oembed provider definitions. + These are updated regularly in the cron job, and can change. + - Plugins provided to extend media providers provided in earlier versions of the plugin, but not contained in the provider repo. + - Local providers which allow a site administrator to save a downloaded one locally, so that it does not change with download updates. + This also allows new providers to be created that are not part of the omebed repo. diff --git a/README.txt b/README.txt deleted file mode 100644 index 11f8fcc..0000000 --- a/README.txt +++ /dev/null @@ -1,33 +0,0 @@ -Description: -This is a text filter for Moodle that converts urls from many different media sites into embeded content. -Embed code is retrieved from the original site so should work even if the site changes embed format. - -Installation: -Download the source files. (zip file is available under download section) -Unzip the package -Copy the "oembed" folder to moodle/filter on the Moodle server. -Login as an admin on the Moodle site and install the filter. - -Upgrading from earlier versions: -Upgrade per normal procedures. Your settings from earlier plugins will be preserved. -NOTE - Embed providers may change the text that identifies them. It is possible that media embedded previously on your site no -longer meets the provider text definitions, and as such, may not show up as embedded media. Check the provider definition to see -if the media link needs to change. - -To use: -Under Plugins > Filters > Oembed Filter / Settings, you can choose: - - The type of tag to identify the embedded media. - - To delay the media loading or load it immediately. -By default the oembed filter disables all providers. -You can change this under Plugins > Filters > Oembed Filter / Manage providers. - -When inserting a media link url into a discussion, create a hyperlink and insert the url as the target. -When the discussion is posted the url will be changed into the embed content. -N.B. if you enable the "Convert URLs into links and images" filter ahead of this then it is easier for users to embed media. - -The embedded media providers are in three groups: - - Downloaded from http://oembed.com/providers.json. This is the main repository that manages Oembed provider definitions. - These are updated regularly in the cron job, and can change. - - Plugins provided to extend media providers provided in earlier versions of the plugin, but not contained in the provider repo. - - Local providers which allow a site administrator to save a downloaded one locally, so that it does not change with download - updates. This also allows new providers to be created that are not part of the omebed repo. diff --git a/classes/db/abstract_dbrow.php b/classes/db/abstract_dbrow.php index ab91cd9..1a93836 100644 --- a/classes/db/abstract_dbrow.php +++ b/classes/db/abstract_dbrow.php @@ -24,8 +24,6 @@ namespace filter_oembed\db; use stdClass; -defined('MOODLE_INTERNAL') || die(); - class abstract_dbrow { /** diff --git a/classes/db/providerrow.php b/classes/db/providerrow.php index 06bb265..4ffa878 100644 --- a/classes/db/providerrow.php +++ b/classes/db/providerrow.php @@ -23,9 +23,7 @@ namespace filter_oembed\db; -defined('MOODLE_INTERNAL') || die(); - -class providerrow extends abstract_dbrow{ +class providerrow extends abstract_dbrow { /** * @var int id */ diff --git a/classes/output/managementpage.php b/classes/output/managementpage.php index e41a9ea..b68803b 100644 --- a/classes/output/managementpage.php +++ b/classes/output/managementpage.php @@ -26,8 +26,6 @@ use filter_oembed\db\providerrow; use filter_oembed\provider\provider; -defined('MOODLE_INTERNAL') || die(); - class managementpage implements \renderable, \templatable { /** diff --git a/classes/output/providermodel.php b/classes/output/providermodel.php index 95dbdbb..83bad60 100644 --- a/classes/output/providermodel.php +++ b/classes/output/providermodel.php @@ -27,8 +27,6 @@ use filter_oembed\provider\provider; use filter_oembed\db\providerrow; -defined('MOODLE_INTERNAL') || die(); - /** * Class providermodel * @package filter_oembed\output diff --git a/classes/output/renderer.php b/classes/output/renderer.php index 1604256..31bd78b 100644 --- a/classes/output/renderer.php +++ b/classes/output/renderer.php @@ -23,8 +23,6 @@ namespace filter_oembed\output; -defined('MOODLE_INTERNAL') || die(); - class renderer extends \plugin_renderer_base { /** diff --git a/classes/plugininfo/oembedprovider.php b/classes/plugininfo/oembedprovider.php index e1cc541..2cd3911 100644 --- a/classes/plugininfo/oembedprovider.php +++ b/classes/plugininfo/oembedprovider.php @@ -23,10 +23,8 @@ namespace filter_oembed\plugininfo; -defined('MOODLE_INTERNAL') || die(); - class oembedprovider extends \core\plugininfo\base { public function is_uninstall_allowed() { return true; } -} \ No newline at end of file +} diff --git a/classes/provider/endpoint.php b/classes/provider/endpoint.php index e0d4574..3cb91e0 100644 --- a/classes/provider/endpoint.php +++ b/classes/provider/endpoint.php @@ -23,8 +23,6 @@ namespace filter_oembed\provider; -defined('MOODLE_INTERNAL') || die(); - /** * Base class for oembed endpoints. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later @@ -87,4 +85,4 @@ public function __get($name) { throw new \coding_exception($name.' is not a publicly accessible property of '.get_class($this)); } } -} \ No newline at end of file +} diff --git a/classes/provider/provider.php b/classes/provider/provider.php index f9d089b..7c074eb 100644 --- a/classes/provider/provider.php +++ b/classes/provider/provider.php @@ -25,7 +25,6 @@ namespace filter_oembed\provider; -defined('MOODLE_INTERNAL') || die(); /** * Base class for oembed providers and plugins. Plugins should extend this class. diff --git a/classes/task/update_providers.php b/classes/task/update_providers.php index a7f53ca..9be5e3f 100644 --- a/classes/task/update_providers.php +++ b/classes/task/update_providers.php @@ -23,8 +23,6 @@ namespace filter_oembed\task; -defined('MOODLE_INTERNAL') || die(); - use filter_oembed\service\oembed; class update_providers extends \core\task\scheduled_task { diff --git a/db/install.php b/db/install.php index 26e3cbd..c8c6da3 100644 --- a/db/install.php +++ b/db/install.php @@ -25,8 +25,6 @@ * Soundcloud (Troy Williams) */ -defined('MOODLE_INTERNAL') || die(); - use filter_oembed\service\oembed; /** * Installs the OEmbed filter. @@ -36,4 +34,4 @@ function xmldb_filter_oembed_install() { // Insert the initial data elements from the instance's providers. oembed::update_provider_data(); -} \ No newline at end of file +} diff --git a/db/upgrade.php b/db/upgrade.php index 7409bdf..b3982a1 100644 --- a/db/upgrade.php +++ b/db/upgrade.php @@ -25,8 +25,6 @@ * Soundcloud (Troy Williams) */ -defined('MOODLE_INTERNAL') || die(); - use filter_oembed\service\oembed; use filter_oembed\provider\provider; @@ -139,4 +137,4 @@ function xmldb_filter_oembed_upgrade($oldversion) { } return true; -} \ No newline at end of file +} diff --git a/settings.php b/settings.php index c58a481..c630cae 100644 --- a/settings.php +++ b/settings.php @@ -60,4 +60,4 @@ $ADMIN->add('filteroembedfolder', new admin_externalpage('filter_oembed_providers', get_string('manageproviders', 'filter_oembed'), new moodle_url('/filter/oembed/manageproviders.php'))); -$settings = null; \ No newline at end of file +$settings = null; diff --git a/tests/filter_test.php b/tests/filter_test.php index fd09a67..fde70c1 100644 --- a/tests/filter_test.php +++ b/tests/filter_test.php @@ -88,6 +88,7 @@ protected function setUp(): void { * Performs unit tests for all services supported by the filter. * * Need to update this test to not contact external services. + * @covers \filter_oembed\filter\filter */ public function test_filter() { $this->resetAfterTest(true); diff --git a/tests/oembed_test.php b/tests/oembed_test.php index 0d2dcca..5120774 100644 --- a/tests/oembed_test.php +++ b/tests/oembed_test.php @@ -58,6 +58,7 @@ public function assert_providers_ok($providers) { /** * Test instance. + * @covers \filter_oembed\classes\service\oembed\get_instance */ public function test_instance() { $this->resetAfterTest(true); @@ -66,6 +67,10 @@ public function test_instance() { $this->assertNotEmpty($oembed); } + /** + * Test set_providers + * @covers \filter_oembed\classes\service\oembed\set_providers + */ public function test_set_providers() { $this->resetAfterTest(true); $this->setAdminUser(); From c0d446c95aca6ba0cf5c75bbb272fe153f020208 Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Wed, 16 Nov 2022 12:33:00 +0100 Subject: [PATCH 02/23] Upgrade grunt versions --- package.json | 14 +++++++------- tests/oembed_test.php | 2 +- tests/testable_oembed.php | 1 - 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 491b689..2f87566 100644 --- a/package.json +++ b/package.json @@ -2,14 +2,14 @@ "description": "Grunt tasks for sass.", "private": true, "devDependencies": { - "grunt": "~0.4.1", - "grunt-autoprefixer": "^3.0.3", - "grunt-contrib-csslint": "^0.5.0", - "grunt-contrib-jshint": "^0.12.0", - "grunt-sass": "^1.2.1", + "grunt": "~1.4.1", + "grunt-autoprefixer": "^3.0.4", + "grunt-contrib-csslint": "^2.0.0", + "grunt-contrib-jshint": "^3.2.0", + "grunt-sass": "^3.1.0", "grunt-cssbeautifier": "^0.1.2", - "grunt-contrib-watch": "^0.6.1", - "grunt-exec": "~0.4.2", + "grunt-contrib-watch": "^1.1.0", + "grunt-exec": "~3.0.0", "grunt-load-gruntfile" : "^0.0.2" } } diff --git a/tests/oembed_test.php b/tests/oembed_test.php index 5120774..bb65c29 100644 --- a/tests/oembed_test.php +++ b/tests/oembed_test.php @@ -31,7 +31,7 @@ /** * @group filter_oembed */ -class filter_oembed_service_testcase extends advanced_testcase { +class filter_oembed_service_test extends advanced_testcase { /** * Make sure providers array is correct. diff --git a/tests/testable_oembed.php b/tests/testable_oembed.php index dee4ec1..74c68d4 100644 --- a/tests/testable_oembed.php +++ b/tests/testable_oembed.php @@ -22,7 +22,6 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -defined('MOODLE_INTERNAL') || die(); use filter_oembed\service\oembed; From 59709d723b0823c064c2fc34d701cb86b9cc0516 Mon Sep 17 00:00:00 2001 From: Olivier Bado-Faustin Date: Wed, 16 Nov 2022 14:48:52 +0100 Subject: [PATCH 03/23] Update ci.yml Improve Node 14.15 to 18.12 --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5b75d4f..8346441 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,11 +11,11 @@ jobs: - php: '7.4' moodle-branch: 'MOODLE_311_STABLE' database: 'mariadb' - node: '14.15.0' + node: '18.12.1' - php: '7.3' moodle-branch: 'MOODLE_310_STABLE' database: 'pgsql' - node: '14.15.0' + node: '18.12.1' services: postgres: @@ -114,4 +114,4 @@ jobs: - name: behat if: ${{ always() }} - run: moodle-plugin-ci behat --profile chrome \ No newline at end of file + run: moodle-plugin-ci behat --profile chrome From 17ab4793900b57793dac5399b27783af082245b3 Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Wed, 16 Nov 2022 15:43:27 +0100 Subject: [PATCH 04/23] Remove codechecker warnings and errors --- CHANGES.md | 28 +++++++++++++++++-- classes/service/oembed.php | 4 +-- lib.php | 1 - provider/docsdotcom/docsdotcom.php | 2 -- .../lang/en/oembedprovider_docsdotcom.php | 2 +- provider/issuu/issuu.php | 2 -- .../issuu/lang/en/oembedprovider_issuu.php | 2 +- .../lang/en/oembedprovider_o365video.php | 2 +- provider/o365video/o365video.php | 4 +-- .../lang/en/oembedprovider_officeforms.php | 2 +- provider/officeforms/officeforms.php | 2 -- .../pollev/lang/en/oembedprovider_pollev.php | 2 +- provider/pollev/pollev.php | 2 -- .../lang/en/oembedprovider_powerbi.php | 2 +- provider/powerbi/powerbi.php | 2 -- provider/powerbi/rest/powerbi.php | 4 +-- ...est.php => filter_oembed_service_test.php} | 18 +++++++++--- ...filter_test.php => filter_oembed_test.php} | 2 +- 18 files changed, 50 insertions(+), 33 deletions(-) rename tests/{oembed_test.php => filter_oembed_service_test.php} (91%) rename tests/{filter_test.php => filter_oembed_test.php} (99%) diff --git a/CHANGES.md b/CHANGES.md index a91e7b4..842d419 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,28 @@ -Release Notes +# Release Notes -Release 3.8.0 (Build 2019112600) +## 3.8.1 +Compatibility with Moodle 4.0 +Remove 17 errors and 38 warnings from codechecker + +## 3.8.0 (Build 2019112600) +Compatibility with Moodle 3.8 & 3.9 Updated subplugin declaration file to new subplugins.json structure. -(see CHANGES.TXT in release 3.3 for earlier changes.) \ No newline at end of file +## 3.3.0 +An xpath change was required in the Behat tests in order to get Behat to pass due to changes in Moodle's output. + +## 3.2 +the plugin was rewritten to utilize the oembed provider definitions from [http://oembed.com/providers.json](http://oembed.com/providers.json). +The previous provider definitions that were hardcoded, but not present in the oembed provider list, were added as "local" definitions to avoid regression errors. + +## 3.2.0.0 (Alpha) +Change highlights: + +- Oembed providers defintions are downloaded from http://oembed.com/providers.json and stored in the Moodle database, rather than code. +- Oembed defintions are refreshed nightly with new additions and deletions. +- Management screen allows for administrators to save provider defintions as local overrides not refreshed by oembed.com. +- Two types of tags can be used for filtering. The one desired can be configured. +- Lazy loading can be turned on or off; default is on. This can improve site performance. +- Provider management screen allows enable/disable, and edit as local as well as providing all of the provider information. +- A subplugin system is in place to allow providers not stored at oembed.com to define oembed information. + Some of the existing Microsoft providers have been rewritten as these. diff --git a/classes/service/oembed.php b/classes/service/oembed.php index 8771db4..35668a0 100755 --- a/classes/service/oembed.php +++ b/classes/service/oembed.php @@ -251,7 +251,7 @@ protected function oembed_getpreloadhtml(array $jsonarr, $params = []) { return $renderer->preload($this->oembed_gethtml($jsonarr, $params), $jsonarr); } - // ---- PROVIDER DATA MANAGEMENT SECTION ---- + // PROVIDER DATA MANAGEMENT SECTION. /** * Function to update provider data in database with current provider sources. @@ -557,7 +557,7 @@ final protected static function match_provider_names($providerarray, $provider) return $foundrecord; } - // ---- OTHER HELPER FUNCTIONS ---- + // OTHER HELPER FUNCTIONS. /** * Magic method for getting properties. diff --git a/lib.php b/lib.php index ad95266..5eedb7c 100644 --- a/lib.php +++ b/lib.php @@ -21,7 +21,6 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -defined('MOODLE_INTERNAL') || die(); use filter_oembed\forms\provider; diff --git a/provider/docsdotcom/docsdotcom.php b/provider/docsdotcom/docsdotcom.php index 9305f24..1023921 100644 --- a/provider/docsdotcom/docsdotcom.php +++ b/provider/docsdotcom/docsdotcom.php @@ -24,8 +24,6 @@ namespace filter_oembed\provider; -defined('MOODLE_INTERNAL') || die(); - /** * oEmbed provider implementation for Docs.com */ diff --git a/provider/docsdotcom/lang/en/oembedprovider_docsdotcom.php b/provider/docsdotcom/lang/en/oembedprovider_docsdotcom.php index 89a74b6..cf2029c 100644 --- a/provider/docsdotcom/lang/en/oembedprovider_docsdotcom.php +++ b/provider/docsdotcom/lang/en/oembedprovider_docsdotcom.php @@ -21,4 +21,4 @@ * @copyright 2016 The POET Group */ -$string['pluginname'] = 'Docsdotcom'; \ No newline at end of file +$string['pluginname'] = 'Docsdotcom'; diff --git a/provider/issuu/issuu.php b/provider/issuu/issuu.php index d919651..6a789d5 100644 --- a/provider/issuu/issuu.php +++ b/provider/issuu/issuu.php @@ -24,8 +24,6 @@ namespace filter_oembed\provider; -defined('MOODLE_INTERNAL') || die(); - /** * oEmbed provider implementation for ISSUU */ diff --git a/provider/issuu/lang/en/oembedprovider_issuu.php b/provider/issuu/lang/en/oembedprovider_issuu.php index 4998dbd..4dac091 100644 --- a/provider/issuu/lang/en/oembedprovider_issuu.php +++ b/provider/issuu/lang/en/oembedprovider_issuu.php @@ -21,4 +21,4 @@ * @copyright 2016 The POET Group */ -$string['pluginname'] = 'ISSUU'; \ No newline at end of file +$string['pluginname'] = 'ISSUU'; diff --git a/provider/o365video/lang/en/oembedprovider_o365video.php b/provider/o365video/lang/en/oembedprovider_o365video.php index 9927b0e..29e416a 100644 --- a/provider/o365video/lang/en/oembedprovider_o365video.php +++ b/provider/o365video/lang/en/oembedprovider_o365video.php @@ -21,4 +21,4 @@ * @copyright 2016 The POET Group */ -$string['pluginname'] = 'Office365 video'; \ No newline at end of file +$string['pluginname'] = 'Office365 video'; diff --git a/provider/o365video/o365video.php b/provider/o365video/o365video.php index 2cd24e7..d47780b 100644 --- a/provider/o365video/o365video.php +++ b/provider/o365video/o365video.php @@ -23,8 +23,6 @@ namespace filter_oembed\provider; -defined('MOODLE_INTERNAL') || die(); - /** * oEmbed provider implementation for Docs.com */ @@ -125,4 +123,4 @@ public function get_replacement($matched) { } return $matched[0]; } -} \ No newline at end of file +} diff --git a/provider/officeforms/lang/en/oembedprovider_officeforms.php b/provider/officeforms/lang/en/oembedprovider_officeforms.php index a0608aa..13a1bfa 100644 --- a/provider/officeforms/lang/en/oembedprovider_officeforms.php +++ b/provider/officeforms/lang/en/oembedprovider_officeforms.php @@ -21,4 +21,4 @@ * @copyright 2016 The POET Group */ -$string['pluginname'] = 'Officeforms'; \ No newline at end of file +$string['pluginname'] = 'Officeforms'; diff --git a/provider/officeforms/officeforms.php b/provider/officeforms/officeforms.php index 0fb5446..acc8249 100644 --- a/provider/officeforms/officeforms.php +++ b/provider/officeforms/officeforms.php @@ -24,8 +24,6 @@ namespace filter_oembed\provider; -defined('MOODLE_INTERNAL') || die(); - /** * oEmbed provider implementation for Microsoft Forms */ diff --git a/provider/pollev/lang/en/oembedprovider_pollev.php b/provider/pollev/lang/en/oembedprovider_pollev.php index 4bf0641..0bc2805 100644 --- a/provider/pollev/lang/en/oembedprovider_pollev.php +++ b/provider/pollev/lang/en/oembedprovider_pollev.php @@ -21,4 +21,4 @@ * @copyright 2016 The POET Group */ -$string['pluginname'] = 'Poll Everywhere'; \ No newline at end of file +$string['pluginname'] = 'Poll Everywhere'; diff --git a/provider/pollev/pollev.php b/provider/pollev/pollev.php index 2004727..de645fa 100644 --- a/provider/pollev/pollev.php +++ b/provider/pollev/pollev.php @@ -24,8 +24,6 @@ namespace filter_oembed\provider; -defined('MOODLE_INTERNAL') || die(); - /** * oEmbed provider implementation for Poll Everywhere */ diff --git a/provider/powerbi/lang/en/oembedprovider_powerbi.php b/provider/powerbi/lang/en/oembedprovider_powerbi.php index f566660..a85776e 100644 --- a/provider/powerbi/lang/en/oembedprovider_powerbi.php +++ b/provider/powerbi/lang/en/oembedprovider_powerbi.php @@ -21,4 +21,4 @@ * @copyright 2016 The POET Group */ -$string['pluginname'] = 'Power BI'; \ No newline at end of file +$string['pluginname'] = 'Power BI'; diff --git a/provider/powerbi/powerbi.php b/provider/powerbi/powerbi.php index ac0cc0d..1b2d19f 100644 --- a/provider/powerbi/powerbi.php +++ b/provider/powerbi/powerbi.php @@ -24,8 +24,6 @@ namespace filter_oembed\provider; -defined('MOODLE_INTERNAL') || die(); - /** * oEmbed provider implementation for Docs.com */ diff --git a/provider/powerbi/rest/powerbi.php b/provider/powerbi/rest/powerbi.php index beff7b7..450d04e 100644 --- a/provider/powerbi/rest/powerbi.php +++ b/provider/powerbi/rest/powerbi.php @@ -23,8 +23,6 @@ namespace filter_oembed\provider\powerbi\rest; -defined('MOODLE_INTERNAL') || die(); - /** * API client for Power BI. */ @@ -53,4 +51,4 @@ public function getreportoembedurl($reportid, $reportsdata) { } } } -} \ No newline at end of file +} diff --git a/tests/oembed_test.php b/tests/filter_oembed_service_test.php similarity index 91% rename from tests/oembed_test.php rename to tests/filter_oembed_service_test.php index bb65c29..e6dc2a4 100644 --- a/tests/oembed_test.php +++ b/tests/filter_oembed_service_test.php @@ -83,6 +83,7 @@ public function test_set_providers() { /** * Test providers. + * @covers \filter_oembed\classes\service\oembed\get_instance */ public function test_providers() { $this->resetAfterTest(true); @@ -95,6 +96,7 @@ public function test_providers() { /** * Test html. * TODO - have a local oembed service with test fixtures for performing test. + * @covers \filter_oembed\classes\service\oembed\html_output */ public function test_embed_html() { $this->resetAfterTest(true); @@ -110,6 +112,7 @@ public function test_embed_html() { /** * Test lazy load html. * TODO - have a local oembed service with test fixtures for performing test. + * @covers \filter_oembed\classes\service\oembed\get_instance */ public function test_preloader_html() { $this->resetAfterTest(true); @@ -118,15 +121,16 @@ public function test_preloader_html() { $oembed = testable_oembed::get_instance(); $text = $oembed->html_output('https://youtu.be/abuQk-6M5R4'); $this->assertStringContainsString('
', $text); - $this->assertMatchesRegularExpression('/
/is', $text); + $this->assertMatchesRegularExpression('/
/is', $text); $this->assertMatchesRegularExpression('/
(?:.*)<\/div>/', $text); $this->assertStringContainsString('', $text); - } /** * Test download providers. + * @covers \filter_oembed\classes\service\oembed\download_providers */ public function test_download_providers() { $this->resetAfterTest(true); @@ -136,6 +140,7 @@ public function test_download_providers() { /** * Test get local providers. + * @covers \filter_oembed\classes\service\oembed\get_local_providers */ public function test_get_local_providers() { $this->resetAfterTest(true); @@ -145,6 +150,7 @@ public function test_get_local_providers() { /** * Test get plugin providers. + * @covers \filter_oembed\classes\service\oembed\get_plugin_providers */ public function test_get_plugin_providers() { $this->resetAfterTest(true); @@ -154,6 +160,7 @@ public function test_get_plugin_providers() { /** * Test match_provider_names. + * @covers \filter_oembed\classes\service\oembed\match_provider_names */ public function test_match_provider_names() { $this->resetAfterTest(true); @@ -197,6 +204,7 @@ public function test_match_provider_names() { /** * Test the "__get" magic method. + * @covers \filter_oembed\classes\service\oembed\__get */ public function test_get() { $this->resetAfterTest(true); @@ -228,7 +236,9 @@ public function test_get() { /** * Test enable and disable provider functions. - * Tests: enable_provider, disable_provider, set_provider_enable_value. + * @covers \filter_oembed\classes\service\oembed\enable_provider + * @covers \filter_oembed\classes\service\oembed\disable_provider + * @covers \filter_oembed\classes\service\oembed\set_provider_enable_value */ public function test_enable_disable_provider() { $this->resetAfterTest(true); diff --git a/tests/filter_test.php b/tests/filter_oembed_test.php similarity index 99% rename from tests/filter_test.php rename to tests/filter_oembed_test.php index fde70c1..6651099 100644 --- a/tests/filter_test.php +++ b/tests/filter_oembed_test.php @@ -34,7 +34,7 @@ /** * @group filter_oembed */ -class filter_oembed_testcase extends advanced_testcase { +class filter_oembed_test extends advanced_testcase { protected $filter; From f0332803a7e3c1198c1ed73aa48f938a89fb3967 Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Wed, 16 Nov 2022 17:17:28 +0100 Subject: [PATCH 05/23] Remove some phpdoc errors (86 errors before this commit) --- classes/db/abstract_dbrow.php | 1 + classes/output/managementpage.php | 5 +++++ classes/output/providermodel.php | 3 +++ classes/provider/provider.php | 10 +++++++++- filter.php | 8 ++++---- provider/docsdotcom/docsdotcom.php | 4 +++- .../docsdotcom/lang/en/oembedprovider_docsdotcom.php | 2 ++ provider/docsdotcom/version.php | 2 ++ provider/issuu/issuu.php | 2 ++ provider/issuu/lang/en/oembedprovider_issuu.php | 2 ++ provider/issuu/version.php | 2 ++ .../o365video/lang/en/oembedprovider_o365video.php | 2 ++ provider/o365video/o365video.php | 2 ++ provider/o365video/version.php | 2 ++ .../officeforms/lang/en/oembedprovider_officeforms.php | 2 ++ provider/officeforms/officeforms.php | 4 +++- provider/officeforms/version.php | 2 ++ provider/pollev/lang/en/oembedprovider_pollev.php | 2 ++ provider/pollev/pollev.php | 2 ++ provider/pollev/version.php | 2 ++ provider/powerbi/lang/en/oembedprovider_powerbi.php | 2 ++ provider/powerbi/powerbi.php | 2 ++ provider/powerbi/rest/powerbi.php | 9 +++++++++ provider/powerbi/version.php | 2 ++ tests/behat/behat_filter_oembed.php | 7 +++++-- tests/filter_oembed_service_test.php | 4 ++++ tests/filter_oembed_test.php | 2 ++ tests/testable_oembed.php | 4 ++++ 28 files changed, 84 insertions(+), 9 deletions(-) diff --git a/classes/db/abstract_dbrow.php b/classes/db/abstract_dbrow.php index 1a93836..ce6107d 100644 --- a/classes/db/abstract_dbrow.php +++ b/classes/db/abstract_dbrow.php @@ -16,6 +16,7 @@ /** * Base class for classes which map to db tables. + * @package filter_oembed\classes\db * @author Guy Thomas * @copyright Copyright (c) 2016 Blackboard Inc. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/classes/output/managementpage.php b/classes/output/managementpage.php index b68803b..e703427 100644 --- a/classes/output/managementpage.php +++ b/classes/output/managementpage.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * Management page output + * * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later @@ -26,6 +28,9 @@ use filter_oembed\db\providerrow; use filter_oembed\provider\provider; +/** + * Management page class. + */ class managementpage implements \renderable, \templatable { /** diff --git a/classes/output/providermodel.php b/classes/output/providermodel.php index 83bad60..7428532 100644 --- a/classes/output/providermodel.php +++ b/classes/output/providermodel.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * providermodel output + * * @package filter_oembed * @author Guy Thomas * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later @@ -29,6 +31,7 @@ /** * Class providermodel + * * @package filter_oembed\output * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @copyright 2016 The POET Group diff --git a/classes/provider/provider.php b/classes/provider/provider.php index 7c074eb..ac979b8 100644 --- a/classes/provider/provider.php +++ b/classes/provider/provider.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * Base class for oembed providers and plugins + * * @package filter_oembed * @author Mike Churchward * @author Erich M. Wappis @@ -66,10 +68,16 @@ class provider { protected $source = ''; /** - * @var Class constant descriptions. + * @var PROVIDER SOURCE LOCAL. */ const PROVIDER_SOURCE_LOCAL = 'local::'; + /** + * @var PROVIDER SOURCE DOWNLOAD. + */ const PROVIDER_SOURCE_DOWNLOAD = 'download::'; + /** + * @var PROVIDER SOURCE PLUGIN. + */ const PROVIDER_SOURCE_PLUGIN = 'plugin::'; /** diff --git a/filter.php b/filter.php index c6e67e8..79908bc 100644 --- a/filter.php +++ b/filter.php @@ -36,7 +36,7 @@ /** * Main filter class for embedded remote content. * - * @package filter_oembed + * @package filter_oembed * @copyright Erich M. Wappis / Guy Thomas 2016 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ @@ -46,8 +46,8 @@ class filter_oembed extends moodle_text_filter { * content gets filtered, links either wrapped in an tag or in a
tag with class="oembed" * will be replaced by embeded content * - * @param $text HTML to be processed. - * @param $options + * @param string $text HTML to be processed. + * @param array $options * @return string String containing processed HTML. */ public function filter($text, array $options = array()) { @@ -87,7 +87,7 @@ public function filter($text, array $options = array()) { /** * Callback function to be used by the main filter * - * @param $match array An array of matched groups, where [1] is the URL matched. + * @param array $match An array of matched groups, where [1] is the URL matched. * */ private static function find_oembeds_callback($match) { diff --git a/provider/docsdotcom/docsdotcom.php b/provider/docsdotcom/docsdotcom.php index 1023921..688aee6 100644 --- a/provider/docsdotcom/docsdotcom.php +++ b/provider/docsdotcom/docsdotcom.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Microsoft docs.com + * * @package filter_oembed * @author James McQuillan * @author Mike Churchward @@ -31,7 +33,7 @@ class docsdotcom extends provider { /** * Constructor. - * @param $data JSON decoded array or a data object containing all provider data. + * @param any $data JSON decoded array or a data object containing all provider data. */ public function __construct($data = null) { if ($data === null) { diff --git a/provider/docsdotcom/lang/en/oembedprovider_docsdotcom.php b/provider/docsdotcom/lang/en/oembedprovider_docsdotcom.php index cf2029c..9ffe86e 100644 --- a/provider/docsdotcom/lang/en/oembedprovider_docsdotcom.php +++ b/provider/docsdotcom/lang/en/oembedprovider_docsdotcom.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oembedprovider Microsoft docs.com + * * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/provider/docsdotcom/version.php b/provider/docsdotcom/version.php index bdafbbe..80cb93c 100644 --- a/provider/docsdotcom/version.php +++ b/provider/docsdotcom/version.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Microsoft docs.com + * * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/provider/issuu/issuu.php b/provider/issuu/issuu.php index 6a789d5..24f62b5 100644 --- a/provider/issuu/issuu.php +++ b/provider/issuu/issuu.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Issuu.com + * * @package filter_oembed * @author James McQuillan * @author Mike Churchward diff --git a/provider/issuu/lang/en/oembedprovider_issuu.php b/provider/issuu/lang/en/oembedprovider_issuu.php index 4dac091..7ef6bc9 100644 --- a/provider/issuu/lang/en/oembedprovider_issuu.php +++ b/provider/issuu/lang/en/oembedprovider_issuu.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Issuu.com + * * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/provider/issuu/version.php b/provider/issuu/version.php index b037764..d39dc4a 100644 --- a/provider/issuu/version.php +++ b/provider/issuu/version.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Issuu.com + * * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/provider/o365video/lang/en/oembedprovider_o365video.php b/provider/o365video/lang/en/oembedprovider_o365video.php index 29e416a..f483199 100644 --- a/provider/o365video/lang/en/oembedprovider_o365video.php +++ b/provider/o365video/lang/en/oembedprovider_o365video.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Office365 video + * * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/provider/o365video/o365video.php b/provider/o365video/o365video.php index d47780b..fc12844 100644 --- a/provider/o365video/o365video.php +++ b/provider/o365video/o365video.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Office365 video + * * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/provider/o365video/version.php b/provider/o365video/version.php index bf1fed1..8523285 100644 --- a/provider/o365video/version.php +++ b/provider/o365video/version.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Office365 video + * * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/provider/officeforms/lang/en/oembedprovider_officeforms.php b/provider/officeforms/lang/en/oembedprovider_officeforms.php index 13a1bfa..6fda1eb 100644 --- a/provider/officeforms/lang/en/oembedprovider_officeforms.php +++ b/provider/officeforms/lang/en/oembedprovider_officeforms.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Microsoft Office Forms + * * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/provider/officeforms/officeforms.php b/provider/officeforms/officeforms.php index acc8249..1da041d 100644 --- a/provider/officeforms/officeforms.php +++ b/provider/officeforms/officeforms.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Microsoft Office Forms + * * @package filter_oembed * @author Aashay Zajriya * @author Mike Churchward @@ -31,7 +33,7 @@ class officeforms extends provider { /** * Constructor. - * @param $data JSON decoded array or a data object containing all provider data. + * @param any $data JSON decoded array or a data object containing all provider data. */ public function __construct($data = null) { if ($data === null) { diff --git a/provider/officeforms/version.php b/provider/officeforms/version.php index f8c5b58..97c5599 100644 --- a/provider/officeforms/version.php +++ b/provider/officeforms/version.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Microsoft Office Forms + * * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/provider/pollev/lang/en/oembedprovider_pollev.php b/provider/pollev/lang/en/oembedprovider_pollev.php index 0bc2805..a9de75d 100644 --- a/provider/pollev/lang/en/oembedprovider_pollev.php +++ b/provider/pollev/lang/en/oembedprovider_pollev.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Poll Everywhere + * * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/provider/pollev/pollev.php b/provider/pollev/pollev.php index de645fa..ecd8ddf 100644 --- a/provider/pollev/pollev.php +++ b/provider/pollev/pollev.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Poll Everywhere + * * @package filter_oembed * @author James McQuillan * @author Mike Churchward diff --git a/provider/pollev/version.php b/provider/pollev/version.php index 336fbe6..3346780 100644 --- a/provider/pollev/version.php +++ b/provider/pollev/version.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Poll Everywhere + * * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/provider/powerbi/lang/en/oembedprovider_powerbi.php b/provider/powerbi/lang/en/oembedprovider_powerbi.php index a85776e..21ae898 100644 --- a/provider/powerbi/lang/en/oembedprovider_powerbi.php +++ b/provider/powerbi/lang/en/oembedprovider_powerbi.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Power BI + * * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/provider/powerbi/powerbi.php b/provider/powerbi/powerbi.php index 1b2d19f..85d8100 100644 --- a/provider/powerbi/powerbi.php +++ b/provider/powerbi/powerbi.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Power BI + * * @package filter_oembed * @author Sushant Gawali * @author Mike Churchward diff --git a/provider/powerbi/rest/powerbi.php b/provider/powerbi/rest/powerbi.php index 450d04e..6575468 100644 --- a/provider/powerbi/rest/powerbi.php +++ b/provider/powerbi/rest/powerbi.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * REST API client for Power BI + * * @package filter_oembed * @author Sushant Gawali * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later @@ -35,6 +37,7 @@ class powerbi extends \local_o365\rest\o365api { public function get_apiuri() { return "https://api.powerbi.com/beta/myorg/"; } + /** * Get the API client's oauth2 resource. * @@ -43,6 +46,12 @@ public function get_apiuri() { public static function get_resource() { return 'https://analysis.windows.net/powerbi/api'; } + + /** + * Get report oembed url. + * + * @return string + */ public function getreportoembedurl($reportid, $reportsdata) { $reportsdata = $this->process_apicall_response($reportsdata); foreach ($reportsdata['value'] as $report) { diff --git a/provider/powerbi/version.php b/provider/powerbi/version.php index bc2374b..b09dac4 100644 --- a/provider/powerbi/version.php +++ b/provider/powerbi/version.php @@ -15,6 +15,8 @@ // along with Moodle. If not, see . /** + * oEmbed provider for Power BI + * * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/tests/behat/behat_filter_oembed.php b/tests/behat/behat_filter_oembed.php index 611d8bf..a255a7e 100644 --- a/tests/behat/behat_filter_oembed.php +++ b/tests/behat/behat_filter_oembed.php @@ -101,8 +101,10 @@ public function the_provider_is_enabled($provider) { } /** + * i filter provider list + * * @Given /^I filter the provider list to "(?P[^"]*)"$/ - * @param $provider + * @param any $provider * @throws \Behat\Mink\Exception\ExpectationException */ public function i_filter_provider_list($provider) { @@ -119,7 +121,7 @@ public function i_filter_provider_list($provider) { */ protected function edit_form_xpath($provider) { $xpath = '//td/a[text()=\'' . $provider.'\']'; - $xpath .= '/parent::td/div[contains(@class,\'oembed-provider-details\')]/form'; + $xpath .= '/parent::td/span[contains(@class,\'oembed-provider-details\')]/form'; return $xpath; } @@ -133,6 +135,7 @@ protected function wait_for_edit_form($provider) { } /** + * i edit provider with values * @Given /^I edit the provider "(?P[^"]*)" with the values:$/ * @param string $provider * @param TableNode $table diff --git a/tests/filter_oembed_service_test.php b/tests/filter_oembed_service_test.php index e6dc2a4..f7ef2e0 100644 --- a/tests/filter_oembed_service_test.php +++ b/tests/filter_oembed_service_test.php @@ -23,12 +23,16 @@ * @copyright 2016 The POET Group */ +namespace filter_oembed; + defined('MOODLE_INTERNAL') || die(); global $CFG; require_once($CFG->dirroot . '/filter/oembed/tests/testable_oembed.php'); /** + * Unit tests for the filter_oembed. + * * @group filter_oembed */ class filter_oembed_service_test extends advanced_testcase { diff --git a/tests/filter_oembed_test.php b/tests/filter_oembed_test.php index 6651099..e901b66 100644 --- a/tests/filter_oembed_test.php +++ b/tests/filter_oembed_test.php @@ -26,6 +26,8 @@ * @copyright Microsoft, Inc. */ +namespace filter_oembed; + defined('MOODLE_INTERNAL') || die(); global $CFG; diff --git a/tests/testable_oembed.php b/tests/testable_oembed.php index 74c68d4..89f1faf 100644 --- a/tests/testable_oembed.php +++ b/tests/testable_oembed.php @@ -51,6 +51,7 @@ public static function get_instance($providerstate = 'enabled') { /** * Calls the protected set_providers function. + * @param string $state */ public function protected_set_providers($state = 'enabled') { return self::set_providers($state); @@ -79,6 +80,8 @@ public static function protected_get_plugin_providers() { /** * Calls the protected match_provider_names function. + * @param array $providerarray + * @param object $provider */ public static function protected_match_provider_names($providerarray, $provider) { return self::match_provider_names($providerarray, $provider); @@ -93,6 +96,7 @@ public function empty_providers() { /** * Calls the protected get_all_provider_data function. + * @param string $fields */ public static function protected_get_all_provider_data($fields = '*') { return self::get_all_provider_data($fields); From bf0c3f00f3e74c8dc644c54d41c00d631df0ac3f Mon Sep 17 00:00:00 2001 From: Olivier Bado-Faustin Date: Wed, 16 Nov 2022 17:25:04 +0100 Subject: [PATCH 06/23] Update ci.yml Update github actions checkout & setup-node --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8346441..edeb1eb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,12 +42,12 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: path: plugin - name: Install node - uses: actions/setup-node@v1 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node }} From 16f97243f4ba5f3466463d40ef253b6f8ccfbb61 Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Thu, 17 Nov 2022 12:18:47 +0100 Subject: [PATCH 07/23] Correct some phpDocs errors. --- classes/db/abstract_dbrow.php | 2 +- classes/output/providermodel.php | 2 +- classes/plugininfo/oembedprovider.php | 9 ++++++++- classes/service/oembed.php | 2 +- classes/service/util.php | 5 +++-- db/tasks.php | 1 + db/upgrade.php | 2 +- lib.php | 1 + provider/issuu/issuu.php | 4 ++-- provider/o365video/o365video.php | 6 +++--- provider/pollev/pollev.php | 4 ++-- provider/powerbi/powerbi.php | 7 ++++++- provider/powerbi/rest/powerbi.php | 7 ++++--- tests/behat/behat_filter_oembed.php | 8 +++++++- 14 files changed, 41 insertions(+), 19 deletions(-) diff --git a/classes/db/abstract_dbrow.php b/classes/db/abstract_dbrow.php index ce6107d..d4e5118 100644 --- a/classes/db/abstract_dbrow.php +++ b/classes/db/abstract_dbrow.php @@ -16,7 +16,7 @@ /** * Base class for classes which map to db tables. - * @package filter_oembed\classes\db + * @package filter_oembed * @author Guy Thomas * @copyright Copyright (c) 2016 Blackboard Inc. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/classes/output/providermodel.php b/classes/output/providermodel.php index 7428532..e29b72e 100644 --- a/classes/output/providermodel.php +++ b/classes/output/providermodel.php @@ -32,7 +32,7 @@ /** * Class providermodel * - * @package filter_oembed\output + * @package filter_oembed * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @copyright 2016 The POET Group */ diff --git a/classes/plugininfo/oembedprovider.php b/classes/plugininfo/oembedprovider.php index 2cd3911..8ab74c1 100644 --- a/classes/plugininfo/oembedprovider.php +++ b/classes/plugininfo/oembedprovider.php @@ -15,6 +15,7 @@ // along with Moodle. If not, see . /** + * filter_oembed capabilities list * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later @@ -22,8 +23,14 @@ */ namespace filter_oembed\plugininfo; - +/** + * filter_oembed capabilities list + */ class oembedprovider extends \core\plugininfo\base { + /** + * filter_oembed has the uninstall capability + * @return boolean always true + */ public function is_uninstall_allowed() { return true; } diff --git a/classes/service/oembed.php b/classes/service/oembed.php index 35668a0..b7661e5 100755 --- a/classes/service/oembed.php +++ b/classes/service/oembed.php @@ -662,7 +662,7 @@ public function copy_provider_to_local($providerdata) { /** * Set the provider enabled field to the specified value. * - * @param int | object $provider The provider to modify. + * @param int|object $provider The provider to modify. * @param int $value Value to set. */ private function set_provider_enable_value($provider, $value) { diff --git a/classes/service/util.php b/classes/service/util.php index 3e07cd5..17f31bd 100644 --- a/classes/service/util.php +++ b/classes/service/util.php @@ -31,6 +31,7 @@ /** * General utility class. + * @package filter_oembed * @author gthomas2 * @copyright Copyright (c) 2016 Moodlerooms Inc. (http://www.moodlerooms.com) * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later @@ -41,9 +42,9 @@ class util { * * NOTE: Current limitations - does not recurse to properties that are object instances or arrays. * - * @param $classorobject + * @param any $classorobject * @throws coding_exception - * @return external_value[] + * @return array external_value[] */ public static function define_class_for_webservice($classorobject) { $reflect = new \ReflectionClass($classorobject); diff --git a/db/tasks.php b/db/tasks.php index a0c4efc..cf97470 100644 --- a/db/tasks.php +++ b/db/tasks.php @@ -15,6 +15,7 @@ // along with Moodle. If not, see . /** + * oEmbed filter tasks * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/db/upgrade.php b/db/upgrade.php index b3982a1..8d42565 100644 --- a/db/upgrade.php +++ b/db/upgrade.php @@ -31,7 +31,7 @@ /** * Upgrades the OEmbed filter. * - * @param $oldversion Version to be upgraded from. + * @param int $oldversion Version to be upgraded from. * @return bool Success. */ function xmldb_filter_oembed_upgrade($oldversion) { diff --git a/lib.php b/lib.php index 5eedb7c..bee5c51 100644 --- a/lib.php +++ b/lib.php @@ -16,6 +16,7 @@ /** * General lib file + * @package filter_oembed * @author Guy Thomas * @copyright Copyright (c) 2016 Blackboard Inc. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/provider/issuu/issuu.php b/provider/issuu/issuu.php index 24f62b5..da47880 100644 --- a/provider/issuu/issuu.php +++ b/provider/issuu/issuu.php @@ -32,8 +32,8 @@ class issuu extends provider { /** - * Constructor. - * @param $data JSON decoded array or a data object containing all provider data. + * ISSUU provider constructor. + * @param any $data JSON decoded array or a data object containing all provider data. */ public function __construct($data = null) { if ($data === null) { diff --git a/provider/o365video/o365video.php b/provider/o365video/o365video.php index fc12844..e342069 100644 --- a/provider/o365video/o365video.php +++ b/provider/o365video/o365video.php @@ -26,13 +26,13 @@ namespace filter_oembed\provider; /** - * oEmbed provider implementation for Docs.com + * oEmbed provider implementation for Office365 video */ class o365video extends provider { /** - * Constructor. - * @param $data JSON decoded array or a data object containing all provider data. + * Office365 provider Constructor. + * @param any $data JSON decoded array or a data object containing all provider data. */ public function __construct($data = null) { if ($data === null) { diff --git a/provider/pollev/pollev.php b/provider/pollev/pollev.php index ecd8ddf..f725fe7 100644 --- a/provider/pollev/pollev.php +++ b/provider/pollev/pollev.php @@ -32,8 +32,8 @@ class pollev extends provider { /** - * Constructor. - * @param $data JSON decoded array or a data object containing all provider data. + * Poll Everywhere oembed constructor. + * @param any $data JSON decoded array or a data object containing all provider data. */ public function __construct($data = null) { if ($data === null) { diff --git a/provider/powerbi/powerbi.php b/provider/powerbi/powerbi.php index 85d8100..f4c6c9e 100644 --- a/provider/powerbi/powerbi.php +++ b/provider/powerbi/powerbi.php @@ -33,7 +33,7 @@ class powerbi extends provider { /** * Constructor. - * @param $data JSON decoded array or a data object containing all provider data. + * @param any $data JSON decoded array or a data object containing all provider data. */ public function __construct($data = null) { if ($data === null) { @@ -104,6 +104,11 @@ public function get_replacement($matched) { return $matched[0]; } + /** + * [getembedhtml description] + * @param [type] $embedurl [description] + * @return string [description] + */ private function getembedhtml($embedurl) { return ''; diff --git a/provider/powerbi/rest/powerbi.php b/provider/powerbi/rest/powerbi.php index 6575468..cd5ba34 100644 --- a/provider/powerbi/rest/powerbi.php +++ b/provider/powerbi/rest/powerbi.php @@ -48,9 +48,10 @@ public static function get_resource() { } /** - * Get report oembed url. - * - * @return string + * [getreportoembedurl description] + * @param int $reportid [description] + * @param any $reportsdata [description] + * @return string [description] */ public function getreportoembedurl($reportid, $reportsdata) { $reportsdata = $this->process_apicall_response($reportsdata); diff --git a/tests/behat/behat_filter_oembed.php b/tests/behat/behat_filter_oembed.php index a255a7e..cfb44ff 100644 --- a/tests/behat/behat_filter_oembed.php +++ b/tests/behat/behat_filter_oembed.php @@ -20,11 +20,15 @@ * @copyright Copyright (c) 2016 Blackboard Inc. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ +namespace filter_oembed\tests; use Behat\Gherkin\Node\TableNode; require_once(__DIR__ . '/../../../../lib/behat/behat_base.php'); - +/** + * Oembed filter custom behat steps. + * @package filter_oembed + */ class behat_filter_oembed extends behat_base { /** @@ -83,6 +87,7 @@ protected function ensure_provider_status($provider, $enabled = true) { } /** + * Ensure that the provider status is disabled * @Given /^the provider "(?P[^"]*)" is disabled$/ * @param string $provider * @throws \Behat\Mink\Exception\ExpectationException @@ -92,6 +97,7 @@ public function the_provider_is_disabled($provider) { } /** + * Ensure that the provider status is enabled * @Given /^the provider "(?P[^"]*)" is enabled$/ * @param string $provider * @throws \Behat\Mink\Exception\ExpectationException From 095066d135f8def8995a64926b3ff90e82dbb929 Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Thu, 17 Nov 2022 12:25:36 +0100 Subject: [PATCH 08/23] correct namespace --- classes/service/oembed.php | 4 ++-- tests/behat/behat_filter_oembed.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/classes/service/oembed.php b/classes/service/oembed.php index b7661e5..9e21402 100755 --- a/classes/service/oembed.php +++ b/classes/service/oembed.php @@ -586,7 +586,7 @@ public function enable_provider($provider) { /** * Set the provider to "disabled". * - * @param int | provider The provider to disable. + * @param int|provider The provider to disable. */ public function disable_provider($provider) { $this->set_provider_enable_value($provider, 0); @@ -595,7 +595,7 @@ public function disable_provider($provider) { /** * Delete the local provider. * - * @param int | provider The provider to delete. + * @param int|provider The provider to delete. */ public function delete_provider($provider) { global $DB; diff --git a/tests/behat/behat_filter_oembed.php b/tests/behat/behat_filter_oembed.php index cfb44ff..e4751dc 100644 --- a/tests/behat/behat_filter_oembed.php +++ b/tests/behat/behat_filter_oembed.php @@ -20,7 +20,7 @@ * @copyright Copyright (c) 2016 Blackboard Inc. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -namespace filter_oembed\tests; +namespace filter_oembed; use Behat\Gherkin\Node\TableNode; From 959d896b7883c46bd143697e546a1f66ece51647 Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Thu, 17 Nov 2022 14:27:36 +0100 Subject: [PATCH 09/23] remove namespace for behat_filter_oembed --- tests/behat/behat_filter_oembed.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/behat/behat_filter_oembed.php b/tests/behat/behat_filter_oembed.php index e4751dc..950c8c9 100644 --- a/tests/behat/behat_filter_oembed.php +++ b/tests/behat/behat_filter_oembed.php @@ -20,7 +20,6 @@ * @copyright Copyright (c) 2016 Blackboard Inc. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -namespace filter_oembed; use Behat\Gherkin\Node\TableNode; From ab3678b2c9d16b5de6247d30302f51a97db1d332 Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Thu, 17 Nov 2022 16:59:52 +0100 Subject: [PATCH 10/23] More phpDoc corrections. --- classes/db/abstract_dbrow.php | 3 +++ classes/db/providerrow.php | 5 ++++- classes/forms/provider.php | 5 ++++- classes/output/renderer.php | 5 ++++- classes/provider/endpoint.php | 3 ++- classes/provider/provider.php | 6 ++++-- classes/service/oembed.php | 2 +- classes/task/update_providers.php | 7 +++++-- classes/webservice/ws_provider_manage.php | 1 + classes/webservice/ws_providers.php | 1 + manageproviders.php | 1 + tests/behat/behat_filter_oembed.php | 4 ++++ tests/filter_oembed_test.php | 7 ++++++- 13 files changed, 40 insertions(+), 10 deletions(-) diff --git a/classes/db/abstract_dbrow.php b/classes/db/abstract_dbrow.php index d4e5118..3d776db 100644 --- a/classes/db/abstract_dbrow.php +++ b/classes/db/abstract_dbrow.php @@ -25,6 +25,9 @@ namespace filter_oembed\db; use stdClass; +/** + * Base class for classes which map to db tables. + */ class abstract_dbrow { /** diff --git a/classes/db/providerrow.php b/classes/db/providerrow.php index 4ffa878..a1d981b 100644 --- a/classes/db/providerrow.php +++ b/classes/db/providerrow.php @@ -16,13 +16,16 @@ /** * Provider Row. + * @package filter_oembed * @author Guy Thomas * @copyright Copyright (c) 2016 Blackboard Inc. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace filter_oembed\db; - +/** + * Provider Row class. + */ class providerrow extends abstract_dbrow { /** * @var int id diff --git a/classes/forms/provider.php b/classes/forms/provider.php index 9887874..83b9a4a 100644 --- a/classes/forms/provider.php +++ b/classes/forms/provider.php @@ -16,6 +16,7 @@ /** * Provider mform. + * @package filter_oembed * @author Guy Thomas * @copyright Copyright (c) 2016 Blackboard Inc. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later @@ -27,7 +28,9 @@ defined('MOODLE_INTERNAL') || die(); require_once($CFG->dirroot.'/lib/formslib.php'); - +/** + * Provider mform. + */ class provider extends moodleform { /** * Define this form - is called from parent constructor. diff --git a/classes/output/renderer.php b/classes/output/renderer.php index 31bd78b..0971862 100644 --- a/classes/output/renderer.php +++ b/classes/output/renderer.php @@ -16,13 +16,16 @@ /** * Renderer for oembed filter. + * @package filter_oembed * @author gthomas2 * @copyright Copyright (c) 2016 Moodlerooms Inc. (http://www.moodlerooms.com) * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace filter_oembed\output; - +/** + * Renderer for oembed filter. + */ class renderer extends \plugin_renderer_base { /** diff --git a/classes/provider/endpoint.php b/classes/provider/endpoint.php index 3cb91e0..9740c13 100644 --- a/classes/provider/endpoint.php +++ b/classes/provider/endpoint.php @@ -15,6 +15,7 @@ // along with Moodle. If not, see . /** + * Base class for oembed endpoints. * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later @@ -51,7 +52,7 @@ class endpoint { /** * Constructor. - * @param $data JSON decoded array or data object containing all endpoint data. + * @param any $data JSON decoded array or data object containing all endpoint data. */ public function __construct($data = null) { if (is_object($data)) { diff --git a/classes/provider/provider.php b/classes/provider/provider.php index ac979b8..6a9f5e8 100644 --- a/classes/provider/provider.php +++ b/classes/provider/provider.php @@ -29,7 +29,9 @@ /** - * Base class for oembed providers and plugins. Plugins should extend this class. + * Base class for oembed providers and plugins. + * + * Plugins should extend this class. * If "filter" is provided, there is nothing else a plugin needs to implement. * Plugins can instead / additionally override "get_oembed_request", "oembed_response" and "endpoints_regex". * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later @@ -87,7 +89,7 @@ class provider { * include "_" in variable names, which violates the Moodle coding standard. Currently, * this is managed by the update processes to ensure compatibility. * - * @param $data JSON decoded array or a data object containing all provider data. + * @param any $data JSON decoded array or a data object containing all provider data. */ public function __construct($data = null) { if (is_object($data)) { diff --git a/classes/service/oembed.php b/classes/service/oembed.php index 9e21402..26aa711 100755 --- a/classes/service/oembed.php +++ b/classes/service/oembed.php @@ -35,7 +35,7 @@ /** * Class oembed - * @package filter_oembed\service + * @package filter_oembed * @copyright Erich M. Wappis / Guy Thomas 2016 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * Singleton class providing function for filtering embedded content links in text. diff --git a/classes/task/update_providers.php b/classes/task/update_providers.php index 9be5e3f..e19cff2 100644 --- a/classes/task/update_providers.php +++ b/classes/task/update_providers.php @@ -15,6 +15,7 @@ // along with Moodle. If not, see . /** + * Task to update providers list * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later @@ -24,7 +25,9 @@ namespace filter_oembed\task; use filter_oembed\service\oembed; - +/** + * Task to update providers list + */ class update_providers extends \core\task\scheduled_task { /** @@ -37,7 +40,7 @@ public function get_name() { } /** - * Run forum cron. + * Run cron. */ public function execute() { oembed::update_provider_data(); diff --git a/classes/webservice/ws_provider_manage.php b/classes/webservice/ws_provider_manage.php index c0ac060..442438b 100644 --- a/classes/webservice/ws_provider_manage.php +++ b/classes/webservice/ws_provider_manage.php @@ -26,6 +26,7 @@ /** * Web service for managing provider visibility. * @author Guy Thomas + * @package filter_oembed * @copyright Copyright (c) 2016 Moodlerooms Inc. (http://www.moodlerooms.com) * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ diff --git a/classes/webservice/ws_providers.php b/classes/webservice/ws_providers.php index b32ada6..1b96a3b 100644 --- a/classes/webservice/ws_providers.php +++ b/classes/webservice/ws_providers.php @@ -27,6 +27,7 @@ /** * Web service for getting array of provider models. * @author Guy Thomas + * @package filter_oembed * @copyright Copyright (c) 2016 Moodlerooms Inc. (http://www.moodlerooms.com) * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ diff --git a/manageproviders.php b/manageproviders.php index 2e60159..b53b98a 100644 --- a/manageproviders.php +++ b/manageproviders.php @@ -15,6 +15,7 @@ // along with Moodle. If not, see . /** + * Providers management page for oEmbed filter * @package filter_oembed * @author Mike Churchward * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later diff --git a/tests/behat/behat_filter_oembed.php b/tests/behat/behat_filter_oembed.php index 950c8c9..2f9f006 100644 --- a/tests/behat/behat_filter_oembed.php +++ b/tests/behat/behat_filter_oembed.php @@ -16,6 +16,7 @@ /** * Oembed filter custom behat steps. + * * @author Guy Thomas * @copyright Copyright (c) 2016 Blackboard Inc. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later @@ -26,6 +27,7 @@ require_once(__DIR__ . '/../../../../lib/behat/behat_base.php'); /** * Oembed filter custom behat steps. + * * @package filter_oembed */ class behat_filter_oembed extends behat_base { @@ -87,6 +89,7 @@ protected function ensure_provider_status($provider, $enabled = true) { /** * Ensure that the provider status is disabled + * * @Given /^the provider "(?P[^"]*)" is disabled$/ * @param string $provider * @throws \Behat\Mink\Exception\ExpectationException @@ -97,6 +100,7 @@ public function the_provider_is_disabled($provider) { /** * Ensure that the provider status is enabled + * * @Given /^the provider "(?P[^"]*)" is enabled$/ * @param string $provider * @throws \Behat\Mink\Exception\ExpectationException diff --git a/tests/filter_oembed_test.php b/tests/filter_oembed_test.php index e901b66..56a7252 100644 --- a/tests/filter_oembed_test.php +++ b/tests/filter_oembed_test.php @@ -34,10 +34,15 @@ require_once($CFG->dirroot . '/filter/oembed/filter.php'); /** + * Unit tests for the filter_oembed. + * * @group filter_oembed */ class filter_oembed_test extends advanced_testcase { - + /** + * [$filter description] + * @var [type] + */ protected $filter; /** From 315e0671506a6c97f20d3830025c0888652b86e7 Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Thu, 17 Nov 2022 17:53:19 +0100 Subject: [PATCH 11/23] Replace div class=oembed-provider-details by span for w3c compatibility (no div inside td) --- .gitignore | 3 +++ classes/service/oembed.php | 2 +- classes/webservice/ws_provider_manage.php | 3 +++ classes/webservice/ws_providers.php | 8 +++++--- templates/managementpagerow.mustache | 7 +++---- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index c3e6cd3..c2a2707 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,6 @@ Icon # Grunt stuff .sass-cache node_modules + +# phpDocumentor +phpdoc diff --git a/classes/service/oembed.php b/classes/service/oembed.php index 26aa711..c9d2106 100755 --- a/classes/service/oembed.php +++ b/classes/service/oembed.php @@ -577,7 +577,7 @@ public function __get($name) { /** * Set the provider to "enabled". * - * @param int | provider The provider to enable. + * @param int|provider The provider to enable. */ public function enable_provider($provider) { $this->set_provider_enable_value($provider, 1); diff --git a/classes/webservice/ws_provider_manage.php b/classes/webservice/ws_provider_manage.php index 442438b..0ecd1a4 100644 --- a/classes/webservice/ws_provider_manage.php +++ b/classes/webservice/ws_provider_manage.php @@ -32,6 +32,7 @@ */ class ws_provider_manage extends \external_api { /** + * service_parameters description] * @return \external_function_parameters */ public static function service_parameters() { @@ -43,6 +44,7 @@ public static function service_parameters() { } /** + * [service_returns description] * @return \external_single_structure */ public static function service_returns() { @@ -59,6 +61,7 @@ public static function service_returns() { } /** + * [service description] * @param int $pid * @param string $action * @return array diff --git a/classes/webservice/ws_providers.php b/classes/webservice/ws_providers.php index 1b96a3b..475be78 100644 --- a/classes/webservice/ws_providers.php +++ b/classes/webservice/ws_providers.php @@ -33,6 +33,7 @@ */ class ws_providers extends \external_api { /** + * [service_parameters description] * @return \external_function_parameters */ public static function service_parameters() { @@ -43,6 +44,7 @@ public static function service_parameters() { } /** + * [service_returns description] * @return \external_single_structure */ public static function service_returns() { @@ -75,9 +77,9 @@ public static function service_returns() { } /** - * @param int $pid - * @param string $action - * @return array + * [service description] + * @param [type] $scope [description] + * @return [type] [description] */ public static function service($scope) { global $PAGE; diff --git a/templates/managementpagerow.mustache b/templates/managementpagerow.mustache index dda248d..d0f4349 100644 --- a/templates/managementpagerow.mustache +++ b/templates/managementpagerow.mustache @@ -36,10 +36,9 @@ {{providername}} -
-
-
+ + {{{enableaction}}} {{{editaction}}} {{{deleteaction}}} -
+ From d2602ff1757716a57a5959adb26be4c32ef8c293 Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Fri, 18 Nov 2022 17:23:19 +0100 Subject: [PATCH 12/23] Specify which grunt tasks to run in github ci + add "PHPUNIT_LONGTEST" test before every test calling an external url --- .github/workflows/ci.yml | 2 +- .gitignore | 2 ++ templates/managementpage.mustache | 2 +- templates/managementpagerow.mustache | 6 +++--- tests/behat/behat_filter_oembed.php | 2 +- tests/filter_oembed_service_test.php | 6 ++++++ tests/filter_oembed_test.php | 5 ++++- 7 files changed, 18 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index edeb1eb..f4a9726 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -106,7 +106,7 @@ jobs: - name: grunt if: ${{ always() }} - run: moodle-plugin-ci grunt + run: moodle-plugin-ci grunt -t amd -t gherkinlint -t stylelint:css -t stylelint:scss - name: phpunit if: ${{ always() }} diff --git a/.gitignore b/.gitignore index c2a2707..243c069 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,5 @@ node_modules # phpDocumentor phpdoc +tools +.phive diff --git a/templates/managementpage.mustache b/templates/managementpage.mustache index 64c2f53..634501c 100644 --- a/templates/managementpage.mustache +++ b/templates/managementpage.mustache @@ -48,7 +48,7 @@ Displayed if x was true. {{/x}}
- +
diff --git a/templates/managementpagerow.mustache b/templates/managementpagerow.mustache index d0f4349..41e556d 100644 --- a/templates/managementpagerow.mustache +++ b/templates/managementpagerow.mustache @@ -36,9 +36,9 @@ diff --git a/tests/behat/behat_filter_oembed.php b/tests/behat/behat_filter_oembed.php index 2f9f006..e7fbd82 100644 --- a/tests/behat/behat_filter_oembed.php +++ b/tests/behat/behat_filter_oembed.php @@ -130,7 +130,7 @@ public function i_filter_provider_list($provider) { */ protected function edit_form_xpath($provider) { $xpath = '//td/a[text()=\'' . $provider.'\']'; - $xpath .= '/parent::td/span[contains(@class,\'oembed-provider-details\')]/form'; + $xpath .= '/parent::td/div[contains(@class,\'oembed-provider-details\')]/form'; return $xpath; } diff --git a/tests/filter_oembed_service_test.php b/tests/filter_oembed_service_test.php index f7ef2e0..af881e1 100644 --- a/tests/filter_oembed_service_test.php +++ b/tests/filter_oembed_service_test.php @@ -103,6 +103,9 @@ public function test_providers() { * @covers \filter_oembed\classes\service\oembed\html_output */ public function test_embed_html() { + if (!PHPUNIT_LONGTEST) { + $this->markTestSkipped('Turn on PHPUNIT_LONGTEST to perform test calling external urls.'); + } $this->resetAfterTest(true); set_config('lazyload', 0, 'filter_oembed'); $this->setAdminUser(); @@ -119,6 +122,9 @@ public function test_embed_html() { * @covers \filter_oembed\classes\service\oembed\get_instance */ public function test_preloader_html() { + if (!PHPUNIT_LONGTEST) { + $this->markTestSkipped('Turn on PHPUNIT_LONGTEST to perform test calling external urls.'); + } $this->resetAfterTest(true); set_config('lazyload', 1, 'filter_oembed'); $this->setAdminUser(); diff --git a/tests/filter_oembed_test.php b/tests/filter_oembed_test.php index 56a7252..5651c31 100644 --- a/tests/filter_oembed_test.php +++ b/tests/filter_oembed_test.php @@ -94,10 +94,13 @@ protected function setUp(): void { /** * Performs unit tests for all services supported by the filter. * - * Need to update this test to not contact external services. + * TODO: Need to update this test to not contact external services. * @covers \filter_oembed\filter\filter */ public function test_filter() { + if (!PHPUNIT_LONGTEST) { + $this->markTestSkipped('Turn on PHPUNIT_LONGTEST to perform test calling external urls.'); + } $this->resetAfterTest(true); $curl = new curl(); From e1c1c2bf4da9f30f182ea02e2c9db7d678f41a28 Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Tue, 22 Nov 2022 17:16:56 +0100 Subject: [PATCH 13/23] add php 8.0 and Moodle 4.0 to github CI --- .github/workflows/ci.yml | 13 +++++++------ package.json | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f4a9726..9c926c5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,14 +8,15 @@ jobs: fail-fast: false matrix: include: - - php: '7.4' - moodle-branch: 'MOODLE_311_STABLE' - database: 'mariadb' - node: '18.12.1' - php: '7.3' - moodle-branch: 'MOODLE_310_STABLE' + moodle-branch: 'MOODLE_309_STABLE' database: 'pgsql' node: '18.12.1' + - php: '7.4' + moodle-branch: 'MOODLE_311_STABLE' + database: 'mariadb' + - php: '8.0' + moodle-branch: 'MOODLE_400_STABLE' services: postgres: @@ -106,7 +107,7 @@ jobs: - name: grunt if: ${{ always() }} - run: moodle-plugin-ci grunt -t amd -t gherkinlint -t stylelint:css -t stylelint:scss + run: moodle-plugin-ci grunt - name: phpunit if: ${{ always() }} diff --git a/package.json b/package.json index 2f87566..2873a92 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "description": "Grunt tasks for sass.", "private": true, "devDependencies": { - "grunt": "~1.4.1", + "grunt": "~1.5.3", "grunt-autoprefixer": "^3.0.4", "grunt-contrib-csslint": "^2.0.0", "grunt-contrib-jshint": "^3.2.0", From 05edda58b7f32b90cde76a2206cff416c2665a48 Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Tue, 22 Nov 2022 17:22:51 +0100 Subject: [PATCH 14/23] Add mysqli to Github CI --- .github/workflows/ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9c926c5..d51b540 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,15 +8,16 @@ jobs: fail-fast: false matrix: include: + node: '18.12.1' - php: '7.3' - moodle-branch: 'MOODLE_309_STABLE' + moodle-branch: 'MOODLE_39_STABLE' database: 'pgsql' - node: '18.12.1' - php: '7.4' moodle-branch: 'MOODLE_311_STABLE' database: 'mariadb' - php: '8.0' moodle-branch: 'MOODLE_400_STABLE' + database: 'mysqli' services: postgres: From 036431f87135cfbb8031bd34ca2c30ef43d80768 Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Tue, 22 Nov 2022 17:27:35 +0100 Subject: [PATCH 15/23] put NODE_VERSION in env vars for Github CI --- .github/workflows/ci.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d51b540..daeb1d8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,9 @@ name: Moodle plugin CI on: [push, pull_request] +env: + NODE_VERSION: '18.12.1' + jobs: test: runs-on: 'ubuntu-latest' @@ -8,7 +11,6 @@ jobs: fail-fast: false matrix: include: - node: '18.12.1' - php: '7.3' moodle-branch: 'MOODLE_39_STABLE' database: 'pgsql' @@ -17,7 +19,7 @@ jobs: database: 'mariadb' - php: '8.0' moodle-branch: 'MOODLE_400_STABLE' - database: 'mysqli' + database: 'mariadb' services: postgres: @@ -51,7 +53,7 @@ jobs: - name: Install node uses: actions/setup-node@v3 with: - node-version: ${{ matrix.node }} + node-version: ${{ env.NODE_VERSION }} - name: Setup PHP uses: shivammathur/setup-php@v2 From 609757f3137e24d70adbd6728bb76e06204dbbde Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Tue, 22 Nov 2022 17:38:09 +0100 Subject: [PATCH 16/23] revert node.js to 16.18.1 in github CI --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index daeb1d8..3e297a8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,9 +1,6 @@ name: Moodle plugin CI on: [push, pull_request] -env: - NODE_VERSION: '18.12.1' - jobs: test: runs-on: 'ubuntu-latest' @@ -14,12 +11,15 @@ jobs: - php: '7.3' moodle-branch: 'MOODLE_39_STABLE' database: 'pgsql' + node: '16.18.1' - php: '7.4' moodle-branch: 'MOODLE_311_STABLE' database: 'mariadb' + node: '16.18.1' - php: '8.0' moodle-branch: 'MOODLE_400_STABLE' database: 'mariadb' + node: '16.18.1' services: postgres: @@ -53,7 +53,7 @@ jobs: - name: Install node uses: actions/setup-node@v3 with: - node-version: ${{ env.NODE_VERSION }} + node-version: ${{ matrix.node }} - name: Setup PHP uses: shivammathur/setup-php@v2 From 6a0790b9c5c6af23ddef013fe5a60a01f534f908 Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Tue, 22 Nov 2022 17:48:46 +0100 Subject: [PATCH 17/23] SET max_input_vars PHP value required for Moodle 400 --- .github/workflows/ci.yml | 1 + tests/filter_oembed_service_test.php | 2 +- tests/filter_oembed_test.php | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e297a8..826438a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -60,6 +60,7 @@ jobs: with: php-version: ${{ matrix.php }} extensions: zip, gd, mbstring, pgsql, mysqli + ini-values: max_input_vars=5000 - name: Deploy moodle-plugin-ci run: | diff --git a/tests/filter_oembed_service_test.php b/tests/filter_oembed_service_test.php index af881e1..27f2a95 100644 --- a/tests/filter_oembed_service_test.php +++ b/tests/filter_oembed_service_test.php @@ -35,7 +35,7 @@ * * @group filter_oembed */ -class filter_oembed_service_test extends advanced_testcase { +class filter_oembed_service_test extends \advanced_testcase { /** * Make sure providers array is correct. diff --git a/tests/filter_oembed_test.php b/tests/filter_oembed_test.php index 5651c31..6074019 100644 --- a/tests/filter_oembed_test.php +++ b/tests/filter_oembed_test.php @@ -38,7 +38,7 @@ * * @group filter_oembed */ -class filter_oembed_test extends advanced_testcase { +class filter_oembed_test extends \advanced_testcase { /** * [$filter description] * @var [type] From dec18f70e600e593490a36ab1c440274a6a89407 Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Wed, 23 Nov 2022 10:21:57 +0100 Subject: [PATCH 18/23] add some missing namespace declaration --- tests/filter_oembed_service_test.php | 2 +- tests/filter_oembed_test.php | 2 +- tests/testable_oembed.php | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/filter_oembed_service_test.php b/tests/filter_oembed_service_test.php index 27f2a95..9e44704 100644 --- a/tests/filter_oembed_service_test.php +++ b/tests/filter_oembed_service_test.php @@ -239,7 +239,7 @@ public function test_get() { $this->assertTrue(false); } catch (coding_exception $e) { $expectedmessage = 'Coding error detected, it must be fixed by a programmer: ' . - 'noaccess is not a publicly accessible property of testable_oembed'; + 'noaccess is not a publicly accessible property of filter_oembed\testable_oembed'; $this->assertEquals($expectedmessage, $e->getMessage()); } } diff --git a/tests/filter_oembed_test.php b/tests/filter_oembed_test.php index 6074019..922619f 100644 --- a/tests/filter_oembed_test.php +++ b/tests/filter_oembed_test.php @@ -50,7 +50,7 @@ class filter_oembed_test extends \advanced_testcase { */ protected function setUp(): void { parent::setUp(); - $this->filter = new filter_oembed(context_system::instance(), array()); + $this->filter = new \filter_oembed(context_system::instance(), array()); // Ensure all tested providers are enabled. $oembed = \filter_oembed\service\oembed::get_instance('all'); foreach ($oembed->providers as $pid => $provider) { diff --git a/tests/testable_oembed.php b/tests/testable_oembed.php index 89f1faf..799fdbd 100644 --- a/tests/testable_oembed.php +++ b/tests/testable_oembed.php @@ -22,6 +22,7 @@ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ +namespace filter_oembed; use filter_oembed\service\oembed; From 12ec34f820c0c987d82e9aa97ccbe619ee66f2bc Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Wed, 23 Nov 2022 11:52:38 +0100 Subject: [PATCH 19/23] corrections related to namespaces in phpunit tests --- tests/filter_oembed_service_test.php | 2 +- tests/filter_oembed_test.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/filter_oembed_service_test.php b/tests/filter_oembed_service_test.php index 9e44704..c559467 100644 --- a/tests/filter_oembed_service_test.php +++ b/tests/filter_oembed_service_test.php @@ -237,7 +237,7 @@ public function test_get() { try { $noaccess = $oembed->noaccess; $this->assertTrue(false); - } catch (coding_exception $e) { + } catch (\coding_exception $e) { $expectedmessage = 'Coding error detected, it must be fixed by a programmer: ' . 'noaccess is not a publicly accessible property of filter_oembed\testable_oembed'; $this->assertEquals($expectedmessage, $e->getMessage()); diff --git a/tests/filter_oembed_test.php b/tests/filter_oembed_test.php index 922619f..fe51e2f 100644 --- a/tests/filter_oembed_test.php +++ b/tests/filter_oembed_test.php @@ -50,7 +50,7 @@ class filter_oembed_test extends \advanced_testcase { */ protected function setUp(): void { parent::setUp(); - $this->filter = new \filter_oembed(context_system::instance(), array()); + $this->filter = new \filter_oembed(\context_system::instance(), array()); // Ensure all tested providers are enabled. $oembed = \filter_oembed\service\oembed::get_instance('all'); foreach ($oembed->providers as $pid => $provider) { @@ -103,7 +103,7 @@ public function test_filter() { } $this->resetAfterTest(true); - $curl = new curl(); + $curl = new \curl(); try { $out = $curl->get('https://www.youtube.com'); } catch (Exception $e) { From cc7020a328ed74c34146780640c3acd15c3c563d Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Wed, 23 Nov 2022 11:59:21 +0100 Subject: [PATCH 20/23] Display debugging message when download_file_content can't reach url (i.e .with SSL errors) --- classes/provider/provider.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/classes/provider/provider.php b/classes/provider/provider.php index 6a9f5e8..a4b17d0 100644 --- a/classes/provider/provider.php +++ b/classes/provider/provider.php @@ -192,7 +192,12 @@ public function get_oembed_request($text) { */ public function oembed_response($url) { $ret = download_file_content($url, null, null, true, 300, 20, false, null, false); - return json_decode($ret->results, true); + if ($ret->results) { + return json_decode($ret->results, true); + } else { + debugging("Error getting oembed URL $url [".$ret->error."]"); + return false; + } } /** From fc0e4eb4eb893fd2292d80e66ba51961ceb0b5f3 Mon Sep 17 00:00:00 2001 From: Olivier Bado Date: Thu, 24 Nov 2022 15:34:39 +0100 Subject: [PATCH 21/23] Remove Poll EveryWhere from Unit Tests, as they no more features oembed. --- classes/service/oembed.php | 6 +++++- lang/fr/filter_oembed.php | 4 ++-- provider/pollev/pollev.php | 3 +++ tests/filter_oembed_test.php | 9 +-------- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/classes/service/oembed.php b/classes/service/oembed.php index c9d2106..692484a 100755 --- a/classes/service/oembed.php +++ b/classes/service/oembed.php @@ -147,8 +147,12 @@ public function html_output($text) { // If we have a consumer request, we're done searching. Try for a response. $jsonret = $provider->oembed_response($requesturl); - if (!$jsonret) { + + if (!$jsonret or !array_key_exists('html', $jsonret)) { $output = ''; + if (array_key_exists('status', $jsonret)) { + debugging("Error getting oembed URL $requesturl [".implode(" -- ", $jsonret)."]"); + } } else if ($lazyload) { $output = $this->oembed_getpreloadhtml($jsonret, $params); } else { diff --git a/lang/fr/filter_oembed.php b/lang/fr/filter_oembed.php index 5a186ce..964da7c 100644 --- a/lang/fr/filter_oembed.php +++ b/lang/fr/filter_oembed.php @@ -31,9 +31,9 @@ $string['ted'] = 'Chats Ted'; $string['slideshare'] = 'SlideShare'; $string['officemix'] = 'Combinaison Office'; -$string['issuu'] = 'Problème'; +$string['issuu'] = 'Issuu'; $string['screenr'] = 'Écran'; $string['soundcloud'] = 'SoundCloud'; -$string['pollev'] = 'Sonder partout'; +$string['pollev'] = 'Poll Everywhere'; $string['lazyload'] = 'Retarder l\'intégration du chargement (Lazyload)'; $string['connection_error'] = 'Erreur lors de l\'accès au média intégré. Veuillez actualiser la page.'; diff --git a/provider/pollev/pollev.php b/provider/pollev/pollev.php index f725fe7..f4adc42 100644 --- a/provider/pollev/pollev.php +++ b/provider/pollev/pollev.php @@ -28,6 +28,9 @@ /** * oEmbed provider implementation for Poll Everywhere + * + * As of 2022/11/24, Poll Everywhere doesn't seems to provide an oembed feature anymore :/ + * Test https://www.polleverywhere.com/services/oembed => Error 404 */ class pollev extends provider { diff --git a/tests/filter_oembed_test.php b/tests/filter_oembed_test.php index fe51e2f..c420830 100644 --- a/tests/filter_oembed_test.php +++ b/tests/filter_oembed_test.php @@ -127,10 +127,8 @@ public function test_filter() { $tedlink = '

Ted

'; $slidesharelink = '

slideshare

'; $issuulink = '

issuu

'; - $polleverywherelink = '

'; - $polleverywherelink .= '$popolleverywhere

'; - $filterinput = $soundcloudlink.$youtubelink.$vimeolink.$tedlink.$slidesharelink.$issuulink.$polleverywherelink; + $filterinput = $soundcloudlink.$youtubelink.$vimeolink.$tedlink.$slidesharelink.$issuulink; $filteroutput = $this->filter->filter($filterinput); @@ -148,11 +146,6 @@ public function test_filter() { $tedoutput = '/.*assertMatchesRegularExpression($tedoutput, $filteroutput, 'Ted filter fails'); - $polleverywhereoutput = '/.*
{{providername}} - - +
+
{{{enableaction}}} {{{editaction}}} {{{deleteaction}}} - +