public function osobaEditFormSucceeded(Form $form, $values) { if (!$this->user->isLoggedIn()) { $this->flashMessage('Tato funkce je pouze pro registrované. Pro pokračování se přihlašte, prosím.'); $this->redirect('Sign:in'); } if (!$this->user->isInRole('spravce') && $this->user->id != $values->id) { $this->flashMessage('Omlouváme se, ale tato funkce je pouze pro správce.', 'warning'); $this->redirect('Dokumenty:default'); } unset($values->delete); if (isset($values->role)) { $noveRole = $values->role; unset($values->role); } if (empty($values->id)) { $id = $this->uzivatel->insert($values); $this->log->l('uzivatel.create', $id); } else { $id = $values->id; $this->uzivatel->find($id)->update($values); $this->log->l('uzivatel.edit', $id); } if (isset($noveRole)) { $aktualniRole = array_values($this->uzivatel->find($id)->related('role', 'uzivatel_id')->fetchPairs('id', 'role')); sort($aktualniRole); sort($noveRole); $smazane = array_diff($aktualniRole, $noveRole); $pridane = array_diff($noveRole, $aktualniRole); $this->role->deleteRoles($smazane, $id); $this->role->createRoles($pridane, $id); } $this->flashMessage('Osoba byla úspěšně uložena.', 'success'); }