/** * 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)); }
/** * 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())); }
/** * 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())); }
/** * 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); }
/** * 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; }