2012-10-16 07:44:31 +00:00
#!/usr/bin/php -c/var/www/batch/config/php_batch_sd.ini
< ? php
include_once ( FWK_PATH . 'common/chiffres.php' );
include_once ( FWK_PATH . 'common/dates.php' );
include_once ( INCLUDE_PATH . 'bodacc/classMBodacc.php' );
include_once ( INCLUDE_PATH . 'insee/classMInsee.php' );
include_once ( INCLUDE_PATH . 'partenaires/classMBourse.php' );
include_once ( FWK_PATH . 'mail/sendMail.php' );
$repImgDrapeaux = '/home/data/logos/drapeaux/' ;
$tabJour = array ( 0 => 'Dim' , 1 => 'Lun' , 2 => 'Mar' , 3 => 'Mer' , 4 => 'Jeu' , 5 => 'Ven' , 6 => 'Sam' );
function getPrevDate ( $dateCour , $nbJours = 1 ) {
$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 ;
}
$tmin = 10 ;
$tmax = 60 ;
set_time_limit ( 0 );
$pays = $history = false ;
$dateDeb = getPrevDate ( date ( 'Ymd' ), rand ( 2 , 10 ));
$dateF = getPrevDate ( date ( 'Ymd' ));
$strInfoProg = 'Usage : ' . basename ( $argv [ 0 ]) . " [OPTION]
2013-06-19 08:24:49 +00:00
Recup<EFBFBD> re les cours des devises par rapport <EFBFBD> l ' euro .
2012-10-16 07:44:31 +00:00
2013-06-19 08:24:49 +00:00
Sans aucun param<EFBFBD> tre , r<EFBFBD> cup<EFBFBD> re le dernier cours pour chaque devise par rapport <EFBFBD> l ' euro .
2012-10-16 07:44:31 +00:00
Sinon :
2013-06-19 08:24:49 +00:00
- d : JJ / MM / AAAA Date de d<EFBFBD> but de p<EFBFBD> riode ( * )
- f : JJ / MM / AAAA Date de fin de p<EFBFBD> riode ( * )
- n : X Intervalle MIN en secondes entre les requ<EFBFBD> tes ( d<EFBFBD> faut = $tmin )
- i : X \ " MAX \" \" \" \" \" (d<> faut= $tmax )
- p R<EFBFBD> cup<EFBFBD> ration de la derni<EFBFBD> re liste des pays ( par d<EFBFBD> faut , une fois par mois , le 1 er du mois )
- h R<EFBFBD> cup<EFBFBD> ration de l ' historique complet
- c = DEV R<EFBFBD> cup<EFBFBD> ration limit<EFBFBD> <EFBFBD> la devise pass<EFBFBD> e en param<EFBFBD> tre
2012-10-16 07:44:31 +00:00
2013-06-19 08:24:49 +00:00
* : par d<EFBFBD> faut , le programme r<EFBFBD> cup<EFBFBD> re le dernier cour pour le jour pr<EFBFBD> c<EFBFBD> dent !
2012-10-16 07:44:31 +00:00
" ;
$tabCurrency = array ();
$argv = $_SERVER [ 'argv' ];
if ( $_SERVER [ 'argc' ] == 1 ) $dernierCour = true ;
else {
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' :
$tmin = trim ( substr ( $argv [ $i ], 3 )) * 1 ;
if ( $min < 0 ) $tmin = 0 ;
break ;
case 'i' :
$tmax = trim ( substr ( $argv [ $i ], 3 )) * 1 ;
if ( $tmax < 5 ) $tmax = 2 ;
break ;
case 'p' :
$pays = true ;
break ;
case 'h' :
$history = true ;
break ;
case '-' :
die ( $strInfoProg );
break ;
default :
die ( 'Option ' . $argv [ $i ] . " inconnue ! \n " );
break ;
}
} else {
$tabCurrency [] = $argv [ $i ];
}
}
}
$iDb = new WDb ( 'sdv1' );
$iDb2 = new WDb ();
2013-06-19 08:24:49 +00:00
/** Une fois par mois , r<EFBFBD> cup<EFBFBD> reation de la liste des pays et de leur devises
2012-10-16 07:44:31 +00:00
**/
if ( $pays || date ( 'd' ) * 1 == 1 ) {
2013-06-19 08:24:49 +00:00
echo ( date ( 'Y/m/d - H:i:s' ) . ' - D<> but de la mise <20> jour des pays et de leur devise !' . EOL );
2012-10-16 07:44:31 +00:00
$crea = $maj = 0 ;
$url = 'http://fxtop.com/fr/showpays.php3' ;
$referer = '' ;
$page = getUrl ( $url , '' , '' , $referer , false , 'fxtop.com' );
$body = $page [ 'body' ];
$referer = 'http://fxtop.com/fr/showpays.php3' ;
$strTmp =@ getTextInHtml ( $body , '<TABLE border=1 cellpadding=0 cellSpacing=0 >' , ' >' , '</TABLE>' );
$tabTmp = explode ( '<TR><TD>' , $strTmp );
foreach ( $tabTmp as $i => $strTmp ) {
$tabLigne = explode ( '</TD><TD>' , $strTmp );
if ( $i == 0 ) {
if ( trim ( $strTmp ) <> '' )
2013-06-19 08:24:49 +00:00
die ( date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : La premi<6D> re ligne du tableau n\'est pas vide : "' . $strTmp . '" trouv<75> !' . EOL );
2012-10-16 07:44:31 +00:00
continue ;
} elseif ( $i == 1 ) {
2013-06-19 08:24:49 +00:00
// On v<> rifie que les noms de colonnes et les devises attendues sont les bonnes
2012-10-16 07:44:31 +00:00
if ( trim ( strip_tags ( $tabLigne [ 0 ])) <> 'Pays' )
2013-06-19 08:24:49 +00:00
die ( date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Zone "Pays" attendue mais "' . strip_tags ( $tabLigne [ 0 ]) . '" trouv<75> !' . EOL );
2012-10-16 07:44:31 +00:00
if ( trim ( strip_tags ( $tabLigne [ 1 ])) <> 'Zone' )
2013-06-19 08:24:49 +00:00
die ( date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Zone "Zone" attendue mais "' . strip_tags ( $tabLigne [ 1 ]) . '" trouv<75> !' . EOL );
2012-10-16 07:44:31 +00:00
if ( trim ( strip_tags ( $tabLigne [ 2 ])) <> 'Devise' )
2013-06-19 08:24:49 +00:00
die ( date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Zone "Devise" attendue mais "' . strip_tags ( $tabLigne [ 2 ]) . '" trouv<75> !' . EOL );
2012-10-16 07:44:31 +00:00
if ( trim ( strip_tags ( $tabLigne [ 3 ])) <> 'Drapeau' )
2013-06-19 08:24:49 +00:00
die ( date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Zone "Drapeau" attendue mais "' . strip_tags ( $tabLigne [ 3 ]) . '" trouv<75> !' . EOL );
2012-10-16 07:44:31 +00:00
if ( trim ( strip_tags ( $tabLigne [ 4 ])) <> 'Code Nic' )
2013-06-19 08:24:49 +00:00
die ( date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Zone "Code Nic" attendue mais "' . strip_tags ( $tabLigne [ 4 ]) . '" trouv<75> !' . EOL );
2012-10-16 07:44:31 +00:00
} else {
$libPays = trim ( strip_tags ( $tabLigne [ 0 ]));
$libZone = trim ( strip_tags ( $tabLigne [ 1 ]));
$devise = trim ( strip_tags ( $tabLigne [ 2 ]));
$urlDrap = $tabLigne [ 3 ];
$strTmp = str_replace ( '<IMG SRC="../ico/' , 'http://fxtop.com/ico/' , $urlDrap );
$tabTmp2 = explode ( '"' , $strTmp );
$url = $tabTmp2 [ 0 ];
$codPays = trim ( strip_tags ( $tabLigne [ 4 ]));
$ficImgDrapeaux = basename ( $url );
if ( ! file_exists ( $repImgDrapeaux . $ficImgDrapeaux )) {
$page = getUrl ( $url , '' , '' , $referer , false , 'fxtop.com' );
$body = $page [ 'body' ];
$fp = fopen ( $repImgDrapeaux . $ficImgDrapeaux , 'wb' );
fwrite ( $fp , $page [ 'body' ]);
fclose ( $fp );
$taille = filesize ( $repImgDrapeaux . $ficImgDrapeaux );
2013-06-19 08:24:49 +00:00
echo ( date ( 'Y/m/d - H:i:s' ) . " - Drapeaux $codPays : $ficImgDrapeaux ( $libPays ) cr<63> <72> ( $taille octets). " . EOL );
2012-10-16 07:44:31 +00:00
}
$tabUpdate = array ( 'libPaysMajAuto' => $libPays ,
'zone' => $libZone ,
'drapeau' => $ficImgDrapeaux ,
'devise' => $devise ,
);
$tabInsert = array_merge ( $tabUpdate , array ( 'codPays' => $codPays , 'dateInsert' => date ( 'YmdHis' )));
if ( ! $iDb2 -> insert ( 'tabPays' , $tabInsert )) {
if ( ! $iDb2 -> update ( 'tabPays' , $tabUpdate , " codPays=' $codPays ' " , true )) {
if ( mysql_errno () <> 1062 )
2013-06-19 08:24:49 +00:00
die ( date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : MySql n<> ' . mysql_errno () . ' : ' . mysql_error () . EOL );
2012-10-16 07:44:31 +00:00
} else
$maj ++ ;
} else {
2013-06-19 08:24:49 +00:00
echo ( date ( 'Y/m/d - H:i:s' ) . " - Cr<43> ation du pays $libPays ( $codPays ) en $libZone ! " . EOL );
2012-10-16 07:44:31 +00:00
$crea ++ ;
}
}
}
2013-06-19 08:24:49 +00:00
echo ( date ( 'Y/m/d - H:i:s' ) . " - Fin de la mise <20> jour des pays et de leur devise : $crea cr<63> ation(s) / $maj MAJ. " . EOL );
2012-10-16 07:44:31 +00:00
}
2013-06-19 08:24:49 +00:00
/** R<EFBFBD> cup<EFBFBD> ration de la liste des devises
2012-10-16 07:44:31 +00:00
**/
2013-06-19 08:24:49 +00:00
echo ( date ( 'Y/m/d - H:i:s' ) . ' - D<> but de la mise <20> jour de la liste des devise !' . EOL );
2012-10-16 07:44:31 +00:00
$crea = $maj = 0 ;
$tabDevisesSite = array ();
$url = 'http://fxtop.com/fr/historates.php3' ;
$referer = '' ;
$page = getUrl ( $url , '' , '' , $referer , false , 'fxtop.com' );
$body = $page [ 'body' ];
$strTmp =@ getTextInHtml ( $body , '<select name=C1 >' , 'C1 >' , '</select>' );
$tabTmp = preg_split ( '/<option (selected | )value="/i' , $strTmp );
foreach ( $tabTmp as $i => $strTmp ) {
$tabLigne = explode ( '">' , $strTmp );
if ( $i == 0 ) {
if ( trim ( $strTmp ) <> '' )
2013-06-19 08:24:49 +00:00
die ( date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : La premi<6D> re ligne du tableau n\'est pas vide : "' . $strTmp . '" trouv<75> !' . EOL );
2012-10-16 07:44:31 +00:00
continue ;
} else {
$devise = trim ( $tabLigne [ 0 ]);
$libDevPays = trim ( strip_tags ( $tabLigne [ 1 ]));
if ( $devise <> '' && $devise <> 'EUR' ) $tabDevisesSite [] = $devise ;
$tabUpdate = array ( 'devIso' => $devise ,
'devNomPays' => $libDevPays ,
);
if ( ! $iDb -> update ( 'devise_liste' , $tabUpdate , " devIso=' $devise ' " , true )) {
if ( ! $iDb -> insert ( 'devise_liste' , $tabUpdate )) {
if ( mysql_errno () <> 1062 )
2013-06-19 08:24:49 +00:00
die ( date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : MySql n<> ' . mysql_errno () . ' : ' . mysql_error () . EOL );
2012-10-16 07:44:31 +00:00
} else {
2013-06-19 08:24:49 +00:00
echo ( date ( 'Y/m/d - H:i:s' ) . " - Cr<43> ation de la devise $devise pour $libDevPays ! " . EOL );
2012-10-16 07:44:31 +00:00
$crea ++ ;
}
} else $maj ++ ;
}
}
2013-06-19 08:24:49 +00:00
echo ( date ( 'Y/m/d - H:i:s' ) . " - Fin de la mise <20> jour des devises : $crea cr<63> ation(s) / $maj MAJ. " . EOL );
2012-10-16 07:44:31 +00:00
2013-06-19 08:24:49 +00:00
/** R<EFBFBD> cup<EFBFBD> ration d ' une devise ou de toutes les devises
2012-10-16 07:44:31 +00:00
**/
if ( ! is_array ( $tabCurrency ) || count ( $tabCurrency ) == 0 ) {
//$tabDevises=mysql_select('tabPays', 'DISTINCT(devise) as dev', "devise<>'EUR' AND devise<>''");
// AND devise NOT IN ('AED','AFA','XCD','ALL','AMD','ANG','AON')
$tabDevises = array ();
shuffle ( $tabDevisesSite );
foreach ( $tabDevisesSite as $i => $deviseSite )
$tabDevises [] = array ( 0 => $deviseSite );
unset ( $tabDevisesSite );
} else {
foreach ( $tabCurrency as $currency ) {
if ( in_array ( $currency , $tabDevisesSite ))
$tabDevises [] = array ( 0 => $currency );
else
2013-06-19 08:24:49 +00:00
die ( date ( 'Y/m/d - H:i:s' ) . " - ERREUR : Devise ' $currency ' non g<> r<EFBFBD> e par le site distant ! " . EOL );
2012-10-16 07:44:31 +00:00
}
}
2013-06-19 08:24:49 +00:00
/** R<EFBFBD> cup<EFBFBD> ration de l ' historique des cours ou du cours pr<EFBFBD> c<EFBFBD> dent
2012-10-16 07:44:31 +00:00
**/
if ( $history ) $dateDeb = '19900101' ;
$DD1 = WDate :: dateT ( 'Ymd' , 'd' , $dateDeb );
$MM1 = WDate :: dateT ( 'Ymd' , 'm' , $dateDeb );
$YYYY1 = WDate :: dateT ( 'Ymd' , 'Y' , $dateDeb );
$DD2 = WDate :: dateT ( 'Ymd' , 'd' , $dateF );
$MM2 = WDate :: dateT ( 'Ymd' , 'm' , $dateF );
$YYYY2 = WDate :: dateT ( 'Ymd' , 'Y' , $dateF );
foreach ( $tabDevises as $tabDevise ) {
$devise = $tabDevise [ 0 ];
if ( $dateDeb == $dateF )
2013-06-19 08:24:49 +00:00
echo ( date ( 'Y/m/d - H:i:s' ) . " - R<> cup<75> ration du cour du $devise par rapport <20> l'euro pour le $DD1 / $MM1 / $YYYY1 ... " . EOL );
2012-10-16 07:44:31 +00:00
else
2013-06-19 08:24:49 +00:00
echo ( date ( 'Y/m/d - H:i:s' ) . " - R<> cup<75> ration du cour du $devise par rapport <20> l'euro pour la p<> riode du $DD1 / $MM1 / $YYYY1 au $DD2 / $MM2 / $YYYY2 ... " . EOL );
2012-10-16 07:44:31 +00:00
$url = " http://fxtop.com/fr/historates.php3?C1= $devise &C2=EUR&DD1= $DD1 &MM1= $MM1 &YYYY1= $YYYY1 &DD2= $DD2 &MM2= $MM2 &YYYY2= $YYYY2 &btnOK=Chercher " ;
$referer = 'http://fxtop.com/fr/historates.php3' ;
randsleep ( $tmin , $tmax );
$page = getUrl ( $url , '' , '' , $referer , false , 'fxtop.com' );
$body = $page [ 'body' ];
$strTmp =@ getTextInHtml ( $body , '<BR><TABLE border=1><TR><TD><STRONG>Date</STRONG></TD><TD><STRONG>' , '<STRONG>' , '</TABLE>' );
$tabTmp = explode ( '</TD></TR><TR><TD>' , $strTmp );
$nbCours = 0 ;
foreach ( $tabTmp as $i => $strTmp ) {
$tabLigne = explode ( '</TD><TD>' , $strTmp );
if ( $i == 0 ) {
2013-06-19 08:24:49 +00:00
// On v<> rifie que les noms de colonnes et les devises attendues sont les bonnes
2012-10-16 07:44:31 +00:00
if ( strip_tags ( $tabLigne [ 0 ]) <> 'Date' )
2013-06-19 08:24:49 +00:00
die ( date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Zone "Date" attendue mais "' . strip_tags ( $tabLigne [ 0 ]) . '" trouv<75> !' . EOL );
2012-10-16 07:44:31 +00:00
if ( strip_tags ( $tabLigne [ 1 ]) <> $devise . '/EUR' )
2013-06-19 08:24:49 +00:00
die ( date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : Zone "' . $devise . '/EUR" attendue mais "' . strip_tags ( $tabLigne [ 1 ]) . '" trouv<75> !' . EOL );
2012-10-16 07:44:31 +00:00
} else {
$date = $tabLigne [ 0 ];
if ( $i == 1 ) $dateMax = $date ;
$conv = $tabLigne [ 1 ];
//echo "$devise;$date;$conv\n";
$nbCours ++ ;
$tabInsert = array ( 'devise' => $devise ,
'date' => $date ,
'valeur' => $conv ,
);
if ( ! $iDb -> insert ( 'devise_cours' , $tabInsert ))
if ( mysql_errno () <> 1062 )
2013-06-19 08:24:49 +00:00
die ( date ( 'Y/m/d - H:i:s' ) . ' - ERREUR : MySql n<> ' . mysql_errno () . ' : ' . mysql_error () . EOL );
2012-10-16 07:44:31 +00:00
}
}
$dateMin = $date ;
if ( $nbCours == 1 )
echo ( date ( 'Y/m/d - H:i:s' ) . " - Devise $devise : 1 valeur ( $conv ) du $dateMin au $dateMax ... " . EOL );
else
echo ( date ( 'Y/m/d - H:i:s' ) . " - Devise $devise : $nbCours valeurs du $dateMin au $dateMax ... " . EOL );
}
echo date ( 'Y/m/d - H:i:s' ) . ' - FIN du script.' . EOL ;
?>