This commit is contained in:
Krzysztof KrzysiekSiemv Smaga
2024-10-13 19:11:55 +02:00
parent eb805a994b
commit 619e221c61
18 changed files with 317 additions and 59 deletions
+1 -1
View File
@@ -51,7 +51,7 @@
<form method='POST' action='blog_panel/be_post.php'>
<button class='btn btn-primary ms-2' type='submit' name='edit' value='{$post['ID']}'>Edytuj</button>
</form>
<form method='POST' action='be_panel.php'>
<form method='POST' action='vendor/blog-engine/php/Posts/Calls/PostManagement.php'>
<div class='d-flex'>
<button class='btn btn-primary ms-2' type='submit' name='see' value='{$post['ID']}'>Zobacz</button>
<button class='btn btn-danger ms-2' type='submit' name='delete' value='{$post['ID']}'>Usuń</button>
+13 -3
View File
@@ -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");
}
}
}
+56
View File
@@ -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"
}
}
]
}
+26 -12
View File
@@ -1,17 +1,31 @@
<?php
namespace BlogEngine {
require "_config.php";
if(!defined("BLOG_TITLE"))
require "_config.php";
class Dictionary {
public $page_tags = [
"{POSTS}" => "",
"{LINKS}" => "",
"{FAVICON}" => (BLOG_ICON != ""?"<link rel='icon' type='image/png' href='" . BLOG_ICON . "' sizes='any'>":""),
"{KEYWORDS}" => BLOG_TAGS,
"{TITLE}" => BLOG_TITLE,
"{AUTHOR}" => BLOG_AUTHOR,
"{DESCRIPTION}" => BLOG_DESC,
"{JS}" => "",
"{CSS}" => ""
];
public function PageTags() : array {
return [
"{POSTS}" => "",
"{LINKS}" => "",
"{FAVICON}" => (BLOG_ICON != ""?"<link rel='icon' type='image/png' href='" . BLOG_ICON . "' sizes='any'>":""),
"{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"
];
}
}
}
+26
View File
@@ -0,0 +1,26 @@
<?php
require "../../../../../_config.php";
require "../../Authentication/AuthController.php";
require "../PostController.php";
use BlogEngine\Posts\PostController;
use BlogEngine\Authentication\AuthController;
session_start();
$auth = new AuthController();
$conn = $auth->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']));
}
+51 -4
View File
@@ -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;
}
}
}