protected function processForm()
 {
     foreach ($this->request->acl as $key => $value) {
         // If key has an underscore, then we are creating a new permission
         if (1 == preg_match('/([\\w]+)_(.*)/', $key, $matches)) {
             list($action, $uri) = array_slice($matches, 1, 2);
             $params = $this->context->routing->parse(Qubit::pathInfo($uri));
             if (isset($params['_sf_route']->resource)) {
                 $resource = $params['_sf_route']->resource;
             } else {
                 continue;
             }
             if (QubitAcl::INHERIT != $value && isset($this->basicActions[$action])) {
                 $aclPermission = new QubitAclPermission();
                 $aclPermission->action = $action;
                 $aclPermission->grantDeny = QubitAcl::GRANT == $value ? 1 : 0;
                 switch ($resource->className) {
                     case 'QubitRepository':
                         $aclPermission->objectId = QubitInformationObject::ROOT_ID;
                         $aclPermission->setRepository($resource);
                         break;
                     case 'QubitTaxonomy':
                         $aclPermission->objectId = QubitTerm::ROOT_ID;
                         $aclPermission->setTaxonomy($resource);
                         break;
                     default:
                         $aclPermission->object = $resource;
                 }
                 $this->resource->aclPermissions[] = $aclPermission;
             }
         } else {
             if (null !== ($aclPermission = QubitAclPermission::getById($key))) {
                 if (QubitAcl::INHERIT == $value) {
                     $aclPermission->delete();
                 } else {
                     $aclPermission->grantDeny = QubitAcl::GRANT == $value ? 1 : 0;
                     $this->resource->aclPermissions[] = $aclPermission;
                 }
             }
         }
     }
     $this->resource->save();
 }