Subversion Repositories Applications.papyrus

Compare Revisions

Ignore whitespace Rev 1972 → Rev 1973

/branches/livraison_aha/papyrus/applettes/moteur_recherche/bibliotheque/more_recherche.class.php
21,7 → 21,7
// | along with Foobar; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: more_recherche.class.php,v 1.12.2.1 2008-10-22 07:45:46 aperonnet Exp $
// CVS : $Id: more_recherche.class.php,v 1.12.2.2 2008-11-19 09:30:18 aperonnet Exp $
/**
* Classe permettant d'effectuer des recherches sur les métas informations des menus.
*
34,7 → 34,7
//Autres auteurs :
*@author aucun
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.12.2.1 $ $Date: 2008-10-22 07:45:46 $
*@version $Revision: 1.12.2.2 $ $Date: 2008-11-19 09:30:18 $
// +------------------------------------------------------------------------------------------------------+
*/
 
62,7 → 62,7
return $this->motif;
}
function setMotif($motif) {
$this->motif = $motif;
$this->motif = $motif ;
}
function getMoteurs() {
return $this->moteurs_recherches;
86,6 → 86,11
}
// Méthodes
function eliminerAccents($motif)
{
return strtr($motif,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÌÍÎÏìíîïÙÚÛÜùúûüÿÑñÇç'",
"AAAAAAaaaaaaOOOOOOooooooEEEEeeeeIIIIiiiiUUUUuuuuyNnCc " );
}
function ajouterRecherche(&$objet_recherche) {
return $this->setMoteur($objet_recherche);
96,9 → 101,11
$this->setResultats(array_merge((array)$this->getResultats(),(array)$val->rechercherMotif($this->getMotif())));
}
$aso_resultats = $this->getResultats();
if(!function_exists('comparer'))
{
function comparer($a, $b) {
// on teste l'existence de la fonction anonyme car sinon bug d'inclusion très pénible !
if (!function_exists('comparer')) {
function comparer($a, $b) {
if ($a['poids'] > $b['poids']) {
return -1;
}
109,7 → 116,7
return 0;
}
}
}
}
usort($aso_resultats, 'comparer');
$pds_max = 0;
if (isset($aso_resultats[0]['poids'])) {
156,7 → 163,7
$compteur_mot = 0;
foreach ($tab_motif as $mot) {
//$nbre_correspondance += preg_match_all('/'.$mot.'/i', $texte, $tab_morceaux);
$nbre_correspondance = substr_count(strtolower($texte), strtolower($mot));
$nbre_correspondance = substr_count($this->eliminerAccents(strtolower($texte)), $this->eliminerAccents(strtolower($mot)));
if ($nbre_correspondance > 0) {
$compteur_mot++;
}
171,7 → 178,7
}
function traiterMotif($motif, $type = 0)
{
{
switch ($type) {
case 'simple' :
return trim(stripslashes($motif));
225,11 → 232,113
return '';
}
}
/**
* Coupe un texte suivant une taille donnée, pour éviter qu'il ne soit
* trop long lors de l'affichage
* @param String texte à couper
* @param int taille maximum du texte
*/
function couperTexte($texte, $taille = 50)
{
$texte = substr($texte, 0, 400 + 2*$taille); /* eviter de travailler sur 10ko pour extraire 150 caracteres */
// on utilise les \r pour passer entre les gouttes
$texte = str_replace("\r\n", "\n", $texte);
$texte = str_replace("\r", "\n", $texte);
// sauts de ligne et paragraphes
$texte = ereg_replace("\n\n+", "\r", $texte);
$texte = ereg_replace("<(p|br)( [^>]*)?".">", "\r", $texte);
// supprimer les traits, lignes etc
$texte = ereg_replace("(^|\r|\n)(-[-#\*]*|_ )", "\r", $texte);
// supprimer les tags
$texte = $this->supprimerTags($texte);
$texte = trim(str_replace("\n"," ", $texte));
$texte .= "\n"; // marquer la fin
// travailler en accents charset
// On supprime dans Papyrus car cela tire trop de fonctions...
//$texte = $this->filtrer_entites($texte);
// supprimer les liens
$texte = ereg_replace("\[->([^]]*)\]","\\1", $texte); // liens sans texte
$texte = ereg_replace("\[([^\[]*)->([^]]*)\]","\\1", $texte);
// supprimer les notes
$texte = ereg_replace("\[\[([^]]|\][^]])*\]\]", "", $texte);
// supprimer les codes typos
$texte = ereg_replace("[}{]", "", $texte);
// supprimer les tableaux
$texte = ereg_replace("(^|\r)\|.*\|\r", "\r", $texte);
// couper au mot precedent
$long = $this->gererSubstr($texte, 0, max($taille-4,1));
$court = ereg_replace("([^[:space:]][[:space:]]+)[^[:space:]]*\n?$", "\\1", $long);
$points = MORE_LG_RESULTAT_ETC;
// trop court ? ne pas faire de (...)
if (strlen($court) < max(0.75 * $taille,2)) {
$points = '';
$long = $this->gererSubstr($texte, 0, $taille);
$texte = ereg_replace("([^[:space:]][[:space:]]+)[^[:space:]]*$", "\\1", $long);
// encore trop court ? couper au caractere
if (strlen($texte) < 0.75 * $taille)
$texte = $long;
} else
$texte = $court;
if (strpos($texte, "\n")) // la fin est encore la : c'est qu'on n'a pas de texte de suite
$points = '';
// remettre les paragraphes
$texte = ereg_replace("\r+", "\n\n", $texte);
// supprimer l'eventuelle entite finale mal coupee
$texte = preg_replace('/&#?[a-z0-9]*$/', '', $texte);
return trim($texte).$points;
}
// Gerer les outils mb_string
// Fichier : inc_texte.php3
function gererSubstr($c, $start=0, $end='')
{
// methode substr normale
if ($end) {
return substr($c, $start, $end);
} else {
return substr($c, $start);
}
}
 
// Suppression basique et brutale de tous les <...>
// Fichier : inc_filtres.php3
function supprimerTags($texte, $rempl = "")
{
$texte = preg_replace(",<[^>]*>,U", $rempl, $texte);
// ne pas oublier un < final non ferme
$texte = str_replace('<', ' ', $texte);
return $texte;
}
}
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.15 2008-11-04 17:34:37 aperonnet
* le moteur de recherche donne les même résultats avec ou sans accents
*
* Revision 1.14 2008-10-21 16:54:18 aperonnet
* correction de bug de double inclusion de fichier quand une balise syndication est présente dans la page
*
* Revision 1.13 2008-10-21 15:24:50 aperonnet
* Ajout de résultats issus des fiches de bazar pour le moteur de recherche
*
* Revision 1.12 2007-10-29 18:29:30 jp_milcent
* Ajout d'un préfixe devant les classes de l'applette pour éviter les conflits avec d'autres classes provenant des applis clientes.
*
/branches/livraison_aha/client/bazar/bibliotheque/bazar.fonct.rss.php
19,7 → 19,7
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: bazar.fonct.rss.php,v 1.99.2.13 2008-04-16 12:39:56 alexandre_tb Exp $
// CVS : $Id: bazar.fonct.rss.php,v 1.99.2.14 2008-11-19 09:30:18 aperonnet Exp $
/**
*
*@package bazar
28,7 → 28,7
*@author Florian Schmitt <florian@ecole-et-nature.org>
//Autres auteurs :
*@copyright Tela-Botanica 2000-2006
*@version $Revision: 1.99.2.13 $
*@version $Revision: 1.99.2.14 $
// +------------------------------------------------------------------------------------------------------+
*/
 
617,7 → 617,7
function gen_RSS($typeannonce='', $nbitem='', $emetteur='', $valide=1, $requeteSQL='', $requeteSQLFrom = '', $requeteWhereListe = '', $categorie_nature='', $order = '') {
// generation de la requete MySQL personnalisee
$req_where=0;
$requete = 'SELECT DISTINCT bf_id_fiche, bf_titre, bf_date_debut_validite_fiche, bf_description, bn_label_nature, bf_date_creation_fiche '.
$requete = 'SELECT DISTINCT bf_id_fiche, bf_titre, bf_date_debut_validite_fiche, bf_description, bn_label_nature, bf_date_creation_fiche, bf_ce_utilisateur '.
'FROM bazar_fiche, bazar_nature '.$requeteSQLFrom.' WHERE '.$requeteWhereListe;
if ($valide!=2) {
$requete .= 'bf_statut_fiche='.$valide;
735,6 → 735,15
if ($resultat->numRows() > 0) {
// Creation des items : titre + lien + description + date de publication
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
$requetenom = 'SELECT '.BAZ_CHAMPS_NOM.', '.BAZ_CHAMPS_PRENOM.' FROM '.
BAZ_ANNUAIRE.' WHERE '.BAZ_CHAMPS_ID.'='.$ligne['bf_ce_utilisateur'];
$res = $GLOBALS['_BAZAR_']['db']->query($requetenom) ;
if (DB::isError($res)) {
die ($res->getMessage().$res->getDebugInfo()) ;
}
$nomprenom = $res->fetchRow(DB_FETCHMODE_ASSOC);
$xml .= "\r\n ";
$xml .= XML_Util::createStartElement ('item');
$xml .= "\r\n ";
747,6 → 756,10
$xml .= "\r\n ";
$xml .= XML_Util::createTag ('guid', null, $lien->getURL());
$xml .= "\r\n ";
$xml .= XML_Util::createTag ('category', null, encoder_en_utf8($ligne['bn_label_nature']));
$xml .= "\r\n ";
$xml .= XML_Util::createTag ('author', null, encoder_en_utf8($nomprenom[BAZ_CHAMPS_NOM].' '.$nomprenom[BAZ_CHAMPS_PRENOM]));
$xml .= "\r\n ";
$xml .= XML_Util::createStartElement ('description');
$xml .= "\r\n ";
if ($_GET[BAZ_VARIABLE_ACTION] != BAZ_VOIR_TOUTES_ANNONCES) {
1228,6 → 1241,9
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.99.2.13 2008-04-16 12:39:56 alexandre_tb
* simplification du code en utilisant la classe Bazar_element
*
* Revision 1.99.2.12 2008-03-17 14:02:53 jp_milcent
* Ajout d'un message demandant de s'identifiez pour poser des commentaires.
* Amélioration du XHTML (me prévenir en cas de pb).
/branches/livraison_aha/client/projet/classes/ezmlm-php-2.0/services_vpopmail/derniers_messages.php
1,5 → 1,39
<?php
 
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU General Public |
// | License as published by the Free Software Foundation; either |
// | version 2.1 of the License, or (at your option) any later version. |
// | |
// | This library is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
// | General Public License for more details. |
// | |
// | You should have received a copy of the GNU General Public |
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id $
/**
* Application projet
*
* Action forums
*
*@package projet
//Auteur original :
*@author Alexandre Granier <alexandre@tela-botanica.org>
//Autres auteurs :
*@author Aucun
*@copyright Tela-Botanica 2000-2008
*@version $Revision: 1.3.2.1 $
// +------------------------------------------------------------------------------------------------------+
*/
include_once 'ezmlm-php-2.0/ezmlm.php' ;
 
 
10,22 → 44,28
$info->listdir = '/home/vpopmail/domains/'.$domaine.'/'.$liste ;
$info->listname = $liste;
$info->listdomain = $domaine ;
$html = $info->show_recentmsgs() ;
 
ob_start() ;
if (!$info->show_recentmsgs()) {
include_once 'XML/Util.php' ;
 
$xml = XML_Util::getXMLDeclaration('1.0', 'ISO-8859-15', 'no') ;
 
if (!file_exists($info->listdir.'/num')) {
$xml .= XML_Util::createStartElement ('ezmlm_derniers_messages', array('domaine' => $domaine, 'liste' => $liste, 'langue' => $langue)) ;
$xml .= '<![CDATA[il n\'y a pas de messages dans cette liste pour le moment.]]>';
$xml .= XML_Util::createEndElement('ezmlm_derniers_messages') ;
header ('Content-type: text/xml');
echo $xml;
exit();
}
 
if (!$html) {
if (!$info) {
ob_end_clean() ;
echo 'Les fichiers de la liste ne sont pas visible sur le serveur' ;
exit();
echo 'Les fichiers de la liste ne sont pas visibles sur le serveur' ;
exit();
}
}
$html = ob_get_contents() ;
ob_end_clean() ;
 
include_once 'XML/Util.php' ;
 
$xml = XML_Util::getXMLDeclaration('1.0', 'ISO-8859-15', 'no') ;
 
$xml .= XML_Util::createStartElement ('ezmlm_derniers_messages', array('domaine' => $domaine, 'liste' => $liste, 'langue' => $langue)) ;
 
$xml .= '<![CDATA[ '.$html.']]>';
33,4 → 73,17
$xml .= XML_Util::createEndElement('ezmlm_derniers_messages') ;
header ('Content-type: text/xml');
echo $xml ;
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.5 2008-11-04 17:11:10 aperonnet
* correction de bugs dans la liste des derniers messages
*
* Revision 1.4 2008-08-25 15:25:09 alexandre_tb
* optimisation et gestion des erreurs
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>
/branches/livraison_aha/client/projet/classes/ezmlm-php-2.0/ezmlm-threads.php
1,5 → 1,5
<?php
// $Id: ezmlm-threads.php,v 1.5.4.2 2008-11-05 09:55:56 aperonnet Exp $
// $Id: ezmlm-threads.php,v 1.5.4.3 2008-11-19 09:30:18 aperonnet Exp $
//
// ezmlm-threads.php - ezmlm-php v2.0
// --------------------------------------------------------------
33,11 → 33,12
fclose($fd);
$md5 = rtrim(preg_replace('/^md5:/', '', $md5), "\n");
if ($md5 != $this->md5_of_file($this->listdir . "/archive/threads/" . $month)) {
print "<!-- $md5 ne " . $this->md5_of_file($this->listdir . "/archive/threads/" . $month) . " -->\n";
$html .= "<!-- $md5 ne " . $this->md5_of_file($this->listdir . "/archive/threads/" . $month) . " -->\n";
$this->build($month);
}
}
return $this->display($month);
$html .= $this->display($month);
return $html ;
}
 
// display: this loads each cache file sequentially and displays the messages in them
45,6 → 46,7
// view the threads
function display($month) {
$seq = 0;
$html = '' ;
if (!is_dir($this->tempdir . "/ezmlm-php-" . $this->listname)) {
$cache = $this->tempdir . "/ezmlm-php-" . $this->listname . "-" . $month;
} else {
51,22 → 53,24
$cache = $this->tempdir . "/ezmlm-php-" . $this->listname . "/" . $month;
}
// Le lien par date et par thread
$html = '[ '.$this->makelink('action=show_month&amp;actionargs[]='.$month, 'par date').' ]' ;
$html .= '[ '.$this->makelink('action=show_month&amp;actionargs[]='.$month, 'par date').' ]' ;
$months = array(1 => 'January', 2 => 'February', 3 => 'March', 4 => 'April', 5 => 'May', 6 => 'June', 7 => 'July', 8 => 'August',
9 => 'September', 10 => 'October', 11 => 'November', 12 => 'December');
// remplacé par le tableau globals $mois dans ezmlm.php
$html = '<h2>'.FIL_DE_DISCUSSION.' pour '.$GLOBALS['mois'][((int)substr($month,4,2) / 1) -1] .', ' . substr($month,0,4) . '</h2>'."\n";
$html .= '<h2>'.FIL_DE_DISCUSSION.' pour '.$GLOBALS['mois'][((int)substr($month,4,2) / 1) -1] .', ' . substr($month,0,4) . '</h2>'."\n";
$html = '<table class="table_cadre">'."\n";
$html = '<tr><th>Num</th><th>De</th><th>Sujet</th><th>Date</th></tr>'."\n";
$html = '<tr><td colspan="3"><hr /></td></tr>'."\n";
$html .= '<table class="table_cadre">'."\n";
$html .= '<tr><th>Num</th><th>De</th><th>Sujet</th><th>Date</th></tr>'."\n";
$html .= '<tr><td colspan="3"><hr /></td></tr>'."\n";
$ctc = 0;
 
if (is_file($cache)) {
include($cache);
}
$html = '<tr><td colspan="3"></td></tr>'."\n";
$html = '</table>'."\n";
$html .= '<tr><td colspan="3"></td></tr>'."\n";
$html .= '</table>'."\n";
return $html ;
}