From 649064caebe090411f70581cf5bb626991dbc9c1 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Wed, 25 Feb 2026 00:48:51 +0000 Subject: [PATCH] Massal upload --- app/Controllers/AdminController.php | 66 ++++++++++++++++- assets/uploads/icons/699e4457a8386.jpg | Bin 0 -> 25134 bytes assets/uploads/icons/699e46a5c9940.jpg | Bin 0 -> 6560 bytes assets/uploads/icons/699e46a5cb3a2.jpg | Bin 0 -> 6560 bytes index.php | 2 + views/admin/apks/mass_upload.php | 96 +++++++++++++++++++++++++ views/admin/header.php | 3 + 7 files changed, 164 insertions(+), 3 deletions(-) create mode 100644 assets/uploads/icons/699e4457a8386.jpg create mode 100644 assets/uploads/icons/699e46a5c9940.jpg create mode 100644 assets/uploads/icons/699e46a5cb3a2.jpg create mode 100644 views/admin/apks/mass_upload.php diff --git a/app/Controllers/AdminController.php b/app/Controllers/AdminController.php index f40fec8..18a1e6a 100644 --- a/app/Controllers/AdminController.php +++ b/app/Controllers/AdminController.php @@ -87,7 +87,7 @@ class AdminController extends Controller { $version = $_POST['version']; $image_url = $_POST['image_url']; $download_url = $_POST['download_url']; - $category_id = $_POST['category_id'] ?? null; + $category_id = !empty($_POST['category_id']) ? $_POST['category_id'] : null; $status = $_POST['status'] ?? 'published'; $is_vip = isset($_POST['is_vip']) ? 1 : 0; @@ -100,6 +100,66 @@ class AdminController extends Controller { $this->redirect('/admin/apks'); } + public function massUploadForm() { + $this->checkAuth(); + $db = db_pdo(); + $categories = $db->query("SELECT * FROM categories")->fetchAll(); + $this->view('admin/apks/mass_upload', ['categories' => $categories]); + } + + public function massUpload() { + $this->checkAuth(); + $titles = $_POST['titles'] ?? []; + $versions = $_POST['versions'] ?? []; + $download_urls = $_POST['download_urls'] ?? []; + $category_id = !empty($_POST['category_id']) ? $_POST['category_id'] : null; + $status = $_POST['status'] ?? 'published'; + + $db = db_pdo(); + $stmt = $db->prepare("INSERT INTO apks (title, slug, description, version, icon_path, download_url, category_id, status, is_vip, display_order) VALUES (?, ?, ?, ?, ?, ?, ?, ?, 0, 0)"); + + foreach ($titles as $index => $title) { + if (empty($title)) continue; + $slug = $this->slugify($title); + $version = $versions[$index] ?? ''; + $download_url = $download_urls[$index] ?? ''; + $description = $title; // Default description to title for mass upload + + $icon_path = $this->handleMassUploadFile('icon_files', $index, true); + + $stmt->execute([$title, $slug, $description, $version, $icon_path, $download_url, $category_id, $status]); + } + + $this->redirect('/admin/apks'); + } + + private function handleMassUploadFile($field, $index, $compress = false) { + if (!isset($_FILES[$field]['name'][$index]) || $_FILES[$field]['error'][$index] !== UPLOAD_ERR_OK) { + return null; + } + + $uploadDir = 'assets/uploads/icons/'; + if (!is_dir($uploadDir)) { + mkdir($uploadDir, 0775, true); + } + + $ext = pathinfo($_FILES[$field]['name'][$index], PATHINFO_EXTENSION); + $fileName = uniqid() . '.' . $ext; + $targetPath = $uploadDir . $fileName; + + if ($compress) { + if (compress_image($_FILES[$field]['tmp_name'][$index], $targetPath, 75)) { + return $targetPath; + } + } else { + if (move_uploaded_file($_FILES[$field]['tmp_name'][$index], $targetPath)) { + return $targetPath; + } + } + + return null; + } + public function editApkForm($params) { $this->checkAuth(); $apkService = new ApkService(); @@ -116,7 +176,7 @@ class AdminController extends Controller { $version = $_POST['version']; $image_url = $_POST['image_url']; $download_url = $_POST['download_url']; - $category_id = $_POST['category_id'] ?? null; + $category_id = !empty($_POST['category_id']) ? $_POST['category_id'] : null; $status = $_POST['status']; $is_vip = isset($_POST['is_vip']) ? 1 : 0; @@ -284,4 +344,4 @@ class AdminController extends Controller { $text = strtolower($text); return empty($text) ? 'n-a' : $text; } -} \ No newline at end of file +} diff --git a/assets/uploads/icons/699e4457a8386.jpg b/assets/uploads/icons/699e4457a8386.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d4e527b7c492bce01dd5f0b9c47718084261dc4e GIT binary patch literal 25134 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

hL%CkOD--SUm4N(P`bp2OMY-EbEgMxOw9Ti0xU` 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 literal 0 HcmV?d00001 diff --git a/assets/uploads/icons/699e46a5c9940.jpg b/assets/uploads/icons/699e46a5c9940.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cbf5c9693d30c748030151d4dd13b5afc4423902 GIT binary patch literal 6560 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 YCmvV+i>UD42+48n&@Dj2yRb9=4gGYwF#rGn literal 0 HcmV?d00001 diff --git a/assets/uploads/icons/699e46a5cb3a2.jpg b/assets/uploads/icons/699e46a5cb3a2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cbf5c9693d30c748030151d4dd13b5afc4423902 GIT binary patch literal 6560 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 YCmvV+i>UD42+48n&@Dj2yRb9=4gGYwF#rGn literal 0 HcmV?d00001 diff --git a/index.php b/index.php index 9ee36e7..6b92362 100644 --- a/index.php +++ b/index.php @@ -74,6 +74,8 @@ $router->post('/admin/settings', 'AdminController@saveSettings'); // Admin APKs $router->get('/admin/apks', 'AdminController@apks'); +$router->get('/admin/apks/mass-upload', 'AdminController@massUploadForm'); +$router->post('/admin/apks/mass-upload', 'AdminController@massUpload'); $router->get('/admin/apks/add', 'AdminController@addApkForm'); $router->post('/admin/apks/add', 'AdminController@addApk'); $router->get('/admin/apks/edit/:id', 'AdminController@editApkForm'); diff --git a/views/admin/apks/mass_upload.php b/views/admin/apks/mass_upload.php new file mode 100644 index 0000000..86a507d --- /dev/null +++ b/views/admin/apks/mass_upload.php @@ -0,0 +1,96 @@ + + +

+
+
+
+
+
Mass Upload APKs
+ +
+
+
+
+
+ + +
+
+ + +
+
+ +
+ + + + + + + + + + + + + + + + + + + +
TitleVersionIcon FileDownload URL
+
+ +
+ Cancel + +
+
+
+
+
+
+
+ + + + diff --git a/views/admin/header.php b/views/admin/header.php index 0c901ab..3ee897d 100644 --- a/views/admin/header.php +++ b/views/admin/header.php @@ -59,6 +59,9 @@ +