Author: david
Date: Fri Oct 29 17:49:47 2010
New Revision: 8703
Log:
Factor common acl group form elements into separate class.
Added:
trunk/plugins/qbAclPlugin/modules/aclGroup/actions/editDefaultAclAction.class.php
(contents, props changed)
- copied, changed from r8700,
trunk/plugins/qbAclPlugin/modules/aclGroup/actions/editInformationObjectAclAction.class.php
Modified:
trunk/plugins/qbAclPlugin/modules/aclGroup/actions/editInformationObjectAclAction.class.php
Copied and modified:
trunk/plugins/qbAclPlugin/modules/aclGroup/actions/editDefaultAclAction.class.php
(from r8700,
trunk/plugins/qbAclPlugin/modules/aclGroup/actions/editInformationObjectAclAction.class.php)
==============================================================================
---
trunk/plugins/qbAclPlugin/modules/aclGroup/actions/editInformationObjectAclAction.class.php
Fri Oct 29 16:56:55 2010 (r8700, copy source)
+++
trunk/plugins/qbAclPlugin/modules/aclGroup/actions/editDefaultAclAction.class.php
Fri Oct 29 17:49:47 2010 (r8703)
@@ -17,144 +17,101 @@
* along with Qubit Toolkit. If not, see <http://www.gnu.org/licenses/>.
*/
-class AclGroupEditInformationObjectAclAction extends sfAction
+class AclGroupEditDefaultAclAction extends sfAction
{
- public function execute($request)
+ protected function processField($field)
{
- $this->form = new sfForm;
- $this->group = new QubitAclGroup;
-
- if (isset($this->request->id))
+ // If key has an underscore, then we are creating a new permission
+ if (1 == preg_match('/([\w]+)_(.*)/', $field->getName(), $matches))
{
- $this->group = QubitAclGroup::getById($this->request->id);
-
- if (!isset($this->group))
+ list ($action, $uri) = array_slice($matches, 1, 2);
+ $params = $this->context->routing->parse(Qubit::pathInfo($uri));
+ if (isset($params['_sf_route']->resource))
{
- $this->forward404();
+ $resource = $params['_sf_route']->resource;
+ }
+ else
+ {
+ continue;
}
- }
- $this->form->getValidatorSchema()->setOption('allow_extra_fields', true);
+ if (QubitAcl::INHERIT != $this->form->getValue($field->getName()) &&
isset($this->basicActions[$action]))
+ {
+ $aclPermission = new QubitAclPermission;
+ $aclPermission->action = $action;
+ $aclPermission->grantDeny = (QubitAcl::GRANT ==
$this->form->getValue($field->getName())) ? 1 : 0;
+
+ switch ($resource->className)
+ {
+ case 'QubitInformationObject':
+ $aclPermission->object = $resource;
- // Build separate list of permissions by repository and by object
- $this->repositories = array();
- $this->informationObjects = array();
- $this->root = array();
+ break;
- if (null != $this->group->id)
- {
- // Get info object permissions for this group
- $criteria = new Criteria;
- $criteria->addJoin(QubitAclPermission::OBJECT_ID, QubitObject::ID,
Criteria::LEFT_JOIN);
- $criteria->add(QubitAclPermission::GROUP_ID, $this->group->id);
- $c1 = $criteria->getNewCriterion(QubitAclPermission::OBJECT_ID, null,
Criteria::ISNULL);
- $c2 = $criteria->getNewCriterion(QubitObject::CLASS_NAME,
'QubitInformationObject');
- $c1->addOr($c2);
- $criteria->add($c1);
+ case 'QubitRepository':
+ $aclPermission->objectId = QubitInformationObject::ROOT_ID;
+ $aclPermission->setRepository($resource);
- $criteria->addAscendingOrderByColumn(QubitAclPermission::CONSTANTS);
- $criteria->addAscendingOrderByColumn(QubitAclPermission::OBJECT_ID);
+ break;
- if (0 < count($permissions = QubitAclPermission::get($criteria)))
- {
- foreach ($permissions as $p)
- {
- if (null != ($repoId = $p->getConstants(array('name' =>
'repositoryId'))))
- {
- $this->repositories[$repoId][$p->action] = $p;
- }
- else if (null != $p->objectId && QubitInformationObject::ROOT_ID !=
$p->objectId)
- {
- $this->informationObjects[$p->objectId][$p->action] = $p;
- }
- else
- {
- $this->root[$p->action] = $p;
- }
+ default:
+ continue;
}
+
+ $this->group->aclPermissions[] = $aclPermission;
}
}
- // List of actions without translate
- $this->basicActions = QubitInformationObjectAcl::$ACTIONS;
- unset($this->basicActions['translate']);
-
- if ($request->isMethod('post'))
+ // Otherwise, update an existing permission
+ else if (null !== $aclPermission =
QubitAclPermission::getById($field->getName()))
{
- $this->form->bind($request->getPostParameters());
-
- if ($this->form->isValid())
+ if ($this->form->getValue($field->getName) == QubitAcl::INHERIT)
{
- $this->processForm();
- $this->redirect(array($this->group, 'module' => 'aclGroup', 'action'
=> 'indexInformationObjectAcl'));
+ $aclPermission->delete();
+ }
+ else
+ {
+ $aclPermission->grantDeny = (QubitAcl::GRANT ==
$this->form->getValue($field->getName())) ? 1 : 0;
+
+ $this->group->aclPermissions[] = $aclPermission;
}
}
}
protected function processForm()
{
- foreach ($this->request->acl as $key => $value)
+ foreach ($this->form as $field)
{
- // If key has an underscore, then we are creating a new permission
- if (1 == preg_match('/([\w]+)_(.*)/', $key, $matches))
+ if (isset($this->request[$field->getName()]))
{
- 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(QubitInformationObjectAcl::$ACTIONS[$action]))
- {
- $aclPermission = new QubitAclPermission;
- $aclPermission->action = $action;
- $aclPermission->grantDeny = (QubitAcl::GRANT == $value) ? 1 : 0;
-
- switch ($resource->className)
- {
- case 'QubitInformationObject':
- $aclPermission->object = $resource;
-
- break;
-
- case 'QubitRepository':
- $aclPermission->objectId = QubitInformationObject::ROOT_ID;
- $aclPermission->setRepository($resource);
+ $this->processField($field);
+ }
+ }
- break;
+ $this->resource->save();
+ }
- default:
- continue;
- }
+ public function execute($request)
+ {
+ $this->form = new sfForm;
+ $this->form->getValidatorSchema()->setOption('allow_extra_fields', true);
- $this->group->aclPermissions[] = $aclPermission;
- }
- }
+ if (isset($this->request->id))
+ {
+ $this->group = QubitAclGroup::getById($this->request->id);
- // Otherwise, update an existing permission
- else if (null !== $aclPermission = QubitAclPermission::getById($key))
+ if (!isset($this->group))
{
- if ($value == QubitAcl::INHERIT)
- {
- $aclPermission->delete();
- }
- else
- {
- $aclPermission->grantDeny = (QubitAcl::GRANT == $value) ? 1 : 0;
-
- $this->group->aclPermissions[] = $aclPermission;
- }
+ $this->forward404();
}
}
- // Save updates
- $this->group->save();
-
- return $this;
+ // HACK Use static::$NAMES in PHP 5.3,
+ // http://php.net/oop5.late-static-bindings
+ $class = new ReflectionClass($this);
+ foreach ($class->getStaticPropertyValue('NAMES') as $name)
+ {
+ $this->addField($name);
+ }
}
}
Modified:
trunk/plugins/qbAclPlugin/modules/aclGroup/actions/editInformationObjectAclAction.class.php
==============================================================================
---
trunk/plugins/qbAclPlugin/modules/aclGroup/actions/editInformationObjectAclAction.class.php
Fri Oct 29 17:37:08 2010 (r8702)
+++
trunk/plugins/qbAclPlugin/modules/aclGroup/actions/editInformationObjectAclAction.class.php
Fri Oct 29 17:49:47 2010 (r8703)
@@ -17,24 +17,11 @@
* along with Qubit Toolkit. If not, see <http://www.gnu.org/licenses/>.
*/
-class AclGroupEditInformationObjectAclAction extends sfAction
+class AclGroupEditInformationObjectAclAction extends
AclGroupEditDefaultAclAction
{
public function execute($request)
{
- $this->form = new sfForm;
- $this->group = new QubitAclGroup;
-
- if (isset($this->request->id))
- {
- $this->group = QubitAclGroup::getById($this->request->id);
-
- if (!isset($this->group))
- {
- $this->forward404();
- }
- }
-
- $this->form->getValidatorSchema()->setOption('allow_extra_fields', true);
+ parent::execute($request);
// Build separate list of permissions by repository and by object
$this->repositories = array();
@@ -90,71 +77,4 @@
}
}
}
-
- 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(QubitInformationObjectAcl::$ACTIONS[$action]))
- {
- $aclPermission = new QubitAclPermission;
- $aclPermission->action = $action;
- $aclPermission->grantDeny = (QubitAcl::GRANT == $value) ? 1 : 0;
-
- switch ($resource->className)
- {
- case 'QubitInformationObject':
- $aclPermission->object = $resource;
-
- break;
-
- case 'QubitRepository':
- $aclPermission->objectId = QubitInformationObject::ROOT_ID;
- $aclPermission->setRepository($resource);
-
- break;
-
- default:
- continue;
- }
-
- $this->group->aclPermissions[] = $aclPermission;
- }
- }
-
- // Otherwise, update an existing permission
- else if (null !== $aclPermission = QubitAclPermission::getById($key))
- {
- if ($value == QubitAcl::INHERIT)
- {
- $aclPermission->delete();
- }
- else
- {
- $aclPermission->grantDeny = (QubitAcl::GRANT == $value) ? 1 : 0;
-
- $this->group->aclPermissions[] = $aclPermission;
- }
- }
- }
-
- // Save updates
- $this->group->save();
-
- return $this;
- }
}
--
You received this message because you are subscribed to the Google Groups
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/qubit-commits?hl=en.