Compare commits
2 commits
3116d650da
...
5d0c7d3a8f
Author | SHA1 | Date | |
---|---|---|---|
5d0c7d3a8f | |||
412652b9dc |
4 changed files with 22 additions and 1629 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1 +1 @@
|
||||||
/vendor/
|
/vendor/
|
||||||
|
|
|
@ -1,8 +1,20 @@
|
||||||
{
|
{
|
||||||
|
"name": "gzod01/gammaphp",
|
||||||
|
"description": "GammaPHP Website builder",
|
||||||
|
"type": "tool",
|
||||||
"require": {
|
"require": {
|
||||||
"mnapoli/front-yaml": "^2.0"
|
"mnapoli/front-yaml": "^2.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"license": "MIT",
|
||||||
"clue/phar-composer": "^1.4"
|
"autoload": {
|
||||||
}
|
"psr-4": {
|
||||||
|
"Gzod01\\Gammaphp\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "GZod01",
|
||||||
|
"email": "gzod01@gzod01.fr"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
1439
composer.lock
generated
1439
composer.lock
generated
File diff suppressed because it is too large
Load diff
192
gammaphp
192
gammaphp
|
@ -1,192 +0,0 @@
|
||||||
#!/usr/bin/env php
|
|
||||||
<?php
|
|
||||||
function get_opts() {
|
|
||||||
$opts = array();
|
|
||||||
foreach(is_string($_SERVER["argv"])?explode(" ",$_SERVER["argv"]):$_SERVER["argv"] as $k => $a){
|
|
||||||
if(preg_match( '@\-\-(.+)=(.+)@' , $a, $m))
|
|
||||||
$opts[$m[1]] = $m[2];
|
|
||||||
elseif(preg_match( '@\-\-(.+)@' , $a, $m))
|
|
||||||
$opts[$m[1]] = true;
|
|
||||||
elseif(preg_match( '@\-(.+)=(.+)@', $a, $m))
|
|
||||||
$opts[$m[1]] = $m[2];
|
|
||||||
elseif(preg_match( '@\-(.+)@' , $a, $m))
|
|
||||||
$opts[$m[1]] = true;
|
|
||||||
else
|
|
||||||
$opts[$k] = $a;
|
|
||||||
}
|
|
||||||
return $opts;
|
|
||||||
}
|
|
||||||
$opt = [];
|
|
||||||
$opt =get_opts();
|
|
||||||
$sitedir=$opt["source"]??($opt["s"]??getcwd());
|
|
||||||
$sitedir = str_starts_with($sitedir, "/")?$sitedir:getcwd()."/".$sitedir;
|
|
||||||
if (isset($argv[1])) {
|
|
||||||
switch ($argv[1]) {
|
|
||||||
case "new":
|
|
||||||
newsite();
|
|
||||||
break;
|
|
||||||
case "help":
|
|
||||||
help();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function newsite()
|
|
||||||
{
|
|
||||||
global $sitedir;
|
|
||||||
chdir($sitedir);
|
|
||||||
$template_url = "https://github.com/GZod01/template_gammaphp.git";
|
|
||||||
exec("git clone $template_url -o template_gammaphp");
|
|
||||||
exec("mv template_gammaphp/* ./");
|
|
||||||
exec("rm -f -r template_gammaphp");
|
|
||||||
$files = glob(str_replace(['[', ']', "\f[", "\f]"], ["\f[", "\f]", '[[]', '[]]'], ($sitedir)) . '*');
|
|
||||||
foreach ($files as $f) {
|
|
||||||
if (!is_dir($f . "/")) {
|
|
||||||
file_put_contents($f,str_replace("{{{{SITEPATH}}}}",$sitedir,file_get_contents($f)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
die(0);
|
|
||||||
}
|
|
||||||
function help()
|
|
||||||
{
|
|
||||||
global $sitedir;
|
|
||||||
echo $sitedir;
|
|
||||||
die();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$required_files_or_dir = [
|
|
||||||
"content", "config.gzodp", "templates",
|
|
||||||
];
|
|
||||||
$endmessage = "Aucun site trouvé, veuillez utiliser la commande gammaphp new pour créer un nouveau site ou réparer le site si vous êtes sur qu'un site est existant dans le dossier $sitedir.\n
|
|
||||||
Entrez gammaphp help pour des infos sur cette commande.";
|
|
||||||
foreach ($required_files_or_dir as $f) {
|
|
||||||
if (!file_exists($sitedir . "/" . $f)) {
|
|
||||||
echo ($endmessage);
|
|
||||||
die(255);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
die($sitedir);
|
|
||||||
include $sitedir . "/config.gzodp";
|
|
||||||
$reallybasepath = site("contentpath");
|
|
||||||
$publishpath = site("publishpath");
|
|
||||||
deleteDir($publishpath);
|
|
||||||
mkdir($publishpath);
|
|
||||||
createFiles($reallybasepath);
|
|
||||||
function deleteDir($dir)
|
|
||||||
{
|
|
||||||
$it = new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS);
|
|
||||||
$files = new RecursiveIteratorIterator($it,
|
|
||||||
RecursiveIteratorIterator::CHILD_FIRST);
|
|
||||||
foreach ($files as $file) {
|
|
||||||
if ($file->isDir()) {
|
|
||||||
rmdir($file->getRealPath());
|
|
||||||
} else {
|
|
||||||
unlink($file->getRealPath());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rmdir($dir);
|
|
||||||
}
|
|
||||||
function getYaml($filecontent)
|
|
||||||
{
|
|
||||||
$parser = new Mni\FrontYAML\Parser();
|
|
||||||
|
|
||||||
$document = $parser->parse($filecontent);
|
|
||||||
|
|
||||||
$yaml = $document->getYAML();
|
|
||||||
// Trouver la fin du Front Matter YAML
|
|
||||||
$endOfFrontMatter = (strlen($filecontent) > 4 and strpos($filecontent, "---", 4) !== false) ? (strpos($filecontent, '---', 4) + 3) : 0;
|
|
||||||
|
|
||||||
// Retirer le Front Matter YAML du contenu Markdown
|
|
||||||
$WithoutFrontMatter = substr($filecontent, $endOfFrontMatter);
|
|
||||||
|
|
||||||
// Supprimer les espaces vides et retours à la ligne supplémentaires au début du contenu
|
|
||||||
$WithoutFrontMatter = ltrim($WithoutFrontMatter);
|
|
||||||
return [$yaml, $WithoutFrontMatter];
|
|
||||||
}
|
|
||||||
function getFiles($dir)
|
|
||||||
{
|
|
||||||
return glob(str_replace(['[', ']', "\f[", "\f]"], ["\f[", "\f]", '[[]', '[]]'], ($dir)) . '*');
|
|
||||||
}
|
|
||||||
function stripPathStart($path)
|
|
||||||
{
|
|
||||||
global $reallybasepath;
|
|
||||||
if (strpos($path, $reallybasepath) === 0) {
|
|
||||||
return substr($path, strlen($reallybasepath));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function createPage($path)
|
|
||||||
{
|
|
||||||
global $publishpath;
|
|
||||||
$endpath = stripPathStart($path);
|
|
||||||
$filecontent = file_get_contents($path);
|
|
||||||
$getyaml = getYaml($filecontent);
|
|
||||||
$yaml = $getyaml[0];
|
|
||||||
$content = $getyaml[1];
|
|
||||||
if (isset($yaml["static"]) and $yaml["static"] === true) {
|
|
||||||
file_put_contents($publishpath . $endpath, $content);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$title = isset($yaml["title"]) ? $yaml["title"] : site("title");
|
|
||||||
$secur = isset($yaml["secur"]) ? $yaml["secur"] : false;
|
|
||||||
$templatepath = site("templatepath");
|
|
||||||
$head = file_get_contents($templatepath . "head.gzodp");
|
|
||||||
$formattedhead = str_replace("{{{title}}}", $title, $head);
|
|
||||||
$header = file_get_contents($templatepath . "header.gzodp");
|
|
||||||
$footer = file_get_contents($templatepath . "footer.gzodp");
|
|
||||||
$pagetemplate = file_get_contents($templatepath . "page.gzodp");
|
|
||||||
$sitedir = site('basedir');
|
|
||||||
$includesession = isset($yaml["custom_include_session"]) ? $yaml["custom_include_session"] : "include '$sitedir/public/auth_session.gzodp';";
|
|
||||||
$session = $secur === true ? $includesession : "";
|
|
||||||
$nssession = ($secur === false) ? "session_start();" : "";
|
|
||||||
$nssession = (isset($yaml["phpstatic"]) and $yaml["phpstatic"] == true) ? "" : $nssession;
|
|
||||||
$phpstart = str_replace(["#{{{session}}}", "#{{{notsecursession}}}"], [$session, $nssession], file_get_contents($templatepath . "phpstart.gzodp"));
|
|
||||||
$phpend = file_get_contents($templatepath . "phpend.gzodp");
|
|
||||||
$pageformatted = str_replace(["{{{head}}}", "{{{header}}}", "{{{footer}}}", "{{{content}}}", "{{{phpstart}}}", "{{{phpend}}}"], [$formattedhead, $header, $footer, $content, $phpstart, $phpend], $pagetemplate);
|
|
||||||
file_put_contents($publishpath . $endpath, $pageformatted);
|
|
||||||
if (isset($yaml["dobble"])) {
|
|
||||||
file_put_contents($publishpath . $yaml["dobble"], $content);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
function createFile($path)
|
|
||||||
{
|
|
||||||
global $publishpath;
|
|
||||||
$endpath = stripPathStart($path);
|
|
||||||
$pageformatted = file_get_contents($path);
|
|
||||||
file_put_contents($publishpath . $endpath, $pageformatted);
|
|
||||||
}
|
|
||||||
|
|
||||||
function createFiles($basepath, $staticmode = false)
|
|
||||||
{
|
|
||||||
global $publishpath;
|
|
||||||
$files = getFiles($basepath);
|
|
||||||
$sitemapstart = '<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
|
|
||||||
$sitemapend = '</urlset>';
|
|
||||||
$sitemap = "";
|
|
||||||
foreach ($files as $f) {
|
|
||||||
echo $f . "\n";
|
|
||||||
echo is_dir($f) ? "true" : "false";
|
|
||||||
echo "\n";
|
|
||||||
if (is_dir($f . "/")) {
|
|
||||||
mkdir($publishpath . stripPathStart($f));
|
|
||||||
createFiles($f . "/");
|
|
||||||
} else {
|
|
||||||
$sitemap .= "<url><loc>" . htmlspecialchars(site('baseurl')) . htmlspecialchars(stripPathStart($f)) . "</loc></url>";
|
|
||||||
$pathinfo = pathinfo($f);
|
|
||||||
$ext = $pathinfo["extension"];
|
|
||||||
if ($ext === "gzodp" and !$staticmode) {
|
|
||||||
createPage($f);
|
|
||||||
} else {
|
|
||||||
createFile($f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$finalsitemap = $sitemapstart . $sitemap . $sitemapend;
|
|
||||||
file_put_contents($publishpath . "sitemap.xml", $finalsitemap);
|
|
||||||
}
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue