From 619e221c61fe69b9ac0fab2fe3308d14fc69892a Mon Sep 17 00:00:00 2001 From: Krzysztof KrzysiekSiemv Smaga Date: Sun, 13 Oct 2024 19:11:55 +0200 Subject: [PATCH] Update --- _config.php | 12 ++-- be_panel.php | 2 +- blog_panel/be_post.php | 2 +- compile.php | 16 +++--- dev/index.html | 17 ++---- dev/post.html | 24 ++++++++ post.php | 38 ++++++++++++- public/index.html | 16 +++--- public/post.html | 31 ++++++++++ src/views/post.html | 23 ++++++++ .../Dashboard/Tabs/{home.php => _home.php} | 0 .../blog-engine/php/Dashboard/Tabs/posts.php | 2 +- .../php/Database/DatabaseController.php | 16 +++++- .../php/Database/Tables/default.json | 56 +++++++++++++++++++ vendor/blog-engine/php/Dictionary.php | 38 +++++++++---- .../php/Posts/Calls/PostManagement.php | 26 +++++++++ .../blog-engine/php/Posts/PostController.php | 55 ++++++++++++++++-- version | 2 +- 18 files changed, 317 insertions(+), 59 deletions(-) create mode 100644 dev/post.html create mode 100644 public/post.html create mode 100644 src/views/post.html rename vendor/blog-engine/php/Dashboard/Tabs/{home.php => _home.php} (100%) create mode 100644 vendor/blog-engine/php/Posts/Calls/PostManagement.php diff --git a/_config.php b/_config.php index 19eb962..814b09e 100644 --- a/_config.php +++ b/_config.php @@ -7,16 +7,16 @@ const BLOG_RAN = true; // Tytuł bloga - const BLOG_TITLE = "nowy blog"; + const BLOG_TITLE = "Nowy blog"; // Opis bloga - const BLOG_DESC = "o niczym"; + const BLOG_DESC = "Jest to nowy blog"; // Autor bloga/Nazwa wyświetlana dla głównego administratora bloga - const BLOG_AUTHOR = "Krzysiek Smaga"; + const BLOG_AUTHOR = "Krzysztof Smaga"; // Tagi bloga - const BLOG_TAGS = "asdf, sadf, wr"; + const BLOG_TAGS = "nowy, blog, zero"; // Domena bloga const BLOG_DOMAIN = "http://localhost"; @@ -38,7 +38,7 @@ const DB_PASS = ""; // Baza danych dla bloga - const DB_NAME = "blog_now"; + const DB_NAME = "blogengine"; /* * KONFIGURACJA NARZĘDZIA SERWEROWEGO @@ -81,4 +81,4 @@ const MAIL_PORT = ""; // Wymaga SSL'a - const MAIL_SSL = 0; \ No newline at end of file + const MAIL_SSL = 1; \ No newline at end of file diff --git a/be_panel.php b/be_panel.php index 5369a54..d41416f 100644 --- a/be_panel.php +++ b/be_panel.php @@ -11,7 +11,7 @@ if(!isset($_SESSION['uToken_BE'])) header("location: be_login.php"); - $site = ($_GET['s'] ?? "home"); + $site = ($_GET['s'] ?? "_home"); $elements = array(); $dashboard_tabs_dir = "vendor/blog-engine/php/Dashboard/Tabs"; diff --git a/blog_panel/be_post.php b/blog_panel/be_post.php index f2c9b12..1dd8c69 100644 --- a/blog_panel/be_post.php +++ b/blog_panel/be_post.php @@ -61,7 +61,7 @@ $postcon->CreatePost($_POST['title'], $_POST['content'], $_POST['name'], $_POST['tags'], $_POST['comments_status'], (isset($_POST['now_time']) ? true : $_POST['add_time']), "public"); if(isset($_POST['draft'])) - $postcon->DraftPost($_POST['draft'], $_POST['title'], $_POST['content'], $_POST['name'], $_POST['tags'], $_POST['comments_status']); + $postcon->DraftPost($_POST['draft'], $_POST['title'], $_POST['content'], $_POST['name'], $_POST['tags'], $_POST['comments_status'], (isset($_POST['now_time']) ? true : $_POST['add_time'])); if(isset($_POST['delete'])) $postcon->DeletePost($_POST['delete']); diff --git a/compile.php b/compile.php index ad5ba97..c193c50 100644 --- a/compile.php +++ b/compile.php @@ -99,18 +99,18 @@ if(pathinfo($file, PATHINFO_EXTENSION) == "html") { $name = basename($file); $site = file_get_contents($file); - foreach (array_keys($this->dictionary->page_tags) as $page_tag) { + foreach (array_keys($this->dictionary->PageTags()) as $page_tag) { if ($page_tag == "{CSS}") { for ($j = 2; $j < count($this->csss); $j++) - $this->dictionary->page_tags[$page_tag] .= "\n "; + $this->dictionary->PageTags()[$page_tag] .= "\n "; } if ($page_tag == "{JS}") { for ($j = 2; $j < count($this->jss); $j++) - $this->dictionary->page_tags[$page_tag] .= "\n "; + $this->dictionary->PageTags()[$page_tag] .= "\n "; } - $site = str_replace($page_tag, $this->dictionary->page_tags[$page_tag], $site); + $site = str_replace($page_tag, $this->dictionary->PageTags()[$page_tag], $site); } $site = str_replace("", "\n", $site); @@ -174,21 +174,21 @@ switch($type){ case "dev": foreach ($json["dev"]["css"] as $css){ - $this->dictionary->page_tags["{CSS}"] .= "\n "; + $this->dictionary->PageTags()["{CSS}"] .= "\n "; echo "* Dodano '$css' do styli w '$type'!\n"; } foreach ($json["dev"]["js"] as $js){ - $this->dictionary->page_tags["{JS}"] .= "\n "; + $this->dictionary->PageTags()["{JS}"] .= "\n "; echo "* Dodano '$js' do skryptów w '$type'!\n"; } break; case "pub": foreach ($json["pub"]["css"] as $css){ - $this->dictionary->page_tags["{CSS}"] .= "\n "; + $this->dictionary->PageTags()["{CSS}"] .= "\n "; echo "* Dodano '$css' do styli w '$type'!\n"; } foreach ($json["pub"]["js"] as $js){ - $this->dictionary->page_tags["{JS}"] .= "\n "; + $this->dictionary->PageTags()["{JS}"] .= "\n "; echo "* Dodano '$js' do skryptów w '$type'!\n"; } break; diff --git a/dev/index.html b/dev/index.html index 5b11893..1539af3 100644 --- a/dev/index.html +++ b/dev/index.html @@ -2,23 +2,18 @@ - Witaj świecie! - Kwiatowy Blog + Witaj świecie! - Nowy blog - - - - + + - -

