diff --git a/app/Controllers/AdminController.php b/app/Controllers/AdminController.php
index eadb807..de176de 100644
--- a/app/Controllers/AdminController.php
+++ b/app/Controllers/AdminController.php
@@ -418,75 +418,6 @@ private function getReferralStats() {
$this->redirect('/admin/apks');
}
- // Newsletter Management
- public function newsletter() {
- $this->checkAuth();
- $db = db_pdo();
- $subscribers = $db->query("SELECT * FROM newsletter_subscribers ORDER BY created_at DESC")->fetchAll();
- $this->view('admin/newsletter/index', ['subscribers' => $subscribers]);
- }
-
- public function deleteSubscriber($params) {
- $this->checkAuth();
- $db = db_pdo();
- $stmt = $db->prepare("DELETE FROM newsletter_subscribers WHERE id = ?");
- $stmt->execute([$params['id']]);
- $this->redirect('/admin/newsletter');
- }
-
- public function exportSubscribers() {
- $this->checkAuth();
- $db = db_pdo();
- $subscribers = $db->query("SELECT email, created_at FROM newsletter_subscribers ORDER BY created_at DESC")->fetchAll(\PDO::FETCH_ASSOC);
-
- header('Content-Type: text/csv; charset=utf-8');
- header('Content-Disposition: attachment; filename=subscribers_' . date('Y-m-d') . '.csv');
- $output = fopen('php://output', 'w');
- fputcsv($output, ['Email', 'Subscribed At']);
- foreach ($subscribers as $row) {
- fputcsv($output, $row);
- }
- fclose($output);
- exit;
- }
-
- public function sendNewsletterForm() {
- $this->checkAuth();
- $db = db_pdo();
- $total_subscribers = $db->query("SELECT COUNT(*) FROM newsletter_subscribers")->fetchColumn();
- $this->view('admin/newsletter/send', ['total_subscribers' => $total_subscribers]);
- }
-
- public function sendNewsletter() {
- $this->checkAuth();
- $subject = $_POST['subject'] ?? '';
- $message = $_POST['message'] ?? '';
-
- if (empty($subject) || empty($message)) {
- $this->view('admin/newsletter/send', ['error' => 'Subject and message are required.']);
- return;
- }
-
- $db = db_pdo();
- $subscribers = $db->query("SELECT email FROM newsletter_subscribers")->fetchAll(\PDO::FETCH_COLUMN);
-
- if (empty($subscribers)) {
- $this->view('admin/newsletter/send', ['error' => 'No subscribers found.']);
- return;
- }
-
- require_once __DIR__ . '/../../mail/MailService.php';
-
- // We use BCC to prevent subscribers from seeing each other's emails
- $results = \MailService::sendMail(null, $subject, $message, null, ['bcc' => $subscribers]);
-
- if ($results['success']) {
- $this->view('admin/newsletter/send', ['success' => 'Email sent to ' . count($subscribers) . ' subscribers.']);
- } else {
- $this->view('admin/newsletter/send', ['error' => 'Failed to send email: ' . $results['error']]);
- }
- }
-
private function slugify($text) {
$text = preg_replace('~[^\pL\d]+~u', '-', $text);
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
diff --git a/index.php b/index.php
index b8cf1b6..16a30a3 100644
--- a/index.php
+++ b/index.php
@@ -1,32 +1,74 @@
post('/api/newsletter/subscribe', 'NewsletterController@subscribe');
+$router->post('/api/report', 'ContactController@ajaxReport');
+$router->post('/api/ai/chat', 'AIController@chat');
+
+// Sitemap
+$router->get('/sitemap.xml', 'SitemapController@index');
+
+// Language Switch
+$router->get('/lang/:code', function($params) {
+ $code = $params['code'];
+ \App\Services\LanguageService::setLang($code);
+ header('Location: ' . ($_SERVER['HTTP_REFERER'] ?? '/'));
+ exit;
+});
+
+// Home & APKs
$router->get('/', 'HomeController@index');
-$router->get('/apk/:slug', 'ApkController@detail');
-$router->get('/download/:slug', 'ApkController@download');
+$router->get('/apk/:slug', 'HomeController@apkDetail');
+$router->get('/download/:slug', 'HomeController@download');
+
+// Blog
+$router->get('/blog', 'BlogController@index');
+$router->get('/blog/:slug', 'BlogController@detail');
+
+// Static Pages
+$router->get('/contact', 'ContactController@index');
+$router->post('/contact', 'ContactController@submit');
+$router->get('/help-center', 'HomeController@helpCenter');
+$router->get('/privacy-policy', 'HomeController@privacyPolicy');
+$router->get('/terms-of-service', 'HomeController@termsOfService');
// Auth
$router->get('/login', 'AuthController@loginForm');
@@ -35,40 +77,36 @@ $router->get('/register', 'AuthController@registerForm');
$router->post('/register', 'AuthController@register');
$router->get('/logout', 'AuthController@logout');
$router->get('/profile', 'AuthController@profile');
-$router->post('/profile', 'AuthController@updateProfile');
+$router->post('/withdraw', 'AuthController@requestWithdrawal');
-// Admin Routes
-$router->get('/admin', 'AdminController@dashboard');
+// Admin Auth
$router->get('/admin/login', 'AdminController@loginForm');
$router->post('/admin/login', 'AdminController@login');
$router->get('/admin/logout', 'AdminController@logout');
-// Admin APKs
-$router->get('/admin/apks', 'AdminController@apks');
-$router->get('/admin/apks/add', 'AdminController@addApkForm');
-$router->post('/admin/apks/add', 'AdminController@addApk');
-$router->get('/admin/apks/edit/:id', 'AdminController@editApkForm');
-$router->post('/admin/apks/edit/:id', 'AdminController@editApk');
-$router->get('/admin/apks/delete/:id', 'AdminController@deleteApk');
-
-// Admin Categories
-$router->get('/admin/categories', 'AdminController@categories');
-$router->post('/admin/categories/add', 'AdminController@addCategory');
-$router->get('/admin/categories/delete/:id', 'AdminController@deleteCategory');
-
-// Admin Users
-$router->get('/admin/users', 'AdminController@users');
-$router->get('/admin/users/delete/:id', 'AdminController@deleteUser');
+// Admin Dashboard
+$router->get('/admin/dashboard', 'AdminController@dashboard');
// Admin Settings
$router->get('/admin/settings', 'AdminController@settingsForm');
$router->post('/admin/settings', 'AdminController@saveSettings');
-// Blog
-$router->get('/blog', 'BlogController@index');
-$router->get('/blog/:slug', 'BlogController@detail');
+// Admin Users
+$router->get('/admin/users', 'AdminController@users');
+$router->post('/admin/users/toggle-ban/:id', 'AdminController@toggleBan');
-// Admin Blog
+// 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');
+$router->post('/admin/apks/edit/:id', 'AdminController@editApk');
+$router->get('/admin/apks/delete/:id', 'AdminController@deleteApk');
+$router->post('/admin/apks/reorder', 'AdminController@updateOrder');
+
+// Admin Posts (Blog)
$router->get('/admin/posts', 'AdminController@posts');
$router->get('/admin/posts/add', 'AdminController@addPostForm');
$router->post('/admin/posts/add', 'AdminController@addPost');
@@ -76,19 +114,14 @@ $router->get('/admin/posts/edit/:id', 'AdminController@editPostForm');
$router->post('/admin/posts/edit/:id', 'AdminController@editPost');
$router->get('/admin/posts/delete/:id', 'AdminController@deletePost');
-// Newsletter
-$router->post('/newsletter/subscribe', 'NewsletterController@subscribe');
-$router->get('/admin/newsletter', 'AdminController@newsletter');
-$router->get('/admin/newsletter/delete/:id', 'AdminController@deleteSubscriber');
-$router->get('/admin/newsletter/export', 'AdminController@exportSubscribers');
-$router->get('/admin/newsletter/send', 'AdminController@sendNewsletterForm');
-$router->post('/admin/newsletter/send', 'AdminController@sendNewsletter');
+// Admin Categories
+$router->get('/admin/categories', 'AdminController@categories');
+$router->post('/admin/categories/add', 'AdminController@addCategory');
+$router->get('/admin/categories/delete/:id', 'AdminController@deleteCategory');
-// Contact
-$router->get('/contact', 'ContactController@index');
-$router->post('/contact', 'ContactController@send');
-
-// Sitemap
-$router->get('/sitemap.xml', 'SitemapController@index');
+// Admin Withdrawals
+$router->get('/admin/withdrawals', 'AdminController@withdrawals');
+$router->get('/admin/withdrawals/approve/:id', 'AdminController@approveWithdrawal');
+$router->get('/admin/withdrawals/reject/:id', 'AdminController@rejectWithdrawal');
$router->dispatch();
\ No newline at end of file
diff --git a/views/admin/header.php b/views/admin/header.php
index 03eb8a9..a530bf6 100644
--- a/views/admin/header.php
+++ b/views/admin/header.php
@@ -194,9 +194,6 @@
Blog
-
- Newsletter
-
@@ -257,4 +254,4 @@
-
\ No newline at end of file
+
diff --git a/views/admin/newsletter/index.php b/views/admin/newsletter/index.php
deleted file mode 100644
index 74357b7..0000000
--- a/views/admin/newsletter/index.php
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- | Email |
- Subscribed At |
- |
-
-
-
-
-
- |
-
- |
-
-
- |
-
-
- Delete
-
- |
-
-
-
-
- |
- No subscribers found.
- |
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/views/admin/newsletter/send.php b/views/admin/newsletter/send.php
deleted file mode 100644
index 763ce29..0000000
--- a/views/admin/newsletter/send.php
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- This email will be sent to all subscribers via BCC.
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file