mirror of
https://github.com/slawkens/myaac.git
synced 2025-04-29 18:59:21 +02:00
feat: admin-pages (can add admin pages through plugins)
Also possibility to overwrite default myaac admin pages
This commit is contained in:
parent
6844f4392a
commit
ceaa0639e6
@ -1,6 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
// few things we'll need
|
// few things we'll need
|
||||||
|
use MyAAC\Plugins;
|
||||||
|
|
||||||
require '../common.php';
|
require '../common.php';
|
||||||
|
|
||||||
const ADMIN_PANEL = true;
|
const ADMIN_PANEL = true;
|
||||||
@ -42,6 +44,11 @@ if(!$logged || !admin()) {
|
|||||||
$page = 'login';
|
$page = 'login';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$pluginsAdminPages = Plugins::getAdminPages();
|
||||||
|
if(isset($pluginsAdminPages[$page]) && file_exists(BASE . $pluginsAdminPages[$page])) {
|
||||||
|
$file = BASE . $pluginsAdminPages[$page];
|
||||||
|
}
|
||||||
|
else {
|
||||||
// include our page
|
// include our page
|
||||||
$file = __DIR__ . '/pages/' . $page . '.php';
|
$file = __DIR__ . '/pages/' . $page . '.php';
|
||||||
if(!@file_exists($file)) {
|
if(!@file_exists($file)) {
|
||||||
@ -53,6 +60,7 @@ if(!@file_exists($file)) {
|
|||||||
$file = SYSTEM . 'pages/404.php';
|
$file = SYSTEM . 'pages/404.php';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
if($hooks->trigger(HOOK_ADMIN_BEFORE_PAGE)) {
|
if($hooks->trigger(HOOK_ADMIN_BEFORE_PAGE)) {
|
||||||
|
@ -48,6 +48,8 @@
|
|||||||
"pages": true,
|
"pages": true,
|
||||||
"pagesSubFolders": false,
|
"pagesSubFolders": false,
|
||||||
"commands": true,
|
"commands": true,
|
||||||
"themes": true
|
"themes": true,
|
||||||
|
"admin-pages": true,
|
||||||
|
"admin-pages-sub-folders": true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,81 @@ class Plugins {
|
|||||||
private static $error = null;
|
private static $error = null;
|
||||||
private static $plugin_json = [];
|
private static $plugin_json = [];
|
||||||
|
|
||||||
|
public static function getAdminPages()
|
||||||
|
{
|
||||||
|
return Cache::remember('plugins_admin_pages', 10 * 60, function () {
|
||||||
|
$adminPages = [];
|
||||||
|
foreach(self::getAllPluginsJson() as $plugin) {
|
||||||
|
if (!self::getAutoLoadOption($plugin, 'admin-pages', true)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$adminPagesDefaultPriority = 1000;
|
||||||
|
if (isset($plugin['admin-pages-default-priority'])) {
|
||||||
|
$adminPagesDefaultPriority = $plugin['admin-pages-default-priority'];
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Get all plugins/*/admin-pages/*.php pages
|
||||||
|
//
|
||||||
|
$pluginAdminPages = glob(PLUGINS . $plugin['filename'] . '/admin-pages/*.php');
|
||||||
|
foreach ($pluginAdminPages as $file) {
|
||||||
|
$file = str_replace(PLUGINS, 'plugins/', $file);
|
||||||
|
$name = pathinfo($file, PATHINFO_FILENAME);
|
||||||
|
|
||||||
|
$adminPages[] = ['name' => $name, 'file' => $file, 'priority' => $adminPagesDefaultPriority];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self::getAutoLoadOption($plugin, 'admin-pages-sub-folders', true)) {
|
||||||
|
//
|
||||||
|
// Get all plugins/*/admin-pages/subFolder/*.php pages
|
||||||
|
//
|
||||||
|
$pluginAdminPagesSubFolders = glob(PLUGINS . $plugin['filename'] . '/admin-pages/*', GLOB_ONLYDIR);
|
||||||
|
foreach ($pluginAdminPagesSubFolders as $folder) {
|
||||||
|
$folderName = pathinfo($folder, PATHINFO_FILENAME);
|
||||||
|
|
||||||
|
$subFiles = glob(PLUGINS . $plugin['filename'] . '/admin-pages/' . $folderName . '/*.php');
|
||||||
|
foreach ($subFiles as $file) {
|
||||||
|
$file = str_replace(PLUGINS, 'plugins/', $file);
|
||||||
|
$name = $folderName . '/' . pathinfo($file, PATHINFO_FILENAME);
|
||||||
|
|
||||||
|
$adminPages[] = ['name' => $name, 'file' => $file, 'priority' => $adminPagesDefaultPriority];
|
||||||
|
}
|
||||||
|
|
||||||
|
$subFolders = glob(PLUGINS . $plugin['filename'] . '/admin-pages/' . $folderName . '/*', GLOB_ONLYDIR);
|
||||||
|
foreach ($subFolders as $subFolder) {
|
||||||
|
$subFolderName = pathinfo($subFolder, PATHINFO_FILENAME);
|
||||||
|
$subSubFiles = glob(PLUGINS . $plugin['filename'] . '/admin-pages/' . $folderName . '/' . $subFolderName . '/*.php');
|
||||||
|
|
||||||
|
foreach ($subSubFiles as $subSubFile) {
|
||||||
|
$subSubFile = str_replace(PLUGINS, 'plugins/', $subSubFile);
|
||||||
|
$name = $folderName . '/' . $subFolderName . '/' . pathinfo($subSubFile, PATHINFO_FILENAME);
|
||||||
|
|
||||||
|
$adminPages[] = ['name' => $name, 'file' => $subSubFile, 'priority' => $adminPagesDefaultPriority];;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
usort($adminPages, function ($a, $b)
|
||||||
|
{
|
||||||
|
if ($a['priority'] == $b['priority']) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ($a['priority'] > $b['priority']) ? -1 : 1;
|
||||||
|
});
|
||||||
|
|
||||||
|
$ret = [];
|
||||||
|
foreach ($adminPages as $value) {
|
||||||
|
$ret[$value['name']] = $value['file'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return $ret;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public static function getRoutes()
|
public static function getRoutes()
|
||||||
{
|
{
|
||||||
$cache = Cache::getInstance();
|
$cache = Cache::getInstance();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user