Kwiatowy Blog

-

dsfsadf

+ +

Nowy blog

+

Jest to nowy blog

Zaloguj się do panelu - - - \ No newline at end of file diff --git a/dev/post.html b/dev/post.html new file mode 100644 index 0000000..7e4acba --- /dev/null +++ b/dev/post.html @@ -0,0 +1,24 @@ + + + + + + {POST_TITLE} - Nowy blog + + + + + + + + +

Nowy blog

+

Jest to nowy blog

+ +

{POST_TITLE}

+
Dodano {POST_ADDED} przez {POST_AUTHOR}
+

{POST_CONTENT}

+

{POST_VIEWS}

+ + + \ No newline at end of file diff --git a/post.php b/post.php index 80e35b1..798a606 100644 --- a/post.php +++ b/post.php @@ -3,10 +3,42 @@ require "vendor/blog-engine/php/Authentication/AuthController.php"; require "vendor/blog-engine/php/Posts/PostController.php"; - use BlogEngine\Posts\PostController; use BlogEngine\Authentication\AuthController; - + use BlogEngine\Posts\PostController; + session_start(); $auth = new AuthController(); - $conn = $auth->Connection(); \ No newline at end of file + $site = ""; + + if(file_exists("_config.php")){ + $topbar = ""; + if($_SERVER['SERVER_PORT'] == DEV_PORT) { + if(isset($_SESSION['uToken_BE'])){ + if($auth->CheckRole($_SESSION['uToken_BE']) == "administrator") + require "vendor/blog-engine/php/Sites/Views/be-topbar.php"; + } + $site = file_get_contents("dev/post.html"); + } else if($_SERVER['SERVER_PORT'] == PUB_PORT) { + if(isset($_SESSION['uToken_BE'])){ + if($auth->CheckRole($_SESSION['uToken_BE']) == "administrator") + require "vendor/blog-engine/php/Sites/Views/be-topbar.php"; + } + $site = file_get_contents("public/post.html"); + } else + echo "

Uruchom ponownie serwer

"; + } else + require "be_firstrun.php"; + + if(isset($_GET['id'])){ + $post = new PostController($auth); + $data = $post->DownloadSinglePost($_GET['id']); + + + + echo $post->ConvertToSite($data, $site); + print_r($data); + } else { + header("location: index.php?no_post"); + } +?> \ No newline at end of file diff --git a/public/index.html b/public/index.html index 861953b..953f207 100644 --- a/public/index.html +++ b/public/index.html @@ -2,23 +2,23 @@ - Witaj świecie! - Kwiatowy Blog + Witaj świecie! - Nowy blog - + - - + + - -

Kwiatowy Blog

-

dsfsadf

+ +

Nowy blog

+

Jest to nowy blog

Zaloguj się do panelu - + \ No newline at end of file diff --git a/public/post.html b/public/post.html new file mode 100644 index 0000000..9da4f45 --- /dev/null +++ b/public/post.html @@ -0,0 +1,31 @@ + + + + + + {POST_TITLE} - Nowy blog + + + + + + + + + + + +

Nowy blog

+

Jest to nowy blog

+ +

{POST_TITLE}

+
{POST_INFORMATION}
+

{POST_CONTENT}

+

{POST_VIEWS}

+ + + + + + + \ No newline at end of file diff --git a/src/views/post.html b/src/views/post.html new file mode 100644 index 0000000..973f06e --- /dev/null +++ b/src/views/post.html @@ -0,0 +1,23 @@ + + + + + + {POST_TITLE} - {TITLE} + {CSS} + {FAVICON} + + + + + +

{TITLE}

+

{DESCRIPTION}

+ +

{POST_TITLE}

+
Dodano {POST_ADDED} przez {POST_AUTHOR}
+

{POST_CONTENT}

+

{POST_VIEWS}

+ +{JS} + \ No newline at end of file diff --git a/vendor/blog-engine/php/Dashboard/Tabs/home.php b/vendor/blog-engine/php/Dashboard/Tabs/_home.php similarity index 100% rename from vendor/blog-engine/php/Dashboard/Tabs/home.php rename to vendor/blog-engine/php/Dashboard/Tabs/_home.php diff --git a/vendor/blog-engine/php/Dashboard/Tabs/posts.php b/vendor/blog-engine/php/Dashboard/Tabs/posts.php index 3cd1cc8..00510ad 100644 --- a/vendor/blog-engine/php/Dashboard/Tabs/posts.php +++ b/vendor/blog-engine/php/Dashboard/Tabs/posts.php @@ -51,7 +51,7 @@
-
+
diff --git a/vendor/blog-engine/php/Database/DatabaseController.php b/vendor/blog-engine/php/Database/DatabaseController.php index 389ae26..e8620fb 100644 --- a/vendor/blog-engine/php/Database/DatabaseController.php +++ b/vendor/blog-engine/php/Database/DatabaseController.php @@ -18,10 +18,15 @@ namespace BlogEngine\Database { public function Close($conn) { mysqli_close($conn); } - function Insert($into, $values){ + function Insert($into, $values) : bool{ $conn = $this->Connection(); - mysqli_query($conn, "INSERT INTO {$into} VALUES({$values})"); - $this->Close($conn); + if(mysqli_query($conn, "INSERT INTO {$into} VALUES({$values})")){ + $this->Close($conn); + return true; + } else { + $this->Close($conn); + return false; + } } function CreateTable($name, $columns){ @@ -194,5 +199,10 @@ namespace BlogEngine\Database { error_log("Nie ma dostępnego folderu \"Tables\". Zatrzymywanie tworzenia bazy!"); } } + + function Log($content, $log_level = 'Information', $id_user = null){ + $ip_address = file_get_contents("https://api.ipify.org"); + $this->Insert("logs(ip_address, content, log_level, created_by)", "'$ip_address', '$content', '$log_level', $id_user"); + } } } \ No newline at end of file diff --git a/vendor/blog-engine/php/Database/Tables/default.json b/vendor/blog-engine/php/Database/Tables/default.json index 84c9018..f8508ed 100644 --- a/vendor/blog-engine/php/Database/Tables/default.json +++ b/vendor/blog-engine/php/Database/Tables/default.json @@ -419,5 +419,61 @@ "is_string": false } } + ], + "logs": [ + { + "column_name": "id_log", + "datatype": "INT", + "primary_key": true, + "auto_increment": true, + "not_null": true + }, + { + "column_name": "ip_address", + "datatype": "VARCHAR", + "length": 15, + "not_null": true, + "default": { + "value": "127.0.0.1", + "is_string": true + } + }, + { + "column_name": "content", + "datatype": "TEXT", + "not_null": true, + "default": { + "value": "Some unknown error", + "is_string": true + } + }, + { + "column_name": "log_level", + "datatype": "ENUM", + "enum_data": ["Debug", "Information", "Warning", "Error", "Critical"], + "not_null": true, + "default": { + "value": "Warning", + "is_string": true + } + }, + { + "column_name": "created_at", + "datatype": "DATETIME", + "not_null": true, + "default": { + "value": "NOW()", + "is_string": false + } + }, + { + "column_name": "created_by", + "datatype": "INT", + "not_null": false, + "foreign_key": { + "references": "users", + "column": "id_user" + } + } ] } \ No newline at end of file diff --git a/vendor/blog-engine/php/Dictionary.php b/vendor/blog-engine/php/Dictionary.php index 7371aa5..e2bd8cc 100644 --- a/vendor/blog-engine/php/Dictionary.php +++ b/vendor/blog-engine/php/Dictionary.php @@ -1,17 +1,31 @@ "", - "{LINKS}" => "", - "{FAVICON}" => (BLOG_ICON != ""?"":""), - "{KEYWORDS}" => BLOG_TAGS, - "{TITLE}" => BLOG_TITLE, - "{AUTHOR}" => BLOG_AUTHOR, - "{DESCRIPTION}" => BLOG_DESC, - "{JS}" => "", - "{CSS}" => "" - ]; + public function PageTags() : array { + return [ + "{POSTS}" => "", + "{LINKS}" => "", + "{FAVICON}" => (BLOG_ICON != ""?"":""), + "{KEYWORDS}" => BLOG_TAGS, + "{TITLE}" => BLOG_TITLE, + "{AUTHOR}" => BLOG_AUTHOR, + "{DESCRIPTION}" => BLOG_DESC, + "{JS}" => "", + "{CSS}" => "" + ]; + } + + public function BlogTags() : array { + return [ + "{POST_TITLE}" => "title", + "{POST_AUTHOR}" => "author", + "{POST_CONTENT}" => "content", + "{POST_ADDED}" => "added_at", + "{POST_VIEWS}" => "views" + ]; + } } } diff --git a/vendor/blog-engine/php/Posts/Calls/PostManagement.php b/vendor/blog-engine/php/Posts/Calls/PostManagement.php new file mode 100644 index 0000000..51836d0 --- /dev/null +++ b/vendor/blog-engine/php/Posts/Calls/PostManagement.php @@ -0,0 +1,26 @@ +Connection(); + + $postcon = new PostController($auth); + + if(isset($_POST['see'])){ + header("location: /post.php?id={$_POST['see']}"); + } + + if(isset($_POST['delete'])){ + if($postcon->DeletePost($_POST['delete'])){ + header("location: /be_panel.php?s=posts"); + $auth->Log("Usunięto post o ID: {$_POST['delete']}", "Information", $auth->GetID($_SESSION['uToken_BE'])); + } else + $auth->Log("Nie udało się usunąć posta o ID: {$_POST['delete']}.", "Error", $auth->GetID($_SESSION['uToken_BE'])); + } \ No newline at end of file diff --git a/vendor/blog-engine/php/Posts/PostController.php b/vendor/blog-engine/php/Posts/PostController.php index 81d9591..eab1a17 100644 --- a/vendor/blog-engine/php/Posts/PostController.php +++ b/vendor/blog-engine/php/Posts/PostController.php @@ -29,7 +29,7 @@ namespace BlogEngine\Posts { header("location: ../../../be_panel.php?s=posts"); } - public function DraftPost($id = 0, $title = '', $content = '', $name = '', $tags = [], $commentStatus = ''){ + public function DraftPost($id = 0, $title = '', $content = '', $name = '', $tags = [], $commentStatus = '', $add_time = true){ $srv = $this->auth->Connection(); $date = (is_bool($add_time)?"NOW":Date("'Y-m-d H:i:s'", strtotime($add_time))); @@ -38,7 +38,7 @@ namespace BlogEngine\Posts { if($id == 0){ $id = mysqli_fetch_row(mysqli_query($srv, "SELECT MAX(id_post) FROM posts;"))[0] + 1; - $insert_post = "INSERT INTO posts VALUES($last_id_post, $id_user, '$name', '$title', '$content', 'draft', '$commentStatus', 0, $date, null);"; + $insert_post = "INSERT INTO posts VALUES($id, $id_user, '$name', '$title', '$content', 'draft', '$commentStatus', 0, NOW(), null);"; mysqli_query($srv, $insert_post); foreach ($tags as $tag){ @@ -104,7 +104,7 @@ namespace BlogEngine\Posts { return $response; } - public function DownloadPost($year, $month, $date, $name) : array { + public function DownloadPost($year, $month, $day, $name) : array { $srv = $this->auth->Connection(); $post = array(); @@ -133,7 +133,54 @@ namespace BlogEngine\Posts { } } - return post; + return $post; + } + + public function DownloadSinglePost($id) { + $srv = $this->auth->Connection(); + $post = []; + + $get_post = "SELECT users.display_name AS autor, posts.title AS tytul, posts.content AS tresc, posts.views AS wyswietlenia, posts.added_at AS dodano, (SELECT GROUP_CONCAT(CONCAT(comments.author, ';;', comments.content, ';;', comments.added_at)) FROM comments WHERE comments.id_post = posts.id_post GROUP BY comments.id_comment) AS komentarze FROM posts, users WHERE users.id_user = posts.id_user AND id_post ={$id};"; + $res_post = mysqli_query($srv, $get_post); + + if($row = mysqli_fetch_row($res_post)){ + $post = [ + "author" => $row[0], + "title" => $row[1], + "content" => $row[2], + "views" => $row[3], + "added_at" => $row[4], + "comments" => array() + ]; + + if($row[5] != ""){ + $comments = mb_split("||||", $row[5]); + + foreach($comments as $comment){ + $data = mb_split(";;", $comment); + array_push($post[0]["Komentarze"], [ + "Autor" => $data[0], + "Tresc" => $data[1], + "Dodano" => $data[2] + ]); + } + } + } + + $this->auth->Close($srv); + return $post; + } + + public function ConvertToSite($data, $site) : string{ + require "vendor/blog-engine/php/Dictionary.php"; + $dictionary = new \BlogEngine\Dictionary; + + foreach(array_keys($dictionary->BlogTags()) as $tag){ + $site = str_replace($tag, $data[$dictionary->BlogTags()[$tag]], $site); + } + + return $site; } } + } \ No newline at end of file diff --git a/version b/version index 4fe5631..be9fc83 100644 --- a/version +++ b/version @@ -1 +1 @@ -3.2 \ No newline at end of file +4.6 \ No newline at end of file