Subversion Repositories eFlore/Applications.cel

Rev

Rev 1840 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
416 aurelien 1
<?php
1914 raphael 2
/*
3
 * @author    Raphaël Droz <raphael@tela-botanica.org>
4
 * @author    David Delon <david.delon@clapas.net>
5
 * @copyright 2010, 2013 Tela-Botanica
6
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
7
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
8
 */
416 aurelien 9
 
762 aurelien 10
class InventoryTransmit extends Cel  {
1914 raphael 11
	function updateElement($uid, $pairs) {
762 aurelien 12
		// Controle detournement utilisateur
13
 	    $this->controleUtilisateur($uid[0]);
1914 raphael 14
		if (!isset($uid[1])) return false;
1301 aurelien 15
 
1914 raphael 16
		$transmission = intval($pairs['transmission']);
17
		if($transmission != 0 && $transmission != 1) return false;
416 aurelien 18
 
1914 raphael 19
		$ids = array_filter(array_map(create_function('$v','return intval($v);'),
20
									  explode(',', $uid[1])));
21
		if(!$ids) return FALSE;
22
 
23
		$resultat_transmission = Cel::db()->executer(
24
			sprintf('UPDATE cel_obs SET'.
25
					// mise à jour de la valeur de transmission (peut-être ?)
26
					' transmission = %1$d,'.
27
 
28
					// date_transmission n'est réactualisé que si nécessaire, c'est à dire si le statut de "transmission" actuel n'est
29
					// pas à 1 et que le nouveau statut est à 1. Autrement il est mis (ou reste) à NULL
30
					' date_transmission = IF(transmission != 1 AND %1$s = 1, now(), NULL),'.
31
 
32
					// idem pour date_modification qui n'est mise à now() que si l'on passe une observation
33
					// de non-transmise à tranmise ou de transmise à non-transmise
34
					' date_modification = IF(transmission != %1$d, now(), date_modification)'.
35
 
36
					' WHERE ce_utilisateur = %2$s AND ordre in (%3$s)',
37
					$transmission,
38
					Cel::db()->proteger($uid[0]),
39
					implode(',', $ids)));
40
		return ($resultat_transmission != 0);
416 aurelien 41
	}
42
}