*/ function abj404_get_required_runtime_files() { $inc = ABJ404_PATH . 'includes/'; $classmapFile = $inc . 'classmap.php'; if (!file_exists($classmapFile)) { $classmapFile = dirname(__DIR__) . '/classmap.php'; } $classmapFiles = array(); if (file_exists($classmapFile)) { $classmap = require $classmapFile; if (is_array($classmap)) { foreach ($classmap as $classmapPath) { if (is_string($classmapPath)) { $classmapFiles[] = $classmapPath; } } } } $dataFile = dirname(__DIR__) . '/data/required-runtime-files.php'; $lists = file_exists($dataFile) ? require $dataFile : array(); if (!is_array($lists)) { $lists = array(); } $bootRelative = isset($lists['boot']) && is_array($lists['boot']) ? $lists['boot'] : array(); $sqlRelative = isset($lists['sql']) && is_array($lists['sql']) ? $lists['sql'] : array(); $rootRelative = isset($lists['root']) && is_array($lists['root']) ? $lists['root'] : array(); $bootFiles = array(); foreach ($bootRelative as $relative) { if (is_string($relative)) { $bootFiles[] = $inc . $relative; } } $sqlFiles = array(); foreach ($sqlRelative as $relative) { if (is_string($relative)) { $sqlFiles[] = $inc . $relative; } } $rootFiles = array(); foreach ($rootRelative as $relative) { if (is_string($relative)) { $rootFiles[] = ABJ404_PATH . $relative; } } return array_values(array_unique(array_merge( $bootFiles, $rootFiles, $classmapFiles, $sqlFiles ))); } } if (!function_exists('abj404_shortCodeListener')) { /** * @param array|string $atts * @return string */ function abj404_shortCodeListener($atts) { if (!$GLOBALS['abj404_boot_ok']) { return ''; } abj404_load_textdomain_if_needed(); require_once(plugin_dir_path( ABJ404_FILE ) . "includes/Loader.php"); /** @var array $safeAtts */ $safeAtts = is_array($atts) ? $atts : array(); return ABJ_404_Solution_ShortCode::shortcodePageSuggestions($safeAtts); } } if (!function_exists('abj404_verify_runtime_integrity')) { /** * Validate that required plugin files are present. * * @return array Missing file paths. */ function abj404_verify_runtime_integrity() { $missing = array(); foreach (abj404_get_required_runtime_files() as $path) { if (!file_exists($path)) { $missing[] = $path; } } return $missing; } }