/**
  * Utilized to create or update model attribute values after a workflow's triggers are fired as true.
  * @param WorkflowActionProcessingModelAdapter $adapter
  * @param $attribute
  * @throws NotSupportedException
  */
 public function resolveValueAndSetToModel(WorkflowActionProcessingModelAdapter $adapter, $attribute)
 {
     assert('is_string($attribute)');
     if ($this->type == static::TYPE_STATIC) {
         $adapter->getModel()->{$attribute} = $this->value;
     } elseif ($this->type == self::TYPE_DYNAMIC_FROM_TRIGGERED_DATE) {
         $newTimeStamp = $this->resolveNewTimeStampForDuration(time());
         $adapter->getModel()->{$attribute} = DateTimeUtil::convertTimestampToDbFormatDate($newTimeStamp);
     } elseif ($this->type == self::TYPE_DYNAMIC_FROM_EXISTING_DATE) {
         if (!DateTimeUtil::isDateStringNull($adapter->getModel()->{$attribute})) {
             $existingTimeStamp = DateTimeUtil::convertDbFormatDateTimeToTimestamp(DateTimeUtil::resolveDateAsDateTime($adapter->getModel()->{$attribute}));
             $newTimeStamp = $this->resolveNewTimeStampForDuration($existingTimeStamp);
             $newDate = DateTimeUtil::convertTimestampToDbFormatDate($newTimeStamp);
             $adapter->getModel()->{$attribute} = $newDate;
         }
     } else {
         throw new NotSupportedException();
     }
 }
 /**
  * @param TimeTriggerForWorkflowForm $trigger
  * @param RedBeanModel $model
  * @return int
  * @throws ValueForProcessDateTimeIsNullException
  */
 protected static function resolveTimeStampForDateAttributeForProcessDateTime(TimeTriggerForWorkflowForm $trigger, RedBeanModel $model)
 {
     $date = static::resolveModelValueByTimeTrigger($trigger, $model);
     if (DateTimeUtil::isDateStringNull($date)) {
         throw new ValueForProcessDateTimeIsNullException();
     } else {
         return $trigger->resolveNewTimeStampForDuration(DateTimeUtil::convertDbFormatDateTimeToTimestamp(DateTimeUtil::resolveDateAsDateTime($date)));
     }
 }
Пример #3
0
 protected function sanitizeAndResolveThirdValue()
 {
     if ($this->trigger->valueEvaluationType == 'Date') {
         $todayDate = Yii::app()->dateFormatter->format(DatabaseCompatibilityUtil::getDateFormat(), time());
         $todayDateTime = DateTimeUtil::resolveDateAsDateTime($todayDate);
         return $this->trigger->resolveNewTimeStampForThirdValueDuration(strtotime($todayDateTime));
     } elseif ($this->trigger->valueEvaluationType == 'DateTime') {
         $timeZone = date_default_timezone_get();
         date_default_timezone_set('GMT');
         $timeStamp = $this->trigger->resolveNewTimeStampForThirdValueDuration(time());
         date_default_timezone_set($timeZone);
         return $timeStamp;
     } else {
         throw new NotSupportedException();
     }
 }