added Sorting class to handle organizing tags and archives organizing for page rendering. added empty Render class for rendering

This commit is contained in:
Ro 2021-04-18 17:50:30 -07:00
parent 39809a60ec
commit c78772e2c0
8 changed files with 203 additions and 79 deletions

View file

@ -15,25 +15,32 @@ class SettingsAPI
case "publish": case "publish":
$view = Twig::fromRequest($request); $view = Twig::fromRequest($request);
$template = "dash/start.twig"; //$sortTags = Sorting::tags();
$pageOptions = [ //var_dump($sortTags);
"title" => "Welcome to Fucking Fipamo", $sortArchive = Sorting::archive();
"status" => false, var_dump($sortArchive);
];
$html = $view->fetch($template, $pageOptions); /*
$template = "dash/start.twig";
$pageOptions = [
"title" => "Welcome to Fucking Fipamo",
"status" => false,
];
$location = "../content/test.html"; $html = $view->fetch($template, $pageOptions);
if (!is_file($location)) {
file_put_contents($location, $html); $location = "../content/test.html";
} else { if (!is_file($location)) {
($new = fopen($location, "w")) or die("Unable to open file!"); file_put_contents($location, $html);
fwrite($new, $html); } else {
fclose($new); ($new = fopen($location, "w")) or die("Unable to open file!");
} fwrite($new, $html);
fclose($new);
}
*/
$result = [ $result = [
"message" => "Site published. GOOD EFFORT", "message" => "Items sorted. GOOD EFFORT",
"type" => "TASK_NONE", "type" => "TASK_NONE",
]; ];

View file

