122 lines
3.1 KiB
PHP
122 lines
3.1 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Gére les enregistremenst des dernières recherche dans la sessions
|
||
|
* On garde les dernières recherche
|
||
|
* Le tableau de description est le suivant dans la session :
|
||
|
* []['type'] = ent, dir, act, annonces, histo
|
||
|
* ['params'] = tableau des paramètres pour chaque type
|
||
|
* ['consult'] = tableau des informations lors de la consultation d'une fiche
|
||
|
* ['giant'] = tableau des informations lors de la consultation de la recherche giant.
|
||
|
*/
|
||
|
class RechercheHistorique
|
||
|
{
|
||
|
protected $index = 'recherches';
|
||
|
protected $listeRecherche = array();
|
||
|
protected $rechercheMax = 10;
|
||
|
|
||
|
/**
|
||
|
* Liste des types de recherches et des noms des champs de recherche
|
||
|
* @var unknown_type
|
||
|
*/
|
||
|
protected $listParams = array(
|
||
|
'ent' => array('siret', 'raisonSociale', 'numero', 'voie', 'cpVille', 'telFax', 'naf', 'pays', 'fj'),
|
||
|
'dir' => array('dirNom', 'dirPrenom', 'dirDateNaissJJ', 'dirDateNaissMM', 'dirDateNaissAAAA', 'dirCpVille'),
|
||
|
'act' => array('actNomRs', 'cpVille', 'siret', 'pays', 'pctMin', 'pctMax'),
|
||
|
'wcheck' => array('dirNom', 'dirPrenom', 'dirType'),
|
||
|
'annonce' => array('formA'),
|
||
|
'refclient' => array('ref'),
|
||
|
);
|
||
|
|
||
|
public function __construct()
|
||
|
{
|
||
|
$session = new Zend_Session_Namespace($this->index);
|
||
|
$this->listeRecherche = $session->liste;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Sauvegarde des éléments pour la recherche
|
||
|
* @param string $type
|
||
|
* @param array $params
|
||
|
* @return string
|
||
|
*/
|
||
|
public function save($type, $params)
|
||
|
{
|
||
|
//Controle des éléments
|
||
|
$elements = array();
|
||
|
foreach($params as $key => $value){
|
||
|
if (in_array($key, $this->listParams[$type])){
|
||
|
$elements[$key] = $value;
|
||
|
}
|
||
|
}
|
||
|
//Vérification du nombre d'éléments
|
||
|
if (count($this->listeRecherche)>=$this->rechercheMax){
|
||
|
array_shift($this->listeRecherche);
|
||
|
}
|
||
|
|
||
|
$token = uniqid();
|
||
|
|
||
|
$this->listeRecherche[] = array(
|
||
|
'type' => $type,
|
||
|
'token' => $token,
|
||
|
'params' => $elements,
|
||
|
);
|
||
|
$session = new Zend_Session_Namespace($this->index);
|
||
|
$session->liste = $this->listeRecherche;
|
||
|
|
||
|
return $token;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Assigne les informations pour une recherche (type = dir|ent)
|
||
|
* @param string $siret
|
||
|
* @param integer $id
|
||
|
* @param string $raisonSociale
|
||
|
*/
|
||
|
public function assignInfo($siret, $id, $raisonSociale)
|
||
|
{
|
||
|
$rindex = count($this->listeRecherche)-1;
|
||
|
$this->listeRecherche[$rindex]['consult'] = array(
|
||
|
'siret' => $siret,
|
||
|
'id' => $id,
|
||
|
'raisonSociale' => $raisonSociale,
|
||
|
);
|
||
|
$session = new Zend_Session_Namespace($this->index);
|
||
|
$session->liste = $this->listeRecherche;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retourne la liste des éléments de la session dans le bon ordre
|
||
|
*/
|
||
|
public function liste()
|
||
|
{
|
||
|
if (count($this->listeRecherche)>0) {
|
||
|
return array_reverse($this->listeRecherche);
|
||
|
} else {
|
||
|
return array();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Retourne un élément de la liste
|
||
|
* @param integer $index
|
||
|
*/
|
||
|
public function item($index)
|
||
|
{
|
||
|
$rindex = count($this->listeRecherche)-1-$index;
|
||
|
return $this->listeRecherche[$rindex];
|
||
|
}
|
||
|
|
||
|
public function get($token)
|
||
|
{
|
||
|
if (count($this->listeRecherche)>0) {
|
||
|
foreach($this->listeRecherche as $item) {
|
||
|
if($token == $item['token']){
|
||
|
return $item;
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
}
|