Ver Fonte

Updated core, better page visibility

markseu há 5 anos atrás
pai
commit
b27d377935

+ 2 - 2
system/extensions/command.php

@@ -4,7 +4,7 @@
 // This file may be used and distributed under the terms of the public license.
 
 class YellowCommand {
-    const VERSION = "0.8.6";
+    const VERSION = "0.8.7";
     const TYPE = "feature";
     const PRIORITY = "3";
     public $yellow;                     //access to API
@@ -578,7 +578,7 @@ class YellowCommand {
                 array_push($locations, $page->location);
             }
         }
-        if (!$this->yellow->content->find("/") && $this->yellow->system->get("multiLanguageMode")) array_unshift($locations, "/");
+        if (!$this->yellow->content->find("/") && $this->yellow->system->get("coreMultiLanguageMode")) array_unshift($locations, "/");
         return $locations;
     }
     

+ 10 - 29
system/extensions/core.php

@@ -4,7 +4,7 @@
 // This file may be used and distributed under the terms of the public license.
 
 class YellowCore {
-    const VERSION = "0.8.6";
+    const VERSION = "0.8.7";
     const TYPE = "feature";
     public $page;           //current page
     public $content;        //content files from file system
@@ -32,6 +32,7 @@ class YellowCore {
         $this->system->setDefault("layout", "default");
         $this->system->setDefault("theme", "default");
         $this->system->setDefault("parser", "markdown");
+        $this->system->setDefault("status", "public");
         $this->system->setDefault("navigation", "navigation");
         $this->system->setDefault("header", "header");
         $this->system->setDefault("footer", "footer");
@@ -66,8 +67,8 @@ class YellowCore {
         $this->system->setDefault("systemFile", "system.ini");
         $this->system->setDefault("textFile", "text.ini");
         $this->system->setDefault("logFile", "yellow.log");
-        $this->system->setDefault("safeMode", "0");
-        $this->system->setDefault("multiLanguageMode", "0");
+        $this->system->setDefault("coreSafeMode", "0");
+        $this->system->setDefault("coreMultiLanguageMode", "0");
         $this->system->setDefault("serverUrl", "");
     }
     
@@ -415,9 +416,9 @@ class YellowPage {
         $this->rawData = $rawData;
         $this->parser = null;
         $this->parserData = "";
-        $this->safeMode = intval($this->yellow->system->get("safeMode"));
+        $this->safeMode = intval($this->yellow->system->get("coreSafeMode"));
         $this->available = $this->yellow->lookup->isAvailableLocation($this->location, $this->fileName);
-        $this->visible = $this->yellow->lookup->isVisibleLocation($this->location, $this->fileName);
+        $this->visible = true;
         $this->active = $this->yellow->lookup->isActiveLocation($this->location, $this->yellow->page->location);
         $this->cacheable = $cacheable;
         $this->lastModified = 0;
@@ -441,7 +442,7 @@ class YellowPage {
             $this->set("title", $this->yellow->toolbox->createTextTitle($this->location));
             $this->set("language", $this->yellow->lookup->findLanguageFromFile($this->fileName, $this->yellow->system->get("language")));
             $this->set("modified", date("Y-m-d H:i:s", $this->yellow->toolbox->getFileModified($this->fileName)));
-            $this->parseMetaRaw(array("sitename", "author", "layout", "theme", "parser", "navigation", "header", "footer", "sidebar"));
+            $this->parseMetaRaw(array("sitename", "author", "layout", "theme", "parser", "status", "navigation", "header", "footer", "sidebar"));
             $titleHeader = ($this->location==$this->yellow->content->getHomeLocation($this->location)) ?
                 $this->get("sitename") : $this->get("title")." - ".$this->get("sitename");
             if (!$this->isExisting("titleContent")) $this->set("titleContent", $this->get("title"));
@@ -449,7 +450,6 @@ class YellowPage {
             if (!$this->isExisting("titleHeader")) $this->set("titleHeader", $titleHeader);
             if ($this->get("status")=="unlisted") $this->visible = false;
             if ($this->get("status")=="shared") $this->available = false;
-            if ($this->get("status")=="hidden") $this->available = false;   //TODO: remove later, for backwards compatibility
             $this->set("pageRead", $this->yellow->lookup->normaliseUrl(
                 $this->yellow->system->get("serverScheme"),
                 $this->yellow->system->get("serverAddress"),
@@ -1311,7 +1311,7 @@ class YellowContent {
     // Return root location
     public function getRootLocation($location) {
         $rootLocation = "root/";
-        if ($this->yellow->system->get("multiLanguageMode")) {
+        if ($this->yellow->system->get("coreMultiLanguageMode")) {
             foreach ($this->scanLocation("") as $page) {
                 $token = substru($page->location, 4);
                 if ($token!="/" && substru($location, 0, strlenu($token))==$token) {
@@ -1751,7 +1751,7 @@ class YellowLookup {
         $path = $this->yellow->system->get("contentDir");
         $pathRoot = $this->yellow->system->get("contentRootDir");
         $pathHome = $this->yellow->system->get("contentHomeDir");
-        if (!$this->yellow->system->get("multiLanguageMode")) $pathRoot = "";
+        if (!$this->yellow->system->get("coreMultiLanguageMode")) $pathRoot = "";
         if (!empty($pathRoot)) {
             $token = $root = rtrim($pathRoot, "/");
             foreach ($this->yellow->toolbox->getDirectoryEntries($path, "/.*/", true, true, false) as $entry) {
@@ -2096,7 +2096,7 @@ class YellowLookup {
         if ($this->isFileLocation($location)) {
             $redirect = is_dir($this->findFileFromLocation("$location/", true));
         } elseif ($location=="/") {
-            $redirect = $this->yellow->system->get("multiLanguageMode");
+            $redirect = $this->yellow->system->get("coreMultiLanguageMode");
         }
         return $redirect;
     }
@@ -2122,25 +2122,6 @@ class YellowLookup {
         return $available;
     }
     
-    // Check if location is visible
-    public function isVisibleLocation($location, $fileName) {
-        $visible = true;
-        $pathBase = $this->yellow->system->get("contentDir");
-        if (substru($fileName, 0, strlenu($pathBase))==$pathBase) {
-            $fileName = substru($fileName, strlenu($pathBase));
-            $tokens = explode("/", $fileName);
-            for ($i=0; $i<count($tokens)-1; ++$i) {
-                if (!preg_match("/^[\d\-\_\.]+(.*)$/", $tokens[$i])) {
-                    $visible = false;
-                    break;
-                }
-            }
-        } else {
-            $visible = false;
-        }
-        return $visible;
-    }
-    
     // Check if location is within current HTTP request
     public function isActiveLocation($location, $currentLocation) {
         if ($this->isFileLocation($location)) {

+ 2 - 2
system/extensions/image.php

@@ -4,7 +4,7 @@
 // This file may be used and distributed under the terms of the public license.
 
 class YellowImage {
-    const VERSION = "0.8.2";
+    const VERSION = "0.8.3";
     const TYPE = "feature";
     public $yellow;             //access to API
     public $graphicsLibrary;    //graphics library support? (boolean)
@@ -66,7 +66,7 @@ class YellowImage {
                     $file->error(500, "Can't write file '$fileName'!");
                 }
             }
-            if ($this->yellow->system->get("safeMode") && $fileType=="svg") {
+            if ($this->yellow->system->get("coreSafeMode") && $fileType=="svg") {
                 $output = $this->sanitiseXmlData($this->yellow->toolbox->readFile($fileName));
                 if (empty($output) || !$this->yellow->toolbox->createFile($fileName, $output)) {
                      $file->error(500, "Can't write file '$fileName'!");

+ 2 - 1
system/extensions/install.php

@@ -4,7 +4,7 @@
 // This file may be used and distributed under the terms of the public license.
 
 class YellowInstall {
-    const VERSION = "0.8.9";
+    const VERSION = "0.8.10";
     const TYPE = "feature";
     const PRIORITY = "1";
     public $yellow;                 //access to API
@@ -290,6 +290,7 @@ class YellowInstall {
         $data = array();
         foreach ($_REQUEST as $key=>$value) {
             if (!$this->yellow->system->isExisting($key)) continue;
+            if ($key=="password" || $key=="status") continue;
             $data[$key] = trim($value);
         }
         $data["timezone"] = $this->yellow->toolbox->getTimezone();

+ 34 - 2
system/extensions/update.php

@@ -4,7 +4,7 @@
 // This file may be used and distributed under the terms of the public license.
 
 class YellowUpdate {
-    const VERSION = "0.8.9";
+    const VERSION = "0.8.10";
     const TYPE = "feature";
     const PRIORITY = "2";
     public $yellow;                 //access to API
@@ -56,6 +56,38 @@ class YellowUpdate {
 
     // Handle update
     public function onUpdate($action) {
+        if ($action=="update") {  //TODO: remove later, converts old core settings
+            if ($this->yellow->system->isExisting("safeMode")) {
+                $safeMode = $this->yellow->system->get("safeMode");
+                $multiLanguageMode = $this->yellow->system->get("multiLanguageMode");
+                $fileName = $this->yellow->system->get("settingDir").$this->yellow->system->get("systemFile");
+                $this->yellow->system->save($fileName, array("coreSafeMode" => $safeMode, "coreMultiLanguageMode" => $multiLanguageMode));
+                $path = $this->yellow->system->get("contentDir");
+                foreach ($this->yellow->toolbox->getDirectoryEntriesRecursive($path, "/^.*\.md$/", true, false) as $entry) {
+                    $fileData = $fileDataNew = $this->yellow->toolbox->readFile($entry);
+                    $fileStatusUnlisted = false;
+                    $tokens = explode("/", substru($entry, strlenu($path)));
+                    for ($i=0; $i<count($tokens)-1; ++$i) {
+                        if (!preg_match("/^[\d\-\_\.]+(.*)$/", $tokens[$i]) && $tokens[$i]!="shared") {
+                            $fileStatusUnlisted = true;
+                            break;
+                        }
+                    }
+                    if ($fileStatusUnlisted && empty($this->yellow->toolbox->getMetaData($fileDataNew, "status"))) {
+                        $fileDataNew = $this->yellow->toolbox->setMetaData($fileDataNew, "status", "unlisted");
+                    }
+                    $fileDataNew = preg_replace("/Status: hidden/i", "Status: shared", $fileDataNew);
+                    if ($fileData!=$fileDataNew) {
+                        $modified = $this->yellow->toolbox->getFileModified($entry);
+                        if (!$this->yellow->toolbox->deleteFile($entry) ||
+                            !$this->yellow->toolbox->createFile($entry, $fileDataNew) ||
+                            !$this->yellow->toolbox->modifyFile($entry, $modified)) {
+                            $this->yellow->log("error", "Can't write file '$entry'!");
+                        }
+                    }
+                }
+            }
+        }
         if ($action=="startup") {
             if ($this->yellow->system->get("updateNotification")!="none") {
                 foreach (explode(",", $this->yellow->system->get("updateNotification")) as $token) {
@@ -449,7 +481,7 @@ class YellowUpdate {
     // Update content for multi language mode
     public function updateContentMultiLanguage($extension) {
         $statusCode = 200;
-        if ($this->yellow->system->get("multiLanguageMode") && !$this->yellow->extensions->isExisting($extension)) {
+        if ($this->yellow->system->get("coreMultiLanguageMode") && !$this->yellow->extensions->isExisting($extension)) {
             $pathsSource = $pathsTarget = array();
             $pathBase = $this->yellow->system->get("contentDir");
             $fileExtension = $this->yellow->system->get("contentExtension");

+ 3 - 2
system/settings/system.ini

@@ -8,6 +8,7 @@ Language: en
 Layout: default
 Theme: stockholm
 Parser: markdown
+Status: public
 Navigation: navigation
 Header: header
 Footer: footer
@@ -41,8 +42,8 @@ ContentExtension: .md
 DownloadExtension: .download
 TextFile: text.ini
 LogFile: yellow.log
-SafeMode: 0
-MultiLanguageMode: 0
+CoreSafeMode: 0
+CoreMultiLanguageMode: 0
 ServerUrl:
 UpdateExtensionUrl: https://github.com/datenstrom/yellow-extensions
 UpdateExtensionFile: extension.ini