Esempio n. 1
0
 /**
  * Inserts or updates a user model in the database.
  *
  * @param UserModel $user
  *
  * @return int The userId of the updated or inserted user.
  */
 public function save(UserModel $user)
 {
     $fields = array();
     $name = $user->getName();
     $password = $user->getPassword();
     $email = $user->getEmail();
     $dateConfirmed = $user->getDateConfirmed();
     $dateLastActivity = $user->getDateLastActivity();
     $dateCreated = $user->getDateCreated();
     $confirmed = $user->getConfirmed();
     $confirmedCode = $user->getConfirmedCode();
     if (!empty($name)) {
         $fields['name'] = $user->getName();
     }
     if (!empty($password)) {
         $fields['password'] = $user->getPassword();
     }
     if (!empty($email)) {
         $fields['email'] = $user->getEmail();
     }
     if (!empty($dateCreated)) {
         $fields['date_created'] = $user->getDateCreated()->toDb();
     }
     if (!empty($dateConfirmed)) {
         $fields['date_confirmed'] = $user->getDateConfirmed()->toDb();
     }
     if (!empty($dateLastActivity)) {
         $fields['date_last_activity'] = $user->getDateLastActivity()->toDb();
     }
     if ($confirmed !== null) {
         $fields['confirmed'] = $confirmed;
     }
     if ($confirmedCode !== null) {
         $fields['confirmed_code'] = $confirmedCode;
     }
     $fields['first_name'] = $user->getFirstName();
     $fields['last_name'] = $user->getLastName();
     $fields['homepage'] = $user->getHomepage();
     $fields['city'] = $user->getCity();
     $fields['birthday'] = $user->getBirthday();
     $fields['avatar'] = $user->getAvatar();
     $fields['signature'] = $user->getSignature();
     $fields['opt_mail'] = $user->getOptMail();
     $userId = (int) $this->db()->select('id')->from('users')->where(array('id' => $user->getId()))->execute()->fetchCell();
     if ($userId) {
         /*
          * User does exist already, update.
          */
         $this->db()->update('users')->values($fields)->where(array('id' => $userId))->execute();
     } else {
         /*
          * User does not exist yet, insert.
          */
         $userId = $this->db()->insert('users')->values($fields)->execute();
     }
     if ($user->getGroups()) {
         $this->db()->delete('users_groups')->where(array('user_id' => $userId))->execute();
         foreach ($user->getGroups() as $group) {
             $this->db()->insert('users_groups')->values(array('user_id' => $userId, 'group_id' => $group->getId()))->execute();
         }
     }
     return $userId;
 }