LSformElement_mailQuota : little fix to permit import
[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]*)'.$this -> getSuffix(),$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   * Return suffix value
113   *
114   * @retval string Suffix value
115   **/
116   function getSuffix() {
117     if(isset($this -> params['html_options']['suffix'])){
118       return strval($this -> params['html_options']['suffix']);
119     }
120     else {
121       return "S";
122     }
123   }
124
125   /**
126    * Recupère la valeur de l'élement passée en POST
127    *
128    * Cette méthode vérifie la présence en POST de la valeur de l'élément et la récupère
129    * pour la mettre dans le tableau passer en paramètre avec en clef le nom de l'élément
130    *
131    * @param[] array Pointeur sur le tableau qui recupèrera la valeur.
132    *
133    * @retval boolean true si la valeur est présente en POST, false sinon
134    */
135   function getPostData(&$return) {
136     if($this -> isFreeze()) {
137       return true;
138     }
139     if (isset($_POST[$this -> name.'_size'])) {
140       $return[$this -> name]=array();
141       if(!is_array($_POST[$this -> name.'_size'])) {
142         $_POST[$this -> name.'_size'] = array($_POST[$this -> name.'_size']);
143       }
144       if(isset($_POST[$this -> name.'_sizeFact']) && !is_array($_POST[$this -> name.'_sizeFact'])) {
145         $_POST[$this -> name.'_sizeFact'] = array($_POST[$this -> name.'_sizeFact']);
146       }
147       foreach($_POST[$this -> name.'_size'] as $key => $val) {
148         if (!empty($val)) {
149           $f = 1;
150           if (isset($_POST[$this -> name.'_sizeFact'][$key]) && ($_POST[$this -> name.'_sizeFact'][$key]!=1)) {
151             $f = $_POST[$this -> name.'_sizeFact'][$key];
152           }
153           $return[$this -> name][$key] = ($val*$f).$this->getSuffix();
154         }
155       }
156       return true;
157     }
158     // Accept raw value to make import easier
159     elseif (isset($_POST[$this -> name])) {
160       $return[$this -> name]=$_POST[$this -> name];
161       return true;
162     }
163     else {
164       $return[$this -> name] = array();
165       return true;
166     }
167   }
168 }
169
170 ?>