accesDist=$accesDist; $this->iDb=new WDb('sdv1'); $this->iBodacc=new MBodacc(); $this->$iInsee=new MInsee(); } private function getCodeFctDirigeant($strLibDirigeant, $siren=0) { $tabTmp=$this->iBodacc->getDirigeants($strLibDirigeant); if (isset($tabTmp[0]['fonction']) && $tabTmp[0]['fonction']>0) return $tabTmp[0]['fonction']; else { if (preg_match("/directeur.{1,6}agence/iu")) return 8; elseif (preg_match("/directeur.{1,6}ETABLISSEMENT/iu")) return 8; elseif (preg_match("/directeur.{1,6}technique/iu")) return 19; elseif (preg_match("/chef.{1,8}agence/iu")) return 38; elseif (preg_match("/cadre.{1,8}Comptable/iu")) return 55; elseif (preg_match("/Charg.{1,6}affair/iu")) return 60; elseif (preg_match("/chef.{1,8}Atelier/iu")) return 60; elseif (preg_match("/(conducteur|chef).{1,9}travaux/iu")) return 61; elseif (preg_match("/directeur.{1,6}technique/iu")) return 19; elseif (preg_match("/resp.{1,16}technique/iu")) return 49; elseif (preg_match("/resp.{1,16}Expl/iu")) return 37; elseif (preg_match("/di.{1,16}Expl/iu")) return 7; elseif (preg_match("/Chef.{1,6}Ent/iu")) { $tabTmp=$this->iInsee->getIdentiteLight($siren); if ($tabTmp['FJ']>=1000 && $tabTmp['FJ']<2000) return 1050; else die($tabTmp); } else return false; } /* "1","- DIRECTEUR GENERAL" "1","- P.d.g." "1","- PRESIDENT CONSEIL D''ADMINISTRATION" "2","-co-gerant" "1","Administrateur" "2","Artisan" "1","AssociÉ" "1","Associes" "24","Co Gerant" "1","Co Gerante" "1","CO GERANTS" "109","Co-gérant" "12","Co-gérante" "1","Dg Delegue" "1","Dir. General Delegue" "32","Directeur" "1","Directeur Adjoint" "1","Directeur Administratif et Financier" "1","Directeur Gal DÉlÉguÉ" "61","Directeur Général" "11","DIRECTEUR GENERAL DELEGUE" "1","Directeur Général Unique" "1","Directrice" "2","DIRIG." "4","Dirigeant" "38","Gér" "857","Gerant" "3","Gerant -" "13","Gérant Associé" "1","Gérant Associé En Non Collectif" "1","GERANT MAJORITAIRE" "2","Gérant Non Associé" "56","Gérante" "4","P D G" "1","P.d.g" "1","PCA" "168","PRESIDENT" "1","President Conseil De Surveillance" "1","PRESIDENT CONSEIL SURVEILLANCE" "63","Président Directeur Général" "1","PRESIDENT DIRECTOIRE" "16","Président du conseil d'administration" "1","Président Du Conseil De Surveillance" "5","President Du Directoire" "10","Presidente" "1","ReprÉsentant SociÉtÉ PrÉsidente" "1","Vice-président" Gérer en fonction du code CJ "128","Chef D'entreprise" "2","Chef Ent." "3","Chef Entr." "1","Conjoint Collaborateur"=>0500 "1","Metreur" "1","Président De Commission" */ } public function getMaxQualibat() { $ret=$this->iDb->select('qualibat','MAX(id) AS id', '1', false, MYSQL_ASSOC); return $ret[0]['id']; } public function getTabQualibatManquants() { $tabRet=$tabQualibatCalc=$tabQualibatBase=array(); // Liste des Qualibat Calculés $maxQualibat=$this->getMaxQualibat(); for($i=1; $i<=$maxQualibat; $i++) $tabQualibatCalc[]=$i; // Liste des Qualibat en base $ret=$this->iDb->select('qualibat','id', '1 ORDER BY id ASC', false, MYSQL_ASSOC); foreach ($ret as $i=>$res) $tabQualibatBase[]=$res['id']; return array_diff($tabQualibatCalc, $tabQualibatBase); } public function getInfosQualibat($siren, $idQualibat=0) { if ($siren*1>1000) $strWhere="siren=$siren"; elseif ($idQualibat*1>0) { $strWhere="id=$idQualibat"; } else return false; $ret=$this->iDb->select('qualibat','siren, actif, id, nom, adresse, cp, ville, tel, fax, email, web, eff, teff, ca, tca, libFJ, nace, dateFondation, dateDeb, dateFin, dateInsert', $strWhere, false, MYSQL_ASSOC); if (!$this->force && count($ret)>0) { $this->enCache=true; $tabRet=$ret[0];//array(); // Ajout des qualifications $ret=$this->iDb->select('qualibatqualif','code, periodQualif, niveauQualif, mentions, nomQualif, dateAttrib, dateEch', $strWhere, false, MYSQL_ASSOC); foreach ($ret as $i=>$tabTmp) $tabRet['qualifications'][]=$tabTmp; // Ajout des dirigeants $ret=$this->iDb->select('qualibatdir','civNomPrenom, civilite, nom, prenom, fonction', $strWhere, false, MYSQL_ASSOC); foreach ($ret as $i=>$tabTmp) $tabRet['dirigeants'][]=$tabTmp; } elseif ($this->accesDist==true) { $this->enCache=false; // Initialisation Cookies $this->referer='http://www.qualibat.com/Views/EntreprisesRechercheDetail.aspx?id='.$idQualibat; $page=getUrl($this->referer, '', '', '', false, '', '', 3); if ($page['code']<>200) { if ($page['code']==500) { $tabInsert=array( 'actif'=>0, 'id'=>$idQualibat, 'idQualibatAttribue'=>0, 'dateInsert'=>date('YmdHis')); $this->erreur='Numéro Qualibat inexistant'; // On enregistre ce numéro comme non attribué si < au dernier numéro attribué if ($idQualibat<$this->getMaxQualibat()) $this->iDb->insert('qualibat', $tabInsert); } return false; } $body=$page['body']; //die($body); $tabRet['id']=$idQualibat; if (preg_match('/(?:.*)Raison sociale(?:.*)<\/th>(?:.*)(.*)<\/td>/Uis',$body, $matches)) $tabRet['nom']=utf8_decode(trim(strip_tags($matches[1]))); if (preg_match('/(?:.*)Adresse(?:.*)<\/th>(?:.*)(.*)
(.*)<\/td>/Uis',$body, $matches)) { $tabRet['adresse']=strtoupper(utf8_decode(trim($matches[1]))); $adresse2=trim(preg_replace('/ +/',' ',strtr(strip_tags($matches[2]),"\r\n\t".chr(160),' '))); $tabRet['cp']=substr($adresse2,0,5); $tabRet['ville']=utf8_decode(trim(substr($adresse2,5))); } if (preg_match('/(?:.*)Téléphone(?:.*)<\/th>(?:.*)(.*)<\/td>/Uisu',$body, $matches)) $tabRet['tel']=trim(str_replace(' ','',$matches[1])); if (preg_match('/(?:.*)Fax(?:.*)<\/th>(?:.*)(.*)<\/td>/Uis',$body, $matches)) $tabRet['fax']=trim(str_replace(' ','',$matches[1])); if (preg_match('/E-mail<\/th>(?:.*)/Uis',$body, $matches)) $tabRet['email']=utf8_decode(trim($matches[1])); if (preg_match('/(?:.*)SIREN(?:.*)<\/th>(?:.*)(.*)<\/td>/Uis',$body, $matches)) $tabRet['siren']=$siren=trim(str_replace(' ','',$matches[1])); if (preg_match('/(?:.*)Effectif total(?:.*)<\/th>(?:.*)(.*)\(Classification - (.*)\)(?:.*)<\/td>/Uis',$body, $matches)) { $tabRet['eff']=trim(str_replace(' ','',$matches[1])); $tabRet['teff']=trim($matches[2]); } if (preg_match('/(?:.*)CA total(?:.*)<\/th>(?:.*)(.*)\(Classification - (.*)\)(?:.*)<\/td>/Uis',$body, $matches)) { $tabRet['ca']=trim(str_replace(' ','',$matches[1])); if ($tabRet['ca']=='') $tabRet['ca']=NULL; $tabRet['tca']=trim($matches[2]); if ($tabRet['tca']=='') $tabRet['tca']=NULL; } if (preg_match('/(?:.*)Forme Juridique(?:.*)<\/th>(?:.*)(.*)<\/td>/Uis',$body, $matches)) $tabRet['libFJ']=utf8_decode(trim($matches[1])); if (preg_match('/(?:.*)NACE(?:.*)<\/th>(?:.*)(.*)<\/td>/Uis',$body, $matches)) $tabRet['nace']=trim($matches[1]); if (preg_match('/(?:.*)Fondation(?:.*)<\/th>(?:.*)(.*)<\/td>/Uis',$body, $matches)) $tabRet['dateFondation']=Wdate::dateT('d/m/Y', 'Y-m-d', trim($matches[1])); if (preg_match('//Uis',$body, $matches)) $tabRet['web']=utf8_decode(trim($matches[1])); /** Qualifications ? **/ $qualifs=''; if (preg_match('/(?:.*)(.*)<\/table>/Uisu',$body, $matches)) { $typeQualifs=trim(utf8_decode($matches[1])); $qualifs=trim($matches[2]); } if (preg_match('/(?:.*)
(?:.*)(Qualifications professionnelles|Certifications m..tier)(?:.*)
(?:.*)Fondation(?:.*)<\/th>(?:.*)(.*)<\/td>(.*)
/Uis',$body, $matches)) { $tabRet['tmpDirQualif']=trim($matches[2]); $tabRet['tmpLenDirQualif']=strlen(trim($matches[2])); } $tabDateAttrib=$tabDateFin=array(); if (preg_match_all('/
(.*)<\/td>(?:.*)(.*)<\/td>(?:.*)(.*)<\/td>(?:.*)(.*)<\/td>(?:.*)<\/tr>/Uis',$qualifs, $matches)) { foreach ($matches[1] as $i=>$code) { $tabTmp=explode(' ',trim($code)); $nomQualif=utf8_decode(trim($matches[2][$i])); if (preg_match("/\(Tech?nicit. (.*)\)/Uiu", $nomQualif, $matches2)) $niveau=trim($matches2[1]); else $niveau=''; $tabMentions=array(); if (preg_match_all('/Mention (.*)(?:,|$)/Uis',$nomQualif, $matches2)) { foreach ($matches2[1] as $i2=>$mention) $tabMentions[]=$mention; } $tabRet['qualifications'][$i]=array( 'code'=>trim($tabTmp[0]), 'periodQualif'=>trim($tabTmp[1]), 'nomQualif'=>$nomQualif, 'niveauQualif'=>$niveau, 'typeQualif'=>$typeQualifs, 'mentions'=>implode(', ', $tabMentions), 'dateAttrib'=>Wdate::dateT('d/m/Y', 'Y-m-d', trim($matches[3][$i])), 'dateEch'=>Wdate::dateT('d/m/Y', 'Y-m-d', trim($matches[4][$i]))); $tabDateAttrib[]=Wdate::dateT('d/m/Y', 'Ymd', trim($matches[3][$i]))*1; $tabDateFin[]=Wdate::dateT('d/m/Y', 'Ymd', trim($matches[4][$i]))*1; } } sort($tabDateAttrib); rsort($tabDateFin); /** Dirigeants ? **/ $dirs=''; if (preg_match('/(?:.*)(.*)<\/table>/Uis',$body, $matches)) $dirs=trim($matches[1]); /* */ if (preg_match_all('/(?:.*)
(?:.*)Dirigeants(?:.*)
Monsieur EPP Olivier Gérant
(.*)<\/td>(?:.*)(.*)<\/td>(?:.*)<\/tr>/Uis',$dirs, $matches)) { foreach ($matches[1] as $i=>$nom) { $strNom=utf8_decode(trim($nom)); switch(strtoupper(substr($strNom,0,6))) { case 'MONSIE': $civ='M'; $pDeb=8; break; case 'MADAME': $civ='MME'; $pDeb=6; break; case 'MADEMO': $civ='MLLE';$pDeb=12; break; default: $civ=''; $pDeb=0; break; } $libFonction=ucwords(strtolower(utf8_decode(trim($matches[2][$i])))); $tabRet['dirigeants'][$i]=array( 'civNomPrenom'=>$strNom, 'civilite'=>$civ, 'nom'=>strtoupper(trim(substr($strNom,$pDeb,65))), 'prenom'=>ucwords(strtolower(trim(substr($strNom,$pDeb+66)))), 'fonction'=>$libFonction, 'fonctionCode'=>$this->getCodeFctDirigeant($libFonction, $siren), ); } //print_r($tabRet['dirigeants']); //die(); } /** Insertion de l'entreprise **/ $tabInsert=array_merge($tabRet, array( 'idQualibatAttribue'=>1, 'dateInsert'=>date('YmdHis'), 'dateDeb'=>@$tabDateAttrib[0], 'dateFin'=>@$tabDateFin[0])); unset($tabInsert['qualifications']); if (!$this->iDb->insert('qualibat', $tabInsert)) { $this->iDb->update('qualibat', $tabInsert, "id=$idQualibat"); } /** Insertion des qualifications **/ if (isset($tabRet['qualifications']) && count($tabRet['qualifications'])>0) foreach ($tabRet['qualifications'] as $i=>$tabInsert) { $tabInsert['id']=$idQualibat; $tabInsert['siren']=$siren; $tabInsert['dateInsert']=date('YmdHis'); if (!$this->iDb->insert('qualibatqualif', $tabInsert)) { $this->iDb->update('qualibatqualif', $tabInsert, "id=$idQualibat AND code='".$tabInsert['code']."' AND periodQualif='".$tabInsert['periodQualif']."'"); } } /** Insertion des dirigeants **/ if (isset($tabRet['dirigeants']) && count($tabRet['dirigeants'])>0) foreach ($tabRet['dirigeants'] as $i=>$tabInsert) { $tabInsert['id']=$idQualibat; $tabInsert['siren']=$siren; $tabInsert['dateInsert']=date('YmdHis'); if (!$this->iDb->insert('qualibatdir', $tabInsert)) { $this->iDb->update('qualibatdir', $tabInsert, "id=$idQualibat AND civNomPrenom='".addslashes($tabInsert['civNomPrenom'])."' AND fonction='".addslashes($tabInsert['fonction'])."'"); } unset($tabRet['dirigeants'][$i]['civNomPrenom']); } } return $tabRet; } } ?>