Subversion Repositories eFlore/Applications.coel

Rev

Rev 1497 | Rev 1529 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1497 Rev 1527
Line 13... Line 13...
13
 * @version $Id$
13
 * @version $Id$
14
 * @copyright 2009
14
 * @copyright 2009
15
 */
15
 */
16
class CoelStatistique extends Coel {
16
class CoelStatistique extends Coel {
Line -... Line 17...
-
 
17
	
-
 
18
	const META_CODE_FRANCE = 2654;
-
 
19
	const META_LISTE_SIECLE = 1040;// Liste des siècles pour les collections naturalistes
17
	
20
	const META_LISTE_TYPE_HERBIER = 1083;// Liste des types de collection botanique 
Line 18... Line 21...
18
	private $parametres = array();
21
	private $parametres = array();
19
	
22
	
20
	/**
23
	/**
Line 176... Line 179...
176
		// Retour du html contenant l'image
179
		// Retour du html contenant l'image
177
		return '<img src="'.$url.'"/>';
180
		return '<img src="'.$url.'"/>';
178
	}
181
	}
Line 179... Line 182...
179
	
182
	
-
 
183
	private function getNombreCollectionParStructure() {
-
 
184
		// Récupération des paramêtres
-
 
185
		$projet_id = (isset($this->parametres[0]) ? $this->bdd->quote($this->parametres[0]) : null);
180
	private function getNombreCollectionParStructure() {
186
		
181
		// Récupération des données
187
		// Récupération des données
182
		$requete = 	'SELECT COUNT(cc_id_collection) AS nbre '.
188
		$requete = 	'SELECT COUNT(cc_id_collection) AS nbre '.
-
 
189
					'FROM coel_collection '.
183
					'FROM coel_collection '.
190
					( is_null($projet_id) ? '' : "WHERE cc_ce_projet = $projet_id ").
-
 
191
					'GROUP BY cc_ce_structure ';
184
					'GROUP BY cc_ce_structure';
192
		
185
		try {
193
		try {
186
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
194
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
187
			if ($infos === false) {
195
			if ($infos === false) {
-
 
196
				$this->messages[] = "La requête a retourné aucun résultat.";
-
 
197
			} else if (count($infos) == 0) {
188
				$this->messages[] = "La requête a retourné aucun résultat.";
198
				$this->messages[] = "Aucune collection n'est référencée dans ce projet.";
189
			}
199
			}
190
		} catch (PDOException $e) {
200
		} catch (PDOException $e) {
191
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
201
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
Line 226... Line 236...
226
		//$legende = implode('|', array_keys($donnees));
236
		//$legende = implode('|', array_keys($donnees));
Line 227... Line 237...
227
		
237
		
228
		// Construire de l'url de l'image
238
		// Construire de l'url de l'image
229
		$url = 'http://chart.apis.google.com/chart?'.
239
		$url = 'http://chart.apis.google.com/chart?'.
230
			'cht=p3'.
240
			'cht=p3'.
231
			'&chs=350x150'.
241
			'&chs=400x150'.
232
			'&chco=4D89F9'.
242
			'&chco=4D89F9'.
233
			'&chd=t:'.$valeurs.
243
			'&chd=t:'.$valeurs.
234
			'&chds=0,'.max($donnees).
244
			'&chds=0,'.max($donnees).
235
			'&chl='.$etiquettes.
245
			'&chl='.$etiquettes.
236
			'&chtt='.$titre.
246
			'&chtt='.$titre.
Line 237... Line 247...
237
			'&chts=000000,12';
247
			'&chts=000000,12';
-
 
248
		
-
 
249
		// Retour du html contenant l'image
-
 
250
		$sortie = '<img src="'.$url.'"/>';
-
 
251
		$this->envoyerHTML($sortie);
-
 
252
	}
-
 
253
	
-
 
254
	private function getNombrePartParStructure() {
-
 
255
		// Récupération des paramêtres
-
 
256
		$projet_id = (isset($this->parametres[0]) ? $this->bdd->quote($this->parametres[0]) : null);
-
 
257
		
-
 
258
		// Récupération des données
-
 
259
		$requete = 	'SELECT cc_ce_structure, ccb_truk_unite_base '.
-
 
260
					'FROM coel_collection_botanique '.
-
 
261
					'	LEFT JOIN coel_collection ON (ccb_id_collection = cc_id_collection) '.
-
 
262
					( is_null($projet_id) ? '' : "WHERE cc_ce_projet = $projet_id ");
-
 
263
		
-
 
264
		try {
-
 
265
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
-
 
266
			if ($infos === false) {
-
 
267
				$this->messages[] = "La requête a retourné aucun résultat.";
-
 
268
			} else if (count($infos) == 0) {
-
 
269
				$this->messages[] = "Aucune collection n'est référencée dans ce projet.";
-
 
270
			}
-
 
271
		} catch (PDOException $e) {
-
 
272
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
-
 
273
		}
-
 
274
		
-
 
275
		// Post traitement des données de la base de données
-
 
276
		// Extraction du nombre de part
-
 
277
		$structures = array();
-
 
278
		foreach ($infos as $info) {
-
 
279
			$structures[$info['cc_ce_structure']] = $this->extraireNbrePart($info['ccb_truk_unite_base']);
-
 
280
		}
-
 
281
 
-
 
282
		// Triage par classe
-
 
283
		$donnees = array(	'0 part' => 0, 
-
 
284
							'Entre 1 et 100' => 0, 
-
 
285
							'Entre 101 et 1000' => 0,
-
 
286
							'Entre 1001 et 10.000' => 0,
-
 
287
							'Entre 10.001 et 100.000' => 0,
-
 
288
							'Entre 100.001 et 300.000' => 0,
-
 
289
							'Supérieur à 301.000' => 0);
-
 
290
		foreach ($structures as $nbre) {
-
 
291
			if ($nbre == 0) {
-
 
292
				$donnees['0 part']++;
-
 
293
			} else if ($nbre >= 1 && $nbre <= 100) {
-
 
294
				$donnees['Entre 1 et 100']++;
-
 
295
			} else if ($nbre >= 101 && $nbre <= 1000) {
-
 
296
				$donnees['Entre 101 et 1000']++;
-
 
297
			} else if ($nbre >= 1001 && $nbre <= 10000) {
-
 
298
				$donnees['Entre 1001 et 10.000']++;
-
 
299
			} else if ($nbre >= 10001 && $nbre <= 100000) {
-
 
300
				$donnees['Entre 10.001 et 100.000']++;
-
 
301
			} else if ($nbre >= 100001 && $nbre <= 300000) {
-
 
302
				$donnees['Entre 100.001 et 300.000']++;
-
 
303
			} else if ($nbre >= 300001) {
-
 
304
				$donnees['Supérieur à 301.000']++;
-
 
305
			}
-
 
306
		}
-
 
307
		
-
 
308
		$donnees_tmp = $donnees;
-
 
309
		$donnees = array();
-
 
310
		foreach ($donnees_tmp as $cle => $valeur) {
-
 
311
			$donnees[$cle.' ('.$valeur.')'] = $valeur;
-
 
312
		}
-
 
313
		$legende = implode('|', array_keys($donnees));
-
 
314
		asort($donnees);
-
 
315
		$valeurs = implode(',', $donnees);
-
 
316
		$titre = str_replace(' ', '+', 'Nombre de parts conservées |par institution');
-
 
317
				
-
 
318
		// Construire de l'url de l'image
-
 
319
		$url = 'http://chart.apis.google.com/chart?'.
-
 
320
			'cht=p3'.
-
 
321
			'&chs=400x225'.
-
 
322
			'&chco=4D89F9'.
-
 
323
			'&chd=t:'.$valeurs.
-
 
324
			'&chds=0,'.max($donnees).
-
 
325
			'&chdl='.$legende.
-
 
326
			'&chdlp=r,0,1,2,3,4,5'.
-
 
327
			'&chtt='.$titre.
-
 
328
			'&chts=000000,11.5'.
-
 
329
			'&chts=000000,12';
238
		
330
		
-
 
331
		// Retour du html contenant l'image
-
 
332
		$sortie = '<img src="'.$url.'"/>';
-
 
333
		$this->envoyerHTML($sortie);
-
 
334
	}
-
 
335
	
-
 
336
	private function getNombrePartParCollection() {
-
 
337
		// Récupération des paramêtres
-
 
338
		$projet_id = (isset($this->parametres[0]) ? $this->bdd->quote($this->parametres[0]) : null);
-
 
339
		
-
 
340
		// Récupération des données
-
 
341
		$requete = 	'SELECT ccb_truk_unite_base '.
-
 
342
					'FROM coel_collection_botanique '.
-
 
343
					( is_null($projet_id) ? '' : '	LEFT JOIN coel_collection ON (ccb_id_collection = cc_id_collection) ').
-
 
344
					( is_null($projet_id) ? '' : "WHERE cc_ce_projet = $projet_id ");
-
 
345
		
-
 
346
		try {
-
 
347
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
-
 
348
			if ($infos === false) {
-
 
349
				$this->messages[] = "La requête a retourné aucun résultat.";
-
 
350
			} else if (count($infos) == 0) {
-
 
351
				$this->messages[] = "Aucune collection n'est référencée dans ce projet.";
-
 
352
				$infos == false;
-
 
353
			}
-
 
354
		} catch (PDOException $e) {
-
 
355
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
-
 
356
		}
-
 
357
		
-
 
358
		$sortie = null;
-
 
359
		if ($infos !== false) {
-
 
360
			// Post traitement des données de la base de données
-
 
361
			// Extraction du nombre de part
-
 
362
			$collections = array();
-
 
363
			foreach ($infos as $info) {
-
 
364
				$collections[] = $this->extraireNbrePart($info['ccb_truk_unite_base']);
-
 
365
			}
-
 
366
	
-
 
367
			// Triage par classe
-
 
368
			$donnees = array(	'0 part' => 0, 
-
 
369
								'Entre 1 et 100' => 0, 
-
 
370
								'Entre 101 et 1000' => 0,
-
 
371
								'Entre 1001 et 10.000' => 0,
-
 
372
								'Entre 10.001 et 100.000' => 0,
-
 
373
								'Entre 100.001 et 300.000' => 0,
-
 
374
								'Supérieur à 301.000' => 0);
-
 
375
			foreach ($collections as $nbre) {
-
 
376
				if ($nbre == 0) {
-
 
377
					$donnees['0 part']++;
-
 
378
				} else if ($nbre >= 1 && $nbre <= 100) {
-
 
379
					$donnees['Entre 1 et 100']++;
-
 
380
				} else if ($nbre >= 101 && $nbre <= 1000) {
-
 
381
					$donnees['Entre 101 et 1000']++;
-
 
382
				} else if ($nbre >= 1001 && $nbre <= 10000) {
-
 
383
					$donnees['Entre 1001 et 10.000']++;
-
 
384
				} else if ($nbre >= 10001 && $nbre <= 100000) {
-
 
385
					$donnees['Entre 10.001 et 100.000']++;
-
 
386
				} else if ($nbre >= 100001 && $nbre <= 300000) {
-
 
387
					$donnees['Entre 100.001 et 300.000']++;
-
 
388
				} else if ($nbre >= 300001) {
-
 
389
					$donnees['Supérieur à 301.000']++;
-
 
390
				}
-
 
391
			}
-
 
392
			
-
 
393
			$donnees_tmp = $donnees;
-
 
394
			$donnees = array();
-
 
395
			foreach ($donnees_tmp as $cle => $valeur) {
-
 
396
				$donnees[$cle.' ('.$valeur.')'] = $valeur;
-
 
397
			}
-
 
398
			$legende = implode('|', array_keys($donnees));
-
 
399
			asort($donnees);
-
 
400
			$valeurs = implode(',', $donnees);
-
 
401
			$titre = str_replace(' ', '+', 'Nombre de parts conservées |par collection');
-
 
402
					
-
 
403
			// Construire de l'url de l'image
-
 
404
			$url = 'http://chart.apis.google.com/chart?'.
-
 
405
				'cht=p3'.
-
 
406
				'&chs=400x225'.
-
 
407
				'&chco=4D89F9'.
-
 
408
				'&chd=t:'.$valeurs.
-
 
409
				'&chds=0,'.max($donnees).
-
 
410
				'&chdl='.$legende.
-
 
411
				'&chdlp=r,0,1,2,3,4,5'.
-
 
412
				'&chtt='.$titre.
-
 
413
				'&chts=000000,11.5'.
-
 
414
				'&chts=000000,12';
-
 
415
			
-
 
416
			// Retour du html contenant l'image
-
 
417
			$sortie = '<img src="'.$url.'"/>';
-
 
418
		}
-
 
419
		$this->envoyerHTML($sortie);
-
 
420
	}
-
 
421
	
-
 
422
	private function getNombreCollectionParDepartement() {
-
 
423
		// Récupération des paramêtres
-
 
424
		$projet_id = (isset($this->parametres[0]) ? $this->bdd->quote($this->parametres[0]) : null);
-
 
425
		if ($projet_id !== null) {
-
 
426
			// Récupération des données
-
 
427
			$requete = 	'SELECT cs_code_postal '.
-
 
428
						'FROM coel_collection '.
-
 
429
						'	LEFT JOIN coel_structure ON (cc_ce_structure = cs_id_structure) '.
-
 
430
						'WHERE cs_ce_truk_pays = '.self::META_CODE_FRANCE.' '.
-
 
431
						( is_null($projet_id) ? '' : "	AND cc_ce_projet = $projet_id ");
-
 
432
			
-
 
433
			try {
-
 
434
				$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
-
 
435
				if ($infos === false) {
-
 
436
					$this->messages[] = "La requête a retourné aucun résultat.";
-
 
437
				} else if (count($infos) == 0) {
-
 
438
					$this->messages[] = "Aucune collection n'est référencée dans ce projet.";
-
 
439
					$infos == false;
-
 
440
				}
-
 
441
			} catch (PDOException $e) {
-
 
442
				$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
-
 
443
			}
-
 
444
			
-
 
445
			$sortie = null;
-
 
446
			if ($infos !== false) {
-
 
447
				// Post traitement des données de la base de données
-
 
448
				// Extraction du nombre de part
-
 
449
				$donnees = array();
-
 
450
				foreach ($infos as $info) {
-
 
451
					if (preg_match('/^([0-8][0-9]|9[0-5]|97[1-4]|976)/', $info['cs_code_postal'], $match)) {
-
 
452
						if (! isset($donnees[$match[1]])) {
-
 
453
							$donnees[$match[1]] = 1; 
-
 
454
						} else {
-
 
455
							$donnees[$match[1]]++;
-
 
456
						}
-
 
457
					}
-
 
458
				}
-
 
459
				
-
 
460
				$donnees_tmp = $donnees;
-
 
461
				$donnees = array();
-
 
462
				foreach ($donnees_tmp as $cle => $valeur) {
-
 
463
					$donnees[$cle.' ('.$valeur.' collections)'] = $valeur;
-
 
464
				}
-
 
465
				
-
 
466
				asort($donnees);
-
 
467
				$valeurs = implode(',', $donnees);
-
 
468
				$titre = str_replace(' ', '+', 'Nombre de collections conservées |par département');
-
 
469
				$legende = implode('|', array_keys($donnees));		
-
 
470
				// Construire de l'url de l'image
-
 
471
				$url = 'http://chart.apis.google.com/chart?'.
-
 
472
					'cht=p3'.
-
 
473
					'&chs=400x225'.
-
 
474
					'&chco=4D89F9'.
-
 
475
					'&chd=t:'.$valeurs.
-
 
476
					'&chds=0,'.max($donnees).
-
 
477
					'&chdl='.$legende.
-
 
478
					'&chtt='.$titre.
-
 
479
					'&chts=000000,11.5'.
-
 
480
					'&chts=000000,12';
-
 
481
				
-
 
482
				// Retour du html contenant l'image
-
 
483
				$sortie = '<img src="'.$url.'"/>';
-
 
484
			}
-
 
485
		} else {
-
 
486
			$this->messages[] = "Veuillez sélectionner un projet pour voir le graphique.";
-
 
487
		}
-
 
488
		$this->envoyerHTML($sortie);
-
 
489
	}
-
 
490
	
-
 
491
	private function getNombreCollectionParTypeStructure() {
-
 
492
		// Récupération des paramêtres
-
 
493
		$projet_id = (isset($this->parametres[0]) ? $this->bdd->quote($this->parametres[0]) : null);
-
 
494
 
-
 
495
		// Récupération des données
-
 
496
		$requete = 	'SELECT cmlv_prive.cmlv_nom AS type_prive, cmlv_public.cmlv_nom  AS type_public '.
-
 
497
					'FROM coel_collection '.
-
 
498
					'	LEFT JOIN coel_structure ON (cc_ce_structure = cs_id_structure) '.
-
 
499
					'	LEFT JOIN coel_meta_liste_valeur AS cmlv_prive ON (cs_ce_truk_type_prive = cmlv_prive.cmlv_id_valeur) '.
-
 
500
					'	LEFT JOIN coel_meta_liste_valeur AS cmlv_public ON (cs_ce_truk_type_public = cmlv_public.cmlv_id_valeur) '.
-
 
501
					( is_null($projet_id) ? '' : "WHERE cc_ce_projet = $projet_id ");
-
 
502
		
-
 
503
		try {
-
 
504
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
-
 
505
			if ($infos === false) {
-
 
506
				$this->messages[] = "La requête a retourné aucun résultat.";
-
 
507
			} else if (count($infos) == 0) {
-
 
508
				$this->messages[] = "Aucune collection n'est référencée dans ce projet.";
-
 
509
				$infos == false;
-
 
510
			}
-
 
511
		} catch (PDOException $e) {
-
 
512
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
-
 
513
		}
-
 
514
		//Coel::debug($infos);
-
 
515
		$sortie = null;
-
 
516
		if ($infos !== false) {
-
 
517
			// Post traitement des données de la base de données
-
 
518
			// Extraction du nombre de part
-
 
519
			$donnees = array();
-
 
520
			foreach ($infos as $info) {
-
 
521
				if ($info['type_prive'] != '') {
-
 
522
					$cle = $info['type_prive'].' [privé]'; 
-
 
523
				} else if ($info['type_public'] != '') {
-
 
524
					$cle = $info['type_public'].' [public]';
-
 
525
				}
-
 
526
				if (! isset($donnees[$cle])) {
-
 
527
					$donnees[$cle] = 1;
-
 
528
				} else {
-
 
529
					$donnees[$cle]++;
-
 
530
				}
-
 
531
			}
-
 
532
			
-
 
533
			$donnees_tmp = $donnees;
-
 
534
			$donnees = array();
-
 
535
			foreach ($donnees_tmp as $cle => $valeur) {
-
 
536
				$donnees[$cle.' ('.$valeur.')'] = $valeur;
-
 
537
			}
-
 
538
			
-
 
539
			asort($donnees);
-
 
540
			$valeurs = implode(',', $donnees);
-
 
541
			$titre = str_replace(' ', '+', "Collections conservées |par type d'institution");
-
 
542
			$legende = implode('|', array_keys($donnees));		
-
 
543
			// Construire de l'url de l'image
-
 
544
			$url = 'http://chart.apis.google.com/chart?'.
-
 
545
				'cht=p3'.
-
 
546
				'&chs=400x225'.
-
 
547
				'&chco=4D89F9'.
-
 
548
				'&chd=t:'.$valeurs.
-
 
549
				'&chds=0,'.max($donnees).
-
 
550
				'&chdl='.$legende.
-
 
551
				'&chtt='.$titre.
-
 
552
				'&chts=000000,11.5'.
-
 
553
				'&chts=000000,12';
-
 
554
			
-
 
555
			// Retour du html contenant l'image
-
 
556
			$sortie = '<img src="'.$url.'"/>';
-
 
557
		}
-
 
558
		$this->envoyerHTML($sortie);
-
 
559
	}
-
 
560
	
-
 
561
	private function getNombreCollectionParPeriode() {
-
 
562
		// Récupération des paramêtres
-
 
563
		$projet_id = (isset($this->parametres[0]) ? $this->bdd->quote($this->parametres[0]) : null);
-
 
564
 
-
 
565
		// Récupération des données
-
 
566
		$requete = 	'SELECT cc_truk_periode_constitution '.
-
 
567
					'FROM coel_collection '.
-
 
568
					( is_null($projet_id) ? '' : "WHERE cc_ce_projet = $projet_id ");
-
 
569
		try {
-
 
570
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
-
 
571
			if ($infos === false) {
-
 
572
				$this->messages[] = "La requête a retourné aucun résultat.";
-
 
573
			} else if (count($infos) == 0) {
-
 
574
				$this->messages[] = "Aucune collection n'est référencée dans ce projet.";
-
 
575
				$infos == false;
-
 
576
			}
-
 
577
		} catch (PDOException $e) {
-
 
578
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
-
 
579
		}
-
 
580
		//Coel::debug($infos);
-
 
581
		
-
 
582
		// Récupération des métadonnées nécessaires
-
 
583
		$requete = 	'SELECT cmlv_id_valeur, cmlv_nom, cmlv_abreviation '.
-
 
584
					'FROM coel_meta_liste_valeur '.
-
 
585
					'WHERE cmlv_ce_parent = '.self::META_LISTE_SIECLE.' ';
-
 
586
		try {
-
 
587
			$metadonnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
-
 
588
			if ($metadonnees === false) {
-
 
589
				$this->messages[] = "La requête de recherche des métadonnées a retourné aucun résultat.";
-
 
590
			}
-
 
591
		} catch (PDOException $e) {
-
 
592
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
-
 
593
		}
-
 
594
		
-
 
595
		$sortie = null;
-
 
596
		if ($infos !== false) {
-
 
597
			// Traitement des métadonées
-
 
598
			$periodes = array(0 => array('nom' => 'Non renseigné', 'abr' => 0));
-
 
599
			foreach ($metadonnees as $meta) {
-
 
600
				$periodes[$meta['cmlv_id_valeur']] = array('nom' => $meta['cmlv_nom'], 'abr' => $meta['cmlv_abreviation']);
-
 
601
			}
-
 
602
			
-
 
603
			// Post traitement des données de la base de données
-
 
604
			$donnees = array();
-
 
605
			foreach ($infos as $info) {
-
 
606
				// Récupération de la période de début de constitution
-
 
607
				$truk_periodes = explode(';;', $info['cc_truk_periode_constitution']);
-
 
608
				$periode_abr_mini = 10;
-
 
609
				$periode_id_mini = 0;
-
 
610
				foreach ($truk_periodes as $periode_id) {
-
 
611
					if (! empty($periode_id)) {
-
 
612
						if ($periode_abr_mini > $periodes[$periode_id]['abr']) {
-
 
613
							$periode_abr_mini = $periodes[$periode_id]['abr'];
-
 
614
							$periode_id_mini = $periode_id;
-
 
615
						}
-
 
616
					}
-
 
617
				}
-
 
618
				
-
 
619
				// Augmentation du nombre de collection par période 
-
 
620
				if (! isset($donnees[$periodes[$periode_id_mini]['nom']])) {
-
 
621
					$donnees[$periodes[$periode_id_mini]['nom']] = 1;
-
 
622
				} else {
-
 
623
					$donnees[$periodes[$periode_id_mini]['nom']]++;
-
 
624
				}
-
 
625
			}
-
 
626
			
-
 
627
			$donnees_tmp = $donnees;
-
 
628
			$donnees = array();
-
 
629
			foreach ($donnees_tmp as $cle => $valeur) {
-
 
630
				$donnees[$cle.' ('.$valeur.')'] = $valeur;
-
 
631
			}
-
 
632
			
-
 
633
			asort($donnees);
-
 
634
			$valeurs = implode(',', $donnees);
-
 
635
			$titre = str_replace(' ', '+', "Collections recensées par|siècle de constitution");
-
 
636
			$legende = implode('|', array_keys($donnees));
-
 
637
			// Construire de l'url de l'image
-
 
638
			$url = 'http://chart.apis.google.com/chart?'.
-
 
639
				'cht=p3'.
-
 
640
				'&chs=400x225'.
-
 
641
				'&chco=4D89F9'.
-
 
642
				'&chd=t:'.$valeurs.
-
 
643
				'&chds=0,'.max($donnees).
-
 
644
				'&chdl='.$legende.
-
 
645
				'&chtt='.$titre.
-
 
646
				'&chts=000000,11.5'.
-
 
647
				'&chts=000000,12';
-
 
648
			
-
 
649
			// Retour du html contenant l'image
-
 
650
			$sortie = '<img src="'.$url.'"/>';
-
 
651
		}
-
 
652
		$this->envoyerHTML($sortie);
-
 
653
	}
-
 
654
	
-
 
655
	private function getNombreHerbierParType() {
-
 
656
		// Récupération des paramêtres
-
 
657
		$projet_id = (isset($this->parametres[0]) ? $this->bdd->quote($this->parametres[0]) : null);
-
 
658
 
-
 
659
		// Récupération des données
-
 
660
		$requete = 	'SELECT ccb_ce_truk_type '.
-
 
661
					'FROM coel_collection_botanique '.
-
 
662
					( is_null($projet_id) ? '' : '	LEFT JOIN coel_collection ON (ccb_id_collection = cc_id_collection) ').
-
 
663
					( is_null($projet_id) ? '' : "WHERE cc_ce_projet = $projet_id ");
-
 
664
		try {
-
 
665
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
-
 
666
			if ($infos === false) {
-
 
667
				$this->messages[] = "La requête a retourné aucun résultat.";
-
 
668
			} else if (count($infos) == 0) {
-
 
669
				$this->messages[] = "Aucune collection n'est référencée dans ce projet.";
-
 
670
				$infos == false;
-
 
671
			}
-
 
672
		} catch (PDOException $e) {
-
 
673
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
-
 
674
		}
-
 
675
		//Coel::debug($infos);
-
 
676
		
-
 
677
		// Récupération des métadonnées nécessaires
-
 
678
		$requete = 	'SELECT cmlv_id_valeur, cmlv_nom, cmlv_abreviation '.
-
 
679
					'FROM coel_meta_liste_valeur '.
-
 
680
					'WHERE cmlv_ce_parent = '.self::META_LISTE_TYPE_HERBIER.' ';
-
 
681
		try {
-
 
682
			$metadonnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
-
 
683
			if ($metadonnees === false) {
-
 
684
				$this->messages[] = "La requête de recherche des métadonnées a retourné aucun résultat.";
-
 
685
			}
-
 
686
		} catch (PDOException $e) {
-
 
687
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
-
 
688
		}
-
 
689
		
-
 
690
		$sortie = null;
-
 
691
		if ($infos !== false) {
-
 
692
			// Traitement des métadonées
-
 
693
			$types = array(0 => array('nom' => 'Non renseigné', 'abr' => 'NR'));
-
 
694
			foreach ($metadonnees as $meta) {
-
 
695
				$types[$meta['cmlv_id_valeur']] = array('nom' => $meta['cmlv_nom'], 'abr' => $meta['cmlv_abreviation']);
-
 
696
			}
-
 
697
			
-
 
698
			// Post traitement des données de la base de données
-
 
699
			$donnees = array();
-
 
700
			foreach ($infos as $info) {
-
 
701
				// Récupération du type d'herbier
-
 
702
				$type_id = ($info['ccb_ce_truk_type'] != '') ? $info['ccb_ce_truk_type'] : 0;
-
 
703
 
-
 
704
				// Augmentation du nombre de collection par période 
-
 
705
				if (! isset($donnees[$types[$type_id]['nom']])) {
-
 
706
					$donnees[$types[$type_id]['nom']] = 1;
-
 
707
				} else {
-
 
708
					$donnees[$types[$type_id]['nom']]++;
-
 
709
				}
-
 
710
			}
-
 
711
			
-
 
712
			$donnees_tmp = $donnees;
-
 
713
			$donnees = array();
-
 
714
			foreach ($donnees_tmp as $cle => $valeur) {
-
 
715
				$donnees[$cle.' ('.$valeur.')'] = $valeur;
-
 
716
			}
-
 
717
			
-
 
718
			asort($donnees);
-
 
719
			$valeurs = implode(',', $donnees);
-
 
720
			$titre = str_replace(' ', '+', "Nombre d'herbier par type");
-
 
721
			$legende = implode('|', array_keys($donnees));
-
 
722
			// Construire de l'url de l'image
-
 
723
			$url = 'http://chart.apis.google.com/chart?'.
-
 
724
				'cht=p3'.
-
 
725
				'&chs=300x350'.
-
 
726
				'&chco=4D89F9'.
-
 
727
				'&chd=t:'.$valeurs.
-
 
728
				'&chds=0,'.max($donnees).
-
 
729
				'&chdl='.$legende.
-
 
730
				'&chdlp=bv'.
-
 
731
				'&chtt='.$titre.
-
 
732
				'&chts=000000,11.5'.
-
 
733
				'&chts=000000,12';
-
 
734
			
-
 
735
			// Retour du html contenant l'image
-
 
736
			$sortie = '<img src="'.$url.'"/>';
-
 
737
		}
-
 
738
		$this->envoyerHTML($sortie);
-
 
739
	}
-
 
740
	
-
 
741
	private function extraireNbrePart($truk_unite_base) {
-
 
742
		$types = explode(';;', $truk_unite_base);
-
 
743
		$nbre = 0;
-
 
744
		foreach ($types as $type) {
-
 
745
			$unite_base = explode('##', $type);
-
 
746
			$unite_base_info = explode('||', $unite_base[1]);
-
 
747
			$nbre_part = $unite_base_info[3];
-
 
748
			$nbre += $nbre_part;
239
		// Retour du html contenant l'image
749
		}
Line 240... Line 750...
240
		return '<img src="'.$url.'"/>';
750
		return $nbre;
241
	}
751
	}
242
	
752