. namespace core_files\hook; use core\attribute; use core\hook\stoppable_trait; /** * A hook which is fired after a file is created in the file storage API. * * @package core * @copyright 2024 Huong Nguyen * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ #[attribute\label('Allows subscribers to inspect a file after it is created in the file pool')] #[attribute\tags('file')] #[attribute\hook\replaces_callbacks('after_file_created')] final class after_file_created { use stoppable_trait; /** * Hook to allow subscribers to modify file after it is created. * * @param \stored_file $storedfile The stored file. * @param \stdClass $filerecord The file record. */ public function __construct( /** @var \stored_file The stored file. */ public readonly \stored_file $storedfile, /** @var \stdClass The file record. */ public readonly \stdClass $filerecord, ) { } /** * Process legacy callbacks. */ public function process_legacy_callbacks(): void { if ($pluginsfunction = get_plugins_with_function(function: 'after_file_created', migratedtohook: true)) { foreach ($pluginsfunction as $plugintype => $plugins) { foreach ($plugins as $pluginfunction) { $pluginfunction($this->filerecord); } } } } }