Add hooks for GA tracking feature [PREMIUM-2]

This commit is contained in:
Alexey Stoletniy
2017-03-08 14:17:24 +03:00
parent 16dc81150d
commit e2864e2243
4 changed files with 28 additions and 6 deletions

View File

@ -29,12 +29,12 @@ class Newsletters extends APIEndpoint {
APIError::NOT_FOUND => __('This newsletter does not exist.', 'mailpoet')
));
} else {
return $this->successResponse(
$newsletter
$newsletter = $newsletter
->withSegments()
->withOptions()
->asArray()
);
->asArray();
$newsletter = apply_filters('mailpoet_api_newsletters_get_after', $newsletter);
return $this->successResponse($newsletter);
}
}
@ -51,6 +51,8 @@ class Newsletters extends APIEndpoint {
unset($data['options']);
}
$data = apply_filters('mailpoet_api_newsletters_save_before', $data);
$newsletter = Newsletter::createOrUpdate($data);
$errors = $newsletter->getErrors();
@ -93,6 +95,8 @@ class Newsletters extends APIEndpoint {
$newsletter = Newsletter::filter('filterWithOptions')
->findOne($newsletter->id);
do_action('mailpoet_api_newsletters_save_after', $newsletter);
// if this is a post notification, process newsletter options and update its schedule
if($newsletter->type === Newsletter::TYPE_NOTIFICATION) {
// generate the new schedule from options and get the new "next run" date
@ -204,6 +208,7 @@ class Newsletters extends APIEndpoint {
if(!empty($errors)) {
return $this->errorResponse($errors);
} else {
do_action('mailpoet_api_newsletters_duplicate_after', $newsletter, $duplicate);
return $this->successResponse(
Newsletter::findOne($duplicate->id)->asArray(),
array('count' => 1)

View File

@ -36,11 +36,21 @@ class Newsletter {
$this->tracking_image_inserted = OpenTracking::addTrackingImage();
// render newsletter
$rendered_newsletter = $newsletter->render();
$rendered_newsletter = apply_filters(
'mailpoet_sending_newsletter_render_after',
$rendered_newsletter,
$newsletter
);
// hash and save all links
$rendered_newsletter = LinksTask::process($rendered_newsletter, $newsletter, $queue);
} else {
// render newsletter
$rendered_newsletter = $newsletter->render();
$rendered_newsletter = apply_filters(
'mailpoet_sending_newsletter_render_after',
$rendered_newsletter,
$newsletter
);
}
// check if this is a post notification and if it contains posts
$newsletter_contains_posts = strpos($rendered_newsletter['html'], 'data-post-id');

View File

@ -14,6 +14,9 @@ class Links {
const DATA_TAG_OPEN = '[mailpoet_open_data]';
const HASH_LENGTH = 5;
const LINK_TYPE_SHORTCODE = 'shortcode';
const LINK_TYPE_LINK = 'link';
static function extract($content) {
$extracted_links = array();
// adopted from WP's wp_extract_urls() function & modified to work on hrefs
@ -39,6 +42,7 @@ class Links {
if($shortcodes) {
$extracted_links = array_map(function($shortcode) {
return array(
'type' => self::LINK_TYPE_SHORTCODE,
'html' => $shortcode,
'link' => $shortcode
);
@ -50,6 +54,7 @@ class Links {
if($matched_urls_count) {
for($index = 0; $index < $matched_urls_count; $index++) {
$extracted_links[] = array(
'type' => self::LINK_TYPE_LINK,
'html' => $matched_urls[0][$index],
'link' => $matched_urls[2][$index]
);

View File

@ -15,6 +15,7 @@ class LinksTest extends MailPoetTest {
expect($result[0])->equals(
array(
'type' => Links::LINK_TYPE_LINK,
'html' => 'href="http://link1.com"',
'link' => 'http://link1.com'
)
@ -27,6 +28,7 @@ class LinksTest extends MailPoetTest {
expect($result[0])->equals(
array(
'type' => Links::LINK_TYPE_SHORTCODE,
'html' => '[link:some_link_shortcode]',
'link' => '[link:some_link_shortcode]'
)