<?php
/**
 * Classe LegalPagesManager - Gestion des pages légales - SERVICES-AE
 * Gère les cookies, termes de service, politique de confidentialité
 */

class LegalPagesManager {
    private $pdo;
    private $table = 'legal_pages';
    
    public function __construct($pdo) {
        $this->pdo = $pdo;
    }
    
    /**
     * Créer la table des pages légales si elle n'existe pas
     */
    public function createTable() {
        $sql = "CREATE TABLE IF NOT EXISTS `{$this->table}` (
          `id` int(11) NOT NULL AUTO_INCREMENT,
          `page_type` varchar(50) NOT NULL UNIQUE,
          `title` varchar(255) NOT NULL,
          `content` longtext NOT NULL,
          `meta_description` text,
          `status` enum('active','inactive') NOT NULL DEFAULT 'active',
          `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
          `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
          PRIMARY KEY (`id`),
          UNIQUE KEY `page_type` (`page_type`),
          KEY `status` (`status`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci";
        
        try {
            $this->pdo->exec($sql);
            
            // Insérer les pages par défaut
            $this->insertDefaultPages();
            
            return true;
        } catch (PDOException $e) {
            error_log("LegalPagesManager::createTable Error: " . $e->getMessage());
            return false;
        }
    }
        /**
         * Méthode publique pour forcer la création de la table et l'insertion des pages par défaut
         */
        public function forceInit() {
            $this->createTable();
        }
    
    /**
     * Insérer les pages légales par défaut
     */
    private function insertDefaultPages() {
        $defaultPages = [
            [
                'page_type' => 'cookies',
                'title' => 'Politique de Cookies',
                'content' => $this->getDefaultCookiesContent(),
                'meta_description' => 'Politique de cookies de SERVICES-AE - Comment nous utilisons les cookies pour améliorer votre expérience.'
            ],
            [
                'page_type' => 'terms',
                'title' => 'Conditions Générales d\'Utilisation',
                'content' => $this->getDefaultTermsContent(),
                'meta_description' => 'Conditions générales d\'utilisation de SERVICES-AE - Termes et conditions pour l\'utilisation de nos services.'
            ],
            [
                'page_type' => 'privacy',
                'title' => 'Politique de Confidentialité',
                'content' => $this->getDefaultPrivacyContent(),
                'meta_description' => 'Politique de confidentialité de SERVICES-AE - Comment nous protégeons et utilisons vos données personnelles.'
            ]
        ];
        
        foreach ($defaultPages as $page) {
            try {
                $stmt = $this->pdo->prepare("
                    INSERT IGNORE INTO {$this->table} 
                    (page_type, title, content, meta_description, status) 
                    VALUES (?, ?, ?, ?, 'active')
                ");
                $stmt->execute([
                    $page['page_type'],
                    $page['title'],
                    $page['content'],
                    $page['meta_description']
                ]);
            } catch (PDOException $e) {
                error_log("Error inserting default page {$page['page_type']}: " . $e->getMessage());
            }
        }
    }
    
    /**
     * Obtenir toutes les pages légales
     */
    public function getAllPages() {
        try {
            $stmt = $this->pdo->prepare("SELECT * FROM {$this->table} ORDER BY page_type ASC");
            $stmt->execute();
            return $stmt->fetchAll(PDO::FETCH_ASSOC);
        } catch (PDOException $e) {
            error_log("LegalPagesManager::getAllPages Error: " . $e->getMessage());
            return [];
        }
    }
    
    /**
     * Obtenir une page par type
     */
    public function getByType($pageType) {
        try {
            $stmt = $this->pdo->prepare("SELECT * FROM {$this->table} WHERE page_type = ?");
            $stmt->execute([$pageType]);
            return $stmt->fetch(PDO::FETCH_ASSOC);
        } catch (PDOException $e) {
            error_log("LegalPagesManager::getByType Error: " . $e->getMessage());
            return false;
        }
    }
    
    /**
     * Obtenir une page par ID
     */
    public function getById($id) {
        try {
            $stmt = $this->pdo->prepare("SELECT * FROM {$this->table} WHERE id = ?");
            $stmt->execute([$id]);
            return $stmt->fetch(PDO::FETCH_ASSOC);
        } catch (PDOException $e) {
            error_log("LegalPagesManager::getById Error: " . $e->getMessage());
            return false;
        }
    }
    
    /**
     * Mettre à jour une page légale
     */
    public function update($id, $data) {
        try {
            $sql = "UPDATE {$this->table} SET 
                    title = ?, content = ?, meta_description = ?, 
                    status = ?, updated_at = NOW() 
                    WHERE id = ?";
                    
            $params = [
                $data['title'],
                $data['content'],
                $data['meta_description'],
                $data['status'],
                $id
            ];
            
            $stmt = $this->pdo->prepare($sql);
            return $stmt->execute($params);
            
        } catch (PDOException $e) {
            error_log("LegalPagesManager::update Error: " . $e->getMessage());
            return false;
        }
    }
    
    /**
     * Vérifier si la table existe
     */
    public function tableExists() {
        try {
            $stmt = $this->pdo->query("SHOW TABLES LIKE '{$this->table}'");
            return $stmt->rowCount() > 0;
        } catch (PDOException $e) {
            return false;
        }
    }
    
    /**
     * Contenu par défaut pour la politique de cookies
     */
    private function getDefaultCookiesContent() {
        return '
<div class="container my-5">
    <h1>Politique de Cookies</h1>
    <p class="lead">Dernière mise à jour : ' . date('d/m/Y') . '</p>
    
    <h2>Qu\'est-ce qu\'un cookie ?</h2>
    <p>Un cookie est un petit fichier texte stocké sur votre ordinateur ou appareil mobile lorsque vous visitez notre site web. Les cookies nous permettent de reconnaître votre appareil et de stocker certaines informations sur vos préférences ou actions passées.</p>
    
    <h2>Types de cookies utilisés</h2>
    
    <h3>Cookies essentiels</h3>
    <p>Ces cookies sont nécessaires au fonctionnement du site web et ne peuvent pas être désactivés dans nos systèmes. Ils sont généralement définis en réponse à des actions que vous effectuez et qui constituent une demande de services.</p>
    
    <h3>Cookies de performance</h3>
    <p>Ces cookies nous permettent de compter les visites et les sources de trafic afin de mesurer et d\'améliorer les performances de notre site.</p>
    
    <h3>Cookies de fonctionnalité</h3>
    <p>Ces cookies permettent au site web de fournir des fonctionnalités améliorées et une personnalisation.</p>
    
    <h2>Gestion des cookies</h2>
    <p>Vous pouvez contrôler et/ou supprimer les cookies comme vous le souhaitez. Vous pouvez supprimer tous les cookies déjà présents sur votre ordinateur et configurer la plupart des navigateurs pour qu\'ils les bloquent.</p>
    
    <h2>Contact</h2>
    <p>Pour toute question concernant cette politique de cookies, vous pouvez nous contacter à : <strong>contact@services-ae.com</strong></p>
</div>';
    }
    
    /**
     * Contenu par défaut pour les conditions d'utilisation
     */
    private function getDefaultTermsContent() {
        return '
<div class="container my-5">
    <h1>Conditions Générales d\'Utilisation</h1>
    <p class="lead">Dernière mise à jour : ' . date('d/m/Y') . '</p>
    
    <h2>1. Acceptation des conditions</h2>
    <p>En accédant et en utilisant ce site web, vous acceptez d\'être lié par ces conditions générales d\'utilisation et par toutes les lois et réglementations applicables.</p>
    
    <h2>2. Description du service</h2>
    <p>SERVICES-AE fournit des services de réparation informatique, de récupération de données, de solutions réseau et de support technique.</p>
    
    <h2>3. Utilisation du site</h2>
    <p>Vous vous engagez à utiliser ce site uniquement à des fins légales et d\'une manière qui ne porte pas atteinte aux droits d\'autrui ou qui ne restreint ou n\'empêche pas l\'utilisation du site par un tiers.</p>
    
    <h2>4. Propriété intellectuelle</h2>
    <p>Le contenu de ce site web, incluant mais ne se limitant pas aux textes, graphiques, logos, icônes, images, clips audio et logiciels, est la propriété de SERVICES-AE et est protégé par les lois sur le droit d\'auteur.</p>
    
    <h2>5. Limitation de responsabilité</h2>
    <p>SERVICES-AE ne sera pas responsable des dommages directs, indirects, accessoires, spéciaux ou consécutifs résultant de l\'utilisation ou de l\'impossibilité d\'utiliser ce site web.</p>
    
    <h2>6. Modifications</h2>
    <p>SERVICES-AE se réserve le droit de modifier ces conditions à tout moment. Les modifications prendront effet immédiatement après leur publication sur le site.</p>
    
    <h2>7. Contact</h2>
    <p>Pour toute question concernant ces conditions d\'utilisation, contactez-nous à : <strong>contact@services-ae.com</strong></p>
</div>';
    }
    
    /**
     * Contenu par défaut pour la politique de confidentialité
     */
    private function getDefaultPrivacyContent() {
        return '
<div class="container my-5">
    <h1>Politique de Confidentialité</h1>
    <p class="lead">Dernière mise à jour : ' . date('d/m/Y') . '</p>
    
    <h2>Collecte d\'informations</h2>
    <p>Nous collectons des informations lorsque vous vous inscrivez sur notre site, passez une commande, vous abonnez à notre newsletter ou remplissez un formulaire.</p>
    
    <h2>Utilisation des informations</h2>
    <p>Les informations que nous collectons peuvent être utilisées pour :</p>
    <ul>
        <li>Personnaliser votre expérience</li>
        <li>Améliorer notre site web</li>
        <li>Améliorer le service client</li>
        <li>Traiter les transactions</li>
        <li>Envoyer des emails périodiques</li>
    </ul>
    
    <h2>Protection des informations</h2>
    <p>Nous mettons en œuvre diverses mesures de sécurité pour préserver la sécurité de vos informations personnelles.</p>
    
    <h2>Divulgation à des tiers</h2>
    <p>Nous ne vendons, n\'échangeons et ne transférons pas vos informations personnelles identifiables à des tiers, sauf pour fournir les services demandés.</p>
    
    <h2>Consentement</h2>
    <p>En utilisant notre site, vous consentez à notre politique de confidentialité.</p>
    
    <h2>Contact</h2>
    <p>Pour toute question concernant cette politique de confidentialité, contactez-nous à : <strong>contact@services-ae.com</strong></p>
</div>';
    }
}
?>