controllers update

This commit is contained in:
themohooks 2025-02-25 23:03:28 +03:00
parent 2829e0fb1a
commit 9c5ec99f24
10 changed files with 265 additions and 164 deletions

View file

@ -5,7 +5,7 @@ use \App\Services\{Router, Auth, DB, Json};
use \App\Controllers\ExceptionRegister;
use \App\Core\Page;
class AdminController
class AdminController extends NGController
{
static $file = 'General';

View file

@ -1,20 +1,17 @@
<?php
namespace App\Controllers;
use \App\Services\{DB, Json};
use \App\Core\Router;
use \App\Core\Page;
class ExceptionRegister
class ExceptionRegister extends NGController
{
public static function resolve($httpcode, $corecode) {
return Page::set('Errors/'.$corecode);
public function notfound()
{
http_response_code(404);
$this->render('Errors/404');
}
public static function notfound() {
Page::set('Errors/404');
}
}
}

View file

@ -2,16 +2,17 @@
namespace App\Controllers;
use \App\Services\{Router, Auth, DB, Json};
use \App\Controllers\ExceptionRegister;
use \App\Core\Page;
class LoginController
class LoginController extends NGController
{
public static function i()
public function i()
{
Page::set('Login');
if (Auth::userid() > 0) {
Router::redirect('/');
} else{
$this->render('System/Login');
}
}

View file

@ -1,110 +1,99 @@
<?php
namespace App\Controllers;
use \App\Services\{Router, Auth, DB, Json};
use \App\Controllers\ExceptionRegister;
use \App\Core\Page;
class MainController
class MainController extends NGController
{
public static function t()
{
Page::set('t');
}
public static function i()
{
Page::set('Main');
}
public static function page()
{
Page::set('Page');
}
public static function about()
{
Page::set('About');
}
public static function rules()
{
Page::set('Rules');
}
public static function publicationRules()
{
Page::set('PublicationRules');
}
public static function photoRules()
{
Page::set('PhotoRules');
}
public static function videoRules()
{
Page::set('VideoRules');
}
public static function update()
{
Page::set('Update');
}
public static function top30()
{
Page::set('Top30');
}
public static function feed()
{
Page::set('Feed');
}
public static function fav()
{
Page::set('Fav');
}
public static function gallery()
{
Page::set('Gallery');
}
public static function favauthors()
{
Page::set('FavAuthors');
}
public static function emailverify()
{
Page::set('Errors/EmailVerify');
}
public static function comments()
{
Page::set('Comments/Index');
}
public static function tour()
{
Page::set('Tour');
}
public static function robots() {
public function t()
{
$this->render('t');
}
public function i()
{
$this->render('System/Main');
}
public static function page()
{
Page::set('Page');
}
public function about()
{
$this->render('System/About');
}
public static function rules()
{
Page::set('Rules');
}
public static function publicationRules()
{
Page::set('PublicationRules');
}
public static function photoRules()
{
Page::set('PhotoRules');
}
public static function videoRules()
{
Page::set('VideoRules');
}
public static function update()
{
Page::set('Update');
}
public function top30()
{
$this->render('Top30');
}
public static function feed()
{
Page::set('Feed');
}
public static function fav()
{
Page::set('Fav');
}
public static function gallery()
{
Page::set('Gallery');
}
public static function favauthors()
{
Page::set('FavAuthors');
}
public static function emailverify()
{
Page::set('Errors/EmailVerify');
}
public static function comments()
{
Page::set('Comments/Index');
}
public static function tour()
{
Page::set('Tour');
}
public static function robots()
{
echo 'User-Agent: *
Disallow: /lk/
Clean-Param: vid&gid&upd /photo/
Host: https://'.$_SERVER['SERVER_NAME'];
header("Content-Type: text/plain");
}
Host: https://' . $_SERVER['SERVER_NAME'];
header("Content-Type: text/plain");
}
public static function logout()
{
DB::query('DELETE FROM login_tokens WHERE token=:userid', array(':userid'=>$_COOKIE['NGALLERYSESS']));
setcookie('NGALLERYSERVICE', '', 1);
setcookie('NGALLERYSESS', '', 1);
setcookie('NGALLERYSESS_', '', 1);
setcookie('NGALLERYID', '', 1);
header('Location: /');
}
}
public static function logout()
{
DB::query('DELETE FROM login_tokens WHERE token=:userid', array(':userid' => $_COOKIE['NGALLERYSESS']));
setcookie('NGALLERYSERVICE', '', 1);
setcookie('NGALLERYSESS', '', 1);
setcookie('NGALLERYSESS_', '', 1);
setcookie('NGALLERYID', '', 1);
header('Location: /');
}
}

View file

@ -0,0 +1,15 @@
<?php
namespace App\Controllers;
use \App\Services\{Router, Auth, DB, Json};
use \App\Controllers\ExceptionRegister;
use \App\Core\Page;
class MessagesController extends NGController
{
public function i()
{
$this->render('Messages/Index');
}
}

View file

@ -1,23 +1,98 @@
<?php
namespace App\Controllers;
use \App\Services\{Router, Auth, DB, Json};
use \App\Controllers\ExceptionRegister;
use \App\Core\Page;
use App\Services\{Router, Auth, DB, Json};
use App\Core\Page;
use App\Models\{User, Vote, Comment, Vehicle, Photo};
class PhotoController
class PhotoController extends NGController
{
private ?Photo $photo = null;
private ?User $user = null;
private array $params = [];
public static function i()
{
Page::set('Photo');
}
public static function photoext()
{
Page::set('PhotoExt');
}
public function __construct()
{
$this->page = new Page();
$this->user = new User(Auth::userid());
}
public function i(): void
{
$id = $this->getPhotoId();
$this->photo = new Photo($id);
if (!$this->photo->exists()) {
$this->renderNotFound();
return;
}
$this->setPhotoDetails($id);
$this->checkModerationStatus($id);
if ($this->params['moderated']) {
$this->render('Photo/Index', $this->params);
} else {
$this->renderNotFound();
}
}
}
public function photoext(): void
{
$_GET['id'] ? $this->render('Photo/Ext') : $this->renderNotFound();
}
private function getPhotoId(): ?int
{
return isset($_SERVER['REQUEST_URI']) ? (int) explode('/', $_SERVER['REQUEST_URI'])[2] : null;
}
private function setPhotoDetails(int $id): void
{
$this->params = [
'photo_id' => $id,
'photouser' => new User($this->photo->i('user_id')),
'extname' => $this->photo->content('video') ? 'видео' : 'фото',
'extnamef' => $this->photo->content('video') ? 'видеоролик' : 'фотография'
];
if ($this->photo->i('entitydata_id') >= 1) {
$entitydata = DB::query('SELECT * FROM entities_data WHERE id=:id', [':id' => $this->photo->i('entitydata_id')])[0];
$this->params['vehicle'] = new Vehicle($entitydata['entityid']);
}
}
private function checkModerationStatus(int $id): void
{
$moderated = $this->photo->i('moderated');
if ($moderated === 0) {
$this->params['moderated'] = ($this->photo->i('user_id') === Auth::userid() || $this->user->i('admin') > 0);
} elseif ($moderated === 1) {
$this->params['moderated'] = true;
$this->trackPhotoView($id);
}
}
private function trackPhotoView(int $id): void
{
$lastView = DB::query(
'SELECT time FROM photos_views WHERE user_id=:uid AND photo_id=:pid ORDER BY id DESC LIMIT 1',
[':uid' => Auth::userid(), ':pid' => $id]
)[0]['time'] ?? 0;
if ($lastView <= time() - 86400) {
DB::query(
'INSERT INTO photos_views VALUES (0, :uid, :pid, :time)',
[':uid' => Auth::userid(), ':pid' => $id, ':time' => time()]
);
}
}
private function renderNotFound(): void
{
$this->render('Photo/NotFound', $this->params);
}
}

