*/ class LSformElement_mailQuota extends LSformElement { var $fieldTemplate = 'LSformElement_mailQuota_field.tpl'; var $sizeFacts = array( 1 => 'o', 1000 => 'Ko', 1000000 => 'Mo', 1000000000 => 'Go' ); /** * Retourne les infos d'affichage de l'élément * * Cette méthode retourne les informations d'affichage de l'élement * * @retval array */ public function getDisplay(){ $return = $this -> getLabelInfos(); $quotas=array(); foreach ($this -> values as $value) { if (preg_match('/([0-9]*)/'.$this -> getSuffix(),$value,$regs)) { $infos = array( 'size' => $regs[1] ); if ($infos['size'] >= 1000000000) { $infos['valueSizeFact']=1000000000; } else if ($infos['size'] >= 1000000) { $infos['valueSizeFact']=1000000; } else if ($infos['size'] >= 1000) { $infos['valueSizeFact']=1000; } else { $infos['valueSizeFact']=1; } $infos['valueSize'] = $infos['size'] / $infos['valueSizeFact']; $infos['valueTxt'] = $infos['valueSize'].$this ->sizeFacts[$infos['valueSizeFact']]; $quotas[$value] = $infos; } else { $quotas[$value] = array( 'unknown' => _('Incorrect value') ); } } LStemplate :: addCssFile('LSformElement_mailQuota.css'); $return['html'] = $this -> fetchTemplate( NULL, array( 'quotas' => $quotas, 'sizeFacts' => $this -> sizeFacts ) ); return $return; } /** * Return HTML code of an empty form field * * @param[in] $value_idx integer|null The value index (optional, default: null == 0) * * @retval string The HTML code of an empty field */ public function getEmptyField($value_idx=null) { return $this -> fetchTemplate( $this -> fieldTemplate, array( 'value' => null, 'value_idx' => intval($value_idx), 'sizeFacts' => $this -> sizeFacts, ) ); } /** * Return suffix value * * @retval string Suffix value **/ public function getSuffix() { return $this -> getParam('html_options.suffix', 'S', 'string'); } /** * Recupère la valeur de l'élement passée en POST * * Cette méthode vérifie la présence en POST de la valeur de l'élément et la récupère * pour la mettre dans le tableau passer en paramètre avec en clef le nom de l'élément * * @param[in] &$return array Reference of the array for retreived values * @param[in] $onlyIfPresent boolean If true and data of this element is not present in POST data, * just ignore it. * * @retval boolean true si la valeur est présente en POST, false sinon */ public function getPostData(&$return, $onlyIfPresent=false) { if($this -> isFreeze()) { return true; } if (isset($_POST[$this -> name.'_size'])) { $return[$this -> name]=array(); $_POST[$this -> name.'_size'] = ensureIsArray($_POST[$this -> name.'_size']); if(isset($_POST[$this -> name.'_sizeFact']) && !is_array($_POST[$this -> name.'_sizeFact'])) { $_POST[$this -> name.'_sizeFact'] = array($_POST[$this -> name.'_sizeFact']); } foreach($_POST[$this -> name.'_size'] as $key => $val) { if (!empty($val)) { $f = 1; if (isset($_POST[$this -> name.'_sizeFact'][$key]) && ($_POST[$this -> name.'_sizeFact'][$key]!=1)) { $f = $_POST[$this -> name.'_sizeFact'][$key]; } $return[$this -> name][$key] = ($val*$f).$this->getSuffix(); } } return true; } // Accept raw value to make import easier elseif (isset($_POST[$this -> name])) { $return[$this -> name]=$_POST[$this -> name]; return true; } elseif ($onlyIfPresent) { self :: log_debug($this -> name.": not in POST data => ignore it"); return true; } else { $return[$this -> name] = array(); return true; } } }