Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
clients:impl:php_coredem [2012/02/02 18:21] – créée vincent | clients:impl:php_coredem [2013/04/05 17:12] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 8: | Ligne 8: | ||
+ | ===== Le fichier fonctions.php ===== | ||
+ | |||
+ | <code php> | ||
+ | <?php | ||
+ | |||
+ | /* | ||
+ | * Fonction principale qui effectue la requête auprès du serveur Scrutari, récupère le résultat | ||
+ | * au format JSON et le traduit en HTML. | ||
+ | * La valeur de retour est une chaine. | ||
+ | * - $url : l'url du serveur Scrutari avec la barre oblique de fin (exemple : http:// | ||
+ | * - $query : la chaine avec les paramètres de recherche (sera concaténé avec $url sous la forme $url.' | ||
+ | * l' | ||
+ | * de l' | ||
+ | */ | ||
+ | |||
+ | function Sct_getResult($url, | ||
+ | |||
+ | | ||
+ | /* | ||
+ | * Récupération de la réponse JSON sous forme de chaine et transformation sous la forme d' | ||
+ | * $obj est en fait un tableau, on pourrait récupérer $obj sous forme d' | ||
+ | */ | ||
+ | $jsonString | ||
+ | $obj = json_decode($jsonString, | ||
+ | | ||
+ | /* | ||
+ | * $ficheSearchResult est l' | ||
+ | * (ici, on ne fait pas de traitement d' | ||
+ | */ | ||
+ | $ficheSearchResult = $obj[' | ||
+ | | ||
+ | /* | ||
+ | * Récupération de la langue d' | ||
+ | * avec les éléments d' | ||
+ | */ | ||
+ | $langUi = $ficheSearchResult[' | ||
+ | $locArray = parse_ini_file(" | ||
+ | | ||
+ | /* | ||
+ | * Récupération des mots de la recherche tels qu' | ||
+ | */ | ||
+ | $qSource = $ficheSearchResult[' | ||
+ | | ||
+ | /* | ||
+ | * Récupération du nombre de fiches dans le résultat | ||
+ | * S'il est égal à 0, on arrête le traitement en retournant le message | ||
+ | */ | ||
+ | $ficheCount = $ficheSearchResult[' | ||
+ | if ($ficheCount == 0) { | ||
+ | | ||
+ | } | ||
+ | | ||
+ | /* | ||
+ | * Initialisation de la chaine à retourner et insertion de l' | ||
+ | */ | ||
+ | $resultString = ""; | ||
+ | if ($ficheCount == 1) { | ||
+ | $resultString .= '< | ||
+ | } else { | ||
+ | $resultString .= '< | ||
+ | } | ||
+ | | ||
+ | /* | ||
+ | * Insertion du lien vers la version ods, le chemin est construit avec l' | ||
+ | */ | ||
+ | $resultString .= '< | ||
+ | | ||
+ | /* | ||
+ | * Création d'une instance de la classe Sct_FicheSearchResultWrapper qui permettre un certain nombre de traitement | ||
+ | * sur le résultat. ' | ||
+ | * de la recherche | ||
+ | */ | ||
+ | $sctFicheSearchResultWrapper = new Sct_FicheSearchResultWrapper($ficheSearchResult, | ||
+ | |||
+ | /* | ||
+ | * Récupération du tableau des groupes de fiches et itération | ||
+ | */ | ||
+ | $ficheGroupArray = $ficheSearchResult[' | ||
+ | $groupCount = count($ficheGroupArray); | ||
+ | for($i = 0; $i < $groupCount; | ||
+ | $ficheGroup = $ficheGroupArray[$i]; | ||
+ | if (array_key_exists(' | ||
+ | $corpusClasse = $ficheGroup[' | ||
+ | $resultString .= '<p class=" | ||
+ | $resultString .= $corpusClasse[' | ||
+ | $resultString .= '</ | ||
+ | } | ||
+ | $ficheArray = $ficheGroup[' | ||
+ | $count = count($ficheArray); | ||
+ | $resultString .= '< | ||
+ | for($j = 0; $j < $count; $j++) { | ||
+ | $fiche = $ficheArray[$j]; | ||
+ | $codecorpus = $fiche[' | ||
+ | $resultString .= '< | ||
+ | if (array_key_exists(' | ||
+ | $resultString .= '< | ||
+ | } | ||
+ | $resultString .= '<a href="' | ||
+ | $resultString .= $sctFicheSearchResultWrapper-> | ||
+ | $resultString .= '</ | ||
+ | if (array_key_exists(' | ||
+ | $resultString .= '<p class=" | ||
+ | $resultString .= $sctFicheSearchResultWrapper-> | ||
+ | $resultString .= '</ | ||
+ | } | ||
+ | $infoTech = ""; | ||
+ | if (array_key_exists(' | ||
+ | $mcomplementArray = $fiche[' | ||
+ | $compCount = count($mcomplementArray); | ||
+ | for($k = 0; $k < $compCount; $k++) { | ||
+ | $mcomplement = $mcomplementArray[$k]; | ||
+ | $num = $mcomplement[' | ||
+ | if ($k > 0) { | ||
+ | $infoTech .= ', '; | ||
+ | } | ||
+ | $infoTech .= $sctFicheSearchResultWrapper-> | ||
+ | } | ||
+ | } | ||
+ | if (array_key_exists(' | ||
+ | if (strlen($infoTech) > 0) { | ||
+ | $infoTech .= ' | '; | ||
+ | } | ||
+ | $infoTech .= $fiche[' | ||
+ | } | ||
+ | if (strlen($infoTech) > 0) { | ||
+ | $resultString .= '<p class=" | ||
+ | $resultString .= $infoTech; | ||
+ | $resultString .= '</ | ||
+ | } | ||
+ | |||
+ | if (array_key_exists(' | ||
+ | $codemotcleArray = $fiche[' | ||
+ | $motcleCount = count($codemotcleArray); | ||
+ | $resultString .= '<p class=" | ||
+ | $resultString .= '< | ||
+ | if ($motcleCount == 1) { | ||
+ | $resultString .= $locArray[' | ||
+ | } else { | ||
+ | $resultString .= $locArray[' | ||
+ | } | ||
+ | $resultString .= " "; | ||
+ | $resultString .= '</ | ||
+ | for($k = 0; $k < $motcleCount; | ||
+ | if ($k > 0) { | ||
+ | $resultString .= ', '; | ||
+ | } | ||
+ | $codemotcle = $codemotcleArray[$k]; | ||
+ | $resultString .= $sctFicheSearchResultWrapper-> | ||
+ | } | ||
+ | $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' | ||
+ | var $motcleStringMap; | ||
+ | |||
+ | function __construct($ficheSearchResult, | ||
+ | $this-> | ||
+ | $this-> | ||
+ | $this-> | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Retourne l' | ||
+ | * le corpus de code $codecorpus | ||
+ | */ | ||
+ | function getComplementIntitule($codecorpus, | ||
+ | $intituleCount = count($this-> | ||
+ | for($i = 0; $i < $intituleCount; | ||
+ | $corpusIntitule = $this-> | ||
+ | if ($corpusIntitule[' | ||
+ | return $corpusIntitule[' | ||
+ | } | ||
+ | } | ||
+ | return "?"; | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * $markedStringArray est un tableau qui contient soit des chaines soit des tableaux associatifs | ||
+ | * comprenant une clé ' | ||
+ | * 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[' | ||
+ | $result .= '</ | ||
+ | } else { | ||
+ | $result .= $obj; | ||
+ | } | ||
+ | } | ||
+ | return $result; | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * Retourne le libellé du mot-clé de code $codemotcle | ||
+ | */ | ||
+ | function getMotcleString($codemotcle) { | ||
+ | return $this-> | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * 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(' | ||
+ | return $motcleStringMap; | ||
+ | } | ||
+ | $motcleArray = $ficheSearchResult[' | ||
+ | $count = count($motcleArray); | ||
+ | for($i = 0; $i < $count; $i++) { | ||
+ | $motcle = $motcleArray[$i]; | ||
+ | $codemotcle = $motcle[' | ||
+ | $mlibelleArray = $motcle[' | ||
+ | $lib = ""; | ||
+ | $libCount = count($mlibelleArray); | ||
+ | for($j = 0; $j < $libCount; $j++) { | ||
+ | if ($j > 0) { | ||
+ | $lib .= "/"; | ||
+ | } | ||
+ | $mlib =$mlibelleArray[$j]; | ||
+ | $lib .= $this-> | ||
+ | } | ||
+ | $motcleStringMap[$codemotcle] = $lib; | ||
+ | } | ||
+ | return $motcleStringMap; | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Les fichiers de langue ===== | ||
+ | |||
+ | Ce sont des fichiers .ini chargé par la fonction // | ||
+ | |||
+ | <code php> | ||
+ | sct_motscles_un = " | ||
+ | sct_motscles_plusieurs = " | ||
+ | sct_deuxpoints = " :" | ||
+ | sct_resultat_zero = "Aucun résultat pour la recherche « " | ||
+ | sct_resultat_plusieurs = " | ||
+ | sct_resultat_un = "Un résultat pour la recherche « " | ||
+ | sct_finguillemet = " »." | ||
+ | sct_lien_ods = " | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Les lignes à inclure ===== | ||
+ | |||
+ | La langue de l' | ||
+ | |||
+ | **Note :** si vous effectuez une recherche sur le moteur scrutari de la Coredem, n' | ||
+ | |||
+ | |||
+ | < | ||
+ | $sct_lang = #LANG; | ||
+ | $sct_url = ' | ||
+ | $sct_q = false; | ||
+ | if (isset($_REQUEST[' | ||
+ | $sct_q = $_REQUEST[' | ||
+ | } | ||
+ | if ($sct_q) { | ||
+ | $sct_site = ' | ||
+ | $sct_query = ' | ||
+ | include(' | ||
+ | echo Sct_getResult($sct_url, | ||
+ | } | ||
+ | |||
+ | </ | ||