0 error => le traitement à planté dateAdded dateStart nbLigne => nombre de lignes dans le fichier nbLigneT => nombre de lignes traitées dateStop */ /** * Enregistrement d'une commande avec ces paramètres * @param InfoEntete[] $infoEntete * Liste des colonnes qui seront fournis, il est nécessaire d'identifier la ou les colonnes clés SIREN/SIRET/NIC * @param string $data * Tableau des données * @param string $format * Format du tableau de données json/xml/fichier * @param string $reference * @return string */ public function setCommande($infoEntete = null, $data = null, $format = 'json', $reference = '') { /** * En méthode fichier : comment envoyer le fichier ? curl -d @file.csv "http://.../file.php" $file_to_upload = array('file_contents'=>'@'.$file_name_with_full_path); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$target_url); curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS, $file_to_upload); $result=curl_exec ($ch); curl_close ($ch); echo $result;
$request_url = ‘http://www.akchauhan.com/test.php’; $post_params['name'] = urlencode(’Test User’); $post_params['file'] = ‘@’.'demo/testfile.txt’; $post_params['submit'] = urlencode(’submit’); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $request_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params); $result = curl_exec($ch); curl_close($ch); if (isset($_POST['upload'])) { print_r($_FILES) // cURL call would go here // my tmp. file would be $_FILES['image']['tmp_name'], and // the filename would be $_FILES['image']['name'] } */ if (empty($infoEntete)){ throw new SoapFault('Extraction', "Entête non définie !"); } if (empty($infoEntete)){ throw new SoapFault('Extraction', "Données non définie !"); } if (!in_array($format, array('json', 'xml'))){ throw new SoapFault('Extraction', "Erreur dans le format!"); } //Vérification entete $nbColonnes = count($infoEntete); $haveKey = 0; foreach($infoEntete->item as $item) { if ( in_array(strtolower($item->cle), array('siren', 'siret', 'nic')) ){ $haveKey++; } } if ($haveKey == 0){ throw new SoapFault('Extraction', "Aucune clé de définie!"); } //Traitement du format switch ($format) { case 'json': $content = json_decode($data); break; case 'xml': /** * Format XML * * * col1 * col2 * * */ $xml = new SimpleXMLElement($data); $content = array(); $numeroLigne = 0; foreach($xml->data->l as $ligne) { $numeroLigne++; $dataCol = array(); foreach($ligne->c as $colonne){ $dataCol[] = $colonne; } //Si le nombre de colonne ne correspond pas à l'entete alors on renvoi une erreur if (count($dataCol)!=$nbColonnes){ throw new SoapFault('Extraction', "Nombre de colonnes incohérent à la ligne $numeroLigne"); } $content[] = $dataCol; } break; } //Traitement $nbLigne = count($content); //@todo: Générer un numéro de commande $numCommande = 0; //Enregistrement dans la bdd $db = Zend_Db::factory($this->dbConfig->Extraction); Zend_Db_Table_Abstract::setDefaultAdapter($db); $commandeM = new Application_Model_ExtractionCommandes(); try { $commandeM->insert(array( 'numCommande' => $numCommande, 'reference' => $reference, 'enteteIn' => json_encode($infoEntete), 'dataIn' => json_encode($content), 'nbLigne' => $nbLigne )); } catch (Exception $e){ throw new SoapFault('Extraction', "Erreur lors de l'enregistrement de la commande!"); } return $numCommande; } /** * Enter description here ... * @param string $numCommande * Numéro de commande * @param string[] $infoEnrichissement * Liste des clés, dans l'ordre, provenant du dictionnaire pour la génération du fichier d'enrichissement * @return boolean */ public function setEnrichissment($numCommande, $infoEnrichissement) { /* clé déjà défini + ajout des clés pour l'enrichissement Ecrire fichier csv pour enrichissement */ return true; } /** * Lancement des l'extraction après validation * @param string $numCommande * @return boolean */ public function setCommandeStart($numCommande) { if (empty($numCommande)){ return false; } //Placer dans la queue de traitement le numéro de commande return true; } /** * Retourne les clés possibles et leurs libellés pour le fichier d'enrichissement * @param string $categorie * @param string $cle * @return Dico[] */ public function getDataDico($categorie = null, $cle = null) { /* Dictionnaire de données - getDataDico ======================= Catégorie Clé bdd.table sql Libellé Commentaires Identite siren Siren Fonction siretValide Validité SIREN/SIRET */ $output = array(); $dico = new Dico(); return $output; } /** * Validation préalable de la commande * @param string $numCommande Numéro de commande * @param string $type algorithme, existe * @param boolean $rejet Si true alors création d'un fichier uniquement des rejets * @param boolean $rejetNic 0 => ne rien faire, 1 => completer par le nic du siege, 2 => completer par le nic le plus grand * @return string chaine vide ou chemin vers fichier de rejet */ public function getValidation($numCommande, $type = 'algorithme', $rejet = false, $rejetNic = 0) { /* Validation SIREN/SIRET - getValidation ====================== Vérifier les SIREN/SIRET/SIREN+NIC Numéro de commande Validité suivant algorithme ? Présence dans la base (attention ressources) ? enrichir le nic si vide (prendre le siege) rejet = false/true Renvoyer le fichier original avec les lignes en erreur ou Renvoyer seulement les lignes en erreur Seulement pour validation, alors on marque comme complete Créer le fichier pour l'extraction et place le marqueur de démarrage */ } /** * Retourne un fichier XLS avec les lignes en rejet en rouge * @param unknown_type $numCommande */ public function getRejetXLS($numCommande) { //retourne contenu du fichier encoder en base64 } /** * Retourne l'état de la commande à tout instant * @param string $numCommande * @return Etat */ public function getEtat($numCommande) { //Lecture de la base de données $db = Zend_Db::factory($this->dbConfig->Extraction); Zend_Db_Table_Abstract::setDefaultAdapter($db); $commandeM = new Application_Model_ExtractionCommandes(); $sql = $commandeM->select()->where('numCommande = ?', $numCommande); $result = $commandeM->fetchRow($sql); // $etat = new Etat(); $etat->numCommande = $numCommande; $etat->valid = $result->isValid; $etat->nbLigneTotal = $result->nbLigne; $etat->nbLigneTraite = $result->nbLigneT; $etat->dateAjout = $result->dateAdded; $etat->dateStart = $result->dateStart; $etat->dateStop = $result->dateStop; return $etat; } /** * Liste des commmandes * @param CommandesCriteres $criteres * @param integer $position * @return ListeCommandes */ public function getCommandes($criteres, $position = 0) { /* Liste des commandes Toutes Par numCommande Par réference Par date (intervalle) */ } /** * Enter description here ... * @param string $numCommande */ public function getFichierEnrichit($numCommande) { /* L'enrichissement est réalisé par l'intermédiaire d'une tache cron Récuperer le fichier (chemin) par le numéro de commande Retourne url ou erreur */ } }