docs: add activities class

This commit is contained in:
Mobina 2022-08-27 16:33:32 +04:30
parent 227df4d72d
commit 2856fbc333
11 changed files with 977 additions and 0 deletions

79
activites/Admin/Admin.php Normal file
View file

@ -0,0 +1,79 @@
<?php
namespace Admin;
use Auth\Auth;
class Admin{
function __construct(){
$auth = new Auth();
$auth->checkAdmin();
$this->currentDomain = CURRENT_DOMAIN;
$this->basePath = BASE_PATH;
}
public function redirect($url){
header("Location: ". trim($this->currentDomain, '/ ') . '/' . trim($url, '/ '));
exit;
}
public function redirectBack()
{
header("Location: ". $_SERVER['HTTP_REFERER']);
exit;
}
// saveImage($_FILES['image'], 'post-image', 'logo');
// saveImage($_FILES['image'], 'post-image');
protected function saveImage($image, $imagePath, $imageName = null)
{
if($imageName)
{
$extension = explode('/', $image['type'])[1];
$imageName = $imageName . '.' . $extension;
}
else{
$extension = explode('/', $image['type'])[1];
$imageName = date("Y-m-d-H-i-s"). '.' . $extension;
}
$imageTemp = $image['tmp_name'];
$imagePath = 'public/' . $imagePath . '/';
if(is_uploaded_file($imageTemp))
{
if(move_uploaded_file($imageTemp, $imagePath . $imageName))
{
return $imagePath . $imageName;
}
else{
return false;
}
}
else{
return false;
}
}
// removeImage('/public/image/hassan.png/');
protected function removeImage($path)
{
// $path = trim($this->basePath, '/ ') . '/' . trim($path, '/ ');
$path = trim($path, '/ ');
if(file_exists($path)){
unlink($path);
}
}
}

View file

@ -0,0 +1,74 @@
<?php
namespace Admin;
use database\Database;
class Banner extends Admin{
public function index()
{
$db = new DataBase();
$banners = $db->select('SELECT * FROM banners ORDER BY `id` DESC');
require_once(BASE_PATH . '/template/admin/banners/index.php');
}
public function create()
{
require_once(BASE_PATH . '/template/admin/banners/create.php');
}
public function store($request)
{
$db = new DataBase();
$request['image'] = $this->saveImage($request['image'], 'banner-image');
if($request['image'])
{
$db->insert('banners', array_keys($request), $request);
$this->redirect('admin/banner');
}
else{
$this->redirect('admin/banner');
}
}
public function edit($id)
{
$db = new DataBase();
$banner = $db->select('SELECT * FROM banners WHERE id = ?;', [$id])->fetch();
require_once(BASE_PATH . '/template/admin/banners/edit.php');
}
public function update($request, $id)
{
$db = new DataBase();
{
if($request['image']['tmp_name'] != null)
{
$banner = $db->select('SELECT * FROM banners WHERE id = ?;', [$id])->fetch();
$this->removeImage($banner['image']);
$request['image'] = $this->saveImage($request['image'], 'banner-image');
}
else{
unset($request['image']);
}
$db->update('banners', $id , array_keys($request), $request);
$this->redirect('admin/banner');
}
}
public function delete($id)
{
$db = new DataBase();
$banner = $db->select('SELECT * FROM banners WHERE id = ?;', [$id])->fetch();
$this->removeImage($banner['image']);
$db->delete('banners', $id);
$this->redirectBack();
}
}

View file

@ -0,0 +1,51 @@
<?php
namespace Admin;
use Database\Database;
class Category extends Admin{
public function index()
{
$db = new Database();
$categories = $db->select("SELECT * FROM categories");
require_once (BASE_PATH . '/template/admin/category/index.php');
}
public function create()
{
require_once (BASE_PATH . '/template/admin/category/create.php');
}
public function store($request){
$db = new Database();
$db->insert('categories', array_keys($request), $request);
$this->redirect('admin/category');
}
public function edit($id)
{
$db = new Database();
$category = $db->select("SELECT * FROM categories WHERE id = ?", [$id])->fetch();
require_once (BASE_PATH . '/template/admin/category/edit.php');
}
public function update($request, $id)
{
$db = new Database();
$db->update('categories', $id, array_keys($request), $request);
$this->redirect('admin/category');
}
public function delete($id)
{
$db = new Database();
$db->delete('categories', $id);
$this->redirectBack();
}
}

