Rev 996 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** PHP Version 5** @category PHP* @package jrest* @author David Delon <david.delon@clapas.net>* @copyright 2010 Tela-Botanica* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL* @version SVN: <svn_id>* @link /doc/jrest/*//** 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');/*** InventoryPDF.php** in : utf8* out : iso8859** Formatage pdf d'un releve (a revoir)*/class InventoryPDF extends Cel {var $extendPDFProductor;function InventoryPDF($config) {parent::__construct($config);$this->config=$config;// Pas d'heritage multiple en php :($this->extendPDFProductor = new PDFProductor();$this->extendPDFProductor->initPDF();}/*** 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)*/function getElement($uid){// Controle detournement utilisateur$this->controleUtilisateur($uid[0]);if (!isset($uid[1]) || $uid[1]=="" || $uid[1]=="all" ) {$uid[1]="all";$requete_location="";}else {$requete_location=" AND location= ".$this->proteger($uid[1])." ";}if (!isset($uid[2]) || $uid[2]=="" || $uid[2]=="all") {$uid[2]="all";$requete_date="";}else {$requete_date=" AND date_observation= ".$this->proteger($uid[2])." ";}if (!isset($uid[3]) || $uid[3]=="" || $uid[3]=="all") {$uid[3]="all";$requete_libre="";}else {$requete_libre=" AND (nom_sel LIKE ".$this->proteger('%'.$uid[3].'%')." OR nom_ret LIKE ".$this->proteger('%'.$uid[3].'%')." OR station LIKE ".$this->proteger('%'.$uid[3].'%')." OR commentaire LIKE ".$this->proteger('%'.$uid[3].'%');}if (!isset($uid[4]) || $uid[4]=="" || $uid[4]=="all") {$uid[4]="all";$requete_station="";}else {$requete_station=" AND station= ".$this->proteger($uid[4])." ";}$value=array();$requete="SELECT ce_utilisateur, ordre, nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, nt, famille, zone_geo, date_observation," ." station, commentaire, transmission FROM cel_obs WHERE ce_utilisateur = ".$this->proteger($uid[0])." " .$requete_location.$requete_date.$requete_libre.$requete_station." ORDER BY ordre ";$resultat_requete = $this->requeter($requete);$observations = array();;if(is_array($resultat_requete)) {$observations = $resultat_requete;}// 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("","");foreach ($observations as $obs) {// Denullifiageforeach($obs as $k=>$v) {if (($v=="null") || ($v=="000null")) {$obs[$k]="";}else {$obs[$k]=utf8_decode($v);}}if ($obs['date_observation']!="0000-00-00 00:00:00") {list($year,$month,$day)= explode('-',$obs['date_observation']);list($day)= explode(' ',$day);$obs['date_observation']=$day."/".$month."/".$year;}else {$obs['date_observation']="00/00/0000";}$text= $obs['nom_sel']." ".$obs['nom_sel_nn']." ".$obs['nom_ret']." ".$obs['nom_ret_nn']." ".$obs['nt']." ".$obs['famille']." ".$obs['zone_geo']." ".$obs['ce_zone_geo']." ".$obs['date_observation']." ".$obs['station'];$obs['commentaire'];$pdf->write(10, $text."\n");$projet_photo = 'photoflora';$tab_retour[$projet_photo]=chercherIllustrationsServiceXml(sprintf(EF_URL_PHOTOFLORA_SERVICE, $obs['nt']));$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)=explode("\.",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++;}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;}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**/?>