<?php
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
function regularlabs_php_9b8fb21c894e842d74e10aa5c99f153b($rl_variables, $article, $module){
$app = $mainframe = RegularLabs\Library\Php::getApplication();
$document = $doc = RegularLabs\Library\Php::getDocument();
$database = $db = Joomla\CMS\Factory::getDbo();
$user = $app->getIdentity() ?: Joomla\CMS\Factory::getUser();
$Itemid = $app->getInput()->getInt('Itemid');
if (is_array($rl_variables)) {foreach ($rl_variables as $rl_key => $rl_value) {${$rl_key} = $rl_value;}}
// Récupérer l'application Joomla
$app = Factory::getApplication();

// Message de résultat
$message = '';
$messageType = '';

// Traitement de la soumission du formulaire
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Récupérer les données du formulaire
    $token = $app->input->getString('token', '');
    $submissionId = $app->input->getInt('submissionId', 0);
    $produitsSemaine = $app->input->getString('produits-semaine', '');
    $joursReception = $app->input->getString('jours-reception', '');

    // Connexion à la base de données
    $db = Factory::getDbo();

    // Vérifier d'abord la validité du token
    $queryToken = $db->getQuery(true)
        ->select('x.FieldValue AS token')
        ->from($db->quoteName('#__rsform_submissions', 's'))
        ->join('LEFT', $db->quoteName('#__rsform_submission_extras', 'x') . ' ON s.SubmissionId = x.SubmissionId')
        ->where('s.SubmissionId = ' . $db->quote($submissionId))
        ->where('x.FieldName = ' . $db->quote('token'));

    $db->setQuery($queryToken);
    $tokenResult = $db->loadObject();

    // Vérifier si le token correspond
    if ($tokenResult && $token === $tokenResult->token) {
        // Mettre à jour les champs dans la base de données
        $updateFields = [
            ['name' => 'produits-semaine', 'value' => $produitsSemaine],
            ['name' => 'jours-reception', 'value' => $joursReception]
        ];

        $updateSuccess = true;
        foreach ($updateFields as $field) {
            $query = $db->getQuery(true)
                ->update($db->quoteName('#__rsform_submission_values'))
                ->set($db->quoteName('FieldValue') . ' = ' . $db->quote($field['value']))
                ->where($db->quoteName('SubmissionId') . ' = ' . $db->quote($submissionId))
                ->where($db->quoteName('FieldName') . ' = ' . $db->quote($field['name']));

            $db->setQuery($query);
            if (!$db->execute()) {
                $updateSuccess = false;
                break;
            }
        }

        // Définir le message de résultat
        if ($updateSuccess) {
            $message = 'Modifications enregistrées avec succès.';
            $messageType = 'success';
        } else {
            $message = 'Erreur lors de l\'enregistrement des modifications.';
            $messageType = 'error';
        }
    } else {
        $message = 'Accès refusé : Token invalide.';
        $messageType = 'error';
    }
}

// Extraire les paramètres de l'URL
$token = $app->input->getString('token', '');
$submissionId = $app->input->getInt('submissionId', 0);

// Vérifier les paramètres obligatoires
if (empty($token) || empty($submissionId)) {
    echo ' 
Erreur : Paramètres manquants dans l\'URL. 
';
    exit;
}

// Connexion à la base de données
$db = Factory::getDbo();

// Récupérer les données de la soumission
$query = $db->getQuery(true)
    ->select('x.FieldValue AS token, v.FieldValue AS inscription, s.DateSubmitted, p.FieldValue AS produits_semaine, j.FieldValue AS jours_reception, prenom.FieldValue AS prenom, nom.FieldValue AS nom')
    ->from($db->quoteName('#__rsform_submissions', 's'))
    ->join('LEFT', $db->quoteName('#__rsform_submission_extras', 'x') . ' ON s.SubmissionId = x.SubmissionId')
    ->join('LEFT', $db->quoteName('#__rsform_submission_values', 'v') . ' ON s.SubmissionId = v.SubmissionId')
    ->join('LEFT', $db->quoteName('#__rsform_submission_values', 'p') . ' ON s.SubmissionId = p.SubmissionId AND p.FieldName = ' . $db->quote('produits-semaine'))
    ->join('LEFT', $db->quoteName('#__rsform_submission_values', 'j') . ' ON s.SubmissionId = j.SubmissionId AND j.FieldName = ' . $db->quote('jours-reception'))
    ->join('LEFT', $db->quoteName('#__rsform_submission_values', 'prenom') . ' ON s.SubmissionId = prenom.SubmissionId AND prenom.FieldName = ' . $db->quote('prenom'))
    ->join('LEFT', $db->quoteName('#__rsform_submission_values', 'nom') . ' ON s.SubmissionId = nom.SubmissionId AND nom.FieldName = ' . $db->quote('nom'))
    ->where('s.SubmissionId = ' . $db->quote($submissionId))
    ->where('x.FieldName = ' . $db->quote('token'))
    ->where('v.FieldName = ' . $db->quote('inscription'));

$db->setQuery($query);
$result = $db->loadObject();

// Vérifier les résultats de la requête
if (!$result) {
    echo ' 
Erreur : Soumission non trouvée. 
';
    exit;
}

// Comparer les tokens
if ($token === $result->token) {
    // Afficher le message personnalisé
    echo 'Bonjour ' . htmlspecialchars($result->prenom, ENT_QUOTES, 'UTF-8') . ' ' . htmlspecialchars($result->nom, ENT_QUOTES, 'UTF-8') . '';
    echo ' 
Votre abonnement : ' . htmlspecialchars($result->inscription, ENT_QUOTES, 'UTF-8') . ' 
';
    echo ' 
Date de soumission : ' . htmlspecialchars($result->DateSubmitted, ENT_QUOTES, 'UTF-8') . ' 
';

    // Afficher un message de résultat s'il existe
    if (!empty($message)) {
        $color = $messageType === 'success' ? 'green' : 'red';
        echo ' 
' . htmlspecialchars($message, ENT_QUOTES, 'UTF-8') . ' 
';
    }

    // Afficher un formulaire personnalisé
    echo '
        
        
        
        Produits disponibles cette semaine :
        ' . htmlspecialchars($result->produits_semaine ?? '', ENT_QUOTES, 'UTF-8') . '
        
        Jours de réception :
        
        
        Enregistrer les modifications
    ';
} else {
    echo ' 
Accès refusé : Tokens ne correspondent pas. 
';
};  ;;
return get_defined_vars();
;}