View file

@ -0,0 +1,39 @@
<?php
namespace Admin;
use database\Database;
class Comment extends Admin{
public function index()
{
$db = new DataBase();
$comments = $db->select('SELECT comments.*, posts.title AS post_title, users.email AS email FROM comments LEFT JOIN posts ON comments.post_id = posts.id LEFT JOIN users ON comments.user_id = users.id ORDER BY `id` DESC');
$unseenComments = $db->select('SELECT * FROM comments WHERE status = ?', ['unseen']);
foreach($unseenComments as $comment){
$db->update('comments', $comment['id'], ['status'], ['seen']);
}
require_once(BASE_PATH . '/template/admin/comments/index.php');
}
public function changeStatus($id)
{
$db = new DataBase();
$comment = $db->select('SELECT * FROM comments WHERE id = ?;', [$id])->fetch();
if(empty($comment)){
$this->redirectBack();
}
if($comment['status'] == 'seen'){
$db->update('comments', $id, ['status'], ['approved']);
}
else{
$db->update('comments', $id, ['status'], ['seen']);
}
$this->redirectBack();
}
}

View file

@ -0,0 +1,34 @@
<?php
namespace Admin;
use DataBase\DataBase;
class Dashboard extends Admin
{
public function index()
{
$db = new DataBase();
$postCount = $db->select('SELECT COUNT(*) FROM `posts` ;')->fetch();
$postsViews = $db->select('SELECT SUM(view) FROM `posts` ;')->fetch();
$commentsCount = $db->select('SELECT COUNT(*) FROM `comments` ;')->fetch();
$commentsUnseenCount = $db->select("SELECT COUNT(*) FROM `comments` WHERE `status` = 'unseen' ;")->fetch();
$commentsApprovedCount = $db->select("SELECT COUNT(*) FROM `comments` WHERE `status` = 'approved' ;")->fetch();
$userCount = $db->select("SELECT COUNT(*) FROM `users` WHERE `permission` = 'user';")->fetch();
$adminCount = $db->select("SELECT COUNT(*) FROM `users` WHERE `permission` = 'admin' ;")->fetch();
$categoryCount = $db->select("SELECT COUNT(*) FROM `categories` ;")->fetch();
$postsWithView = $db->select('SELECT * FROM `posts` ORDER BY `view` DESC LIMIT 0,5 ;');
$postsComments = $db->select("SELECT `posts`.`id`, `posts`.`title`, COUNT(`comments`.`post_id`) AS 'comment_count' FROM `posts` LEFT JOIN `comments` ON `posts`.`id` = `comments`.`post_id` GROUP BY `posts`.`id` ORDER BY `comment_count` DESC LIMIT 0,5 ;");
$lastComments = $db->select('SELECT comments.id, comments.comment, comments.status, comments.post_id, users.username FROM comments, users WHERE comments.user_id = users.id order by comments.created_at DESC LIMIT 0,5 ;');
require_once (BASE_PATH . "/template/admin/dashboard/index.php");
}
}

52
activites/Admin/Menu.php Normal file
View file

@ -0,0 +1,52 @@
<?php
namespace Admin;
use database\Database;
class Menu extends Admin{
public function index()
{
$db = new DataBase();
$menus = $db->select('SELECT m1.*, m2.name AS parent_name FROM menus m1 LEFT JOIN menus m2 ON m1.parent_id = m2.id ORDER BY id DESC');
require_once(BASE_PATH . '/template/admin/menus/index.php');
}
public function create()
{
$db = new DataBase();
$menus = $db->select('SELECT * FROM menus WHERE parent_id IS NULL ORDER BY `id` DESC ');
require_once(BASE_PATH . '/template/admin/menus/create.php');
}
public function store($request)
{
$db = new DataBase();
$db->insert('menus', array_keys(array_filter($request)), array_filter($request));
$this->redirect('admin/menu');
}
public function edit($id)
{
$db = new DataBase();
$menu = $db->select('SELECT * FROM menus WHERE id = ?;', [$id])->fetch();
$menus = $db->select('SELECT * FROM menus WHERE parent_id IS NULL;');
require_once(BASE_PATH . '/template/admin/menus/edit.php');
}
public function update($request, $id)
{
$db = new DataBase();
$db->update('menus', $id, array_keys($request), $request);
$this->redirect('admin/menu');
}
public function delete($id)
{
$db = new DataBase();
$db->delete('menus', $id);
$this->redirect('admin/menu');
}
}

