"ERREUR LORS DE L'ACCES A LA BASE DES PIECES OFFICIELLES. MERCI DE REESSAYER !",
1=>"REQUETE INTERDITE",
2=>"CODE EMETTEUR INVALIDE",
3=>"CODE ABONNE OU MOT DE PASSE INVALIDE",
4=>"MOT DE PASSE INVALIDE",
5=>"ABONNE INTERDIT",
6=>"DOSSIER NON TROUVE DANS LA BASE DES PIECES OFFICIELLES",
7=>"Type d'inscription invalide",
8=>"Kbis indisponible pour le siren",
9=>"Etat d'endettement indisponible pour le siren",
10=>"Impossible de faire aboutir la demande",
11=>"IMPOSSIBLITE DE GENERER LE FLUX XML DU KBIS",
12=>"IMPOSSIBLITE DE GENERER LE FLUX XML DE L ETAT ENDETTEMENT",
13=>"L ETAT ENDETTEMENT NE POSSEDE AUCUN DEBITEUR",
14=>"IMPOSSIBILITE DE GENERER LA COMMANDE",
15=>"DEMANDE ETAT COMPLET IMPOSSIBLE",
16=>"LA PRISE EN CHARGE DU MAIL EST EFFECTIVE",
17=>"LA PRISE EN CHARGE DE VOTRE COMMANDE EST EFFECTIVE", // LA PRISE EN CHARGE DE VOTRE COURRIER EST EFFECTIVE
18=>"DERNIER STATUT A JOUR INDISPONIBLE",
19=>"BILAN COMPLET INDISPONIBLE",
20=>"PAS DE COMPTES ANNUELS POUR LES CRITERES DONNES : SOIT LE MILLESIME DEMANDE N'A PAS ETE DEPOSE, SOIT L'ENTREPRISE N'EST PAS TENUE DE DEPOSER SES COMPTES",
21=>"PAS DE DERNIER STATUT A JOUR",
22=>"LES MODES DE DIFFUSIONS DEMANDES SONT FERMES",
23=>"SOCIETE NON TENUE DE DEPOSER SES COMPTES",
24=>"SIREN INVALIDE",
25=>"SIREN NON TROUVE DANS LA BASE DES PIECES OFFICIELLES",
26=>"COMPTE NON DEPOSES",
27=>"COMPTES DEPOSES MAIS BILAN SAISI INDISPONIBLE : COMMANDE BILAN COMPLET POSSIBLE",
28=>"REQUETE SUR LES SURVEILLANCES REALISEES",
29=>"ACCUSES DE RECEPTIONS DISPONIBLES",
30=>"REVELATIONS DISPONIBLES",
31=>"PORTEFEUILLE DISPONIBLE",
32=>"AUCUN ACCUSE DE RECEPTION DISPONIBLE",
33=>"AUCUNE REVELATIONS DISPONIBLES",
34=>"AUCUN PORTEFEUILLE DISPONIBLE",
35=>"TRANCHE HORAIRE DEPASSEE",
36=>"BILAN INDISPONIBLE-PERIODE DE CONSERVATION DEPASSEE",
37=>"BILAN SAISI INDISPONIBLE",
38=>"STATUTS A JOUR INDISPONIBLES POUR ENVOI EMAIL",
39=>"BILAN COMPLET INDISPONIBLE POUR TELECHARGEMENT",
40=>"STATUTS A JOUR INDISPONIBLES POUR ENVOI EMAIL",
41=>"STATUTS A JOUR INDISPONIBLES POUR TELECHARGEMENT",
42=>"ACTE INDISPONIBLE",
43=>"ACTES INDISPONIBLES POUR ENVOI EMAIL",
44=>"ACTES INDISPONIBLES POUR TELECHARGEMENT",
45=>"AUCUN ACTE TROUVE POUR CE SIREN",
46=>"AUCUN ACTE TROUVE AVEC CES CRITERES",
47=>"SERVICE COURRIER INDISPONIBLE",
48=>"SERVICE MAIL INDISPONIBLE",
49=>"SERVICE TELECHARGEMENT INDISPONIBLE",
50=>"UNE PARTIE DE LA COMMANDE INDISPONIBLE EN TELECHARGEMENT ET MAIL",
51=>"ADRESSE EMAIL OBLIGATOIRE POUR COMMANDE MAIL",
52=>"ADRESSE POSTALE OBLIGATOIRE POUR COMMANDE COURRIER",
53=>"LA COMMANDE EN COURRIER SEUL DE L'ETAT EN MATIERE DE PROCEDURE COLLECTIVE N'EST PAS PERMISE",
54=>"IMPOSSIBILITE DE GENERER LE FLUX XML DU CERTIFICAT",
55=>"SOCIETE NE FAISANT PAS L'OBJET D'UNE PROCEDURE COLLECTIVE",
56=>"IDENTIFICATION DU DOCUMENT INVALIDE POUR LA PROCEDURE EN COURS SUR CETTE ENTREPRISE",
57=>"DOCUMENT INDISPONIBLE POUR LE NUMERO DE GESTION",
58=>"AUCUN DOCUMENT TROUVE POUR LE NUMERO DE GESTION",
59=>"DOCUMENT INDISPONIBLE POUR TELECHARGEMENT",
60=>"IDENTIFICATION INCOMPLETE DU DOCUMENT",
61=>"AUCUNE INSCRITPTION MODIFICATIVE TROUVEE",
62=>"HISTORIQUE DES MODIFICATIONS AU RCS INDISPONIBLE",
63=>"IMPOSSIBLITE DE GENERER LE FLUX XML D'HISTORIQUE DE MODIFICATIONS AU RCS",
64=>"HISTORIQUE DE MODIFICATIONS AU RCS INDISPONIBLE",
65=>"LES MODES DE DIFFUSION SPECIFIES SONT INVALIDES",
66=>"LE DEPARTMENT SAISI EST INVALIDE",
67=>"LA RECHERCHE EST LIMITE A UN VOLUME DE 100 ENTREPRISES",
68=>"LE NUMERO DE GESTION N'EST PAS SUFFISANT POUR CETTE REQUETE",
69=>"LE NUMERO DE GESTION EST INVALIDE",
70=>"LA SELECTION DES ETABLISSSMENTS RADIES OU SECONDAIRES DOIT UTILISER UNE VALEUR DE TYPE BOOLEAN true OU false",
81=>"DOCUMENT INDISPONIBLE POUR LES NON INSCRITS AU RCS",
999=>"SERVICE INDISPONIBLE",
);
protected $typActes = array(
'a00'=>'MODIFICATION',
'a01'=>'MODIFICATION',
'a02'=>'DISSOLUTION',
'a03'=>'CONSTITUTION',
'a04'=>'STATUTS CONSTITUTIFS',
'a06'=>'STATUTS A JOUR',
'a07'=>'STATUTS A JOUR',
'a08'=>'STATUTS A JOUR ET DECLARATION DE CONFORMITE',
'a09'=>'STATUTS APRES TRANSFERT DE SIEGE',
'a1D'=>'AUGMENTATION ET REDUCTION CAPITAL',
'a25'=>'AUGMENTATION DE CAPITAL',
'a26'=>'REDUCTION DE CAPITAL',
'a31'=>'TRANSFERT SIEGE SOCIAL HORS RESSORT O',
'a33'=>'CHANGEMENT DE GERANT',
'a39'=>'CHANGEMENT DE COMMISSAIRE AUX COMPTES',
'a77'=>'CONTINUATION MALGRE LA PERTE DE LA MOITIE DU CAPITAL',
'aA1'=>'STATUTS',
'aAA'=>'ACTE',
'aAB'=>'ACTE MODIFICATIF',
'aAC'=>'ACTE RECTIFICATIF',
'aAD'=>'ACTE SOUS SEING PRIVE',
'aAE'=>'AMPLIATION',
'aAG'=>'AVENANT',
'aAH'=>'AVENANT AUX STATUTS',
'aAI'=>'ATTESTATION',
'aAJ'=>'ANNEXES',
'aAK'=>'ATTESTATION BANCAIRE',
'aAP'=>'PROJET APPORT PARTIEL D"ACTIF',
'aAT'=>'DELIVRANCE DE L"INFORMATION FAITE AU CONJOINT SUR LES CONSEQUENCES DES DETTES',
'aCA'=>'CERTIFICAT',
'aCB'=>'COMPTES DE CLOTURE DE LIQUIDATION',
'aCD'=>'CONTRAT',
'aCE'=>'CONVENTION',
'aCF'=>'CERTIFICAT DE SOUSCRIPTION D"ACTIONS',
'aDA'=>'DECISION DE GERANCE',
'aDB'=>'DECISION DE L"ASSOCIE UNIQUE',
'aDC'=>'DECISION DES ASSOCIES',
'aDE'=>'DECLARATION DE CONFORMITE',
'aDF'=>'DECLARATION DE SOUSCRIPTION ET DE VERSEMENT',
'aDH'=>'DECLARATION DE CONFORMITE (ART.374 L24/07/1966)',
'aDI'=>'DECISION DE L"ACTIONNAIRE UNIQUE',
'aDP'=>'DECISION DU PRESIDENT',
'aEA'=>'EXPEDITION',
'aEB'=>'EXPEDITION NOTARIEE',
'aEC'=>'EXTRAIT DU PROCES-VERBAL',
'aFU'=>'PROJET DE FUSION',
'aIF'=>'PROJET APPORT PARTIEL D"ACTIF',
'aJA'=>'JUGEMENT',
'aLA'=>'LETTRE',
'aLB'=>'LISTE DES SIEGES SOCIAUX ANTERIEURS',
'aLC'=>'LETTRE DE DEMISSION',
'aLD'=>'LETTRE DE NOMINATION',
'aLF'=>'LISTE DES SOUSCRIPTEURS',
'aLS'=>'CERTIFICAT DE DEPOT DES FONDS AVEC LISTE DES SOUSCRIPTEURS',
'aNA'=>'NOMINATION DE REPRESENTANT',
'aO9'=>'NOMINATION DE GERANT(S)',
'aOA'=>'ORDONNANCE',
'aOB'=>'ORDONNANCE DE REFERE',
'aOC'=>'ORDONNANCE DU PRESIDENT',
'aOD'=>'ORDONNANCE SUR REQUETE',
'aOE'=>'ORDONNANCE',
'aPA'=>'PROCES VERBAL',
'aPC'=>'PROCES VERBAL D"ASSEMBLEE CONSTITUTIVE',
'aPD'=>'PROCES VERBAL D"ASSEMBLEE DU DIRECTOIRE',
'aPE'=>'PROCES VERBAL D"ASSEMBLEE GENERALE',
'aPF'=>'PROCES VERBAL D"ASSEMBLEE GENERALE EXTRAORDINAIRE',
'aPG'=>'PROCES VERBAL D"ASSEMBLEE GENERALE ORDINAIRE',
'aPH'=>'PROCES VERBAL D"ASSEMBLEE MIXTE',
'aPI'=>'PROCES VERBAL D"ASSEMBLEES ORDINAIRE ET EXTRAORDINAIRE',
'aPL'=>'PROCES VERBAL DIRIGEANT SOCIAL',
'aPM'=>'PROCES VERBAL DU CONSEIL D"ADMINISTRATION',
'aPN'=>'PROCES VERBAL DU CONSEIL DE SURVEILLANCE',
'aPO'=>'PROCES VERBAL DE LA GERANCE',
'aPT'=>'PROJET DE TRAITE D"APPORT',
'aPU'=>'PROJET DE FUSION',
'aPV'=>'PV D"ASSEMBLEE',
'aQ2'=>'CONSTITUTION DE LA SOCIETE',
'aR1'=>'CESSION DE PARTS (OU DONATION)',
'aR4'=>'TRAITE DE FUSION',
'aRA'=>'RAPPORT',
'aRB'=>'RAPPORT COMMISSAIRE AUX COMPTES',
'aRC'=>'RAPPORT COMMISSAIRE FUSION',
'aRE'=>'RAPPORT CR/CPTES TRANSFORM. STE',
'aRG'=>'RAPPORT DU COMMISSAIRE A LA FUSION',
'aRH'=>'RAPPORT DU COMMISSAIRE A LA SCISSION',
'aRI'=>'RAPPORT DU COMMISSAIRE A LA TRANSFORMATION',
'aRK'=>'RAPPORT DU COMMISSAIRE AUX APPORTS',
'aRL'=>'RAPPORT DU COMMISSAIRE AUX APPORTS ET A LA FUSION',
'aRQ'=>'RAPPORT GERANCE',
'aRS'=>'RAPPORT SPECIAL DU CONSEIL D"ADMINISTRATION',
'aRU'=>'PROJET',
'aTA'=>'TRAITE',
'aTB'=>'TRAITE D"APPORT-FUSION',
'aTC'=>'TRAITE DE FUSION',
'aUA'=>'ATTESTATION DU CONJOINT COMMUN EN BIENS',
);
protected $url;
protected $uri;
protected $user;
protected $pass;
protected $filetime = 8;
protected $pathCacheXML = '';
protected $pathData = '';
protected $login = '';
public function __construct()
{
//@todo rentre jamais dans cette condition ($mode) non defini.
$mode = false;
$config = parse_ini_file(realpath(dirname(__FILE__)).'/config.ini', true);
if ($mode == 'debug'){
$this->url = $config['DEBUG']['WS_URL'];
$this->uri = $config['DEBUG']['WS_URI'];
$this->user = $config['DEBUG']['WS_USER'];
$this->pass = $config['DEBUG']['WS_PASS'];
$this->pathCacheXML = $config['DEBUG']['PATH'];
$this->filetime = $config['DEBUG']['FILETIME'];
} else {
$this->url = $config['PROD']['WS_URL'];
$this->uri = $config['PROD']['WS_URI'];
$this->user = $config['PROD']['WS_USER'];
$this->pass = $config['PROD']['WS_PASS'];
$this->pathCacheXML = $config['PROD']['PATH'];
$this->filetime = $config['PROD']['FILETIME'];
}
if (!is_dir($this->pathCacheXML)){
mkdir($this->pathCacheXML);
}
$configuration = Zend_Registry::get('configuration');
$this->pathData = realpath($configuration->path->data);
require_once 'common/curl.php';
require_once 'Scores/Utilisateur.php';
$user = new Utilisateur();
$this->login = $user->getLogin();
}
/**
* Retourne le libellé des erreurs infogreffe
*/
public function getErrInfoGref($code = '')
{
if (empty($code))
return $this->tabErrInfoGref;
return $this->tabErrInfoGref[$code];
}
/**
* Retourne le libellé d'un acte
*/
public function getTypActes($code = '')
{
if (empty($code))
return $this->typActes;
return $this->typActes[$code];
}
/**
* Génére une chaîne xml pour la requête soap défini suivant les paramètres d'infogreffe
* @param string $siren
* @param int $idCommande
* @param string $type
* @param string $vecteur
* @param string or array $option
* @return string
*/
public function requeteXML($siren, $idCommande, $type, $vecteur, $option)
{
$xmlStr = '';
$xml = new SimpleXMLElement('');
$emetteur = $xml->addChild('emetteur');
$emetteur->addChild('code_abonne', $this->user);
$emetteur->addChild('mot_passe', $this->pass);
$emetteur->addChild('reference_client', 'G'.$idCommande); //Générer l'identifiant de commande
$code_requete = $emetteur->addChild('code_requete');
$code_requete->addChild('type_profil', 'A');
$code_requete->addChild('origine_emetteur', 'IC');
$code_requete->addChild('nature_requete', 'C'); // C = Commande de documents
$code_requete->addChild('type_document', $type); // KB = Kbis, PN = privilèges et nantissements, BI = Bilan complet, BS = bilan saisi, ST = Dernier Statut à jour, AC = Acte, SD = Surveillance Demande et Accusé, SR = Surveillance Révélation, SP = Surveillance Portefeuille, FA = Recherche PCL, FI = Inventaire, FJ = Jugement, FO = Ordonnance, FD = Dépôt divers, LE = Liste Etablissements
$code_requete->addChild('type_requete', 'S'); // S = Simple
$mode_diffusion = $code_requete->addChild('mode_diffusion');
// Mode de diffusion : C = Courrier, T = Téléchargement, M = Mail, XL = XML
if ($vecteur=='XL' && $option=='')
{
//On ajoute tout les types de diffusions pour $vecteur = XL
$mode_diffusion->addChild('mode')->addAttribute('type', 'C');
$mode_diffusion->addChild('mode')->addAttribute('type', 'T');
}
$mode_diffusion->addChild('mode')->addAttribute('type', $vecteur);
$code_requete->addChild('media', 'WS');
$commande = $xml->addChild('commande');
$commande->addChild('num_siren', $siren);
// Commande de documents : bilan saisie ou bilan complet
if ( ($type=='BS' || $type=='BI') && $option!='' )
{
//Format de la variable option pour la commande de type BI ou BS
/*
0 => millesime
1 => date_cloture
2 => greffe
3 => dossier_millesime
4 => dossier_statut
5 => dossier_chrono
6 => num_depot
*/
$ref = explode('-', $option);
$commande->addChild('greffe',$ref[2]);
$commande->addChild('dossier_millesime',$ref[3]);
$commande->addChild('dossier_statut',$ref[4]);
$commande->addChild('dossier_chrono',$ref[5]);
$commande->addChild('num_depot',$ref[6]);
$commande->addChild('date_cloture', WDate::dateT('Ymd','d/m/Y', $ref[1]));
$fichierOption = $option;
$this->logFile(array($siren, $idCommande, $type, $vecteur, $option));
}
// Commande de documents : actes
elseif ( $type=='AC' && !empty($option) )
{
//Format de la variable option pour commande type AC
/*
0 => type_acte
1 => date de référence
2 => greffe
3 => dossier_millesime
4 => dossier_statut
5 => dossier_chrono
6 => num_depot
7 => num_acte
*/
$ref = explode('-', $option);
$num_actes = explode('|', $ref[7]);
$commande->addChild('greffe',$ref[2]);
$commande->addChild('dossier_millesime', $ref[3]);
$commande->addChild('dossier_statut', $ref[4]);
$commande->addChild('dossier_chrono', $ref[5]);
$commande->addChild('num_depot', $ref[6]);
$liste_actes = $commande->addChild('liste_actes');
if(is_array($num_actes) && count($num_actes)>1)
{
foreach($num_actes as $num_acte)
{
$liste_actes->addChild('acte')->addAttribute('num', $num_acte);
}
$fichierOption = $ref[0].'-'.$ref[1].'-'.$ref[2].'-'.$ref[3].'-'.$ref[4].'-'.$ref[5].'-'.$ref[6];
}
else
{
$liste_actes->addChild('acte')->addAttribute('num', $ref[7]);
$fichierOption = $option;
}
$this->logFile(array($siren, $idCommande, $type, $vecteur, $option));
}
$xmlStr = str_replace('', '', $xml->asXML());
empty($option) ?
$fichier = $type.'-'.$siren.'.xml' :
$fichier = $type.'-'.$siren.'-'.$fichierOption.'.xml';
file_put_contents($this->pathCacheXML.'/'.$fichier.'.query', $xmlStr);
//Retourne le xml sous forme de chaîne de caractères
return $xmlStr;
}
/**
* Requête le webservice infogreffe
* @param unknown_type $xml
* @return unknown_type
*/
function getProduitsXML($xml)
{
$req = utf8_encode($xml);
$post = ''.$req.'';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_COOKIEFILE,TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$reponseXML = curl_exec($ch);
$reponseXML = str_replace("", '', $reponseXML);
$reponseXML = str_replace('','', $reponseXML);
return $reponseXML;
}
/**
* Format la chaine xml de liste des actes
* @param string $xml
* @return array
*/
function parsexmlActes($xml)
{
$doc = new DOMDocument();
$doc->loadXML($xml);
$liste_depot_acte = $doc->getElementsByTagName('liste_depot_acte')->item(0);
$depot_actes = $liste_depot_acte->getElementsByTagName('depot_acte');
$actes = array();
foreach($depot_actes as $depot_acte)
{
$acte = array();
$acte['num_gest'] = array();
$num_gest = $depot_acte->getElementsByTagName('num_gest')->item(0);
$acte['num_gest']['greffe'] = $num_gest->getElementsByTagName('greffe')->item(0)->nodeValue;
$acte['num_gest']['dossier_millesime'] = $num_gest->getElementsByTagName('dossier_millesime')->item(0)->nodeValue;
$acte['num_gest']['dossier_statut'] = $num_gest->getElementsByTagName('dossier_statut')->item(0)->nodeValue;
$acte['num_gest']['dossier_chrono'] = $num_gest->getElementsByTagName('dossier_chrono')->item(0)->nodeValue;
$acte['num_siren'] = $depot_acte->getElementsByTagName('num_siren')->item(0)->nodeValue;
$acte['num_depot'] = $depot_acte->getElementsByTagName('num_depot')->item(0)->nodeValue;
$acte['date_depot'] = $depot_acte->getElementsByTagName('date_depot')->item(0)->nodeValue;
$infoActes = $depot_acte->getElementsByTagName('acte');
$acte['depot'] = array();
foreach($infoActes as $infoActe)
{
$actenum = array();
$actenum['date_acte'] = $infoActe->getElementsByTagName('date_acte')->item(0)->nodeValue;
$actenum['num_acte'] = $infoActe->getElementsByTagName('num_acte')->item(0)->nodeValue;
$actenum['type_acte'] = $infoActe->getElementsByTagName('type_acte')->item(0)->nodeValue;
$actenum['type_acte_libelle'] = $infoActe->getElementsByTagName('type_acte_libelle')->item(0)->nodeValue;
$actenum['nbpages_acte'] = $infoActe->getElementsByTagName('nbpages_acte')->item(0)->nodeValue;
$decision = $infoActe->getElementsByTagName('decision')->item(0);
if($decision)
{
$actenum['decision'] = array();
$actenum['decision']['nature'] = $decision->getElementsByTagName('nature')->item(0)->nodeValue;
$actenum['decision']['libelle'] = $decision->getElementsByTagName('libelle')->item(0)->nodeValue;
}
$actenum['mode_diffusion'] = array();
$mode_diffusion = $infoActe->getElementsByTagName('mode_diffusion')->item(0)->getElementsByTagName('mode');
foreach($mode_diffusion as $mode)
{
$actenum['mode_diffusion'][] = $mode->getAttribute('type');
}
$acte['depot'][] = $actenum;
}//Fin listes des infos acte
//Génération de l'index pour le tri
if(!empty($acte['date_depot'])){ $date = $acte['date_depot']; }
else { $date = ''; }
if(!empty($date))
{
$datef = substr($date,0,4).substr($date,5,2).substr($date,8,2);
$key = $datef.'-'.$acte['num_depot'];
//Affectation liste générale avec un index permettant le tri
$actes[$key] = $acte;
}
//Prise en compte de l'acte -1
if($acte['num_depot']==-1)
{
$actes[0] = $acte;
}
}
//Tri suivant la date d'acte ou de depot
krsort($actes);
return $actes;
}
/**
* Formate la chaine xml de commande d'un acte en mode téléchargement
* @param string $xml
* @return array
*/
function parsexmlActesT($xml)
{
$doc = new DOMDocument();
$doc->loadXML($xml);
$depot_acte = $doc->getElementsByTagName('depot_acte')->item(0);
$info = array();
$info['num_gest'] = array();
$num_gest = $depot_acte->getElementsByTagName('num_gest')->item(0);
$info['num_gest']['greffe'] = $num_gest->getElementsByTagName('greffe')->item(0)->nodeValue;
$info['num_gest']['dossier_millesime'] = $num_gest->getElementsByTagName('dossier_millesime')->item(0)->nodeValue;
$info['num_gest']['dossier_statut'] = $num_gest->getElementsByTagName('dossier_statut')->item(0)->nodeValue;
$info['num_gest']['dossier_chrono'] = $num_gest->getElementsByTagName('dossier_chrono')->item(0)->nodeValue;
$info['num_siren'] = $depot_acte->getElementsByTagName('num_siren')->item(0)->nodeValue;
$info['num_depot'] = $depot_acte->getElementsByTagName('num_depot')->item(0)->nodeValue;
$info['date_depot'] = $depot_acte->getElementsByTagName('date_depot')->item(0)->nodeValue;
$infoActes = $depot_acte->getElementsByTagName('acte');
$info['actes'] = array();
foreach($infoActes as $infoActe)
{
$actenum = array();
$actenum['date_acte'] = $infoActe->getElementsByTagName('date_acte')->item(0)->nodeValue;
$actenum['num_acte'] = $infoActe->getElementsByTagName('num_acte')->item(0)->nodeValue;
$actenum['type_acte'] = $infoActe->getElementsByTagName('type_acte')->item(0)->nodeValue;
$actenum['type_acte_libelle'] = $infoActe->getElementsByTagName('type_acte_libelle')->item(0)->nodeValue;
$actenum['nbpages_acte'] = $infoActe->getElementsByTagName('nbpages_acte')->item(0)->nodeValue;
$decision = $infoActe->getElementsByTagName('decision')->item(0);
if($decision)
{
$actenum['decision'] = array();
$actenum['decision']['nature'] = $decision->getElementsByTagName('nature')->item(0)->nodeValue;
$actenum['decision']['libelle'] = $decision->getElementsByTagName('libelle')->item(0)->nodeValue;
}
$actenum['url_acces'] = htmlspecialchars_decode($infoActe->getElementsByTagName('url_acces')->item(0)->nodeValue);
$info['actes'][] = $actenum;
}
return $info;
}
/**
* Formatte la chaine xml de liste des bilans
* @param unknown_type $xml
* @return unknown_type
*/
function parsexmlBilans($xml)
{
$doc = new DOMDocument();
$doc->loadXML($xml);
$liste_bilan_complet = $doc->getElementsByTagName('liste_bilan_complet')->item(0);
$bilan_complet = $liste_bilan_complet->getElementsByTagName('bilan_complet');
$bilans = array();
foreach($bilan_complet as $element)
{
$bilan = array();
$bilan['num_gest'] = array();
$num_gest = $element->getElementsByTagName('num_gest')->item(0);
$bilan['num_gest']['greffe'] = $num_gest->getElementsByTagName('greffe')->item(0)->nodeValue;
$bilan['num_gest']['dossier_millesime'] = $num_gest->getElementsByTagName('dossier_millesime')->item(0)->nodeValue;
$bilan['num_gest']['dossier_statut'] = $num_gest->getElementsByTagName('dossier_statut')->item(0)->nodeValue;
$bilan['num_gest']['dossier_chrono'] = $num_gest->getElementsByTagName('dossier_chrono')->item(0)->nodeValue;
$bilan['num_siren'] = $element->getElementsByTagName('num_siren')->item(0)->nodeValue;
$bilan['date_cloture'] = $element->getElementsByTagName('date_cloture')->item(0)->nodeValue;
$bilan['date_cloture_iso'] = $element->getElementsByTagName('date_cloture_iso')->item(0)->nodeValue;
$bilan['millesime'] = $element->getElementsByTagName('millesime')->item(0)->nodeValue;
$bilan['num_depot'] = $element->getElementsByTagName('num_depot')->item(0)->nodeValue;
$bilan['type_comptes'] = $element->getElementsByTagName('type_comptes')->item(0)->nodeValue;
$mode_diffusion = $element->getElementsByTagName('mode_diffusion')->item(0)->getElementsByTagName('mode');
foreach($mode_diffusion as $mode)
{
$bilan['mode_diffusion'][] = $mode->getAttribute('type');
}
//Génération de l'index pour le tri
$date = $bilan['date_cloture_iso'];
if(!empty($date))
{
$datef = substr($date,0,4).substr($date,5,2).substr($date,8,2);
//Affectation liste générale avec un index permettant le tri
$bilans[$datef] = $bilan;
}
}
krsort($bilans);
return $bilans;
}
function parsexmlBilansT($xml)
{
$doc = new DOMDocument();
$doc->loadXML($xml);
$bilan_complet = $doc->getElementsByTagName('bilan_complet')->item(0);
$bilan = array();
$bilan['num_gest'] = array();
$num_gest = $bilan_complet->getElementsByTagName('num_gest')->item(0);
$bilan['num_gest']['greffe'] = $num_gest->getElementsByTagName('greffe')->item(0)->nodeValue;
$bilan['num_gest']['dossier_millesime'] = $num_gest->getElementsByTagName('dossier_millesime')->item(0)->nodeValue;
$bilan['num_gest']['dossier_statut'] = $num_gest->getElementsByTagName('dossier_statut')->item(0)->nodeValue;
$bilan['num_gest']['dossier_chrono'] = $num_gest->getElementsByTagName('dossier_chrono')->item(0)->nodeValue;
$bilan['num_siren'] = $bilan_complet->getElementsByTagName('num_siren')->item(0)->nodeValue;
$bilan['date_cloture'] = $bilan_complet->getElementsByTagName('date_cloture')->item(0)->nodeValue;
$bilan['date_cloture_iso'] = $bilan_complet->getElementsByTagName('date_cloture_iso')->item(0)->nodeValue;
$bilan['millesime'] = $bilan_complet->getElementsByTagName('millesime')->item(0)->nodeValue;
$bilan['num_depot'] = $bilan_complet->getElementsByTagName('num_depot')->item(0)->nodeValue;
$bilan['type_comptes'] = $bilan_complet->getElementsByTagName('type_comptes')->item(0)->nodeValue;
$bilan['url_acces'] = $bilan_complet->getElementsByTagName('url_acces')->item(0)->nodeValue;
return array( 'bilan' => $bilan );
}
/**
* Formatte le tableau complet des actes pour envoyer seulement les informations nécessaires
* @param $actes
* @return unknown_type
*/
function formatActes($actes)
{
$tabActes = array();
//Pour chaque depot
foreach($actes as $key => $depot)
{
//Pour chaque acte dans le depot
foreach($depot['depot'] as $acte)
{
//Recherche du fichier suivant le siren, le type de document et la reference
$file_exist = false;
$ref = $this->acteRef($acte, $depot);
if (strlen($depot['num_siren'])==8){
$siren = '0'.$depot['num_siren'];
} else {
$siren = $depot['num_siren'];
}
$fichier = $this->pathData.'/pdf/'.$this->acteFilename($siren,$ref);
if( file_exists($fichier) && filesize($fichier)>0 )
{
$mode = 'fichier';
$file_exist = true;
}
//Génération date (date_acte peut être vide)
if(!empty($acte['date_acte'])){ $date = WDate::dateT('Y-m-d', 'Ymd', $acte['date_acte']); }
else { $date = WDate::dateT('Y-m-d', 'Ymd', $depot['date_depot']); }
//Suppression du mode courrier si le mode telechargement existe
$modes = $acte['mode_diffusion'];
if(is_array($modes) && !$file_exist)
{
//Pas de modes
$nomode = true;
if(in_array('T',$modes))
{
$mode = 'T';
//Reference multiacte
$ref_multi = $this->acteRef($acte, $depot, true);
$tabActe['ref_multi'] = $ref_multi;
$nomode = false;
}
elseif(in_array('C',$modes))
{
$mode = 'C';
//Reference identique
$nomode = false;
}
if($nomode && ( substr($date,0,4)>date('Y')-5 ) )
{
$mode = 'courrier';
}
}
//Assignation
$tabActe['num_acte'] = $acte['num_acte'];
$tabActe['nbpages_acte'] = $acte['nbpages_acte'];
$tabActe['type'] = $acte['type_acte'];
$tabActe['type_lib'] = $acte['type_acte_libelle'];
$tabActe['decision'] = $acte['decision']['libelle'];
$tabActe['date_acte'] = ($date!='') ? WDate::dateT('Ymd', 'd/m/Y', $date) : '';
$tabActe['mode'] = $mode;
$tabActe['ref'] = $ref;
$tabActes[$key]['actes'][] = $tabActe;
}
$tabActes[$key]['num_depot'] = $depot['num_depot'];
$tabActes[$key]['date_depot'] = WDate::dateT('Y-m-d', 'd/m/Y', $depot['date_depot']);
}
return $tabActes;
}
function formatActesT($actes)
{
$tabActes = array();
$tabActe = array();
foreach($actes['actes'] as $acte)
{
//Génération date (date_acte peut être vide)
if(!empty($acte['date_acte'])){ $date = WDate::dateT('Y-m-d', 'Ymd', $acte['date_acte']); }
else { $date = WDate::dateT('Y-m-d', 'Ymd', $actes['date_depot']); }
$tabActe = '';
$tabActe['type_acte'] = $acte['type_acte'];
$tabActe['type_acte_libelle'] = $acte['type_acte_libelle'];
$tabActe['decision'] = $acte['decision'];
$tabActe['date_acte'] = $date;
$tabActe['num_acte'] = $acte['num_acte'];
$tabActe['url_acces'] = $acte['url_acces'];
$tabActes['actes'][] = $tabActe;
}
$tabActes['num_gest'] = $actes['num_gest'];
$tabActes['num_siren'] = $actes['num_siren'];
$tabActes['num_depot'] = $actes['num_depot'];
$tabActes['date_depot'] = $actes['date_depot'];
return $tabActes;
}
/**
*
* @param unknown_type $bilans
* @return unknown_type
*/
function formatBilans($bilans)
{
//Organisation du tableau des bilans
$tabBilans = array();
foreach($bilans as $key => $bilan)
{
$mode = '';
$nomode = true;
//Recherche du fichier suivant le siren, le type de document et la reference
$file_exist = false;
$ref = $this->bilanRef($bilan);
if (strlen($bilan['num_siren'])==8){
$siren = '0'.$bilan['num_siren'];
} else {
$siren = $bilan['num_siren'];
}
//Cas de fichier correspondant à la référence
$fichier = $this->pathData.'/pdf/'.$this->bilanFilename($siren,$ref);
if( file_exists($fichier) && filesize($fichier)>0 )
{
$mode = 'fichier';
$file_exist = true;
$nomode = false;
}
//Cas de fichier ne correspondant pas à la référence (_sociaux ou pas)
//Si AAAA_sociaux- alors on cherche sans
if (preg_match('/^[0-9]{4}_sociaux-/', $ref)){
$refR = str_replace('_sociaux-', '_-', $ref);
$fichier = $this->pathData.'/pdf/'.$this->bilanFilename($siren,$refR);
if( file_exists($fichier) && filesize($fichier)>0 )
{
$mode = 'fichier';
$file_exist = true;
$nomode = false;
$ref = $refR;
}
//Si AAAA_- alors on cherche avec
} elseif (preg_match('/^[0-9]{4}_-/', $ref)){
$refR = str_replace('_-', '_sociaux-', $ref);
$fichier = $this->pathData.'/pdf/'.$this->bilanFilename($siren,$refR);
if( file_exists($fichier) && filesize($fichier)>0 )
{
$mode = 'fichier';
$file_exist = true;
$nomode = false;
$ref = $refR;
}
}
//Cas de fichier en acte (a faire disparaitre)
$fichier = $this->pathData.'/pdf/acte-'.$siren.'-'.$ref.'.pdf';
if( file_exists($fichier) && filesize($fichier)>0 )
{
$mode = 'fichier';
$file_exist = true;
$nomode = false;
}
//Suppression du mode courrier si le mode telechargement existe
$modes = $bilan['mode_diffusion'];
if(is_array($modes) && !empty($modes) && !$file_exist )
{
if(in_array('T',$modes)) { $mode = 'T'; $nomode = false;}
elseif(in_array('C',$modes)){ $mode = 'C'; $nomode = false;}
}
if($nomode && ( substr($bilan['date_cloture'],6,4)>date('Y')-5 ) )
{
$mode = 'courrier';
}
//Valeurs de retour
$tabBilans[$key]['millesime'] = $bilan['millesime'];
$tabBilans[$key]['date_cloture'] = $bilan['date_cloture'];
$tabBilans[$key]['type'] = $bilan['type_comptes'];
$tabBilans[$key]['num_depot'] = $bilan['num_depot'];
$tabBilans[$key]['mode'] = $mode;
$tabBilans[$key]['ref'] = $ref;
}
return $tabBilans;
}
/**
* Liste tous les actes pour un siren et gere les commandes
* @param string $siren
* @param string $typeCommande
* @param string $ref
* @return array
*/
function getGreffeActes($siren, $typeCommande = '', $ref = '', $idCommande = 0)
{
$inErreur = false;
$error = '';
$result = array();
if(empty($typeCommande)) $typeCommande = 'XL';
$type = 'AC'; // Type actes
if($typeCommande=='XL')
{
$fichier = $this->pathCacheXML.'/'.$type.'-'.$siren.'.xml';
if (file_exists($fichier)){
$xmlReponse = file_get_contents($fichier);
if ($this->erreur($xmlReponse)){
$inErreur = true;
}
}
if (!file_exists($fichier) || $this->filetimeover($fichier) || $inErreur){
$xmlRequete = $this->requeteXML($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = $this->getProduitsXML($xmlRequete);
file_put_contents($fichier, $xmlReponse);
}
if(!$this->erreur($xmlReponse))
{
//Tableau d'actes
$actes = $this->parsexmlActes($xmlReponse);
$result = $this->formatActes($actes);
}
}
//Commande d'un acte en mode téléchargement
elseif($typeCommande=='T')
{
$option = explode('-', $ref);
$num_actes = explode('|', $ref[7]);
if(is_array($num_actes) && count($num_actes)>1){
$fichierOption = $ref[0].'-'.$ref[1].'-'.$ref[2].'-'.
$ref[3].'-'.$ref[4].'-'.$ref[5].'-'.$ref[6];
}else{
$fichierOption = $ref;
}
$fichier = $this->pathCacheXML.'/'.$type.'-'.$siren.'-'.$fichierOption.'.xml';
if( !file_exists($fichier) || $this->filetimeover($fichier) ){
//@todo $firephp non definie.
$firephp->info('Mode telechargement');
$xmlRequete = $this->requeteXML($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = $this->getProduitsXML($xmlRequete);
file_put_contents($fichier, $xmlReponse);
}else{
$xmlReponse = file_get_contents($fichier);
}
if(!$this->erreur($xmlReponse))
{
$items = $this->parsexmlActesT($xmlReponse);
$items = $this->formatActesT($items);
//Pour chaque acte téléchagement des documents
$result = array();
$actes = $items['actes'];
unset($items['actes']);
$result = $depot = $items;
$num_gest =
$result['num_gest']['greffe'].'-'.
$result['num_gest']['dossier_millesime'].'-'.
$result['num_gest']['dossier_statut'].'-'.
$result['num_gest']['dossier_chrono'].'-'.
$result['num_depot'];
foreach($actes as $acte)
{
if(!empty($acte['date_acte'])){ $date = $acte['date_acte']; }
else { $date = WDate::dateT('Y-m-d', 'Ymd', $result['date_depot']); }
$ref = $acte['type_acte'].'-'.$date.'-'.$num_gest.'-'.$acte['num_acte'];
$fichier = $this->acteFilename($siren, $ref);
//Si le fichier existe, on modifie l'url
if( file_exists($this->pathData.'/pdf/'.$fichier) ){
$acte['url_access'] = $fichier;
}else{
$fichierdl = $this->dl($fichier, $acte['url_acces']);
$acte['url_acces'] = $fichierdl;
}
$result['actes'][] = $acte;
}
}
}
//Commande d'un acte en mode courrier
elseif($typeCommande=='C')
{
//On génére un idCommande suivant la valeur en bdd
$xmlRequete = $this->requeteXML($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = $this->getProduitsXML($xmlRequete);
}
//Default mode erreur
else
{
//Paramètres incorrect
//@todo cette fonction n'existe pas !
sendMail(
"Erreur : getGreffeActes",
"getGreffeActes($siren, $typeCommande , $ref, $idCommande )",
array('email' => EMAIL_SUPPORTDEV, 'name' => 'Support'),
array('email' => EMAIL_SUPPORTDEV, 'name' => 'Support')
);
}
//Gestion du retour infogreffe
if($this->erreur($xmlReponse))
{
$error = $this->erreurMsg($xmlReponse);
}
return array('error' => $error , 'result' => $result );
}
/**
* Retourne si le fichier est périmé ou non
* @param string $fichier
* @return boolean
*/
function filetimeover($fichier)
{
$timeover = false;
$dateFile = filemtime($fichier);
$now = mktime(date('G'), date('i'), date('s'), date('m') , date('d'), date('Y'));
$maxTime = mktime(date('G',$dateFile)+$this->filetime, date('i',$dateFile), date('s',$dateFile), date("m",$dateFile), date("d",$dateFile), date("Y",$dateFile));
if($now>$maxTime) $timeover = true;
return $timeover;
}
/**
* Détermine si la chaine xml de retour est un message d'information ou d'erreur
* @param string $xml
* @return boolean
*/
function erreur($xml)
{
if (!empty($xml)){
$doc = new DOMDocument();
$load = $doc->loadXML($xml, LIBXML_NOERROR | LIBXML_NOWARNING);
$output = false;
if (!$load){ $output = true;}
}else{
//@todo cette fonction n'existe pas !
sendMail(
"Erreur : infogreffe_erreur",
"Pas de reponse xml infogreffe",
array('email' => EMAIL_SUPPORTDEV, 'name' => 'Support'),
array('email' => EMAIL_SUPPORTDEV, 'name' => 'Support')
);
$output = true;
}
return $output;
}
/**
* Renvoi le code erreur infogreffe ainsi que le message
* @param string $xml
* @return boolean
*/
function erreurMsg($xml)
{
$errNum = '';
$errMsg = '';
if (!empty($xml)){
$doc = new DOMDocument();
$load = $doc->loadXML($xml, LIBXML_NOERROR | LIBXML_NOWARNING);
if (!$load) {
$tmp = explode('-', $xml);
$errNum = $tmp[0]*1;
$errMsg = $this->tabErrInfoGref[$errNum];
if ($errNum == '23'){
$fj = $_SESSION['tabInfo']['entrep']['fj'];
$nafEn = $_SESSION['tabInfo']['entrep']['nafEn'];
if ( (substr($fj,0,2)=='53' ||
substr($fj,0,2)=='54' ||
substr($fj,0,2)=='55' ||
substr($fj,0,2)=='56' ||
substr($fj,0,2)=='57' ) && $fj!=5306 && $fj!=5307 &&
( $nafEn!='6411Z' ||
$nafEn!='6419Z' ||
$nafEn!='6621Z' ||
$nafEn!='6622Z' ||
$nafEn!='6629Z' ||
$nafEn!='6512Z' ||
$nafEn!='6520Z' ||
$nafEn!='6530Z' ||
$nafEn!='6512Z' ||
$nafEn!='8430A' ||
$nafEn!='8430B' ||
$nafEn!='6420Z' ||
$nafEn!='6430Z' ||
$nafEn!='6611Z' ||
$nafEn!='8430B' ||
$nafEn!='6612Z' ||
$nafEn!='6630Z') ){
$errMsg = 'Aucun bilan disponible.';
}
} elseif( $errNum == '5' ){
$errMsg = 'Service partenaire indisponible.';
}
}
}
return array( 'errNum' => $errNum , 'errMsg' => $errMsg );
}
/**
* Demande le dernier statut à jour auprès d'infogreffe seulement si disponible pour le siren
* Acte possédant un num_depot = 9999999999
* @param $siren
* @param $typeCommande
* @return unknown_type
*/
function getGreffeStatut($siren, $typeCommande = '', $ref = '', $idCommande = 0)
{
$type = 'ST'; //Type document statut
$xmlRequete = $this->requeteXML($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = $this->getProduitsXML($xmlRequete);
//Gestion du retour infogreffe
if($this->erreur($xmlReponse))
{
$error = $this->erreurMsg($xmlReponse);
}
//@todo result non définie
return array('error' => $error , 'result' => $result );
}
/**
* Liste tous les bilans et gere les commandes
* @param unknown_type $siren
* @param unknown_type $typeCommande
* @param unknown_type $ref
* @return unknown_type
*/
function getGreffeBilans($siren, $typeCommande = '', $ref = '', $idCommande = 0)
{
$inErreur = false;
$error = '';
$result = '';
if(empty($typeCommande)) $typeCommande = 'XL';
$type = 'BI';
if($typeCommande=='XL')
{
$fichier = $this->pathCacheXML.'/'.$type.'-'.$siren.'.xml';
if (file_exists($fichier)){
$xmlReponse = file_get_contents($fichier);
if ($this->erreur($xmlReponse)){
$inErreur = true;
}
}
if (!file_exists($fichier) || $this->filetimeover($fichier) || $inErreur){
$xmlRequete = $this->requeteXML($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = $this->getProduitsXML($xmlRequete);
file_put_contents($fichier, $xmlReponse);
}
if(!$this->erreur($xmlReponse)){
$bilans = $this->parsexmlBilans($xmlReponse);
$result = $this->formatBilans($bilans);
}
}
//Commande d'un acte en mode téléchargement
elseif($typeCommande=='T')
{
$xmlRequete = $this->requeteXML($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = $this->getProduitsXML($xmlRequete);
if(!$this->erreur($xmlReponse))
{
$items = $this->parsexmlBilansT($xmlReponse);
$result = array();
$bilan = $items['bilan'];
$fichier = $this->bilanFilename($siren, $ref);
$fichierdl = $this->dl($fichier, $bilan['url_acces']);
$bilan['url_acces'] = $fichierdl;
$result['bilan'][] = $bilan;
}
}
//Commande d'un acte en mode courrier
elseif($typeCommande=='C')
{
//On génére un idCommande suivant la valeur en bdd
$xmlRequete = $this->requeteXML($siren, $idCommande, $type, $typeCommande, $ref);
$xmlReponse = $this->getProduitsXML($xmlRequete);
}
//Default mode erreur
else
{
//Paramètres incorrect
//@todo cette fonction n'existe pas !
sendMail(
"Erreur : getGreffeBilans",
"getGreffeBilans($siren, $typeCommande, $ref, $idCommande )",
array('email' => EMAIL_SUPPORTDEV, 'name' => 'Support'),
array('email' => EMAIL_SUPPORTDEV, 'name' => 'Support')
);
}
//Gestion du retour infogreffe
if($this->erreur($xmlReponse))
{
$error = $this->erreurMsg($xmlReponse);
}
//Si résultat vide, renvoyé erreur Aucun bilans disponible
if (is_array($result) && empty($result)){
$error = array(
'errNum' => '45' ,
'errMsg' => 'AUCUN BILAN TROUVE POUR CE SIREN' );
}
return array( 'error' => $error , 'result' => $result );
}
function acteRef($acte, $depot, $multi = false)
{
if($depot['num_depot']>0)
{
//Numéro de gestion
$num_gest =
$depot['num_gest']['greffe'].'-'.
$depot['num_gest']['dossier_millesime'].'-'.
$depot['num_gest']['dossier_statut'].'-'.
$depot['num_gest']['dossier_chrono'].'-'.
$depot['num_depot'];
if($multi===true)
{
//Générer la ref multiactes pour le mode téléchargement
$tabActeNum = array();
foreach($depot['depot'] as $acte)
{
if(in_array('T', $acte['mode_diffusion']))
{
$tabActeNum[] = $acte['num_acte'];
}
}
$num_acte = implode('|', $tabActeNum);
}
else
{
$num_acte = $acte['num_acte'];
}
//Génération date (date_acte peut être vide)
if(!empty($acte['date_acte'])){ $date = WDate::dateT('Y-m-d', 'Ymd', $acte['date_acte']); }
else { $date = WDate::dateT('Y-m-d', 'Ymd', $depot['date_depot']); }
return $acte['type_acte'].'-'.$date.'-'.$num_gest.'-'.$num_acte;
}
else
{
//Dernier STATUT A JOUR
$dateRef = date('Y').date('m').date('d');
return 'ST-'.$dateRef.'-'.
$depot['num_gest']['greffe'].'-'.
$depot['num_gest']['dossier_millesime'].'-'.
$depot['num_gest']['dossier_statut'].'-'.
$depot['num_gest']['dossier_chrono'];
}
}
function acteFilename($siren, $ref)
{
return 'acte-'.$siren.'-'.$ref.'.pdf';
}
function bilanRef($bilan)
{
$ref =
$bilan['millesime'].'_'.
$bilan['type_comptes'].'-'.
WDate::dateT('Y-m-d', 'Ymd', $bilan['date_cloture_iso']).'-'.
$bilan['num_gest']['greffe'].'-'.
$bilan['num_gest']['dossier_millesime'].'-'.
$bilan['num_gest']['dossier_statut'].'-'.
$bilan['num_gest']['dossier_chrono'].'-'.
$bilan['num_depot'];
return $ref;
}
function bilanFilename($siren, $ref)
{
return 'bilan-'.$siren.'-'.$ref.'.pdf';
}
/**
* Télécharge les fichiers d'infogreffe, et renvoi le nom du fichier ou false
* @param string $fichier
* @param string $url
* @return string or false
*/
function dl($fichier, $url, $trace = true)
{
$return = false;
$path = $this->pathData.'/pdf/';
if(!file_exists($path.$fichier) || !filesize($path.$fichier)>2000)
{
$erreurDL = '';
$page = getUrl($url, '', '', '', false, '', '',0,1);
$body = $page['body'];
$erreurDL = $body;
if (substr($body,0,4)!='%PDF')
{
$page2 = parse_response($body);
$body = $page2['body'];
}
if( ($page['code']!=408 || $page['code']!=400) && substr($body,0,4)=='%PDF') {
//Ecriture du fichier sur le serveur en local
file_put_contents($path.$fichier, $body);
$return = $fichier;
$erreurDL = '';
}
if ($trace) {
$erreur = new Application_Model_CommandesErreur();
preg_match('/^(acte|bilan)-([0-9]{9})-(.*)\.pdf$/', $fichier, $ref);
$data = array(
'siren' => $ref[2],
'type' => $ref[1],
'ref' => $ref[3],
'dateCommande' => date('Y-m-d H:i:s'),
'url' => $url,
'erreur' => $erreurDL,
);
$erreur->insert($data);
}
} else {
$return = $fichier;
}
return $return;
}
/**
* logfile
* @param unknown_type $info
*/
function logfile($info)
{
$file = $this->pathData.'/log/infogreffe-'.date('Ym').'.log';
if( !file_exists($file) ){
$entetes = array('date', 'login', 'siren', 'idCommande', 'type', 'vecteur', 'option');
$fp = fopen($file, 'w');
fputcsv($fp, $entetes, "\t");
fclose($fp);
}
$preinfo = array(date('Y-m-d H:i:s'), $this->login);
$result = array_merge($preinfo, $info);
$fp = fopen($file, 'a');
fputcsv($fp, $result, "\t");
fclose($fp);
}
}