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.=" ".affiche_utf8(htmlentities($abo_info["designation"],ENT_QUOTES),UTF8_OK)." "; } include("../vues/compte_crea_abo_nouveau_flux.php");