public function execute($request)
 {
     $this->group = QubitAclGroup::getById($request->id);
     if (!isset($this->group)) {
         $this->forward404();
     }
     $criteria = new Criteria();
     $criteria->add(QubitAclPermission::GROUP_ID, $this->group->id);
     $criteria->add(QubitAclPermission::ACTION, 'translate');
     $criteria->add(QubitAclPermission::GRANT_DENY, 1);
     $this->translate = 'No';
     if (null !== QubitAclPermission::getOne($criteria)) {
         $this->translate = 'Yes';
     }
     // Require administrator credentials
     if (!QubitAcl::check($this->group, 'read')) {
         $this->redirect('admin/secure');
     }
 }
 protected function processField($field)
 {
     switch ($name = $field->getName()) {
         case 'password':
             if (0 < strlen(trim($this->form->getValue('password')))) {
                 $this->resource->setPassword($this->form->getValue('password'));
             }
             break;
         case 'confirmPassword':
             // Don't do anything for confirmPassword
             break;
         case 'groups':
             $newGroupIds = $formGroupIds = array();
             if (null != ($groups = $this->form->getValue('groups'))) {
                 foreach ($groups as $item) {
                     $newGroupIds[$item] = $formGroupIds[$item] = $item;
                 }
             } else {
                 $newGroupIds = $formGroupIds = array();
             }
             // Don't re-add existing groups + delete exiting groups that are no longer
             // in groups list
             foreach ($this->resource->aclUserGroups as $item) {
                 if (in_array($item->groupId, $formGroupIds)) {
                     unset($newGroupIds[$item->groupId]);
                 } else {
                     $item->delete();
                 }
             }
             foreach ($newGroupIds as $item) {
                 $userGroup = new QubitAclUserGroup();
                 $userGroup->groupId = $item;
                 $this->resource->aclUserGroups[] = $userGroup;
             }
             break;
         case 'translate':
             $languages = $this->form->getValue('translate');
             $criteria = new Criteria();
             $criteria->add(QubitAclPermission::USER_ID, $this->resource->id);
             $criteria->addAnd(QubitAclPermission::USER_ID, null, Criteria::ISNOTNULL);
             $criteria->add(QubitAclPermission::ACTION, 'translate');
             if (null === ($permission = QubitAclPermission::getOne($criteria))) {
                 $permission = new QubitAclPermission();
                 $permission->userId = $this->resource->id;
                 $permission->action = 'translate';
                 $permission->grantDeny = 1;
                 $permission->conditional = 'in_array(%p[language], %k[languages])';
             } else {
                 if (!is_array($languages)) {
                     // If $languages is not an array, then remove the translate permission
                     $permission->delete();
                 }
             }
             if (is_array($languages)) {
                 $permission->setConstants(array('languages' => $languages));
                 $permission->save();
             }
             break;
         default:
             $this->resource[$name] = $this->form->getValue($name);
     }
 }
 /**
  * Process form fields
  *
  * @param $field mixed symfony form widget
  * @return void
  */
 protected function processField($field)
 {
     switch ($name = $field->getName()) {
         case 'translate':
             $criteria = new Criteria();
             $criteria->add(QubitAclPermission::GROUP_ID, $this->group->id);
             $criteria->add(QubitAclPermission::ACTION, 'translate');
             $translatePermission = QubitAclPermission::getOne($criteria);
             if (1 == $this->form->getValue($name)) {
                 if (null === $translatePermission) {
                     $translatePermission = new QubitAclPermission();
                     $translatePermission->action = 'translate';
                     $translatePermission->grantDeny = 1;
                 } else {
                     $translatePermission->grantDeny = 1;
                 }
                 $this->group->aclPermissions[] = $translatePermission;
             } else {
                 if (null !== $translatePermission) {
                     $translatePermission->delete();
                 }
             }
             break;
         default:
             $this->group[$name] = $this->form->getValue($name);
     }
 }