. /** * Callback and library methods for core communication. * * @package core_communication * @copyright 2023 Safat Shahin * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ /** * Serve the files from the core_communication file areas. * * @param stdClass $course the course object * @param stdClass $cm the course module object * @param context $context the context * @param string $filearea the name of the file area * @param array $args extra arguments (itemid, path) * @param bool $forcedownload whether force download * @param array $options additional options affecting the file serving */ function core_communication_pluginfile( $course, $cm, $context, $filearea, $args, $forcedownload, array $options = [] ): void { if ($filearea !== 'avatar') { return; } $itemid = array_shift($args); $filename = array_pop($args); // Retrieve the file from the Files API. $fs = get_file_storage(); $file = $fs->get_file($context->id, 'core_communication', $filearea, $itemid, '/', $filename); if (!$file) { return; } send_file($file, $filename); }