View file

@ -1,39 +1,59 @@
<?php
namespace App\Controllers;
use \App\Services\{Router, Auth, DB, Json};
use \App\Controllers\ExceptionRegister;
use \App\Core\Page;
class ProfileController
class ProfileController extends NGController
{
public static function lk()
{
Page::set('Profile/LK/Index');
}
public static function i()
{
Page::set('Profile/Index');
}
public static function photoindexhistory()
{
Page::set('Profile/LK/PhotoIndexHistory');
}
public static function upload()
{
Page::set('Profile/UploadPhoto');
}
public static function lkhistory()
{
Page::set('Profile/LK/History');
}
public static function lkprofile()
{
Page::set('Profile/LK/Profile');
}
private array $params = [];
protected array $problems = [];
}
public function lk()
{
$this->render('Profile/LK/Index');
}
public function i()
{
$profile_id = explode('/', $_SERVER['REQUEST_URI'])[2];
$this->params['userprofile'] = new \App\Models\User($profile_id);
if (explode('/', $_SERVER['REQUEST_URI'])[2] && (int)$this->params['userprofile']->i('id') === (int)$profile_id) {
$this->params['profile_id'] = explode('/', $_SERVER['REQUEST_URI'])[2];
if ($this->params['userprofile']->i('status') > 0) {
$this->params['status'] = $this->params['userprofile']->i('status');
$this->render('Errors/UserDeactivated', $this->params);
} else {
$this->render('Profile/Index', $this->params);
}
} else {
$this->render('Errors/UserNotFound');
}
}
public static function photoindexhistory()
{
Page::set('Profile/LK/PhotoIndexHistory');
}
public function upload()
{
$user = new \App\Models\User(Auth::userid());
$this->params['user'] = $user;
if (NGALLERY['root']['registration']['emailverify'] != false || $user->i('status') === 3) {
$problems[] = 'Чтобы публиковать медиафайлы, нужно подтвердить электронную почту.';
$this->params['problems'] = $problems;
$this->render('Errors/PublicProblems', $this->params);
} else {
$this->render('Profile/UploadPhoto');
}
}
public static function lkhistory()
{
Page::set('Profile/LK/History');
}
public static function lkprofile()
{
Page::set('Profile/LK/Profile');
}
}

View file

@ -5,13 +5,17 @@ use \App\Services\{Router, Auth, DB, Json};
use \App\Controllers\ExceptionRegister;
use \App\Core\Page;
class RegisterController
class RegisterController extends NGController
{
public static function i()
public function i()
{
Page::set('Register');
if (Auth::userid() > 0) {
Router::redirect('/');
} else{
$this->render('System/Register');
}
}

View file

@ -5,7 +5,7 @@ use \App\Services\{Router, Auth, DB, Json};
use \App\Controllers\ExceptionRegister;
use \App\Core\Page;
class SearchController
class SearchController extends NGController
{
public static function i()
{

View file

@ -6,7 +6,7 @@ use \App\Services\{Router, Auth, DB, Json};
use \App\Controllers\ExceptionRegister;
use \App\Core\Page;
class VehicleController
class VehicleController extends NGController
{
public static function i()
{