From c64fc0c9bd51b7fce8cfd2738d55de99cea976aa Mon Sep 17 00:00:00 2001 From: Neil Blakey-Milner Date: Fri, 3 Feb 2006 10:04:36 +0000 Subject: [PATCH] Add Workflow State Permission Assignments, allowing permissions on documents to be overridden by virtue of their workflow state. --- config/tableMappings.inc | 1 + lib/workflow/workflowstatepermissionsassignment.php | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sql/mysql/upgrade/2.99.8/20-state_permission_assignments.sql | 12 ++++++++++++ 3 files changed, 86 insertions(+), 0 deletions(-) create mode 100644 lib/workflow/workflowstatepermissionsassignment.php create mode 100644 sql/mysql/upgrade/2.99.8/20-state_permission_assignments.sql diff --git a/config/tableMappings.inc b/config/tableMappings.inc index 30c4df6..6144077 100644 --- a/config/tableMappings.inc +++ b/config/tableMappings.inc @@ -149,4 +149,5 @@ $default->document_content_version_table = "document_content_version"; $default->trigger_selection_table = "trigger_selection"; $default->type_workflow_map_table = "type_workflow_map"; $default->folder_workflow_map_table = "folder_workflow_map"; +$default->workflow_state_permission_assignments_table = "workflow_state_permission_assignments"; ?> diff --git a/lib/workflow/workflowstatepermissionsassignment.php b/lib/workflow/workflowstatepermissionsassignment.php new file mode 100644 index 0000000..1c4f59a --- /dev/null +++ b/lib/workflow/workflowstatepermissionsassignment.php @@ -0,0 +1,73 @@ + "id", + "iStateId" => "workflow_state_id", + "iPermissionId" => "permission_id", + "iDescriptorId" => "permission_descriptor_id", + ); + + var $_bUsePearError = true; + + function getStateId() { return $this->iStateId; } + function getPermissionId() { return $this->iPermissionId; } + function getDescriptorId() { return $this->iDescriptorId; } + function setStateId($mValue) { $this->iStateId = $mValue; } + function setPermissionId($mValue) { $this->iPermissionId = $mValue; } + function setDescriptorId($mValue) { $this->iDescriptorId = $mValue; } + + function _table () { + return KTUtil::getTableName('workflow_state_permission_assignments'); + } + + // STATIC + function &get($iId) { + return KTEntityUtil::get('KTWorkflowStatePermissionAssignment', $iId); + } + + // STATIC + function &createFromArray($aOptions) { + return + KTEntityUtil::createFromArray('KTWorkflowStatePermissionAssignment', $aOptions); + } + + // STATIC + function &getList($sWhereClause = null) { + return + KTEntityUtil::getList2('KTWorkflowStatePermissionAssignment', $sWhereClause); + } +} + +?> diff --git a/sql/mysql/upgrade/2.99.8/20-state_permission_assignments.sql b/sql/mysql/upgrade/2.99.8/20-state_permission_assignments.sql new file mode 100644 index 0000000..a1840c9 --- /dev/null +++ b/sql/mysql/upgrade/2.99.8/20-state_permission_assignments.sql @@ -0,0 +1,12 @@ +CREATE TABLE `workflow_state_permission_assignments` ( + `id` int(11) NOT NULL, + `workflow_state_id` int(11) NOT NULL, + `permission_id` int(11) NOT NULL, + `permission_descriptor_id` int(11) NOT NULL, + PRIMARY KEY (`id`), + KEY `permission_id` (`permission_id`), + KEY `permission_descriptor_id` (`permission_descriptor_id`), + KEY `workflow_state_id` (`workflow_state_id`), + CONSTRAINT `workflow_state_permission_assignments_ibfk_7` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`), + CONSTRAINT `workflow_state_permission_assignments_ibfk_8` FOREIGN KEY (`permission_descriptor_id`) REFERENCES `permission_descriptors` (`id`) +) TYPE=InnoDB; -- libgit2 0.21.4