en | fr  | Contact  | Print  | Share

FrameBeurk File

Fmbk/Module/Kom1/Site/Vue/rechercheSite.php

<?php //FrameBeurk V0.65 Copyright ToolOscope 2016. Licence CeCILL-C.

require_once(INSTALL_PATH '/Module/Kom1/helpersKom1.php');

// la recherche par mot-clés utilise les index full-text de Mysql. Se rapporter à la doc pour les différents paramètres de gestion. Pour MyIsam :
// - ft_min_word_len : Longueur mini des mots à indexer
// - ft_max_word_len : Longueur maxi des mots à indexer
// - ft_stopword_file : Liste des mots à ne pas indexer
// de plus, la recherche ne semble pas fonctionner quand la table est toute petite (...3 lignes ?)

//Récupération des variables et valeurs par défaut : déjà fait par le controleurClef
$TRANSAC['Page']['Titre'] = Beurk_traduit('Recherche')
    . ((
$Perimetre != '') ? ' ' Beurk_Request2HTML($Perimetre) : '')
    . ((
$MotCle != '') ?         Beurk_traduit(' contenant "%s"''Kom1'Beurk_Request2HTML($MotCle)) : '')
    . ((
$DateCreation != '') ?     Beurk_traduit(' du %s''Kom1'Beurk_Request2HTML($DateCreation)) : '')
    . ((
$Createur != '') ?         Beurk_traduit(' par %s''Kom1'Beurk_Request2HTML($Createur)) : '');
echo 
'<h2 class="h_recherche">'$TRANSAC['Page']['Titre'], "</h2>\n";

// controles
if ($MotCle == '' && $Createur == '' && $DateCreation == '')        // au moins 1 valeur saisie
    
Beurk_messageEtape('Aucune valeur saisie'true);
elseif (! isset(
$CONFIG['Controle']['Recherche'][$Perimetre]))
    
Beurk_messageEtape('Périmètre invalide'true);
elseif (
$DateCreation != '' && (list($YYYY$MM$DD) = explode('-'$DateCreation)) && ! checkdate($MM$DD ,$YYYY))
    
//echo "checkdate($MM,$DD ,$YYYY)";
    
Beurk_messageEtape('Date (YYYY-MM-DD) invalide'true);
else {
    
// transformation date en timeBeurk
    
if ($DateCreation != '') {
        
$TsCREMin $YYYY $MM $DD '000000000';
        
$TsCREMax $YYYY $MM $DD '235959999';
    } else {
        
$TsCREMin '';
        
$TsCREMax '';
    }
    
    
$nbresults 0;
    
    
$PerimetreInclus false;
    
$requete '';
    
$directive 'SQL_CALC_FOUND_ROWS';
    
    
// conception de la requete en fonction du périmètre
    
foreach($CONFIG['Controle']['Recherche'] as $EntVueRecherche => $paramRecherche) {
    
        
//entrée dans le périmètre
        
if ($EntVueRecherche == $Perimetre) {
            
$PerimetreInclus true;
            
$niveauSelection $paramRecherche['niveau'];
        
// sortie du périmètre à la prochaine ligne de même niveau ou inférieur
        
} elseif (($PerimetreInclus == true) && ($paramRecherche['niveau'] <= $niveauSelection))
            
$PerimetreInclus false;

        
//ajout de la requete si périmètre inclus et ligne à prendre en compte
        
if (($PerimetreInclus == true) && ($paramRecherche['aInclure'])) {
            
$module $CONFIG['Entite'][$EntVueRecherche]['Module'];
            
$messageAuto Beurk_controleurAutorisation($paramRecherche['autorisation'],
                                array(    
'ActMaj' => $ActVue,
                                        
'IdMaj' => $EntVueRecherche,
                                        
'preAuto' => true));    // preAuto=true inhibe les autos qui ont besoin d'un résultat (état jeton, controle somme...)
            
if ($messageAuto == '') {
                include_once(
INSTALL_PATH '/Module/' $module '/' $EntVueRecherche '/modele' $EntVueRecherche '.php');    //chargement des fonctions DB
                
if ($requete != '')    //gestion de la suite
                    
$requete .= ' UNION ALL ';
                
$fonctionQuery $paramRecherche['requete'];
                
$requete .= db_recomposeTabQuery($fonctionQuery($TsCREMin$TsCREMaxBeurk_Request2DB($MotCle), Beurk_Request2DB($Createur)), $directive);
                
                
//pour la suite du périmètre
                
$directive '';
            } else
                echo 
"\n <!-- Beurk_controleurAutorisation($module, "$paramRecherche['autorisation'], ", $ActVue$EntVueRecherche) = $messageAuto-->\n";
        }
    }
    
    
//controle de requete non vide
    
if ($requete == '')
        
Beurk_messageEtape('Périmètre de recherche invalide'true);
    else {
    
        
//requete OK, à terminer
        
$requete .= ' ORDER BY score DESC, TsAction ASC';
        
$requete Kom1_pagineRequete($requete);
        
        echo 
"\n<!-- $requete -->\n";
        
$result2 db_QUERY($requete);
        
$result1 db_QUERY('SELECT FOUND_ROWS()');
    
        
//affichage du résultat
        
if (list($nbresults) = db_FETCH_ROW($result1)) {

            
// liste des pages de résultats
            
$tabAdresse = array('ActVue' => 'recherche''IdVue' => 'Site''Perimetre' => $Perimetre'MotCle' => $MotCle,
                                
'DateCreation' => $DateCreation'Createur' => $Createur);
            
$pages Kom1_listePages($nbresults$NoPage$tabAdresse);
            echo 
$pages '<div class="enbas"></div>' "\n";
            
            
$sufxCss 1;
            while (list(
$entite$IdEntite$Item$IdCreateur$User$TsCRE$stat1$stat2$Donnees$IdElementDe$score) = db_FETCH_ROW($result2)) {
                
// affichage des résultats selon le type d'entité
                
$module $CONFIG['Entite'][$entite]['Module'];
                
$TRANSAC$TRANSAC['Etape'] ]['Module'] = $module;
                include_once(
INSTALL_PATH '/Module/' $module '/' $entite '/helpers' $entite '.php');    //chargement des fonctions
                
$FonctionAffiche $CONFIG['Controle']['Recherche'][$entite]['affichage'];
                echo 
$FonctionAffiche($sufxCss$IdEntite$Item$IdCreateur$User$TsCRE$stat1$stat2$Donnees$IdElementDe$score);
                
$sufxCss $sufxCss;
            }
            
// re-liste des pages de résultats
            
echo $pages '<div class="enbas"></div>' "\n";

        }
        
db_FREE($result1);
        
db_FREE($result2);
            
        if (
$nbresults == 0)
            
$TRANSAC['Message']['Recherche'] = '<p Class="erreur">' Beurk_traduit('Recherche infructueuse') . '</p>';
        else
            
$TRANSAC['Message']['Recherche'] = '<p Class="bravo">' Kom1_traduitQuantite('%d résultat%s''Kom1'$nbresults) . '</p>';
    }
}


© 2010-2015 by ToolOscope SASU. © 2016-2018 by Arnaud De Rette. All rights reserved