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

View File

@ -36,11 +36,21 @@ class Newsletter {
$this->tracking_image_inserted = OpenTracking::addTrackingImage(); $this->tracking_image_inserted = OpenTracking::addTrackingImage();
// render newsletter // render newsletter
$rendered_newsletter = $newsletter->render(); $rendered_newsletter = $newsletter->render();
$rendered_newsletter = apply_filters(
'mailpoet_sending_newsletter_render_after',
$rendered_newsletter,
$newsletter
);
// hash and save all links // hash and save all links
$rendered_newsletter = LinksTask::process($rendered_newsletter, $newsletter, $queue); $rendered_newsletter = LinksTask::process($rendered_newsletter, $newsletter, $queue);
} else { } else {
// render newsletter // render newsletter
$rendered_newsletter = $newsletter->render(); $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 // check if this is a post notification and if it contains posts
$newsletter_contains_posts = strpos($rendered_newsletter['html'], 'data-post-id'); $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 DATA_TAG_OPEN = '[mailpoet_open_data]';
const HASH_LENGTH = 5; const HASH_LENGTH = 5;
const LINK_TYPE_SHORTCODE = 'shortcode';
const LINK_TYPE_LINK = 'link';
static function extract($content) { static function extract($content) {
$extracted_links = array(); $extracted_links = array();
// adopted from WP's wp_extract_urls() function & modified to work on hrefs // adopted from WP's wp_extract_urls() function & modified to work on hrefs
@ -39,6 +42,7 @@ class Links {
if($shortcodes) { if($shortcodes) {
$extracted_links = array_map(function($shortcode) { $extracted_links = array_map(function($shortcode) {
return array( return array(
'type' => self::LINK_TYPE_SHORTCODE,
'html' => $shortcode, 'html' => $shortcode,
'link' => $shortcode 'link' => $shortcode
); );
@ -50,6 +54,7 @@ class Links {
if($matched_urls_count) { if($matched_urls_count) {
for($index = 0; $index < $matched_urls_count; $index++) { for($index = 0; $index < $matched_urls_count; $index++) {
$extracted_links[] = array( $extracted_links[] = array(
'type' => self::LINK_TYPE_LINK,
'html' => $matched_urls[0][$index], 'html' => $matched_urls[0][$index],
'link' => $matched_urls[2][$index] 'link' => $matched_urls[2][$index]
); );

View File

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