2013-06-19 09:45:13 +00:00
< ? php
/**
2013-11-28 12:49:27 +00:00
* Crontab
2013-06-19 09:45:13 +00:00
* 0 9 * * 1 - 5 / var / www / batch / getAsso . php - c >> / var / www / log / getAsso . log
2013-11-28 12:49:27 +00:00
*
* Recherche
*
* Compte initial
* http :// www . journal - officiel . gouv . fr / association / index . php ? ACTION = Rechercher & HI_PAGE = 1 & HI_COMPTEUR = 0 & original_method = get & WHAT =& JTH_ID =& JAN_BD_CP =& JRE_ID =& JAN_LIEU_DECL =& JTY_ID =& JTY_WALDEC =& JTY_SIREN = 776467102 & JPA_D_D =& JPA_D_F =& rechercher . x = 0 & rechercher . y = 0
*
2013-06-19 09:45:13 +00:00
*/
2015-09-14 20:31:06 +00:00
// --- Define path to application directory
2014-03-07 15:44:02 +00:00
defined ( 'APPLICATION_PATH' )
2015-09-14 20:31:06 +00:00
|| define ( 'APPLICATION_PATH' , realpath ( __DIR__ . '/../application' ));
2014-03-07 15:44:02 +00:00
2015-09-14 20:31:06 +00:00
// --- Define application environment
2014-03-07 15:44:02 +00:00
defined ( 'APPLICATION_ENV' )
|| define ( 'APPLICATION_ENV' , ( getenv ( 'APPLICATION_ENV' ) ? getenv ( 'APPLICATION_ENV' ) : 'production' ));
2015-09-18 10:01:04 +00:00
// --- Composer autoload
2015-09-14 20:31:06 +00:00
require_once realpath ( __DIR__ . '/../vendor/autoload.php' );
2014-08-04 14:45:48 +00:00
2015-09-14 20:31:06 +00:00
// --- Create application, bootstrap, and run
$application = new Zend_Application ( APPLICATION_ENV , APPLICATION_PATH . '/configs/application.ini' );
2013-06-19 09:45:13 +00:00
require_once APPLICATION_PATH . '/configs/config.php' ;
2013-07-30 08:09:17 +00:00
require_once 'framework/fwk.php' ;
2013-06-19 09:45:13 +00:00
require_once 'framework/common/chiffres.php' ;
require_once 'framework/common/dates.php' ;
require_once 'framework/mail/sendMail.php' ;
require_once 'Metier/bodacc/classMBodacc.php' ;
require_once 'Metier/insee/classMInsee.php' ;
$tabInfosGlobal = array ();
2013-10-22 13:47:33 +00:00
$repPdfAssoCpt = '/home/data/datafile/association/bilans/' ;
2013-06-19 09:45:13 +00:00
function getNextDate ( $dateCour , $nbJours = 7 ) {
$nextDate = date ( 'Ymd' , mktime ( 0 , 0 , 0 , WDate :: dateT ( 'Ymd' , 'm' , $dateCour ), WDate :: dateT ( 'Ymd' , 'd' , $dateCour ) + $nbJours , WDate :: dateT ( 'Ymd' , 'Y' , $dateCour )));
return $nextDate ;
}
global $tabDep ;
$tabDep = array (
'Dordogne' => '24' ,
'Gironde' => '33' ,
'Landes' => '40' ,
'Lot-et-Garonne' => '47' ,
'Pyrénées-Atlantiques' => '64' ,
'Bas-Rhin' => '67' ,
'Haut-Rhin' => '68' ,
'Allier' => '03' ,
'Cantal' => '15' ,
'Haute-Loire' => '43' ,
'Puy-de-Dôme' => '63' ,
'Calvados' => '14' ,
'Manche' => '50' ,
'Orne' => '61' ,
'Côte-d\'Or' => '21' ,
'Nièvre' => '58' ,
'Saône-et-Loire' => '71' ,
'Yonne' => '89' ,
'Côtes-d\'Armor' => '22' ,
'Finistère' => '29' ,
'Ille-et-Vilaine' => '35' ,
'Morbihan' => '56' ,
'Cher' => '18' ,
'Eure-et-Loir' => '28' ,
'Indre' => '36' ,
'Indre-et-Loire' => '37' ,
'Loir-et-Cher' => '41' ,
'Loiret' => '45' ,
'Ardennes' => '08' ,
'Aube' => '10' ,
'Haute-Marne' => '52' ,
'Marne' => '51' ,
'Corse-du-sud' => '2A' ,
'Haute-Corse' => '2B' ,
'Doubs' => '25' ,
'Haute-Saône' => '70' ,
'Jura' => '39' ,
'Territoire-de-Belfort' => '90' ,
'Eure' => '27' ,
'Seine-Maritime' => '76' ,
'Essonne' => '91' ,
'Hauts-de-Seine' => '92' ,
'Paris' => '75' ,
'Seine-et-Marne' => '77' ,
'Seine-Saint-Denis' => '93' ,
'Val-d\'Oise' => '95' ,
'Val-de-Marne' => '94' ,
'Yvelines' => '78' ,
'Aude' => '11' ,
'Gard' => '30' ,
'Hérault' => '34' ,
'Lozère' => '48' ,
'Pyrénées-Orientales' => '66' ,
'Corrèze' => '19' ,
'Creuse' => '23' ,
'Haute-Vienne' => '87' ,
'Moselle' => '57' ,
'Meurthe-et-Moselle' => '54' ,
'Meuse' => '55' ,
'Vosges' => '88' ,
'Ariège' => '09' ,
'Aveyron' => '12' ,
'Gers' => '32' ,
'Haute-Garonne' => '31' ,
'Hautes-Pyrénées' => '65' ,
'Lot' => '46' ,
'Tarn' => '81' ,
'Tarn-et-Garonne' => '82' ,
'Nord' => '59' ,
'Pas-de-calais' => '62' ,
'Guadeloupe' => '971' ,
'Guyane' => '973' ,
'Martinique' => '972' ,
'Réunion' => '974' ,
'Saint-Pierre-et-Miquelon' => '975' ,
'Mayotte' => '976' ,
'Loire-Atlantique' => '44' ,
'Maine-et-Loire' => '49' ,
'Mayenne' => '53' ,
'Sarthe' => '72' ,
'Vendée' => '85' ,
'Aisne' => '02' ,
'Oise' => '60' ,
'Somme' => '80' ,
'Charente' => '16' ,
'Charente-Maritime' => '17' ,
'Deux-Sèvres' => '79' ,
'Vienne' => '86' ,
'Alpes-de-Haute-Provence' => '04' ,
'Alpes-Maritimes' => '06' ,
'Bouches-du-Rhone' => '13' ,
'Hautes-Alpes' => '05' ,
'Var' => '83' ,
'Vaucluse' => '84' ,
'Ain' => '01' ,
'Ardèche' => '07' ,
'Drôme' => '26' ,
'Haute-Savoie' => '74' ,
'Isère' => '38' ,
'Loire' => '42' ,
'Rhône' => '69' ,
'Savoie' => '73' ,
);
function getInfosAnnonceAsso ( $annonceHtml , $depotComptes = false )
{
$tabAnn = array ();
global $tabDep ;
global $iInsee ;
$tabAnn [ 'Assoc_Nom' ] = htm2txt ( @ getTextInHtml ( $annonceHtml , '<p>Association : <b>' , '<b>' , '</b>' ));
if ( substr ( $tabAnn [ 'Assoc_Nom' ], - 1 ) == '.' ) $tabAnn [ 'Assoc_Nom' ] = substr ( $tabAnn [ 'Assoc_Nom' ], 0 , - 1 );
$tabAnn [ 'Siren' ] = str_replace ( ' ' , '' , strtr ( htm2txt ( @ getTextInHtml ( $annonceHtml , '<p>Siren : <b>' , '<b>' , '</b>' )), ' .-/;,' , ' ' )) * 1 ;
$tabAnn [ 'sirenValide' ] = $iInsee -> valideSiren ( $tabAnn [ 'Siren' ]);
$tabAnn [ 'Waldec' ] = strtoupper ( @ getTextInHtml ( $annonceHtml , '<p>Identification R.N.A. : <b>' , '<b>' , '</b>' ));
$tabAnn [ 'Annonce_Html' ] = str_replace ( '</p>' , '' , str_replace ( chr ( 160 ), ' ' , html_entity_decode ( @ getTextInHtml ( $annonceHtml , '<p align="LEFT"><br>' , '<br>' , '</p>' ))));
if ( $tabAnn [ 'Annonce_Html' ] == '' ) // Les fondations n'ont pas le même corps HTML
$tabAnn [ 'Annonce_Html' ] = str_replace ( '</p>' , '' , str_replace ( chr ( 160 ), ' ' , html_entity_decode ( @ getTextInHtml ( $annonceHtml , '<p align="left"></p> <p align="left">' , '</p> <p align="left">' , '</p>' ))));
if ( $tabAnn [ 'Annonce_Html' ] == '' ) // Les fondations n'ont pas le même corps HTML
$tabAnn [ 'Annonce_Html' ] = '#####' . str_replace ( chr ( 160 ), ' ' , html_entity_decode ( $annonceHtml ));
if ( $depotComptes ) {
$tabAnn [ 'pdfLink' ] =@ getTextInHtml ( $annonceHtml , '<a href="/' , '/' , '">' );
$tmp =@ getTextInHtml ( $annonceHtml , 'Date de clôture de l\'exercice : <b>' , '<b>' , '</b>' );
$tabAnn [ 'dateCloture' ] = WDate :: dateT ( 'd/m/Y' , 'Y-m-d' , $tmp );
if ( $tabAnn [ 'dateCloture' ] == '' ) {
preg_match ( '/_([0-9]{8})/' , $tabAnn [ 'pdfLink' ], $matches );
/* sendMail (
'mricois@scores-decisions.com' ,
'mricois@scores-decisions.com' ,
'Associations' ,
$annonceHtml . " \n \n \n " . print_r ( $matches , 1 )); */
}
$tabAnn [ 'typeCompte' ] =@ getTextInHtml ( $annonceHtml , '<a href="/' , '">>' , '</a>' );
$tabAnn [ 'dateInsert' ] = date ( 'YmdHis' );
} else {
$tabAnn [ 'nic' ] = 0 ;
$tabAnn [ 'nicValide' ] = 0 ;
$tabAnn [ 'Activite' ] = htm2txt ( @ getTextInHtml ( $annonceHtml , 'Activité(s) : <b>' , '<b>' , '</b>' ));
$tabAnn [ 'Num_Annonce' ] =@ getTextInHtml ( $annonceHtml , 'No d\'annonce : <b>' , '<b>' , '</b>' );
$tmp =@ getTextInHtml ( $annonceHtml , 'Paru le : <b>' , '<b>' , '</b>' );
$tabAnn [ 'Date_Parution' ] = substr ( $tmp , 6 , 4 ) . '-' . substr ( $tmp , 3 , 2 ) . '-' . substr ( $tmp , 0 , 2 );
$tabAnn [ 'Num_Parution' ] =@ getTextInHtml ( $annonceHtml , 'No de parution : <b>' , '<b>' , '</b>' );
$depReg = trim ( htm2txt ( @ getTextInHtml ( $annonceHtml , 'Département (Région) : <b>' , '<b>' , '</b></p>' )));
$tabDepReg = explode ( '(' , $depReg );
$dep = trim ( $tabDepReg [ 0 ]);
$numDep = $tabDep [ $dep ];
if ( $numDep == '' ) echo date ( 'Y/m/d - H:i:s' ) . " - Attention, département ' $dep ' non trouvé ! " . EOL ;
$region = trim ( substr ( $tabDepReg [ 1 ], 0 , strlen ( $tabDepReg [ 1 ]) - 1 ));
$tabAnn [ 'Departement' ] = $numDep ;
$tabAnn [ 'Sous_Prefecture' ] = htm2txt ( @ getTextInHtml ( $annonceHtml , '<p>Lieu parution : <b>Déclaration à la ' , ' à la ' , '</b>' ));
$tabAnn [ 'Type_Annonce' ] = htm2txt ( @ getTextInHtml ( $annonceHtml , 'Type d\'annonce : <b>' , '<b>' , '</b>' ));
/** Recherche du type d ' association
**/
if ( preg_match ( '/ASL/i' , $tabAnn [ 'Type_Annonce' ]) || preg_match ( '/syndicale/i' , $tabAnn [ 'Type_Annonce' ]))
$tabAnn [ 'typeAsso' ] = 'ASL' ;
elseif ( preg_match ( '/Fondation/i' , $tabAnn [ 'Type_Annonce' ]))
$tabAnn [ 'typeAsso' ] = 'FON' ;
elseif ( preg_match ( '/dotation/i' , $tabAnn [ 'Type_Annonce' ]))
$tabAnn [ 'typeAsso' ] = 'FOD' ;
else
$tabAnn [ 'typeAsso' ] = 'ASS' ;
/** Recherche du type d ' insertion
**/
if ( preg_match ( '/ANNULATION/i' , $tabAnn [ 'Type_Annonce' ]))
$tabAnn [ 'typeAnnonce' ] = 'Suppression' ;
elseif ( preg_match ( '/RECTIFICATIF/i' , $tabAnn [ 'Type_Annonce' ]))
$tabAnn [ 'typeAnnonce' ] = 'Rectificatif' ;
else
$tabAnn [ 'typeAnnonce' ] = 'Insertion' ;
$tabAnn [ 'Assoc_Duree' ] = trim ( htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], 'Durée :' , 'Durée :' , '.<br>' )));
$tabAnn [ 'Assoc_Dotation' ] = trim ( htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], 'Montant de la dotation initiale :' , 'initiale :' , '.<br>' )));
$tabAnn [ 'Assoc_ProgAction' ] = trim ( htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], 'action pluriannuel :' , 'pluriannuel :' , '.<br>' )));
$tabAnn [ 'Assoc_Fondateurs' ] = trim ( htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], ' de chacun des fondateurs :' , 'fondateurs :' , '.</p>' )));
//<p align="LEFT">Autorisation administrative.</p> <p align="LEFT">
//Date de signature de statuts : 21 décembre 1992.<br>
//Date de la modification des statuts : 7 février 1996, autorisation délivrée par le préfet 16 mars 1996.</p> <p align="LEFT">Autorisation tacite.</p> <p align="LEFT">
//Date de la demande de modification des statuts : 7 février 1996, sollicitée auprès du préfet de Paris.</p>
$tabAnn [ 'Assoc_Web' ] =@ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], 'ite Internet : </i>' , '</i>' , '<i>' );
if ( substr ( $tabAnn [ 'Assoc_Web' ], - 1 ) == '.' )
$tabAnn [ 'Assoc_Web' ] = substr ( $tabAnn [ 'Assoc_Web' ], 0 , - 1 );
$tabAnn [ 'Assoc_Mail' ] = @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], '<i>Courriel : </i>' , '</i>' , '<i>' );
if ( $tabAnn [ 'Assoc_Mail' ] == '' )
$tabAnn [ 'Assoc_Mail' ] = @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], '<i>Mél. : </i>' , '</i>' , '<i>' );
if ( substr ( $tabAnn [ 'Assoc_Mail' ], - 1 ) == '.' )
$tabAnn [ 'Assoc_Mail' ] = substr ( $tabAnn [ 'Assoc_Mail' ], 0 , - 1 );
$tabAnn [ 'Assoc_Objet' ] = htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], '>Objet : </i>' , '</i>' , '<i>' ));
if ( trim ( $tabAnn [ 'Assoc_Objet' ]) == '' )
$tabAnn [ 'Assoc_Objet' ] = htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], 'Objet : </i>' , '</i>' , '<br>' ));
$tabAnn [ 'Assoc_NObjet' ] = htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], '<i>Nouvel objet : </i>' , '</i>' , '<i>' ));
$tabAnn [ 'Assoc_AObjet' ] = htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], '<i>Additif à l’objet : </i>' , '</i>' , '<i>' ));
$tabAnn [ 'Assoc_NAdresse' ] = htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], '<i>Transféré ; nouvelle adresse : </i>' , '</i>' , '. <i>' ));
$tabAnn [ 'Assoc_Fusion' ] = htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], '<i>Fusion des associations : </i>' , '</i>' , '<i>' ));
$tabAnn [ 'Assoc_Adresse' ] = htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], '<i>Siège social : </i>' , '</i>' , '. <i>' ));
// Fondations
if ( trim ( $tabAnn [ 'Assoc_Adresse' ]) == '' )
$tabAnn [ 'Assoc_Adresse' ] = htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], 'Siège : </i>' , '</i>' , '.<br>' ));
if ( trim ( $tabAnn [ 'Assoc_Adresse' ]) == '' )
$tabAnn [ 'Assoc_Adresse' ] = htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], 'Siège : </i>' , '</i>' , '.</p>' ));
$tabAnn [ 'Assoc_Date_Declaration' ] = htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], '>Date de la déclaration : </i>' , '</i>' , '.' ));
if ( $tabAnn [ 'Assoc_Date_Declaration' ] == '' )
$tabAnn [ 'Assoc_Date_Declaration' ] = htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], '>Date de délivrance du récépissé : </i>' , '</i>' , '.' ));
// Fondations
if ( trim ( $tabAnn [ 'Assoc_Date_Declaration' ]) == '' ) {
$tabAnn [ 'Assoc_Date_Declaration' ] = trim ( htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], 'autorisation administrative :' , 'administrative :' , ',' )));
if ( trim ( $tabAnn [ 'Assoc_Date_Declaration' ]) == '' )
$tabAnn [ 'Assoc_Date_Declaration' ] = trim ( htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], 'Date de la modification des statuts :' , 'statuts :' , ',' )));
if ( trim ( $tabAnn [ 'Sous_Prefecture' ]) == '' )
$tabAnn [ 'Sous_Prefecture' ] = htm2txt ( @ getTextInHtml ( $annonceHtml , 'sollicitée auprès du' , 'du' , '<br>' ));
if ( trim ( $tabAnn [ 'Sous_Prefecture' ]) == '' )
$tabAnn [ 'Sous_Prefecture' ] = htm2txt ( @ getTextInHtml ( $annonceHtml , 'sollicitée auprès du' , 'du' , '</p>' ));
}
$tabAnn [ 'Assoc_Date_Declaration2' ] = WDate :: dateT ( 'd M Y' , 'Y-m-d' , $tabAnn [ 'Assoc_Date_Declaration' ]);
$tabAnn [ 'Assoc_ANom' ] = htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], '<i>Ancien titre : </i>' , '</i>' , '<i>' ));
$tabAnn [ 'Assoc_Annulation' ] = 'Annulation ' . htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], '>Annulation' , '</i>' , '.' ));
/*<i>Annulation </i>de l’insertion n<sup>o</sup> 1014, parue au <i>Journal officiel </i>n<sup>o</sup> 25, du 24 juin 2006, page 3106.*/
if ( $tabAnn [ 'Assoc_Annulation' ] == 'Annulation ' ) $tabAnn [ 'Assoc_Annulation' ] = '' ;
if ( $tabAnn [ 'Assoc_ANom' ] == '' )
$tabAnn [ 'Assoc_ANom' ] = htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], 'Au lieu de : </i>' , '</i>' , '<i>' ));
if ( substr ( $tabAnn [ 'Assoc_ANom' ], - 1 ) == '.' )
$tabAnn [ 'Assoc_ANom' ] = substr ( $tabAnn [ 'Assoc_ANom' ], 0 , - 1 );
$tabAnn [ 'Assoc_NNom' ] = htm2txt ( @ getTextInHtml ( $tabAnn [ 'Annonce_Html' ], '<i>Nouveau titre :' , '</i>' , '<i>' ));
if ( substr ( $tabAnn [ 'Assoc_NNom' ], - 1 ) == '.' )
$tabAnn [ 'Assoc_NNom' ] = substr ( $tabAnn [ 'Assoc_NNom' ], 0 , - 1 );
}
return $tabAnn ;
}
$tempsMinEntreRequetes = 5 ;
$tempsMaxEntreRequetes = 30 ;
set_time_limit ( 0 );
$lastJO = $dateDebut = $dateFin = $dateF = $dateCour = $verif = false ;
$strInfoProg = 'Usage : ' . basename ( $argv [ 0 ]) . " [OPTION]
Recupère les annonces Association sur le site du JO Association .
Sans aucun paramètre , récupération du dernier JO Association .
Sinon :
- d : JJ / MM / AAAA Date de début de publication
- f : JJ / MM / AAAA Date de fin de publication
- l Dernier JO Association uniquement ( * )
- c Dépôts des comptes uniquement
2013-11-28 12:49:27 +00:00
- s : 123456789 Recherche par siren
2013-06-19 09:45:13 +00:00
- n : X Intervalle MIN en secondes entre les requêtes sur le site des JO ( défaut = $tempsMinEntreRequetes )
- i : X \ " MAX \" \" \" \" \" \" \" \" \" \" (défaut= $tempsMaxEntreRequetes )
- v Vérifier que toutes les annonces du JO sont en base !
" ;
2013-11-28 12:49:27 +00:00
2013-06-19 09:45:13 +00:00
$depotComptes = false ;
2013-11-28 12:49:27 +00:00
$siren = null ;
2013-06-19 09:45:13 +00:00
$argv = $_SERVER [ 'argv' ];
if ( $_SERVER [ 'argc' ] == 1 ) $lastJO = true ;
else {
2013-11-28 12:49:27 +00:00
for ( $i = 1 ; isset ( $argv [ $i ]); $i ++ ) {
if ( substr ( $argv [ $i ], 0 , 1 ) == '-' ) {
switch ( substr ( $argv [ $i ], 1 , 1 )) {
case 'd' :
$dateDebut = substr ( $argv [ $i ], 3 , 10 );
$dateDeb = WDate :: dateT ( 'd/m/Y' , 'Ymd' , $dateDebut );
break ;
case 'f' :
$dateFin = substr ( $argv [ $i ], 3 , 10 );
$dateF = WDate :: dateT ( 'd/m/Y' , 'Ymd' , $dateFin );
break ;
case 'n' :
$tempsMinEntreRequetes = trim ( substr ( $argv [ $i ], 3 )) * 1 ;
if ( $tempsMinEntreRequetes < 0 ) $tempsMinEntreRequetes = 0 ;
break ;
case 'i' :
$tempsMaxEntreRequetes = trim ( substr ( $argv [ $i ], 3 )) * 1 ;
if ( $tempsMaxEntreRequetes < 5 ) $tempsMaxEntreRequetes = 2 ;
break ;
case 'l' :
$lastJO = true ;
break ;
case 'v' :
$verif = true ;
break ;
case 'c' :
$depotComptes = true ;
break ;
case 's' :
$siren = substr ( $argv [ $i ], 3 , 9 );
break ;
case '-' :
die ( $strInfoProg );
break ;
default : die ( 'Option ' . $argv [ $i ] . " inconnue ! \n " );
}
}
}
2013-06-19 09:45:13 +00:00
}
2013-11-28 12:49:27 +00:00
if ( $depotComptes ) {
$tabReg = array (
'ASSOCIATION%2FCOMPTE' ,
'FONDATION%2FCOMPTE' ,
'FONDS+DE+DOTATION%2FCOMPTE' ,
'AUTRE%2FCOMPTE' ,
);
} else {
$tabReg = array (
'ASSOCIATION%2FCREATION' ,
'ASSOCIATION%2FMODIFICATION' ,
'ASSOCIATION%2FDISSOLUTION' ,
'ASL' ,
'FONDATION' ,
'DECISION+JUSTICE' ,
'AUTRE' ,
'FONDS+DE+DOTATION' ,
);
}
2013-06-19 09:45:13 +00:00
$iDb = new WDB ();
$iInsee = new MInsee ();
$referer = 'http://www.journal-officiel.gouv.fr/association/' ;
2013-11-28 12:49:27 +00:00
/**
*
*/
2013-06-19 09:45:13 +00:00
if ( $verif ) {
echo date ( 'Y/m/d - H:i:s' ) . " - Comptage du nombre d'annonce présentes en base par date de parution... " . EOL ;
$AnnDb = $iDb -> select ( 'asso' , 'Date_Parution, count(*) as nb' , '1 GROUP BY Date_Parution' );
foreach ( $AnnDb as $i => $tabDates ) {
if ( $tabDates [ 0 ] <> '0000-00-00' ) {
$parDate = $tabDates [ 0 ];
$parNb = $tabDates [ 1 ];
$dateFmt = str_replace ( '/' , '%2F' , WDate :: dateT ( 'Y-m-d' , 'd/m/Y' , $parDate ));
$url = " http://www.journal-officiel.gouv.fr/association/index.php?ACTION=Rechercher&HI_PAGE=1&HI_COMPTEUR=0&original_method=get&WHAT=&JTH_ID=&JAN_BD_CP=&JRE_ID=&JAN_LIEU_DECL=&JTY_ID=&JTY_WALDEC=&JPA_D_D= $dateFmt &JPA_D_F= " . $dateFmt . '&rechercher.x=' . rand ( 1 , 68 ) . '&rechercher.y=' . rand ( 1 , 16 ) . '&rechercher=Rechercher' ;
$page = getUrl ( $url , '' , '' , $referer , false , 'www.journal-officiel.gouv.fr' );
$body = $page [ 'body' ];
$ctx =@ getTextInHtml ( $body , '<A href="index.php?ctx=' , 'ctx=' , '&' ); // Clé de contexte entre chaque page
$nbAnnonces =@ getTextInHtml ( $body , '<p>Résultat de la recherche : <strong>' , '<strong>' , 'annonce(s)</strong>' );
if ( $nbAnnonces <> $parNb && $nbAnnonces <> 0 )
echo date ( 'Y/m/d - H:i:s' ) . " - Parution du $parDate : $parNb annonces en base / $nbAnnonces annonces parues ! " . EOL ;
elseif ( $nbAnnonces == 0 )
echo date ( 'Y/m/d - H:i:s' ) . " - Parution du $parDate : $parNb annonces en base / Plus d'annonces sur le site JO. " . EOL ;
randsleep ( $tempsMinEntreRequetes , $tempsMaxEntreRequetes );
}
}
2013-11-28 12:49:27 +00:00
exit ;
2013-06-19 09:45:13 +00:00
}
2013-11-28 12:49:27 +00:00
/**
*
*/
2013-06-19 09:45:13 +00:00
if ( $lastJO == true ) {
$strLast = ' dernier' ;
$strDates = '' ;
}
2013-11-28 12:49:27 +00:00
/**
*
*/
2013-06-19 09:45:13 +00:00
else {
$strLast = '' ;
if ( $depotComptes ) {
if ( $dateDebut == false ) {
$dateDeb = getNextDate ( date ( 'Ymd' ), - 5 );
$dateDebut = WDate :: dateT ( 'Ymd' , 'd/m/Y' , $dateDeb );
}
if ( $dateFin == false ) {
$dateF = getNextDate ( date ( 'Ymd' ), 0 );
$dateFin = WDate :: dateT ( 'Ymd' , 'd/m/Y' , $dateF );
}
$dateCour = $dateDeb ;
}
if ( $dateFin == false ) {
$dateFin = date ( 'd/m/Y' );
$dateF = WDate :: dateT ( 'd/m/Y' , 'Ymd' , $dateFin );
}
if ( $dateDebut == false )
die ( $strInfoProg );
else
$strDates = " du $dateDebut au $dateFin " ;
$dateCour = $dateDeb ;
}
2013-11-28 12:49:27 +00:00
2013-06-19 09:45:13 +00:00
echo date ( 'Y/m/d - H:i:s' ) . " - DEBUT du la récupération du $strLast JO Association $strDates " . EOL ;
echo date ( 'Y/m/d - H:i:s' ) . ' - La durée maximum entre chaque requête est de ' . $tempsMaxEntreRequetes . ' secondes.' . EOL ;
$message = '' ;
2013-11-28 12:49:27 +00:00
// Boucle sur les dates
while ( $dateCour <= $dateF || $lastJO )
{
// Boucle sur les régions
for ( $i_reg = 0 ; isset ( $tabReg [ $i_reg ]) || $lastJO ; $i_reg ++ )
{
// Recherche par siren
if ( $siren !== null ) {
$url = 'http://www.journal-officiel.gouv.fr/association/index.php?ACTION=Rechercher&HI_PAGE=1&HI_COMPTEUR=0&original_method=get&WHAT=&JTH_ID=&JAN_BD_CP=&JRE_ID=&JAN_LIEU_DECL=&JTY_ID=' . $region . '&JTY_WALDEC=&JTY_SIREN=' . $siren . '&JPA_D_D=&JPA_D_F=&rechercher.x=' . rand ( 1 , 68 ) . '&rechercher.y=' . rand ( 1 , 16 ) . '&rechercher=Rechercher' ;
// Cas récup dernier JO
} elseif ( $lastJO == true ) {
2013-06-19 09:45:13 +00:00
$region = '' ;
2013-11-28 12:49:27 +00:00
$reg5 = substr ( $region , 0 , 5 );
2013-06-19 09:45:13 +00:00
$url = 'http://www.journal-officiel.gouv.fr/association/index.php?ACTION=showLast' ;
2013-11-28 12:49:27 +00:00
}
// On est pas dans la récupération du JO Assoc Jiur
else {
2013-06-19 09:45:13 +00:00
$region = $tabReg [ $i_reg ];
$reg5 = substr ( $region , 0 , 5 );
$dateFmt = str_replace ( '/' , '%2F' , WDate :: dateT ( 'Ymd' , 'd/m/Y' , $dateCour ));
if ( $depotComptes )
$dateFmt2 = str_replace ( '/' , '%2F' , WDate :: dateT ( 'Ymd' , 'd/m/Y' , getNextDate ( $dateCour , 0 )));
else
$dateFmt2 = str_replace ( '/' , '%2F' , WDate :: dateT ( 'Ymd' , 'd/m/Y' , getNextDate ( $dateCour )));
2013-11-28 12:49:27 +00:00
$url = 'http://www.journal-officiel.gouv.fr/association/index.php?ACTION=Rechercher&HI_PAGE=1&HI_COMPTEUR=0&original_method=get&WHAT=&JTH_ID=&JAN_BD_CP=&JRE_ID=&JAN_LIEU_DECL=&JTY_ID=' . $region . '&JTY_WALDEC=&JTY_SIREN=&JPA_D_D=' . $dateFmt . '&JPA_D_F=' . $dateFmt2 . '&rechercher.x=' . rand ( 1 , 68 ) . '&rechercher.y=' . rand ( 1 , 16 ) . '&rechercher=Rechercher' ;
2013-06-19 09:45:13 +00:00
$strLast = '' ;
}
2013-11-28 12:49:27 +00:00
2013-06-19 09:45:13 +00:00
$page = getUrl ( $url , '' , '' , $referer , false , 'www.journal-officiel.gouv.fr' );
$body = $page [ 'body' ];
//die(print_r($body));
$ctx =@ getTextInHtml ( $body , '<A href="index.php?ctx=' , 'ctx=' , '&' ); // Clé de contexte entre chaque page
$nbAnnonces =@ getTextInHtml ( $body , 'Résultat de la recherche :' , ' :' , 'annonce(s)' );
$dateDerParution =@ getTextInHtml ( $body , 'Annonce parue entre le :' , ' et le ' , '<br>' ); // Date au format JJ/MM/AAAA
// 01/08/2010 et le 01/08/2010<br>
$nbPages = ceil ( $nbAnnonces / 25 );
if ( $nbPages > 100 ) {
echo date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Il y a plus de 100 pages d\'annonces !' . EOL ;
die ();
}
echo date ( 'Y/m/d - H:i:s' ) . " - Clé de contexte = $ctx " . EOL ;
unset ( $AnnDb );
$nbAnnDb = 0 ;
if ( $lastJO == true ) {
echo date ( 'Y/m/d - H:i:s' ) . ' - Derniere parution ASSO le ' . $dateDerParution . ' de ' . $nbAnnonces . ' annonces (' . $nbPages . ' pages)' . EOL ;
// On recherche si nous n'avons pas déjà toutes ces annonces en base !
$dateDb = substr ( $dateDerParution , 6 , 4 ) . '-' . substr ( $dateDerParution , 3 , 2 ) . '-' . substr ( $dateDerParution , 0 , 2 );
$AnnDb = $iDb -> select ( 'asso' , 'count(*) AS nb' , " Date_Parution=' $dateDb ' " , false , MYSQL_ASSOC );
$nbAnnDb = $AnnDb [ 0 ][ 'nb' ];
if ( $nbAnnDb == $nbAnnonces ) {
echo date ( 'Y/m/d - H:i:s' ) . ' - Toutes les annonces du ' . $dateDerParution . ' sont en base !' . EOL ;
echo date ( 'Y/m/d - H:i:s' ) . ' - FIN du script' . EOL ;
die ();
}
elseif ( $nbAnnDb > 0 && $nbAnnDb < $nbAnnonces ) {
$message = date ( 'Y/m/d - H:i:s' ) . ' - ATTENTION : Il n\'y a que ' . $nbAnnDb . ' annonces en base sur les ' . $nbAnnonces . ' annonces présentes au JO Association du ' . $dateDerParution . ' !' . EOL ;
echo $message ;
2013-09-02 08:00:15 +00:00
sendMail ( 'supportdev@scores-decisions.com' , 'suivi@scores-decisions.com' , 'JO Association' , $message );
2013-06-19 09:45:13 +00:00
echo date ( 'Y/m/d - H:i:s' ) . ' - Tentative de récupération des annonces...' . EOL ;
}
} else {
// On recherche si nous n'avons pas déjà toutes ces annonces en base !
$dateDb = substr ( $dateCour , 0 , 4 ) . '-' . substr ( $dateCour , 4 , 2 ) . '-' . substr ( $dateCour , 6 , 2 );
$dateDerParution = WDate :: dateT ( 'Y-m-d' , 'd/m/Y' , $dateDb );
if ( $depotComptes ) {
switch ( $region ) {
case 'ASSOCIATION%2FCOMPTE' : $strRegSql = " AND typeAsso='ASS' " ; break ;
case 'FONDATION%2FCOMPTE' : $strRegSql = " AND typeAsso='FON' " ; break ;
case 'FONDS+DE+DOTATION%2FCOMPTE' : $strRegSql = " AND typeAsso='FOD' " ; break ;
case 'AUTRE%2FCOMPTE' : $strRegSql = " AND typeAsso='DIV' " ; break ;
}
$AnnDb = $iDb -> select ( 'asso_bilans' , 'count(*) AS nb' , " Assoc_Date_Declaration=' $dateDb ' $strRegSql " , false , MYSQL_ASSOC );
$strJO = 'depôts des comptes associations' ;
} else {
$AnnDb = $iDb -> select ( 'asso' , 'count(*) AS nb' , " Date_Parution=' $dateDb ' " , false , MYSQL_ASSOC );
$strJO = 'associations' ;
}
$nbAnnDb = $AnnDb [ 0 ][ 'nb' ];
if ( $nbAnnDb >= $nbAnnonces ) {
echo mysql_error () . EOL ;
echo date ( 'Y/m/d - H:i:s' ) . " - Les $nbAnnonces annonces $strJO $reg5 du $dateDerParution ( $dateDb ) sont en base ( $nbAnnDb ) ! " . EOL ;
randsleep ( $tempsMinEntreRequetes , $tempsMaxEntreRequetes );
continue ;
}
elseif ( $nbAnnDb > 0 && $nbAnnDb < $nbAnnonces ) {
$message .= date ( 'Y/m/d - H:i:s' ) . " - ATTENTION : Il n'y a que $nbAnnDb annonce(s) $strJO en base sur les $nbAnnonces annonces présentes au JO du $dateDerParution ! " . EOL ;
echo date ( 'Y/m/d - H:i:s' ) . " - ATTENTION : Il n'y a que $nbAnnDb annonce(s) $strJO en base sur les $nbAnnonces annonces présentes au JO du $dateDerParution ! " . EOL ;
echo date ( 'Y/m/d - H:i:s' ) . ' - Tentative de récupération des annonces...' . EOL ;
}
else {
$message .= date ( 'Y/m/d - H:i:s' ) . " - Il y a $nbAnnDb annonce(s) $strJO $reg5 en base sur les $nbAnnonces annonces présentes au JO du $dateDerParution ! " . EOL ;
echo date ( 'Y/m/d - H:i:s' ) . " - Il y a $nbAnnDb annonce(s) $strJO $reg5 en base sur les $nbAnnonces annonces présentes au JO du $dateDerParution ! " . EOL ;
}
}
$tabAnnonces = explode ( '<div class="hr"><hr/></div>' , utf8_encode ( $page [ 'body' ]));
for ( $j = 1 ; $j < 26 && isset ( $tabAnnonces [ $j ]); $j ++ )
$tabAnn [ $j - 1 ] = $tabAnnonces [ $j ];
randsleep ( $tempsMinEntreRequetes , $tempsMaxEntreRequetes );
$referer = $url ;
for ( $i = 2 ; $i <= $nbPages ; $i ++ )
{
if ( ! $lastJO ) {
$data = '' ;
$date1 = str_replace ( '/' , '%2F' , WDate :: dateT ( 'Ymd' , 'd/m/Y' , $dateCour ));
if ( $depotComptes )
$date2 = str_replace ( '/' , '%2F' , WDate :: dateT ( 'Ymd' , 'd/m/Y' , getNextDate ( $dateCour , 0 )));
else
$date2 = str_replace ( '/' , '%2F' , WDate :: dateT ( 'Ymd' , 'd/m/Y' , getNextDate ( $dateCour )));
$url = 'http://www.journal-officiel.gouv.fr/association/index.php?ctx=' . $ctx . '&page=' . $i . '&JRE_ID=' . urlencode ( $region ) . '&JPA_D_D=' . $date1 . '&JPA_D_F=' . $date2 ;
} else {
$date1 = '' ; $date2 = '' ; $data = '1' ;
$url = 'http://www.journal-officiel.gouv.fr/association/index.php?ctx=' . $ctx . '&page=' . $i ;
}
$page = getUrl ( $url , '' , '' , $referer , false , 'www.journal-officiel.gouv.fr' );
$tabAnnonces = explode ( '<div class="hr"><hr/></div>' , utf8_encode ( $page [ 'body' ]));
for ( $j = 1 ; $j < 26 ; $j ++ ) {
$k = $j + ( 25 * ( $i - 1 )) - 1 ;
if ( $k < $nbAnnonces )
$tabAnn [ $k ] = $tabAnnonces [ $j ];
}
flush ();
if ( $i == 2 )
echo date ( 'Y/m/d - H:i:s' ) . " - Page $i / $nbPages " ;
else
echo " , $i / $nbPages " ;
if ( $i == $nbPages )
echo '.' . EOL ;
else
randsleep ( $tempsMinEntreRequetes , $tempsMaxEntreRequetes );
}
$tabActivites = array ();
for ( $i = 0 ; $i < $nbAnnonces ; $i ++ ) {
$infoAnnBalo = getInfosAnnonceAsso ( $tabAnn [ $i ], $depotComptes );
$tabInfos = array ();
preg_match_all ( " |<i>(.*)</i>|U " , $infoAnnBalo [ 'Annonce_Html' ], $tabInfos );
$tabInfosGlobal = array_unique ( array_merge ( $tabInfosGlobal , $tabInfos [ 1 ]));
// On recherche si nous n'avons pas déjà cette annonce en base !
if ( $depotComptes ) {
$AnnDb = $iDb -> select ( 'asso_bilans' , 'count(*) AS nb' , " Siren= " . $infoAnnBalo [ 'Siren' ] . " AND Waldec=' " . $infoAnnBalo [ 'Waldec' ] . " ' AND dateCloture=' " . $infoAnnBalo [ 'dateCloture' ] . " ' " , false , MYSQL_ASSOC );
// $AnnDb[0][0]=0;
} else {
$AnnDb = $iDb -> select ( 'asso' , 'count(*) AS nb' , " Num_Annonce=' " . $infoAnnBalo [ 'Num_Annonce' ] . " ' AND Date_Parution=' " . $infoAnnBalo [ 'Date_Parution' ] . " ' AND Num_Parution=' " . $infoAnnBalo [ 'Num_Parution' ] . " ' " , false , MYSQL_ASSOC );
$dateAff = $infoAnnBalo [ 'Date_Parution' ];
}
$nbAnnDb = $AnnDb [ 0 ][ 'nb' ];
$i2 = $i + 1 ;
$strRegion = ', ' . $region ;
if ( $depotComptes ) {
$table = 'asso_bilans' ;
// Si le bilan PDF n'est pas déjà sur le disk, on va le chercher !
switch ( $region ) {
case 'ASSOCIATION%2FCOMPTE' : $infoAnnBalo [ 'typeAsso' ] = 'ASS' ; break ;
case 'FONDATION%2FCOMPTE' : $infoAnnBalo [ 'typeAsso' ] = 'FON' ; break ;
case 'FONDS+DE+DOTATION%2FCOMPTE' : $infoAnnBalo [ 'typeAsso' ] = 'FOD' ; break ;
case 'AUTRE%2FCOMPTE' :
default : $infoAnnBalo [ 'typeAsso' ] = 'DIV' ; break ;
}
$dateAff = $dateCour . ' (' . $infoAnnBalo [ 'dateCloture' ] . ')' ;
$infoAnnBalo [ 'Assoc_Date_Declaration' ] = $dateCour ;
$tabPdf = getPdfInfo ( $repPdfAssoCpt . '/' . basename ( $infoAnnBalo [ 'pdfLink' ]));
if ( ! $tabPdf ) {
$page = getUrl ( 'http://www.journal-officiel.gouv.fr/' . $infoAnnBalo [ 'pdfLink' ], '' , '' , '' , false );
2013-10-22 13:47:33 +00:00
$fp = fopen ( $repPdfAssoCpt . '/' . basename ( $infoAnnBalo [ 'pdfLink' ]), 'w' );
if ( $fp === false ) {
2013-06-19 09:45:13 +00:00
$message .= date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Problème de création du PDF ' . basename ( $infoAnnBalo [ 'pdfLink' ]) . " pour la parution du $dateAff $strRegion , Annonce $i2 / $nbAnnonces , Association \" " . $infoAnnBalo [ 'Assoc_Nom' ] . '" !' . EOL ;
echo date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Problème de création du PDF ' . basename ( $infoAnnBalo [ 'pdfLink' ]) . " pour la parution du $dateAff $strRegion , Annonce $i2 / $nbAnnonces , Association \" " . $infoAnnBalo [ 'Assoc_Nom' ] . '" !' . EOL ;
2013-10-22 13:47:33 +00:00
} else {
fwrite ( $fp , $page [ 'body' ]);
fclose ( $fp );
2013-06-19 09:45:13 +00:00
}
$tabPdf = getPdfInfo ( $repPdfAssoCpt . '/' . basename ( $infoAnnBalo [ 'pdfLink' ]));
randsleep ( $tempsMinEntreRequetes , $tempsMaxEntreRequetes );
}
$infoAnnBalo [ 'pdfSize' ] = $tabPdf [ 'pdfSize' ];
$infoAnnBalo [ 'pdfVer' ] = $tabPdf [ 'version' ];
$infoAnnBalo [ 'pdfPage' ] = $tabPdf [ 'nbPages' ];
} else {
$table = 'asso' ;
$tabTmp = explode ( '/' , $infoAnnBalo [ 'Activite' ]);
$tabActivites = array_merge ( $tabActivites , $tabTmp );
}
if ( $nbAnnDb == 1 ) {
echo date ( 'Y/m/d - H:i:s' ) . " - Parution du $dateAff $strRegion , Annonce $i2 / $nbAnnonces , Association \" " . $infoAnnBalo [ 'Assoc_Nom' ] . '" déjà en base !' . EOL ;
// L'annonce est déjà en base !
continue ;
} else {
$message .= date ( 'Y/m/d - H:i:s' ) . " - Parution du $dateAff $strRegion , Annonce $i2 / $nbAnnonces , Association \" " . $infoAnnBalo [ 'Assoc_Nom' ] . '"... enregistrement' . EOL ;
echo date ( 'Y/m/d - H:i:s' ) . " - Parution du $dateAff $strRegion , Annonce $i2 / $nbAnnonces , Association \" " . $infoAnnBalo [ 'Assoc_Nom' ] . '"... enregistrement' . EOL ;
}
if ( ! $iDb -> insert ( $table , $infoAnnBalo ))
echo date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : MySql n°' . mysql_errno () . ') : ' . mysql_error () . EOL ;
}
if ( $lastJO ) {
print_r ( $tabInfosGlobal );
echo date ( 'Y/m/d - H:i:s' ) . ' - FIN du script' . EOL ;
die ();
}
unset ( $tabAnn );
} // Fin boucle région
if ( $depotComptes )
$dateCour = getNextDate ( $dateCour , 1 );
else
$dateCour = getNextDate ( $dateCour );
} // Fin boucle Data
if ( $depotComptes ) {
//
$AnnDb = $iDb -> select ( 'annonces' , 'MAX(dateSource) AS dateMAJ' , " typeEven=3200 " , false , MYSQL_ASSOC );
$dateMaj = $AnnDb [ 0 ][ 'dateMAJ' ];
// echo date('Y/m/d - H:i:s') ." - Dernière mise à jour des annonces dépots en collecte en date du $dateMaj.".EOL;
$AnnDb = $iDb -> select ( 'asso_bilans' ,
" Assoc_Nom AS raisonSociale, siren, sirenValide, dateCloture AS dateEffetFinP, Assoc_Date_Declaration AS dateJugement, dateInsert AS dateSource,
'3200' AS typeEven , 'DJOFFJ' AS tribunal , 'JS' AS source , Waldec " ,
" dateInsert>' $dateMaj ' ORDER BY dateEffetFinP DESC " , false , MYSQL_ASSOC );
$nbAnnonces = count ( $AnnDb );
$message .= date ( 'Y/m/d - H:i:s' ) . " - Il y a $nbAnnonces annonces dépots à mettre en collecte en date du $dateMaj . " . EOL ;
echo date ( 'Y/m/d - H:i:s' ) . " - Il y a $nbAnnonces annonces dépots à mettre en collecte en date du $dateMaj . " . EOL ;
foreach ( $AnnDb as $i => $tabInsert ) {
$tabTmp = $iInsee -> getIdentiteLight ( $tabInsert [ 'siren' ]);
$tabInsert [ 'adresse' ] = $tabTmp [ 'Adresse' ];
$tabInsert [ 'codePostal' ] = $tabTmp [ 'CP' ];
$tabInsert [ 'ville' ] = $tabTmp [ 'Ville' ];
$tabInsert [ 'dateInsert' ] = date ( 'YmdHis' );
if ( trim ( $tabInsert [ 'Waldec' ]) <> '' )
$tabInsert [ 'complement' ] = 'Identifiant Waldec : ' . $tabInsert [ 'Waldec' ];
unset ( $tabInsert [ 'Waldec' ]);
//print_r($tabInsert);
//die();
if ( ! $iDb -> insert ( 'annonces' , $tabInsert ))
echo '' ; //date ('Y/m/d - H:i:s') .' - ERREUR : MySql n°'. mysql_errno() .') : '. mysql_error() . EOL;
}
2013-09-02 08:00:15 +00:00
sendMail ( 'supportdev@scores-decisions.com' , 'suivi@scores-decisions.com' , '[CHARGEMENT] JO Association Comptes' , $message );
2013-06-19 09:45:13 +00:00
}
echo date ( 'Y/m/d - H:i:s' ) . ' - FIN du script.' . EOL ;