Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 15 additions & 3 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ jobs:

services:
postgres:
image: postgres:16
image: postgres:${{ matrix.moodle-branch == 'MOODLE_503_STABLE' && '17' || '16' }}
env:
POSTGRES_USER: 'postgres'
POSTGRES_HOST_AUTH_METHOD: 'trust'
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 3
mariadb:
image: mariadb:10.11
image: mariadb:${{ matrix.moodle-branch == 'MOODLE_503_STABLE' && '11.4' || '10.11' }}
env:
MYSQL_USER: 'root'
MYSQL_ALLOW_EMPTY_PASSWORD: "true"
Expand All @@ -25,12 +25,24 @@ jobs:

ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval 10s --health-timeout 5s --health-retries 3
options: --health-cmd="mariadb-admin ping" --health-interval 10s --health-timeout 5s --health-retries 3

strategy:
fail-fast: false
matrix:
include:
- php: 8.4
moodle-branch: MOODLE_503_STABLE
database: pgsql
- php: 8.4
moodle-branch: MOODLE_503_STABLE
database: mariadb
- php: 8.3
moodle-branch: MOODLE_503_STABLE
database: pgsql
- php: 8.3
moodle-branch: MOODLE_503_STABLE
database: mariadb
- php: 8.4
moodle-branch: MOODLE_502_STABLE
database: pgsql
Expand Down
36 changes: 3 additions & 33 deletions classes/external/get_entry.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,42 +16,12 @@

namespace mod_journal\external;

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

use context_module;
use external_function_parameters;
use external_single_structure;
use external_value;
use core_external\external_function_parameters;
use core_external\external_single_structure;
use core_external\external_value;
use invalid_parameter_exception;

global $CFG;

// Dynamic Class Logic.
// Ensures compatibility between Moodle 3.9 (global classes) and 4.0+ (core_external namespace).
if (!class_exists('mod_journal\external\journal_external_api_base')) {
if (class_exists('core_external\external_api')) {
// Moodle 4.0 and higher.
class_alias('core_external\external_api', 'mod_journal\external\journal_external_api_base');

// Ensure global class aliases exist for the helper types used in this file.
// This is necessary because "use external_function_parameters;" expects the global class,
// which might not be aliased automatically in strict PHPUnit isolation.
if (!class_exists('external_function_parameters')) {
class_alias('core_external\external_function_parameters', 'external_function_parameters');
}
if (!class_exists('external_value')) {
class_alias('core_external\external_value', 'external_value');
}
if (!class_exists('external_single_structure')) {
class_alias('core_external\external_single_structure', 'external_single_structure');
}
} else {
// Moodle 3.9 - 3.11.
require_once($CFG->libdir . '/externallib.php');
class_alias('external_api', 'mod_journal\external\journal_external_api_base');
}
}

