ACC SHELL
<?php
/**
* Nastaveni presenter.
*/
class PridatUzivatelePresenter extends BasePresenter
{
private $name = 'přidat uživatele';
private $presenter = 'PridatUzivatele';
private $table = 'uzivatele';
private $resource = 'uzivatel';
public function renderDefault()
{
if (!$this->user->isAllowed($this->resource, 'add'))
{
$this->flashMessage("K prohlížení sekce " . ucfirst($this->name) . " nemáš oprávnění!", 'error');
$this->redirect('Homepage:default');
}
}
protected function createComponentNovyUzivatelForm()
{
$form = new Nette\Application\UI\Form;
$form->addHidden('clenemOd', date('Y-m-d'));
$form->addText('email', 'Email:', 30)
->setAttribute('class', 'qtip exclamationmark')
->setAttribute('title', 'Pokud nevložíš email, uživatel se nebude moci přihlásit.')
->addCondition(Nette\Application\UI\Form::FILLED)
->addRule(Nette\Application\UI\Form::EMAIL, 'Zadej platný email!');
$form->addText('jmeno', 'Jméno:', 30)
->setRequired('Jméno nesmí zůstat prázdné.');
$form->addText('prijmeni', 'Příjmení:', 30)
->setRequired('Příjmení nesmí zůstat prázdné.');
$form->addText('prezdivka', 'Přezdívka:', 20);
$form->addSubmit('submit', 'Uložit')
->onClick[] = callback($this, 'novyUzivatelFormSubmitted');
return $form;
}
public function novyUzivatelFormSubmitted(Nette\Forms\Controls\SubmitButton $submitButton)
{
$newPass = 'duklavysco';
$values = $submitButton->getForm()->getValues();
if (strlen($values["email"]) == 0)
{
unset($values["email"]);
}
if (strlen($values["prezdivka"]) == 0)
{
$values["prezdivka"] = $values["jmeno"];
}
$values["heslo"] = md5($newPass);
$values["role"] = 'registered';
try {
$this->db->table($this->table)->insert($values);
$this->flashMessage("Uživatel $values[jmeno] $values[prijmeni] byl přidán! Jeho heslo je '$newPass'.", 'success');
$this->redirect("Ucet:spravovat", $this->db->lastInsertId());
} catch (PDOException $e)
{
$this->flashMessage("Uživatel $values[jmeno] $values[prijmeni] nemohl být přidán!", 'error');
if ($e->errorInfo[1] == 1062)
{
$this->flashMessage("Uživatel s emailem $values[email] už existuje.", 'error');
}
else
{
$this->flashMessage($e->errorInfo[2], 'error');
}
}
}
}
ACC SHELL 2018