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, | ||
| + | } | ||
| + | |||
| + | </ | ||
