Subversion Repositories eFlore/Applications.cel

Rev

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

<?php
/*
 * @author    Raphaël Droz <raphael@tela-botanica.org>
 * @author    David Delon <david.delon@clapas.net>
 * @copyright 2010, 2013 Tela-Botanica
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
 */

class InventoryTransmit extends Cel  {
        function updateElement($uid, $pairs) {
                // Controle detournement utilisateur 
            $this->controleUtilisateur($uid[0]);
                if (!isset($uid[1])) return false;

                $transmission = intval($pairs['transmission']);
                if($transmission != 0 && $transmission != 1) return false;

                $ids = array_filter(array_map(create_function('$v','return intval($v);'),
                                                                          explode(',', $uid[1])));
                if(!$ids) return FALSE;

                $resultat_transmission = Cel::db()->executer(
                        sprintf('UPDATE cel_obs SET'.
                                        // mise à jour de la valeur de transmission (peut-être ?)
                                        ' transmission = %1$d,'.

                                        // date_transmission n'est réactualisé que si nécessaire, c'est à dire si le statut de "transmission" actuel n'est
                                        // pas à 1 et que le nouveau statut est à 1. Autrement il est mis (ou reste) à NULL
                                        ' date_transmission = IF(transmission != 1 AND %1$s = 1, now(), NULL),'.

                                        // idem pour date_modification qui n'est mise à now() que si l'on passe une observation
                                        // de non-transmise à tranmise ou de transmise à non-transmise
                                        ' date_modification = IF(transmission != %1$d, now(), date_modification)'.

                                        ' WHERE ce_utilisateur = %2$s AND ordre in (%3$s)',
                                        $transmission,
                                        Cel::db()->proteger($uid[0]),
                                        implode(',', $ids)));
                return ($resultat_transmission != 0);
        }
}