133 lines
5.7 KiB
PHP
133 lines
5.7 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Script cherchant les hubs de l'annuaire correspondant à une recherche lancée par un utilisateur
|
||
|
* Les éventuels résultats sont listés pour sélection
|
||
|
* Si pas de résultat et que la recherche saisie correspond à une url, je vérifie si c'est un flux
|
||
|
* Si ce n'est pas un flux, je teste si des flux sont déclarés en entête du site
|
||
|
* Via une case à cocher, il est aussi possible de chercher sur Google news.
|
||
|
* Peut être appelé en ajax ou directement en php si JS désactivé
|
||
|
*
|
||
|
**/
|
||
|
$form["recherche"]=trim(strip_tags($_POST["recherche"]));
|
||
|
$ajax_on=false;
|
||
|
if(!empty($_POST["ajax"]))
|
||
|
{
|
||
|
$ajax_on=true;
|
||
|
session_save_path(SESSIONS_REP);
|
||
|
ini_set("session.use_only_cookies",1);
|
||
|
session_start();
|
||
|
header('Content-Type: text/html; charset=utf-8');
|
||
|
require_once("../modele/FclFlux_hub.php");
|
||
|
require_once("../modele/FclFlux_flux.php");
|
||
|
}
|
||
|
if(empty($form["recherche"]))
|
||
|
$select=get_html_alerte_msg((array) ERREUR_UTILISA_CHAMPS_ABSENTS);
|
||
|
else if((strlen($form["recherche"])<HUB_RECHERCHE_MIN)||(strlen($form["recherche"])>HUB_RECHERCHE_MAX))
|
||
|
$select=get_html_alerte_msg((array) ERREUR_RECHERCHE_LONG);
|
||
|
else
|
||
|
{
|
||
|
if(empty($Bd))
|
||
|
require_once("../modele/connexion-bd.php");
|
||
|
$max["url_long_max"]=FLUX_MAX_URL;
|
||
|
if(empty($_POST["gg_news_ok"]))
|
||
|
{//recherche hors gg news
|
||
|
$hubs=FclFlux_hub::recherche_globale($form["recherche"],"id_hub,nom");
|
||
|
$Bd=null;
|
||
|
if(!empty($hubs))
|
||
|
{
|
||
|
if(count($hubs)>FLUX_RECHERCHE_MAX_RESULTATS)
|
||
|
$select=get_html_alerte_msg((array) ERREUR_RECHERCHE_MAX_RESULTATS);
|
||
|
else
|
||
|
{
|
||
|
if(count($hubs)==1)
|
||
|
$label="1 résultat pour votre recherche :";
|
||
|
else
|
||
|
$label=count($hubs)." résultats trouvés pour votre recherche :";
|
||
|
$select="<div class='form-group'>
|
||
|
<label for='liste_hubs' class='col-sm-4 control-label'>$label</label>
|
||
|
<div class='col-sm-8'><select name='liste_hubs' id='liste_hubs' autofocus class='form-control'>
|
||
|
<option value='0'></option>";
|
||
|
foreach ($hubs as $hub_infos)
|
||
|
$select.="<option value='".$hub_infos["id_hub"]."'>".htmlentities(affiche_utf8($hub_infos["nom"],UTF8_OK))."</option>\n";
|
||
|
$select.="</select></div></div>";
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
//est-ce-que la recherche saisie correspond à une adresse de page internet ?
|
||
|
if((strpos($form["recherche"],"www")!==false)&&(strpos($form["recherche"],"http://")===false)&&(strpos($form["recherche"],"https://")===false))
|
||
|
$url_test="http://".$form["recherche"];
|
||
|
else
|
||
|
$url_test=$form["recherche"];
|
||
|
if(filter_var($url_test,FILTER_VALIDATE_URL))
|
||
|
{
|
||
|
//est-ce un flux et si oui, est-ce que j'arrive à le lire ?
|
||
|
$flux=new FclFlux_flux();
|
||
|
$flux->limites=$max;
|
||
|
$flux->set_url($url_test);
|
||
|
$liens_flux=$flux->lecture(3,false);
|
||
|
unset($flux);
|
||
|
if(!empty($liens_flux))
|
||
|
{
|
||
|
//on affiche le résultat et propose de s'y abonner
|
||
|
$select="<div class='liste_liens'><h3>Voici les dernières actualités pour ce flux.</h3>\n".get_html_liste_liens_simple($liens_flux,3,false)."<p><a href='".PAGE_ABO_NOUVEAU_FLUX.urlencode(str_replace("&","éé",str_replace("/","ùù",$url_test)))."/' class='btn btn-info btn-lg' rel='nofollow' target='_blank'>Je m'abonne aux actualités de ce site !</a></p></div>";
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$lien=new Lien();
|
||
|
$lien->limites=$max;
|
||
|
$lien->set_url($url_test);
|
||
|
$entetes_flux=Flux::detecte_flux_entete($lien);
|
||
|
if(!empty($entetes_flux))
|
||
|
{
|
||
|
$flux_propose="";
|
||
|
foreach($entetes_flux as $flux_infos)
|
||
|
{
|
||
|
//je teste la lecture de chaque flux pour déterminer si je le propose ou pas
|
||
|
if((!empty($flux_infos["href"]))&&(!empty($flux_infos["title"])))
|
||
|
{
|
||
|
$flux_test=new FclFlux_flux();
|
||
|
$flux_test->limites=$max;
|
||
|
if((strpos($flux_infos["href"],"http://")===false)&&(strpos($flux_infos["href"],"https://")===false))
|
||
|
$url_flux=str_replace("http:/","http://",str_replace("//","/",$url_test.$flux_infos["href"]));
|
||
|
else
|
||
|
$url_flux=$flux_infos["href"];
|
||
|
$set_url=$flux_test->set_url($url_flux);
|
||
|
if($set_url===true)
|
||
|
{
|
||
|
$liens_flux=$flux_test->lecture(3,true);
|
||
|
if(!empty($liens_flux))
|
||
|
$flux_propose.="<p><b>".htmlspecialchars($flux_infos["title"])."</b></p>\n".get_html_liste_liens_simple($liens_flux,3,false)."<p><a href='".PAGE_ABO_NOUVEAU_FLUX.urlencode($url_flux)."/' class='btn btn-info btn-lg' rel='nofollow' target='_blank'>Je m'abonne à ces actualités.</a></p>";
|
||
|
}
|
||
|
unset($flux_test);
|
||
|
}
|
||
|
}
|
||
|
if(!empty($flux_propose))
|
||
|
$select="<div class='liste_liens'><h3>Voici les abonnements possibles pour le site recherché.</h3>\n$flux_propose</div>";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{// bing ou google ?
|
||
|
//$url_flux_news="http://www.bing.com/news/search?q=".urlencode($form["recherche"])."&format=RSS";
|
||
|
// exemple : https://news.google.com/news/rss/search/section/q/coucou/coucou?&hl=fr&gl=fr&scoring=n&num=20
|
||
|
$url_flux_news="https://news.google.com/news/rss/search/section/q/".urlencode($form["recherche"])."/".urlencode($form["recherche"])."?&hl=fr&gl=fr&scoring=n&num=20";
|
||
|
$hubs_test=new FclFlux_flux();
|
||
|
$hubs_test->limites=$max;
|
||
|
$set_url=$hubs_test->set_url($url_flux_news);
|
||
|
if($set_url===true)
|
||
|
{
|
||
|
$liens_flux=$hubs_test->lecture(5,false);
|
||
|
if(!empty($liens_flux))
|
||
|
$select="<div class='liste_liens'><h3>Voici les derniers articles trouvés par \"Google actualités\" pour votre recherche.</h3>\n".get_html_liste_liens_simple($liens_flux,5,false)."<p><a href='".PAGE_ABO_NOUVEAU_FLUX.urlencode($form["recherche"])."' class='btn btn-info btn-lg' rel='nofollow'>Je m'abonne à ces actualités !</a></p></div>";
|
||
|
}
|
||
|
unset($hubs_test);
|
||
|
}
|
||
|
if(empty($select))
|
||
|
$select=get_html_alerte_msg((array) ERREUR_SQL_RECHERCHE);
|
||
|
}
|
||
|
if((!empty($select))&&($ajax_on))
|
||
|
echo $select;
|