Subversion Repositories eFlore/Applications.cel

Rev

Rev 1078 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1078 Rev 1277
1
<?php
1
<?php
2
 
2
 
3
// In : utf8
3
// In : utf8
4
// Out : iso8859
4
// Out : iso8859
5
 
5
 
6
// Export vers feuille de calcul d'une selection de releves
6
// Export vers feuille de calcul d'une selection de releves
7
 
7
 
8
Class InventoryExport extends DBAccessor  {
8
Class InventoryExport extends DBAccessor  {
9
 
9
 
10
 
10
 
11
	var $config;
11
	var $config;
12
	var $extendSpreadsheetProductor;
12
	var $extendSpreadsheetProductor;
13
 
13
 
14
	function InventoryExport($config) {
14
	function InventoryExport($config) {
15
 
15
 
16
		$this->config=$config;
16
		$this->config=$config;
17
		// Pas d'heritage multiple en php :(
17
		// Pas d'heritage multiple en php :(
18
 
18
 
19
 
19
 
20
		$this->extendSpreadsheetProductor = new SpreadsheetProductor();
20
		$this->extendSpreadsheetProductor = new SpreadsheetProductor();
21
		$this->extendSpreadsheetProductor->initSpreadsheet();
21
		$this->extendSpreadsheetProductor->initSpreadsheet();
22
	}
22
	}
23
 
23
 
24
 
24
 
25
	function getElement($uid){
25
	function getElement($uid){
26
 
26
 
27
		   // Controle detournement utilisateur
27
		   // Controle detournement utilisateur
28
			if(!isset($_SESSION)) {session_start();}
28
			if(!isset($_SESSION)) {session_start();}
29
		 	$this->controleUtilisateur($uid[0]);
29
		 	$this->controleUtilisateur($uid[0]);
30
 
30
 
31
			$DB=$this->connectDB($this->config,'database_cel');
31
			$DB=$this->connectDB($this->config,'database_cel');
32
 
32
 
33
 
33
 
34
			$criteres = array() ;
34
			$criteres = array() ;
35
 
35
 
36
			if(isset($uid[1]))
36
			if(isset($uid[1]))
37
			{
37
			{
38
				$criteres = explode("&", $uid[1]) ;
38
				$criteres = explode("&", $uid[1]) ;
39
			}
39
			}
40
 
40
 
41
			$query="SELECT identifiant, ordre, nom_sel, num_nom_sel, nom_ret, num_nom_ret, num_taxon, famille, location, id_location, date_observation," .
41
			$query="SELECT id, identifiant, ordre, nom_sel, num_nom_sel, nom_ret, num_nom_ret, num_taxon, famille, location, id_location, date_observation," .
42
		           " lieudit, station, milieu, commentaire, transmission, coord_x, coord_y, ref_geo FROM cel_inventory WHERE identifiant='".$DB->escapeSimple($uid[0])."' AND " ;
42
		           " lieudit, station, milieu, commentaire, transmission, coord_x, coord_y, ref_geo FROM cel_inventory WHERE identifiant='".$DB->escapeSimple($uid[0])."' AND " ;
43
 
43
 
44
 
44
 
45
 
45
 
46
			foreach($criteres as $pair)
46
			foreach($criteres as $pair)
47
			{
47
			{
48
				$nom_valeur = explode("=",$pair) ;
48
				$nom_valeur = explode("=",$pair) ;
49
 
49
 
50
 
50
 
51
				if(sizeof($nom_valeur) != 0) {
51
				if(sizeof($nom_valeur) != 0) {
52
 
52
 
53
					if($nom_valeur[0] == 'limite')
53
					if($nom_valeur[0] == 'limite')
54
					{
54
					{
55
						$limite = $DB->escapeSimple($nom_valeur[1]) ;
55
						$limite = $DB->escapeSimple($nom_valeur[1]) ;
56
					}
56
					}
57
					elseif($nom_valeur[0] == 'numero_page') {
57
					elseif($nom_valeur[0] == 'numero_page') {
58
						$numero_page = $DB->escapeSimple($nom_valeur[1]) ;
58
						$numero_page = $DB->escapeSimple($nom_valeur[1]) ;
59
					}
59
					}
60
					elseif($nom_valeur[0] == 'annee') {
60
					elseif($nom_valeur[0] == 'annee') {
61
						$query .= "year(date_observation) = '".$DB->escapeSimple($nom_valeur[1])."'" ;
61
						$query .= "year(date_observation) = '".$DB->escapeSimple($nom_valeur[1])."'" ;
62
						$query .= ' AND ' ;
62
						$query .= ' AND ' ;
63
					}
63
					}
64
					elseif($nom_valeur[0] == 'mois') {
64
					elseif($nom_valeur[0] == 'mois') {
65
						$query .= "month(date_observation) = '".$DB->escapeSimple($nom_valeur[1])."'" ;
65
						$query .= "month(date_observation) = '".$DB->escapeSimple($nom_valeur[1])."'" ;
66
						$query .= ' AND ' ;
66
						$query .= ' AND ' ;
67
					}
67
					}
68
					elseif($nom_valeur[0] == 'jour') {
68
					elseif($nom_valeur[0] == 'jour') {
69
						$query .= "day(date_observation) = '".$DB->escapeSimple($nom_valeur[1])."'" ;
69
						$query .= "day(date_observation) = '".$DB->escapeSimple($nom_valeur[1])."'" ;
70
						$query .= ' AND ' ;
70
						$query .= ' AND ' ;
71
					}
71
					}
72
                    elseif($nom_valeur[0] == 'mots_cles') {
72
                    elseif($nom_valeur[0] == 'mots_cles') {
73
                        $liste_mc = explode(";",$nom_valeur[1]);
73
                        $liste_mc = explode(";",$nom_valeur[1]);
74
                        $query .= '(' ;
74
                        $query .= '(' ;
75
                        foreach($liste_mc as $mot) {
75
                        foreach($liste_mc as $mot) {
76
                                if(trim($mot) != '')
76
                                if(trim($mot) != '')
77
                                {
77
                                {
78
                                  $query .= "mots_cles LIKE '%".$DB->escapeSimple($mot)."%' OR " ;
78
                                  $query .= "mots_cles LIKE '%".$DB->escapeSimple($mot)."%' OR " ;
79
                                }
79
                                }
80
                        }
80
                        }
81
                        $query = rtrim($query,' OR ');
81
                        $query = rtrim($query,' OR ');
82
                        $query .= ') AND ' ;
82
                        $query .= ') AND ' ;
83
                    }
83
                    }
84
                    elseif ($nom_valeur[0] == 'nom_taxon') {
84
                    elseif ($nom_valeur[0] == 'nom_taxon') {
85
                    	$nom_valeur[1] = str_replace("*","%",$nom_valeur[1]);
85
                    	$nom_valeur[1] = str_replace("*","%",$nom_valeur[1]);
86
                    	$query .= "(nom_sel LIKE '%".$DB->escapeSimple($nom_valeur[1]).
86
                    	$query .= "(nom_sel LIKE '%".$DB->escapeSimple($nom_valeur[1]).
87
									"%' OR identifiant LIKE '%".$DB->escapeSimple($nom_valeur[1]).
87
									"%' OR identifiant LIKE '%".$DB->escapeSimple($nom_valeur[1]).
88
									"%' OR ordre LIKE '%".$DB->escapeSimple($nom_valeur[1]).
88
									"%' OR ordre LIKE '%".$DB->escapeSimple($nom_valeur[1]).
89
									"%' OR nom_sel LIKE '%".$DB->escapeSimple($nom_valeur[1]).
89
									"%' OR nom_sel LIKE '%".$DB->escapeSimple($nom_valeur[1]).
90
									"%' OR num_nom_sel LIKE '%".$DB->escapeSimple($nom_valeur[1]).
90
									"%' OR num_nom_sel LIKE '%".$DB->escapeSimple($nom_valeur[1]).
91
									"%' OR nom_ret LIKE '%".$DB->escapeSimple($nom_valeur[1]).
91
									"%' OR nom_ret LIKE '%".$DB->escapeSimple($nom_valeur[1]).
92
									"%' OR num_nom_ret LIKE '%".$DB->escapeSimple($nom_valeur[1]).
92
									"%' OR num_nom_ret LIKE '%".$DB->escapeSimple($nom_valeur[1]).
93
									"%' OR num_taxon LIKE '%".$DB->escapeSimple($nom_valeur[1]).
93
									"%' OR num_taxon LIKE '%".$DB->escapeSimple($nom_valeur[1]).
94
									"%' OR location LIKE '%".$DB->escapeSimple($nom_valeur[1]).
94
									"%' OR location LIKE '%".$DB->escapeSimple($nom_valeur[1]).
95
									"%' OR id_location LIKE '%".$DB->escapeSimple($nom_valeur[1]).
95
									"%' OR id_location LIKE '%".$DB->escapeSimple($nom_valeur[1]).
96
									"%' OR date_observation LIKE '%".$DB->escapeSimple($nom_valeur[1]).
96
									"%' OR date_observation LIKE '%".$DB->escapeSimple($nom_valeur[1]).
97
									"%' OR lieudit LIKE '%".$DB->escapeSimple($nom_valeur[1]).
97
									"%' OR lieudit LIKE '%".$DB->escapeSimple($nom_valeur[1]).
98
									"%' OR station LIKE '%".$DB->escapeSimple($nom_valeur[1]).
98
									"%' OR station LIKE '%".$DB->escapeSimple($nom_valeur[1]).
99
									"%' OR milieu LIKE '%".$DB->escapeSimple($nom_valeur[1]).
99
									"%' OR milieu LIKE '%".$DB->escapeSimple($nom_valeur[1]).
100
									"%' OR commentaire LIKE '%".$DB->escapeSimple($nom_valeur[1]).
100
									"%' OR commentaire LIKE '%".$DB->escapeSimple($nom_valeur[1]).
101
									"%' OR transmission LIKE '%".$DB->escapeSimple($nom_valeur[1]).
101
									"%' OR transmission LIKE '%".$DB->escapeSimple($nom_valeur[1]).
102
									"%' OR coord_x LIKE '%".$DB->escapeSimple($nom_valeur[1]).
102
									"%' OR coord_x LIKE '%".$DB->escapeSimple($nom_valeur[1]).
103
									"%' OR coord_y LIKE '%".$DB->escapeSimple($nom_valeur[1]).
103
									"%' OR coord_y LIKE '%".$DB->escapeSimple($nom_valeur[1]).
104
									"%')";
104
									"%')";
105
 
105
 
106
									//"%' OR famille LIKE '%".$DB->escapeSimple($nom_valeur[1]).
106
									//"%' OR famille LIKE '%".$DB->escapeSimple($nom_valeur[1]).
107
                    }
107
                    }
108
					else {
108
					else {
109
						if(trim($nom_valeur[0]) != '')
109
						if(trim($nom_valeur[0]) != '')
110
						{
110
						{
111
						$query .= $nom_valeur[0]." = '".$DB->escapeSimple($nom_valeur[1])."'" ;
111
						$query .= $nom_valeur[0]." = '".$DB->escapeSimple($nom_valeur[1])."'" ;
112
						$query .= ' AND ' ;
112
						$query .= ' AND ' ;
113
						}
113
						}
114
					}
114
					}
115
				}
115
				}
116
			}
116
			}
117
 
117
 
118
			$query = rtrim($query,' AND ') ;
118
			$query = rtrim($query,' AND ') ;
119
 
119
 
120
 
120
 
121
			$query .=" ORDER BY ordre ";
121
			$query .=" ORDER BY ordre ";
122
 
122
 
123
       	    $res =& $DB->query($query);
123
       	    $res =& $DB->query($query);
124
 
124
 
125
 
125
 
126
			if (DB::isError($res)) {
126
			if (DB::isError($res)) {
127
			     die($res->getMessage());
127
			     die($res->getMessage());
128
			}
128
			}
129
 
129
 
130
 
130
 
131
 
131
 
132
    	    // Creating a workbook
132
    	    // Creating a workbook
133
			$workbook = new Spreadsheet_Excel_Writer();
133
			$workbook = new Spreadsheet_Excel_Writer();
134
 
134
 
135
 
135
 
136
			$workbook->send('liste.xls');
136
			$workbook->send('liste.xls');
137
 
137
 
138
			// Creating a worksheet
138
			// Creating a worksheet
139
			$worksheet = $workbook->addWorksheet('Liste');
139
			$worksheet = $workbook->addWorksheet('Liste');
140
			
140
			
141
            $worksheet->write(0,0,'Espece');
141
            $worksheet->write(0,0,'Espece');
142
            $worksheet->write(0,1,'Numero nomenclatural');
142
            $worksheet->write(0,1,'Numero nomenclatural');
143
            $worksheet->write(0,2,'Nom retenu');
143
            $worksheet->write(0,2,'Nom retenu');
144
            $worksheet->write(0,3,'Numero nomenclatural nom retenu');
144
            $worksheet->write(0,3,'Numero nomenclatural nom retenu');
145
            $worksheet->write(0,4,'Numero taxonomique');
145
            $worksheet->write(0,4,'Numero taxonomique');
146
            $worksheet->write(0,5,'Famille');
146
            $worksheet->write(0,5,'Famille');
147
            $worksheet->write(0,6,'Commune');
147
            $worksheet->write(0,6,'Commune');
148
            $worksheet->write(0,7,'Identifiant Commune');
148
            $worksheet->write(0,7,'Identifiant Commune');
149
            $worksheet->write(0,8,'Date');
149
            $worksheet->write(0,8,'Date');
150
            $worksheet->write(0,9,'Lieu-dit');
150
            $worksheet->write(0,9,'Lieu-dit');
151
            $worksheet->write(0,10,'Station');
151
            $worksheet->write(0,10,'Station');
152
            $worksheet->write(0,11,'Milieu');
152
            $worksheet->write(0,11,'Milieu');
153
            $worksheet->write(0,12,'Notes');
153
            $worksheet->write(0,12,'Notes');
154
            $worksheet->write(0,13,'Latitude');
154
            $worksheet->write(0,13,'Latitude');
155
            $worksheet->write(0,14,'Longitude');
155
            $worksheet->write(0,14,'Longitude');
156
            $worksheet->write(0,15,'Referentiel Geographique');
156
            $worksheet->write(0,15,'Referentiel Geographique');
-
 
157
            $worksheet->write(0,16,'Ordre');
-
 
158
            $worksheet->write(0,17,'Identifiant');
157
 
159
 
158
 
160
 
159
 
161
 
160
			$i=1;
162
			$i=1;
161
			 while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
163
			 while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
162
 
164
 
163
			 	// Denullifiage
165
			 	// Denullifiage
164
				foreach($row as $k=>$v) {
166
				foreach($row as $k=>$v) {
165
					if (($v=="null") || ($v=="000null")) {
167
					if (($v=="null") || ($v=="000null")) {
166
						$row[$k]="";
168
						$row[$k]="";
167
					}
169
					}
168
					else {
170
					else {
169
						$row[$k]=utf8_decode($v);
171
						$row[$k]=utf8_decode($v);
170
					}
172
					}
171
				}
173
				}
172
 
174
 
173
 
175
 
174
			  	if ($row['date_observation']!="0000-00-00 00:00:00") {
176
			  	if ($row['date_observation']!="0000-00-00 00:00:00") {
175
	                list($year,$month,$day)= split ('-',$row['date_observation']);
177
	                list($year,$month,$day)= split ('-',$row['date_observation']);
176
    	            list($day)= split (' ',$day);
178
    	            list($day)= split (' ',$day);
177
	                $row['date_observation']=$day."/".$month."/".$year;
179
	                $row['date_observation']=$day."/".$month."/".$year;
178
	        	}
180
	        	}
179
	        	else {
181
	        	else {
180
	                $row['date_observation']="00/00/0000";
182
	                $row['date_observation']="00/00/0000";
181
	        	}
183
	        	}
182
 
184
 
183
 
185
 
184
                $worksheet->write($i,0,$row['nom_sel']);
186
                $worksheet->write($i,0,$row['nom_sel']);
185
                $worksheet->write($i,1,$row['num_nom_sel']);
187
                $worksheet->write($i,1,$row['num_nom_sel']);
186
                $worksheet->write($i,2,$row['nom_ret']);
188
                $worksheet->write($i,2,$row['nom_ret']);
187
                $worksheet->write($i,3,$row['num_nom_ret']);
189
                $worksheet->write($i,3,$row['num_nom_ret']);
188
                $worksheet->write($i,4,$row['num_taxon']);
190
                $worksheet->write($i,4,$row['num_taxon']);
189
                $worksheet->write($i,5,$row['famille']);
191
                $worksheet->write($i,5,$row['famille']);
190
                $worksheet->write($i,6,$row['location']);
192
                $worksheet->write($i,6,$row['location']);
191
                $worksheet->write($i,7,$row['id_location']);
193
                $worksheet->write($i,7,$row['id_location']);
192
                $worksheet->write($i,8,$row['date_observation']);
194
                $worksheet->write($i,8,$row['date_observation']);
193
                $worksheet->write($i,9,$row['lieudit']);
195
                $worksheet->write($i,9,$row['lieudit']);
194
                $worksheet->write($i,10,$row['station']);
196
                $worksheet->write($i,10,$row['station']);
195
                $worksheet->write($i,11,$row['milieu']);
197
                $worksheet->write($i,11,$row['milieu']);
196
                $worksheet->write($i,12,$row['commentaire']);
198
                $worksheet->write($i,12,$row['commentaire']);
197
                $worksheet->write($i,13,$row['coord_x']);
199
                $worksheet->write($i,13,$row['coord_x']);
198
                $worksheet->write($i,14,$row['coord_y']);
200
                $worksheet->write($i,14,$row['coord_y']);
199
                $worksheet->write($i,15,$row['ref_geo']);
201
                $worksheet->write($i,15,$row['ref_geo']);
-
 
202
                $worksheet->write($i,16,$row['ordre']);
-
 
203
                $worksheet->write($i,17,$row['id']);
200
                $i++;
204
                $i++;
201
    	    }
205
    	    }
202
 
206
 
203
			$workbook->close();
207
			$workbook->close();
204
 
208
 
205
			exit();
209
			exit();
206
 
210
 
207
 
211
 
208
	}
212
	}
