diff --git a/src/includes/class/class.LSform.php b/src/includes/class/class.LSform.php index ca5b0e45..ccf559a0 100644 --- a/src/includes/class/class.LSform.php +++ b/src/includes/class/class.LSform.php @@ -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 * - * @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 * - * @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; } diff --git a/src/includes/class/class.LSformElement.php b/src/includes/class/class.LSformElement.php index 8a817d5a..d8e98a56 100644 --- a/src/includes/class/class.LSformElement.php +++ b/src/includes/class/class.LSformElement.php @@ -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; diff --git a/src/includes/class/class.LSformElement_image.php b/src/includes/class/class.LSformElement_image.php index 2ad9f55b..880a95cb 100644 --- a/src/includes/class/class.LSformElement_image.php +++ b/src/includes/class/class.LSformElement_image.php @@ -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; } diff --git a/src/includes/class/class.LSformElement_jsonCompositeAttribute.php b/src/includes/class/class.LSformElement_jsonCompositeAttribute.php index 42cb9982..a0f26d1d 100644 --- a/src/includes/class/class.LSformElement_jsonCompositeAttribute.php +++ b/src/includes/class/class.LSformElement_jsonCompositeAttribute.php @@ -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; } diff --git a/src/includes/class/class.LSformElement_labeledValue.php b/src/includes/class/class.LSformElement_labeledValue.php index 0f89e9ca..f329edb9 100644 --- a/src/includes/class/class.LSformElement_labeledValue.php +++ b/src/includes/class/class.LSformElement_labeledValue.php @@ -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; diff --git a/src/includes/class/class.LSformElement_mailQuota.php b/src/includes/class/class.LSformElement_mailQuota.php index 51ba734c..11bfbe14 100644 --- a/src/includes/class/class.LSformElement_mailQuota.php +++ b/src/includes/class/class.LSformElement_mailQuota.php @@ -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; diff --git a/src/includes/class/class.LSformElement_maildir.php b/src/includes/class/class.LSformElement_maildir.php index e574aae0..2aa9ee26 100644 --- a/src/includes/class/class.LSformElement_maildir.php +++ b/src/includes/class/class.LSformElement_maildir.php @@ -28,7 +28,7 @@ LSsession :: loadLSclass('LSformElement_text'); * Cette classe définis les éléments maildir des formulaires. * Elle étant la classe LSformElement_text. * - * Options HTML : + * Options HTML : * // ************************************* * 'html_options' => array ( * // Required @@ -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); diff --git a/src/includes/class/class.LSformElement_password.php b/src/includes/class/class.LSformElement_password.php index 8fe64154..8c8d44aa 100644 --- a/src/includes/class/class.LSformElement_password.php +++ b/src/includes/class/class.LSformElement_password.php @@ -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(); diff --git a/src/includes/class/class.LSformElement_quota.php b/src/includes/class/class.LSformElement_quota.php index 2c575846..f0cd2e79 100644 --- a/src/includes/class/class.LSformElement_quota.php +++ b/src/includes/class/class.LSformElement_quota.php @@ -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; diff --git a/src/includes/class/class.LSformElement_supannCompositeAttribute.php b/src/includes/class/class.LSformElement_supannCompositeAttribute.php index 28a6c58a..705725a1 100644 --- a/src/includes/class/class.LSformElement_supannCompositeAttribute.php +++ b/src/includes/class/class.LSformElement_supannCompositeAttribute.php @@ -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; } diff --git a/src/includes/class/class.LSformElement_valueWithUnit.php b/src/includes/class/class.LSformElement_valueWithUnit.php index 5b09befd..af666d61 100644 --- a/src/includes/class/class.LSformElement_valueWithUnit.php +++ b/src/includes/class/class.LSformElement_valueWithUnit.php @@ -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; }