diff --git a/Classes/Utility/DatabaseUtility.php b/Classes/Utility/DatabaseUtility.php
new file mode 100644
index 0000000..aa209d3
--- /dev/null
+++ b/Classes/Utility/DatabaseUtility.php
@@ -0,0 +1,57 @@
+get(DataMapper::class);
+ return $dataMapper->getDataMap($class)->getTableName();
+ }
+
+ /**
+ * Creates a new query builder and returns it
+ *
+ * @param $tablename string table name
+ * @return object queryBuilder
+ */
+ public static function getQueryBuilderFromTableName($tableName)
+ {
+ $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
+ ->getConnectionForTable($tableName)
+ ->createQueryBuilder();
+ return $queryBuilder;
+ }
+}
diff --git a/Classes/Utility/MailUtility.php b/Classes/Utility/MailUtility.php
index 2e6d41d..d90a5d1 100644
--- a/Classes/Utility/MailUtility.php
+++ b/Classes/Utility/MailUtility.php
@@ -59,6 +59,18 @@ class MailUtility
$type = 'list';
$textPart = substr($textPart, 2);
}
+ if (substr($textPart, 0, 3) === '+< ') {
+ $type = 'buttonleft';
+ $textPart = substr($textPart, 3);
+ }
+ if (substr($textPart, 0, 3) === '+| ') {
+ $type = 'buttoncenter';
+ $textPart = substr($textPart, 3);
+ }
+ if (substr($textPart, 0, 3) === '+> ') {
+ $type = 'buttonright';
+ $textPart = substr($textPart, 3);
+ }
if (substr($textPart, 0, 2) === '| ') {
$type = 'table';
$textPart = substr($textPart, 2);
@@ -116,6 +128,28 @@ class MailUtility
return $result;
}
+ /**
+ * Gets row from content by given type
+ *
+ * @param array $content the mail content
+ * @param string $type the type to search
+ */
+ public static function extractByType($content, $type)
+ {
+ $elementPosition = array_search(
+ $type,
+ array_column($content, 'type')
+ );
+ if (!$elementPosition === false) {
+ return;
+ }
+ if (!array_key_exists('data', $content[$elementPosition])) {
+ return;
+ }
+ return $content[$elementPosition]['data'];
+ }
+
+
/**
* tages maildata, builds html and text mails an decides where to send them
* allows to intercept sender for testing
@@ -195,6 +229,10 @@ class MailUtility
case 'headline':
case 'headline2':
case 'headline3':
+ case 'button':
+ case 'buttonleft':
+ case 'buttoncenter':
+ case 'buttonright':
$row['data'] = str_replace(
"\\\n",
'',
@@ -203,16 +241,33 @@ class MailUtility
$htmlRow = $row;
$htmlRow['data'] = preg_replace_callback(
'/\[.*\]/mU',
- function($matches) {
+ function($matches) use ($row) {
foreach ($matches as $match) {
return preg_replace_callback(
'/\[(\S*)\s(.*)\]/mU',
- function($matchesInner) {
- return ''
- . $matchesInner[2]
- . '';
+ function($matchesInner) use ($row) {
+ switch($row['type']) {
+ case 'button':
+ case 'buttonleft':
+ case 'buttoncenter':
+ case 'buttonright':
+ return ''
+ . ''
+ . 'Button!!!! '
+ . $matchesInner[2]
+ . ''
+ . '';
+ break;
+ default:
+ return ''
+ . $matchesInner[2]
+ . '';
+ break;
+ }
},
$match
);
@@ -257,51 +312,77 @@ class MailUtility
$bodydataText[] = $textRow;
$bodydataHtml[] = $htmlRow;
break;
- case 'button':
- case 'buttons':
- $htmlRow = $row;
- //$htmlRow['targets'] = preg_replace_callback(
- // '/\[.*\]/mU',
- // function($matches) {
- // foreach ($matches as $match) {
- // return preg_replace_callback(
- // '/\[(\S*)\s(.*)\]/mU',
- // function($matchesInner) {
- // return $matchesInner;
- // //return ''
- // // . $matchesInner[2]
- // // . '';
- // },
- // $match
- // );
- // }
- // },
- // $htmlRow['targets']
- //);
- $textRow = $row;
- //$textRow['targets'] = preg_replace_callback(
- // '/\[.*\]/mU',
- // function($matches) {
- // foreach ($matches as $match) {
- // return preg_replace_callback(
- // '/\[(\S*)\s(.*)\]/mU',
- // function($matchesInner) {
- // return $matchesInner;
- // //return $matchesInner[2]
- // // . ': '
- // // . $matchesInner[1];
- // },
- // $match
- // );
- // }
- // },
- // $textRow['targets']
- //);
- $bodydataText[] = $textRow;
- $bodydataHtml[] = $htmlRow;
- break;
+ //case 'button':
+ // $row['data'] = str_replace(
+ // "\\\n",
+ // '',
+ // $row['data']
+ // );
+ // $htmlRow = $row;
+ // $htmlRow['data'] = preg_replace_callback(
+ // '/\[.*\]/mU',
+ // function($matches) {
+ // foreach ($matches as $match) {
+ // $test = preg_replace_callback(
+ // '/\[(\S*)\s(.*)\]/mU',
+ // function($matchesInner) {
+ //
+ // return ''
+ // . $matchesInner[2]
+ // . '';
+ // },
+ // $match
+ // );
+ // \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump(
+ // $test, null, 3, true, false
+ // );
+ // return $test;
+ // }
+ // },
+ // $htmlRow['data']
+ // );
+ // \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump(
+ // $htmlRow['data'], null, 3, true, false
+ // );
+ // $htmlRow['data'] = preg_replace_callback(
+ // '/\*.*\*/mU',
+ // function($matches) {
+ // foreach ($matches as $match) {
+ // return ''
+ // . substr($match, 1, -1)
+ // . '';
+ // }
+ // },
+ // $htmlRow['data']
+ // );
+ // $textRow = $row;
+ // $textRow['data'] = preg_replace_callback(
+ // '/\[.*\]/mU',
+ // function($matches) {
+ // foreach ($matches as $match) {
+ // return preg_replace_callback(
+ // '/\[(\S*)\s(.*)\]/mU',
+ // function($matchesInner) {
+ // if (
+ // $matchesInner[2] == $matchesInner[1]
+ // ) {
+ // return $matchesInner[1];
+ // }
+ // return $matchesInner[2]
+ // . ': '
+ // . $matchesInner[1];
+ // },
+ // $match
+ // );
+ // }
+ // },
+ // $textRow['data']
+ // );
+ // $bodydataText[] = $textRow;
+ // $bodydataHtml[] = $htmlRow;
+ // break;
case 'attachment':
$mail->attach(new \Swift_Attachment(
$row['data'][0],
@@ -325,6 +406,9 @@ class MailUtility
}
$textView->assign('content', $bodydataText);
$htmlView->assign('content', $bodydataHtml);
+ //\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump(
+ // $bodydataHtml, null, 8, true, false
+ //);
$domain = $settings['mailDomain'];
if ($assetDomain) {
$domain = $assetDomain;
diff --git a/Resources/Private/Partials/Mails/DefaultHtml.html b/Resources/Private/Partials/Mails/DefaultHtml.html
index 3d1956c..cee579e 100644
--- a/Resources/Private/Partials/Mails/DefaultHtml.html
+++ b/Resources/Private/Partials/Mails/DefaultHtml.html
@@ -14,7 +14,13 @@
-
+