Priority File Manager
📁 public_html
Base Directory:
/home/ecedu/public_html
/home/ecedu/public_html/wp-content/plugins
/home/ecedu/public_html/wp-content
/home/ecedu
/var/www
/var/www/cgi-bin
/var/www/html
public_html
/
cce
/
service
/home/ecedu/public_html/cce/service
Name
Type
Size
Actions
📁
..
Folder
-
Delete
Rename
📄
commentAdd.php
File
2848
Delete
Rename
Edit
Download
📄
commentRead.php
File
1326
Delete
Rename
Edit
Download
📁
images
Folder
-
Delete
Rename
📄
loadMoreNews.php
File
3073
Delete
Rename
Edit
Download
📄
session.php
File
536
Delete
Rename
Edit
Download
Upload
Create Folder
📝 Editing:
loadMoreNews.php
Size: 3,073 bytes
Lines: 98
Type: .php
💾 Save
Cancel
✕
<?php ini_set('display_errors', 1); error_reporting(E_ALL); header('Content-Type: application/json'); require_once __DIR__ . '/../Models/NewsModel.php'; $repo = new NewsModel(); // التحقق من المدخلات $lang = in_array($_GET['lang'] ?? 'ar', ['ar', 'ku', 'en']) ? $_GET['lang'] : 'ar'; $search = trim((string)($_GET['search'] ?? '')); $typeId = (int)($_GET['typeId'] ?? 0); $offset = max(0, (int)($_GET['offset'] ?? 0)); $limit = 10; // التحقق من وجود معايير بحث صالحة if ($typeId <= 0 && $search === '') { http_response_code(400); echo json_encode(['error' => 'يجب توفير إما typeId أو search'], JSON_UNESCAPED_UNICODE); exit; } $total = 0; $newsList = []; $table = ''; try { if ($typeId > 0) { $table = $repo->getTableName($typeId); $total = $repo->getCountByType($typeId); $newsList = $repo->getListNewsByType($typeId, $limit, $offset); } else { $total = $repo->getCountByText($search, $lang); $newsList = $repo->getListNewsByText($search, $lang, $limit, $offset); } } catch (Throwable $e) { http_response_code(500); echo json_encode(['error' => $e->getMessage()], JSON_UNESCAPED_UNICODE); exit; } /** * ترجمة الحقل حسب اللغة المطلوبة */ function localize(array $row, string $lang, string $base): string { $suffix = $lang === 'ku' ? '1' : ($lang === 'en' ? '2' : ''); $key = $base . $suffix; return $row[$key] ?? $row[$base] ?? ''; } /** * تقصير النص مع الحفاظ على الكلمات كاملة */ function snippet(string $text, int $max): string { $clean = strip_tags($text); if (mb_strlen($clean) <= $max) { return $clean; } $cut = mb_strrpos($clean = mb_substr($clean, 0, $max), ' '); return mb_substr($clean, 0, $cut ?: $max) . ' …'; } /** * بناء صف البيانات للعرض */ function buildNewsRow(array $n, string $lang, string $table, int $type): array { // تنظيف اسم الجدول لاستخدامه في مسار الصورة $cleanTable = preg_replace('/[^a-zA-Z0-9_]/', '', $table); return [ 'id' => (int)($n['news_id'] ?? 0), 'type' => $type, 'type_id' => (int)($n['type_id'] ?? 0), 'title' => localize($n, $lang, 'news_title'), 'description' => snippet(localize($n, $lang, 'news_description'), 300), 'image' => "service/images/news/{$cleanTable}/img_{$n['news_id']}." . ($n['img_ext'] ?? 'jpg'), 'author' => $n['author'] ?? '', 'date' => date('Y-m-d', strtotime($n['news_date'] ?? 'now')), 'date_raw' => $n['news_date'] ?? date('Y-m-d H:i:s'), ]; } // بناء البيانات للواجهة $rows = []; foreach ($newsList as $newsItem) { $rows[] = buildNewsRow($newsItem, $lang, $table,$typeId); } echo json_encode( ['total' => $total, 'rows' => $rows], JSON_UNESCAPED_UNICODE | JSON_NUMERIC_CHECK ); exit;
✅ File saved successfully!