Rev 416 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// In : utf8// Out : iso8859// Formatage pdf d'un releve (a revoir)/** Constante stockant l'URL de la page d'accueil de Photoflora.*/define('EF_URL_PHOTOFLORA', 'http://photoflora.free.fr/');/** Constante stockant l'URL de la page de Photoflora affichant toutes les images d'un taxon donn.es.*/define('EF_URL_PHOTOFLORA_TAXON', EF_URL_PHOTOFLORA.'FiTax.php?NumTaxon=%s');/** Constante stockant l'URL du dossier de photoflora contenant les images miniatures.*/define('EF_URL_PHOTOFLORA_IMG_MIN', 'http://www.tela-botanica.org/~photoflo/photos/%s/min/%s');/** Constante stockant l'URL du dossier de photoflora contenant les images normale.*/define('EF_URL_PHOTOFLORA_IMG_MAX', 'http://www.tela-botanica.org/~photoflo/photos/%s/max/%s');/** Constante stockant l'expression r.guli.re r.cup.rant l'abr.viation du photographe et le nom du fichier.*/define('EF_URL_PHOTOFLORA_REGEXP', '/\/photos\/([^\/]+)\/max\/(.+)$/');/** Constante stockant l'URL du service XML de Photoflora.*/define('EF_URL_PHOTOFLORA_SERVICE', EF_URL_PHOTOFLORA.'ef_photoflora.php?nt=%s');Class InventoryPDF extends DBAccessor {var $config;var $extendPDFProductor;function InventoryPDF($config) {$this->config=$config;// Pas d'heritage multiple en php :($this->extendPDFProductor = new PDFProductor();$this->extendPDFProductor->initPDF();}function getElement($uid){// Controle detournement utilisateursession_start();$this->controleUtilisateur($uid[0]);// uid[0] : utilisateur obligatoire// uid[1] : si absent : valeur 'all' (commune)// uid[2] : si absent : valeur 'all' (date)// uid[3] : si absent : valeur 'all' (recherche libre)// uid[4] : si absent : valeur 'all' (station)$DB=$this->connectDB($this->config,'database_cel');if (!isset($uid[1]) || $uid[1]=="" || $uid[1]=="all" ) {$uid[1]="all";$query_location="";}else {$query_location=" AND location='".$DB->escapeSimple($uid[1])."' ";}if (!isset($uid[2]) || $uid[2]=="" || $uid[2]=="all") {$uid[2]="all";$query_date="";}else {$query_date=" AND date_observation='".$DB->escapeSimple($uid[2])."' ";}if (!isset($uid[3]) || $uid[3]=="" || $uid[3]=="all") {$uid[3]="all";$query_libre="";}else {$query_libre=" AND (nom_sel like '%".$DB->escapeSimple($uid[3])."%' OR nom_ret like '%".$DB->escapeSimple($uid[3])."%' OR station like '%".$DB->escapeSimple($uid[3])."%' OR commentaire like '%".$DB->escapeSimple($uid[3])."%') ";}if (!isset($uid[4]) || $uid[4]=="" || $uid[4]=="all") {$uid[4]="all";$query_station="";}else {$query_station=" AND station='".$DB->escapeSimple($uid[4])."' ";}$value=array();$query="SELECT identifiant, ordre, nom_sel, num_nom_sel, nom_ret, num_nom_ret, num_taxon, famille, location, date_observation," ." station, commentaire, transmission FROM cel_inventory WHERE identifiant='".$DB->escapeSimple($uid[0])."' " .$query_location.$query_date.$query_libre.$query_station." ORDER BY ordre ";$res =& $DB->query($query);if (DB::isError($res)) {die($res->getMessage());}// Set up the pdf object.$pdf = &File_PDF::factory(array('orientation' => 'P', 'format' => 'A4'));// DesActivate compression.$pdf->setCompression(false);$pdf->setMargins(0, 0);// Enable automatic page breaks.$pdf->setAutoPageBreak(true);// Start the document.$pdf->open();// Start a page.$pdf->addPage();$pdf->setFont('Times', '' , 12);$i=1;$tempfn = tempnam("","");while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {// Denullifiageforeach($row as $k=>$v) {if (($v=="null") || ($v=="000null")) {$row[$k]="";}else {$row[$k]=utf8_decode($v);}}if ($row['date_observation']!="0000-00-00 00:00:00") {list($year,$month,$day)= split ('-',$row['date_observation']);list($day)= split (' ',$day);$row['date_observation']=$day."/".$month."/".$year;}else {$row['date_observation']="00/00/0000";}$text= $row['nom_sel']." ".$row['num_nom_sel']." ".$row['nom_ret']." ".$row['num_nom_ret']." ".$row['num_taxon']." ".$row['famille']." ".$row['location']." ".$row['id_location']." ".$row['date_observation']." ".$row['station'];$row['commentaire'];$pdf->write(10, $text."\n");$projet_photo = 'photoflora';$tab_retour[$projet_photo]=chercherIllustrationsServiceXml(sprintf(EF_URL_PHOTOFLORA_SERVICE, $row['num_taxon']));$url_miniature ='';foreach ($tab_retour[$projet_photo] as $cle => $illustration) {if (preg_match(EF_URL_PHOTOFLORA_REGEXP, $illustration['about'], $match)) {$abreviation = $match[1];$fichier = $match[2];$url_miniature = sprintf(EF_URL_PHOTOFLORA_IMG_MIN, $abreviation, $fichier);;// Priorite aux images en pngif (strstr($fichier, '.png')) {break;}}}if ($url_miniature!='') {list($debut,$ext)=split("\.",basename($url_miniature));$temp = fopen($tempfn, "w");$buf=file_get_contents($url_miniature);fwrite($temp,$buf);fclose($temp);$pdf->image($tempfn,10,($i*10),0,0,$ext);}$i++;}// Print the generated file.echo $pdf->output("Rapport");}}function chercherIllustrationsServiceXml($url){return analyserFichierRdf($url);}function analyserFichierRdf($chemin){$aso_info = array();$dom = new DOMDocument();$dom->validateOnParse = true;if (preg_match('/^http:\/\//', $chemin)) {$dom->loadXML(file_get_contents($chemin));} else {$dom->load($chemin);}$tab_infos = array();foreach ($dom->getElementsByTagNameNS('http://www.w3.org/1999/02/22-rdf-syntax-ns#', 'Description') as $rdf_description) {$aso_info['about'] = $rdf_description->getAttribute('about');$aso_info['dc:identifier'] = $rdf_description->getAttribute('identifier');$aso_info['dc:title'] = utf8_decode($rdf_description->getAttribute('title'));$aso_info['dc:creator'] = utf8_decode($rdf_description->getAttribute('creator'));$aso_info['dc:contributor'] = utf8_decode($rdf_description->getAttribute('contributor'));$aso_info['dc:publisher'] = utf8_decode($rdf_description->getAttribute('publisher'));$aso_info['dc:type'] = utf8_decode($rdf_description->getAttribute('type'));$aso_info['dc:format'] = utf8_decode($rdf_description->getAttribute('format'));if (function_exists('date_default_timezone_set')) {date_default_timezone_set('Europe/Paris');}if (preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/', $rdf_description->getAttribute('created'))) {$aso_info['dcterms:created'] = date('j-m-Y � H:i:s', strtotime($rdf_description->getAttribute('created')));} else {$aso_info['dcterms:created'] = $rdf_description->getAttribute('created');}$aso_info['dcterms:dateSubmitted'] = utf8_decode($rdf_description->getAttribute('dateSubmitted'));$aso_info['dcterms:spatial'] = utf8_decode($rdf_description->getAttribute('spatial'));$aso_info['dcterms:licence'] = utf8_decode($rdf_description->getAttribute('licence'));$tab_infos[$rdf_description->getAttribute('identifier')] = $aso_info;}//echo '<pre>'.$chemin.print_r($tab_infos, true).'</pre>';return $tab_infos;}/* +--Fin du code ---------------------------------------------------------------------------------------+* $Log$* Revision 1.2 2008-01-30 08:57:28 ddelon* fin mise en place mygwt** Revision 1.1 2007-06-06 13:31:16 ddelon* v0.09** Revision 1.4 2007-05-22 12:54:09 ddelon* Securisation acces utilisateur****/?>