function search($source_id, $query, $search_id) { global $charset; global $pmb_curl_proxy; global $base_path; $this->error = false; $this->error_message = ""; $params = $this->get_source_params($source_id); $this->fetch_global_properties(); if ($params["PARAMETERS"]) { //Affichage du formulaire avec $params["PARAMETERS"] $vars = unserialize($params["PARAMETERS"]); foreach ($vars as $key => $val) { global ${$key}; ${$key} = $val; } } // on affecte la valeur 100 au nombre de notices retournées si aucune valeur n'a été affectée if (!$max_return) { $max_return = 100; } $nb_pages = floor($max_return / 40); $stop = false; //construit le tableau pour la recherche multi-critère foreach ($query as $i => $q) { $t = array(); $t["inter"] = $q->inter; $uid = explode("_", $q->uid); if ($uid[0] == "f") { $t["field"] = $uid[1]; } else { $t["field"] = $q->uid; } $t["operator"] = $q->op; if (count($q->values) > 1) { $vi = 0; foreach ($q->values as $value) { $t["value"][$vi] = $value; $vi++; } } else { $t["value"] = $q->values[0]; } $tab_query[$i] = $t; } // on vérifie d'abord les paramètres du formulaires if ($display_items == "1") { $items = true; } else { $items = false; } //on vérifie le protocole à utiliser... $this->current_protocole = $protocole; switch ($this->current_protocole) { case JSONRPC: $ws = new jsonRPCClient($url); $res = $ws->pmbesSearch_advancedSearch($query[0]->sc_type, $tab_query); //Si il y a des résultats if ($res["nbResults"]) { //Si le nombre de notices est > à la valeur max alors on attribue à nb la valeur max $nb = $res["nbResults"] > $max_return ? $max_return : $res["nbResults"]; //On va chercher le contenu des notices au format pmb_xml_unimarc $notices = $ws->pmbesSearch_fetchSearchRecords($res["searchId"], 0, $nb, "pmb_xml_unimarc", "utf-8", true, $items); for ($i = 0; $i < $nb; $i++) { $this->rec_records($notices[$i], $source_id, $search_id); } } break; case SOAP: $ws = new SoapClient($url . "&wsdl"); $res = $ws->pmbesSearch_advancedSearch($query[0]->sc_type, $tab_query); //Si il y a des résultats if ($res->nbResults) { //Si le nombre de notices est > à la valeur max alors on attribue à nb la valeur max $nb = $res->nbResults > $max_return ? $max_return : $res->nbResults; //On va chercher le contenu des notices au format pmb_xml_unimarc $notices = $ws->pmbesSearch_fetchSearchRecords($res->searchId, 0, $nb, "pmb_xml_unimarc", "utf-8", true, $items); for ($i = 0; $i < $nb; $i++) { $this->rec_records($notices[$i], $source_id, $search_id); } } break; } }