120
activites/Admin/Post.php Normal file
View file

@ -0,0 +1,120 @@
<?php
namespace Admin;
use Database\Database;
class Post extends Admin{
public function index()
{
$db = new Database();
$posts = $db->select("SELECT * FROM posts");
require_once (BASE_PATH . '/template/admin/post/index.php');
}
public function create()
{
$db = new Database();
$categories = $db->select('SELECT * FROM categories');
require_once (BASE_PATH . '/template/admin/post/create.php');
}
public function store($request){
$realTimestamp = substr($request['published_at'], 0, 10);
$request['published_at'] = date("Y-m-d H:i:s", (int)$realTimestamp);
$db = new Database();
if($request['cat_id'] != null){
$request['image'] = $this->saveImage($request['image'], 'post-image');
if($request['image']){
$request = array_merge($request, ['user_id' => 1]);
$db->insert('posts', array_keys($request), $request);
$this->redirect('admin/post');
}
else{
$this->redirect('admin/post');
}
}
else{
$this->redirect('admin/post');
}
}
public function edit($id)
{
$db = new Database();
$post = $db->select("SELECT * FROM posts WHERE id = ?", [$id])->fetch();
$categories = $db->select('SELECT * FROM categories');
require_once (BASE_PATH . '/template/admin/post/edit.php');
}
public function update($request, $id)
{
$realTimestamp = substr($request['published_at'], 0, 10);
$request['published_at'] = date("Y-m-d H:i:s", (int)$realTimestamp);
$db = new Database();
if ($request['cat_id'] != null) {
if($request['image']['tmp_name'] != null){
$post = $db->select("SELECT * FROM posts WHERE id = ?", [$id])->fetch();
$this->removeImage($post['image']);
$request['image'] = $this->saveImage($request['image'], 'post-image');
}
else{
unset($request['image']);
}
$request = array_merge($request, ['user_id' => 1]);
$db->update('posts', $id, array_keys($request), $request);
$this->redirect('admin/post');
}
}
public function delete($id)
{
$db = new Database();
$post = $db->select("SELECT * FROM posts WHERE id = ?", [$id])->fetch();
$this->removeImage($post['image']);
$db->delete('posts', $id);
$this->redirectBack();
}
public function breakingNews($id)
{
$db = new Database();
$post = $db->select("SELECT * FROM posts WHERE id = ?", [$id])->fetch();
if(empty($post))
{
$this->redirectBack();
}
if($post['breaking_news'] == 1) {
$db->update('posts', $id, ['breaking_news'], [2]);
}
else{
$db->update('posts', $id, ['breaking_news'], [1]);
}
$this->redirectBack();
}
public function selected($id)
{
$db = new Database();
$post = $db->select("SELECT * FROM posts WHERE id = ?", [$id])->fetch();
if(empty($post))
{
$this->redirectBack();
}
if($post['selected'] == 1) {
$db->update('posts', $id, ['selected'], [2]);
}
else{
$db->update('posts', $id, ['selected'], [1]);
}
$this->redirectBack();
}
}

56
activites/Admin/User.php Normal file
View file

@ -0,0 +1,56 @@
<?php
namespace Admin;
use database\Database;
class User extends Admin{
public function index()
{
$db = new DataBase();
$users = $db->select('SELECT * FROM users ORDER BY `id` DESC');
require_once(BASE_PATH . '/template/admin/users/index.php');
}
public function edit($id)
{
$db = new DataBase();
$user = $db->select('SELECT * FROM users WHERE id = ?;', [$id])->fetch();
require_once(BASE_PATH . '/template/admin/users/edit.php');
}
public function update($request, $id)
{
$db = new DataBase();
$request = ['username' => $request['username'], 'permission' => $request['permission']];
$db->update('users', $id, array_keys($request), $request);
$this->redirect('admin/user');
}
public function delete($id)
{
$db = new DataBase();
$db->delete('users', $id);
$this->redirect('admin/user');
}
public function permission($id)
{
$db = new DataBase();
$user = $db->select('SELECT * FROM users WHERE id = ?;', [$id])->fetch();
if(empty($user)){
$this->redirectBack();
}
if($user['permission'] == 'user'){
$db->update('users', $id, ['permission'], ['admin']);
}
else{
$db->update('users', $id, ['permission'], ['user']);
}
$this->redirectBack();
}
}

