102 lines
3.6 KiB
PHP
Executable File
102 lines
3.6 KiB
PHP
Executable File
<?php
|
|
/* Script appelé lorsqu'un internaute souhaite s'abonner à un flux non encore enregisté dans l'annuaire ce qui passe par la création d'un hub.
|
|
* Ce hub peut ensuite être ajouté à un abonnement existant ou servir à créer un nouvel abonnement
|
|
* L'utilisateur doit être connecté.
|
|
* Le flux est contrôlé avant de l'enregistrer.
|
|
*
|
|
*/
|
|
require_once("../modele/FclFlux_abonnement.php");
|
|
// un utilisateur non connecté n'a rien à faire sur cette page.
|
|
$user=new FclFlux_utilisateur();
|
|
if(!$user->test_session(false))
|
|
{
|
|
header("location:".PAGE_404);
|
|
exit();
|
|
}
|
|
// on commence par vérifier que le flux existe...
|
|
// encodage du mot-clés saute avec certains navigateurs :
|
|
if(strpos($page[3],"%")===false)
|
|
$get=urlencode($page[3]);
|
|
else
|
|
$get=$page[3];
|
|
// on peut recevoir soit une url, soit un mot-clés si Google news
|
|
if(strpos($page[3],"http")===false)//google
|
|
//$flux_get="https://news.google.com/news/feeds?pz=1&cf=all&ned=fr&hl=fr&q=$get&output=rss";
|
|
$flux_get="https://news.google.com/news/rss/search/section/q/$get/$get?&hl=fr&gl=fr&scoring=n&num=20";
|
|
else
|
|
$flux_get=str_replace("éé","&",str_replace("ùù","/",urldecode($get)));
|
|
if(!filter_var($flux_get,FILTER_VALIDATE_URL))
|
|
{
|
|
$_SESSION["message"]=ERREUR_IMPREVUE;
|
|
header("location:".PAGE_ACCUEIL);
|
|
exit();
|
|
}
|
|
//test lecture et récup infos du flux
|
|
$max["url_long_max"]=FLUX_MAX_URL;
|
|
$flux=new FclFlux_flux();
|
|
$flux->limites=$max;
|
|
$flux->set_url($flux_get);
|
|
$flux_infos=$flux->get_infos_entete();
|
|
$flux_lecture=$flux->lecture(3,false);
|
|
if((empty($flux_infos))||(empty($flux_lecture)))
|
|
{
|
|
$_SESSION["message"]=ERREUR_IMPREVUE;
|
|
header("location:".PAGE_ACCUEIL);
|
|
exit();
|
|
}
|
|
if(empty($Bd))
|
|
require("../modele/connexion-bd.php");
|
|
$test=$flux->set_auteur($user);
|
|
if($test===false)
|
|
{
|
|
$_SESSION["message"]=ERREUR_IMPREVUE;
|
|
header("location:".PAGE_ACCUEIL);
|
|
exit();
|
|
}
|
|
// je vérifie tout de même que le flux n'est pas déjà dans la bd
|
|
$doublon_ok=FclFlux_flux::recherche($flux_get,"url","id_flux,nom");
|
|
if(empty($doublon_ok))
|
|
{
|
|
// dans le cas d'une recherche GG, je modifie les valeurs importées pour la désignation et la description
|
|
if(strpos($flux_get,"https://news.google.com")!==false)
|
|
{
|
|
$limites["designation_long_min"]=FLUX_MIN_NOM;
|
|
$limites["designation_long_max"]=FLUX_MAX_NOM;
|
|
$limites["description_long_max"]=FLUX_MAX_DESCRIPTION;
|
|
$flux->limites=$limites;
|
|
$flux->set_designation(ucfirst(urldecode($get))." sur Google Actualités.");
|
|
$flux->set_description("");
|
|
}
|
|
$sauve=$flux->ajout();//provoque la création d'une source + d'un hub dans lequel est placé ce flux.
|
|
if(empty($flux->id_flux))
|
|
{
|
|
$_SESSION["message"]=ERREUR_IMPREVUE;
|
|
header("location:".PAGE_ACCUEIL);
|
|
exit();
|
|
}
|
|
}
|
|
else
|
|
$flux->id_flux=$doublon_ok["id_flux"];
|
|
// que le flux soit nouveau ou un doublon il me faut connaître le hub dans lequel il est chargé pour permettre l'abonnement
|
|
$hub_abo=$flux->get_hubs();
|
|
if((empty($hub_abo))||(empty($hub_abo[0]["id_hub"])))
|
|
{
|
|
$_SESSION["message"]=ERREUR_IMPREVUE;
|
|
header("location:".PAGE_ACCUEIL);
|
|
exit();
|
|
}
|
|
$id_hub=$hub_abo[0]["id_hub"];//si + sieurs, on garde le premier...
|
|
//il me faut le nom du hub pour le proposer comme nom du nouvel abonnement.
|
|
$get_nom_hub=FclFlux_hub::recherche($id_hub,"id_hub","nom");
|
|
if(!empty($get_nom_hub))
|
|
$nom_hub=$get_nom_hub["nom"];
|
|
// 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)." ";
|
|
}
|
|
include("../vues/compte_crea_abo_nouveau_flux.php");
|