hellofacteurV1/ctrl/compte_crea_abo_hub.php

95 lines
3.0 KiB
PHP
Raw Permalink Normal View History

2021-11-02 11:23:49 +01:00
<?php
/* Script appelé lorsqu'un internaute souhaite s'abonner à un hub
* Le hub peut être ajouté à un abonnement existant ou servir à créer un nouvel abonnement
* L'utilisateur doit être connecté.
* Si ce n'est pas le cas, je stocke dans un cookie de courte durée l'adresse de la page et l'y ramène après connexion / création compte
* L'utilisateur peut aussi arriver sur cette page via le formulaire d'inscription d'un site tiers. Un email peut alors avoir été fourni.
*
*/
require_once("../modele/FclFlux_abonnement.php");
//on commence par vérifier que le hub existe...
$hub=new FclFlux_hub();
$hub->id_hub=$page[2];
$hub_infos=$hub->get_infos_cache(false);
if(empty($hub_infos))
{
header("location:".PAGE_404);
exit();
}
//utilisateur connecté ?
$user=new FclFlux_utilisateur();
if(!$user->test_session(false))
{
unset($user);
$redirige=PAGE_ABO_CREA_HUB.intval($page[2]);
FclFlux_utilisateur::crea_cookie_redirection($redirige,2);
$_SESSION["hub_abo"]=$hub_infos["nom"];
if(!empty($_POST["email_abo"]))
{
$_SESSION["email_abo"]=trim(strip_tags($_POST["email_abo"]));
//je cherche si un abonné existe déjà pour cette adresse
if(empty($Bd))
require("../modele/connexion-bd.php");
$cherche_email=FclFlux_utilisateur::recherche($_POST["email_abo"],"email","id_utilisateur");
if(!empty($cherche_email))
{
unset($Bd);
header("Location:".PAGE_CONNEXION);
exit();
}
unset($Bd);
}
header("Location:".PAGE_INSCRIPTION);
exit();
}
//les rubriques "mères" pour le fil d'ariane
$meres=$hub->get_liste_rubriques_cache(CREA_CACHE);
// liste des abonnements existants à proposer
$liste_abo="";
$abos=FclFlux_abonnement::get_liste_abo_cache($user,CREA_CACHE);
if(!empty($abos))
{
foreach ($abos as $abo_info)
$liste_abo.="<input type='radio' name='abo' value=\"".$abo_info["id_abonnement"]."\"> ".affiche_utf8(htmlentities($abo_info["designation"],ENT_QUOTES),UTF8_OK)."&nbsp;";
}
//l'utilisateur à valider le formulaire
if(isset($_POST["nouvel_abo"]))//pour ne pas confondre avec l'arrivée du site tiers
{
if(empty($Bd))
require("../modele/connexion-bd.php");
if(!empty($_POST["abo"]))
{
//ajout d'un hub à un abonnement existant
$abo=new FclFlux_abonnement();
$abo->id_abonnement=intval($_POST["abo"]);
$action=$abo->ajout_hubs(array($hub));
$Bd=null;
}
else
{
//je vais créé un nouvel abonnement et lui associer ce hub
if(!empty($_POST["nouvel_abo"]))
$infos["designation"]=$_POST["nouvel_abo"];
else
$infos["designation"]="Nouvel abonnement.";
$infos["proprietaire"]=$user;
$abo=new FclFlux_abonnement($infos);
$action=$abo->ajout();
if($action!==false)
$action=$abo->ajout_hubs(array($hub));
}
$Bd=null;
if((!$action)||(!empty($abo->erreurs)))
{
$_SESSION["message"]=ERREUR_IMPREVUE;
header("location:".PAGE_ACCUEIL);
exit();
}
else
{
$_SESSION["message"]="Votre nouvel abonnement a bien été créé !";
header("location:".PAGE_ABO_AFFICHE.$abo->id_abonnement);
exit();
}
}
include("../vues/compte_crea_abo_hub.php");