/** * @param array|\ArrayObject $options * @param MessageContent $content * * @return array|\ArrayObject * @SuppressWarnings(PHPMD.LongVariable) * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) * @SuppressWarnings(PHPMD.Superglobals) */ public function getCellContentTypeOptions($options = array(), MessageContent $content = null) { $message = $content->getMessage(); $layout = $message->getLayout(); if (!$layout || $layout->getType() != 'mailChimp') { return $options; } $allowedTypes = array($content->getType()); list($group, $mailChimpTemplate) = explode(':', $layout->getMailchimpTemplate()); if (isset($GLOBALS['AVISOTA_MAILCHIMP_TEMPLATE'][$group][$mailChimpTemplate])) { $config = $GLOBALS['AVISOTA_MAILCHIMP_TEMPLATE'][$group][$mailChimpTemplate]; if (isset($config['cells'][$content->getCell()])) { $cellConfig = $config['cells'][$content->getCell()]; if (!isset($cellConfig['content'])) { if (isset($cellConfig['preferredElements'])) { $allowedTypes = array_merge($allowedTypes, $cellConfig['preferredElements']); } else { foreach ($GLOBALS['TL_MCE'] as $elements) { foreach ($elements as $elementType) { $allowedTypes[] = $elementType; } } } } } } foreach ($layout->getAllowedCellContents() as $allowedCellContentType) { list($cell, $elementType) = explode(':', $allowedCellContentType); if ($cell == $content->getCell()) { $allowedTypes[] = $elementType; } } foreach ($options as $group => &$values) { if (is_array($values)) { foreach ($values as $key => $value) { if (!in_array($key, $allowedTypes) && $value) { unset($values[$key]); } } } else { if (!in_array($group, $allowedTypes)) { unset($options[$group]); } } } return $options; }
/** * @param MessageContent $messageContent * * @return array */ protected function handleMessageContent(MessageContent $messageContent) { switch ($messageContent->getType()) { case 'event': $elementIdMethod = 'getEventIdWithTimestamp'; $containerModelName = 'Contao\\CalendarEventsModel'; break; default: $elementIdMethod = 'get' . ucfirst($messageContent->getType()) . 'Id'; $containerModelName = ucfirst($messageContent->getType()) . 'Model'; if (!method_exists($messageContent, $elementIdMethod)) { return array(); } break; } $contents = array(); foreach ($messageContent->{$elementIdMethod}() as $elementId) { /** @var \Model $containerModel */ $containerModel = $containerModelName::findByPk($elementId); $elements = array($messageContent); if ($containerModel) { $elements = array_merge($elements, $this->findContainerCustomTemplates($containerModel)); } $contents = array_merge($contents, $elements); } return $contents; }