Author: david
Date: Wed Sep 23 18:30:16 2009
New Revision: 3489
Log:
Add ACL fixtures and user permissions to migrate task.
Modified:
trunk/lib/task/migrate/QubitMigrate107to108.class.php
Modified: trunk/lib/task/migrate/QubitMigrate107to108.class.php
==============================================================================
--- trunk/lib/task/migrate/QubitMigrate107to108.class.php Wed Sep 23
18:05:34 2009 (r3488)
+++ trunk/lib/task/migrate/QubitMigrate107to108.class.php Wed Sep 23
18:30:16 2009 (r3489)
@@ -38,11 +38,17 @@
$this->deleteStubObjects();
// Insert new taxonomy and terms
+ $this->addAclGroups();
+ $this->addAclActions();
+ $this->addAclPermissions();
$this->addActorRelationTaxonomyTerms();
$this->addActorRelationNoteTaxonomyTerms();
$this->addTermRelationTaxonomyTerms();
- $this->addStatusTaxonomyTerms();
$this->addRootTaxonomyTerms();
+ $this->addStatusTaxonomyTerms();
+
+ // Assign equivalent access permissions for users in ACL scheme
+ $this->copyUserRoleRelationToAclUserGroup();
// Alter qubit classes (methods ordered alphabetically)
$this->alterQubitMenus();
@@ -72,6 +78,211 @@
return $this;
}
+ protected function addAclGroups()
+ {
+ $this->data['QubitAclGroup'] = array(
+ 'QubitAclGroup_ROOT' => array(
+ 'id' => '<?php echo QubitAclGroup::ROOT_ID."\n" ?>',
+ ),
+ 'QubitAclGroup_anonymous' => array(
+ 'id' => '<?php echo QubitAclGroup::ANONYMOUS_ID."\n" ?>',
+ 'parent_id' => 'QubitAclGroup_ROOT',
+ 'name' => array('en' => 'anonymous')
+ ),
+ 'QubitAclGroup_authenticated' => array(
+ 'id' => '<?php echo QubitAclGroup::AUTHENTICATED_ID."\n" ?>',
+ 'parent_id' => 'QubitAclGroup_anonymous',
+ 'name' => array('en' => 'authenticated')
+ ),
+ 'QubitAclGroup_administrator' => array(
+ 'id' => '<?php echo QubitAclGroup::ADMINISTRATOR_ID."\n" ?>',
+ 'parent_id' => 'QubitAclGroup_authenticated',
+ 'name' => array('en' => 'administrator')
+ ),
+ 'QubitAclGroup_editor' => array(
+ 'id' => '<?php echo QubitAclGroup::EDITOR_ID."\n" ?>',
+ 'parent_id' => 'QubitAclGroup_authenticated',
+ 'name' => array('en' => 'editor')
+ ),
+ 'QubitAclGroup_contributor' => array(
+ 'id' => '<?php echo QubitAclGroup::CONTRIBUTOR_ID."\n" ?>',
+ 'parent_id' => 'QubitAclGroup_authenticated',
+ 'name' => array('en' => 'contributor')
+ ),
+ 'QubitAclGroup_translator' => array(
+ 'id' => '<?php echo QubitAclGroup::TRANSLATOR_ID."\n" ?>',
+ 'parent_id' => 'QubitAclGroup_authenticated',
+ 'name' => array('en' => 'translator')
+ )
+ );
+
+ return $this;
+ }
+
+ protected function addAclActions()
+ {
+ $this->data['QubitAclAction'] = array(
+ 'QubitAclAction_create' => array(
+ 'id' => '<?php echo QubitAclAction::CREATE_ID."\n" ?>',
+ 'name' => array('en' => 'create')
+ ),
+ 'QubitAclAction_read' => array(
+ 'id' => '<?php echo QubitAclAction::READ_ID."\n" ?>',
+ 'name' => array('en' => 'read')
+ ),
+ 'QubitAclAction_update' => array(
+ 'id' => '<?php echo QubitAclAction::UPDATE_ID."\n" ?>',
+ 'name' => array('en' => 'update')
+ ),
+ 'QubitAclAction_delete' => array(
+ 'id' => '<?php echo QubitAclAction::DELETE_ID."\n" ?>',
+ 'name' => array('en' => 'delete')
+ ),
+ 'QubitAclAction_view_draft' => array(
+ 'id' => '<?php echo QubitAclAction::VIEW_DRAFT_ID."\n" ?>',
+ 'name' => array('en' => 'view draft')
+ ),
+ 'QubitAclAction_publish' => array(
+ 'id' => '<?php echo QubitAclAction::PUBLISH_ID."\n" ?>',
+ 'name' => array('en' => 'publish')
+ )
+ );
+
+ return $this;
+ }
+
+ protected function addAclPermissions()
+ {
+ $this->data['QubitAclPermission'] = array(
+ 'QubitAclPermission_anonymous_read' => array(
+ 'group_id' => 'QubitAclGroup_anonymous',
+ 'action_id' => '<?php echo QubitAclAction::READ_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_authenticated_read' => array(
+ 'group_id' => 'QubitAclGroup_authenticated',
+ 'action_id' => '<?php echo QubitAclAction::READ_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_admin_create' => array(
+ 'group_id' => 'QubitAclGroup_administrator',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::CREATE_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_admin_read' => array(
+ 'group_id' => 'QubitAclGroup_administrator',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::READ_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_admin_update' => array(
+ 'group_id' => 'QubitAclGroup_administrator',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::UPDATE_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_admin_delete' => array(
+ 'group_id' => 'QubitAclGroup_administrator',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::DELETE_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_admin_view_draft' => array(
+ 'group_id' => 'QubitAclGroup_administrator',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::VIEW_DRAFT_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_admin_publish' => array(
+ 'group_id' => 'QubitAclGroup_administrator',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::PUBLISH_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_editor_create' => array(
+ 'group_id' => 'QubitAclGroup_editor',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::CREATE_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_editor_read' => array(
+ 'group_id' => 'QubitAclGroup_editor',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::READ_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_editor_update' => array(
+ 'group_id' => 'QubitAclGroup_editor',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::UPDATE_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_editor_delete' => array(
+ 'group_id' => 'QubitAclGroup_editor',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::DELETE_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_editor_view_draft' => array(
+ 'group_id' => 'QubitAclGroup_editor',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::VIEW_DRAFT_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_editor_publish' => array(
+ 'group_id' => 'QubitAclGroup_editor',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::PUBLISH_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_contributor_create' => array(
+ 'group_id' => 'QubitAclGroup_contributor',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::CREATE_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_contributor_read' => array(
+ 'group_id' => 'QubitAclGroup_contributor',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::READ_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_contributor_update' => array(
+ 'group_id' => 'QubitAclGroup_contributor',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::UPDATE_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_contributor_view_draft' => array(
+ 'group_id' => 'QubitAclGroup_contributor',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::VIEW_DRAFT_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_translator_read' => array(
+ 'group_id' => 'QubitAclGroup_translator',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::READ_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_translator_update' => array(
+ 'group_id' => 'QubitAclGroup_translator',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::UPDATE_ID."\n" ?>',
+ 'grant_deny' => '1',
+ ),
+ 'QubitAclPermission_translator_view_draft' => array(
+ 'group_id' => 'QubitAclGroup_translator',
+ 'object_id' => '<?php echo QubitInformationObject::ROOT_ID."\n" ?>',
+ 'action_id' => '<?php echo QubitAclAction::VIEW_DRAFT_ID."\n" ?>',
+ 'grant_deny' => '1',
+ )
+ );
+
+ return $this;
+ }
+
/**
* Add the 'Actor Relation Type' taxonomy and terms
*
@@ -253,6 +464,31 @@
return $this;
}
+ protected function copyUserRoleRelationToAclUserGroup()
+ {
+ foreach ($this->data['QubitUserRoleRelation'] as $userRoleRelation)
+ {
+ $role = $this->data['QubitRole'][$userRoleRelation['role_id']];
+
+ if (1 !== preg_match('/QubitRole::([A-Z_]+)/', $role['id'], $matches))
+ {
+ continue;
+ }
+ $groupId = '<?php echo QubitAclGroup::'.$matches[1].'."\n" ?>';
+
+ if (1 !== preg_match('/_(\d+)$/', $userRoleRelation['user_id'],
$matches))
+ {
+ continue;
+ }
+ $name = 'QubitUserGroup_'.$matches[1].'_'.$role['name'];
+
+ $this->data['QubitAclUserGroup'][$name] = array(
+ 'user_id' => $userRoleRelation['user_id'],
+ 'group_id' => $groupId
+ );
+ }
+ }
+
/**
* Alter QubitMenu data
*
@@ -696,7 +932,12 @@
'RELATION_NOTE_DATE_DISPLAY_ID',
//Term relation taxonomy
'TERM_RELATION_EQUIVALENCE_ID',
- 'TERM_RELATION_ASSOCIATIVE_ID'
+ 'TERM_RELATION_ASSOCIATIVE_ID',
+ //Status types taxonomy
+ 'STATUS_TYPE_PUBLICATION_ID',
+ // Publication status taxonomy
+ 'PUBLICATION_STATUS_DRAFT_ID',
+ 'PUBLICATION_STATUS_PUBLISHED_ID'
);
// Restack array with Constant values at top
@@ -753,7 +994,11 @@
'QubitObjectTermRelation',
'QubitRelation',
'QubitProperty',
- 'QubitNote'
+ 'QubitNote',
+ 'QubitAclGroup',
+ 'QubitAclUserGroup',
+ 'QubitAclAction',
+ 'QubitAclPermission'
);
$originalData = $this->data;
@@ -779,6 +1024,18 @@
$this->data = $sortedData;
+ // Now put QubitInformationObject ROOT id in first!
+ /*
+ $infoObjectRootKey = $this->getRowKey('QubitInformationObject', 'lft',
'1');
+
+ $this->data['QubitInformationObject'][$infoObjectRootKey]['id'] = '<?php
echo QubitInformationObject::ROOT_ID."\n" ?>';
+
+ $this->data = array_merge(
+ array('QubitObject' => array('QubitObject_2' => array('id' => '2'))),
+ $this->data
+ );
+ */
+
return $this;
}
} // Close class QubitMigrate107to108
--~--~---------~--~----~------------~-------~--~----~
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.ca/group/qubit-commits?hl=en
-~----------~----~----~----~------~----~------~--~---