Merge pull request #9 from MegaphoneJon/mosaico-support

Mosaico support
This commit is contained in:
SYSTOPIA 2017-09-06 11:07:03 +02:00 committed by GitHub
commit 08aa1d6f7c
3 changed files with 22 additions and 10 deletions

View File

@ -55,7 +55,8 @@ class CRM_Civiproxy_Mailer {
// General external functions // General external functions
$value = preg_replace("#{$system_base}sites/all/modules/civicrm/extern/url.php#i", $proxy_base.'/url.php', $value); $value = preg_replace("#{$system_base}sites/all/modules/civicrm/extern/url.php#i", $proxy_base.'/url.php', $value);
$value = preg_replace("#{$system_base}sites/all/modules/civicrm/extern/open.php#i", $proxy_base.'/open.php', $value); $value = preg_replace("#{$system_base}sites/all/modules/civicrm/extern/open.php#i", $proxy_base.'/open.php', $value);
$value = preg_replace("#{$system_base}sites/default/files/civicrm/persist/#i", $proxy_base.'/file.php?id=', $value); $value = preg_replace("#{$system_base}sites/default/files/civicrm/persist/#i", $proxy_base.'/file.php?mosaico=0&id=', $value);
$value = preg_replace("#{$system_base}civicrm/mosaico/img\?src=#i", $proxy_base.'/file.php?mosaico=1&id=', $value);
// Mailing related functions // Mailing related functions
$value = preg_replace("#{$system_base}civicrm/mailing/view#i", $proxy_base.'/mailing/mail.php', $value); $value = preg_replace("#{$system_base}civicrm/mailing/view#i", $proxy_base.'/mailing/mail.php', $value);

View File

@ -30,6 +30,7 @@ $target_url = $target_civicrm . '/sites/all/modules/civicrm/extern/url.php
$target_open = $target_civicrm . '/sites/all/modules/civicrm/extern/open.php'; $target_open = $target_civicrm . '/sites/all/modules/civicrm/extern/open.php';
$target_file = $target_civicrm . '/sites/default/files/civicrm/persist/'; $target_file = $target_civicrm . '/sites/default/files/civicrm/persist/';
$target_mail_view = $target_civicrm . '/civicrm/mailing/view'; $target_mail_view = $target_civicrm . '/civicrm/mailing/view';
$target_mosaico_file = $target_civicrm . '/civicrm/mosaico/img?src=';
// Set api-key for mail subscribe/unsubscribe user // Set api-key for mail subscribe/unsubscribe user
// Set to NULL/FALSE to disable the feature // Set to NULL/FALSE to disable the feature

View File

@ -6,20 +6,20 @@
| Author: B. Endres (endres -at- systopia.de) | | Author: B. Endres (endres -at- systopia.de) |
| http://www.systopia.de/ | | http://www.systopia.de/ |
+---------------------------------------------------------*/ +---------------------------------------------------------*/
require_once "config.php"; require_once "config.php";
require_once "proxy.php"; require_once "proxy.php";
// basic restraints
$valid_parameters = array( 'id' => 'string', 'mosaico' => 'int' );
$parameters = civiproxy_get_parameters($valid_parameters);
// see if file caching is enabled // see if file caching is enabled
if (!$target_file) civiproxy_http_error("Feature disabled", 405); if ((!$target_file && !$parameters['mosaico']) || (!$target_mosaico_file && $parameters['mosaico'])) {
civiproxy_http_error("Feature disabled", 405);
}
// basic check // basic check
civiproxy_security_check('file'); civiproxy_security_check('file');
// basic restraints
$valid_parameters = array( 'id' => 'string' );
$parameters = civiproxy_get_parameters($valid_parameters);
// check if id specified // check if id specified
if (empty($parameters['id'])) civiproxy_http_error("Resource not found"); if (empty($parameters['id'])) civiproxy_http_error("Resource not found");
@ -66,9 +66,13 @@ if ($header && $data) {
print $data; print $data;
exit(); exit();
} }
// if we get here, we have a cache miss => load // if we get here, we have a cache miss => load
if ($parameters['mosaico'] == 1) {
$url = $target_mosaico_file . $parameters['id'];
}
else {
$url = $target_file . $parameters['id']; $url = $target_file . $parameters['id'];
}
// error_log("CACHE MISS. LOADING $url"); // error_log("CACHE MISS. LOADING $url");
$curlSession = curl_init(); $curlSession = curl_init();
@ -92,7 +96,6 @@ if (curl_error($curlSession)) {
error_log(curl_error($curlSession)); error_log(curl_error($curlSession));
civiproxy_http_error(curl_error($curlSession), curl_errno($curlSession)); civiproxy_http_error(curl_error($curlSession), curl_errno($curlSession));
} }
// process the results // process the results
$content = explode("\r\n\r\n", $response, 2); $content = explode("\r\n\r\n", $response, 2);
$header = $content[0]; $header = $content[0];
@ -101,6 +104,13 @@ $body = $content[1];
// extract headers // extract headers
$header_lines = explode(chr(10), $header); $header_lines = explode(chr(10), $header);
// Remove chunked encoding header
foreach ($header_lines as $k => $header_line) {
if(strpos($header_line,'Transfer-Encoding: chunked') !== FALSE) {
unset($header_lines[$k]);
}
}
// store the information in the cache // store the information in the cache
$file_cache->save(json_encode($header_lines), $header_key); $file_cache->save(json_encode($header_lines), $header_key);
$file_cache->save($body, $data_key); $file_cache->save($body, $data_key);