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