/**
  * @param string $nodeId
  * @return array
  */
 public function getData($nodeId)
 {
     assert('is_string($nodeId)');
     $nodeId = $this->resolveNodeIdByRemovingTreeType($nodeId);
     $moduleClassName = $this->workflow->getModuleClassName();
     $modelToWorkflowAdapter = $this->makeModelRelationsAndAttributesToWorkflowAdapter($moduleClassName, $moduleClassName::getPrimaryModelName());
     $nodeIdPrefix = self::resolveNodeIdPrefixByNodeId($nodeId);
     $precedingModel = null;
     $precedingRelation = null;
     if ($nodeId != 'source') {
         self::resolvePrecedingModelRelationAndAdapterByNodeId($nodeId, $modelToWorkflowAdapter, $precedingModel, $precedingRelation);
     } else {
         $nodeIdPrefix = null;
     }
     if ($nodeIdPrefix == null) {
         $data = array();
         $data[0] = array('expanded' => true, 'text' => $moduleClassName::getModuleLabelByTypeAndLanguage('Singular'));
     }
     $childrenNodeData = $this->getChildrenNodeData($modelToWorkflowAdapter, $precedingModel, $precedingRelation, $nodeIdPrefix);
     if (!empty($childrenNodeData) && $nodeIdPrefix == null) {
         $data[0]['children'] = $childrenNodeData;
     } else {
         $data = $childrenNodeData;
     }
     return $data;
 }
 /**
  * @param WorkflowWizardForm $formModel
  */
 protected function setCommonAttributes(WorkflowWizardForm $formModel)
 {
     $formModel->id = $this->workflow->getId();
     $formModel->isActive = $this->workflow->getIsActive();
     $formModel->description = $this->workflow->getDescription();
     $formModel->moduleClassName = $this->workflow->getModuleClassName();
     $formModel->name = $this->workflow->getName();
     $formModel->triggerOn = $this->workflow->getTriggerOn();
     $formModel->type = $this->workflow->getType();
     $formModel->triggersStructure = $this->workflow->getTriggersStructure();
     $formModel->timeTriggerAttribute = $this->workflow->getTimeTriggerAttribute();
     if ($this->workflow->isNew()) {
         $formModel->setIsNew();
     }
     $formModel->timeTrigger = $this->workflow->getTimeTrigger();
     $formModel->triggers = $this->workflow->getTriggers();
     $formModel->actions = $this->workflow->getActions();
     $formModel->emailMessages = $this->workflow->getEmailMessages();
 }
 /**
  * @param WorkflowMessageInQueue $workflowMessageInQueue
  * @param Workflow $workflow
  * @return EmailMessageForWorkflowForm
  */
 public static function makeEmailMessageForWorkflowFormByQueueModelAndWorkflow(WorkflowMessageInQueue $workflowMessageInQueue, Workflow $workflow)
 {
     $moduleClassName = $workflow->getModuleClassName();
     $emailMessageForWorkflowForm = new EmailMessageForWorkflowForm($moduleClassName::getPrimaryModelName(), $workflow->getType(), 0);
     $unserializedData = unserialize($workflowMessageInQueue->serializedData);
     $emailMessageForWorkflowForm->setAttributes(reset($unserializedData));
     return $emailMessageForWorkflowForm;
 }
Esempio n. 4
0
 /**
  * No need to sanitize for Date and DateTime since those attributes utilize integers for time-based triggers
  * @param array $data
  * @param Workflow $workflow
  */
 public static function resolveTimeTrigger($data, Workflow $workflow)
 {
     assert('is_array($data)');
     if ($workflow->getType() != Workflow::TYPE_BY_TIME) {
         return;
     }
     $workflow->removeTimeTrigger();
     $moduleClassName = $workflow->getModuleClassName();
     $timeTrigger = new TimeTriggerForWorkflowForm($moduleClassName, $moduleClassName::getPrimaryModelName(), $workflow->getType());
     if (null != ($timeTriggerData = ArrayUtil::getArrayValue($data, ComponentForWorkflowForm::TYPE_TIME_TRIGGER))) {
         $timeTrigger->setAttributes($timeTriggerData);
     }
     $workflow->setTimeTrigger($timeTrigger);
 }
