Evolution #1001
Mis à jour par Johan Cwiklinski il y a plus de 6 ans
*Contexte*: https://github.com/trasher/galette/pull/1 J'ai modifié la class Adherent.php pour brider un peu les inscriptions et éviter ainsi que les adhérents puissent taper a date courante à la place de leur date de naissance. Mon plugin a besoin d'une date de naissance valide pour calculer des tarifs. J'ai donc fait un contrôle de l'age: un age dépassant ]200ans..1an[ est invalide. (idée: On pourrait laisser l'admin choisir le type de filtre ou le choix de l'activer ou non.) * détails du code:* <pre><code class="php"> >case 'date_crea_adh': case 'date_crea_adh': > try { > > $d = \DateTime::createFromFormat(_T("Y-m-d"), $value); > > > > if ( $d === false ) { > > > //try with non localized date > > > $d = \DateTime::createFromFormat("Y-m-d", $value); > > > if ( $d === false ) { > > > > throw new \Exception('Incorrect format'); > > > } > > } > > $this->$prop = $d->format('Y-m-d'); > } catch (\Exception $e) { > > Analog::log( > > > 'Wrong date format. field: ' . $key . > > > ', value: ' . $value . ', expected fmt: ' . > > > _T("Y-m-d") . ' | ' . $e->getMessage(), > > > Analog::INFO > > ); > > $errors[] = str_replace( > > > array( > > > > '%date_format', > > > > '%field' > > > ), > > > array( > > > > _T("Y-m-d"), > > > > $this->_fields[$key]['label'] > > > ), > > > _T("- Wrong date format (%date_format) for %field!") > > ); > } > break; case >case 'ddn_adh': > try { > > $d = \DateTime::createFromFormat(_T("Y-m-d"), $value); > > > > $birthdate= \DateTime::createFromFormat('j/m/Y',$value); > > $today= new \DateTime("now"); > > //echo('today:'); > > //var_dump($today); > > //echo('birthdate:'); > > //var_dump($birthdate); > > //echo('diff:'); > > $age=$birthdate->diff($today); > > //var_dump($age->format('%R%Y')); > > $age=$age->format('%Y'); > > if($age>200 || $age<1) > > > { > > > $d=false; > > > } > > > > > > > > if ( $d === false ) { > > > //try with non localized date > > > $d = \DateTime::createFromFormat("Y-m-d", $value); > > > if ( $d === false ) { > > > > throw new \Exception('Incorrect format'); > > > } > > } > > $this->$prop = $d->format('Y-m-d'); > } catch (\Exception $e) { > > Analog::log( > > > 'Wrong date format. field: ' . $key . > > > ', value: ' . $value . ', expected fmt: ' . > > > _T("Y-m-d") . ' | ' . $e->getMessage(), > > > Analog::INFO > > ); > > $errors[] = str_replace( > > > array( > > > > '%date_format', > > > > '%field' > > > ), > > > array( > > > > _T("Y-m-d"), > > > > $this->_fields[$key]['label'] > > > ), > > > _T("- Wrong date format (%date_format) for %field!") > > ); > } > break; </code></pre>