extranet/library/Giant/Search.lib.php
Damien LASSERRE 70f11106a1 Giant 2.0
2011-04-19 15:59:50 +00:00

171 lines
4.7 KiB
PHP

<?php
/**
* Module de recherche pour Giant V2
*
* @author Lasserre Damien
* @copyright Scores et decisions
*
*/
Class Search
{
/** Merci de respecter les fonctions WSDL **/
private $soapClient;
private $label;
private $labelResults;
private $query;
private $methodes = array(
'search',
'advancedSearch'
);
/** Parametres de paginations **/
private $headerSearch;
private $nbOfResults;
/**
* Permet de construire l'objet avec des paramêtres (init)
*
* @param unknown_type $soap
* @param unknown_type $paginatorAction
*/
public function __construct($soap, $paginatorAction = null)
{
$this->label = new Zend_Config_Ini('Giant/Traductions/label.ini', 'search');
$this->labelResults = new Zend_Config_Ini('Giant/Traductions/results.ini', 'search');
$this->headerSearch = new stdClass();
$this->headerSearch->IncludePhoneticMatches = FALSE;
$this->headerSearch->IncludeSuggestions = FALSE;
$this->soapClient = $soap;
self::searchPaginator($paginatorAction);
}
/**
* Retourne une methode présent dans cette classe
*
* @param Nom de la methode $methode
* @param uparametres $parametres
*/
public function getMethode($methode, $parametres)
{
foreach($this->methodes as $fonction) {
if ($methode == $fonction)
return (self::$fonction($parametres));
}
}
/**
* Methode de recherche traite les informations retounrés par giant.
*
* @param unknown_type $paramatres
*/
protected function search($paramatres)
{
$searchParametre = new stdClass();
$searchParametre->Query = '';
$champQuery = array(
'raisonSociale', 'numero', 'voie', 'cpVille',
'telFax', 'naf'
);
$this->soapClient->getAllMethodesFromWsdl('search');
$searchParametre->StartRow = $_SESSION['recherche']['giant']['page'];
foreach($paramatres as $champ => $parametre) {
if(!empty($parametre)) {
foreach($champQuery as $valeur) {
if($champ == $valeur)
$searchParametre->Query .= $parametre.' ';
}
}
}
$this->query = $searchParametre->Query;
$search = array_merge((array)$searchParametre, (array)$this->headerSearch);
return ($this->soapClient->search($search));
}
public function advancedSearch($parametres)
{
$advancedParametres = new stdClass();
$TypeAdvanced = new stdClass();
$this->soapClient->getAllMethodesFromWsdl('advancedSearch');
$labelForm = array(
'siret' => 'CompanyId',
'raisonSociale' => 'RegisteredName',
'numero' => 'HouseNumber',
'voie' => 'Street',
'cpVille' => 'City'
);
foreach ($parametres as $champ => $parametre) {
if (!empty($parametre)) {
foreach ($labelForm as $nameForm => $valeur) {
if ($champ == $nameForm)
$TypeAdvanced->$valeur = $parametre;
}
}
}
$advancedParametres->Query = $TypeAdvanced;
$advanced = array_merge((array)$advancedParametres, (array)$this->headerSearch);
$this->query = $advancedParametres->Query->CompanyId;
return($this->soapClient->advancedSearch($advanced));
}
/**
* Permet de routourner la frappe utilisateur la recherche
*/
public function getQuery()
{
return ($this->query);
}
/**
* Gere la pagination
*
* @param unknown_type $action
*/
private function searchPaginator($action)
{
if ($action == 'up') {
if ($_SESSION['recherche']['giant']['page'] <= $_SESSION['recherche']['giant']['nbResults'])
$_SESSION['recherche']['giant']['page']++;
}
else if ($action == 'down') {
if ($_SESSION['recherche']['giant']['page'] > 0)
$_SESSION['recherche']['giant']['page']--;
}
}
/**
* Gestion des label Descriptions
*/
public function getLabelDesc()
{
return ($this->label);
}
/**
* Gestion des labels de resultats
*/
public function getLabelResults()
{
return ($this->labelResults);
}
private function checkValide($valeur)
{
if (!empty($valeur))
return ($valeur);
return (null);
}
public function __destruct()
{
unset($this->soapClient);
}
}