aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/upgrade.php200
-rw-r--r--tests/api_test.php2
2 files changed, 1 insertions, 201 deletions
diff --git a/db/upgrade.php b/db/upgrade.php
index e661303..14d0255 100644
--- a/db/upgrade.php
+++ b/db/upgrade.php
@@ -17,212 +17,12 @@
defined('MOODLE_INTERNAL') || die();
/**
- * It's a base64 encoded?
- *
- * @param string $string
- *
- * @return bool
- */
-function is_base64(string $string) {
- return base64_encode(base64_decode($string)) === $string;
-}
-
-/**
- * Create a table local_webhooks_events.
- *
- * @throws \ddl_exception
- */
-function create_table_events() {
- global $DB;
-
- // Loads ddl manager and xmldb classes.
- $dbman = $DB->get_manager();
-
- // Define table local_webhooks_events to be created.
- $table = new xmldb_table('local_webhooks_events');
-
- // Adding fields to table local_webhooks_events.
- $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE);
- $table->add_field('name', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL);
- $table->add_field('serviceid', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL);
-
- // Adding keys to table local_webhooks_events.
- $table->add_key('primary', XMLDB_KEY_PRIMARY, ['id']);
-
- // Conditionally launch create table for local_webhooks_events.
- if (!$dbman->table_exists($table)) {
- $dbman->create_table($table);
- }
-}
-
-/**
- * Delete table local_webhooks_service.
- *
- * @throws \ddl_exception
- * @throws \ddl_table_missing_exception
- */
-function drop_table_service() {
- global $DB;
-
- // Loads ddl manager and xmldb classes.
- $dbman = $DB->get_manager();
-
- // Define table local_webhooks_service to be dropped.
- $table = new xmldb_table('local_webhooks_service');
-
- // Conditionally launch drop table for local_webhooks_service.
- if ($dbman->table_exists($table)) {
- $dbman->drop_table($table);
- }
-}
-
-/**
- * Create a table local_webhooks_service.
- *
- * @throws \ddl_exception
- */
-function create_table_service() {
- global $DB;
-
- // Loads ddl manager and xmldb classes.
- $dbman = $DB->get_manager();
-
- // Define table local_webhooks_service to be created.
- $table = new xmldb_table('local_webhooks_service');
-
- // Adding fields to table local_webhooks_service.
- $table->add_field('id', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, XMLDB_SEQUENCE);
- $table->add_field('header', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL, null, 'application/json');
- $table->add_field('name', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL);
- $table->add_field('point', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL);
- $table->add_field('status', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '0');
- $table->add_field('token', XMLDB_TYPE_CHAR, '255', null, XMLDB_NOTNULL);
-
- // Adding keys to table local_webhooks_service.
- $table->add_key('primary', XMLDB_KEY_PRIMARY, ['id']);
-
- // Conditionally launch create table for local_webhooks_service.
- if (!$dbman->table_exists($table)) {
- $dbman->create_table($table);
- }
-}
-
-/**
- * Save data to database.
- *
- * @param array $records
- *
- * @throws \dml_exception
- */
-function save_records(array $records) {
- global $DB;
-
- foreach ($records as $record) {
- if (!is_array($record)) {
- continue;
- }
-
- $recordid = $DB->insert_record('local_webhooks_service', (object) $record);
-
- if ($recordid && is_array($record['events'])) {
- foreach ($record['events'] as $eventname) {
- $DB->insert_record('local_webhooks_events', (object) [
- 'name' => $eventname,
- 'serviceid' => $recordid,
- ]);
- }
- }
- }
-}
-
-/**
* Function to upgrade 'local_webhooks'.
*
* @param int $oldversion
*
* @return bool
- * @throws \ddl_exception
- * @throws \ddl_table_missing_exception
- * @throws \dml_exception
- * @throws \downgrade_exception
- * @throws \upgrade_exception
*/
function xmldb_local_webhooks_upgrade(int $oldversion) {
- global $DB;
-
- /* Update from versions 0.* */
- if (in_array($oldversion, [2017101900, 2017102500, 2017102600, 2017102610, 2017102620, 2017102630], true)) {
- upgrade_plugin_savepoint(true, 2019040100, 'local', 'webhooks');
- }
-
- /* Update from versions 1.* */
- if (in_array($oldversion, [2017102700, 2017102900, 2017102910], true)) {
- upgrade_plugin_savepoint(true, 2019040100, 'local', 'webhooks');
- }
-
- /* Update from versions 2.* */
- if (in_array($oldversion, [2017111800, 2017111810], true)) {
- upgrade_plugin_savepoint(true, 2019040100, 'local', 'webhooks');
- }
-
- /* Update from versions 3.* */
- if (in_array($oldversion, [2017112600, 2018061900, 2018061910, 2018061920], true)) {
- $records = $DB->get_records('local_webhooks_service', null, 'id');
-
- $services = [];
-
- foreach ($records as $record) {
- if (!is_object($record)) {
- continue;
- }
-
- $service = [
- 'name' => $record->title,
- 'point' => $record->url,
- 'status' => (bool) $record->enable,
- 'token' => $record->token,
- ];
-
- if ($record->type === 'json') {
- $service['header'] = 'application/json';
- } else {
- $service['header'] = 'application/x-www-form-urlencoded';
- }
-
- if (!empty($record->events)) {
- $record->events = unserialize(gzuncompress(base64_decode($record->events)), [
- 'allowed_classes' => false,
- ]);
- }
-
- if (is_array($record->events) && !empty($record->events)) {
- foreach ($record->events as $eventname => $eventstatus) {
- if ((bool) $eventstatus) {
- $service['events'][] = is_base64($eventname)
- ? base64_decode($eventname, true)
- : $eventname;
- }
- }
- }
-
- $services[] = $service;
- }
-
- /* Update structure */
- drop_table_service();
- create_table_events();
- create_table_service();
-
- /* Saving records */
- save_records($services);
-
- upgrade_plugin_savepoint(true, 2019040100, 'local', 'webhooks');
- }
-
- /* Update from versions 4.* */
- if (in_array($oldversion, [2017122900, 2018022500], true)) {
- upgrade_plugin_savepoint(true, 2019040100, 'local', 'webhooks');
- }
-
return true;
} \ No newline at end of file
diff --git a/tests/api_test.php b/tests/api_test.php
index f68ae52..461ddc6 100644
--- a/tests/api_test.php
+++ b/tests/api_test.php
@@ -292,7 +292,7 @@ final class local_webhooks_api_testcase extends advanced_testcase {
}
self::assertCount(1, api::get_services([
- 'name' => 'Example name #' . random_int(5, $total),
+ 'point' => 'http://example.org/test_' . random_int(1, 5),
]));
$limit = intdiv($total, 2);