$user_id = $user->attribute("contentobject_id"); $workflowGroup = eZWorkflowGroup::create($user_id); $workflowGroup->setAttribute("name", ezpI18n::tr('kernel/workflow/groupedit', "New WorkflowGroup")); $WorkflowGroupID = $workflowGroup->attribute("id"); } //$assignedWorkflows = $workflowGroup->fetchWorkflowList(); //$isRemoveTried = false; $http = eZHTTPTool::instance(); if ($http->hasPostVariable("DiscardButton")) { $Module->redirectTo($Module->functionURI("grouplist")); return; } // Validate input $requireFixup = false; // Apply HTTP POST variables eZHTTPPersistence::fetch("WorkflowGroup", eZWorkflowGroup::definition(), $workflowGroup, $http, false); // Set new modification date $date_time = time(); $workflowGroup->setAttribute("modified", $date_time); $user = eZUser::currentUser(); $user_id = $user->attribute("contentobject_id"); $workflowGroup->setAttribute("modifier_id", $user_id); // Discard existing events, workflow version 1 and store version 0 if ($http->hasPostVariable("StoreButton")) { if ($http->hasPostVariable("WorkflowGroup_name")) { $name = $http->postVariable("WorkflowGroup_name"); } $workflowGroup->setAttribute("name", $name); // Set new modification date $date_time = time(); $workflowGroup->setAttribute("modified", $date_time);
function groupList() { $this->AllGroups = eZWorkflowGroup::fetchList(); return $this->AllGroups; }
$http = eZHTTPTool::instance(); if ($http->hasPostVariable("EditGroupButton") && $http->hasPostVariable("EditGroupID")) { $Module->redirectTo($Module->functionURI("groupedit") . "/" . $http->postVariable("EditGroupID")); return; } if ($http->hasPostVariable("NewGroupButton")) { $params = array(); $Module->redirectTo($Module->functionURI("groupedit")); return; } $sorting = null; if (!isset($TemplateData) or !is_array($TemplateData)) { $TemplateData = array(array("name" => "groups", "http_base" => "ContentClass", "data" => array("command" => "group_list", "type" => "class"))); } $Module->setTitle(ezpI18n::tr('kernel/workflow', 'Workflow group list')); $tpl = eZTemplate::factory(); $user = eZUser::currentUser(); foreach ($TemplateData as $tpldata) { $tplname = $tpldata["name"]; $data = $tpldata["data"]; $asObject = isset($data["as_object"]) ? $data["as_object"] : true; $base = $tpldata["http_base"]; unset($list); $list = eZWorkflowGroup::fetchList($asObject); removeSelectedGroups($http, $list, $base); $tpl->setVariable($tplname, $list); } $tpl->setVariable("module", $Module); $Result = array(); $Result['content'] = $tpl->fetch("design:workflow/grouplist.tpl"); $Result['path'] = array(array('text' => ezpI18n::tr('kernel/workflow', 'Workflow'), 'url' => false), array('text' => ezpI18n::tr('kernel/workflow', 'Group list'), 'url' => false));
if ($workflow->attribute('id') === $inGroup->attribute('workflow_id')) { $list[] = $workflow; } } } $templist_in_group = eZWorkflowGroupLink::fetchWorkflowList(1, $WorkflowGroupID, $asObject = true); $tempworkflow_list = eZWorkflow::fetchList(1); $temp_list = array(); foreach ($tempworkflow_list as $tmpWorkflow) { foreach ($templist_in_group as $tmpInGroup) { if ($tmpWorkflow->attribute('id') === $tmpInGroup->attribute('workflow_id')) { $temp_list[] = $tmpWorkflow; } } } $Module->setTitle(ezpI18n::tr('kernel/workflow', 'Workflow list of group') . ' ' . $WorkflowGroupID); $WorkflowgroupInfo = eZWorkflowGroup::fetch($WorkflowGroupID); if (!$WorkflowgroupInfo) { return $Module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel'); } $tpl = eZTemplate::factory(); $tpl->setVariable("temp_workflow_list", $temp_list); $tpl->setVariable("group_id", $WorkflowGroupID); $WorkflowGroupName = $WorkflowgroupInfo->attribute("name"); $tpl->setVariable("group", $WorkflowgroupInfo); $tpl->setVariable("group_name", $WorkflowGroupName); $tpl->setVariable('workflow_list', $list); $tpl->setVariable('module', $Module); $Result = array(); $Result['content'] = $tpl->fetch('design:workflow/workflowlist.tpl'); $Result['path'] = array(array('text' => ezpI18n::tr('kernel/workflow', 'Workflow'), 'url' => false), array('text' => ezpI18n::tr('kernel/workflow', 'List'), 'url' => false));
static function removeSelected($id) { eZPersistentObject::removeObject(eZWorkflowGroup::definition(), array("id" => $id)); }
* @package kernel */ $Module = $Params['Module']; // $execStack = eZExecutionStack::instance(); // $execStack->clear(); // $execStack->addEntry( $Module->functionURI( 'list' ), // $Module->attribute( 'name' ), 'list' ); $http = eZHTTPTool::instance(); if ($http->hasPostVariable('NewGroupButton')) { return $Module->run('groupedit', array()); } if ($http->hasPostVariable('NewWorkflowButton')) { return $Module->run('edit', array()); } if ($http->hasPostVariable('DeleteButton') and $http->hasPostVariable('Workflow_id_checked')) { eZWorkflow::setIsEnabled(false, $http->postVariable('Workflow_id_checked')); } $groupList = eZWorkflowGroup::fetchList(); $workflows = eZWorkflow::fetchList(); $workflowList = array(); foreach ($workflows as $workflow) { $workflowList[$workflow->attribute('id')] = $workflow; } $Module->setTitle('Workflow list'); $tpl = eZTemplate::factory(); $tpl->setVariable('workflow_list', $workflowList); $tpl->setVariable('group_list', $groupList); $tpl->setVariable('module', $Module); $Result = array(); $Result['content'] = $tpl->fetch('design:workflow/list.tpl'); $Result['path'] = array(array('url' => '/workflow/list/', 'text' => ezpI18n::tr('kernel/workflow', 'Workflow list')));
} //$assignedWorkflows = $workflowGroup->fetchWorkflowList(); //$isRemoveTried = false; $http = eZHTTPTool::instance(); if ( $http->hasPostVariable( "DiscardButton" ) ) { $Module->redirectTo( $Module->functionURI( "grouplist" ) ); return; } // Validate input $requireFixup = false; // Apply HTTP POST variables eZHTTPPersistence::fetch( "WorkflowGroup", eZWorkflowGroup::definition(), $workflowGroup, $http, false ); // Set new modification date $date_time = time(); $workflowGroup->setAttribute( "modified", $date_time ); $user = eZUser::currentUser(); $user_id = $user->attribute( "contentobject_id" ); $workflowGroup->setAttribute( "modifier_id", $user_id ); // Discard existing events, workflow version 1 and store version 0 if ( $http->hasPostVariable( "StoreButton" ) ) { if ( $http->hasPostVariable( "WorkflowGroup_name" ) ) { $name = $http->postVariable( "WorkflowGroup_name" );
function execute( $xml ) { $workflowGroupList = $xml->getElementsByTagName( 'WorkflowGroup' ); $user = eZUser::currentUser(); $userID = $user->attribute( "contentobject_id" ); foreach ( $workflowGroupList as $workflowGroupNode ) { $groupName = $workflowGroupNode->getAttribute( 'name' ); $referenceID = $workflowGroupNode->getAttribute( 'referenceID' ); $groupExistAction = $workflowGroupNode->getAttribute( 'groupExistAction' ); $workflowGroup = null; if ( $groupExistAction == 'keep' ) { $workflowGroupList = eZWorkflowGroup::fetchList(); foreach ( $workflowGroupList as $workflowGroupItem ) { if ( $workflowGroupItem->attribute( 'name' ) == $groupName ) { $workflowGroup = $workflowGroupItem; break; } } } if ( $workflowGroup !== null ) { $this->writeMessage( "\tWorkflow Group '$groupName' already exists." , 'notice' ); } else { $this->writeMessage( "\tWorkflow Group '$groupName' will be created." , 'notice' ); $workflowGroup = eZWorkflowGroup::create( $userID ); $workflowGroup->setAttribute( "name", $groupName ); $workflowGroup->store(); } $WorkflowGroupID = $workflowGroup->attribute( "id" ); $refArray = array(); if ( $referenceID ) { $refArray[$referenceID] = $WorkflowGroupID; } $this->addReference( $refArray ); $workflowList = $workflowGroupNode->getElementsByTagName( 'Workflow' ); foreach ( $workflowList as $workflowNode ) { $refArray = array(); $workflowName = $workflowNode->getAttribute( 'name' ); $workflowTypeString = $workflowNode->getAttribute( 'workflowTypeString' ); $referenceID = $workflowNode->getAttribute( 'referenceID' ); $workflowExistAction = $workflowNode->getAttribute( 'workflowExistAction' ); $WorkflowID = $workflowNode->getAttribute( 'id' ); $workflow = null; $hasWorkflowDraft = false; $db = eZDB::instance(); if ( !$workflowExistAction ) { $workflowExistAction = 'extend'; } if ( $WorkflowID ) { $workflow = eZWorkflow::fetch( $WorkflowID, true, 1 ); if ( !is_object( $workflow ) ) { $workflow = eZWorkflow::fetch( $WorkflowID, true, 0 ); if ( is_object( $workflow ) ) { $workflowGroups = eZWorkflowGroupLink::fetchGroupList( $WorkflowID, 0, true ); $db->begin(); foreach ( $workflowGroups as $workflowGroup ) { $groupID = $workflowGroup->attribute( "group_id" ); $groupName = $workflowGroup->attribute( "group_name" ); $ingroup = eZWorkflowGroupLink::create( $WorkflowID, 1, $groupID, $groupName ); $ingroup->store(); } $db->commit(); } else { $this->writeMessage( "\tFailed to fetch workflow with ID '$WorkflowID'." , 'notice' ); $workflow = null; } } } $db->begin(); if ( $workflow === null ) { $this->writeMessage( "\tWorkflow '$workflowName' will be created." , 'notice' ); $workflow = eZWorkflow::create( $userID ); $workflow->setAttribute( "name", $workflowName ); if ( $workflowTypeString ) { $workflow->setAttribute( "workflow_type_string", $workflowTypeString ); } $workflow->store(); $ingroup = eZWorkflowGroupLink::create( $workflow->attribute( "id" ), $workflow->attribute( "version" ), $WorkflowGroupID, $groupName ); $ingroup->store(); } else { $hasWorkflowDraft = true; switch ( $workflowExistAction ) { case 'extend': { $this->writeMessage( "\tExtending existing workflow '" . $workflow->attribute( 'name' ) . "'." , 'notice' ); } break; case 'replace': { $this->writeMessage( "\tReplacing existing workflow '" . $workflow->attribute( 'name' ) . "'." , 'notice' ); eZWorkflow::removeEvents( false, $workflow->attribute( "id" ), $workflow->attribute( "version" ) ); } break; default: { $this->writeMessage( "\tUnknown workflowExistAction '" . $workflowExistAction . "'." , 'notice' ); } } } $WorkflowID = $workflow->attribute( "id" ); $WorkflowVersion = $workflow->attribute( "version" ); $db->commit(); if ( $referenceID ) { $refArray[$referenceID] = $WorkflowID; } $eventList = $workflow->fetchEvents(); $eventNodeList = $workflowNode->getElementsByTagName( 'Event' ); $maxPlacement = -1; foreach ( $eventList as $event ) { if ( $event->attribute( 'placement' ) > $maxPlacement ) { $maxPlacement = $event->attribute( 'placement' ); } } foreach ( $eventNodeList as $eventNode ) { $description = $eventNode->getAttribute( 'description' ); $workflowTypeString = $eventNode->getAttribute( 'workflowTypeString' ); $placement = $eventNode->getAttribute( 'placement' ); $event = eZWorkflowEvent::create( $WorkflowID, $workflowTypeString ); $eventType = $event->eventType(); $db->begin(); $workflow->store( $eventList ); $eventType->initializeEvent( $event ); if ( is_numeric( $placement ) ) { $eventType->setAttribute( 'placement', (int)$placement ); } else { ++$maxPlacement; $eventType->setAttribute( 'placement', $maxPlacement ); } $eventDataNode = $eventNode->getElementsByTagName( 'Data' )->item( 0 ); if ( $eventDataNode ) { $attributes = $eventDataNode->childNodes; foreach ( $attributes as $attribute ) { if ( $event->hasAttribute( $attribute->nodeName ) ) { $data = $this->parseAndReplaceStringReferences( $attribute->textContent ); $event->setAttribute( $attribute->nodeName, $data ); } } } $event->store(); $db->commit(); $eventList[] = $event; } // Discard existing events, workflow version 1 and store version 0 $db->begin(); $workflow->store( $eventList ); // store changes. // Remove old version 0 first eZWorkflowGroupLink::removeWorkflowMembers( $WorkflowID, 0 ); $workflowgroups = eZWorkflowGroupLink::fetchGroupList( $WorkflowID, 1 ); foreach( $workflowgroups as $workflowgroup ) { $workflowgroup->setAttribute("workflow_version", 0 ); $workflowgroup->store(); } // Remove version 1 eZWorkflowGroupLink::removeWorkflowMembers( $WorkflowID, 1 ); eZWorkflow::removeEvents( false, $WorkflowID, 0 ); $workflow->removeThis( true ); $workflow->setVersion( 0, $eventList ); $workflow->adjustEventPlacements( $eventList ); $workflow->storeDefined( $eventList ); $workflow->cleanupWorkFlowProcess(); $db->commit(); if ( $referenceID ) { $refArray[$referenceID] = $WorkflowID; } $this->addReference( $refArray ); } } $triggerList = $xml->getElementsByTagName( 'Trigger' ); foreach ( $triggerList as $triggerNode ) { $module = $triggerNode->getAttribute( 'module' ); $operation = $triggerNode->getAttribute( 'operation' ); $connectType = $triggerNode->getAttribute( 'connectType' ); $workflowID = $this->getReferenceID( $triggerNode->getAttribute( 'workflowID' ) ); $this->writeMessage( "\tTrigger '$module/$operation/$connectType' will be created/updated." , 'notice' ); if ( $connectType == 'before' ) { $connectType = 'b'; } else { $connectType = 'a'; } $parameters = array(); $parameters['module'] = $module; $parameters['function'] = $operation; $parameters['connectType'] = $connectType; $triggerList = eZTrigger::fetchList( $parameters ); if ( count( $triggerList ) ) { $trigger = $triggerList[0]; $trigger->setAttribute( 'workflow_id', $workflowID ); $trigger->store(); } else { $db = eZDB::instance(); $db->begin(); $newTrigger = eZTrigger::createNew( $module, $operation, $connectType, $workflowID ); $db->commit(); } } }