Updated API, more information for troubleshooting

This commit is contained in:
markseu 2020-10-30 11:03:19 +01:00
parent e07ff27365
commit c63039f354
4 changed files with 53 additions and 30 deletions

View file

@ -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);

View file

@ -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";

View file

@ -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

View file

@ -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);
}