config=$config; $this->extendSpreadsheetProductor = new SpreadsheetProductor(); $this->extendSpreadsheetProductor->initSpreadsheet(); } function getElement($uid){ $this->authentifier(); $tableau = array(); $tag = $uid[0]; $limite = 0; $pas = 0; //ini_set('max_execution_time',120); /*if(isset($uid[1]) && isset($uid[2])) { $limite = $uid[] }*/ $taille_archive_courante = 0; $index_archive_courante = 0; $taille_max_archive = $this->config['cel_db']['taille_max_archive']; $liens_archives = array(); $DB=$this->connectDB($this->config,'cel_db'); $query_id_id_img = 'SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire FROM cel_mots_cles_images WHERE cmc_id_mot_cle_general = md5("'.$DB->escapeSimple($tag).'")' ; $res =& $DB->query($query_id_id_img); if (DB::isError($res)) { $this->logger("InventoryImageExport",'Erreur de requete '.$query_id_id_img); die($res->getMessage()); } $query='SELECT * FROM cel_images'; $premier_item = true ; while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) { $tableau['mots cles'] = array('utilisateur' => $row['cmc_id_proprietaire'], 'mot cle' => $row['cmc_id_mot_cle_utilisateur']); if($premier_item) { $query .= ' WHERE '; $premier_item = false ; } else{ $query .= ' OR '; } $query .= '(ci_meta_mots_cles LIKE "%'.$row['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur ="'.$row['cmc_id_proprietaire'].'")' ; } $query .= ' ORDER BY ci_meta_date_ajout' ; $res =& $DB->query($query); if (DB::isError($res)) { die($res->getMessage()); } $this->logger('Requetes',$query); // création d'un objet 'zipfile' $this->archive = new zipfile(); $i = 1; $this->initialiserWorkBook($index_archive_courante); while ($image =& $res->fetchrow(DB_FETCHMODE_ASSOC)) { $image['ci_nom_original'] = htmlspecialchars($image['ci_nom_original']); $image['ci_id_image'] = htmlspecialchars($image['ci_id_image']); $image['ci_meta_date_ajout'] = htmlspecialchars($image['ci_meta_date_ajout']); $image['ci_ce_utilisateur'] = htmlspecialchars($image['ci_ce_utilisateur']); $image['ci_meta_user_comment'] = htmlspecialchars($image['ci_meta_user_comment']); $image['ci_note_image'] = htmlspecialchars($image['ci_note_image']); $id = $image['ci_id_image']; $tableau[$id]['image'] = $image; if($filename = $this->renvoyerCheminSurServeur($id,false)) { // appel de la classe // nom du fichier à ajouter dans l'archive // contenu du fichier $fp = fopen ($filename, 'r'); $content = fread($fp, filesize($filename)); fclose ($fp); // ajout du fichier dans cet objet if(preg_match('/\.(?:jpg|jpeg)$/i',$image['ci_nom_original'])) { $nom_fichier_image = preg_replace('/\.(?:jpg|jpeg)$/i','_'.$id.'.jpg', $image['ci_nom_original']); } else { $nom_fichier_image = $image['ci_nom_original'].'_'.$id.'.jpg'; } $chemin_sur_serveur = $this->config['cel_db']['url_images']; $id = sprintf('%09s', $id) ; $id = wordwrap($id, 3 , '_', true) ; $niveauDossier = split("_", $id) ; $dossierNiveau1 = $niveauDossier[0] ; $dossierNiveau2 = $niveauDossier[1] ; $chemin_sur_serveur_final = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2 ; $chemin_fichier = $chemin_sur_serveur_final.'/O/'.$id."_O.jpg" ; $obs_liee['url_image_liee'] = $chemin_fichier; $taille_fichier = filesize($filename); $req_liaison = 'SELECT * FROM cel_inventory WHERE ordre IN (SELECT coi_ce_observation FROM cel_obs_images WHERE coi_ce_image = "'.$image['ci_id_image'].'") AND identifiant = "'.$image['ci_ce_utilisateur'].'"' ; $res_liaison =& $DB->query($req_liaison); if (DB::isError($res_liaison)) { die($res_liaison->getMessage()); } if (DB::isError($res_liaison)) { die($res_liaison->getMessage()); } while($obs_liee = & $res_liaison->fetchrow(DB_FETCHMODE_ASSOC)) { $tableau[$id]['obs'] = $obs_liee; $obs_liee['nom_image_liee'] = $nom_fichier_image; $obs_liee['url_image_liee'] = $chemin_fichier; $this->ecrireLigneWorkBook($i,$obs_liee); $i++; } //$this->archive->addfile($content, $nom_fichier_image); //$taille_archive_courante += $taille_fichier; if($taille_archive_courante <= $taille_max_archive) { } else { // fermeture du workbook $this->workbook->close(); $i = 1; // ajout du fichier liste dans cet objet // contenu du fichier $fp = fopen($this->chemin_export_liste, 'r'); $contenu = fread($fp, filesize($this->chemin_export_liste)); fclose ($fp); $this->archive->addfile($contenu,'liste.'.md5($tag).'_'.$index_archive_courante.'.xls'); $liens_archives[] = $this->enregistrerArchive($this->archive,$index_archive_courante,$tag); $index_archive_courante++; $taille_archive_courante = 0; $this->archive = new zipfile(); $this->initialiserWorkBook($index_archive_courante); } } //$this->verifierOuRelancerExecution(); //$this->logger('InventoryImageExport'," Temps d'éxécution à l'image ".$id." : ".$this->getTempsEcoule()); } // fermeture du workbook $this->workbook->close(); $i = 1; // ajout du fichier liste dans cet objet // contenu du fichier $fp = fopen($this->chemin_export_liste, 'r'); $contenu = fread($fp, filesize($this->chemin_export_liste)); fclose ($fp); $this->archive->addfile($contenu,'liste.'.md5($tag).'_'.$index_archive_courante.'.xls'); $liens_archives[] = $this->enregistrerArchive($this->archive,$index_archive_courante,$tag); $index_archive_courante++; $j = 1; $sortie = '