/**
  * Gets the form for the data of the model
  * @param mixed $data Data object to preset the form
  * @return zibo\library\html\form\Form
  */
 protected function getForm($data = null)
 {
     $fields = array('preferences');
     $form = new ScaffoldForm($this->request->getBasePath() . '/' . self::ACTION_SAVE, $this->model, $data, $fields, true);
     if (!(!$this->user || $this->user && $this->user->isSuperUser())) {
         $superRoles = $this->getModel(RoleModel::NAME)->getSuperRoles();
         $hiddenRoles = $this->getHiddenRoleIds();
         $field = $form->getField('roles');
         $roles = $field->getOptions();
         foreach ($superRoles as $role) {
             if (array_key_exists($role->id, $roles)) {
                 unset($roles[$role->id]);
             }
         }
         foreach ($hiddenRoles as $role) {
             if (array_key_exists($role, $roles)) {
                 unset($roles[$role]);
             }
         }
         $field->setOptions($roles);
     }
     $form->setIsDisabled(true, 'dateLastLogin');
     $form->setIsDisabled(true, 'lastIp');
     return $form;
 }