/** * Retrieve all templates for the leaflet map template list. * * @param GetPropertyOptionsEvent $event The event. * * @return void */ public function getMapTemplates(GetPropertyOptionsEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_rendersetting' || $event->getPropertyName() !== 'leaflet_template') { return; } $event->setOptions(\Controller::getTemplateGroup('leaflet_map_')); }
/** * Retrieve the options for the attributes. * * @param GetPropertyOptionsEvent $event The event. * * @return void */ public function getRgxpOptions(GetPropertyOptionsEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_dcasetting' || $event->getPropertyName() !== 'rgxp') { return; } $options = array('alnum' => 'alnum', 'alpha' => 'alpha', 'digit' => 'digit', 'email' => 'email', 'emails' => 'emails', 'extnd' => 'extnd', 'friendly' => 'friendly', 'phone' => 'phone'); $event->setOptions($options); }
/** * Update the options list in the event. * * @param GetPropertyOptionsEvent $event The event being emitted. * * @param array $value The options array. * * @return void */ public function update($event, $value) { if ($value === null) { return; } $event->setOptions($value); $event->stopPropagation(); }
/** * Fetch the options for a certain property. * * @param EnvironmentInterface $environment The environment. * * @param ModelInterface $model The model. * * @param PropertyInterface $property The property. * * @return array */ protected function getOptions($environment, $model, $property) { $options = $property->getOptions(); $event = new GetPropertyOptionsEvent($environment, $model); $event->setPropertyName($property->getName()); $event->setOptions($options); $environment->getEventPropagator()->propagate($event::NAME, $event, $environment->getDataDefinition()->getName(), $property->getName()); if ($event->getOptions() !== $options) { $options = $event->getOptions(); } return $options; }
/** * Retrieve all database table names. * * @param GetPropertyOptionsEvent $event The event. * * @return void */ public static function getCountriesByContinent(GetPropertyOptionsEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_attribute' || $event->getPropertyName() !== 'geoprotection') { return; } // Get the current values. $arrValues = $event->getOptions(); // Call the helper to get all data. $arrValues = Helper::getCountriesByContinent($arrValues); // Set the new options. $event->setOptions($arrValues); }
/** * Retrieve all member groups. * * @param GetPropertyOptionsEvent $event The event. * * @return void */ public function handleMemberGroup(GetPropertyOptionsEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_filtersetting' || $event->getPropertyName() !== 'member_group') { return; } $database = $this->getServiceContainer()->getDatabase(); $group = $database->prepare('SELECT id, name FROM tl_member_group')->execute(); $options = array(); while ($group->next()) { $options[$group->id] = $group->name; } $event->setOptions($options); }
/** * Group leaflet markers, layers and vectors by their group. * * @param GetPropertyOptionsEvent $event The GetPropertyOptions Event. * * @return void * * @SuppressWarnings(PHPMD.Superglobals) */ public function getPropertyOptions(GetPropertyOptionsEvent $event) { $model = $event->getModel(); if ($model instanceof Model) { $item = $model->getItem(); $attribute = $item->getAttribute($event->getPropertyName()); if (!$attribute) { return; } $selectTable = $attribute->get('select_table'); $alias = $attribute->get('select_alias'); if ($selectTable == 'tl_leaflet_layer') { $collection = $this->fetchOptionsCollection('Netzmacht\\Contao\\Leaflet\\Model\\LayerModel', $attribute); $options = OptionsBuilder::fromCollection($collection, $alias, array($this, 'parseLayerLabel'))->groupBy('pid', array($this, 'parseLayerGroup'))->getOptions(); $event->setOptions($options); } elseif ($selectTable == 'tl_leaflet_vector' || $selectTable == 'tl_leaflet_marker') { $class = $GLOBALS['TL_MODELS'][$selectTable]; $collection = $this->fetchOptionsCollection($class, $attribute); $options = OptionsBuilder::fromCollection($collection, $alias, $attribute->get('select_column'))->groupBy('pid', array($this, 'parseLayerGroup'))->getOptions(); $event->setOptions($options); } } }
/** * Retrieve the property options. * * @param GetPropertyOptionsEvent $event The event. * * @return void */ public function getPropertyOptions(GetPropertyOptionsEvent $event) { if ($event->getOptions() !== null) { return; } $model = $event->getModel(); if (!$model instanceof Model) { return; } $attribute = $model->getItem()->getAttribute($event->getPropertyName()); if (!$attribute instanceof AbstractSelect) { return; } try { $options = $attribute->getFilterOptions(null, false); } catch (\Exception $exception) { $options = array('Error: ' . $exception->getMessage()); } $event->setOptions($options); }
/** * @param GetPropertyOptionsEvent $event * @param $name * @param EventDispatcher $eventDispatcher * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @SuppressWarnings(PHPMD.LongVariableName) */ public function eventTemplateOptions(GetPropertyOptionsEvent $event, $name, EventDispatcher $eventDispatcher) { $environment = $event->getEnvironment(); $dataDefinition = $environment->getDataDefinition(); if ($dataDefinition->getName() !== 'orm_avisota_message_content' || $event->getPropertyName() !== 'eventTemplate') { return; } $getTemplateGroupEvent = new GetTemplateGroupEvent('event_'); $eventDispatcher->dispatch(ContaoEvents::CONTROLLER_GET_TEMPLATE_GROUP, $getTemplateGroupEvent); $options = $getTemplateGroupEvent->getTemplates()->getArrayCopy(); /** @var MessageContent $messageContent */ $messageContent = $event->getModel()->getEntity(); $theme = $messageContent->getMessage()->getCategory()->getLayout()->getTheme(); if (!$theme->getTemplateDirectory()) { $event->setOptions($options); return; } $themeTemplateDirectory = scandir(TL_ROOT . '/templates/' . $theme->getTemplateDirectory()); foreach ($themeTemplateDirectory as $file) { if (substr($file, 0, strlen('event_')) !== 'event_') { continue; } $chunks = explode('.', $file); $chunks = array_reverse($chunks); unset($chunks[0]); $chunks = array_reverse($chunks); $template = implode('.', $chunks); if (!array_key_exists($template, $options)) { $options[$template] = $template . ' (' . $theme->getTemplateDirectory() . ')'; continue; } if (strlen($options[$template]) === strlen($template)) { $options[$template] = $template . ' (' . $theme->getTemplateDirectory() . ')'; continue; } $options[$template] = str_replace('(', '(' . $theme->getTemplateDirectory() . ', ', $options[$template]); } $event->setOptions($options); }
/** * Retrieve the options for the attributes. * * @param GetPropertyOptionsEvent $event The event. * * @return void */ public function getAttributeOptions(GetPropertyOptionsEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_rendersetting' || $event->getPropertyName() !== 'attr_id') { return; } $database = $this->getDatabase(); $model = $event->getModel(); $metaModel = $this->getMetaModel($model); if (!$metaModel) { return; } $arrResult = array(); // Fetch all attributes that exist in other settings. $alreadyTaken = $database->prepare(' SELECT attr_id FROM ' . $model->getProviderName() . ' WHERE attr_id<>? AND pid=?')->execute($model->getProperty('attr_id'), $model->getProperty('pid'))->fetchEach('attr_id'); foreach ($metaModel->getAttributes() as $attribute) { if (in_array($attribute->get('id'), $alreadyTaken)) { continue; } $arrResult[$attribute->get('id')] = sprintf('%s [%s]', $attribute->getName(), $attribute->get('type')); } $event->setOptions($arrResult); }
/** * Get special labels. * * @param PropertyInterface $propInfo The property for which the X label shall be generated. * * @param ModelInterface $model The model. * * @return string */ protected function getOptionsForWidget($propInfo, $model) { if (!$this->isGetOptionsAllowed($propInfo)) { return null; } $environment = $this->getEnvironment(); $dispatcher = $environment->getEventDispatcher(); $options = $propInfo->getOptions(); $event = new GetPropertyOptionsEvent($environment, $model); $event->setPropertyName($propInfo->getName()); $event->setOptions($options); $dispatcher->dispatch(GetPropertyOptionsEvent::NAME, $event); if ($event->getOptions() !== $options) { return $event->getOptions(); } return $options; }
/** * Retrieve the instance of a widget for the given property. * * @param string $property Name of the property for which the widget shall be retrieved. * * @param PropertyValueBag $inputValues The input values to use (optional). * * @throws DcGeneralInvalidArgumentException When an unknown property has been passed. * * @return \Widget */ public function getWidget($property, PropertyValueBag $inputValues = null) { $environment = $this->getEnvironment(); $defName = $environment->getDataDefinition()->getName(); $propertyDefinitions = $environment->getDataDefinition()->getPropertiesDefinition(); if (!$propertyDefinitions->hasProperty($property)) { throw new DcGeneralInvalidArgumentException('Property ' . $property . ' is not defined in propertyDefinitions.'); } $event = new BuildWidgetEvent($environment, $this->model, $propertyDefinitions->getProperty($property)); $environment->getEventPropagator()->propagate($event::NAME, $event, array($defName, $property)); if ($event->getWidget()) { return $event->getWidget(); } $propInfo = $propertyDefinitions->getProperty($property); $propExtra = $propInfo->getExtra(); $varValue = $this->decodeValue($property, $this->model->getProperty($property)); $xLabel = $this->getXLabel($propInfo); $strClass = $GLOBALS['BE_FFL'][$propInfo->getWidgetType()]; if (!class_exists($strClass)) { return null; } // FIXME TEMPORARY WORKAROUND! To be fixed in the core: Controller::prepareForWidget(..). if (in_array($propExtra['rgxp'], array('date', 'time', 'datim')) && !$propExtra['mandatory'] && is_numeric($varValue) && $varValue == 0) { $varValue = ''; } // OH: why not $required = $mandatory always? source: DataContainer 226. // OH: the whole prepareForWidget(..) thing is an only mess // Widgets should parse the configuration by themselves, depending on what they need. $propExtra['required'] = $varValue == '' && $propExtra['mandatory']; if ($inputValues) { $model = clone $this->model; $model->setId($this->model->getId()); $this->environment->getController()->updateModelFromPropertyBag($model, $inputValues); } else { $model = $this->model; } $options = $propInfo->getOptions(); $event = new GetPropertyOptionsEvent($environment, $model); $event->setPropertyName($property); $event->setOptions($options); $environment->getEventPropagator()->propagate($event::NAME, $event, $environment->getDataDefinition()->getName(), $property); if ($event->getOptions() !== $options) { $options = $event->getOptions(); } $arrConfig = array('inputType' => $propInfo->getWidgetType(), 'label' => array($propInfo->getLabel(), $propInfo->getDescription()), 'options' => $options, 'eval' => $propExtra); if (isset($propExtra['reference'])) { $arrConfig['reference'] = $propExtra['reference']; } $event = new GetAttributesFromDcaEvent($arrConfig, $propInfo->getName(), $varValue, $property, $defName, new DcCompat($environment, $this->model, $property)); $environment->getEventPropagator()->propagate(ContaoEvents::WIDGET_GET_ATTRIBUTES_FROM_DCA, $event, $environment->getDataDefinition()->getName(), $property); $arrPrepared = $event->getResult(); // Bugfix CS: ajax subpalettes are really broken. // Therefore we reset to the default checkbox behaviour here and submit the entire form. // This way, the javascript needed by the widget (wizards) will be correctly evaluated. if ($arrConfig['inputType'] == 'checkbox' && is_array($GLOBALS['TL_DCA'][$defName]['subpalettes']) && in_array($property, array_keys($GLOBALS['TL_DCA'][$defName]['subpalettes'])) && $arrConfig['eval']['submitOnChange']) { $arrPrepared['onclick'] = $arrConfig['eval']['submitOnChange'] ? "Backend.autoSubmit('" . $defName . "')" : ''; } $objWidget = new $strClass($arrPrepared); // OH: what is this? source: DataContainer 232. $objWidget->currentRecord = $this->model->getId(); $objWidget->wizard .= $xLabel; $event = new ManipulateWidgetEvent($environment, $this->model, $propInfo, $objWidget); $environment->getEventPropagator()->propagate($event::NAME, $event, array($defName, $property)); return $objWidget; }
/** * Retrieve the options for rich text editor configuration. * * @param GetPropertyOptionsEvent $event The event. * * @return void */ public function getRichTextEditorOptions(GetPropertyOptionsEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_dcasetting' || $event->getPropertyName() !== 'rte') { return; } $configs = array(); foreach (glob(TL_ROOT . '/system/config/tiny*.php') as $name) { $name = basename($name); if (strpos($name, 'tiny') === 0 && substr($name, -4, 4) == '.php') { $configs[] = substr($name, 0, -4); } } $event->setOptions($configs); }
/** * Prepares a option list with alias => name connection for all attributes. * * This is used in the attr_id select box. * * @param GetPropertyOptionsEvent $event The event. * * @return void */ public function getAttributeIdOptions(GetPropertyOptionsEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_filtersetting' || $event->getPropertyName() !== 'attr_id') { return; } $result = array(); $model = $event->getModel(); $metaModel = $this->getMetaModel($model); $typeFactory = $this->getServiceContainer()->getFilterFactory()->getTypeFactory($model->getProperty('type')); $typeFilter = null; if ($typeFactory) { $typeFilter = $typeFactory->getKnownAttributeTypes(); } foreach ($metaModel->getAttributes() as $attribute) { $typeName = $attribute->get('type'); if ($typeFilter && !in_array($typeName, $typeFilter)) { continue; } $strSelectVal = $metaModel->getTableName() . '_' . $attribute->getColName(); $result[$strSelectVal] = $attribute->getName() . ' [' . $typeName . ']'; } $event->setOptions($result); }
/** * Provide options for default selection. * * @param GetPropertyOptionsEvent $event The event. * * @return void */ public function getTemplateOptions(GetPropertyOptionsEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_filtersetting' || $event->getPropertyName() !== 'range_template') { return; } $list = new TemplateList(); $list->setServiceContainer($this->getServiceContainer()); $event->setOptions($list->getTemplatesForBase('mm_filteritem_')); }
/** * Provide options for the values contained within a certain attribute. * * The values get prefixed with 'value_' to ensure numeric values are kept intact. * * @param GetPropertyOptionsEvent $event The event. * * @return void */ public function getValueOptions(GetPropertyOptionsEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_dcasetting_condition' || $event->getPropertyName() !== 'value') { return; } $model = $event->getModel(); $metaModel = $this->getMetaModel($event->getEnvironment()); $attribute = $metaModel->getAttributeById($model->getProperty('attr_id')); if ($attribute) { $options = $attribute->getFilterOptions(null, false); $mangled = array(); foreach ($options as $key => $option) { $mangled['value_' . $key] = $option; } $event->setOptions($mangled); } }
/** * Provide options for filter list. * * @param GetPropertyOptionsEvent $event The event. * * @return void */ public function getRenderSettingsOptions(GetPropertyOptionsEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_searchable_pages' || $event->getPropertyName() !== 'rendersetting') { return; } $model = $event->getModel(); $pid = $model->getProperty('pid'); if (empty($pid)) { return; } $renderSettings = $this->getDatabase()->prepare('SELECT id, name FROM tl_metamodel_rendersettings WHERE pid=?')->execute($pid); $options = array(); while ($renderSettings->next()) { $options[$renderSettings->id] = $renderSettings->name; } $event->setOptions($options); }
/** * Fetch the options for a certain property. * * @param EnvironmentInterface $environment The environment. * * @param ModelInterface $model The model. * * @param PropertyInterface $property The property. * * @return array */ protected static function getOptions($environment, $model, $property) { $options = $property->getOptions(); $event = new GetPropertyOptionsEvent($environment, $model); $event->setPropertyName($property->getName()); $event->setOptions($options); $environment->getEventDispatcher()->dispatch(sprintf('%s', $event::NAME), $event); if ($event->getOptions() !== $options) { $options = $event->getOptions(); } return $options; }
/** * Get database tables none recommended with hidden array * * @param GetPropertyOptionsEvent $event * * @return array */ public function databaseTablesNoneRecommendedWithHidden(GetPropertyOptionsEvent $event) { if (!$this->isRightContext($event->getEnvironment())) { return; } if ($event->getPropertyName() != 'database_tables_none_recommended') { return; } $arrTableRecommended = $this->objSyncCtoHelper->databaseTablesNoneRecommendedWithHidden(); $arrStyledTableRecommended = array(); foreach ($arrTableRecommended as $strTableName => $arrTable) { $arrStyledTableRecommended[$strTableName] = $this->objSyncCtoHelper->getStyledTableMeta($arrTable); } $event->setOptions($arrStyledTableRecommended); }
/** * @param CreateOptionsEvent|GetPropertyOptionsEvent $event * @param $name * @param EventDispatcher $eventDispatcher * @SuppressWarnings(PHPMD.Superglobals) * @SuppressWarnings(PHPMD.ShortVariables) * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function createContentTypeOptions(GetPropertyOptionsEvent $event, $name, EventDispatcher $eventDispatcher) { if ($event->getModel()->getProviderName() !== 'orm_avisota_layout' || $event->getPropertyName() !== 'allowedCellContents') { return; } $layout = $event->getModel()->getEntity(); if ($layout->getType() !== 'mailChimp') { return; } $allTypes = $event->getOptions(); $options = array(); list($group, $mailChimpTemplate) = explode(':', $layout->getMailchimpTemplate()); if (isset($GLOBALS['AVISOTA_MAILCHIMP_TEMPLATE'][$group][$mailChimpTemplate])) { $config = $GLOBALS['AVISOTA_MAILCHIMP_TEMPLATE'][$group][$mailChimpTemplate]; foreach ($config['cells'] as $cellName => $cellConfig) { if (!isset($cellConfig['content'])) { if (!isset($options[$cellName])) { $options[$cellName] = array(); } foreach ($allTypes as $elements) { foreach ($elements as $elementType => $elementLabel) { $options[$cellName][$cellName . ':' . $elementType] = $elementLabel; } } } } } $event->setOptions($options); }
/** * Retrieve all column names of type int for the current selected table. * * @param GetPropertyOptionsEvent $event The event. * * @return void */ public function getIntColumnNames(GetPropertyOptionsEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_attribute' || $event->getPropertyName() !== 'select_id') { return; } $result = $this->getColumnNamesFromMetaModel($event->getModel()->getProperty('select_table'), array('int')); $event->setOptions($result); }
/** * Retrieve a list of all render modes. * * @param GetPropertyOptionsEvent $event The event. * * @return void */ public function getRenderModes(GetPropertyOptionsEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_dca' || $event->getPropertyName() !== 'rendermode') { return; } $translator = $event->getEnvironment()->getTranslator(); $options = array('flat' => $translator->translate('rendermodes.flat', 'tl_metamodel_dca'), 'hierarchical' => $translator->translate('rendermodes.hierarchical', 'tl_metamodel_dca')); if ($event->getModel()->getProperty('rendertype') == 'ctable') { $options['parented'] = $translator->translate('rendermodes.parented', 'tl_metamodel_dca'); } $event->setOptions($options); }
/** * Get special labels. * * @param EnvironmentInterface $environment The environment. * * @param PropertyInterface $propInfo The property for which the options shall be retrieved. * * @param ModelInterface $model The model. * * @return string */ private function getOptionsForWidget(EnvironmentInterface $environment, PropertyInterface $propInfo, ModelInterface $model) { $dispatcher = $environment->getEventDispatcher(); $options = $propInfo->getOptions(); $event = new GetPropertyOptionsEvent($environment, $model); $event->setPropertyName($propInfo->getName()); $event->setOptions($options); $dispatcher->dispatch(GetPropertyOptionsEvent::NAME, $event); if ($event->getOptions() !== $options) { return $event->getOptions(); } return $options; }
/** * @param CreateOptionsEvent|GetPropertyOptionsEvent $event * @param $name * @param EventDispatcher $eventDispatcher * @SuppressWarnings(PHPMD.Superglobals) * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function createContentTypeOptions(GetPropertyOptionsEvent $event, $name, EventDispatcher $eventDispatcher) { $environment = $event->getEnvironment(); $dataDefinition = $environment->getDataDefinition(); if ($dataDefinition->getName() !== 'orm_avisota_layout' || $event->getPropertyName() !== 'allowedCellContents') { return; } $translator = $environment->getTranslator(); $options = $event->getOptions(); if (!is_array($options)) { $options = (array) $options; } foreach ($GLOBALS['TL_MCE'] as $elementGroup => $elements) { $elementGroupLabel = $translator->translate($elementGroup, 'MCE'); foreach ($elements as $elementType) { $elementLabel = $translator->translate($elementType . '.0', 'MCE'); $options[$elementGroupLabel][$elementType] = sprintf('%s', $elementLabel); } } $event->setOptions($options); }
/** * Retrieve all column names of type int for the current selected table. * * @param GetPropertyOptionsEvent $event The event. * * @return void */ public function getSourceColumnNames(GetPropertyOptionsEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_attribute' || $event->getPropertyName() !== 'tag_srcsorting') { return; } $model = $event->getModel(); $table = $model->getProperty('select_srctable'); $database = $this->getServiceContainer()->getDatabase(); if (!$table || !$database->tableExists($table)) { return; } $result = array(); foreach ($database->listFields($table) as $arrInfo) { if ($arrInfo['type'] != 'index') { $result[$arrInfo['name']] = $arrInfo['name']; } } $event->setOptions($result); }
/** * Provide options for attribute type selection. * * @param GetPropertyOptionsEvent $event The event. * * @return void */ public function getOptions(GetPropertyOptionsEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_attribute' || $event->getPropertyName() !== 'type') { return; } $services = $this->getServiceContainer(); $translator = $event->getEnvironment()->getTranslator(); $attributeFactory = $services->getAttributeFactory(); $objMetaModel = $this->getMetaModelByModelPid($event->getModel()); $flags = IAttributeFactory::FLAG_ALL_UNTRANSLATED; if ($objMetaModel->isTranslated()) { $flags |= IAttributeFactory::FLAG_INCLUDE_TRANSLATED; } $options = array(); foreach ($attributeFactory->getTypeNames($flags) as $attributeType) { // Might be translated+complex or translated+simple. if ($attributeFactory->getTypeFactory($attributeType)->isTranslatedType() && !$objMetaModel->isTranslated()) { continue; } $options[$attributeType] = $translator->translate('typeOptions.' . $attributeType, 'tl_metamodel_attribute'); } $event->setOptions($options); }
/** * Provide options for attribute type selection. * * @param GetPropertyOptionsEvent $event The event. * * @return void */ public function getAttrOptions(GetPropertyOptionsEvent $event) { if ($event->getEnvironment()->getDataDefinition()->getName() !== 'tl_metamodel_dca_sortgroup' || $event->getPropertyName() !== 'rendergroupattr' && $event->getPropertyName() !== 'rendersortattr') { return; } $result = array(); $metaModel = $this->getMetaModel($event->getEnvironment()); foreach ($metaModel->getAttributes() as $attribute) { $typeName = $attribute->get('type'); $strSelectVal = $metaModel->getTableName() . '_' . $attribute->getColName(); $result[$strSelectVal] = $attribute->getName() . ' [' . $typeName . ']'; } $event->setOptions($result); }
/** * Get database tables none recommended with hidden array * * @param ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\Event\GetPropertyOptionsEvent $event * * @return array */ public function databaseTablesNoneRecommendedWithHidden(GetPropertyOptionsEvent $event) { $arrTableRecommended = $this->objSyncCtoHelper->databaseTablesNoneRecommendedWithHidden(); $arrStyledTableRecommended = array(); foreach ($arrTableRecommended as $strTableName => $arrTable) { $arrStyledTableRecommended[$strTableName] = $this->objSyncCtoHelper->getStyledTableMeta($arrTable); } $event->setOptions($arrStyledTableRecommended); }