webservice->scores; $wsdl = !empty($webservicesConfig->wsdl) ? $webservicesConfig->wsdl : null ; $options = array(); foreach ($webservicesConfig->options as $optionName => $optionValue){ $options[$optionName] = $optionValue; } $options['login'] = $_SERVER['PHP_AUTH_USER']; $options['password'] = $_SERVER['PHP_AUTH_PW']; $this->wsdl = $wsdl; $this->wsdlOptions = $options; } /** * Retourne les informations identitaires de l'entreprise ou de l'établissement demandé * @param string $siret Siren de l'entreprise ou siret de l'établissement * @param int $id Identifiant interne * @param boolean $forceVerif * @return IdentiteReturnType */ function getIdentite($siret, $id = 0, $forceVerif = false) { //Enregistrement des accès à la requête getIdentite Zend_Registry::get('WsLogger')->info("getIdentite - ip:". $_SERVER['REMOTE_ADDR'].", login:".$_SERVER['PHP_AUTH_USER']); //Connexion aux webservices V1 try { $client = new SoapClient($this->wsdl, $this->wsdlOptions); $O = $client->getIdentite($siret, $id, $forceVerif); } catch (SoapFault $fault) { Zend_Registry::get('WsLogger')->err("getIdentite($siret, $id) - ".serialize($fault)); } //Gestion du retour $error = new ErrorType(); $error = arrayToClass($O['error'], 'ErrorType'); $result = new IdentiteResultType(); $result = arrayToClass($O['result'], 'IdentiteResultType'); $outputParams = new IdentiteReturnType(); $outputParams->error = $error; $outputParams->result = $result; return $outputParams; } /** * Recherche * @param string $type Type de la recherche (recherche entreprise : 'ent', recherche dirigeant : 'dir') * @param RechercheEntrepriseCriteres $criteres * @param int $position Position de parcours des résultats retournées (0 par défaut) * @param int $nbRep Nombre de réponses retournées lors d'une requête (20 par défaut) * @param int $maxRep Nombre de réponses maximum pouvant être retournées lors d'une requête (200 par défaut) * @param bool $pertinence Recherche orthographique stricte sur le nom, l'adresse et la ville (false par défaut) * @param bool $avecSiren Seulement les entités sirénées (false par défaut) * @return RechercheEntrepriseReturnType */ function rechercheEntreprise($type, $criteres, $position = 0, $nbRep = 20, $maxRep = 200, $pertinence = false, $avecSiren = false) { //Enregistrement des accès à la requête getIdentite Zend_Registry::get('WsLogger')->info("rechercheEntreprise - ip:". $_SERVER['REMOTE_ADDR'].", login:".$_SERVER['PHP_AUTH_USER']); switch ($type) { case 'ent': $entCriteres = new CriteresEntreprise(); $entCriteres = $criteres->elementEntreprise; $client = new SoapClient($this->wsdl, $this->wsdlOptions); $identifiant = $entCriteres->identifiant; $typeId = ''; if ($identifiant!='') { $len = strlen($identifiant); //Numéro WALDEC if (strtoupper(substr($identifiant,0,1))=='W') { $typeId = 'W'; //Code ISIN } elseif ($len==12){ $typeId = 'I'; //TVA Intracommunautaire } elseif (in_array(substr($identifiant,0,2), array('AT','BE','BG','CY','CZ','DE','DK','EE','EL','ES', 'FI','GB','HU','IE','IT','LT','LU','LV','MT','NL','PL', 'PT','RO','SE','SI','SK'))){ //"La recherche par numéro de TVA n'est pas encore possible sur ce pays !"; //Pour la france } elseif (substr($identifiant,0,2)=='FR') { $typeId = 'S'; if ($len==13) $identifiant = substr($identifiant,4,9); else $identifiant = ''; //Numéro RC } elseif (preg_match('/A|B|C|D/i', $identifiant)) { $typeId='R'; //Siren normal on enleve tout ce qui n'est pas un chiffre } else { $typeId = 'S'; } } if (in_array($typeId, array('R', 'W', 'I'))){ try { $O = $client->searchAutreId( $typeId, $identifiant, empty($position) ? 0 : $position, empty($nbRep) ? 20 : $nbRep, empty($maxRep) ? 200 : $maxRep, $entCriteres->codePostal ); } catch (SoapFault $fault) { Zend_Registry::get('WsLogger')->err("rechercheEntreprise - ".serialize($criteres)); } } elseif ($typeId == 'S'){ try { $O = $client->searchSiren( $identifiant, empty($position) ? 0 : $position, empty($nbRep) ? 20 : $nbRep, empty($maxRep) ? 200 : $maxRep, $entCriteres->codePostal ); } catch (SoapFault $fault) { Zend_Registry::get('WsLogger')->err("rechercheEntreprise - ".serialize($criteres)); } } else { try { $O = $client->searchNomAdr( $entCriteres->raisonSociale, $entCriteres->adresse, $entCriteres->codePostal, $entCriteres->ville, empty($entCriteres->siege) ? false : $entCriteres->siege, empty($entCriteres->actif) ? false : $entCriteres->actif, empty($position) ? 0 : $position, empty($nbRep) ? 20 : $nbRep, empty($maxRep) ? 200 : $maxRep, empty($pertinence) ? false : $pertinence, empty($avecSiren) ? false : $avecSiren, $entCriteres->naf ); } catch (SoapFault $fault) { Zend_Registry::get('WsLogger')->err("rechercheEntreprise - ".serialize($criteres)); } } break; case 'dir': $dirCriteres = new CriteresDirigeant(); $dirCriteres = $criteres->elementDirigeant; $client = new SoapClient($this->wsdl, $this->wsdlOptions); try { $O = $client->searchDir( $dirCriteres->dirNom, $dirCriteres->dirPrenom, $dirCriteres->dirDateNaiss, $dirCriteres->dirVille, empty($position) ? 0 : $position, empty($nbRep) ? 20 : $nbRep, empty($maxRep) ? 200 : $maxRep, empty($pertinence) ? false : $pertinence ); } catch (SoapFault $fault) { Zend_Registry::get('WsLogger')->err("rechercheEntreprise - ".serialize($criteres)); } break; } $error = new ErrorType(); $error = arrayToClass($O['error'], 'ErrorType'); $results = new RechercheEntrepriseResult(); $results = arrayToClass($O['results'], 'RechercheEntrepriseResult'); $outputParams = new RechercheEntrepriseReturnType(); $outputParams->error = $error; $outputParams->results = $results; return $outputParams; } /** * Retourne le status du webservice * @return StatusResult */ function status() { /* @todo tester les différents éléments qui peuvent conduire * à un problème dans les services tel que la connexion à la * base de données, l'accès FTP, l'accès HTTP, l'accès système de fichier */ //Enregistrement des accès à la requête getIdentite Zend_Registry::get('WsLogger')->info("status - ip:". $_SERVER['REMOTE_ADDR'].", login:".$_SERVER['PHP_AUTH_USER']. ", hash:".$_SERVER['PHP_AUTH_PW']); $error = new StatusResult(); $error->statusCode = 0; $error->statusMsg = 'Services disponible (beta)'; return $error; } } ?>