<?php
/*
 * Dynamic Image Sitemap — GuatemalaPhotoStock
 * Helps Google index photos with title and license metadata.
 * Submit to Google Search Console: https://guatemalaphotostock.com/sitemap_images.php
 */

error_reporting(0);
ini_set('display_errors', '0');

define('BASE_PATH', dirname(__FILE__));

/* ------------------------------------------------------------------ */
/* Minimal bootstrap — DB only, skip full initialize.php              */
/* ------------------------------------------------------------------ */

require_once BASE_PATH . '/assets/includes/db.config.php';

$config = [];
$page   = '';
require_once BASE_PATH . '/assets/includes/db.conn.php';

require_once BASE_PATH . '/assets/includes/enc.functions.php';

if (!function_exists('cleanForSEO')) {
    function cleanForSEO($input) {
        $clean = str_replace('/', '', $input);
        $clean = str_replace(' ', '-', $clean);
        $clean = str_replace("'", '', $clean);
        $clean = str_replace('%', '', $clean);
        $clean = str_replace('"', '', $clean);
        return $clean;
    }
}

// Get site URL directly from DB
$_settingsRow = mysqli_fetch_assoc(mysqli_query($db,
    "SELECT site_url FROM {$dbinfo['pre']}settings WHERE settings_id = 1"));

$siteURL    = rtrim($_settingsRow['site_url'] ?? '', '/');
$encryptIDs = false; // site uses plain numeric IDs in SEO URLs
$licenseUrl = $siteURL . '/purchase.agreement.php';

/* ------------------------------------------------------------------ */
/* Helper                                                               */
/* ------------------------------------------------------------------ */

function imgSitemapEsc($str) {
    return htmlspecialchars(html_entity_decode(strip_tags((string)$str), ENT_QUOTES | ENT_HTML5, 'UTF-8'), ENT_XML1, 'UTF-8');
}

/* ------------------------------------------------------------------ */
/* Query active media with optional description                        */
/* ------------------------------------------------------------------ */

try {
    $mediaResult = mysqli_query($db,
        "SELECT m.media_id, m.title, m.folder_id, m.date_added,
                md.field_value AS description
         FROM {$dbinfo['pre']}media m
         LEFT JOIN {$dbinfo['pre']}media_details md
           ON md.media_id = m.media_id AND md.field_name = 'description'
         WHERE m.active = 1
           AND m.approval_status = 1
         ORDER BY m.date_added DESC
         LIMIT 49000"
    );
} catch (Exception $e) {
    // media_details table may not exist — fall back to simple query
    $mediaResult = mysqli_query($db,
        "SELECT media_id, title, folder_id, date_added, '' AS description
         FROM {$dbinfo['pre']}media
         WHERE active = 1 AND approval_status = 1
         ORDER BY date_added DESC
         LIMIT 49000"
    );
}

/* ------------------------------------------------------------------ */
/* Output                                                               */
/* ------------------------------------------------------------------ */

header('Content-Type: application/xml; charset=utf-8');

echo '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"' . "\n";
echo '        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">' . "\n";

if ($mediaResult) {
    while ($row = mysqli_fetch_assoc($mediaResult)) {
        $mediaID   = $encryptIDs ? k_encrypt($row['media_id']) : $row['media_id'];
        $folderID  = k_encrypt($row['folder_id']); // image.php always expects encrypted folderID
        $seoName   = cleanForSEO($row['title'] ?: 'photo');
        $pageUrl   = $siteURL . '/photo/' . $mediaID . '/' . $seoName;
        $imageUrl  = $siteURL . '/image.php?mediaID=' . rawurlencode(k_encrypt($row['media_id']))
                   . '&amp;type=sample&amp;folderID=' . rawurlencode($folderID);
        $title     = imgSitemapEsc($row['title']);
        $desc      = imgSitemapEsc($row['description'] ?? '');

        echo "  <url>\n";
        echo '    <loc>' . imgSitemapEsc($pageUrl) . "</loc>\n";
        echo "    <image:image>\n";
        echo '      <image:loc>' . imgSitemapEsc($imageUrl) . "</image:loc>\n";
        if ($title) echo '      <image:title>' . $title . "</image:title>\n";
        if ($desc)  echo '      <image:caption>' . $desc . "</image:caption>\n";
        echo '      <image:license>' . imgSitemapEsc($licenseUrl) . "</image:license>\n";
        echo "    </image:image>\n";
        echo "  </url>\n";
    }
}

echo '</urlset>' . "\n";
