From 7393e4572ce70cff2831d35044a6968f0549b47e Mon Sep 17 00:00:00 2001 From: Are0h Date: Fri, 25 Mar 2022 15:01:07 -0700 Subject: [PATCH 1/2] readme tweak --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b763f2b..89aadd7 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # Fipamo means to save -The Fipamo project was born from a need for a simple, easy to use no data blog platform that doesn't require much effort to set up and maintain. Fipamo uses Markdown to handle posts and renders them to flat html so you can serve them from anywhere. No complicated set ups. No long list of dependencies. Just write and publish. +The Fipamo project was born from a need for a simple, easy to use no data blog platform that doesn't require much effort to set up and maintain. Fipamo uses Markdown to handle posts and renders them to flat html so you can serve them from anywhere. No complicated set ups. No long list of dependencies. Just set up and go. Because nobody has time for all that. From 2e30d6eb2693b66ac9c98ff0d5c51fd9885aa7a5 Mon Sep 17 00:00:00 2001 From: Are0h Date: Thu, 14 Apr 2022 14:46:17 -0700 Subject: [PATCH 2/2] fix for open graph image render, minor tweaks to class importing --- brain/api/v1/MailerAPI.php | 9 +- brain/init/App.php | 16 ++- brain/utility/Sorting.php | 248 +++++++++++++++++++------------------ composer.json | 8 +- public/index.php | 4 +- 5 files changed, 147 insertions(+), 138 deletions(-) diff --git a/brain/api/v1/MailerAPI.php b/brain/api/v1/MailerAPI.php index 5eb4c36..c81dfba 100644 --- a/brain/api/v1/MailerAPI.php +++ b/brain/api/v1/MailerAPI.php @@ -13,14 +13,15 @@ class MailerAPI public static function handleMail($request, $body, $response) { - //if testing, verify session is active - if ($body["mail_task"] == "TESTING") { + // if testing, verify session is active + // add clean method for sending programmtic emails + if ($body['mail_task'] == 'TESTING') { if (Session::active()) { $result = Mailer::sendmail($body); } else { $result = [ - "message" => "You need to be logged in for this, champ.", - "type" => "MAILER_ERROR", + 'message' => 'You need to be logged in for this, champ.', + 'type' => 'MAILER_ERROR', ]; } } else { diff --git a/brain/init/App.php b/brain/init/App.php index 7c8cb5e..f3fbc03 100644 --- a/brain/init/App.php +++ b/brain/init/App.php @@ -2,13 +2,11 @@ namespace brain\init; -use Psr\Http\Message\ResponseInterface as Response; -use Psr\Http\Message\ServerRequestInterface as Request; +use brain\utility\HandleCors; use Slim\Factory\AppFactory; use Slim\Views\Twig; -use Slim\Views\TwigMiddleware; // Fipamo Core Classes -use brain\utility\HandleCors; +use Slim\Views\TwigMiddleware; class App { @@ -18,18 +16,18 @@ class App // set up cors new HandleCors(); $app = AppFactory::create(); - $twig = Twig::create("../brain/views/"); + $twig = Twig::create('../brain/views/'); $app->add(TwigMiddleware::create($app, $twig)); - //set up routing + // set up routing $app->get( - "/[{first}[/{second}[/{third}[/{fourth}[/{fifth}]]]]]", + '/[{first}[/{second}[/{third}[/{fourth}[/{fifth}]]]]]', "brain\controller\RouteControl:get" ); $app->post( - "/[{first}[/{second}[/{third}[/{fourth}]]]]", + '/[{first}[/{second}[/{third}[/{fourth}]]]]', "brain\controller\RouteControl:post" ); - //start the app + // start the app $app->run(); } diff --git a/brain/utility/Sorting.php b/brain/utility/Sorting.php index 15f2800..23d96c4 100644 --- a/brain/utility/Sorting.php +++ b/brain/utility/Sorting.php @@ -2,34 +2,34 @@ namespace brain\utility; -use Mni\FrontYAML\Parser; +use function _\filter; +use function _\find; use brain\data\Book; use brain\data\Settings; - -use function _\find; -use function _\filter; +use Mni\FrontYAML\Parser; class Sorting { private static $_tags = []; private static $_archive = []; + public function __construct() { } public static function tags() { - $pages = (new Book("../content/pages"))->getContents(); + $pages = (new Book('../content/pages'))->getContents(); foreach ($pages as $page) { $temp = []; - $temp = explode(",", $page["tags"]); + $temp = explode(',', $page['tags']); foreach ($temp as $tag) { $label = trim($tag); - if (!find(self::$_tags, ["tag_name" => $label])) { + if (!find(self::$_tags, ['tag_name' => $label])) { array_push(self::$_tags, [ - "tag_name" => $label, - "slug" => StringTools::safeString($label), - "pages" => self::tagPages($label, $pages), + 'tag_name' => $label, + 'slug' => StringTools::safeString($label), + 'pages' => self::tagPages($label, $pages), ]); } } @@ -42,12 +42,12 @@ class Sorting { $tagged = []; foreach ($pages as $page) { - if (strpos($page["tags"], $tag) !== false) { + if (strpos($page['tags'], $tag) !== false) { array_push($tagged, [ - "title" => $page["title"], - "slug" => $page["slug"], - "path" => $page["path"], - "feature" => $page["feature"], + 'title' => $page['title'], + 'slug' => $page['slug'], + 'path' => $page['path'], + 'feature' => $page['feature'], ]); } } @@ -57,48 +57,49 @@ class Sorting public static function archive() { - $pages = (new Book("../content/pages"))->getContents(); + $pages = (new Book('../content/pages'))->getContents(); $years = []; $archive = []; foreach ($pages as $page) { - //$year = date("Y", date($page["rawCreated"])); - $date = explode("/", $page["path"]); - //echo $page["title"] . " : " . $year . "\n"; - if (!find($years, ["year" => trim($date[0])])) { - $findPages = filter($pages, ["createdYear" => trim($date[0])]); - //var_dump($findPages); + // $year = date("Y", date($page["rawCreated"])); + $date = explode('/', $page['path']); + // echo $page["title"] . " : " . $year . "\n"; + if (!find($years, ['year' => trim($date[0])])) { + $findPages = filter($pages, ['createdYear' => trim($date[0])]); + // var_dump($findPages); array_push($years, [ - "year" => trim($date[0]), - "count" => count($findPages), + 'year' => trim($date[0]), + 'count' => count($findPages), ]); } } foreach ($years as $year) { $sorted = []; - $filtered = filter($pages, ["createdYear" => $year["year"]]); + $filtered = filter($pages, ['createdYear' => $year['year']]); foreach ($filtered as $obj) { - $month = date("m", date($obj["rawCreated"])); - if (!find($sorted, ["month" => $month])) { + $month = date('m', date($obj['rawCreated'])); + if (!find($sorted, ['month' => $month])) { $perMonth = filter($pages, [ - "path" => $year["year"] . "/" . $month, - "deleted" => false, - "published" => true, - "layout" => "page", + 'path' => $year['year'].'/'.$month, + 'deleted' => false, + 'published' => true, + 'layout' => 'page', ]); array_push($sorted, [ - "month" => $month, - "full_month" => date("F", date($obj["rawCreated"])), - "count" => count($perMonth), - "pages" => $perMonth, + 'month' => $month, + 'full_month' => date('F', date($obj['rawCreated'])), + 'count' => count($perMonth), + 'pages' => $perMonth, ]); } } array_push(self::$_archive, [ - "year" => $year["year"], - "year_data" => $sorted, + 'year' => $year['year'], + 'year_data' => $sorted, ]); } + return self::$_archive; } @@ -109,78 +110,86 @@ class Sorting $pageOption = []; $pageInfo = [ - "keywords" => isset($settings["global"]["keywords"]) - ? $settings["global"]["keywords"] - : "fipamo, blog, jamstack, php, markdown, js", - "description" => $settings["global"]["descriptions"], - "image" => - $settings["global"]["base_url"] . $settings["global"]["background"], - "baseURL" => $settings["global"]["base_url"], + 'keywords' => isset($settings['global']['keywords']) + ? $settings['global']['keywords'] + : 'fipamo, blog, jamstack, php, markdown, js', + 'description' => $settings['global']['descriptions'], + 'image' => $settings['global']['base_url'].$settings['global']['background'], + 'baseURL' => $settings['global']['base_url'], ]; - $taglist = explode(",", $page["tags"]); + $taglist = explode(',', $page['tags']); $tags = []; foreach ($taglist as $tag) { $label = trim($tag); array_push($tags, [ - "label" => $label . " ", - "slug" => StringTools::safeString($label), + 'label' => $label.' ', + 'slug' => StringTools::safeString($label), ]); } $meta = [ - "who" => $page["author"], - "when" => $page["created"], - "tags" => $tags, + 'who' => $page['author'], + 'when' => $page['created'], + 'tags' => $tags, ]; - //render markdown content and clean it + // render markdown content and clean it $parser = new Parser(); - $rendered = $parser->parse($page["content"]); + $rendered = $parser->parse($page['content']); $sanitizer = \HtmlSanitizer\Sanitizer::create([ - "extensions" => ["basic", "image", "list", "code"], - "tags" => [ - "img" => [ - "allowed_attributes" => ["src", "alt", "title", "class"], - "allowed_hosts" => null, + 'extensions' => ['basic', 'image', 'list', 'code'], + 'tags' => [ + 'img' => [ + 'allowed_attributes' => ['src', 'alt', 'title', 'class'], + 'allowed_hosts' => null, ], ], ]); $preclean = $sanitizer->sanitize($rendered->getContent()); - //just clean renderd string for now, Sanitize doesn't like relative img urls - //so another option is needed + // just clean renderd string for now, Sanitize doesn't like relative img urls + // so another option is needed $cleaned = strip_tags($rendered->getContent(), [ - "a", - "br", - "p", - "strong", - "br", - "img", - "iframe", - "ul", - "li", - "i", - "em", - "h1", - "h2", - "h3", - "pre", - "code", + 'a', + 'br', + 'p', + 'strong', + 'br', + 'img', + 'iframe', + 'ul', + 'li', + 'i', + 'em', + 'h1', + 'h2', + 'h3', + 'pre', + 'code', ]); - //$cleaned = preg_replace('/(?:\r\n|[\r\n]){2,}/', "\n\n", $cleaned); - //$cleaned = html_entity_decode($cleaned, ENT_QUOTES, "UTF-8"); - //if page feature isn't empty, replace page info meta image - if ($page["feature"] != "" || $page["feature"] != null) { - $pageInfo["image"] = $pageInfo["baseURL"] . $page["feature"]; + // if page feature isn't empty, find image from list and set it as background image + // if it is empty, just use global background + if ($page['feature'] != '' || $page['feature'] != null) { + $media = explode(',', $page['feature']); + $set = false; + foreach ($media as $file) { + $item = trim($file); + $ext = pathinfo($item, PATHINFO_EXTENSION); + + if ($ext != 'mp4' && !$set) { + $pageInfo['image'] = $pageInfo['baseURL'].$item; + $set = true; + } + } } - if ($page["layout"] == "index") { - //$template = $this->theme . "/index.twig"; - //$location = "../public/index.html"; - //$dir = null; + if ($page['layout'] == 'index') { + // $template = $this->theme . "/index.twig"; + // $location = "../public/index.html"; + // $dir = null; $recent = []; $featured = []; @@ -188,26 +197,26 @@ class Sorting $pages = (new Book())->getContents(); foreach ($pages as $item) { if ( - !$item["deleted"] && - $item["published"] && - $item["menu"] != "true" + !$item['deleted'] && + $item['published'] && + $item['menu'] != 'true' ) { if (count($recent) < $limit) { array_push($recent, [ - "path" => $item["path"], - "slug" => $item["slug"], - "title" => $item["title"], - "feature" => $item["feature"], + 'path' => $item['path'], + 'slug' => $item['slug'], + 'title' => $item['title'], + 'feature' => $item['feature'], ]); } - if ($item["featured"] == true) { + if ($item['featured'] == true) { if (count($featured) < $limit) { array_push($featured, [ - "path" => $item["path"], - "slug" => $item["slug"], - "title" => $item["title"], - "feature" => $item["feature"], + 'path' => $item['path'], + 'slug' => $item['slug'], + 'title' => $item['title'], + 'feature' => $item['feature'], ]); } } @@ -215,34 +224,35 @@ class Sorting } $pageOptions = [ - "title" => $page["title"], - "background" => $page["feature"], - "content" => $page["html"], //$cleaned, - "meta" => $meta, - "recent" => $recent, - "featured" => $featured, - "info" => $pageInfo, - "menu" => $settings["menu"], - "dynamicRender" => $settings["global"]["dynamicRender"], - "media" => $page["media"], - "files" => $page["docs"], + 'title' => $page['title'], + 'background' => $page['feature'], + 'content' => $page['html'], // $cleaned, + 'meta' => $meta, + 'recent' => $recent, + 'featured' => $featured, + 'info' => $pageInfo, + 'menu' => $settings['menu'], + 'dynamicRender' => $settings['global']['dynamicRender'], + 'media' => $page['media'], + 'files' => $page['docs'], ]; } else { - //$template = $this->theme . "/page.twig"; - //$location = "../public/" . $page["path"] . "/" . $page["slug"] . ".html"; - //$dir = "../public/" . $page["path"]; + // $template = $this->theme . "/page.twig"; + // $location = "../public/" . $page["path"] . "/" . $page["slug"] . ".html"; + // $dir = "../public/" . $page["path"]; $pageOptions = [ - "title" => $page["title"], - "background" => $page["feature"], - "content" => $page["html"], //$cleaned, - "meta" => $meta, - "info" => $pageInfo, - "menu" => $settings["menu"], - "dynamicRender" => $settings["global"]["dynamicRender"], - "media" => $page["media"], - "files" => $page["docs"], + 'title' => $page['title'], + 'background' => $page['feature'], + 'content' => $page['html'], // $cleaned, + 'meta' => $meta, + 'info' => $pageInfo, + 'menu' => $settings['menu'], + 'dynamicRender' => $settings['global']['dynamicRender'], + 'media' => $page['media'], + 'files' => $page['docs'], ]; } + return $pageOptions; } } diff --git a/composer.json b/composer.json index 1881c97..25180ec 100644 --- a/composer.json +++ b/composer.json @@ -10,9 +10,9 @@ } ], "autoload": { - "psr-4": { - "brain\\":"brain" - } + "psr-4": { + "brain\\": "brain" + } }, "support": { "source": "https://code.playvicio.us/Are0h/Fipamo", @@ -34,4 +34,4 @@ "symfony/yaml": "^5.4", "olegatro/html-sanitizer-relative": "^1.0" } -} +} \ No newline at end of file diff --git a/public/index.php b/public/index.php index c13bb9f..d9890a1 100644 --- a/public/index.php +++ b/public/index.php @@ -1,7 +1,7 @@