Asset now part of \Crispage\Framework
Assets now loadable with Crispage->loadClass new shortnames parameter for Crispage->loadClass
This commit is contained in:
parent
3dabd9209e
commit
4a8bc32bab
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -14,7 +14,7 @@
|
||||
|
||||
defined("ROOT") or die();
|
||||
|
||||
use \Crispage\Asset;
|
||||
use \Crispage\Framework\Asset;
|
||||
use \Crispage\Auth\CorePermissions;
|
||||
|
||||
class APIAssetAction extends \Crispage\Framework\Action
|
||||
@ -67,7 +67,7 @@
|
||||
$class = strval($this->app->request->json["_class"] ?? null);
|
||||
if (
|
||||
!class_exists($class) ||
|
||||
!is_a($class, "\\Crispage\\Asset", true)
|
||||
!is_a($class, "\\Crispage\\Framework\\Asset", true)
|
||||
) {
|
||||
http_response_code(400);
|
||||
$out = ["error" => "Bad Request"];
|
||||
|
@ -14,7 +14,7 @@
|
||||
|
||||
defined("ROOT") or die();
|
||||
|
||||
use \Crispage\Asset;
|
||||
use \Crispage\Framework\Asset;
|
||||
use \Crispage\Auth\CorePermissions;
|
||||
|
||||
class APIAssetOptionsAction extends \Crispage\Framework\Action
|
||||
|
@ -15,7 +15,7 @@
|
||||
defined("ROOT") or die();
|
||||
|
||||
use \Crispage\Auth\CorePermissions;
|
||||
use \Crispage\Asset;
|
||||
use \Crispage\Framework\Asset;
|
||||
|
||||
class APIAssetsAction extends \Crispage\Framework\Action
|
||||
implements \Crispage\Response\APIPermissions {
|
||||
|
@ -55,7 +55,7 @@
|
||||
}
|
||||
|
||||
// Get required permissions
|
||||
$this->app->loadClass($route->action, "\Crispage\Framework\Action");
|
||||
$this->app->loadClass($route->action, "\\Crispage\\Framework\\Action");
|
||||
if (!is_a($route->action, "\\Crispage\\Response\\APIPermissions", true)) {
|
||||
http_response_code(500);
|
||||
header("Content-Type: application/json");
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -16,7 +16,7 @@
|
||||
|
||||
use \Crispage\CrispageException;
|
||||
use \Crispage\Utils\URIUtils;
|
||||
use \Crispage\Asset;
|
||||
use \Crispage\Framework\Asset;
|
||||
|
||||
class AssetDeleteAction extends \Crispage\Framework\Action {
|
||||
public static function getExtensionInfo(): array {
|
||||
@ -33,11 +33,11 @@
|
||||
public function run(): void {
|
||||
// Get class name
|
||||
$this->data["classname"] = strval(
|
||||
$this->app->request->params["classname"] ?? "\\Crispage\\Asset"
|
||||
$this->app->request->params["classname"] ?? "\\Crispage\\Framework\\Asset"
|
||||
);
|
||||
if (
|
||||
!class_exists($this->data["classname"]) ||
|
||||
!is_a($this->data["classname"], "\\Crispage\\Asset", true)
|
||||
!is_a($this->data["classname"], "\\Crispage\\Framework\\Asset", true)
|
||||
) {
|
||||
$this->app->handleException(
|
||||
new CrispageException(
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
use \Crispage\CrispageException;
|
||||
use \Crispage\Utils\URIUtils;
|
||||
use \Crispage\Asset;
|
||||
use \Crispage\Framework\Asset;
|
||||
|
||||
class AssetEditorAction extends \Crispage\Framework\Action {
|
||||
public static function getExtensionInfo(): array {
|
||||
@ -33,12 +33,12 @@
|
||||
public function run(): void {
|
||||
// Get class name
|
||||
$this->data["classname"] = strval(
|
||||
$this->app->request->params["classname"] ?? "\\Crispage\\Asset"
|
||||
$this->app->request->params["classname"] ?? "\\Crispage\\Framework\\Asset"
|
||||
);
|
||||
|
||||
if (
|
||||
!class_exists($this->data["classname"]) ||
|
||||
!is_a($this->data["classname"], "\\Crispage\\Asset", true)
|
||||
!is_a($this->data["classname"], "\\Crispage\\Framework\\Asset", true)
|
||||
) {
|
||||
$this->app->handleException(
|
||||
new CrispageException(
|
||||
|
@ -32,11 +32,11 @@
|
||||
public function run(): void {
|
||||
// Get class name
|
||||
$this->data["classname"] = strval(
|
||||
$this->app->request->params["classname"] ?? "\\Crispage\\Asset"
|
||||
$this->app->request->params["classname"] ?? "\\Crispage\\Framework\\Asset"
|
||||
);
|
||||
if (
|
||||
!class_exists($this->data["classname"]) ||
|
||||
!is_a($this->data["classname"], "\\Crispage\\Asset", true)
|
||||
!is_a($this->data["classname"], "\\Crispage\\Framework\\Asset", true)
|
||||
) {
|
||||
$this->app->handleException(
|
||||
new CrispageException(
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
use \Crispage\CrispageException;
|
||||
use \Crispage\Utils\URIUtils;
|
||||
use \Crispage\Asset;
|
||||
use \Crispage\Framework\Asset;
|
||||
use \Crispage\Assets\Module;
|
||||
|
||||
class ModuleCreateAction extends \Crispage\Framework\Action {
|
||||
@ -54,7 +54,7 @@
|
||||
// If classname given, create the module
|
||||
$component = strval($this->app->request->params["component"] ?? "");
|
||||
if (!empty($component)) {
|
||||
$this->app->loadClass($component, "\Crispage\Framework\Component");
|
||||
$this->app->loadClass($component, "\\Crispage\\Framework\\Component");
|
||||
if (!is_a($component, "\Crispage\Framework\ModuleComponent", true)) {
|
||||
$this->app->page->setPersistentMessage(
|
||||
"invalid_module_component",
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
use \Crispage\CrispageException;
|
||||
use \Crispage\Utils\URIUtils;
|
||||
use \Crispage\Asset;
|
||||
use \Crispage\Framework\Asset;
|
||||
use \Crispage\Assets\User;
|
||||
|
||||
class UserCreateAction extends \Crispage\Framework\Action {
|
||||
|
@ -66,7 +66,7 @@
|
||||
require_once ROOT . "/core/app/text/ShortcodeEngine.php";
|
||||
|
||||
use \Crispage\Assets\Plugin;
|
||||
use \Crispage\Framwork\PluginClass;
|
||||
use \Crispage\Framework\PluginClass;
|
||||
require_once ROOT . "/core/app/framework/PluginClass.php";
|
||||
|
||||
require_once ROOT . "/core/app/utils/FileUtils.php";
|
||||
@ -239,22 +239,29 @@
|
||||
$this->dispatcher->trigger("crispage.initialized");
|
||||
}
|
||||
|
||||
public function loadClass(string $classname, string $type = "\Crispage\Framework\Component"): void {
|
||||
public function loadClass(string $classname, string $type, bool $shortnames = false): void {
|
||||
// Return if already loaded
|
||||
if (in_array($classname, $this->loadedClasses)) return;
|
||||
|
||||
// Assemble paths
|
||||
$pathend = preg_replace("/\\\\/", "/", $classname) . ".php";
|
||||
$paths = Config::CLASS_PATHS[$type] ?? null;
|
||||
if (!$paths) {
|
||||
$classpaths = Config::CLASS_PATHS[$type] ?? null;
|
||||
if (!$classpaths) {
|
||||
$this->handleException(new CrispageException(
|
||||
"Unknown class type $type", 500
|
||||
));
|
||||
}
|
||||
$fullpaths = array_map(fn(string $p): string => ROOT . $p . $pathend, $paths);
|
||||
|
||||
$name = preg_replace("/\\\\/", "/", $classname) . ".php";
|
||||
$paths = [];
|
||||
foreach ($classpaths as $cpath) $paths[] = ROOT . $cpath . $name;
|
||||
|
||||
if ($shortnames) {
|
||||
foreach ($classpaths as $cpath)
|
||||
$paths[] = ROOT . $cpath . "/" . basename($name);
|
||||
}
|
||||
|
||||
// Try each path and return if class loaded
|
||||
foreach ($fullpaths as $path) {
|
||||
foreach ($paths as $path) {
|
||||
if (!file_exists($path)) continue;
|
||||
include_once $path;
|
||||
if (class_exists($classname)) {
|
||||
@ -427,6 +434,7 @@
|
||||
}
|
||||
|
||||
public function handleException(\Throwable $exception): void {
|
||||
//throw $exception;
|
||||
if ($this->handlingException) return;
|
||||
$this->handlingException = true;
|
||||
|
||||
|
@ -14,10 +14,11 @@
|
||||
|
||||
defined("ROOT") or die();
|
||||
|
||||
require_once ROOT . "/core/app/assets/Asset.php";
|
||||
use \Crispage\Framework\Asset;
|
||||
require_once ROOT . "/core/app/framework/Asset.php";
|
||||
|
||||
// Include default assets
|
||||
require_once ROOT . "/core/app/assets/class/Article.php";
|
||||
/*require_once ROOT . "/core/app/assets/class/Article.php";
|
||||
require_once ROOT . "/core/app/assets/class/Category.php";
|
||||
require_once ROOT . "/core/app/assets/class/Comment.php";
|
||||
require_once ROOT . "/core/app/assets/class/Redirect.php";
|
||||
@ -26,7 +27,7 @@
|
||||
require_once ROOT . "/core/app/assets/class/Module.php";
|
||||
require_once ROOT . "/core/app/assets/class/Plugin.php";
|
||||
require_once ROOT . "/core/app/assets/class/Role.php";
|
||||
require_once ROOT . "/core/app/assets/class/User.php";
|
||||
require_once ROOT . "/core/app/assets/class/User.php";*/
|
||||
|
||||
use \Crispage\Framework\ApplicationFeature;
|
||||
use \Crispage\Signaling\Receiver;
|
||||
@ -34,23 +35,28 @@
|
||||
use \Crispage\Text\ShortcodeRenderer;
|
||||
|
||||
class AssetManager extends ApplicationFeature {
|
||||
private array $registeredClasses = [];
|
||||
private int $nextTempId = -2147483648;
|
||||
public const CORE_CLASSES = [
|
||||
"\\Crispage\\Assets\\ContentAsset",
|
||||
"\\Crispage\\Assets\\Article",
|
||||
"\\Crispage\\Assets\\Category",
|
||||
"\\Crispage\\Assets\\Comment",
|
||||
"\\Crispage\\Assets\\Redirect",
|
||||
"\\Crispage\\Assets\\Menu",
|
||||
"\\Crispage\\Assets\\MenuItem",
|
||||
"\\Crispage\\Assets\\Module",
|
||||
"\\Crispage\\Assets\\Plugin",
|
||||
"\\Crispage\\Assets\\Role",
|
||||
"\\Crispage\\Assets\\User"
|
||||
];
|
||||
|
||||
private int $nextTempId = PHP_INT_MIN;
|
||||
|
||||
public function __construct(\Crispage $app) {
|
||||
parent::__construct($app);
|
||||
|
||||
// Register default assets
|
||||
$this->registerClass("\\Crispage\\Assets\\Article");
|
||||
$this->registerClass("\\Crispage\\Assets\\Category");
|
||||
$this->registerClass("\\Crispage\\Assets\\Comment");
|
||||
$this->registerClass("\\Crispage\\Assets\\Redirect");
|
||||
$this->registerClass("\\Crispage\\Assets\\Menu");
|
||||
$this->registerClass("\\Crispage\\Assets\\MenuItem");
|
||||
$this->registerClass("\\Crispage\\Assets\\Module");
|
||||
$this->registerClass("\\Crispage\\Assets\\Plugin");
|
||||
$this->registerClass("\\Crispage\\Assets\\Role");
|
||||
$this->registerClass("\\Crispage\\Assets\\User");
|
||||
// Load default asset classes
|
||||
foreach (self::CORE_CLASSES as $class)
|
||||
$this->app->loadClass($class, "\\Crispage\\Framework\\Asset", true);
|
||||
|
||||
// Automatically update routes
|
||||
$this->app->dispatcher->register(
|
||||
@ -93,22 +99,6 @@
|
||||
));
|
||||
}
|
||||
|
||||
public function getRegisteredClasses(): array {
|
||||
return $this->registeredClasses;
|
||||
}
|
||||
|
||||
public function registerClass(string $classname): void {
|
||||
if (!in_array($classname, $this->registeredClasses))
|
||||
$this->registeredClasses[] = $classname;
|
||||
}
|
||||
|
||||
public function unregisterClass(string $classname): void {
|
||||
$this->registeredClasses = array_filter(
|
||||
$this->registeredClasses,
|
||||
fn(string $cn): bool => $cn != $classname
|
||||
);
|
||||
}
|
||||
|
||||
public function getTable(string $classname): string {
|
||||
return "assets_" . substr(md5($classname), 0, 8) . @end(explode("\\", $classname));
|
||||
}
|
||||
@ -129,7 +119,7 @@
|
||||
|
||||
public function createTable(string $classname): bool {
|
||||
// Error if class is not an asset
|
||||
if (!is_a($classname, "\\Crispage\\Asset", true)) return false;
|
||||
if (!is_a($classname, "\\Crispage\\Framework\\Asset", true)) return false;
|
||||
|
||||
// Get table name
|
||||
$table = $this->getTable($classname);
|
||||
@ -265,7 +255,7 @@
|
||||
// Error if class is not an asset
|
||||
if (
|
||||
!class_exists($classname) ||
|
||||
!is_a($classname, "\\Crispage\\Asset", true)
|
||||
!is_a($classname, "\\Crispage\\Framework\\Asset", true)
|
||||
) {
|
||||
$this->app->handleException(
|
||||
new CrispageException("$classname is not an Asset", 500)
|
||||
|
@ -14,8 +14,6 @@
|
||||
|
||||
defined("ROOT") or die();
|
||||
|
||||
require_once ROOT . "/core/app/assets/class/ContentAsset.php";
|
||||
|
||||
class Article extends ContentAsset {
|
||||
public static function getNames(): array {
|
||||
return ["{%ARTICLE}", "{%ARTICLES}"];
|
||||
|
@ -14,8 +14,6 @@
|
||||
|
||||
defined("ROOT") or die();
|
||||
|
||||
require_once ROOT . "/core/app/assets/class/ContentAsset.php";
|
||||
|
||||
class Category extends ContentAsset {
|
||||
public static function getNames(): array {
|
||||
return ["{%CATEGORY}", "{%CATEGORIES}"];
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
use \Crispage\Auth\CorePermissions;
|
||||
|
||||
class Comment extends \Crispage\Asset {
|
||||
class Comment extends \Crispage\Framework\Asset {
|
||||
public const HIDDEN = -1;
|
||||
public const PENDING_APPROVAL = 0;
|
||||
public const APPROVED = 1;
|
||||
|
@ -14,13 +14,11 @@
|
||||
|
||||
defined("ROOT") or die();
|
||||
|
||||
require_once ROOT . "/core/app/assets/Asset.php";
|
||||
|
||||
use \Crispage\Auth\CorePermissions;
|
||||
use \Crispage\Caching\CacheEngine;
|
||||
use \Crispage\Caching\CacheEntry;
|
||||
|
||||
abstract class ContentAsset extends \Crispage\Asset {
|
||||
abstract class ContentAsset extends \Crispage\Framework\Asset {
|
||||
public const UNPUBLISHED = 0;
|
||||
public const PUBLISHED = 1;
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
use \Crispage\Auth\CorePermissions;
|
||||
|
||||
class Menu extends \Crispage\Asset {
|
||||
class Menu extends \Crispage\Framework\Asset {
|
||||
public static function getNames(): array {
|
||||
return ["{%MENU}", "{%MENUS}"];
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
use \Crispage\Auth\CorePermissions;
|
||||
|
||||
class MenuItem extends \Crispage\Asset {
|
||||
class MenuItem extends \Crispage\Framework\Asset {
|
||||
public static function getNames(): array {
|
||||
return ["{%MENU_ITEM}", "{%MENU_ITEMS}"];
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
use \Crispage\Auth\CorePermissions;
|
||||
|
||||
class Module extends \Crispage\Asset {
|
||||
class Module extends \Crispage\Framework\Asset {
|
||||
public static function getNames(): array {
|
||||
return ["{%MODULE}", "{%MODULES}"];
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
use \Crispage\Auth\CorePermissions;
|
||||
|
||||
class Plugin extends \Crispage\Asset {
|
||||
class Plugin extends \Crispage\Framework\Asset {
|
||||
public static function getNames(): array {
|
||||
return ["{%PLUGIN}", "{%PLUGINS}"];
|
||||
}
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
use \Crispage\Auth\CorePermissions;
|
||||
|
||||
class Redirect extends \Crispage\Asset {
|
||||
class Redirect extends \Crispage\Framework\Asset {
|
||||
public static function getNames(): array {
|
||||
return ["{%REDIRECT}", "{%REDIRECTS}"];
|
||||
}
|
||||
|
@ -14,11 +14,9 @@
|
||||
|
||||
defined("ROOT") or die();
|
||||
|
||||
require_once ROOT . "/core/app/assets/Asset.php";
|
||||
|
||||
use \Crispage\Auth\CorePermissions;
|
||||
|
||||
class Role extends \Crispage\Asset {
|
||||
class Role extends \Crispage\Framework\Asset {
|
||||
public static function getNames(): array {
|
||||
return ["{%ROLE}", "{%ROLES}"];
|
||||
}
|
||||
|
@ -14,11 +14,9 @@
|
||||
|
||||
defined("ROOT") or die();
|
||||
|
||||
require_once ROOT . "/core/app/assets/Asset.php";
|
||||
|
||||
use \Crispage\Auth\CorePermissions;
|
||||
|
||||
class User extends \Crispage\Asset {
|
||||
class User extends \Crispage\Framework\Asset {
|
||||
public const DISABLED = -1;
|
||||
public const UNCONFIRMED= 0;
|
||||
public const CONFIRMED = 1;
|
||||
|
@ -10,7 +10,7 @@
|
||||
(at your option) any later version.
|
||||
*/
|
||||
|
||||
namespace Crispage;
|
||||
namespace Crispage\Framework;
|
||||
|
||||
defined("ROOT") or die();
|
||||
|
@ -15,7 +15,7 @@
|
||||
defined("ROOT") or die();
|
||||
|
||||
use \Crispage\Config;
|
||||
use \Crispage\Asset;
|
||||
use \Crispage\Framework\Asset;
|
||||
use \Crispage\Framework\ApplicationFeature;
|
||||
|
||||
require_once ROOT . "/core/app/request/CoreRoutes.php";
|
||||
|
@ -27,7 +27,7 @@
|
||||
|
||||
public function __construct(\Crispage $app, array $data) {
|
||||
if ($data["asset"] ?? null) {
|
||||
$app->loadClass($data["asset"]->component, "\Crispage\Framework\Component");
|
||||
$app->loadClass($data["asset"]->component, "\\Crispage\\Framework\\Component");
|
||||
$data["fields"] = $data["asset"]->component::getModuleFields();
|
||||
} else $data["fields"] = [];
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
|
||||
defined("ROOT") or die();
|
||||
|
||||
use \Crispage\Asset;
|
||||
use \Crispage\Framework\Asset;
|
||||
use \Crispage\Assets\ContentAsset;
|
||||
|
||||
class NewContentComponent extends \Crispage\Framework\Component
|
||||
|
@ -14,7 +14,7 @@
|
||||
|
||||
defined("ROOT") or die();
|
||||
|
||||
use \Crispage\Asset;
|
||||
use \Crispage\Framework\Asset;
|
||||
use \Crispage\Assets\ContentAsset;
|
||||
|
||||
class PopularContentComponent extends \Crispage\Framework\Component
|
||||
|
Loading…
Reference in New Issue
Block a user