Subversion Repositories eFlore/Applications.cel

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
416 aurelien 1
<?php
2
/**
3
* PHP Version 5
4
*
5
* @category  PHP
6
* @package   jrest
7
* @author    aurelien <aurelien@tela-botanica.org>
8
* @copyright 2009 Tela-Botanica
9
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
10
* @version   SVN: <svn_id>
11
* @link      /doc/jrest/
12
*/
13
 
14
class PlantNetRss extends DBAccessor {
15
 
16
    var $config;
17
 
18
    function PlantNetRss($config) {
19
 
20
        $this->config=$config;
21
    }
22
 
23
    function getElement($uid){
24
 
25
        $rss = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n";
26
        $rss .= "<rss version=\"2.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n";
27
        $rss .='
28
          <channel>
29
         <title>Carnet en ligne</title>
30
         <link>http://www.tela-botanica.org/cel/jrest/ImageRss</link>
31
         <description>Carnet en ligne</description>
32
         <language>fr</language>';
33
 
34
        $DB=$this->connectDB($this->config,'cel_db');
35
		$motcle = 'plantnet';
36
        $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("'.$motcle.'")' ;
37
 
38
        $res =& $DB->query($query_id_id_img);
39
 
40
        if (DB::isError($res)) {
41
 
42
            die($res->getMessage());
43
        }
44
 
45
        $query='SELECT * FROM cel_images';
46
 
47
        $premier_item = true ;
48
        while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
49
 
50
            if($premier_item) {
51
                $query .= ' WHERE ';
52
                $premier_item = false ;
53
            }
54
            else{
55
                $query .= ' OR ';
56
            }
57
 
58
            $query .= '(ci_meta_mots_cles LIKE "%'.$row['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur ="'.$row['cmc_id_proprietaire'].'")' ;
59
        }
60
 
61
        $query .= ' ORDER BY ci_meta_date_ajout DESC LIMIT 0,100' ;
62
 
63
        $res =& $DB->query($query);
64
 
65
        if (DB::isError($res)) {
66
            die($res->getMessage());
67
        }
68
 
69
           while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
70
           $row['ci_nom_original'] = htmlspecialchars($row['ci_nom_original']);
71
           $row['ci_id_image'] = htmlspecialchars($row['ci_id_image']);
72
           $row['ci_meta_date_ajout'] = htmlspecialchars($row['ci_meta_date_ajout']);
73
           $row['ci_ce_utilisateur'] = htmlspecialchars($row['ci_ce_utilisateur']);
74
           $row['ci_meta_user_comment'] = htmlspecialchars($row['ci_meta_user_comment']);
75
           $row['ci_note_image'] = htmlspecialchars($row['ci_note_image']);
76
           $tailleXY = $this->calculerDimensions(array($row['ci_meta_width'], $row['ci_meta_height']));
77
 
78
            $id = $row['ci_id_image'];
79
            $chemin_sur_serveur = $this->config['cel_db']['url_images'];
80
 
81
            $req_liaison = 'SELECT * FROM cel_inventory WHERE ordre IN (SELECT coi_ce_observation FROM cel_obs_images WHERE coi_ce_image = "'.$row['ci_id_image'].'") AND identifiant = "'.$row['ci_ce_utilisateur'].'"' ;
82
            $res_liaison =& $DB->query($req_liaison);
83
 
84
            if (DB::isError($res_liaison)) {
85
                die($res_liaison->getMessage());
86
            }
87
 
88
            if (DB::isError($res_liaison)) {
89
                die($res_liaison->getMessage());
90
            }
91
 
92
            $id = sprintf('%09s', $id) ;
93
            $id = wordwrap($id, 3 , '_', true) ;
94
 
95
            $id_fichier = $id.".jpg" ;
96
 
97
            $niveauDossier = split("_", $id) ;
98
 
99
            $dossierNiveau1 = $niveauDossier[0] ;
100
            $dossierNiveau2 = $niveauDossier[1] ;
101
 
102
            $chemin_sur_serveur_final = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2 ;
103
 
104
            $chemin_fichier = $chemin_sur_serveur_final.'/L/'.$id."_L.jpg" ;
105
            $chemin_fichier_m = $chemin_sur_serveur_final.'/M/'.$id."_M.jpg" ;
106
 
107
               $rss.= '  <item>
108
              <title>'.$row['ci_nom_original']." (".$row['ci_id_image'].") ". ' par ' . $row['ci_ce_utilisateur'].'</title>
109
              <author>'.$row['ci_ce_utilisateur'].'</author>
110
              <link>'.$chemin_fichier.'</link>
111
              <guid>'.$chemin_fichier.'</guid>
112
              <description>'.
113
              ' <![CDATA[<img src="'.$chemin_fichier_m.'" alt="'.$row['ci_nom_original'].'" height="'.$tailleXY[1].'px" width="'.$tailleXY[0].'px"></img><br/>'.
114
              $row['ci_nom_original']. ' modifiée le ' .$row['ci_meta_date_ajout'] . ' par ' . $row['ci_ce_utilisateur'].'<br/>' ;
115
 
116
              if(trim($row['ci_meta_mots_cles']) != '') {
117
                  $row['ci_meta_mots_cles'] = rtrim($row['ci_meta_mots_cles'],',');
118
 
119
                  $mots_cles_chaine = '' ;
120
                  $mots_cles_tab = split(',',$row['ci_meta_mots_cles']);
121
                  foreach($mots_cles_tab as $item) {
122
                      $mots_cles_chaine .= '\''.$item.'\',';
123
                  }
124
                  $mots_cles_chaine = rtrim($mots_cles_chaine,',');
125
 
126
                  $req_mots_cles = 'SELECT cmc_mot_cle FROM cel_mots_cles_images WHERE cmc_id_mot_cle_utilisateur IN ('.$mots_cles_chaine.') AND cmc_id_proprietaire = "'.$row['ci_ce_utilisateur'].'"' ;
127
                    $res_mots_cles =& $DB->query($req_mots_cles);
128
 
129
                  if (DB::isError($res_mots_cles)) {
130
                        die($res_mots_cles->getMessage());
131
                  }
132
 
133
 
134
                  $mots_cles = '' ;
135
 
136
                  while($mot_cle = & $res_mots_cles->fetchrow(DB_FETCHMODE_ASSOC)) {
137
                      $mots_cles .= $mot_cle['cmc_mot_cle'].' , ' ;
138
                  }
139
 
140
                  $mots_cles = rtrim($mots_cles,', ');
141
 
142
                  if(trim($mots_cles) != '') {
143
                   // $rss .= 'Mot clés : '.mb_convert_encoding($mots_cles,'HTML-ENTITIES','UTF-8').' <br/>' ;
144
                  }
145
              }
146
 
147
              if(trim($row['ci_meta_comment']) != '') {
148
                 // $rss .= 'Commentaire : '.mb_convert_encoding($row['ci_meta_comment'],'HTML-ENTITIES','UTF-8').' <br/>';
149
              }
150
 
151
             /* while($ligne = & $res_liaison->fetchrow(DB_FETCHMODE_ASSOC)) {
152
                  $rss .= '<p> Liée à l\'observation '.$ligne['id'].'<br/>'  ;
153
                  $rss .= 'Nom saisi : '.$ligne['nom_sel'].'<br/>'  ;
154
                  $rss .= 'Nom retenu : '.$ligne['nom_ret'].'<br/>'  ;
155
                  $rss .= 'Datée du '.$ligne['date_observation'].'<br/>'  ;
156
                  $rss .= 'Lieu : '.trim($ligne['location'],'000null').' ('.trim($ligne['id_location'],'000null').') '.trim($ligne['station'],'000null').' '.trim($ligne['lieudit'],'000null').'<br/></p>'  ;
157
              }*/
158
              $rss .= ']]>' ;
159
              $rss .= '</description>
160
                <dc:format>text/html</dc:format>
161
             </item>';
162
        }
163
 
164
        $rss.= '</channel> </rss>';
165
 
166
 
167
        header("Content-Type: text/xml; charset=UTF-8");
168
        print $rss;
169
        exit;
170
    }
