<?php

namespace App\Controllers;

/**
 * Contrôleur de la page d'accueil.
 * Affiche les actualités récupérées via un flux RSS.
 */
class Accueil extends BaseController
{
    public function __construct()
    {
        helper(['url', 'html']);
    }

    /** Affiche la page d'accueil avec les articles du flux RSS */
    public function index()
    {
        if (!session()->get('isLoggedIn')) {
            return redirect()->to('/');
        }

        $data['titre'] = "Bienvenue sur l'intranet GSB";

        $articles = $this->getFluxRss();
        $data['articles'] = $articles;

        return view('structures/page_entete')
            . view('structures/messages')
            . view('sommaire')
            . view('structures/contenu_entete', $data)
            . view('actualites', $data)
            . view('structures/page_pied');
    }

    /**
     * Récupère les articles depuis le flux RSS de Santé Magazine.
     *
     * @return array Liste des articles (titre, lien, description, date, image)
     */
    public function getFluxRss()
    {
        $url = 'https://www.santemagazine.fr/rss';

        $rss = @simplexml_load_file($url);

        // Contournement SSL en local
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $fluxXml = curl_exec($ch);
        curl_close($ch);
        $rss = @simplexml_load_string($fluxXml);

        if ($rss === false) {
            return array("error" => "Impossible de charger le flux RSS.");
        }

        if ($rss) {
            foreach ($rss->channel->item as $item) {
                $articles[] = [
                    'titre'       => $item->title,
                    'lien'        => $item->link,
                    'description' => $item->description,
                    'date'        => $item->pubDate,
                    'image'       => $item->enclosure['url']
                ];
            }
        }
        return $articles;
    }
}
