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
-~----------~----~----~----~------~----~------~--~---

Reply via email to