2010-05-26 09:57:30 +02:00
|
|
|
<?php
|
|
|
|
/*******************************************************************************
|
|
|
|
* Copyright (C) 2007 Easter-eggs
|
2021-04-13 18:04:19 +02:00
|
|
|
* https://ldapsaisie.org
|
2010-05-26 09:57:30 +02:00
|
|
|
*
|
|
|
|
* Author: See AUTHORS file in top-level directory.
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License version 2
|
|
|
|
* as published by the Free Software Foundation.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
|
|
|
|
******************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Element quota d'un formulaire pour LdapSaisie
|
|
|
|
*
|
|
|
|
* Cette classe définis les éléments quota des formulaires.
|
|
|
|
* Elle étant la classe basic LSformElement.
|
|
|
|
*
|
|
|
|
* @author Benjamin Renard <brenard@easter-eggs.com>
|
|
|
|
*/
|
|
|
|
|
|
|
|
class LSformElement_quota extends LSformElement {
|
|
|
|
|
|
|
|
var $fieldTemplate = 'LSformElement_quota_field.tpl';
|
|
|
|
|
|
|
|
var $sizeFacts = array(
|
|
|
|
1 => 'o',
|
2010-08-06 16:21:20 +02:00
|
|
|
1024 => 'Ko',
|
|
|
|
1048576 => 'Mo',
|
2021-02-03 14:40:28 +01:00
|
|
|
1073741824 => 'Go',
|
|
|
|
1099511627776 => 'To',
|
2010-05-26 09:57:30 +02:00
|
|
|
);
|
|
|
|
|
2021-02-03 14:40:28 +01:00
|
|
|
/**
|
|
|
|
* Parse one value
|
|
|
|
*
|
|
|
|
* @param[in] $value string The value to parse
|
2021-02-05 12:22:32 +01:00
|
|
|
* @param[in] $details boolean Enable/disable details return (optional, default: true)
|
2021-02-03 14:40:28 +01:00
|
|
|
*
|
|
|
|
* @retval array Parsed value
|
|
|
|
*/
|
2021-02-05 12:22:32 +01:00
|
|
|
public function parseValue($value, $details=true) {
|
2021-02-03 14:40:28 +01:00
|
|
|
if (preg_match('/^([0-9]+)$/', $value, $regs)) {
|
|
|
|
$infos = array(
|
|
|
|
'size' => ceil($regs[1]/$this -> getFactor()),
|
|
|
|
);
|
2021-02-05 12:22:32 +01:00
|
|
|
if (!$details)
|
|
|
|
return $infos['size'];
|
2021-02-03 14:40:28 +01:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2010-05-26 09:57:30 +02:00
|
|
|
/**
|
|
|
|
* Retourne les infos d'affichage de l'élément
|
2020-04-29 15:54:21 +02:00
|
|
|
*
|
2010-05-26 09:57:30 +02:00
|
|
|
* Cette méthode retourne les informations d'affichage de l'élement
|
|
|
|
*
|
|
|
|
* @retval array
|
|
|
|
*/
|
2019-03-12 11:42:53 +01:00
|
|
|
public function getDisplay(){
|
2010-05-26 09:57:30 +02:00
|
|
|
$return = $this -> getLabelInfos();
|
|
|
|
|
|
|
|
$quotas=array();
|
2020-04-29 15:54:21 +02:00
|
|
|
|
2010-05-26 09:57:30 +02:00
|
|
|
foreach ($this -> values as $value) {
|
2021-02-03 14:40:28 +01:00
|
|
|
$parsed_value = $this -> parseValue($value);
|
|
|
|
if ($parsed_value) {
|
|
|
|
$quotas[$value] = $parsed_value;
|
2010-05-26 09:57:30 +02:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
$quotas[$value] = array(
|
|
|
|
'unknown' => _('Incorrect value')
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
2020-04-29 15:54:21 +02:00
|
|
|
|
2020-05-28 16:56:36 +02:00
|
|
|
LStemplate :: addCssFile('LSformElement_quota.css');
|
2020-04-29 15:54:21 +02:00
|
|
|
|
2010-05-26 09:57:30 +02:00
|
|
|
$return['html'] = $this -> fetchTemplate(
|
|
|
|
NULL,
|
|
|
|
array(
|
|
|
|
'quotas' => $quotas,
|
|
|
|
'sizeFacts' => $this -> sizeFacts
|
|
|
|
)
|
|
|
|
);
|
|
|
|
return $return;
|
|
|
|
}
|
2020-04-29 15:54:21 +02:00
|
|
|
|
2020-09-08 18:42:54 +02:00
|
|
|
/**
|
|
|
|
* 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) {
|
2010-05-26 09:57:30 +02:00
|
|
|
return $this -> fetchTemplate(
|
|
|
|
$this -> fieldTemplate,
|
|
|
|
array(
|
2020-09-08 18:42:54 +02:00
|
|
|
'value' => null,
|
|
|
|
'value_idx' => intval($value_idx),
|
|
|
|
'sizeFacts' => $this -> sizeFacts,
|
2010-05-26 09:57:30 +02:00
|
|
|
)
|
|
|
|
);
|
|
|
|
}
|
2020-04-29 15:54:21 +02:00
|
|
|
|
2010-05-26 09:57:30 +02:00
|
|
|
/**
|
|
|
|
* 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
|
|
|
|
*
|
2020-05-08 20:48:13 +02:00
|
|
|
* @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.
|
2010-05-26 09:57:30 +02:00
|
|
|
*
|
|
|
|
* @retval boolean true si la valeur est présente en POST, false sinon
|
|
|
|
*/
|
2020-05-08 20:48:13 +02:00
|
|
|
public function getPostData(&$return, $onlyIfPresent=false) {
|
2010-05-26 09:57:30 +02:00
|
|
|
if($this -> isFreeze()) {
|
|
|
|
return true;
|
|
|
|
}
|
2021-02-03 14:40:28 +01:00
|
|
|
$values = array();
|
|
|
|
if ($this -> form -> api_mode) {
|
|
|
|
if (isset($_POST[$this -> name])) {
|
|
|
|
foreach(ensureIsArray($_POST[$this -> name]) as $value) {
|
|
|
|
$values[] = ceil($value*$this -> getFactor());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
elseif (isset($_POST[$this -> name.'_size'])) {
|
2020-11-30 19:43:52 +01:00
|
|
|
$_POST[$this -> name.'_size'] = ensureIsArray($_POST[$this -> name.'_size']);
|
2010-05-26 09:57:30 +02:00
|
|
|
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) {
|
2021-02-03 14:40:28 +01:00
|
|
|
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];
|
2010-05-26 09:57:30 +02:00
|
|
|
}
|
2021-02-03 14:40:28 +01:00
|
|
|
$val = preg_replace('/,/', '.', $val);
|
|
|
|
$values[$key] = ceil(ceil(($val*$f)*$this -> getFactor()));
|
2010-05-26 09:57:30 +02:00
|
|
|
}
|
2021-02-03 14:40:28 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
if ($values) {
|
|
|
|
$return[$this -> name] = $values;
|
2010-05-26 09:57:30 +02:00
|
|
|
}
|
2020-05-08 20:48:13 +02:00
|
|
|
elseif ($onlyIfPresent) {
|
|
|
|
self :: log_debug($this -> name.": not in POST data => ignore it");
|
|
|
|
}
|
2010-05-26 09:57:30 +02:00
|
|
|
else {
|
|
|
|
$return[$this -> name] = array();
|
|
|
|
}
|
2021-02-03 14:40:28 +01:00
|
|
|
return true;
|
2010-05-26 09:57:30 +02:00
|
|
|
}
|
|
|
|
|
2021-02-03 14:40:28 +01:00
|
|
|
/**
|
|
|
|
* Retreive factor value
|
|
|
|
*
|
|
|
|
* @retval integer Factor value
|
|
|
|
*/
|
2010-05-26 09:57:30 +02:00
|
|
|
private function getFactor() {
|
2021-02-03 14:40:28 +01:00
|
|
|
return $this -> getParam('html_options.factor', 1, 'int');
|
|
|
|
}
|
|
|
|
|
2010-05-26 09:57:30 +02:00
|
|
|
}
|