@ -1,74 +1,74 @@
<?php <?php
include "../brain/data/Settings.inc.php";
use function _\find; use function _\find;
use ReallySimpleJWT\Token; use ReallySimpleJWT\Token;
class Auth class Auth
{ {
public function __construct() public function __construct()
{ {
}
public static function sessionStatus()
{
if (isset($_SESSION["member"])) {
return true;
} else {
return false;
} }
//return $this->secret;
}
public static function status() public static function sessionStatus()
{ {
$result = ""; if (isset($_SESSION["member"])) {
if (Session::active()) { return true;
$result = true; } else {
} else { return false;
$result = false; }
//return $this->secret;
} }
return $result;
}
public static function login($who) public static function status()
{ {
//grab member list $result = "";
$folks = (new Settings())->getFolks(); if (Session::active()) {
$found = find($folks, ["handle" => $who["handle"]]); $result = true;
} else {
if ($found) { $result = false;
//name is found, verify password }
if (password_verify($who["password"], $found["password"])) { return $result;
$member = [
"handle" => $found["handle"],
"email" => $found["email"],
"role" => $found["role"],
"avatar" => $found["avi"],
];
$token = Token::create(
$found["id"],
$found["secret"],
time() + 3600,
"localhost"
); //expires in an hour
Session::start();
Session::set("member", $member);
Session::set("token", $token);
$result = "good_login";
} else {
$result = "bad_pass";
}
} else {
//if name is not found
$result = "no_name";
} }
return $result;
}
public static function logout() public static function login($who)
{ {
Session::kill(); //grab member list
} $folks = (new Settings())->getFolks();
$found = find($folks, ["handle" => $who["handle"]]);
if ($found) {
//name is found, verify password
if (password_verify($who["password"], $found["password"])) {
$member = [
"handle" => $found["handle"],
"email" => $found["email"],
"role" => $found["role"],
"avatar" => $found["avi"],
];
$token = Token::create(
$found["id"],
$found["secret"],
time() + 3600,
"localhost"
); //expires in an hour
Session::start();
Session::set("member", $member);
Session::set("token", $token);
$result = "good_login";
} else {
$result = "bad_pass";
}
} else {
//if name is not found
$result = "no_name";
}
return $result;
}
public static function logout()
{
Session::kill();
}
} }

View file

@ -253,6 +253,8 @@ class Book
"updated" => date("Y M D d", $meta["updated"]), "updated" => date("Y M D d", $meta["updated"]),
"rawCreated" => $meta["created"], "rawCreated" => $meta["created"],
"rawUpdated" => $meta["updated"], "rawUpdated" => $meta["updated"],
"createdYear" => date("Y", $meta["created"]),
"createdMonth" => date("m", $meta["created"]),
"deleted" => $meta["deleted"], "deleted" => $meta["deleted"],
"menu" => $meta["menu"], "menu" => $meta["menu"],
"featured" => $meta["featured"], "featured" => $meta["featured"],

View file

@ -0,0 +1,8 @@
<?php
class Render
{
public function __construct()
{
}
}

View file

@ -0,0 +1,83 @@
<?php
use function _\find;
use function _\filter;
class Sorting
{
private static $_tags = [];
private static $_archive = [];
public function __construct()
{
}
public static function tags()
{
$pages = (new Book("../content/pages"))->getContents();
foreach ($pages as $page) {
$temp = [];
$temp = explode(",", $page["tags"]);
foreach ($temp as $tag) {
$label = trim($tag);
if (!find(self::$_tags, ["tag_name" => $label])) {
array_push(self::$_tags, [
"tag_name" => $label,
"slug" => StringTools::safeString($label),
"count" => 1,
]);
} else {
$item = find(self::$_tags, ["tag_name" => $label]);
//echo "TAG: " . $item["tag_name"] . "\n";
$count = $item["count"];
self::$_tags[$label]["count"] = $count + 1;
}
}
}
return self::$_tags;
}
public static function archive()
{
$pages = (new Book("../content/pages"))->getContents();
$years = [];
$archive = [];
foreach ($pages as $page) {
$year = date("Y", date($page["rawCreated"]));
//echo $page["title"] . " : " . $year . "\n";
if (!find($years, ["year" => $year])) {
$findPages = filter($pages, ["createdYear" => $year]);
//var_dump($findPages);
array_push($years, ["year" => $year, "count" => count($findPages)]);
}
}
foreach ($years as $year) {
$sorted = [];
$filtered = filter($pages, ["createdYear" => $year["year"]]);
foreach ($filtered as $obj) {
$month = date("m", date($obj["rawCreated"]));
if (!find($sorted, ["month" => $month])) {
$perMonth = filter($pages, [
"createdYear" => $year["year"],
"createdMonth" => $month,
"deleted" => false,
"published" => true,
"layout" => "page",
]);
array_push($sorted, [
"month" => $month,
"full_month" => date("F", date($obj["rawCreated"])),
"count" => count($perMonth),
"pages" => $perMonth,
]);
}
}
array_push(self::$_archive, [
"year" => $year["year"],
"year_data" => $sorted,
]);
}
return self::$_archive;
}
}

View file

@ -23,6 +23,28 @@ class StringTools
); );
} }
public static function safeString($string)
{
return strtolower(
trim(
preg_replace(
"~[^0-9a-z]+~i",
"_",
html_entity_decode(
preg_replace(
"~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i",
'$1',
htmlentities($string, ENT_QUOTES, "UTF-8")
),
ENT_QUOTES,
"UTF-8"
)
),
"-"
)
);
}
public static function randomString(int $length) public static function randomString(int $length)
{ {
$alphanum = $alphanum =

View file

@ -17,7 +17,7 @@
{% set id = '' %} {% set id = '' %}
{% set uuid = '' %} {% set uuid = '' %}
{% set slug = '' %} {% set slug = '' %}
{% set layout = 'pages' %} {% set layout = 'page' %}
{% set feature = '' %} {% set feature = '' %}
{% set title = '' %} {% set title = '' %}
{% set tags = '' %} {% set tags = '' %}

View file

@ -8,12 +8,14 @@ use Slim\Views\Twig;
use Slim\Views\TwigMiddleware; use Slim\Views\TwigMiddleware;
include "../brain/controller/RouteControl.inc.php"; include "../brain/controller/RouteControl.inc.php";
include "../brain/data/Auth.inc.php"; include "../brain/data/Settings.inc.php";
include "../brain/utility/StringTools.inc.php";
include "../brain/data/Session.inc.php"; include "../brain/data/Session.inc.php";
include "../brain/data/Member.inc.php"; include "../brain/data/Member.inc.php";
include "../brain/data/Auth.inc.php";
include "../brain/utility/StringTools.inc.php";
include "../brain/utility/FileUploader.inc.php"; include "../brain/utility/FileUploader.inc.php";
include "../brain/utility/DocTools.inc.php"; include "../brain/utility/DocTools.inc.php";
include "../brain/utility/Sorting.inc.php";
$app = AppFactory::create(); $app = AppFactory::create();
$twig = Twig::create("../brain/views/"); $twig = Twig::create("../brain/views/");