« Back to History
post_image_map.php
|
20260722_120325.php
Initial Domain Snapshot
Copy Code
<?php // admin/post_image_map.php // TEMP DEBUG: show all errors (remove after debugging) ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); // small check to confirm PHP is running to this point echo "<pre>DEBUG START\n</pre>"; session_start(); require_once __DIR__ . '/lib/helpers.php'; // DB config (or require common config) $DB_HOST = 'localhost'; $DB_NAME = 'u410576661_shayari'; $DB_USER = 'u410576661_shayari'; $DB_PASS = 'Shayari@9898'; try { $pdo = new PDO("mysql:host={$DB_HOST};dbname={$DB_NAME};charset=utf8mb4", $DB_USER, $DB_PASS, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]); } catch (Exception $e) { die("DB connect error: " . $e->getMessage()); } $uploads_base = realpath(__DIR__ . '/uploads'); $web_base = 'uploads'; $folders = []; // scan uploads folder for subfolders if ($uploads_base && is_dir($uploads_base)) { foreach (scandir($uploads_base) as $d) { if ($d === '.' || $d === '..') continue; if (is_dir($uploads_base . DIRECTORY_SEPARATOR . $d)) $folders[] = $d; } } sort($folders); // handle save $errors = []; $success = null; if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['save'])) { // expected arrays: post_id[], folder[] $post_ids = $_POST['post_id'] ?? []; $folders_sel = $_POST['folder'] ?? []; if (!is_array($post_ids)) $errors[] = "Invalid data."; else { $pdo->beginTransaction(); try { $up = $pdo->prepare("INSERT INTO post_image_folder (post_id, folder_name) VALUES (:pid, :f) ON DUPLICATE KEY UPDATE folder_name = VALUES(folder_name), updated_at = NOW()"); for ($i = 0; $i < count($post_ids); $i++) { $pid = (int)$post_ids[$i]; $f = trim($folders_sel[$i] ?? ''); if ($f === '') { // if blank, remove mapping (optional): delete existing mapping $del = $pdo->prepare("DELETE FROM post_image_folder WHERE post_id = :pid"); $del->execute([':pid' => $pid]); } else { // ensure chosen folder exists in scanned list to avoid malicious input if (!in_array($f, $folders, true)) continue; $up->execute([':pid' => $pid, ':f' => $f]); } } $pdo->commit(); $success = "Mappings saved."; } catch (Exception $ex) { $pdo->rollBack(); $errors[] = "Save failed: " . $ex->getMessage(); } } } // load posts (limit as needed) $posts = $pdo->query("SELECT id, title FROM posts ORDER BY created_at DESC LIMIT 200")->fetchAll(); // load existing mappings $map = []; $rows = $pdo->query("SELECT post_id, folder_name FROM post_image_folder")->fetchAll(); foreach ($rows as $r) $map[$r['post_id']] = $r['folder_name']; ?> <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Post → Image Folder Mapping</title> <style> body{font-family:system-ui;margin:18px;background:#f6f7fb} .wrap{max-width:1100px;margin:auto;background:#fff;padding:16px;border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.06)} table{width:100%;border-collapse:collapse} th,td{padding:8px;border:1px solid #eee} select{padding:6px} .btn{padding:8px 12px;background:#2563eb;color:#fff;border:none;border-radius:6px;cursor:pointer} .notice{padding:10px;border-radius:6px;margin-bottom:12px} .ok{background:#e6ffef;border:1px solid #bdeacb;color:#064e3b} .err{background:#fff1f2;border:1px solid #ffccd5;color:#9b1c1c} </style> </head> <body> <div class="wrap"> <h2>Assign Image Folder to Posts</h2> <?php if ($success): ?><div class="notice ok"><?php echo htmlspecialchars($success); ?></div><?php endif; ?> <?php if ($errors): ?><div class="notice err"><ul><?php foreach($errors as $er) echo '<li>'.htmlspecialchars($er).'</li>'; ?></ul></div><?php endif; ?> <form method="post"> <table> <thead><tr><th>Post</th><th>Choose Folder (leave blank to remove mapping)</th></tr></thead> <tbody> <?php foreach ($posts as $p): $pid = (int)$p['id']; $cur = $map[$pid] ?? ''; ?> <tr> <td> <strong><?php echo htmlspecialchars($p['title']); ?></strong><br> <input type="hidden" name="post_id[]" value="<?php echo $pid; ?>"> </td> <td> <select name="folder[]"> <option value=""><?php echo $cur ? "— Remove mapping —" : "— No mapping —"; ?></option> <?php foreach ($folders as $f): ?> <option value="<?php echo htmlspecialchars($f); ?>" <?php echo $f === $cur ? 'selected' : ''; ?>> <?php echo htmlspecialchars($f); ?> </option> <?php endforeach; ?> </select> </td> </tr> <?php endforeach; ?> </tbody> </table> <div style="margin-top:12px"><button class="btn" type="submit" name="save">Save mappings</button></div> </form> <div style="margin-top:12px;font-size:13px;color:#555"> <strong>Notes:</strong> <ul> <li>Folders scanned from <code><?php echo htmlspecialchars($uploads_base); ?></code>.</li> <li>When a post has a mapped folder, post_view.php will use images from that folder for interleaving.</li> <li>Leave dropdown blank to remove the mapping (so post will show no images or fallback behavior).</li> </ul> </div> </div> </body> </html>