sphinx = new SphinxClient(); $this->sphinx->SetServer($configuration->sphinx->host, intval($configuration->sphinx->port)); $this->sphinx->SetMatchMode(SPH_MATCH_EXTENDED2); $this->sphinx->ResetFilters(); foreach($structure as $key => $valeur) { if (method_exists($this, $key)) { if(is_array($valeur)) { if($valeur[0] != "" and $valeur[0] != 'tous') $this->$key($valeur); } else { if($valeur != 'tous' and $valeur != "") $this->$key($valeur); } } } } public function extract($structure) { $resultats = $this->execute(true); $total = array( 'total' => count($resultats), 'insee' => $this->calculRedevanceInsee(), 'result'=> $resultats ); foreach ($total['result']['matches'] as $element) { $siret[] = $element['attrs']['siren'].$element['attrs']['nic']; } return ($siret); } public function calculRedevanceInsee() { $this->sphinx->SetFilter('presentrcs', array(0)); $resSphinx = $this->sphinx->Query($this->alpha, $this->index); return ($resSphinx['total_found']); } public function execute($need = false) { $resSphinx = $this->sphinx->Query($this->alpha, $this->index); if($need) { return ($resSphinx); } return ($resSphinx['total_found']); } protected function setFilter($name, $valeur) { if(!is_array($valeur)) { $this->sphinx->SetFilter($name, array(intval($valeur))); }else { $this->sphinx->SetFilter($name, $this->transformIntval($valeur)); } } protected function setFilterRange($name, $valeur) { $this->sphinx->SetFilterRange($name, intval($valeur[0]), intval($valeur[1])); } protected function writeRequest($name, $valeur, $or = false) { if(!is_array($valeur)) { if($or and !empty($this->alpha)) $this->alpha .= ' | '; $this->alpha .= '@'.$name.' '.$valeur.' '; } else { $i = 0; if($or and !empty($this->alpha)) $this->alpha .= ' | '; foreach($valeur as $item) { if($i != 0) $this->alpha .= ' | '; $this->alpha .= '@'.$name.' '.$item.' '; $i++; } } } protected function setAlpha($name, $valeur) { $or = array('bilType'); $and = array('ape_entrep', 'ape_etab', 'age_entrep', 'age_etab', 'NaceEntrep', 'NaceEtab'); if(in_array($name, $or)) { if(!empty($valeur)) $this->writeRequest($name, $valeur, true); } else if (in_array($name, $and)) { if(!empty($valeur)) $this->writeRequest($name, $valeur); } } protected function transformIntval($array) { $copy = array(); foreach($array as $item => $valeur) { $copy[$item] = intval($valeur); } return ($copy); } protected function dirNom($valeur) { $this->setFilter('dirNom', $valeur); } protected function siege($valeur) { $this->setFilter('siege', $valeur); } protected function adr_cp($valeur) { $this->setFilter('adr_cp', $valeur); } protected function adr_dep($valeur) { $this->setAlpha('adr_dep', $valeur); } protected function adr_com($valeur) { $this->setFilter('adr_com', $valeur); } protected function tel($valeur) { $this->setFilter('tel', $valeur); } protected function fax($valeur) { $this->setFilter('fax', $valeur); } protected function cj($valeur) { $this->setFilter('cj', $valeur); } protected function capital($valeur) { $valeur = $this->setMinMax($name, $valeur); $this->setFilterRange('capital', $valeur); } protected function ape_etab($valeur) { $this->setAlpha('ape_etab', $valeur); } protected function ape_entrep($valeur) { $this->setAlpha('ape_entrep', $valeur); } protected function age_entrep($valeur) { $this->setAlpha('age_entrep', $valeur); } protected function age_etab($valeur) { $this->setAlpha('age_etab', $valeur); } protected function tcaexp($valeur) { $this->setFilterRange('tcaexp', $valeur); } protected function teff_entrep($valeur) { if($valeur[0] != 0 or $valeur[1] != 0) $this->setFilterRange('teff_entrep', $valeur); } protected function teff_etab($valeur) { $valeur = $this->setMinMax($name, $valeur); $this->setFilterRange('teff_etab', $valeur); } protected function rang($valeur) { $this->setFilterRange('rang', $valeur); } protected function actifEco($valeur) { $this->setFilter('actifEco', $valeur); } protected function presentRcs($valeur) { $this->setFilter('presentRcs', $valeur); } protected function procolHisto($valeur) { $this->setFilter('procolHisto', $valeur); } protected function tvaIntraValide($valeur) { $this->setFilter('tvaIntraValide', $valeur); } protected function NaceEtab($valeur) { $this->setAlpha('NaceEtab', $valeur); } protected function NaceEntrep($valeur) { $this->setAlpha('NaceEntrep', $valeur); } protected function dateCrea_etab($valeur) { if(empty($valeur[0])) {$valeur[0] = date('Ymd');} if(empty($valeur[1])) {$valeur[1] = date('Ymd');} if(!is_array($valeur)) { $format = explode('/', $valeur); $valeur = $format[2].$format[1].$format[0]; } else { $format1 = explode('/', $valeur[0]); $format2 = explode('/', $valeur[1]); $valeur[0] = $format1[2].$format1[1].$format1[0]; $valeur[1] = $format2[2].$format2[1].$format2[0]; } $this->setFilterRange('dateCrea_etab', $valeur); } protected function dateCrea_ent($valeur) { if(empty($valeur[0])) {$valeur[0] = date('Ymd');} if(empty($valeur[1])) {$valeur[1] = date('Ymd');} if(!is_array($valeur)) { $format = explode('/', $valeur); $valeur = $format[2].$format[1].$format[0]; } else { $format1 = explode('/', $valeur[0]); $format2 = explode('/', $valeur[1]); $valeur[0] = $format1[2].$format1[1].$format1[0]; $valeur[1] = $format2[2].$format2[1].$format2[0]; } $this->setFilterRange('dateCrea_etab', $valeur); } protected function dateImmat($valeur) { if(empty($valeur[0])) {$valeur[0] = date('Ymd');} if(empty($valeur[1])) {$valeur[1] = date('Ymd');} if(!is_array($valeur)) { $format = explode('/', $valeur); $valeur = $format[2].$format[1].$format[0]; } else { $format1 = explode('/', $valeur[0]); $format2 = explode('/', $valeur[0]); $valeur[0] = $format1[2].$format1[1].$format1[0]; $valeur[1] = $format2[2].$format2[1].$format2[0]; } $this->setFilterRange('dateImmat', $valeur); } protected function eff_entrep($valeur) { $valeur = $this->setMinMax($name, $valeur); $this->setFilter('eff_entrep', $valeur); } protected function eff_etab($valeur) { $valeur = $this->setMinMax($name, $valeur); $this->setFilter('eff_etab', $valeur); } protected function rivoli($valeur) { $this->setFilter('rivoli', $valeur); } protected function nbEtab($valeur) { $valeur = $this->setMinMax($name, $valeur); $this->setFilterRange('nbEtab', $valeur); } protected function sirenGrp($valeur) { $this->setFilter('sirenGrp', $valeur); } protected function nbActio($valeur) { $valeur = $this->setMinMax('nbActio', $valeur); $this->setFilterRange('nbActio', $valeur); } protected function nbMPubli($valeur) { $this->setFilter('nbMPubli', $valeur); } protected function nbPart($valeur) { $valeur = $this->setMinMax('nbPart', $valeur); $this->setFilterRange('nbPart', $valeur); } protected function bilDuree($valeur) { $this->setFilterRange('bilDuree', $valeur); } protected function bilType($valeur) { $this->setAlpha('bilType', $valeur); } protected function bilAnnee($valeur) { $this->setFilter('bilAnnee', $valeur); } protected function bilTca($valeur) { $this->setFilter('bilTca', $valeur); } protected function bilEE($valeur) { $valeur = $this->setMinMax('bilEE', $valeur); $this->setFilterRange('bilEE', $valeur); } protected function bilFL($valeur) { $valeur = $this->setMinMax('bilFL', $valeur); $this->setFilterRange('bilFL', $valeur); } protected function bilFK($valeur) { $valeur = $this->setMinMax('bilFK', $valeur); $this->setFilterRange('bilFK', $valeur); } protected function bilFR($valeur) { $valeur = $this->setMinMax('bilFR', $valeur); $this->setFilterRange('bilFR', $valeur); } protected function bilGF($valeur) { $valeur = $this->setMinMax('bilGF', $valeur); $this->setFilterRange('bilGF', $valeur); } protected function bilGP($valeur) { $valeur = $this->setMinMax('bilGP', $valeur); $this->setFilterRange('bilGP', $valeur); } protected function bilGU($valeur) { $valeur = $this->setMinMax('bilGU', $valeur); $this->setFilterRange('bilGU', $valeur); } protected function bilGW($valeur) { $valeur = $this->setMinMax('bilGW', $valeur); $this->setFilterRange('bilGW', $valeur); } protected function bilHD($valeur) { $valeur = $this->setMinMax('bilHD', $valeur); $this->setFilterRange('bilHD', $valeur); } protected function bilHL($valeur) { $valeur = $this->setMinMax('bilHL', $valeur); $this->setFilterRange('bilHL', $valeur); } protected function bilHM($valeur) { $valeur = $this->setMinMax('bilHM', $valeur); $this->setFilterRange('bilHM', $valeur); } protected function bilHN($valeur) { $valeur = $this->setMinMax('bilHN', $valeur); $this->setFilterRange('bilHN', $valeur); } protected function bilYP($valeur) { $valeur = $this->setMinMax('bilYP', $valeur); $this->setFilterRange('bilYP', $valeur); } protected function avisCs($valeur) { $valeur = explode('-', $valeur); $this->setFilter('avisCs', $valeur); } protected function bilFS($valeur) { $this->setFilterRange('bilFS', $valeur); } protected function lieuAct($valeur) { $this->setFilter('lieuAct', $valeur); } protected function bilGG($valeur) { $this->setFilterRange('bilGG', $valeur); } protected function bilGV($valeur) { $this->setFilterRange('bilGV', $valeur); } protected function bilHI($valeur) { $this->setFilterRange('bilHI', $valeur); } protected function adrDom($valeur) { $this->setFilter('adrDom', $valeur); } protected function web($valeur) { $this->setFilter('web', $valeur); } protected function mail($valeur) { $this->setFilter('mail', $valeur); } protected function bilCloture($valeur) { if(!is_array($valeur)) { $format = explode('/', $valeur); $valeur = $format[2].$format[1].$format[0]; } else { $format1 = explode('/', $valeur[0]); $format2 = explode('/', $valeur[0]); $valeur[0] = $format1[2].$format1[1].$format1[0]; $valeur[1] = $format2[2].$format2[1].$format2[0]; } //print_r($valeur); $this->setFilterRange('bilCloture', $valeur); } }