getPackageInfo(PACKAGE); $pid = $pdata["ExtensionInfo"]["id"] ?? "unknown"; $pversion = $pdata["ExtensionInfo"]["version"] ?? "0.0"; $this->log("Installing $pid v$pversion", $this::L_INFO); $this->log("Copying files", $this::L_NORMAL); $files = array_merge( ["/user"], $pdata["PackageData"]["contents"] ?? [] ); foreach ($files as $path) { $this->log("Copying $path", $this::L_DEBUG); $from = PACKAGE_PATH . $path; $to = ROOT . $path; if (!file_exists($from)) { $this->log("$path does not exist", $this::L_WARNING); continue; } if (is_dir($from)) FileUtils::copyDirectory($from, $to); else copy($from, $to); } $this->log("Installing extensions", $this::L_NORMAL); $extensions = $pdata["Extensions"] ?? []; $plugins = $pdata["PackageData"]["plugins"] ?? []; foreach ($extensions as $extid => $data) { $this->log("Installing $extid", $this::L_DEBUG); $ext = new Extension( $data["id"] ?? $extid, $data["version"] ?? $pversion, $data["package"] ?? $pid, $data["classname"] ?? "unknown", $data["type"] ?? "unknown", $pdata["ExtensionData"][$extid] ?? [] ); $this->app->extensions->register($ext); if (in_array($extid, $plugins)) { $this->log("Installing $extid as plugin", $this::L_DEBUG); $this->app->assets->create( "\\Crispage\\Assets\\Plugin", [ "slug" => preg_replace("/[^a-z0-9]+/", "_", $extid), "classname" => $data["classname"] ?? "\\Crispage\\Plugins\\DefaultPluginClass" ] ); } } $this->log("Installation Successful!", $this::L_SUCCESS); ?>