Added galery
This commit is contained in:
@@ -126,7 +126,7 @@ class DatabaseController extends Controller
|
||||
}
|
||||
|
||||
$structure = DatabaseModel::getDatabaseStructure($database_name);
|
||||
|
||||
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
@@ -134,6 +134,22 @@ class DatabaseController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get columns for a specific table (AJAX endpoint)
|
||||
* @param string $database_name
|
||||
* @param string $table_name
|
||||
*/
|
||||
public function getColumns($database_name, $table_name)
|
||||
{
|
||||
$columns = TableModel::getTableColumns($database_name, $table_name);
|
||||
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'columns' => $columns
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Export database as raw SQL text
|
||||
* @param string $database_name
|
||||
|
||||
226
application/controller/GalleryController.php
Normal file
226
application/controller/GalleryController.php
Normal file
@@ -0,0 +1,226 @@
|
||||
<?php
|
||||
|
||||
class GalleryController extends Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function index($page = 1)
|
||||
{
|
||||
$page = (int)$page;
|
||||
$per_page = 24;
|
||||
|
||||
$this->View->render('gallery/index', array(
|
||||
'images' => GalleryModel::getAllImages(null, $page, $per_page),
|
||||
'total_images' => GalleryModel::getImageCount(),
|
||||
'current_page' => $page,
|
||||
'per_page' => $per_page
|
||||
));
|
||||
}
|
||||
|
||||
public function my($page = 1)
|
||||
{
|
||||
Auth::checkAuthentication();
|
||||
|
||||
$page = (int)$page;
|
||||
$per_page = 24;
|
||||
$user_id = Session::get('user_id');
|
||||
|
||||
$this->View->render('gallery/my', array(
|
||||
'images' => GalleryModel::getAllImages($user_id, $page, $per_page),
|
||||
'total_images' => GalleryModel::getImageCount($user_id),
|
||||
'current_page' => $page,
|
||||
'per_page' => $per_page
|
||||
));
|
||||
}
|
||||
|
||||
public function view($image_id)
|
||||
{
|
||||
$image = GalleryModel::getImage($image_id);
|
||||
|
||||
if (!$image) {
|
||||
Redirect::to('gallery');
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$image->is_public && $image->user_id != Session::get('user_id')) {
|
||||
Session::add('feedback_negative', 'This image is private');
|
||||
Redirect::to('gallery');
|
||||
return;
|
||||
}
|
||||
|
||||
$this->View->render('gallery/view', array(
|
||||
'image' => $image
|
||||
));
|
||||
}
|
||||
|
||||
public function upload()
|
||||
{
|
||||
// Check if AJAX request first
|
||||
$isAjax = $this->isAjaxRequest();
|
||||
|
||||
// Check authentication - return JSON error for AJAX
|
||||
if (!Session::userIsLoggedIn()) {
|
||||
if ($isAjax) {
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(['success' => false, 'message' => 'You must be logged in to upload']);
|
||||
return;
|
||||
}
|
||||
Redirect::to('login/index');
|
||||
return;
|
||||
}
|
||||
|
||||
// Handle POST request (form submission)
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
|
||||
// Check if image was uploaded
|
||||
if (!isset($_FILES['image']) || $_FILES['image']['error'] !== UPLOAD_ERR_OK) {
|
||||
$errorMsg = 'Please select an image to upload';
|
||||
if (isset($_FILES['image'])) {
|
||||
switch ($_FILES['image']['error']) {
|
||||
case UPLOAD_ERR_INI_SIZE:
|
||||
case UPLOAD_ERR_FORM_SIZE:
|
||||
$errorMsg = 'File is too large';
|
||||
break;
|
||||
case UPLOAD_ERR_NO_FILE:
|
||||
$errorMsg = 'No file was uploaded';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($isAjax) {
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(['success' => false, 'message' => $errorMsg]);
|
||||
return;
|
||||
}
|
||||
Session::add('feedback_negative', $errorMsg);
|
||||
$this->View->render('gallery/upload');
|
||||
return;
|
||||
}
|
||||
|
||||
$title = Request::post('title');
|
||||
$description = Request::post('description');
|
||||
$is_public = Request::post('is_public') ? 1 : 0;
|
||||
|
||||
$image_id = GalleryModel::uploadImage($_FILES['image'], $title, $description, $is_public);
|
||||
|
||||
if ($isAjax) {
|
||||
header('Content-Type: application/json');
|
||||
if ($image_id) {
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'message' => 'Image uploaded successfully',
|
||||
'image_id' => $image_id
|
||||
]);
|
||||
} else {
|
||||
echo json_encode([
|
||||
'success' => false,
|
||||
'message' => Session::get('feedback_negative')[0] ?? 'Failed to upload image'
|
||||
]);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if ($image_id) {
|
||||
Redirect::to('gallery/success/' . $image_id);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$this->View->render('gallery/upload');
|
||||
}
|
||||
|
||||
public function success($image_id)
|
||||
{
|
||||
Auth::checkAuthentication();
|
||||
|
||||
$image = GalleryModel::getImage($image_id);
|
||||
|
||||
if (!$image || $image->user_id != Session::get('user_id')) {
|
||||
Redirect::to('gallery');
|
||||
return;
|
||||
}
|
||||
|
||||
$this->View->render('gallery/success', array(
|
||||
'image' => $image
|
||||
));
|
||||
}
|
||||
|
||||
public function edit($image_id)
|
||||
{
|
||||
Auth::checkAuthentication();
|
||||
|
||||
$image = GalleryModel::getImage($image_id);
|
||||
|
||||
if (!$image || $image->user_id != Session::get('user_id')) {
|
||||
Session::add('feedback_negative', 'Image not found or access denied');
|
||||
Redirect::to('gallery/my');
|
||||
return;
|
||||
}
|
||||
|
||||
if (Request::post('submit_edit')) {
|
||||
$title = Request::post('title');
|
||||
$description = Request::post('description');
|
||||
$is_public = Request::post('is_public') ? 1 : 0;
|
||||
|
||||
if (GalleryModel::updateImage($image_id, $title, $description, $is_public)) {
|
||||
Session::add('feedback_positive', 'Image updated successfully');
|
||||
Redirect::to('gallery/view/' . $image_id);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$this->View->render('gallery/edit', array(
|
||||
'image' => $image
|
||||
));
|
||||
}
|
||||
|
||||
public function delete($image_id)
|
||||
{
|
||||
Auth::checkAuthentication();
|
||||
|
||||
$success = GalleryModel::deleteImage($image_id);
|
||||
|
||||
if ($this->isAjaxRequest()) {
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode([
|
||||
'success' => $success,
|
||||
'message' => $success ? 'Image deleted successfully' : 'Failed to delete image'
|
||||
]);
|
||||
return;
|
||||
}
|
||||
|
||||
if ($success) {
|
||||
Session::add('feedback_positive', 'Image deleted successfully');
|
||||
} else {
|
||||
Session::add('feedback_negative', 'Failed to delete image');
|
||||
}
|
||||
|
||||
Redirect::to('gallery/my');
|
||||
}
|
||||
|
||||
public function image($image_id, $type = 'full')
|
||||
{
|
||||
$thumbnail = ($type === 'thumb');
|
||||
$result = GalleryModel::getDecryptedImage($image_id, $thumbnail);
|
||||
|
||||
if (!$result || !$result['data']) {
|
||||
header('HTTP/1.0 404 Not Found');
|
||||
exit;
|
||||
}
|
||||
|
||||
header('Content-Type: ' . $result['mime_type']);
|
||||
header('Content-Length: ' . strlen($result['data']));
|
||||
header('Cache-Control: public, max-age=31536000');
|
||||
echo $result['data'];
|
||||
exit;
|
||||
}
|
||||
|
||||
private function isAjaxRequest()
|
||||
{
|
||||
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
|
||||
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user