ACC SHELL

Path : /srv/www/vhosts/duklavysco/app/presenters/
File Upload :
Current File : //srv/www/vhosts/duklavysco/app/presenters/MujUcetPresenter.php

<?php

/**
 * MujUcet presenter.
 */
class MujUcetPresenter extends BasePresenter
{

    private $name = 'můj účet';
    private $presenter = 'MujUcet';
    private $table = 'uzivatele';
    private $resource = 'mujUcet';

	public function renderDefault()
	{
        if (!$this->user->isAllowed($this->resource, 'edit', $this->user->identity->id, $this->user->identity->id))
        {
            $this->flashMessage("K prohlížení sekce " . ucfirst($this->name) . " nemáš oprávnění!", 'error');
            $this->redirect('Homepage:default');
        }

        if (file_exists('images/hraci/' . $this->user->identity->id . '.png'))
        {
            $this->template->fotka = $this->user->identity->id;
        }
        else
        {
            $this->template->fotka = 'default-profile';
        }
	}

    protected function createComponentMujUcetForm()
    {
        $form = new Nette\Application\UI\Form;

        $form->addUpload('photo', 'Fotka:')
//            ->addRule(Nette\Application\UI\Form::IMAGE, 'Fotka musí být formátu JPEG, PNG nebo GIF.')
            ->addRule(Nette\Application\UI\Form::MAX_FILE_SIZE, 'Maximální velikost souboru je 2 MB.', 2 * 1024 * 1024 /* v bytech */);
        $form->addText('email', 'Email:', 30)
            ->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->addDatePicker('clenemOd', 'Členem od:');
        $form->addText('typickaVlastnost', 'Typická vlastnost:');
        $form->addHidden('typickaVlastnostZmenena');
        $form->addSelect('aktivni', 'Status:', array(1 => 'Hraju!', 2 => 'Nehraju :-('));

        $defaults = $this->db->table($this->table)->get($this->user->identity->id)->toArray();

        $typickaVlastnostZmenena = $this->db->table($this->table)->get($this->user->identity->id)->typickaVlastnostZmenena;
        $typickaVlastnostMuzeBytZmenena = clone $typickaVlastnostZmenena;
        $typickaVlastnostMuzeBytZmenena->add(DateInterval::createFromDateString($this->typickaVlastnostProdleva));
        if ($typickaVlastnostMuzeBytZmenena > new DateTime())
        {
            $keZmeneZbyva = $typickaVlastnostMuzeBytZmenena->diff(new DateTime());
            $form['typickaVlastnost']
                ->setAttribute('readonly', 'readonly')
                ->setAttribute('class', 'qtip questionmark')
                ->setAttribute('title', 'Půjde znovu změnit až za ' . $keZmeneZbyva->format("%d dny, %h hod a %i min") . '.');
        }
        else
        {
            $form['typickaVlastnost']
                ->setAttribute('class', 'qtip exclamationmark')
                ->setAttribute('title', 'Pokud upravíš tuto vlastnost, půjde znovu změnit až za ' . DateInterval::createFromDateString($this->typickaVlastnostProdleva)->format("%d") . ' dny.');
        }

        $defaults["clenemOd"] = $defaults["clenemOd"]->format('d. m. Y');
        $form->setDefaults($defaults);

        $form->addSubmit('submit', 'Uložit')
            ->onClick[] = callback($this, 'mujUcetFormSubmitted');

        return $form;
    }

    public function mujUcetFormSubmitted(Nette\Forms\Controls\SubmitButton $submitButton)
    {
        $values = $submitButton->getForm()->getValues();

        $photo = $values['photo'];
        if ($photo->error == 0)
        {
            try {
                $image = $photo->toImage();
                $image->resize(250, 250);
                $image->save('images/hraci/' . $this->user->identity->id . '.png', 100, IMAGETYPE_PNG);
            } catch (Nette\UnknownImageFileException $e) {
                $this->flashMessage('Nahrání obrázku selhalo. Povolené přípony jsou JPG, GIF a PNG.', 'error');
            }
        }
        unset($values['photo']);

        if ($this->db->table($this->table)->get($this->user->identity->id)->typickaVlastnost != $values['typickaVlastnost'])
        {
            $values['typickaVlastnostZmenena'] = date('Y-m-d H:i');
        }
        else
        {
            unset($values['typickaVlastnostZmenena']);
        }

        if (strlen($values["prezdivka"]) == 0)
        {   // prezdivka by nemela byt prazdna
            $values["prezdivka"] = $values["jmeno"];
        }

        $values['clenemOd'] = DateTime::createFromFormat('d. m. Y', $values["clenemOd"])->format('Y-m-d');

        $this->db->table($this->table)->get($this->user->identity->id)->update($values);
        $this->flashMessage('Údaje byly uloženy!', 'success');
        $this->redirect("$this->presenter:");
    }

    protected function createComponentZmenaHeslaForm()
    {
        $form = new Nette\Application\UI\Form;

        $form->addPassword('heslo', 'Heslo:', 20)
            ->setRequired('Vyplň heslo, chceš-li ho změnit.')
            ->addRule(Nette\Application\UI\Form::MIN_LENGTH, 'Heslo musí mít alespoň %d znaky.', 4);
        $form->addPassword('heslo2', 'Heslo (podruhé):', 20)
            ->setRequired('Zadej heslo ještě jednou pro kontrolu.')
            ->addRule(Nette\Application\UI\Form::EQUAL, 'Hesla se neshodují.', $form['heslo']);

        $form->addSubmit('submit', 'Změnit')
            ->onClick[] = callback($this, 'zmenaHeslaFormSubmitted');

        return $form;
    }

    public function zmenaHeslaFormSubmitted(Nette\Forms\Controls\SubmitButton $submitButton)
    {
        $values = $submitButton->getForm()->getValues();

        $values["heslo"] = md5($values["heslo"]);
        unset($values["heslo2"]);

        $this->db->table($this->table)->get($this->user->identity->id)->update($values);
        $this->flashMessage('Heslo bylo změněno!', 'success');
        $this->redirect("$this->presenter:");
    }

}

ACC SHELL 2018