/**
  * @param array $data
  * @param string $type
  */
 protected static function resolveIsNullAndIsNotNullOperatorsToInclude(&$data, $type)
 {
     assert('is_array($data)');
     assert('is_string($type)');
     if ($type != self::AVAILABLE_OPERATORS_TYPE_DROPDOWN && $type != self::AVAILABLE_OPERATORS_TYPE_HAS_ONE) {
         $data[OperatorRules::TYPE_IS_NULL] = OperatorRules::getTranslatedTypeLabel(OperatorRules::TYPE_IS_NULL);
         $data[OperatorRules::TYPE_IS_NOT_NULL] = OperatorRules::getTranslatedTypeLabel(OperatorRules::TYPE_IS_NOT_NULL);
     }
 }
 public static function resolveOperatorsToIncludeByType(&$data, $type)
 {
     if ($type == self::AVAILABLE_OPERATORS_TYPE_BOOLEAN) {
         $data[OperatorRules::TYPE_EQUALS] = OperatorRules::getTranslatedTypeLabel(OperatorRules::TYPE_EQUALS);
         return;
     }
     if ($type == self::AVAILABLE_OPERATORS_TYPE_HAS_ONE) {
         $data[OperatorRules::TYPE_EQUALS] = OperatorRules::getTranslatedTypeLabel(OperatorRules::TYPE_EQUALS);
         return;
     }
     parent::resolveOperatorsToIncludeByType($data, $type);
 }
 /**
  * @return array
  * @throws NotSupportedException if the attributeIndexOrDerivedType has not been populated yet
  */
 public function getOperatorValuesAndLabels()
 {
     if ($this->attributeIndexOrDerivedType == null) {
         throw new NotSupportedException();
     }
     $type = $this->getAvailableOperatorsType();
     $data = array();
     ModelAttributeToWorkflowOperatorTypeUtil::resolveOperatorsToIncludeByType($data, $type);
     $data[OperatorRules::TYPE_DOES_NOT_CHANGE] = OperatorRules::getTranslatedTypeLabel(OperatorRules::TYPE_DOES_NOT_CHANGE);
     if ($type != ModelAttributeToWorkflowOperatorTypeUtil::AVAILABLE_OPERATORS_TYPE_BOOLEAN && $type != ModelAttributeToWorkflowOperatorTypeUtil::AVAILABLE_OPERATORS_TYPE_HAS_ONE) {
         $data[OperatorRules::TYPE_IS_EMPTY] = OperatorRules::getTranslatedTypeLabel(OperatorRules::TYPE_IS_EMPTY);
         $data[OperatorRules::TYPE_IS_NOT_EMPTY] = OperatorRules::getTranslatedTypeLabel(OperatorRules::TYPE_IS_NOT_EMPTY);
     }
     return $data;
 }
 /**
  * @return array
  */
 protected static function getOperatorsWhereSecondValueIsRequired()
 {
     return OperatorRules::getOperatorsWhereSecondValueIsRequired();
 }
 /**
  * @param bool $isTimeTrigger
  * @return string
  * @throws NotSupportedException if the valueElementType is null
  */
 protected function getContentForTimeTriggerOrTrigger($isTimeTrigger = false)
 {
     $params = array('inputPrefix' => $this->inputPrefixData);
     $valueElementType = $this->model->getValueElementType();
     if ($this->model->hasAvailableOperatorsType()) {
         $operatorElement = $this->resolveOperatorElementForMultiSelectDropDown($valueElementType, $params);
         $operatorElement->editableTemplate = '{content}{error}';
         $operatorContent = $operatorElement->render();
     } else {
         $operatorContent = null;
     }
     if ($valueElementType != null) {
         $valueElementClassName = $valueElementType . 'Element';
         $valueElement = new $valueElementClassName($this->model, 'value', $this->form, $params);
         if ($valueElement instanceof NameIdElement) {
             $valueElement->setIdAttributeId('value');
             $valueElement->setNameAttributeName('stringifiedModelForValue');
             $valueElement->doNotHideSelectLinkWhenDisabled();
         }
         if ($valueElement instanceof MixedNumberTypesElement) {
             $valueElement->editableTemplate = '<div class="value-data">{content}{error}</div>';
         } elseif ($valueElement instanceof MixedDateTypesElement) {
             if ($isTimeTrigger) {
                 $valueElement->editableTemplate = '<div class="dynamic-row-operator" style="display:none;">{valueType}</div>' . '<div class="value-data has-date-inputs">' . '<div class="first-value-area">{content}{error}</div></div>';
             } else {
                 $valueElement->editableTemplate = '<div class="dynamic-row-operator">{valueType}</div>' . '<div class="value-data has-date-inputs">' . '<div class="first-value-area">{content}{error}</div></div>';
             }
         } else {
             $startingDivStyleFirstValue = null;
             if (!in_array($this->model->getOperator(), OperatorRules::getOperatorsWhereValueIsRequired()) && $this->model->getOperator() != null) {
                 $startingDivStyleFirstValue = "display:none;";
                 $valueElement->params['disabled'] = 'disabled';
             }
             $valueElement->editableTemplate = '<div class="value-data"><div class="first-value-area" style="' . $startingDivStyleFirstValue . '">{content}{error}</div></div>';
         }
         $valueContent = $valueElement->render();
     } else {
         throw new NotSupportedException();
     }
     $content = $this->renderAttributeIndexOrDerivedType();
     self::resolveDivWrapperForContent($this->model->getDisplayLabel(), $content, 'dynamic-row-label');
     self::resolveDivWrapperForContent($operatorContent, $content, 'dynamic-row-operator');
     $content .= $valueContent;
     return $content;
 }
 protected static function resolveIsNullAndIsNotNullOperatorsToInclude(&$data, $type)
 {
     $data[OperatorRules::TYPE_IS_NULL] = OperatorRules::getTranslatedTypeLabel(OperatorRules::TYPE_IS_NULL);
     $data[OperatorRules::TYPE_IS_NOT_NULL] = OperatorRules::getTranslatedTypeLabel(OperatorRules::TYPE_IS_NOT_NULL);
 }
 /**
  * @return array
  * @throws NotSupportedException
  */
 public function getDurationValuesAndLabels()
 {
     if ($this->attributeIndexOrDerivedType == null) {
         throw new NotSupportedException();
     }
     $modelToWorkflowAdapter = $this->makeResolvedAttributeModelRelationsAndAttributesToWorkflowAdapter();
     $type = $modelToWorkflowAdapter->getDisplayElementType($this->getResolvedAttribute());
     $data = array();
     if ($type == 'DateTime') {
         return $this->makeDurationValuesAndLabels(true, true, true, true);
     } elseif ($type == 'Date') {
         return $this->makeDurationValuesAndLabels(true, true, true, false);
     } else {
         return $this->makeDurationValuesAndLabels(true, false, false, true);
     }
     return $data;
     ModelAttributeToWorkflowOperatorTypeUtil::resolveOperatorsToIncludeByType($data, $type);
     $data[OperatorRules::TYPE_DOES_NOT_CHANGE] = OperatorRules::getTranslatedTypeLabel(OperatorRules::TYPE_DOES_NOT_CHANGE);
     if ($type != ModelAttributeToWorkflowOperatorTypeUtil::AVAILABLE_OPERATORS_TYPE_BOOLEAN && $type != ModelAttributeToWorkflowOperatorTypeUtil::AVAILABLE_OPERATORS_TYPE_HAS_ONE) {
         $data[OperatorRules::TYPE_IS_EMPTY] = OperatorRules::getTranslatedTypeLabel(OperatorRules::TYPE_IS_EMPTY);
         $data[OperatorRules::TYPE_IS_NOT_EMPTY] = OperatorRules::getTranslatedTypeLabel(OperatorRules::TYPE_IS_NOT_EMPTY);
     }
     return $data;
 }