Example #1
0
 /**
  * @param User $user
  * @return bool
  */
 public function save(User $user)
 {
     $dataArr = $user->getDataArr();
     $paramsArr = [];
     if (@$user->id > 0) {
         //updatujeme existující uživatele
         $sql = '';
         foreach ($dataArr as $key => $value) {
             if ($key == 'id') {
                 continue;
             }
             $sql .= ($sql != '' ? ',' : '') . ' ' . $key . '=:' . $key;
             $paramsArr[':' . $key] = $value;
         }
         $sql = 'UPDATE users SET ' . $sql . ' WHERE id=:id LIMIT 1;';
         $paramsArr[':id'] = $user->id;
         $query = $this->pdo->prepare($sql);
         $result = $query->execute($paramsArr);
     } else {
         //insert nového uživatele
         $sql = 'INSERT INTO users (';
         $sql .= implode(',', array_keys($dataArr));
         $sql .= ')VALUES(';
         foreach ($dataArr as $key => $value) {
             $paramsArr[':' . $key] = $value;
         }
         $sql .= implode(',', array_keys($paramsArr));
         $sql .= ')';
         $query = $this->pdo->prepare($sql);
         $result = $query->execute($paramsArr);
         $user->id = $this->pdo->lastInsertId('users');
     }
     return $result;
 }
Example #2
0
 /**
  * Formulář pro registraci uživatele
  * @return Form
  */
 public function createComponentRegistrationForm()
 {
     $form = new Form();
     $form->addText('name', 'Jméno a příjmení:')->setRequired('Je nutné zadat jméno.');
     $form->addText('email', 'E-mail:')->setRequired('Je nutné zadat e-mail')->addRule(Form::EMAIL, 'Je nutné zadat platnou e-mailovou adresu.')->addRule(function (TextInput $input) {
         return !$this->usersModel->findByEmail($input->value);
     }, 'Uživatel s daným e-mailem již existuje.');
     $password = $form->addPassword('password', 'Heslo:')->setRequired('Je nutné zadat heslo.')->addRule(Form::MIN_LENGTH, 'Heslo musí mít minumálně 4 znaky.', 4);
     $form->addPassword('password2', 'Potvrzení hesla:')->addRule(Form::EQUAL, 'Zadaná hesla se neshodují.', $password);
     $form->addSubmit('ok', 'registrovat se')->onClick[] = function (SubmitButton $button) {
         //funkce pro vytvoření nového uživatelského účtu a automatick přihlášení uživatele
         $data = $button->form->getValues(true);
         $user = new User();
         $user->active = true;
         $user->name = $data['name'];
         $user->email = $data['email'];
         $user->password = User::encodePassword($data['password']);
         $user->role = User::DEFAULT_REGISTERED_ROLE;
         if ($this->usersModel->save($user)) {
             $this->flashMessage('Registrace byla úspěšně dokončena.');
             $this->usersModel->sendRegistrationMail($user);
         }
         $this->user->login($data['email'], $data['password']);
         $this->redirect('Homepage:default');
     };
     return $form;
 }