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 . '/'; | 
						|
	} | 
						|
 | 
						|
}
 | 
						|
 |