LSattribute :: generateValue() : Fixed bug when generated value is an array.
[ldapsaisie.git] / public_html / includes / class / class.LSformElement_mailQuota.php
1 <?php
2 /*******************************************************************************
3  * Copyright (C) 2007 Easter-eggs
4  * http://ldapsaisie.labs.libre-entreprise.org
5  *
6  * Author: See AUTHORS file in top-level directory.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License version 2
10  * as published by the Free Software Foundation.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20
21 ******************************************************************************/
22
23
24 /**
25  * Element mailQuota d'un formulaire pour LdapSaisie
26  *
27  * Cette classe définis les éléments mailQuota des formulaires.
28  * Elle étant la classe basic LSformElement.
29  *
30  * @author Benjamin Renard <brenard@easter-eggs.com>
31  */
32
33 class LSformElement_mailQuota extends LSformElement {
34
35   var $fieldTemplate = 'LSformElement_mailQuota_field.tpl';
36
37   var $sizeFacts = array(
38     1     => 'o',
39     1000   => 'Ko',
40     1000000  => 'Mo',
41     1000000000 => 'Go'
42   );
43
44  /**
45   * Retourne les infos d'affichage de l'élément
46   * 
47   * Cette méthode retourne les informations d'affichage de l'élement
48   *
49   * @retval array
50   */
51   function getDisplay(){
52     $return = $this -> getLabelInfos();
53
54     $quotas=array();
55     
56     foreach ($this -> values as $value) {
57       if (ereg('([0-9]*)S',$value,$regs)) {
58         $infos = array(
59           'size' => $regs[1]
60         );
61         if ($infos['size'] >= 1000000000) {
62           $infos['valueSizeFact']=1000000000;
63         }
64         else if ($infos['size'] >= 1000000) {
65           $infos['valueSizeFact']=1000000;
66         }
67         else if ($infos['size'] >= 1000) {
68           $infos['valueSizeFact']=1000;
69         }
70         else {
71           $infos['valueSizeFact']=1;
72         }
73         $infos['valueSize'] = $infos['size'] / $infos['valueSizeFact'];
74         $infos['valueTxt'] = $infos['valueSize'].$this ->sizeFacts[$infos['valueSizeFact']];
75         
76         $quotas[$value] = $infos;
77       }
78       else {
79         $quotas[$value] = array(
80           'unknown' => _('Incorrect value')
81         );
82       }
83     }
84     
85     LSsession :: addCssFile('LSformElement_mailQuota.css');
86     
87     $return['html'] = $this -> fetchTemplate(
88       NULL,
89       array(
90         'quotas' => $quotas,
91         'sizeFacts' => $this -> sizeFacts
92       )
93     );
94     return $return;
95   }
96   
97  /**
98   * Retourne le code HTML d'un champ vide
99   *
100   * @retval string Code HTML d'un champ vide.
101   */
102   function getEmptyField() {
103     return $this -> fetchTemplate(
104       $this -> fieldTemplate,
105       array(
106         'sizeFacts' => $this -> sizeFacts
107       )
108     );
109   }
110   
111   /**
112    * Recupère la valeur de l'élement passée en POST
113    *
114    * Cette méthode vérifie la présence en POST de la valeur de l'élément et la récupère
115    * pour la mettre dans le tableau passer en paramètre avec en clef le nom de l'élément
116    *
117    * @param[] array Pointeur sur le tableau qui recupèrera la valeur.
118    *
119    * @retval boolean true si la valeur est présente en POST, false sinon
120    */
121   function getPostData(&$return) {
122     if($this -> isFreeze()) {
123       return true;
124     }
125     if (isset($_POST[$this -> name.'_size'])) {
126       $return[$this -> name]=array();
127       if(!is_array($_POST[$this -> name.'_size'])) {
128         $_POST[$this -> name.'_size'] = array($_POST[$this -> name.'_size']);
129       }
130       if(isset($_POST[$this -> name.'_sizeFact']) && !is_array($_POST[$this -> name.'_sizeFact'])) {
131         $_POST[$this -> name.'_sizeFact'] = array($_POST[$this -> name.'_sizeFact']);
132       }
133       foreach($_POST[$this -> name.'_size'] as $key => $val) {
134         if (!empty($val)) {
135           $f = 1;
136           if (isset($_POST[$this -> name.'_sizeFact'][$key]) && ($_POST[$this -> name.'_sizeFact'][$key]!=1)) {
137             $f = $_POST[$this -> name.'_sizeFact'][$key];
138           }
139           $return[$this -> name][$key] = ($val*$f).'S';
140         }
141       }
142       return true;
143     }
144     else {
145       $return[$this -> name] = array();
146       return true;
147     }
148   }
149 }
150
151 ?>