You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
2.4 KiB
117 lines
2.4 KiB
<?php |
|
|
|
namespace App\Controllers; |
|
|
|
use App\Classes\Config; |
|
use App\Classes\Media; |
|
|
|
use App\Model\LogModel; |
|
use App\Model\MediaModel; |
|
use App\Model\UserModel; |
|
|
|
class MediaController extends PageController { |
|
|
|
/** |
|
* Display a listing of the resource. |
|
* |
|
* @return void |
|
*/ |
|
public function indexAction(): void |
|
{ |
|
$this->mediaPage(); |
|
parent::view(); |
|
} |
|
|
|
/** |
|
* Store a newly created resource in storage. |
|
* |
|
* @return void |
|
*/ |
|
public function storeAction(): void |
|
{ |
|
$name = ucfirst($this->page); |
|
|
|
$overwrite = _exists($_POST, 'overwrite'); |
|
|
|
$error = Media::uploadMedia($overwrite); |
|
if (!$error) { |
|
$this->setAlert('success', "$name successfully created."); |
|
} |
|
else { |
|
$this->setAlert('danger', Media::errorMessage($error)); |
|
} |
|
|
|
$this->mediaPage(); |
|
parent::view(); |
|
} |
|
|
|
/** |
|
* Remove the specified resource from storage. |
|
* |
|
* @param int $id |
|
* |
|
* @return void |
|
*/ |
|
public function destroyAction(int $id): void |
|
{ |
|
$name = ucfirst($this->page); |
|
|
|
if (Media::deleteMedia($id)) { |
|
$this->setAlertNext('success', "$name successfully deleted."); |
|
} |
|
else { |
|
$this->setAlertNext('danger', "$name could not be deleted!"); |
|
} |
|
} |
|
|
|
//-------------------------------------// |
|
|
|
protected function mediaPage(): void { |
|
// ?page=x |
|
$page = 1; |
|
if (_exists($_GET, 'page') && is_numeric($_GET['page'])) { |
|
$page = $_GET['page']; |
|
} |
|
|
|
$mediaModel = new MediaModel; |
|
|
|
// Get all Media of the page |
|
$media = $mediaModel->all($page, Media::$pagination); |
|
|
|
// Get all the connected Logs |
|
$log = null; |
|
if (_exists($media)) { |
|
$logId = array_column($media, 'log_id'); |
|
$log = LogModel::findAll($logId); |
|
} |
|
|
|
// Get all the connected Users |
|
$user = null; |
|
if (_exists($log)) { |
|
$uploaderId = array_column($log, 'user_id'); |
|
$user = UserModel::findAll($uploaderId); |
|
} |
|
|
|
// Set empty values |
|
if (!_exists($media) || !_exists($log) || !_exists($user)) { |
|
$media = []; |
|
$log = [["user_id" => "0"]]; |
|
$user = [["username" => "Could not load users.."]]; |
|
} |
|
|
|
// Set view Media variables |
|
$this->router->service()->media = $media; |
|
$this->router->service()->log = $log; |
|
$this->router->service()->user = $user; |
|
|
|
// Set view Page variables |
|
$this->router->service()->page = $page; |
|
$pages = ceil($mediaModel->count() / Media::$pagination); |
|
$pages > 1 |
|
? $this->router->service()->pages = $pages |
|
: $this->router->service()->pages = 1; |
|
|
|
$this->router->service()->fileUrl = Config::c('APP_URL') . '/' . Media::$directory . '/'; |
|
} |
|
|
|
}
|
|
|