troodle-expcontent/lib.php
Kumi 8a4c7c9113
fix: prevent null errors in dynamic URL path checks
Ensure the code verifies that the moodle_url object is not null before attempting to access its properties. This adjustment prevents potential errors when handling situations where the URL object might be missing, thus improving the robustness of the `mod_exp360_cm_info_dynamic` function.
2024-11-14 16:46:32 +01:00

95 lines
2.3 KiB
PHP

<?php
defined('MOODLE_INTERNAL') || die();
function exp360_add_instance($exp360)
{
global $DB;
$exp360->timemodified = time();
$exp360->timecreated = time();
// Process standard intro fields.
$exp360->introformat = FORMAT_HTML;
$exp360->intro = '';
return $DB->insert_record('exp360', $exp360);
}
function exp360_update_instance($exp360)
{
global $DB;
$exp360->timemodified = time();
$exp360->id = $exp360->instance;
// Process standard intro fields.
$exp360->introformat = FORMAT_HTML;
$exp360->intro = '';
return $DB->update_record('exp360', $exp360);
}
function exp360_delete_instance($id)
{
global $DB;
if (!$exp360 = $DB->get_record('exp360', array('id' => $id))) {
return false;
}
$DB->delete_records('exp360', array('id' => $exp360->id));
return true;
}
function mod_exp360_cm_info_dynamic(cm_info $cm)
{
global $PAGE;
if ($cm->modname !== 'exp360') {
return;
}
if ($PAGE) {
// Create a reflection of $PATH so we can access protected properties
$reflection = new ReflectionClass($PAGE);
$urlProperty = $reflection->getProperty('_url');
$urlProperty->setAccessible(true);
// Get the value of _url property, which is a moodle_url object
$urlObject = $urlProperty->getValue($PAGE);
if ($urlObject) {
// Now access the path property within the moodle_url object
$urlReflection = new ReflectionClass($urlObject);
$pathProperty = $urlReflection->getProperty('path');
$pathProperty->setAccessible(true);
// Get the value of the path property
$pathValue = $pathProperty->getValue($urlObject);
// All of this only to bypass a little bug
if ($pathValue == '/course/modedit.php') {
return;
}
}
}
$renderer = $PAGE->get_renderer('mod_exp360');
$modals = $renderer->render_modals();
$script = $renderer->render_activity($cm->id, $cm->get_formatted_name());
$cm->set_no_view_link();
$cm->set_content($modals . $script);
}
function mod_exp360_supports($feature)
{
switch ($feature) {
case FEATURE_COMPLETION_TRACKS_VIEWS:
return true;
default:
return null;
}
}