#!/usr/bin/php valideSiren($siren)) { kbisLog($siren, $piece, "IN : Siren $siren Invalide !"); exit; } else { switch (strlen($siren)) { case 1: $siren='00000000'.$siren; break; case 2: $siren='0000000'.$siren; break; case 3: $siren='000000'.$siren; break; case 4: $siren='00000'.$siren; break; case 5: $siren='0000'.$siren; break; case 6: $siren='000'.$siren; break; case 7: $siren='00'.$siren; break; case 8: $siren='0'.$siren; break; } } if ($piece<>'kbis') { kbisLog($siren, $piece, "IN : Piece $piece inexistante !"); exit; } define('FORMAT', 'PDF'); //HTML ou PDF define('PKBIS_HOST', '192.168.3.4'); define('PKBIS_USER', 'kbis'); define('PKBIS_PASS', 'kbis'); define('PDFTOTEXT', '/usr/bin/pdftotext'); // Vérifier que l'executable existe define('WKHTMLTOPDF', '/usr/bin/wkhtmltopdf'); // Vérifier que l'executable existe.... /* Principe de fonctionnement - Vérifier en local que le fichier n'existe pas déjà et qu'il a moins d'un jour - Envoi dun fichier portant le nom de $pieces-$siren.txt sur le ftp pour le début de la récupération du kbis - Vérifier sur le FTP que le fichier est disponible Comparaison avec un ftp_nlist sur dossier /pdf ou /html - Vérifier la date du fichier HTML (qui est le fichier source) afin d'écrire dans les logs - Vérifier que le fichier PDF ou HTML correspond bien au SIREN demandé Pour le fichier PDF, transformation avec pdftotext, et on parcours le fichier texte à la recherche du SIREN Pour le fichier HTML, on parcours le fichier à la recherche du siren et on le tranforme en PDF grâce à wkhtmltopdf */ $kbisLocalPDF = DOC_WEB_LOCAL."kbis/$piece-$siren.pdf"; $kbisLocalHTML = DOC_WEB_LOCAL."kbis/$piece-$siren.html"; $kbisLocalTXT = DOC_WEB_LOCAL."kbis/$piece-$siren.txt"; if (file_exists($kbisLocalPDF) && date('Ymd',filectime($kbisLocalPDF))==date('Ymd')){ exit; } else { if (file_exists($kbisLocalHTML)) unlink($kbisLocalHTML); if (file_exists($kbisLocalPDF)) unlink($kbisLocalPDF); if (file_exists($kbisLocalTXT)) unlink($kbisLocalTXT); } // Ouverture de la connexion FTP $conn_id = ftp_connect(PKBIS_HOST); $login_result = ftp_login($conn_id, PKBIS_USER, PKBIS_PASS); $tabListInit = ftp_nlist($conn_id, strtolower(FORMAT).'/'); $nbList = count($tabListInit); $nbEssais = 0; // Nombre de tentatives de récupération // Fichier à déposer sur le FTP pour débuter la commande $fp = fopen(DOC_WEB_LOCAL."kbis/$piece-$siren", 'w+'); fwrite($fp, "$siren;$piece;$type;$visu;$courrier;$ref"); rewind($fp); if (!ftp_fput($conn_id, "in/$piece-$siren.txt", $fp, FTP_ASCII)){ //Envoi mail pour erreur exit; } fclose($fp); kbisLog($siren, $piece, "IN : Fichier déposé en commande sur le FTP"); // Surveillance du FTP pour récupération du fichier while (true) { $nbEssais++; sleep($dureeInterval); $tabList = ftp_nlist($conn_id, strtolower(FORMAT).'/'); if (count($tabList)>$nbList) { kbisLog($siren, $piece, "WAIT : Essai $nbEssais, des nouveaux fichiers sont disponibles sur le FTP !"); sleep($dureeInterval); // Laisse le temps au serveur de K-Bis de finir le fichier PDF !!! $tabNom = array_diff($tabList,$tabListInit); //Récupération du fichier ftp_chdir($conn_id, strtolower(FORMAT)); $ficDist = str_replace(strtolower(FORMAT).'/', '', reset($tabNom)); if (!ftp_get($conn_id,DOC_WEB_LOCAL."kbis/$piece-$siren.".strtolower(FORMAT), $ficDist, FTP_BINARY)) { // Problème FTP --> STOP kbisLog($siren, $piece, "OUT : Problème FTP"); exit; } //Traitement en fonction du format if (FORMAT == 'PDF') { shell_exec(PDFTOTEXT.' '.$kbisLocalPDF.' '.$kbisLocalTXT); $str = file_get_contents($kbisLocalTXT); $sirenLu = checkSiren($siren, $str); if ($sirenLu){ kbisLog($siren, $piece, "OUT : Le nouveau fichier est celui attendu ($sirenLu=$siren)"); } else { kbisLog($siren, $piece, "OUT : Le nouveau fichier n'est pas celui attendu ($sirenLu<>$siren)"); unlink($kbisLocalPDF); } break; } elseif (FORMAT == 'HTML') { $str = file_get_contents($kbisLocalHTML); $str = preg_replace('@