Esempio n. 1
0
 /**
  * Valide une entité et retourne ses erreurs
  * @return array|boolean
  */
 public function validate($index = NULL)
 {
     $errors = array();
     // Si il y a pas de champs a valider
     if (empty($this->validations)) {
         return $errors;
     }
     // Lance la validation sur tous les champs
     foreach ($this->validations as $validation) {
         // Récupère l'instance du champs
         $field = $this->storage->get($validation->getField());
         // Si le champ n'est pas valide
         if (!$validation->validate($field)) {
             $errors[$validation->getField()] = sprintf($validation->getMessage(), $validation->getField(), $field->getValue());
         }
     }
     // Retourne les erreurs
     return $errors;
 }
Esempio n. 2
0
 /**
  * Requête d'écruture
  */
 private function write()
 {
     // Liste des champs modifiés
     $fields = $this->_storage->get(NULL, TRUE);
     // Si il y a des champs modifiés
     if (!empty($fields)) {
         // Si le cryptage est activé et si il y a un champ vecteur
         if ($this->_config->getOrigami('encryption_enable') && $this->_storage->get('vector') !== FALSE) {
             // Récupération du champ vecteur
             $vector = $this->_storage->get('vector');
             $value = $vector->getValue();
             // Si le vecteur n'a pas de valeur
             if (empty($value)) {
                 // Créer un vecteur
                 $this->_storage->set('vector', random_string('unique'));
                 // Recharge l'object le vecteur
                 $vector = $this->_storage->get('vector');
                 // Prépare l'insertion vecteur
                 $this->db()->set($vector->getName(), $vector->getValue(), TRUE);
             }
         }
         // Parcours les champs modifiés
         foreach ($fields as $field) {
             // Si le cryptage est activé et qu'il y a des champs crypté
             if ($this->_config->getOrigami('encryption_enable') && $field->getEncrypt()) {
                 // Récupération du champ vecteur
                 $vector = $this->_storage->get('vector');
                 // Encryptage de la valeur
                 $this->db()->set("`{$field->getName()}`", "TO_BASE64(AES_ENCRYPT('{$this->db()->escape_str($field->getValue())}', UNHEX('{$this->_config->getOrigami('encryption_key')}'), UNHEX('{$vector->getValue()}')))", FALSE);
                 // Si le champ est un binaire
             } else {
                 if ($this->_config->getOrigami('binary_enable') && $field->getBinary()) {
                     // Transformation de la valeur
                     $this->db()->set("`{$field->getName()}`", "FROM_BASE64('{$this->db()->escape_str($field->getValue())}')", FALSE);
                     // Si c'est un champ normal
                 } else {
                     $this->db()->set($field->getName(), $field->getValue(), TRUE);
                 }
             }
         }
     }
     return $this->db();
 }