/**
  * Fonction d'update utilisant celle de {@see AbstractPdoManager}
  * @author Alban Truc
  * @param array|RefElement $criteria description des entrées à modifier
  * @param array|RefElement $update nouvelles valeurs
  * @param array|NULL $options
  * @since 11/03/2014
  * @return TRUE|array contenant le message d'erreur dans un indexe 'error'
  */
 function update($criteria, $update, $options = array('w' => 1))
 {
     //Transforme $criteria en array s'il contient un objet
     if ($criteria instanceof RefElement) {
         $criteria = $this->dismount($criteria);
     }
     $result = parent::__update('refelement', $criteria, $update, $options);
     return $result;
 }
 /**
  * Fonction d'update utilisant celle de {@see AbstractPdoManager}
  * @author Alban Truc
  * @param array|Connection $criteria description des entrées à modifier
  * @param array|Connection $update nouvelles valeurs
  * @param array|NULL $options
  * @since 11/03/2014
  * @return TRUE|array contenant le message d'erreur dans un indexe 'error'
  */
 function update($criteria, $update, $options = array('w' => 1))
 {
     //Transforme $criteria en array s'il contient un objet
     if ($criteria instanceof Connection) {
         $criteria = $this->dismount($criteria);
     }
     if (isset($criteria['idUser'])) {
         if ($criteria['idUser'] instanceof User) {
             $criteria['idUser'] = new MongoId($criteria['idUser']->getId());
         } else {
             if (is_array($criteria['idUser']) && isset($criteria['idUser']['_id'])) {
                 $criteria['idUser'] = $criteria['idUser']['_id'];
             }
         }
     }
     if (isset($update['idUser'])) {
         if ($update['idUser'] instanceof User) {
             $update['idUser'] = new MongoId($update['idUser']->getId());
         } else {
             if (is_array($update['idUser']) && isset($update['idUser']['_id'])) {
                 $update['idUser'] = $update['idUser']['_id'];
             }
         }
     }
     $result = parent::__update('connection', $criteria, $update, $options);
     return $result;
 }
예제 #3
0
 /**
  * Fonction d'update utilisant celle de {@see AbstractPdoManager}
  * @author Alban Truc
  * @param array|Account $criteria description des entrées à modifier
  * @param array|Account $update nouvelles valeurs
  * @param array|NULL $options
  * @since 31/03/2014
  * @return TRUE|array contenant le message d'erreur dans un indexe 'error'
  */
 public function update($criteria, $update, $options = array('w' => 1))
 {
     //Transforme $criteria en array s'il contient un objet
     if ($criteria instanceof Account) {
         $criteria = $this->dismount($criteria);
     }
     //Transforme $update en array s'il contient un objet
     if ($update instanceof Account) {
         $update = $this->dismount($update);
     }
     //cf fonction find
     if (isset($criteria['idUser'])) {
         if ($criteria['idUser'] instanceof User) {
             $criteria['idUser'] = new MongoId($criteria['idUser']->getId());
         } else {
             if (is_array($criteria['idUser']) && isset($criteria['idUser']['_id'])) {
                 $criteria['idUser'] = $criteria['idUser']['_id'];
             }
         }
     }
     if (isset($criteria['idRefPlan'])) {
         if ($criteria['idRefPlan'] instanceof RefPlan) {
             $criteria['idRefPlan'] = new MongoId($criteria['idRefPlan']->getId());
         } else {
             if (is_array($criteria['idRefPlan']) && isset($criteria['idRefPlan']['_id'])) {
                 $criteria['idRefPlan'] = $criteria['idRefPlan']['_id'];
             }
         }
     }
     if (isset($update['idUser'])) {
         if ($update['idUser'] instanceof User) {
             $update['idUser'] = new MongoId($update['idUser']->getId());
         } else {
             if (is_array($update['idUser']) && isset($update['idUser']['_id'])) {
                 $update['idUser'] = $update['idUser']['_id'];
             }
         }
     }
     if (isset($update['idRefPlan'])) {
         if ($update['idRefPlan'] instanceof RefPlan) {
             $update['idRefPlan'] = new MongoId($update['idRefPlan']->getId());
         } else {
             if (is_array($update['idRefPlan']) && isset($update['idRefPlan']['_id'])) {
                 $update['idRefPlan'] = $update['idRefPlan']['_id'];
             }
         }
     }
     $result = parent::__update('account', $criteria, $update, $options);
     return $result;
 }
 /**
  * Fonction d'update utilisant celle de {@see AbstractPdoManager}
  * @author Alban Truc
  * @param array|RefAction $criteria description des entrées à modifier
  * @param array|RefAction $update nouvelles valeurs
  * @param array|NULL $options
  * @since 11/03/2014
  * @return TRUE|array contenant le message d'erreur dans un indexe 'error'
  */
 public function update($criteria, $update, $options = array('w' => 1))
 {
     //Transforme $criteria en array s'il contient un objet
     if ($criteria instanceof RefAction) {
         $criteria = $this->dismount($criteria);
     }
     //Transforme $update en array s'il contient un objet
     if ($update instanceof RefAction) {
         $update = $this->dismount($update);
     }
     $result = parent::__update('refaction', $criteria, $update, $options);
     return $result;
 }
예제 #5
0
 /**
  * Change le mot de passe d'un utilisateur qui l'a perdu
  * @param string $email
  * @param string $token
  * @param string $newPassword
  * @param string $newPasswordConfirmation
  * @return array|string|TRUE
  */
 public function validatePasswordReset($email, $token, $newPassword, $newPasswordConfirmation)
 {
     if ($newPassword == $newPasswordConfirmation) {
         /*
          **Entre 8 et 26 caractères, mini un chiffre, mini une lettre minuscule, mini une lettre majuscule,
          **minimum un caractère spécial (@*#).
          **Exemples de caractères non acceptés: ‘ , \ & $ < > et l'espace (\s).
          */
         $regex = '/^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@*#]).([a-zA-Z0-9@*#]{8,26})$/';
         if (preg_match($regex, $newPassword)) {
             $criteria = array('email' => $email, 'token' => $token);
             $result = parent::__findOne('validation', $criteria);
             if (!array_key_exists('error', $result)) {
                 //Reset non encore effectué
                 if ($result['state'] == 2) {
                     $newPassword = self::encrypt($newPassword);
                     $updateUserState = $this->update(array('email' => $email), array('$set' => array('password' => $newPassword)));
                     if ($updateUserState == TRUE) {
                         $updateValidation = array('$set' => array('state' => (int) 3));
                         //3 = reset effectué
                         $updateValidationState = parent::__update('validation', $criteria, $updateValidation);
                         if ($updateValidationState == TRUE) {
                             return 'Password changed successfully. You can now login!';
                         } else {
                             $errorMessage = 'Your password was changed but we had trouble acknowledging this information.' . 'Please contact us.';
                             return array('error' => $errorMessage);
                         }
                     } else {
                         return $updateUserState;
                     }
                 } else {
                     $errorMessage = 'You already used your token to reset your password.' . 'You will have to request for another reset if you really want to do so.';
                     return array('error' => $errorMessage);
                 }
             } else {
                 return $result;
             }
         } else {
             return array('error' => 'New password doesn\'t match password specifications');
         }
     } else {
         return array('error' => 'The new password and its confirmation aren\'t the same');
     }
 }