209
 
213
 
210
 
214
 
211
 
215
 
212
}
216
}
213
 
217
 
214
 
218
 
215
/* +--Fin du code ---------------------------------------------------------------------------------------+
219
/* +--Fin du code ---------------------------------------------------------------------------------------+
216
* $Log$
220
* $Log$
217
* Revision 1.7  2008-11-13 11:29:12  ddelon
221
* Revision 1.7  2008-11-13 11:29:12  ddelon
218
* Reecriture gwt-ext
222
* Reecriture gwt-ext
219
*
223
*
220
* Revision 1.6  2008-01-30 08:57:28  ddelon
224
* Revision 1.6  2008-01-30 08:57:28  ddelon
221
* fin mise en place mygwt
225
* fin mise en place mygwt
222
*
226
*
223
* Revision 1.5  2007-06-06 13:31:16  ddelon
227
* Revision 1.5  2007-06-06 13:31:16  ddelon
224
* v0.09
228
* v0.09
225
*
229
*
226
* Revision 1.4  2007-05-22 12:54:09  ddelon
230
* Revision 1.4  2007-05-22 12:54:09  ddelon
227
* Securisation acces utilisateur
231
* Securisation acces utilisateur
228
*
232
*
229
*
233
*
230
*
234
*
231
*/
235
*/
232
 
236
 
233
 
237
 
234
?>
238
?>