LSform :: validate: add $onlyIfPresent parameter

This parameter permit to handle only data of present element in POST 
data. Other element are not considered in the form.
This commit is contained in:
Benjamin Renard 2020-05-08 20:48:13 +02:00
parent 3d9c11e12f
commit a356555e0a
11 changed files with 76 additions and 31 deletions

View file

@ -307,17 +307,19 @@ class LSform {
}
/**
* Verifie si le formulaire a été validé et que les données sont valides.
* Check form is submited and its data are validat
*
* @param[in] $onlyIfPresent boolean If true and data of this element is not present in POST data,
* just ignore it.
* @author Benjamin Renard <brenard@easter-eggs.com>
*
* @retval boolean true si le formulaire a été validé et que les données ont été validées, false sinon
* @retval boolean true if form is submited and its data are valid, false otherwise
*/
public function validate(){
public function validate($onlyIfPresent=false){
if(!$this -> can_validate)
return;
if ($this -> isSubmit()) {
if (!$this -> getPostData()) {
if (!$this -> getPostData($onlyIfPresent)) {
LSerror :: addErrorCode('LSform_01');
return;
}
@ -436,16 +438,18 @@ class LSform {
}
/**
* Récupère les valeurs postées dans le formulaire
* Retreive POST data of the form
*
* @param[in] $onlyIfPresent boolean If true and data of this element is not present in POST data,
* just ignore it.
* @author Benjamin Renard <brenard@easter-eggs.com>
*
* @retval boolean true si les valeurs ont bien été récupérées, false sinon.
* @retval boolean true if POST data are retreived, false otherwise
*/
public function getPostData() {
public function getPostData($onlyIfPresent=false) {
if (is_null($this -> dataEntryForm)) {
foreach($this -> elements as $element_name => $element) {
if( !($element -> getPostData($this -> _postData)) ) {
if( !($element -> getPostData($this -> _postData, $onlyIfPresent)) ) {
LSerror :: addErrorCode('LSform_02',$element_name);
return;
}
@ -467,7 +471,7 @@ class LSform {
if ((isset($this -> dataEntryFormConfig['requiredAllAttributes']) && $this -> dataEntryFormConfig['requiredAllAttributes']) || isset($this -> dataEntryFormConfig['requiredAttributes']) && is_array($this -> dataEntryFormConfig['requiredAttributes']) && in_array($elementName,$this -> dataEntryFormConfig['requiredAttributes'])) {
$element -> setRequired();
}
if( !($element -> getPostData($this -> _postData)) ) {
if( !($element -> getPostData($this -> _postData, $onlyIfPresent)) ) {
LSerror :: addErrorCode('LSform_02',$element_name);
return;
}

View file

@ -210,11 +210,13 @@ class LSformElement extends LSlog_staticLoggerClass {
* 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[] array Pointeur sur le tableau qui recupèrera la valeur.
* @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) {
public function getPostData(&$return, $onlyIfPresent=false) {
if($this -> isFreeze()) {
return true;
}
@ -230,6 +232,10 @@ class LSformElement extends LSlog_staticLoggerClass {
}
return true;
}
elseif ($onlyIfPresent) {
self :: log_debug($this -> name.": not in POST data => ignore it");
return true;
}
else {
$return[$this -> name] = array();
return true;

View file

@ -86,11 +86,13 @@ class LSformElement_image extends LSformElement {
* 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[] array Pointeur sur le tableau qui recupèrera la valeur.
* @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) {
public function getPostData(&$return, $onlyIfPresent=false) {
if($this -> isFreeze()) {
return true;
}

View file

@ -215,11 +215,13 @@ class LSformElement_jsonCompositeAttribute extends LSformElement {
* This method check present of this element's value in POST data and retreive
* it to feed the array passed in paramater.
*
* @param[] array Reference of the array for retreived values
* @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 if value is in POST data, false instead
*/
public function getPostData(&$return) {
public function getPostData(&$return, $onlyIfPresent=false) {
if($this -> isFreeze()) {
return true;
}

View file

@ -95,11 +95,13 @@ class LSformElement_labeledValue extends LSformElement {
* 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[] array Pointeur sur le tableau qui recupèrera la valeur.
* @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) {
public function getPostData(&$return, $onlyIfPresent=false) {
if($this -> isFreeze()) {
return true;
}
@ -119,6 +121,10 @@ class LSformElement_labeledValue extends LSformElement {
}
return true;
}
elseif ($onlyIfPresent) {
self :: log_debug($this -> name.": not in POST data => ignore it");
return true;
}
else {
$return[$this -> name] = array();
return true;

View file

@ -123,11 +123,13 @@ class LSformElement_mailQuota extends LSformElement {
* 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[] array Pointeur sur le tableau qui recupèrera la valeur.
* @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) {
public function getPostData(&$return, $onlyIfPresent=false) {
if($this -> isFreeze()) {
return true;
}
@ -155,6 +157,10 @@ class LSformElement_mailQuota extends LSformElement {
$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;

View file

@ -78,11 +78,13 @@ class LSformElement_maildir extends LSformElement_text {
* 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[] array Pointeur sur le tableau qui recupèrera la valeur.
* @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) {
public function getPostData(&$return, $onlyIfPresent=false) {
// Récupère la valeur dans _POST, et les vérifie avec la fonction générale
$retval = parent :: getPostData($return);

View file

@ -44,13 +44,15 @@ class LSformElement_password extends LSformElement {
* 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[] array Pointeur sur le tableau qui recupèrera la valeur.
* @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) {
public function getPostData(&$return, $onlyIfPresent=false) {
// Récupère la valeur dans _POST, et les vérifie avec la fonction générale
$retval = parent :: getPostData($return);
$retval = parent :: getPostData($return, $onlyIfPresent);
// Si une valeur est recupérée
if ($retval) {
$val = $this -> form -> ldapObject -> attrs[$this -> name] -> getValue();

View file

@ -114,11 +114,13 @@ class LSformElement_quota extends LSformElement {
* 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[] array Pointeur sur le tableau qui recupèrera la valeur.
* @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) {
public function getPostData(&$return, $onlyIfPresent=false) {
if($this -> isFreeze()) {
return true;
}
@ -142,6 +144,10 @@ class LSformElement_quota extends LSformElement {
}
return true;
}
elseif ($onlyIfPresent) {
self :: log_debug($this -> name.": not in POST data => ignore it");
return true;
}
else {
$return[$this -> name] = array();
return true;

View file

@ -168,11 +168,18 @@ class LSformElement_supannCompositeAttribute extends LSformElement {
* 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[] array Pointeur sur le tableau qui recupèrera la valeur.
* @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) {
public function getPostData(&$return, $onlyIfPresent=false) {
if ($onlyIfPresent) {
self :: log_warning("getPostData : does not support \$onlyIfPresent mode => Post data ignored");
return true;
}
if($this -> isFreeze()) {
return true;
}

View file

@ -143,11 +143,13 @@ class LSformElement_valueWithUnit extends LSformElement {
* 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[] array Pointeur sur le tableau qui recupèrera la valeur.
* @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) {
public function getPostData(&$return, $onlyIfPresent=false) {
if($this -> isFreeze()) {
return true;
}