Better location handling (snowman remix)
This commit is contained in:
parent
cbb2e8ce60
commit
aa395003ac
3 changed files with 101 additions and 112 deletions
|
@ -1,20 +1,21 @@
|
|||
<?php
|
||||
// Copyright (c) 2013 Datenstrom, http://datenstrom.se
|
||||
// Copyright (c) 2013-2014 Datenstrom, http://datenstrom.se
|
||||
// This file may be used and distributed under the terms of the public license.
|
||||
|
||||
// Command line core plugin
|
||||
class YellowCommandline
|
||||
{
|
||||
const Version = "0.2.2";
|
||||
const Version = "0.2.3";
|
||||
var $yellow; //access to API
|
||||
|
||||
// Initialise plugin
|
||||
function onLoad($yellow)
|
||||
{
|
||||
$this->yellow = $yellow;
|
||||
$this->yellow->config->setDefault("commandBuildDefaultFile", "index.html");
|
||||
$this->yellow->config->setDefault("commandBuildCustomMediaExtension", ".txt");
|
||||
$this->yellow->config->setDefault("commandBuildCustomErrorFile", "error404.html");
|
||||
$this->yellow->config->setDefault("commandlineDefaultFile", "index.html");
|
||||
$this->yellow->config->setDefault("commandlineMediaFile", "(.*).txt");
|
||||
$this->yellow->config->setDefault("commandlineSystemErrorFile", "error404.html");
|
||||
$this->yellow->config->setDefault("commandlineSystemServerFile", ".htaccess");
|
||||
}
|
||||
|
||||
// Handle command help
|
||||
|
@ -55,22 +56,20 @@ class YellowCommandline
|
|||
return 200;
|
||||
}
|
||||
|
||||
// Build website
|
||||
// Build static pages
|
||||
function buildCommand($args)
|
||||
{
|
||||
$statusCode = 0;
|
||||
list($dummy, $command, $path, $location) = $args;
|
||||
if(!empty($path) && $path!="/")
|
||||
if(!empty($path) && $path!="/" && (empty($location) || $location[0]=='/'))
|
||||
{
|
||||
if($this->yellow->config->isExisting("serverName"))
|
||||
{
|
||||
$serverName = $this->yellow->config->get("serverName");
|
||||
$serverBase = $this->yellow->config->get("serverBase");
|
||||
list($statusCode, $content, $media, $system, $error) = $this->buildStatic($serverName, $serverBase, $location, $path);
|
||||
list($statusCode, $content, $media, $system, $error) = $this->buildStatic($location, $path);
|
||||
} else {
|
||||
list($statusCode, $content, $media, $system, $error) = array(500, 0, 0, 0, 1);
|
||||
$fileName = $this->yellow->config->get("configDir").$this->yellow->config->get("configFile");
|
||||
echo "ERROR bulding website: Please configure serverName and serverBase in file '$fileName'!\n";
|
||||
echo "ERROR bulding pages: Please configure serverName and serverBase in file '$fileName'!\n";
|
||||
}
|
||||
echo "Yellow $command: $content content, $media media, $system system";
|
||||
echo ", $error error".($error!=1 ? 's' : '');
|
||||
|
@ -83,71 +82,53 @@ class YellowCommandline
|
|||
}
|
||||
|
||||
// Build static files
|
||||
function buildStatic($serverName, $serverBase, $location, $path)
|
||||
function buildStatic($location, $path)
|
||||
{
|
||||
$this->yellow->toolbox->timerStart($time);
|
||||
$statusCodeMax = $error = 0;
|
||||
if(empty($location))
|
||||
{
|
||||
$pages = $this->yellow->pages->index(true);
|
||||
$fileNamesMedia = $this->yellow->toolbox->getDirectoryEntriesrecursive(
|
||||
$fileNamesMedia = $this->yellow->toolbox->getDirectoryEntriesRecursive(
|
||||
$this->yellow->config->get("mediaDir"), "/.*/", false, false);
|
||||
$fileNamesMedia = array_merge($fileNamesMedia, $this->yellow->toolbox->getDirectoryEntries(
|
||||
".", "/.*\\".$this->yellow->config->get("commandBuildCustomMediaExtension")."/", false, false));
|
||||
$fileNamesSystem = array($this->yellow->config->get("commandBuildCustomErrorFile"));
|
||||
".", "/".$this->yellow->config->get("commandlineMediaFile")."/", false, false, false));
|
||||
$fileNamesSystem = array($this->yellow->config->get("commandlineSystemErrorFile"),
|
||||
$this->yellow->config->get("commandlineSystemServerFile"));
|
||||
} else {
|
||||
if($location[0] != '/') $location = '/'.$location;
|
||||
$pages = new YellowPageCollection($this->yellow);
|
||||
$pages->append(new YellowPage($this->yellow, $location));
|
||||
$fileNamesMedia = array();
|
||||
$fileNamesSystem = array();
|
||||
$fileNamesMedia = $fileNamesSystem = array();
|
||||
}
|
||||
foreach($pages as $page)
|
||||
{
|
||||
$statusCode = $this->buildStaticLocation($serverName, $serverBase, $page->location, $path);
|
||||
$statusCodeMax = max($statusCodeMax, $statusCode);
|
||||
if($statusCode >= 400)
|
||||
{
|
||||
++$error;
|
||||
echo "ERROR building location '".$page->location."', ".$this->yellow->page->getStatusCode(true)."\n";
|
||||
}
|
||||
if(defined("DEBUG") && DEBUG>=1) echo "YellowCommandline::buildStatic status:$statusCode location:".$page->location."\n";
|
||||
$statusCode = $this->buildStaticLocation($page->location, $path);
|
||||
$statusCodeMax = max($statusCodeMax, $statusCode); if($statusCode >= 400) ++$error;
|
||||
}
|
||||
foreach($fileNamesMedia as $fileName)
|
||||
{
|
||||
$statusCode = $this->copyStaticFile($fileName, "$path/$fileName") ? 200 : 500;
|
||||
$statusCodeMax = max($statusCodeMax, $statusCode);
|
||||
if($statusCode >= 400)
|
||||
{
|
||||
++$error;
|
||||
echo "ERROR building media file '$path/$fileName', ".$this->yellow->toolbox->getHttpStatusFormatted($statusCode)."\n";
|
||||
}
|
||||
if(defined("DEBUG") && DEBUG>=1) echo "YellowCommandline::buildStatic status:$statusCode file:$fileName\n";
|
||||
$statusCode = $this->buildStaticFile($fileName, "$path/$fileName", "media file");
|
||||
$statusCodeMax = max($statusCodeMax, $statusCode); if($statusCode >= 400) ++$error;
|
||||
}
|
||||
foreach($fileNamesSystem as $fileName)
|
||||
{
|
||||
$statusCode = $this->buildStaticError($serverName, $serverBase, "$path/$fileName", 404) ? 200 : 500;
|
||||
$statusCodeMax = max($statusCodeMax, $statusCode);
|
||||
if($statusCode >= 400)
|
||||
{
|
||||
++$error;
|
||||
echo "ERROR building system file '$path/$fileName', ".$this->yellow->toolbox->getHttpStatusFormatted($statusCode)."\n";
|
||||
}
|
||||
if(defined("DEBUG") && DEBUG>=1) echo "YellowCommandline::buildStatic status:$statusCode file:$fileName\n";
|
||||
$statusCode = $this->buildStaticFile($fileName, "$path/$fileName", "system file");
|
||||
$statusCodeMax = max($statusCodeMax, $statusCode); if($statusCode >= 400) ++$error;
|
||||
}
|
||||
$this->yellow->toolbox->timerStop($time);
|
||||
if(defined("DEBUG") && DEBUG>=1) echo "YellowCommandline::buildStatic time:$time ms\n";
|
||||
return array($statusCodeMax, count($pages), count($fileNamesMedia), count($fileNamesSystem), $error);
|
||||
}
|
||||
|
||||
// Build static location as file
|
||||
function buildStaticLocation($serverName, $serverBase, $location, $path)
|
||||
// Build static location
|
||||
function buildStaticLocation($location, $path)
|
||||
{
|
||||
ob_start();
|
||||
$_SERVER["SERVER_PROTOCOL"] = "HTTP/1.1";
|
||||
$_SERVER["SERVER_NAME"] = $serverName;
|
||||
$_SERVER["REQUEST_URI"] = $serverBase.$location;
|
||||
$_SERVER["SCRIPT_NAME"] = $serverBase."yellow.php";
|
||||
$_SERVER["SERVER_NAME"] = $this->yellow->config->get("serverName");
|
||||
$_SERVER["REQUEST_URI"] = $this->yellow->config->get("serverBase").$location;
|
||||
$_SERVER["SCRIPT_NAME"] = $this->yellow->config->get("serverBase")."yellow.php";
|
||||
$_REQUEST = array();
|
||||
$statusCode = $this->yellow->request();
|
||||
if($statusCode != 404)
|
||||
{
|
||||
|
@ -160,18 +141,21 @@ class YellowCommandline
|
|||
$fileName = $this->getStaticFileName($location, $path);
|
||||
$fileData = ob_get_contents();
|
||||
if($statusCode>=301 && $statusCode<=303) $fileData = $this->getStaticRedirect($this->yellow->page->getHeader("Location"));
|
||||
$fileOk = $this->createStaticFile($fileName, $fileData, $modified);
|
||||
$fileOk = $this->yellow->toolbox->createFile($fileName, $fileData, true) &&
|
||||
$this->yellow->toolbox->modifyFile($fileName, $modified);
|
||||
} else {
|
||||
if(!$this->yellow->toolbox->isFileLocation($location))
|
||||
{
|
||||
$fileName = $this->getStaticFileName($location, $path);
|
||||
$fileData = $this->getStaticRedirect("http://$serverName$serverBase$staticLocation");
|
||||
$fileOk = $this->createStaticFile($fileName, $fileData, $modified);
|
||||
$fileData = $this->getStaticRedirect($staticLocation);
|
||||
$fileOk = $this->yellow->toolbox->createFile($fileName, $fileData, true) &&
|
||||
$this->yellow->toolbox->modifyFile($fileName, $modified);
|
||||
if($fileOk)
|
||||
{
|
||||
$fileName = $this->getStaticFileName($staticLocation, $path);
|
||||
$fileData = ob_get_contents();
|
||||
$fileOk = $this->createStaticFile($fileName, $fileData, $modified);
|
||||
$fileOk = $this->yellow->toolbox->createFile($fileName, $fileData, true) &&
|
||||
$this->yellow->toolbox->modifyFile($fileName, $modified);
|
||||
}
|
||||
} else {
|
||||
$statusCode = 409;
|
||||
|
@ -185,43 +169,46 @@ class YellowCommandline
|
|||
}
|
||||
}
|
||||
ob_end_clean();
|
||||
if($statusCode>=400) echo "ERROR building location '$location', ".$this->yellow->page->getStatusCode(true)."\n";
|
||||
if(defined("DEBUG") && DEBUG>=1) echo "YellowCommandline::buildStaticLocation status:$statusCode location:$location\n";
|
||||
return $statusCode;
|
||||
}
|
||||
|
||||
// Build static error as file
|
||||
function buildStaticError($serverName, $serverBase, $fileName, $statusCodeRequest)
|
||||
// Build static file
|
||||
function buildStaticFile($fileNameSource, $fileNameDest, $fileType)
|
||||
{
|
||||
ob_start();
|
||||
$_SERVER["SERVER_PROTOCOL"] = "HTTP/1.1";
|
||||
$_SERVER["SERVER_NAME"] = $serverName;
|
||||
$_SERVER["REQUEST_URI"] = $serverBase."/";
|
||||
$_SERVER["SCRIPT_NAME"] = $serverBase."yellow.php";
|
||||
$statusCode = $this->yellow->request($statusCodeRequest);
|
||||
if($statusCode == $statusCodeRequest)
|
||||
if($fileNameSource != $this->yellow->config->get("commandlineSystemErrorFile"))
|
||||
{
|
||||
$modified = strtotime($this->yellow->page->getHeader("Last-Modified"));
|
||||
if(!$this->createStaticFile($fileName, ob_get_contents(), $modified))
|
||||
$statusCode = $this->yellow->toolbox->copyFile($fileNameSource, $fileNameDest, true) &&
|
||||
$this->yellow->toolbox->modifyFile($fileNameDest, filemtime($fileNameSource)) ? 200 : 500;
|
||||
} else {
|
||||
ob_start();
|
||||
$_SERVER["SERVER_PROTOCOL"] = "HTTP/1.1";
|
||||
$_SERVER["SERVER_NAME"] = $this->yellow->config->get("serverName");
|
||||
$_SERVER["REQUEST_URI"] = $this->yellow->config->get("serverBase")."/";
|
||||
$_SERVER["SCRIPT_NAME"] = $this->yellow->config->get("serverBase")."yellow.php";
|
||||
$_REQUEST = array();
|
||||
$statusCodeRequest = 404;
|
||||
$statusCode = $this->yellow->request($statusCodeRequest);
|
||||
if($statusCode == $statusCodeRequest)
|
||||
{
|
||||
$statusCode = 200;
|
||||
$modified = strtotime($this->yellow->page->getHeader("Last-Modified"));
|
||||
if(!$this->yellow->toolbox->createFile($fileNameDest, ob_get_contents(), true) ||
|
||||
!$this->yellow->toolbox->modifyFile($fileNameDest, $modified))
|
||||
{
|
||||
$statusCode = 500;
|
||||
$this->yellow->page->error($statusCode, "Can't write file '$fileNameDest'!");
|
||||
}
|
||||
} else {
|
||||
$statusCode = 500;
|
||||
$this->yellow->page->error($statusCode, "Can't write file '$fileName'!");
|
||||
$this->yellow->page->error($statusCode, "Error $statusCodeRequest does not exist!");
|
||||
}
|
||||
ob_end_clean();
|
||||
}
|
||||
ob_end_clean();
|
||||
return $statusCode == $statusCodeRequest;
|
||||
}
|
||||
|
||||
// Create static file
|
||||
function createStaticFile($fileName, $fileData, $modified)
|
||||
{
|
||||
return $this->yellow->toolbox->createFile($fileName, $fileData, true) &&
|
||||
$this->yellow->toolbox->modifyFile($fileName, $modified);
|
||||
}
|
||||
|
||||
// Copy static file
|
||||
function copyStaticFile($fileNameSource, $fileNameDest)
|
||||
{
|
||||
return $this->yellow->toolbox->copyFile($fileNameSource, $fileNameDest, true) &&
|
||||
$this->yellow->toolbox->modifyFile($fileNameDest, filemtime($fileNameSource));
|
||||
if($statusCode>=400) echo "ERROR building $fileType '$fileNameSource', ".$this->yellow->toolbox->getHttpStatusFormatted($statusCode)."\n";
|
||||
if(defined("DEBUG") && DEBUG>=1) echo "YellowCommandline::buildStaticFile status:$statusCode file:$fileNameSource\n";
|
||||
return $statusCode;
|
||||
}
|
||||
|
||||
// Return static location corresponding to content type
|
||||
|
@ -255,14 +242,16 @@ class YellowCommandline
|
|||
$fileName = $path.$location;
|
||||
if(!$this->yellow->toolbox->isFileLocation($location))
|
||||
{
|
||||
$fileName .= $this->yellow->config->get("commandBuildDefaultFile");
|
||||
$fileName .= $this->yellow->config->get("commandlineDefaultFile");
|
||||
}
|
||||
return $fileName;
|
||||
}
|
||||
|
||||
// Return static redirect data
|
||||
function getStaticRedirect($url)
|
||||
function getStaticRedirect($location)
|
||||
{
|
||||
$url = $this->yellow->toolbox->getHttpUrl($this->yellow->config->get("serverName"),
|
||||
$this->yellow->config->get("serverBase"), $location);
|
||||
$text = "<!DOCTYPE html><html>\n";
|
||||
$text .= "<head>\n";
|
||||
$text .= "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n";
|
||||
|
|
|
@ -5,9 +5,8 @@
|
|||
// Markdown extra core plugin
|
||||
class YellowMarkdownExtra
|
||||
{
|
||||
const Version = "0.2.7";
|
||||
const Version = "0.2.8";
|
||||
var $yellow; //access to API
|
||||
var $textHtml; //generated text (HTML format)
|
||||
|
||||
// Initialise plugin
|
||||
function onLoad($yellow)
|
||||
|
@ -19,7 +18,7 @@ class YellowMarkdownExtra
|
|||
function onParse($page, $text)
|
||||
{
|
||||
$markdown = new YellowMarkdownExtraParser($this->yellow);
|
||||
$this->textHtml = $markdown->transformPage($page, $text);
|
||||
return $markdown->transformPage($page, $text);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
// Yellow main class
|
||||
class Yellow
|
||||
{
|
||||
const Version = "0.2.7";
|
||||
const Version = "0.2.8";
|
||||
var $page; //current page data
|
||||
var $pages; //current page tree from file system
|
||||
var $config; //configuration
|
||||
|
@ -341,6 +341,7 @@ class YellowPage
|
|||
var $metaDataOffsetBytes; //meta data offset
|
||||
var $metaData; //meta data
|
||||
var $headerData; //response header
|
||||
var $parserData; //content data of page
|
||||
var $parser; //content parser
|
||||
var $active; //page is active location? (boolean)
|
||||
var $visible; //page is visible location? (boolean)
|
||||
|
@ -445,18 +446,18 @@ class YellowPage
|
|||
if(method_exists($plugin["obj"], "onParse"))
|
||||
{
|
||||
$this->parser = $plugin["obj"];
|
||||
$this->parser->onParse($this, $this->getContent(true));
|
||||
$this->parserData = $this->parser->onParse($this, $this->getContent(true));
|
||||
foreach($this->yellow->plugins->plugins as $key=>$value)
|
||||
{
|
||||
if(method_exists($value["obj"], "onParseContent"))
|
||||
{
|
||||
$output = $value["obj"]->onParseContent($this, $this->parser->textHtml);
|
||||
if(!is_null($output)) { $this->parser->textHtml = $output; break; }
|
||||
$output = $value["obj"]->onParseContent($this, $this->parserData);
|
||||
if(!is_null($output)) { $this->parserData = $output; break; }
|
||||
}
|
||||
}
|
||||
if(!$this->isExisting("description"))
|
||||
{
|
||||
$this->set("description", $this->yellow->toolbox->createTextDescription($this->parser->textHtml, 150));
|
||||
$this->set("description", $this->yellow->toolbox->createTextDescription($this->parserData, 150));
|
||||
}
|
||||
if(!$this->isExisting("keywords"))
|
||||
{
|
||||
|
@ -552,7 +553,7 @@ class YellowPage
|
|||
$text = substrb($this->rawData, $this->metaDataOffsetBytes);
|
||||
} else {
|
||||
$this->parseContent();
|
||||
$text = is_object($this->parser) ? $this->parser->textHtml : "";
|
||||
$text = $this->parserData;
|
||||
}
|
||||
return $text;
|
||||
}
|
||||
|
@ -914,24 +915,24 @@ class YellowPages
|
|||
$this->yellow->config->get("contentDir"), $this->yellow->config->get("contentHomeDir"), "", "");
|
||||
}
|
||||
$fileNames = array();
|
||||
foreach($this->yellow->toolbox->getDirectoryEntries($path, "/.*/", true) as $entry)
|
||||
foreach($this->yellow->toolbox->getDirectoryEntries($path, "/.*/") as $entry)
|
||||
{
|
||||
$fileDefault = $this->yellow->config->get("contentDefaultFile");
|
||||
if(!is_file($path.$entry."/".$fileDefault))
|
||||
if(!is_file($entry."/".$fileDefault))
|
||||
{
|
||||
$regex = "/^[\d\-\_\.]*".strreplaceu('-', '.', $fileDefault)."$/";
|
||||
foreach($this->yellow->toolbox->getDirectoryEntries($path.$entry, $regex, false, false) as $entry2)
|
||||
foreach($this->yellow->toolbox->getDirectoryEntries($entry, $regex, false, false, false) as $entry2)
|
||||
{
|
||||
if($this->yellow->toolbox->normaliseName($entry2) == $fileDefault) { $fileDefault = $entry2; break; }
|
||||
}
|
||||
}
|
||||
array_push($fileNames, $path.$entry."/".$fileDefault);
|
||||
array_push($fileNames, $entry."/".$fileDefault);
|
||||
}
|
||||
$fileDefault = $this->yellow->config->get("contentDefaultFile");
|
||||
$regex = "/.*\\".$this->yellow->config->get("contentExtension")."/";
|
||||
foreach($this->yellow->toolbox->getDirectoryEntries($path, $regex, true, false) as $entry)
|
||||
foreach($this->yellow->toolbox->getDirectoryEntries($path, $regex, true, false, false) as $entry)
|
||||
{
|
||||
$token = $this->yellow->toolbox->normaliseName($entry);
|
||||
if($token != $this->yellow->config->get("contentDefaultFile")) array_push($fileNames, $path.$entry);
|
||||
if($this->yellow->toolbox->normaliseName($entry) != $fileDefault) array_push($fileNames, $path.$entry);
|
||||
}
|
||||
foreach($fileNames as $fileName)
|
||||
{
|
||||
|
@ -1086,11 +1087,11 @@ class YellowText
|
|||
$regex = "/".basename($fileName)."/";
|
||||
foreach($this->yellow->toolbox->getDirectoryEntries($path, $regex, true, false) as $entry)
|
||||
{
|
||||
$fileData = @file("$path/$entry");
|
||||
$fileData = @file($entry);
|
||||
if($fileData)
|
||||
{
|
||||
if(defined("DEBUG") && DEBUG>=2) echo "YellowText::load file:$path/$entry<br/>\n";
|
||||
$this->modified = max($this->modified, filemtime("$path/$entry"));
|
||||
if(defined("DEBUG") && DEBUG>=2) echo "YellowText::load file:$entry<br/>\n";
|
||||
$this->modified = max($this->modified, filemtime($entry));
|
||||
$language = "";
|
||||
foreach($fileData as $line)
|
||||
{
|
||||
|
@ -1362,7 +1363,7 @@ class YellowToolbox
|
|||
$token = $tokens[$i];
|
||||
if($this->normaliseName($token) != $token) $invalid = true;
|
||||
$regex = "/^[\d\-\_\.]*".strreplaceu('-', '.', $token)."$/";
|
||||
foreach($this->getDirectoryEntries($path, $regex) as $entry)
|
||||
foreach($this->getDirectoryEntries($path, $regex, false, true, false) as $entry)
|
||||
{
|
||||
if($this->normaliseName($entry) == $token) { $token = $entry; break; }
|
||||
}
|
||||
|
@ -1373,7 +1374,7 @@ class YellowToolbox
|
|||
$token = rtrim($pathHome, '/');
|
||||
if($this->normaliseName($token) != $token) $invalid = true;
|
||||
$regex = "/^[\d\-\_\.]*".strreplaceu('-', '.', $token)."$/";
|
||||
foreach($this->getDirectoryEntries($path, $regex) as $entry)
|
||||
foreach($this->getDirectoryEntries($path, $regex, false, true, false) as $entry)
|
||||
{
|
||||
if($this->normaliseName($entry) == $token) { $token = $entry; break; }
|
||||
}
|
||||
|
@ -1383,7 +1384,7 @@ class YellowToolbox
|
|||
if(!empty($tokens[$i]) && $tokens[$i].$fileExtension==$fileDefault) $invalid = true;
|
||||
if($this->normaliseName($token) != $token) $invalid = true;
|
||||
$regex = "/^[\d\-\_\.]*".strreplaceu('-', '.', $token)."$/";
|
||||
foreach($this->getDirectoryEntries($path, $regex, false, false) as $entry)
|
||||
foreach($this->getDirectoryEntries($path, $regex, false, false, false) as $entry)
|
||||
{
|
||||
if($this->normaliseName($entry) == $token) { $token = $entry; break; }
|
||||
}
|
||||
|
@ -1469,12 +1470,13 @@ class YellowToolbox
|
|||
}
|
||||
|
||||
// Return files and directories
|
||||
function getDirectoryEntries($path, $regex = "/.*/", $sort = false, $directories = true)
|
||||
function getDirectoryEntries($path, $regex = "/.*/", $sort = true, $directories = true, $includePath = true)
|
||||
{
|
||||
$entries = array();
|
||||
$dirHandle = @opendir($path);
|
||||
if($dirHandle)
|
||||
{
|
||||
$path = rtrim($path, '/');
|
||||
while(($entry = readdir($dirHandle)) !== false)
|
||||
{
|
||||
if(substru($entry, 0, 1) == ".") continue;
|
||||
|
@ -1482,9 +1484,9 @@ class YellowToolbox
|
|||
{
|
||||
if($directories)
|
||||
{
|
||||
if(is_dir("$path/$entry")) array_push($entries, $entry);
|
||||
if(is_dir("$path/$entry")) array_push($entries, $includePath ? "$path/$entry" : $entry);
|
||||
} else {
|
||||
if(is_file("$path/$entry")) array_push($entries, $entry);
|
||||
if(is_file("$path/$entry")) array_push($entries, $includePath ? "$path/$entry" : $entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1495,16 +1497,15 @@ class YellowToolbox
|
|||
}
|
||||
|
||||
// Return files and directories recursively
|
||||
function getDirectoryEntriesRecursive($path, $regex = "/.*/", $sort = false, $directories = true, $levelMax = 0)
|
||||
function getDirectoryEntriesRecursive($path, $regex = "/.*/", $sort = true, $directories = true, $levelMax = 0)
|
||||
{
|
||||
$entries = array();
|
||||
foreach($this->getDirectoryEntries($path, $regex, $sort, $directories) as $entry) array_push($entries, "$path/$entry");
|
||||
--$levelMax;
|
||||
$entries = $this->getDirectoryEntries($path, $regex, $sort, $directories);
|
||||
if($levelMax != 0)
|
||||
{
|
||||
foreach($this->getDirectoryEntries($path, "/.*/", $sort, true) as $entry)
|
||||
{
|
||||
$entries = array_merge($entries, $this->getDirectoryEntriesRecursive("$path/$entry", $regex, $sort, $directories, $levelMax));
|
||||
$entries = array_merge($entries, $this->getDirectoryEntriesRecursive($entry, $regex, $sort, $directories, $levelMax));
|
||||
}
|
||||
}
|
||||
return $entries;
|
||||
|
@ -1711,9 +1712,9 @@ class YellowPlugins
|
|||
{
|
||||
global $yellow;
|
||||
$path = dirname(__FILE__);
|
||||
foreach($yellow->toolbox->getDirectoryEntries($path, "/core-.*\.php/", true, false) as $entry) require_once("$path/$entry");
|
||||
foreach($yellow->toolbox->getDirectoryEntries($path, "/core-.*\.php/", true, false) as $entry) require_once($entry);
|
||||
$path = $yellow->config->get("pluginDir");
|
||||
foreach($yellow->toolbox->getDirectoryEntries($path, "/.*\.php/", true, false) as $entry) require_once("$path/$entry");
|
||||
foreach($yellow->toolbox->getDirectoryEntries($path, "/.*\.php/", true, false) as $entry) require_once($entry);
|
||||
foreach($this->plugins as $key=>$value)
|
||||
{
|
||||
$this->plugins[$key]["obj"] = new $value["class"];
|
||||
|
|
Loading…
Add table
Reference in a new issue