Updated API, more information for troubleshooting
This commit is contained in:
parent
e07ff27365
commit
c63039f354
|
@ -2,7 +2,7 @@
|
|||
// Core extension, https://github.com/datenstrom/yellow-extensions/tree/master/source/core
|
||||
|
||||
class YellowCore {
|
||||
const VERSION = "0.8.26";
|
||||
const VERSION = "0.8.27";
|
||||
const RELEASE = "0.8.16";
|
||||
public $page; // current page
|
||||
public $content; // content files
|
||||
|
@ -91,11 +91,11 @@ class YellowCore {
|
|||
// Handle initialisation
|
||||
public function load() {
|
||||
$this->system->load($this->system->get("coreExtensionDirectory").$this->system->get("coreSystemFile"));
|
||||
$this->lookup->detectFileSystem();
|
||||
$this->user->load($this->system->get("coreExtensionDirectory").$this->system->get("coreUserFile"));
|
||||
$this->language->load($this->system->get("coreExtensionDirectory"));
|
||||
$this->language->load($this->system->get("coreExtensionDirectory").$this->system->get("coreLanguageFile"));
|
||||
$this->extension->load($this->system->get("coreExtensionDirectory"));
|
||||
$this->lookup->detectFileSystem();
|
||||
$this->startup();
|
||||
}
|
||||
|
||||
|
@ -329,7 +329,8 @@ class YellowCore {
|
|||
}
|
||||
if ($statusCode==0) {
|
||||
$line = date("Y-m-d H:i:s")." ".trim($action)." ".trim($message)."\n";
|
||||
$this->toolbox->appendFile($this->system->get("coreExtensionDirectory").$this->system->get("coreLogFile"), $line);
|
||||
$this->toolbox->appendFile($this->system->get("coreServerInstallDirectory").
|
||||
$this->system->get("coreExtensionDirectory").$this->system->get("coreLogFile"), $line);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1906,6 +1907,7 @@ class YellowExtension {
|
|||
$this->yellow = $yellow;
|
||||
$this->modified = 0;
|
||||
$this->data = array();
|
||||
register_shutdown_function(array($this, "handleFatalError"));
|
||||
}
|
||||
|
||||
// Load extensions
|
||||
|
@ -1937,6 +1939,19 @@ class YellowExtension {
|
|||
}
|
||||
}
|
||||
|
||||
// Handle fatal extension error
|
||||
public function handleFatalError() {
|
||||
$error = error_get_last();
|
||||
$type = $error["type"];
|
||||
$fileName = $error["file"];
|
||||
if ($type==E_ERROR || $type==E_PARSE) {
|
||||
if ($this->yellow->toolbox->getFileType($fileName)=="php") {
|
||||
$fileName = substru($fileName, strlenu($this->yellow->system->get("coreServerInstallDirectory")));
|
||||
$this->yellow->log("error", "Can't run extension file '$fileName'!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Return extension
|
||||
public function get($key) {
|
||||
return $this->data[$key]["object"];
|
||||
|
@ -1968,6 +1983,8 @@ class YellowLookup {
|
|||
list($pathRoot, $pathHome) = $this->findFileSystemInformation();
|
||||
$this->yellow->system->set("coreContentRootDirectory", $pathRoot);
|
||||
$this->yellow->system->set("coreContentHomeDirectory", $pathHome);
|
||||
$this->yellow->system->set("coreServerInstallDirectory",
|
||||
substru(dirname(__FILE__), 0, 1-strlenu($this->yellow->system->get("coreExtensionDirectory"))));
|
||||
date_default_timezone_set($this->yellow->system->get("coreServerTimezone"));
|
||||
}
|
||||
|
||||
|
@ -2528,17 +2545,6 @@ class YellowToolbox {
|
|||
return $contentType;
|
||||
}
|
||||
|
||||
// Return number of bytes
|
||||
public function getNumberBytes($string) {
|
||||
$bytes = intval($string);
|
||||
switch (strtoupperu(substru($string, -1))) {
|
||||
case "G": $bytes *= 1024*1024*1024; break;
|
||||
case "M": $bytes *= 1024*1024; break;
|
||||
case "K": $bytes *= 1024; break;
|
||||
}
|
||||
return $bytes;
|
||||
}
|
||||
|
||||
// Return files and directories
|
||||
public function getDirectoryEntries($path, $regex = "/.*/", $sort = true, $directories = true, $includePath = true) {
|
||||
$entries = array();
|
||||
|
@ -2716,6 +2722,17 @@ class YellowToolbox {
|
|||
return $group;
|
||||
}
|
||||
|
||||
// Return number of bytes
|
||||
public function getNumberBytes($string) {
|
||||
$bytes = intval($string);
|
||||
switch (strtoupperu(substru($string, -1))) {
|
||||
case "G": $bytes *= 1024*1024*1024; break;
|
||||
case "M": $bytes *= 1024*1024; break;
|
||||
case "K": $bytes *= 1024; break;
|
||||
}
|
||||
return $bytes;
|
||||
}
|
||||
|
||||
// Return lines from text, including newline
|
||||
public function getTextLines($text) {
|
||||
$lines = preg_split("/\n/", $text);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
// Edit extension, https://github.com/datenstrom/yellow-extensions/tree/master/source/edit
|
||||
|
||||
class YellowEdit {
|
||||
const VERSION = "0.8.36";
|
||||
const VERSION = "0.8.37";
|
||||
public $yellow; // access to API
|
||||
public $response; // web response
|
||||
public $merge; // text merge
|
||||
|
@ -1260,8 +1260,7 @@ class YellowEditResponse {
|
|||
public function getToolbarButtons() {
|
||||
$toolbarButtons = $this->yellow->system->get("editToolbarButtons");
|
||||
if ($toolbarButtons=="auto") {
|
||||
$toolbarButtons = "";
|
||||
if ($this->yellow->extension->isExisting("markdown")) $toolbarButtons = "format, bold, italic, strikethrough, code, separator, list, link, file";
|
||||
$toolbarButtons = "format, bold, italic, strikethrough, code, separator, list, link, file";
|
||||
if ($this->yellow->extension->isExisting("emojiawesome")) $toolbarButtons .= ", emojiawesome";
|
||||
if ($this->yellow->extension->isExisting("fontawesome")) $toolbarButtons .= ", fontawesome";
|
||||
$toolbarButtons .= ", status, preview";
|
||||
|
|
|
@ -21,21 +21,21 @@ Tag: feature
|
|||
system/extensions/command.php: command.php, create, update
|
||||
|
||||
Extension: Core
|
||||
Version: 0.8.26
|
||||
Version: 0.8.27
|
||||
Description: Core functionality of the website.
|
||||
HelpUrl: https://github.com/datenstrom/yellow-extensions/tree/master/source/core
|
||||
DownloadUrl: https://github.com/datenstrom/yellow-extensions/raw/master/zip/core.zip
|
||||
Published: 2020-10-27 16:19:30
|
||||
Published: 2020-10-29 20:49:27
|
||||
Developer: Datenstrom
|
||||
Tag: feature
|
||||
system/extensions/core.php: core.php, create, update
|
||||
|
||||
Extension: Edit
|
||||
Version: 0.8.36
|
||||
Version: 0.8.37
|
||||
Description: Edit your website in a web browser.
|
||||
HelpUrl: https://github.com/datenstrom/yellow-extensions/tree/master/source/edit
|
||||
DownloadUrl: https://github.com/datenstrom/yellow-extensions/raw/master/zip/edit.zip
|
||||
Published: 2020-10-27 14:45:48
|
||||
Published: 2020-10-28 15:26:51
|
||||
Developer: Datenstrom
|
||||
Tag: feature
|
||||
system/extensions/edit.php: edit.php, create, update
|
||||
|
@ -89,11 +89,11 @@ system/themes/stockholm-opensans-light.woff: stockholm-opensans-light.woff, crea
|
|||
system/themes/stockholm-opensans-regular.woff: stockholm-opensans-regular.woff, create, update, careful
|
||||
|
||||
Extension: Update
|
||||
Version: 0.8.40
|
||||
Version: 0.8.41
|
||||
Description: Keep your website up to date.
|
||||
HelpUrl: https://github.com/datenstrom/yellow-extensions/tree/master/source/update
|
||||
DownloadUrl: https://github.com/datenstrom/yellow-extensions/raw/master/zip/update.zip
|
||||
Published: 2020-10-28 10:16:16
|
||||
Published: 2020-10-30 10:40:10
|
||||
Developer: Datenstrom
|
||||
Tag: feature
|
||||
system/extensions/update.php: update.php, create, update
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
// Update extension, https://github.com/datenstrom/yellow-extensions/tree/master/source/update
|
||||
|
||||
class YellowUpdate {
|
||||
const VERSION = "0.8.40";
|
||||
const VERSION = "0.8.41";
|
||||
const PRIORITY = "2";
|
||||
public $yellow; // access to API
|
||||
public $updates; // number of updates
|
||||
|
@ -461,13 +461,13 @@ class YellowUpdate {
|
|||
if (defined("DEBUG") && DEBUG>=2) echo "YellowUpdate::updateExtensionArchive file:$path<br/>\n";
|
||||
$pathBase = "";
|
||||
if (preg_match("#^(.*\/).*?$#", $zip->getNameIndex(0), $matches)) $pathBase = $matches[1];
|
||||
$languages = $this->getExtensionArchiveLanguages($zip, $pathBase);
|
||||
$fileData = $zip->getFromName($pathBase.$this->yellow->system->get("updateExtensionFile"));
|
||||
$settings = $this->yellow->toolbox->getTextSettings($fileData, "");
|
||||
list($extension, $version, $newModified, $oldModified) = $this->getExtensionInformation($settings);
|
||||
list($extension, $version, $newModified, $oldModified) = $this->getExtensionInformation($settings, $path);
|
||||
if (!empty($extension) && !empty($version)) {
|
||||
$statusCode = $this->updateExtensionSettings($extension, $settings, $action);
|
||||
if ($statusCode==200) {
|
||||
$languages = $this->getExtensionArchiveLanguages($zip, $pathBase);
|
||||
foreach ($this->getExtensionFileNames($settings) as $fileName) {
|
||||
list($entry, $flags) = $this->yellow->toolbox->getTextList($settings[$fileName], ",", 2);
|
||||
if (!$this->yellow->lookup->isContentFile($fileName)) {
|
||||
|
@ -734,17 +734,24 @@ class YellowUpdate {
|
|||
}
|
||||
|
||||
// Return extension information
|
||||
public function getExtensionInformation($settings) {
|
||||
public function getExtensionInformation($settings, $path) {
|
||||
$extension = lcfirst($settings->get("extension"));
|
||||
$version = $settings->get("version");
|
||||
$newModified = strtotime($settings->get("published"));
|
||||
$oldModified = 0;
|
||||
$invalid = false;
|
||||
foreach ($settings as $key=>$value) {
|
||||
if (strposu($key, "/") && is_file($key)) {
|
||||
$oldModified = filemtime($key);
|
||||
break;
|
||||
if (strposu($key, "/")) {
|
||||
if (!$this->yellow->lookup->isValidFile($key)) $invalid = true;
|
||||
list($entry, $flags) = $this->yellow->toolbox->getTextList($value, ",", 2);
|
||||
if (strposu($entry, ".")===false) $invalid = true;
|
||||
if ($oldModified==0 && is_file($key)) $oldModified = filemtime($key);
|
||||
}
|
||||
}
|
||||
if ($invalid) {
|
||||
$this->yellow->log("error", "Can't detect extension file '$path'!");
|
||||
$extension = $version = "";
|
||||
}
|
||||
return array($extension, $version, $newModified, $oldModified);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue