/**
  * Decode the values into a real table array.
  *
  * @param DecodePropertyValueForWidgetEvent $event The event.
  *
  * @return void
  *
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  * @SuppressWarnings(PHPMD.NPathComplexity)
  */
 public function loadValues(DecodePropertyValueForWidgetEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_attribute' || $event->getProperty() !== 'translatedtabletext_cols') {
         return;
     }
     $objMetaModel = $this->getMetaModelById($event->getModel()->getProperty('pid'));
     $arrLanguages = $objMetaModel->getAvailableLanguages();
     // Check model and input for the cols and get the max value.
     $intModelCols = $event->getModel()->getProperty('tabletext_quantity_cols');
     $intInputCols = $event->getEnvironment()->getInputProvider()->getValue('tabletext_quantity_cols');
     $intCols = max(intval($intModelCols), intval($intInputCols));
     $varValue = $event->getValue();
     // Kick unused lines.
     foreach ((array) $varValue as $strLanguage => $arrRows) {
         if (count($arrRows) > $intCols) {
             $varValue[$strLanguage] = array_slice($varValue[$strLanguage], 0, $intCols);
         }
     }
     $arrLangValues = deserialize($varValue);
     if (!$objMetaModel->isTranslated()) {
         // If we have an array, return the first value and exit, if not an array, return the value itself.
         if (is_array($arrLangValues)) {
             $event->setValue($arrLangValues[key($arrLangValues)]);
         } else {
             $event->setValue($arrLangValues);
         }
         return;
     }
     $arrOutput = array();
     // Sort like in MetaModel definition.
     if ($arrLanguages) {
         foreach ($arrLanguages as $strLangCode) {
             if (is_array($arrLangValues)) {
                 $varSubValue = $arrLangValues[$strLangCode];
             } else {
                 $varSubValue = $arrLangValues;
             }
             if (is_array($varSubValue)) {
                 $arrOutput[] = array('langcode' => $strLangCode, 'rowLabels' => $varSubValue);
             } else {
                 $arrOutput[] = array('langcode' => $strLangCode, 'value' => $varSubValue);
             }
         }
     }
     $event->setValue(serialize($arrOutput));
 }
Пример #2
0
 /**
  * Decode the title value.
  *
  * @param DecodePropertyValueForWidgetEvent $event The event.
  *
  * @return void
  */
 public function decodeLegendTitleValue(DecodePropertyValueForWidgetEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_dcasetting' || $event->getProperty() !== 'legendtitle') {
         return;
     }
     $metaModel = $this->getMetaModelFromModel($event->getModel());
     $values = Helper::decodeLangArray($event->getValue(), $metaModel);
     $event->setValue($values);
 }
 /**
  * Retrieve the arguments for the callback.
  *
  * @param DecodePropertyValueForWidgetEvent $event The event being emitted.
  *
  * @return array
  */
 public function getArgs($event)
 {
     return array($event->getValue(), new DcCompat($event->getEnvironment(), $event->getModel(), $event->getProperty()));
 }
Пример #4
0
 /**
  * Translates an attribute id to a generated alias {@see getAttributeNames()}.
  *
  * @param DecodePropertyValueForWidgetEvent $event The event.
  *
  * @return void
  */
 public function decodeAttributeIdValue(DecodePropertyValueForWidgetEvent $event)
 {
     if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_filtersetting' || $event->getProperty() !== 'attr_id') {
         return;
     }
     $model = $event->getModel();
     $metaModel = $this->getMetaModel($model);
     $value = $event->getValue();
     if (!($metaModel && $value)) {
         return;
     }
     $attribute = $metaModel->getAttributeById($value);
     if ($attribute) {
         $event->setValue($metaModel->getTableName() . '_' . $attribute->getColName());
     }
 }
 /**
  * Make email lowercase.
  *
  * @param DecodePropertyValueForWidgetEvent $event
  */
 public function decodeEmail(DecodePropertyValueForWidgetEvent $event)
 {
     if ($event->getModel()->getProviderName() != 'orm_avisota_recipient' || $event->getProperty() != 'email') {
         return;
     }
     $event->setValue(strtolower($event->getValue()));
 }
Пример #6
0
 /**
  * Decode the given value from a serialized language array into the real language array.
  *
  * @param DecodePropertyValueForWidgetEvent $event The event.
  *
  * @return void
  */
 protected function decodeValue(DecodePropertyValueForWidgetEvent $event)
 {
     $metaModel = $this->getMetaModelByModelPid($event->getModel());
     $values = Helper::decodeLangArray($event->getValue(), $metaModel);
     $event->setValue($values);
 }
Пример #7
0
 /**
  * Translates an attribute id to a generated alias {@see getAttributeNames()}.
  *
  * @param DecodePropertyValueForWidgetEvent $event The event.
  *
  * @return void
  */
 public function decodeAttributeIdValue(DecodePropertyValueForWidgetEvent $event)
 {
     $isAllowed = $this->isAllowedContext($event->getEnvironment()->getDataDefinition(), $event->getProperty(), $event->getModel());
     if (!$isAllowed) {
         return;
     }
     $model = $event->getModel();
     $metaModel = $this->getMetaModel($model);
     $value = $event->getValue();
     if (!($metaModel && $value)) {
         return;
     }
     $attribute = $metaModel->getAttributeById($value);
     if ($attribute) {
         $event->setValue($metaModel->getTableName() . '_' . $attribute->getColName());
     }
 }
 /**
  * Get the supported attribute or null.
  *
  * @param EncodePropertyValueFromWidgetEvent|DecodePropertyValueForWidgetEvent $event The subscribed event.
  *
  * @return Timestamp|null
  */
 private function getSupportedAttribute($event)
 {
     $model = $event->getModel();
     // Not a metamodel model.
     if (!$model instanceof Model) {
         return null;
     }
     $property = $event->getProperty();
     $attribute = $model->getItem()->getAttribute($property);
     if ($attribute instanceof Timestamp) {
         return $attribute;
     }
     return null;
 }