bonjour,
Je dois réaliser une connection à une application extérieur à un site web pour afficher le résultat(auteur,référence,pdf,...) sur le site.
L'une des solution serait d'utiliser les web services avec nusoap et le fichier wsdl présent dans le programme extérieur.
Le programme extérieur étant "Référence Manager 11" qui dispose de cette posibilité.
le fichier de connection à un bug à la ligne 50 (for foreach())?
Quelqu'un aurait il une idée sur la marche à suivre ?merci d'avance
<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/research/publications/nuSOAP.php');
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++ CLASSE referenceManager: interfaçage avec Référence Manager +++++++++++++++++++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
class referenceManager{
var $client, $database, $sort="ID", $ascending="true", $search=NULL;
//############ Constructeur ####################################################################################
function referenceManager(){
$this->database="PublicationsScientifiques";
$wsdl="
[ Lien ]";
$this->client=new soapclient($wsdl,'wsdl');
$this->client->setCredentials("craweb","craweb","basic");
$this->client->setHTTPProxy("193.190.115.84", "800", "login","password");
}
//############ Destructeur #####################################################################################
function destroy(){
$this=NULL;
}
//############ SearchAndReturnIDs ##############################################################################
function SearchAndReturnIDs($search,$searchField="Titles",$sort="primary_title",$ascending="true"){
$sortArray=array("ID"=>"2",
"primary_title"=>"3",
"secondary_title"=>"13",
"primary_authors"=>"4",
"secondary_authors"=>"14",
"date"=>"5");// Ne pas oublier departement= user defined ?!
$sortID=$sortArray[$sort];
$database_array=array($this->database);
$parametres=array("version"=>"1.0",
"searchExpression"=>"<query><term field='".$searchField."'>".$search."</term></query>",// * pour afficher tout les enregistrements
"databaseCount"=>"1",
"sortKey"=>"<recordlist_sort><key id='".$sortID."' ascending='".$ascending."' /></recordlist_sort>",
"maxRecords"=>"0",
"databaseArray"=> $database_array);
$result=$this->client->call('SearchAndReturnIDs',$parametres);
// PARSING RESULTAT***
$resultXML=$result['results_list'];
$GLOBALS['resultArray']=array();
function fonctionBaliseOuvrante($parseur, $nomBalise,$tableauAttributs){
foreach($tableauAttributs as $key=> $value){
if($key=="RECNUM"){
array_push($GLOBALS['resultArray'],$value);
}
}
}
function fonctionBaliseFermante($parseur,$nomBalise){
// Rien
}
foreach($resultXML as $resultArray){
$parseurXML=xml_parser_create();
xml_set_element_handler($parseurXML,"fonctionBaliseOuvrante","fonctionBaliseFermante");
xml_parse($parseurXML, $resultArray['!']) or die("Erreur XML");
xml_parser_free($parseurXML);
}
// FIN PARSING RESULTAT***
return $GLOBALS['resultArray'];
}
//############ ReadRecord ##############################################################################
function ReadRecord($recordID){
$parametres=array("version"=>"1.0",
"recordID"=>"<RecordID database='".$this->database."' recNum='".$recordID."' />",
"database"=>$this->database);
$resultXML=$this->client->call('ReadRecord',$parametres);
// PARSING RESULTAT***
$GLOBALS['resultArray']=array();
if(!function_exists("fonctionBaliseOuvrante2")){// Pour éviter redéclaration
function fonctionBaliseOuvrante2($parseur, $nomBalise, $tableauAttributs){
global $derniereBaliseRencontree;
if($nomBalise!="STYLE"){$derniereBaliseRencontree=$nomBalise;}
}
function fonctionTexte2($parseur, $texte){
global $derniereBaliseRencontree;
// En cas de plusieur clé comme AUTHOR, KEYWORD, URL ect...
if(is_array($GLOBALS['resultArray'][$derniereBaliseRencontree])){
array_push($GLOBALS['resultArray'][$derniereBaliseRencontree],$texte);
}
else if(array_key_exists($derniereBaliseRencontree,$GLOBALS['resultArray'])){
$firstValue=$GLOBALS['resultArray'][$derniereBaliseRencontree];
$GLOBALS['resultArray'][$derniereBaliseRencontree]=array($firstValue,$texte);
}
else{
$GLOBALS['resultArray'][$derniereBaliseRencontree]=$texte;
}
}
function fonctionBaliseFermante2($parseur, $nomBalise){
global $derniereBaliseRencontree;
$derniereBaliseRencontree ="";
}
}
$parseurXML=xml_parser_create();
xml_set_element_handler($parseurXML,"fonctionBaliseOuvrante2","fonctionBaliseFermante2");
xml_set_character_data_handler($parseurXML, "fonctionTexte2");
xml_parse($parseurXML, $resultXML) or die("Erreur XML");
xml_parser_free($parseurXML);
// FIN PARSING RESULTAT***
return $GLOBALS['resultArray'];
}
function GetSearchableFields(){
$parametres=array("version"=>"1.0");
return $this->client->call('GetSearchableFields',$parametres);
}
}
?>