171
 
172
 
173
    function getRessource(){
174
 
175
            $uid[] = array() ;
176
            $this->getElement($uid);
177
        }
178
 
179
    function calculerDimensions($tailleXY) {
180
 
181
        $tailleOr = 300 ;
182
 
183
        if($tailleXY[1] == 0) {
184
            $tailleXY[1] = $tailleOr;
185
        }
186
 
187
        if($tailleXY[0] == 0) {
188
            $tailleXY[0] = $tailleOr;
189
        }
190
 
191
        $maxTaille = max($tailleXY[1],$tailleXY[0]) ;
192
 
193
        if($maxTaille == $tailleXY[1]) {
194
 
195
            $rapport = $tailleXY[1]/$tailleXY[0] ;
196
            $tailleXY[1] = 300 ;
197
            $tailleXY[0] = round($tailleXY[1]/$rapport,0) ;
198
 
199
        }else {
200
            $rapport = $tailleXY[0]/$tailleXY[1] ;
201
            $tailleXY[0] = 300 ;
202
            $tailleXY[1] = round($tailleXY[0]/$rapport,0) ;
203
        }
204
 
205
        return $tailleXY ;
206
    }
207
}
208
 
209
 
210
/* +--Fin du code ---------------------------------------------------------------------------------------+
211
* $Log$
212
* Revision 1.5  2008-11-13 11:29:12  ddelon
213
* Reecriture gwt-ext
214
*
215
* Revision 1.4  2007-06-06 13:31:16  ddelon
216
* v0.09
217
*
218
* Revision 1.3  2007-05-22 12:54:09  ddelon
219
* Securisation acces utilisateur
220
*
221
*
222
*
223
*/
224
 
225
?>