View file

@ -0,0 +1,51 @@
<?php
namespace Admin;
use DataBase\DataBase;
class WebSetting extends Admin
{
public function index()
{
$db= new DataBase();
$setting= $db->select("SELECT * FROM `websetting`;")->fetch();
require_once (BASE_PATH . "/template/admin/web-setting/index.php");
}
public function set()
{
$db= new DataBase();
$setting= $db->select("SELECT * FROM `websetting`;")->fetch();
require_once (BASE_PATH . "/template/admin/web-setting/set.php");
}
public function store($request)
{
$db= new DataBase();
$setting= $db->select("SELECT * FROM `websetting`;")->fetch();
if($request['logo']['tmp_name'] != ""){
$request['logo']= $this->saveImage($request['logo'],'setting','logo');
}
else{
unset($request['logo']);
}
if($request['icon']['tmp_name'] != ""){
$request['icon']= $this->saveImage($request['icon'],'setting','icon');
}
else{
unset($request['icon']);
}
if(!empty($setting))
$db->update('websetting', $setting['id'],array_keys($request),$request);
else
$db->insert('websetting',array_keys($request),$request);
$this->redirect('admin/web-setting');
}
}

303
activites/Auth/Auth.php Normal file
View file

@ -0,0 +1,303 @@
<?php
namespace Auth;
use Database\Database;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\PHPMailer;
class Auth{
protected function redirect($url)
{
header('Location: ' . trim(CURRENT_DOMAIN, '/ ') . '/' . trim($url, '/ '));
exit;
}
protected function redirectBack()
{
header("Location: " . $_SERVER['HTTP_REFERER']);
exit;
}
private function hash($password)
{
$hashPassword = password_hash($password, PASSWORD_DEFAULT);
return $hashPassword;
}
private function random(){
return bin2hex(openssl_random_pseudo_bytes(32));
}
public function activationMessage($username, $verifyToken)
{
$message = '
<h1>فعال سازی حساب کاربری</h1>
<p>' . $username . 'عزیز برای فعال سازی حساب کاربری خود لطفا روی لینک زیر کلیک نمایید</p>
<div><a href="'. url('activation/' . $verifyToken) .'">فعال سازی حساب کاربری</a></div>
';
return $message;
}
public function sendMail($emailAddress, $subject, $body)
{
//Create an instance; passing `true` enables exceptions
$mail = new PHPMailer(true);
try {
//Server settings
$mail->CharSet = "UTF-8";
$mail->isSMTP(); //Send using SMTP
$mail->Host = MAIL_HOST; //Set the SMTP server to send through
$mail->SMTPAuth = SMTP_AUTH; //Enable SMTP authentication
$mail->Username = MAIL_USERNAME; //SMTP username
$mail->Password = MAIL_PASSWORD; //SMTP password
$mail->SMTPSecure = 'tls';
$mail->Port = MAIL_PORT; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
//Recipients
$mail->setFrom(SENDER_MAIL, SENDER_NAME);
$mail->addAddress($emailAddress); //Add a recipient
//Content
$mail->isHTML(true); //Set email format to HTML
$mail->Subject = $subject;
$mail->Body = $body;
$mail->send();
echo 'Message has been sent';
return true;
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
return false;
}
}
public function register(){
require_once(BASE_PATH .'/template/auth/register.php');
}
public function registerStore($request)
{
if(empty($request['email']) || empty($request['username']) || empty($request['password']))
{
flash('register_error', 'تمامی فیلد ها الزامی میباشند');
$this->redirectBack();
}
else if(strlen($request['password']) < 8 )
{
flash('register_error', 'رمز عبور باید حداقل ۸ کاراکتر باشد');
$this->redirectBack();
}
else if(!filter_var($request['email'], FILTER_VALIDATE_EMAIL))
{
flash('register_error', 'ایمیل وارد شده معتبر نمیباشد');
$this->redirectBack();
}
else{
$db = new Database();
$user = $db->select("SELECT * FROM users WHERE email = ?", [$request['email']])->fetch();
if($user != null){
flash('register_error', 'ایمیل از قبل وجود دارد');
$this->redirectBack();
}
else{
$randomToken = $this->random();
$activationMessage = $this->activationMessage($request['username'], $randomToken);
$result = $this->sendMail($request['email'], 'فعال سازی حساب کاربری', $activationMessage);
if($result)
{
$request['verify_token'] = $randomToken;
$request['password'] = $this->hash($request['password']);
$db->insert('users', array_keys($request), $request);
$this->redirect('login');
}
else{
flash('register_error', 'ایمیل فعال سازی ارسال نشد');
$this->redirectBack();
}
}
}
}
public function activation($verifyToken)
{
$db = new Database();
$user = $db->select("SELECT * FROM users WHERE verify_token = ? AND is_active = 0", [$verifyToken])->fetch();
if($user == null){
$this->redirect('login');
}
else{
$result = $db->update('users', $user['id'], ['is_active'], [1]);
$this->redirect('login');
}
}
public function login(){
require_once(BASE_PATH .'/template/auth/login.php');
}
public function checkLogin($request)
{
if(empty($request['email']) || empty($request['password']))
{
flash('login_error', 'تمامی فیلد ها الزامی میباشند');
$this->redirectBack();
}
else{
$db = new Database();
$user = $db->select("SELECT * FROM users WHERE email = ?", [$request['email']])->fetch();
if($user != null){
if(password_verify($request['password'], $user['password']) && $user['is_active'] == 1)
{
$_SESSION['user'] = $user['id'];
$this->redirect('admin');
}
else{
flash('login_error', 'کلمه عبور اشتباه است');
$this->redirectBack();
}
}
else{
flash('login_error', 'کاربر یافت نشد');
$this->redirectBack();
}
}
}
public function checkAdmin(){
if(isset($_SESSION['user']))
{
$db = new Database();
$user = $db->select("SELECT * FROM users WHERE id = ?", [$_SESSION['user']])->fetch();
if($user != null){
if($user['permission'] != 'admin'){
$this->redirect('home');
}
}
else{
$this->redirect('home');
}
}
else{
$this->redirect('home');
}
}
public function logout()
{
if(isset($_SESSION['user']))
{
unset($_SESSION['user']);
session_destroy();
}
$this->redirect('login');
}
public function forgot(){
require_once(BASE_PATH .'/template/auth/forgot-password.php');
}
public function forgotMessage($username, $forgotToken)
{
$message = '
<h1>بازیابی رمز عبور</h1>
<p>' . $username . 'عزیز برای بازیابی رمز عبور خود لطفا روی لینک زیر کلیک نمایید</p>
<div><a href="'. url('reset-password-form/' . $forgotToken) .'">فعال سازی حساب کاربری</a></div>
';
return $message;
}
public function forgotRequest($request)
{
if(empty($request['email']))
{
flash('forgot_error', ' فیلد ایمیل الزامی میباشد');
$this->redirectBack();
}
else if(!filter_var($request['email'], FILTER_VALIDATE_EMAIL))
{
flash('forgot_error', ' ایمیل وارد شده صحیح نمیباشد');
$this->redirectBack();
}
else{
$db = new Database();
$user = $db->select("SELECT * FROM users WHERE email = ?", [$request['email']])->fetch();
if($user == null)
{
flash('forgot_error', ' ایمیل وارد شده وجود ندارد');
$this->redirectBack();
}
else{
$randomToken = $this->random();
$forgotMessage = $this->forgotMessage($user['username'], $randomToken);
$result = $this->sendMail($request['email'], 'بازیابی رمز عبور', $forgotMessage);
if($result)
{
$db->update('users', $user['id'], ['forgot_token', 'forgot_token_expire'], [$randomToken, date("Y-m-d H:i:s", strtotime('+15 minutes'))]);
$this->redirect('login');
}
else{
flash('forgot_error', ' ایمیل ارسال نشد');
$this->redirectBack();
}
}
}
}
public function resetPasswordView($forgot_token){
require_once(BASE_PATH .'/template/auth/reset-password.php');
}
public function resetPassword($request, $forgot_token)
{
if(!isset($request['password']) || strlen($request['password']) < 8)
{
flash('reset_error', 'یا رمز عبور نباید کمتر از ۸ کاراکتر باشد رمز عبور نباید خالی باشد');
$this->redirectBack();
}
else{
$db = new Database();
$user = $db->select("SELECT * FROM users WHERE forgot_token = ?", [$forgot_token])->fetch();
if($user == null){
flash('reset_error', 'کاربری با این مشخصات یافت نشد');
$this->redirectBack();
}
else{
if($user['forgot_token_expire'] < date('Y-m-d H:i:s'))
{
flash('reset_error', 'مهلت استفاده از این توکن به پایان رسیده است');
$this->redirectBack();
}
if($user)
{
$db->update('users', $user['id'], ['password'], [$this->hash($request['password'])]);
$this->redirect('login');
}
else{
$this->redirectBack();
}
}
}
}
}

