public static function appendPackagePages() { $insertPages = []; $addons = rex::isSafeMode() ? rex_addon::getSetupAddons() : rex_addon::getAvailableAddons(); foreach ($addons as $addon) { $mainPage = self::pageCreate($addon->getProperty('page'), $addon, true); if (is_array($pages = $addon->getProperty('pages'))) { foreach ($pages as $key => $page) { if (strpos($key, '/') !== false) { $insertPages[$key] = [$addon, $page]; } else { self::pageCreate($page, $addon, false, $mainPage, $key, true); } } } // handle plugins $plugins = rex::isSafeMode() ? $addon->getSystemPlugins() : $addon->getAvailablePlugins(); foreach ($plugins as $plugin) { self::pageCreate($plugin->getProperty('page'), $plugin, false, $mainPage); if (is_array($pages = $plugin->getProperty('pages'))) { foreach ($pages as $key => $page) { if (strpos($key, '/') !== false) { $insertPages[$key] = [$plugin, $page]; } else { self::pageCreate($page, $plugin, false, $mainPage, $key, true); } } } } } foreach ($insertPages as $key => $packagePage) { list($package, $page) = $packagePage; $key = explode('/', $key); if (!isset(self::$pages[$key[0]])) { continue; } $parentPage = self::$pages[$key[0]]; for ($i = 1, $count = count($key) - 1; $i < $count && $parentPage; ++$i) { $parentPage = $parentPage->getSubpage($key[$i]); } if ($parentPage) { self::pageCreate($page, $package, false, $parentPage, $key[$i], strtr($parentPage->getFullKey(), '/', '.') . '.' . $key[$i] . '.'); } } }