diff --git a/tasks/form-export/Template.php b/tasks/form-export/Template.php
index 7df3c6d487..8668a6a915 100644
--- a/tasks/form-export/Template.php
+++ b/tasks/form-export/Template.php
@@ -7,6 +7,9 @@ use MailPoet\Form\Templates\FormTemplate;
class Template extends FormTemplate {
const ID = 'TEMPLATE_ID';
+ /** @var string */
+ protected $assetsDirectory = 'TEMPLATE_ASSETS_DIR';
+
public function getName(): string {
return 'TEMPLATE_NAME';
}
diff --git a/tasks/form-export/form-export.php b/tasks/form-export/form-export.php
index c7cd7ad7b1..dc3b365652 100644
--- a/tasks/form-export/form-export.php
+++ b/tasks/form-export/form-export.php
@@ -32,7 +32,7 @@ function mailpoetExportForms() {
}
function mailpoetRenderFormList() {
- $forms = mailpoetGetFormsRepository()->findAll();
+ $forms = mailpoetGetFormsRepository()->findBy(['deletedAt' => null]);
echo "
Pick a form to export!
";
echo "";
foreach ($forms as $form) {
@@ -56,15 +56,26 @@ function mailpoetExportForm(int $id) {
$settings['success_message'] = '';
$settings['segments'] = [];
$template = str_replace('TEMPLATE_ID', strtolower(preg_replace("/[^A-Za-z0-9]/", '_', $form->getName())), $template);
+ $template = str_replace('TEMPLATE_ASSETS_DIR', strtolower(preg_replace("/[^A-Za-z0-9]/", '-', $form->getName())), $template);
$template = str_replace('TEMPLATE_SETTINGS', mailpoetVarExport($settings), $template);
$template = str_replace('TEMPLATE_STYLES', $form->getStyles(), $template);
$template = str_replace('TEMPLATE_NAME', $form->getName(), $template);
$template = str_replace('class Template', 'class ' . preg_replace("/[^A-Za-z0-9]/", '', $form->getName()), $template);
$template = mailpoetAddStringTranslations($template);
+ list($template, $assetUrls) = mailpoetProcessAssets($template);
$template = htmlspecialchars($template);
- echo "";
+ echo "";
+ if (!$assetUrls) {
+ die;
+ }
+ echo "Assets to download
";
+ echo "";
+ foreach ($assetUrls as $url) {
+ echo "- $url
";
+ }
+ echo "";
die;
}
@@ -93,6 +104,48 @@ function mailpoetAddStringTranslations(string $template): string {
return $template;
}
+function mailpoetProcessAssets(string $template): array {
+ $assetUrls = [];
+ // background image urls
+ $matches = [];
+ preg_match_all("/'background_image_url' => '(.+)'/u", $template, $matches);
+ foreach ($matches[0] as $key => $fullMatch) {
+ list($assetCode, $url) = mailpoetReplaceAssetUrl($matches[1][$key]);
+ if (!$assetCode) {
+ continue;
+ }
+ $assetUrls[] = $url;
+ $template = str_replace($fullMatch, "'background_image_url' => $assetCode", $template);
+ }
+ // Urls in url property (e.g. image block url)
+ $matches = [];
+ preg_match_all("/'url' => '(.+)'/u", $template, $matches);
+ foreach ($matches[0] as $key => $fullMatch) {
+ list($assetCode, $url) = mailpoetReplaceAssetUrl($matches[1][$key]);
+ if (!$assetCode) {
+ continue;
+ }
+ $assetUrls[] = $url;
+ $template = str_replace($fullMatch, "'url' => $assetCode", $template);
+ }
+ return [$template, $assetUrls];
+}
+
+function mailpoetReplaceAssetUrl(string $url): array {
+ $assetFile = basename(parse_url($url, PHP_URL_PATH));
+ $siteUrl = get_site_url();
+ // Don't touch urls from different site
+ if (strpos($url, $siteUrl) === false) {
+ return [];
+ }
+ // Don't touch url with non-image file extension
+ $ext = strtolower(pathinfo($assetFile, PATHINFO_EXTENSION));
+ if (in_array($ext, ['gif', 'jpg', 'jpeg', 'png']) === false) {
+ return [];
+ }
+ return ['$this->getAssetUrl(\'' . $assetFile . '\')', $url];
+}
+
/**
* @see https://stackoverflow.com/questions/24316347/how-to-format-var-export-to-php5-4-array-syntax
*/