Esempio n. 5
0
 /**
  * @depends testGetWorkflowSupportedModulesClassNamesCurrentUserHasAccessTo
  */
 public function testSetAndGetWorkflow()
 {
     $timeTrigger = new TimeTriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE);
     $action = new ActionForWorkflowForm('WorkflowModelTestItem', Workflow::TYPE_ON_SAVE);
     $emailMessage = new EmailMessageForWorkflowForm('WorkflowModelTestItem', Workflow::TYPE_ON_SAVE);
     $trigger = new TriggerForWorkflowForm('WorkflowsTestModule', 'WorkflowModelTestItem', Workflow::TYPE_ON_SAVE);
     $workflow = new Workflow();
     $workflow->setModuleClassName('SomeModule');
     $workflow->setDescription('a description');
     $workflow->setTriggersStructure('1 AND 2');
     $workflow->setTimeTriggerAttribute('something');
     $workflow->setId(5);
     $workflow->setIsActive(true);
     $workflow->setOrder(6);
     $workflow->setName('my workflow rule');
     $workflow->setTriggerOn(Workflow::TRIGGER_ON_NEW);
     $workflow->setType(Workflow::TYPE_ON_SAVE);
     $workflow->setTimeTrigger($timeTrigger);
     $workflow->addTrigger($trigger);
     $workflow->addAction($action);
     $workflow->addEmailMessage($emailMessage);
     $this->assertEquals('SomeModule', $workflow->getModuleClassName());
     $this->assertEquals('a description', $workflow->getDescription());
     $this->assertEquals('1 AND 2', $workflow->getTriggersStructure());
     $this->assertEquals('something', $workflow->getTimeTriggerAttribute());
     $this->assertEquals(5, $workflow->getId());
     $this->assertTrue($workflow->getIsActive());
     $this->assertEquals(6, $workflow->getOrder());
     $this->assertEquals('my workflow rule', $workflow->getName());
     $this->assertEquals(Workflow::TRIGGER_ON_NEW, $workflow->getTriggerOn());
     $this->assertEquals(Workflow::TYPE_ON_SAVE, $workflow->getType());
     $this->assertEquals($timeTrigger, $workflow->getTimeTrigger());
     $actions = $workflow->getActions();
     $this->assertEquals($action, $actions[0]);
     $this->assertCount(1, $actions);
     $emailMessages = $workflow->getEmailMessages();
     $this->assertEquals($emailMessage, $emailMessages[0]);
     $this->assertCount(1, $emailMessages);
     $triggers = $workflow->getTriggers();
     $this->assertEquals($trigger, $triggers[0]);
     $this->assertCount(1, $triggers);
     $workflow->removeAllActions();
     $actions = $workflow->getActions();
     $this->assertCount(0, $actions);
     $workflow->removeAllEmailMessages();
     $emailMessages = $workflow->getEmailMessages();
     $this->assertCount(0, $emailMessages);
     $workflow->removeAllTriggers();
     $triggers = $workflow->getTriggers();
     $this->assertCount(0, $triggers);
     $workflow->removeTimeTrigger();
     $this->assertNull($workflow->getTimeTrigger());
 }
 /**
  * @param array $componentFormsData
  * @param Workflow $workflow
  */
 protected static function makeEmailMessageForWorkflowFormAndPopulateWorkflowFromData($componentFormsData, Workflow $workflow)
 {
     assert('is_array($componentFormsData)');
     $moduleClassName = $workflow->getModuleClassName();
     $rowKey = 0;
     foreach ($componentFormsData as $componentFormData) {
         $component = new EmailMessageForWorkflowForm($moduleClassName::getPrimaryModelName(), $workflow->getType(), $rowKey);
         $component->setAttributes($componentFormData);
         $workflow->addEmailMessage($component);
         $rowKey++;
     }
 }