'.$locArray["sct_resultat_zero"].$qSource.$locArray["sct_finguillemet"]."";
}
/*
* Initialisation de la chaine à retourner et insertion de l'entête
*/
$resultString = "";
if ($ficheCount == 1) {
$resultString .= ''.$locArray["sct_resultat_un"].$qSource.$locArray["sct_finguillemet"]."
";
} else {
$resultString .= ''.$ficheCount.' '.$locArray["sct_resultat_plusieurs"].$qSource.$locArray["sct_finguillemet"]."
";
}
/*
* Insertion du lien vers la version ods, le chemin est construit avec l'identifiant du résultat de la recherche ($ficheSearchResult['qId'])
*/
$resultString .= '';
/*
* Création d'une instance de la classe Sct_FicheSearchResultWrapper qui permettre un certain nombre de traitement
* sur le résultat. 'SCT_Marque' est le nom de la classe appliquée aux balises qui servent à surligner les termes
* de la recherche
*/
$sctFicheSearchResultWrapper = new Sct_FicheSearchResultWrapper($ficheSearchResult, 'SCT_Marque');
/*
* Récupération du tableau des groupes de fiches et itération
*/
$ficheGroupArray = $ficheSearchResult['ficheGroupArray'];
$groupCount = count($ficheGroupArray);
for($i = 0; $i < $groupCount; $i++) {
$ficheGroup = $ficheGroupArray[$i];
if (array_key_exists('corpusClasse', $ficheGroup)) {
$corpusClasse = $ficheGroup['corpusClasse'];
$resultString .= '';
$resultString .= $corpusClasse['intitule'];
$resultString .= '
';
}
$ficheArray = $ficheGroup['ficheArray'];
$count = count($ficheArray);
$resultString .= '';
for($j = 0; $j < $count; $j++) {
$fiche = $ficheArray[$j];
$codecorpus = $fiche['codecorpus'];
$resultString .= '';
if (array_key_exists('icon', $fiche)) {
$resultString .= '';
}
$resultString .= '';
$resultString .= $sctFicheSearchResultWrapper->concatWithSpan($fiche['mtitre']);
$resultString .= '
';
if (array_key_exists('msoustitre', $fiche)) {
$resultString .= '';
$resultString .= $sctFicheSearchResultWrapper->concatWithSpan($fiche['msoustitre']);
$resultString .= '
';
}
$infoTech = "";
if (array_key_exists('mcomplementArray', $fiche)) {
$mcomplementArray = $fiche['mcomplementArray'];
$compCount = count($mcomplementArray);
for($k = 0; $k < $compCount; $k++) {
$mcomplement = $mcomplementArray[$k];
$num = $mcomplement['num'];
if ($k > 0) {
$infoTech .= ', ';
}
$infoTech .= $sctFicheSearchResultWrapper->concatWithSpan($mcomplement['mcomp']);
}
}
if (array_key_exists('annee', $fiche)) {
if (strlen($infoTech) > 0) {
$infoTech .= ' | ';
}
$infoTech .= $fiche['annee'];
}
if (strlen($infoTech) > 0) {
$resultString .= '';
$resultString .= $infoTech;
$resultString .= '
';
}
if (array_key_exists('codemotcleArray', $fiche)) {
$codemotcleArray = $fiche['codemotcleArray'];
$motcleCount = count($codemotcleArray);
$resultString .= '';
$resultString .= '';
if ($motcleCount == 1) {
$resultString .= $locArray['sct_motscles_un'];
} else {
$resultString .= $locArray['sct_motscles_plusieurs'];
}
$resultString .= " ";
$resultString .= ' ';
for($k = 0; $k < $motcleCount; $k++) {
if ($k > 0) {
$resultString .= ', ';
}
$codemotcle = $codemotcleArray[$k];
$resultString .= $sctFicheSearchResultWrapper->getMotcleString($codemotcle);
}
$resultString .= '
';
}
$resultString .= ' ';
}
$resultString .= '
';
}
return $resultString;
}
/**
* Objet encapsulant le résultat d'une recherche et proposant
* des fonctions utilitaires.
*/
class Sct_FicheSearchResultWrapper {
var $corpusIntituleArray;
var $spanClass; //contenu de l'attribut class des balises span
var $motcleStringMap; //tableau associatif avec comme clé le code d'un mot-clé et comme valeur le libellé du mot-clé
function __construct($ficheSearchResult, $spanClass) {
$this->corpusIntituleArray = $ficheSearchResult['corpusIntituleArray'];
$this->spanClass = $spanClass;
$this->motcleStringMap = $this->initMotcleStringMap($ficheSearchResult);
}
/**
* Retourne l'intitulé du complément de numéro $compNum pour
* le corpus de code $codecorpus
*/
function getComplementIntitule($codecorpus, $compNum) {
$intituleCount = count($this->corpusIntituleArray);
for($i = 0; $i < $intituleCount; $i++) {
$corpusIntitule = $this->corpusIntituleArray[$i];
if ($corpusIntitule['codecorpus'] == $codecorpus) {
return $corpusIntitule['complement_'.$compNum];
}
}
return "?";
}
/**
* $markedStringArray est un tableau qui contient soit des chaines soit des tableaux associatifs
* comprenant une clé 's' indiquant les chaines marquées. Ces dernières sont entourées d'une balise
* span dont la classe est $spanClass
*/
function concatWithSpan($markedStringArray) {
$result = "";
$count = count($markedStringArray);
for($i = 0; $i < $count; $i++) {
$obj = $markedStringArray[$i];
if (is_array($obj)) {
$result .= '';
$result .= $obj['s'];
$result .= '';
} else {
$result .= $obj;
}
}
return $result;
}
/**
* Retourne le libellé du mot-clé de code $codemotcle
*/
function getMotcleString($codemotcle) {
return $this->motcleStringMap[$codemotcle];
}
/**
* Initialisation du tableau associatif des codes de mots-clés et de lerus libellés
*/
private function initMotcleStringMap($ficheSearchResult) {
$motcleStringMap = array();
if (!array_key_exists('motcleArray', $ficheSearchResult)) {
return $motcleStringMap;
}
$motcleArray = $ficheSearchResult['motcleArray'];
$count = count($motcleArray);
for($i = 0; $i < $count; $i++) {
$motcle = $motcleArray[$i];
$codemotcle = $motcle['codemotcle'];
$mlibelleArray = $motcle['mlibelleArray'];
$lib = "";
$libCount = count($mlibelleArray);
for($j = 0; $j < $libCount; $j++) {
if ($j > 0) {
$lib .= "/";
}
$mlib =$mlibelleArray[$j];
$lib .= $this->concatWithSpan($mlib['mlib']);
}
$motcleStringMap[$codemotcle] = $lib;
}
return $motcleStringMap;
}
}
===== Les fichiers de langue =====
Ce sont des fichiers .ini chargé par la fonction //parse_ini_file//
sct_motscles_un = "Mot-clé :"
sct_motscles_plusieurs = "Mots-clés :"
sct_deuxpoints = " :"
sct_resultat_zero = "Aucun résultat pour la recherche « "
sct_resultat_plusieurs = "résultats pour la recherche « "
sct_resultat_un = "Un résultat pour la recherche « "
sct_finguillemet = " »."
sct_lien_ods = "Récupérez l'intégralité du résultat au format ODS"
===== Les lignes à inclure =====
La langue de l'interface est celle de la langue de Spip en cours. Les mots de la recherche sont indiqués par le paramètre //q// transmis à la recherche.
**Note :** si vous effectuez une recherche sur le moteur scrutari de la Coredem, n'oubliez pas de modifier la valeur de la variable //$sct_site//, c'est la seule trace que conserve la Coredem sur l'origine de la recherche. Si vous désirez que le moteur ne garde aucune trace de la recherche, ajoutez //&log=0// à la fin //$sct_query//.
$sct_lang = #LANG;
$sct_url = 'http://sct1.scrutari.net/sct/coredem/';
$sct_q = false;
if (isset($_REQUEST['q'])) {
$sct_q = $_REQUEST['q'];
}
if ($sct_q) {
$sct_site = 'coredem'; //indication du site d'origine de la recherche, à modifier avec une chaine identifiant l'origine
$sct_query = 'type=q-fiche&fichefields=codecorpus,mtitre,msoustitre,mcomplements,annee,href,icon&motclefields=mlibelles&langui='.$sct_lang.'&intitules=complement&q='.urlencode($sct_q).'&site='.$sct_site;
include('squelettes/scrutari/fonctions.php');
echo Sct_getResult($sct_url, $sct_query);
}