/**
* External function to get a journal entry.
*
Expand Down
44 changes: 44 additions & 0 deletions classes/external/journal_external_api_base.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?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/>.

/**
* Base class of the mod_journal external functions.
*
* The external API lives in the core_external namespace since Moodle 4.2 and the global class names
* are deprecated since Moodle 5.3. Moodle 4.0 and 4.1 only have the global classes, so they are
* aliased into core_external there, letting the external functions use the namespaced names everywhere.
*
* @package mod_journal
* @copyright 2026 Adrian Sarmas adrian.emanuel.sarmas@gmail.com
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

namespace mod_journal\external;

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

global $CFG;

if (!class_exists('core_external\external_api')) {
// Moodle 4.0 and 4.1.
require_once($CFG->libdir . '/externallib.php');
class_alias('external_api', 'core_external\external_api');
class_alias('external_function_parameters', 'core_external\external_function_parameters');
class_alias('external_single_structure', 'core_external\external_single_structure');
class_alias('external_value', 'core_external\external_value');
}

class_alias('core_external\external_api', 'mod_journal\external\journal_external_api_base');
29 changes: 3 additions & 26 deletions classes/external/save_feedback.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,35 +16,12 @@

namespace mod_journal\external;

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

require_once($CFG->libdir . '/externallib.php');


use context_module;
use external_function_parameters;
use external_single_structure;
use external_value;
use core_external\external_function_parameters;
use core_external\external_single_structure;
use core_external\external_value;
use invalid_parameter_exception;

global $CFG;

// Dynamic Class Logic for compatibility.
if (!class_exists('mod_journal\external\journal_external_api_base')) {
if (class_exists('core_external\external_api')) {
class_alias('core_external\external_api', 'mod_journal\external\journal_external_api_base');
if (!class_exists('external_function_parameters')) {
class_alias('core_external\external_function_parameters', 'external_function_parameters');
}
if (!class_exists('external_value')) {
class_alias('core_external\external_value', 'external_value');
}
} else {
require_once($CFG->libdir . '/externallib.php');
class_alias('external_api', 'mod_journal\external\journal_external_api_base');
}
}

/**
* External function to save feedback and grade for a journal entry.
*
Expand Down
33 changes: 3 additions & 30 deletions classes/external/set_text.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,45 +16,18 @@

namespace mod_journal\external;

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

require_once($CFG->libdir . '/externallib.php');

use coding_exception;
use context_module;
use dml_exception;
use external_function_parameters;
use external_value;
use external_single_structure;
use core_external\external_function_parameters;
use core_external\external_value;
use core_external\external_single_structure;
use invalid_parameter_exception;
use mod_journal\event\entry_created;
use mod_journal\event\entry_updated;
use required_capability_exception;
use stdClass;

global $CFG;

// Dynamic Class Logic.
// Ensures compatibility between Moodle 3.9 (global classes) and 4.0+ (core_external namespace).
if (!class_exists('mod_journal\external\journal_external_api_base')) {
if (class_exists('core_external\external_api')) {
// Moodle 4.0 and higher.
class_alias('core_external\external_api', 'mod_journal\external\journal_external_api_base');

// Ensure global class aliases exist for the helper types used in this file.
if (!class_exists('external_function_parameters')) {
class_alias('core_external\external_function_parameters', 'external_function_parameters');
}
if (!class_exists('external_value')) {
class_alias('core_external\external_value', 'external_value');
}
} else {
// Moodle 3.9 - 3.11.
require_once($CFG->libdir . '/externallib.php');
class_alias('external_api', 'mod_journal\external\journal_external_api_base');
}
}

/**
* External function to set a journal's text
*
Expand Down
24 changes: 2 additions & 22 deletions classes/external/view_journal.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,31 +16,11 @@

namespace mod_journal\external;

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

use context_module;
use external_function_parameters;
use external_value;
use core_external\external_function_parameters;
use core_external\external_value;
use invalid_parameter_exception;

global $CFG;

// Dynamic Class Logic.
if (!class_exists('mod_journal\external\journal_external_api_base')) {
if (class_exists('core_external\external_api')) {
class_alias('core_external\external_api', 'mod_journal\external\journal_external_api_base');
if (!class_exists('external_function_parameters')) {
class_alias('core_external\external_function_parameters', 'external_function_parameters');
}
if (!class_exists('external_value')) {
class_alias('core_external\external_value', 'external_value');
}
} else {
require_once($CFG->libdir . '/externallib.php');
class_alias('external_api', 'mod_journal\external\journal_external_api_base');
}
}

/**
* External function to trigger journal view event.
*
Expand Down
2 changes: 0 additions & 2 deletions lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -162,8 +162,6 @@ function journal_supports($feature) {
return true;
case FEATURE_GROUPINGS:
return true;
case FEATURE_GROUPMEMBERSONLY:
return true;
case FEATURE_COMPLETION_TRACKS_VIEWS:
return true;
case FEATURE_COMPLETION_HAS_RULES:
Expand Down
6 changes: 3 additions & 3 deletions version.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
defined('MOODLE_INTERNAL') || die();

$plugin->component = 'mod_journal';
$plugin->version = 2026082101;
$plugin->version = 2026101200;
$plugin->requires = 2022041900; /* Moodle 4.0 */
$plugin->supported = [400, 502]; /* Moodle 4.0 - 5.2 */
$plugin->release = '5.2.2 (Build: 2026082101)';
$plugin->supported = [400, 503]; /* Moodle 4.0 - 5.3 */
$plugin->release = '5.3.0 (Build: 2026101200)';
$plugin->maturity = MATURITY_STABLE;
Loading