. /** * auth_outage plugin lib * * @package auth_outage * @author Daniel Thee Roperto * @copyright 2016 Catalyst IT * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ use auth_outage\local\outagelib; defined('MOODLE_INTERNAL') || die; /** * Used for adminlib::set_updatedcallback which requires a string that resolves to a function. * * Related to: MDL-57264 and MDL-32984 */ function auth_outage_outagelib_prepare_next_outage() { outagelib::prepare_next_outage(); } /** * Used by file.php to fetch a file from sitedata, protecting it from path traversal attacks. * * To keep it minimalist it was not added to the outagelib.php class. * * @param string $file Filename to fetch from sitedata * @return string|null Full path to the sitedata file or null if file is not valid. */ function auth_outage_get_climaintenance_resource_file($file) { global $CFG; // We are not using any external libraries or references in this file (we have not gully loaded config.php yet). // If you change the path below maybe you need to change maintenance_static_page::get_resources_folder() as well. $resourcedir = rtrim($CFG->dataroot, '/'); // In case the configuration has a trailing slash. $resourcedir = $resourcedir.'/auth_outage/climaintenance'; // Protect against path traversal attacks. $basename = basename($file); if ($basename !== $file && $file !== 'preview/' . $basename) { // @codingStandardsIgnoreStart if (!PHPUNIT_TEST) { error_log('Possible attempt for Path Traversal Attack (only filename expected): '.$file); } // @codingStandardsIgnoreEnd return null; } $realpath = realpath($resourcedir.'/'.$file); return ($realpath == false) ? null : $realpath; } /** * Display required icon for the calendar events. * * @return array */ function auth_outage_get_fontawesome_icon_map() { return [ 'core:i/auth_outageevent' => 'fa-power-off', ]; } /** * Inject the warning bar into the page if there is currently an outage. * * @return string|void */ function auth_outage_before_standard_top_of_body_html() { // Get code to inject. return outagelib::get_inject_code(); }