table('emprunts'); $this->displayField('id'); $this->primaryKey('id'); $this->addBehavior('Timestamp'); $this->belongsTo('Materiels', [ 'foreignKey' => 'materiel_id', 'joinType' => 'INNER' ]); } /** * Default validation rules. * * @param \Cake\Validation\Validator $validator Validator instance. * @return \Cake\Validation\Validator */ public function validationDefault(Validator $validator) { $validator ->integer('id') ->allowEmpty('id', 'create'); $validator ->allowEmpty('date_emprunt'); $validator ->allowEmpty('date_retour_emprunt') ->add('nom_emprunteur_ext', 'valid', ['rule' => ['checkReturnDateIsAfterLoanDate'], 'message' => 'La date de retour doit être postérieure à la date de l\'emprunt.', 'provider' => 'table']); $validator ->boolean('emprunt_interne') ->allowEmpty('emprunt_interne'); $validator ->allowEmpty('laboratoire') ->add('laboratoire', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']) ->add('laboratoire', 'valid', ['rule' => ['checkLaboratoire'], 'message' => 'Le champ doit être rempli pour un emprunt externe.', 'provider' => 'table']); /* $validator ->notEmpty('e_lieu_stockage'); */ $validator ->allowEmpty('e_lieu_detail') ->add('e_lieu_detail', 'valid', ['rule' => ['check_string'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']) ->add('e_lieu_detail', 'valid', ['rule' => ['checkLieu'], 'message' => 'Le champ doit être rempli pour un emprunt interne.', 'provider' => 'table']); /* $validator ->notEmpty('nom_emprunteur_int'); */ $validator ->allowEmpty('email_emprunteur_int'); $validator ->allowEmpty('nom_emprunteur_ext') ->add('nom_emprunteur_ext', 'valid', ['rule' => ['checkEmpruntExt'], 'message' => 'Le champ doit être rempli.', 'provider' => 'table']); $validator ->allowEmpty('email_emprunteur_ext') ->add('email_emprunteur_ext', 'valid', ['rule' => ['checkEmailExt'], 'message' => 'Cet Email n\'est pas valide.', 'provider' => 'table']); $validator ->allowEmpty('commentaire') ->add('commentaire', 'valid', ['rule' => ['check_string_with_some_special_cars'], 'message' => 'Le champ doit être valide.', 'provider' => 'table']); return $validator; } // autoriser les caracteres habituels standards pour un ou plusieurs MOTs // accents + - _ / () . , \s (=space) private $string = "a-zA-Z0-9éèàùâêôîôûç%().,\/\s\+\-_"; public function check_string($check) { return (bool) preg_match('/^['.$this->string.']*$/', $check); } // autoriser les caracteres spéciaux (pour une PHRASE ou paragraphe) : // check_string PLUS ces symboles ====> & * > < ? % ! : , " ' public function check_string_with_some_special_cars($check) { return (bool) preg_match('/^['.$this->string.'?%!:,&*><\-\+\="\''.']*$/', $check); } function checkReturnDateIsAfterLoanDate() { /* $dateEmprunt = $this->data [$this->name] ['date_emprunt']; $dateRetour = $this->data [$this->name] ['date_retour_emprunt']; $dateEmprunt = explode("-", $dateEmprunt); $dateRetour = explode("-", $dateRetour); $dateEmprunt = $dateEmprunt[2].$dateEmprunt[1].$dateEmprunt[0]; $dateRetour = $dateRetour[2].$dateRetour[1].$dateRetour[0]; if ($dateEmprunt > $dateRetour) { return false; } return true; */ return true; } function checkEmprunt() { //return ($this->data [$this->name] ['emprunt_interne'] == 1 || $this->data [$this->name] ['nom_emprunteur_ext'] != ''); return true; } function checkEmail() { //return ($this->data [$this->name] ['emprunt_interne'] == 1 || Validation::email ( $this->data [$this->name] ['email_emprunteur_ext'] )); return true; } function checkLaboratoire() { //return ((($this->data [$this->name] ['emprunt_interne'] == 0) && ($this->data [$this->name] ['laboratoire'] != '')) || ($this->data [$this->name] ['emprunt_interne'] == 1)); return true; } function checkLieu() { //return ((($this->data [$this->name] ['emprunt_interne'] == 1) && ($this->data [$this->name] ['e_lieu_detail'] != '')) || ($this->data [$this->name] ['emprunt_interne'] == 0)); return true; } /** * Returns a rules checker object that will be used for validating * application integrity. * * @param \Cake\ORM\RulesChecker $rules The rules object to be modified. * @return \Cake\ORM\RulesChecker */ public function buildRules(RulesChecker $rules) { $rules->add($rules->existsIn(['materiel_id'], 'Materiels')); return $rules; } }