#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini '.' && $filename<>'..' && substr($filename, -4)=='.PUB') $tabFichier[] = $filename; } sort($tabFichier); } if (count($tabFichier)==0 && count($tabFichLigneCmd)==0) die(date ('Y/m/d - H:i:s') . " - Aucun fichier d'annonces BOAMP à traiter !".EOL); echo date ('Y/m/d - H:i:s') . " - Début du traitement de chargement des annonces BOAMP...".EOL; for ($iFic=0; isset($tabFichier[$iFic]); $iFic++) { $nomFichier=$tabFichier[$iFic]; echo date ('Y/m/d - H:i:s') . " - Lecture du fichier $nomFichier...".EOL; $tabLignes=file(BOAMP_LOCAL_DIR.$nomFichier); $tabAnnonces=array(); $iAnn=0; $nextBalise=''; foreach ($tabLignes as $i=>$ligne) { $nextBaliseLu=false; $code=''.substr($ligne,0,2); $texte=strtr(substr($ligne,2), '`„Œ$~', 'èéà@ç'); switch ($code) { case '01': $iAnn++; $tabAnnonces[$iAnn]['annee']='20'.substr($texte,0,2); $tabAnnonces[$iAnn]['numParution']=substr($texte,2,3); if (substr($texte,5,1)=='1') $edition='A'; elseif (substr($texte,5,1)=='2') $edition='B'; elseif (substr($texte,5,1)=='3') $edition='C'; else die("Edition '$edition' inconnue !"); $tabAnnonces[$iAnn]['edition']=$edition; $tabAnnonces[$iAnn]['dateParution']='20'.substr($texte,10,2).substr($texte,8,2).substr($texte,6,2); $tabAnnonces[$iAnn]['numAnnonce']=substr($texte,12,4); $tabAnnonces[$iAnn]['r2']=trim(substr($texte,16,3)); $tabAnnonces[$iAnn]['dept']=trim(substr($texte,19,3)); $tabAnnonces[$iAnn]['rubrique']=substr($texte,22,3); $tabAnnonces[$iAnn]['nojo']=substr($texte,25,10); $tabAnnonces[$iAnn]['numAnnB']=substr($texte,35,4); $tabAnnonces[$iAnn]['texte']=$tabAnnonces[$iAnn]['balises']=''; break; case '05': switch (trim($texte)) { case 'Nom et adresse officiels du pouvoir': case 'adjudicateur:': $nextBalise='infoOrgNom'; break; case "à l'attention de": $nextBalise='infoOrgDest'; break; case 'Mode de passation:': case 'Procédure de passation:': $nextBalise='infoPassation'; break; case "Critères d'attribution:": $nextBalise='infoAttribution'; break; case "Référence d'identification du marché": case "qui figure dans l'appel d'offres:": $nextBalise='infoIdenMarche'; break; case "Annonce no": case "B.O.A.M.P.": $nextBalise='infoAnnonceNo'; break; case "Date d'envoi de l'avis à la": case 'publication:': $nextBalise='infoPublication'; break; default: $nextBalise=''; break; } break; case '15': switch (trim($texte)) { case 'Objet :': case 'Objet du marché:': $nextBalise='objet'; break; } break; case '16': $tabAnnonces[$iAnn]['objetMarche'].=trim($texte).' '; break; case '10': if ($nextBalise<>'') { $nextBaliseLu=true; $tabAnnonces[$iAnn]['_'.$nextBalise].=trim($texte).' '; } else $tabAnnonces[$iAnn]['code'.$code].=trim($texte).' '; break; case '17': case '30': case '35': break; case '28': $tabAnnonces[$iAnn]['code28'].=trim($texte).' '; break; case '44': $tabAnnonces[$iAnn]['naf'].=trim($texte).' '; break; case '20': $tabAnnonces[$iAnn]['classes'].=preg_replace('/00$/','', trim($texte)).' '; break; case '25': $tabAnnonces[$iAnn]['motDesc'].=trim($texte).' '; break; case '41': $tabAnnonces[$iAnn]['numAnnonce41']=trim($texte); break; case '42': $tabAnnonces[$iAnn]['dateParution42']=trim($texte); break; default: die("Code '$code' inconnu : ".$texte); } if ($code<>'01') $tabAnnonces[$iAnn]['texte'].=$texte; $tabAnnonces[$iAnn]['balises'].="".trim($texte)."".EOL; if ($code<>'05' && !$nextBaliseLu) $nextBalise=''; } echo date ('Y/m/d - H:i:s') . " - Chargement des $iAnn annonces du fichier $nomFichier...".EOL; /** Insertion de l'annonce en base **/ foreach ($tabAnnonces as $i=>$tabAnnonce) { if (preg_match('/(.*)((?:[0-9]{1,4},? | rue | place | boulevard | avenue )(?:.*)(?:[0-9]{5,5} )(?:.*))/Ui', $tabAnnonce['_infoOrgNom'], $matches)) { $tabAnnonce['nom']=trim($matches[1]); $tabAnnonce['adresse']=trim($matches[2]); } else { $tabAnnonce['nom']=trim($tabAnnonce['_infoOrgNom']); $tabAnnonce['adresse']=trim($tabAnnonce['_infoOrgDest']); } $ret=$iDb->insert('avis', $tabAnnonce); //$ret=$iDb->insert('bodacc_detail', $tabAnnC); if (!$ret && mysql_errno()<>1062) { echo date ('Y/m/d - H:i:s')." - ERREUR ". mysql_errno(). " : Insertion des informations 'autres' du BODACC sur le siren ".$sirenParticipation." en base impossible (annonce $idAnnRet) !".EOL; echo date ('Y/m/d - H:i:s'). mysql_error(); //print_r($tabAnnC); //print_r($tabData); die(); } } echo date ('Y/m/d - H:i:s') . " - Les $i annonces du fichier $nomFichier ont été chargées.".EOL; } echo date ('Y/m/d - H:i:s') . " - Fin du traitement de chargement des annonces BOAMP...".EOL; ?>