*/ class LSformElement_mailQuota extends LSformElement { var $fieldTemplate = 'LSformElement_mailQuota_field.tpl'; var $sizeFacts = array( 1 => 'o', 1000 => 'Ko', 1000000 => 'Mo', 1000000000 => 'Go' ); /** * Parse one value * * @param[in] $value string The value to parse * @param[in] $details boolean Enable/disable details return (optional, default: true) * * @retval array Parsed value */ public function parseValue($value, $details=true) { if (preg_match('/^([0-9]+)'.$this -> getSuffix().'$/', $value, $regs)) { $infos = array( 'size' => $regs[1], ); if (!$details) return $infos['size']; if ($infos['size'] == 0) { return array( 'size' => 0, 'valueSize' => 0, 'valueSizeFact' => 1, 'valueTxt' => "0", ); } krsort($this -> sizeFacts, SORT_NUMERIC); foreach($this -> sizeFacts as $fact => $unit) { if ($infos['size'] >= $fact) { $infos['valueSize'] = round($infos['size'] / $fact, 2); $infos['valueSizeFact'] = $fact; $infos['valueTxt'] = $infos['valueSize'].$unit; break; } } ksort($this -> sizeFacts, SORT_NUMERIC); return $infos; } return false; } /** * 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) { $parsed_value = $this -> parseValue($value); if ($parsed_value) { $quotas[$value] = $parsed_value; } 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 retrieved 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; } $values = array(); if ($this -> form -> api_mode) { if (isset($_POST[$this -> name])) { foreach(ensureIsArray($_POST[$this -> name]) as $value) { if ($this -> parseValue($value) !== false) { $values[] = $value; } else { $this -> form -> setElementError( $this -> attr_html, getFData(_('Invalid value : "%{value}".'), $value) ); } } } } elseif (isset($_POST[$this -> name.'_size'])) { $_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)) continue; $f = 1; if (isset($_POST[$this -> name.'_sizeFact'][$key]) && ($_POST[$this -> name.'_sizeFact'][$key]!=1)) { $f = $_POST[$this -> name.'_sizeFact'][$key]; } $values[$key] = ($val*$f).$this->getSuffix(); } } if ($values) { $return[$this -> name] = $values; } elseif ($onlyIfPresent) { self :: log_debug($this -> name.": not in POST data => ignore it"); } else { $return[$this -> name] = array(); } return true; } }