/**
  * @param SavedWorkflow $savedWorkflow
  * @return Workflow
  */
 public static function makeWorkflowBySavedWorkflow(SavedWorkflow $savedWorkflow)
 {
     $workflow = new Workflow();
     if ($savedWorkflow->id > 0) {
         $workflow->setId((int) $savedWorkflow->id);
     }
     $workflow->setDescription($savedWorkflow->description);
     $workflow->setIsActive((bool) $savedWorkflow->isActive);
     $workflow->setModuleClassName($savedWorkflow->moduleClassName);
     $workflow->setName($savedWorkflow->name);
     $workflow->setOrder((int) $savedWorkflow->order);
     $workflow->setType($savedWorkflow->type);
     $workflow->setTriggerOn($savedWorkflow->triggerOn);
     if ($savedWorkflow->serializedData != null) {
         $unserializedData = unserialize($savedWorkflow->serializedData);
         if (isset($unserializedData['triggersStructure'])) {
             $workflow->setTriggersStructure($unserializedData['triggersStructure']);
         }
         self::makeComponentFormAndPopulateWorkflowFromData($unserializedData[ComponentForWorkflowForm::TYPE_TRIGGERS], $workflow, 'Trigger');
         self::makeActionForWorkflowFormAndPopulateWorkflowFromData($unserializedData[ComponentForWorkflowForm::TYPE_ACTIONS], $workflow);
         self::makeEmailMessageForWorkflowFormAndPopulateWorkflowFromData($unserializedData[ComponentForWorkflowForm::TYPE_EMAIL_MESSAGES], $workflow);
         if (isset($unserializedData[ComponentForWorkflowForm::TYPE_TIME_TRIGGER])) {
             $moduleClassName = $workflow->getModuleClassName();
             $timeTrigger = new TimeTriggerForWorkflowForm($moduleClassName, $moduleClassName::getPrimaryModelName(), $workflow->getType());
             $timeTrigger->setAttributes($unserializedData[ComponentForWorkflowForm::TYPE_TIME_TRIGGER]);
             $workflow->setTimeTrigger($timeTrigger);
             $workflow->setTimeTriggerAttribute($timeTrigger->getAttributeIndexOrDerivedType());
         }
     }
     return $workflow;
 }
Пример #2
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);
 }