118
activites/Home.php Normal file
View file

@ -0,0 +1,118 @@
<?php
namespace App;
use Database\Database;
class Home{
public function index()
{
$db = new Database();
$setting = $db->select('SELECT * FROM websetting')->fetch();
$menus = $db->select('SELECT * FROM menus WHERE parent_id IS NULL')->fetchAll();
$topSelectedPosts = $db->select('SELECT posts.*, (SELECT COUNT(*) FROM comments WHERE comments.post_id = posts.id) AS comments_count, (SELECT username FROM users WHERE users.id = posts.user_id) AS username, (SELECT name FROM categories WHERE categories.id = posts.cat_id) AS category FROM posts WHERE posts.selected = 2 ORDER BY created_at DESC LIMIT 0, 3')->fetchAll();
$breakingNews = $db->select('SELECT * FROM posts WHERE breaking_news = 2 ORDER BY created_at DESC LIMIT 0,1')->fetch();
$lastPosts = $db->select('SELECT posts.*, (SELECT COUNT(*) FROM comments WHERE comments.post_id = posts.id) AS comments_count, (SELECT username FROM users WHERE users.id = posts.user_id) AS username, (SELECT name FROM categories WHERE categories.id = posts.cat_id) AS category FROM posts ORDER BY created_at DESC LIMIT 0, 6')->fetchAll();
$bodyBanner = $db->select('SELECT * FROM banners ORDER BY created_at DESC LIMIT 0,1')->fetch();
$sidebarBanner = $db->select('SELECT * FROM banners ORDER BY created_at DESC LIMIT 0,1')->fetch();
$popularPosts =$db->select('SELECT posts.*, (SELECT COUNT(*) FROM comments WHERE comments.post_id = posts.id) AS comments_count, (SELECT username FROM users WHERE users.id = posts.user_id) AS username, (SELECT name FROM categories WHERE categories.id = posts.cat_id) AS category FROM posts ORDER BY view DESC LIMIT 0, 3')->fetchAll();
$mostCommentsPosts =$db->select('SELECT posts.*, (SELECT COUNT(*) FROM comments WHERE comments.post_id = posts.id) AS comments_count, (SELECT username FROM users WHERE users.id = posts.user_id) AS username, (SELECT name FROM categories WHERE categories.id = posts.cat_id) AS category FROM posts ORDER BY comments_count DESC LIMIT 0, 4')->fetchAll();
require_once (BASE_PATH . '/template/app/index.php');
}
public function show($id)
{
$db = new Database();
$post =$db->select('SELECT posts.*, (SELECT COUNT(*) FROM comments WHERE comments.post_id = posts.id) AS comments_count, (SELECT username FROM users WHERE users.id = posts.user_id) AS username, (SELECT name FROM categories WHERE categories.id = posts.cat_id) AS category FROM posts WHERE id = ?', [$id])->fetch();
$comments = $db->select("SELECT *, (SELECT username FROM users WHERE users.id = comments.user_id) AS username FROM comments WHERE post_id = ? AND status = 'approved'", [$id])->fetchAll();
$setting = $db->select('SELECT * FROM websetting')->fetch();
$menus = $db->select('SELECT * FROM menus WHERE parent_id IS NULL')->fetchAll();
$sidebarBanner = $db->select('SELECT * FROM banners ORDER BY created_at DESC LIMIT 0,1')->fetch();
$popularPosts =$db->select('SELECT posts.*, (SELECT COUNT(*) FROM comments WHERE comments.post_id = posts.id) AS comments_count, (SELECT username FROM users WHERE users.id = posts.user_id) AS username, (SELECT name FROM categories WHERE categories.id = posts.cat_id) AS category FROM posts ORDER BY view DESC LIMIT 0, 3')->fetchAll();
$mostCommentsPosts =$db->select('SELECT posts.*, (SELECT COUNT(*) FROM comments WHERE comments.post_id = posts.id) AS comments_count, (SELECT username FROM users WHERE users.id = posts.user_id) AS username, (SELECT name FROM categories WHERE categories.id = posts.cat_id) AS category FROM posts ORDER BY comments_count DESC LIMIT 0, 4')->fetchAll();
require_once (BASE_PATH . '/template/app/show-post.php');
}
public function commentStore($request){
if(isset($_SESSION['user']))
{
if($_SESSION['user'] != null)
{
$db = new Database();
$db->insert('comments', ['user_id', 'post_id', 'comment'], [$_SESSION['user'], $request['post_id'], $request['comment']]);
$this->redirectBack();
}
else{
$this->redirectBack();
}
}
else{
$this->redirectBack();
}
}
public function category($id)
{
$db = new DataBase();
$category = $db->select("SELECT * FROM `categories` WHERE `id` = ? ORDER BY `id` DESC ;", [$id])->fetch();
$topSelectedPosts = $db->select("SELECT posts.*, (SELECT COUNT(*) FROM comments WHERE comments.post_id = posts.id) AS comments_count, (SELECT username FROM users WHERE users.id = posts.user_id) AS username , (SELECT name FROM categories WHERE categories.id = posts.cat_id) AS category FROM posts where posts.selected = 2 ORDER BY `created_at` DESC LIMIT 0,1 ;")->fetchAll();
$categoryPosts = $db->select("SELECT posts.*, (SELECT COUNT(*) FROM comments WHERE comments.post_id = posts.id) AS comments_count, (SELECT username FROM users WHERE users.id = posts.user_id) AS username , (SELECT name FROM categories WHERE categories.id = posts.cat_id) AS category FROM posts WHERE cat_id = ? ORDER BY `created_at` DESC LIMIT 0,6 ;", [$id])->fetchAll();
$popularPosts = $db->select("SELECT posts.*, (SELECT COUNT(*) FROM comments WHERE comments.post_id = posts.id) AS comments_count, (SELECT username FROM users WHERE users.id = posts.user_id) AS username , (SELECT name FROM categories WHERE categories.id = posts.cat_id) AS category FROM posts ORDER BY `view` DESC LIMIT 0,3 ;")->fetchAll();
$breakingNews = $db->select("SELECT * FROM posts WHERE breaking_news = 2 ORDER BY `created_at` DESC LIMIT 0,1 ;")->fetch();
$mostCommentsPosts = $db->select("SELECT posts.*, (SELECT COUNT(*) FROM comments WHERE comments.post_id = posts.id) AS comments_count, (SELECT username FROM users WHERE users.id = posts.user_id) AS username , (SELECT name FROM categories WHERE categories.id = posts.cat_id) AS category FROM posts ORDER BY `comments_count` DESC LIMIT 0,4 ;")->fetchAll();
$menus = $db->select('SELECT *, (SELECT COUNT(*) FROM `menus` AS `submenus` WHERE `submenus`.`parent_id` = `menus`.`id` ) as `submenu_count` FROM `menus` WHERE `parent_id` IS NULL ;')->fetchAll();
$setting= $db->select("SELECT * FROM `websetting`;")->fetch();
$sidebarBanner= $db->select("SELECT * FROM `banners` LIMIT 0,1;")->fetch();
$bodyBanner= $db->select("SELECT * FROM `banners` ORDER BY created_at DESC LIMIT 0,1;")->fetch();
require_once (BASE_PATH . "/template/app/show-category.php");
}
protected function redirectBack(){
header("Location: " . $_SERVER['HTTP_REFERER']);
exit;
}
}