Fixing Shortcodes issue

This commit is contained in:
Amine Ben hammou
2017-09-20 11:01:05 +00:00
parent 03d0de74e4
commit 42e3a97616
2 changed files with 22 additions and 8 deletions

View File

@ -4,6 +4,7 @@ use MailPoet\Models\Newsletter;
use MailPoet\Models\Subscriber; use MailPoet\Models\Subscriber;
use MailPoet\Models\SubscriberSegment; use MailPoet\Models\SubscriberSegment;
use MailPoet\Newsletter\Url as NewsletterUrl; use MailPoet\Newsletter\Url as NewsletterUrl;
use MailPoet\WP\Hooks;
class Shortcodes { class Shortcodes {
function __construct() { function __construct() {
@ -26,10 +27,10 @@ class Shortcodes {
$this, 'getArchive' $this, 'getArchive'
)); ));
add_filter('mailpoet_archive_date', array( Hooks::addFilter('mailpoet_archive_date', array(
$this, 'renderArchiveDate' $this, 'renderArchiveDate'
), 2); ), 2);
add_filter('mailpoet_archive_subject', array( Hooks::addFilter('mailpoet_archive_subject', array(
$this, 'renderArchiveSubject' $this, 'renderArchiveSubject'
), 2, 3); ), 2, 3);
} }
@ -79,12 +80,12 @@ class Shortcodes {
$subscriber = Subscriber::getCurrentWPUser(); $subscriber = Subscriber::getCurrentWPUser();
if(empty($newsletters)) { if(empty($newsletters)) {
return apply_filters( return Hooks::applyFilters(
'mailpoet_archive_no_newsletters', 'mailpoet_archive_no_newsletters',
__('Oops! There are no newsletters to display.', 'mailpoet') __('Oops! There are no newsletters to display.', 'mailpoet')
); );
} else { } else {
$title = apply_filters('mailpoet_archive_title', ''); $title = Hooks::applyFilters('mailpoet_archive_title', '');
if(!empty($title)) { if(!empty($title)) {
$html .= '<h3 class="mailpoet_archive_title">'.$title.'</h3>'; $html .= '<h3 class="mailpoet_archive_title">'.$title.'</h3>';
} }
@ -93,10 +94,10 @@ class Shortcodes {
$queue = $newsletter->queue()->findOne(); $queue = $newsletter->queue()->findOne();
$html .= '<li>'. $html .= '<li>'.
'<span class="mailpoet_archive_date">'. '<span class="mailpoet_archive_date">'.
apply_filters('mailpoet_archive_date', $newsletter). Hooks::applyFilters('mailpoet_archive_date', $newsletter).
'</span> '</span>
<span class="mailpoet_archive_subject">'. <span class="mailpoet_archive_subject">'.
apply_filters('mailpoet_archive_subject', $newsletter, $subscriber, $queue). Hooks::applyFilters('mailpoet_archive_subject', $newsletter, $subscriber, $queue).
'</span> '</span>
</li>'; </li>';
} }

View File

@ -1,6 +1,7 @@
<?php <?php
namespace MailPoet\Test\Config; namespace MailPoet\Test\Config;
use Helper\WordPress;
use MailPoet\Config\Shortcodes; use MailPoet\Config\Shortcodes;
use MailPoet\Models\Newsletter; use MailPoet\Models\Newsletter;
use MailPoet\Models\SendingQueue; use MailPoet\Models\SendingQueue;
@ -21,8 +22,20 @@ class ShortcodesTest extends \MailPoetTest {
function testItGetsArchives() { function testItGetsArchives() {
$shortcodes = new Shortcodes(); $shortcodes = new Shortcodes();
WordPress::interceptFunction('apply_filters', function() use($shortcodes) {
$args = func_get_args();
$filter_name = array_shift($args);
switch ($filter_name) {
case 'mailpoet_archive_date':
return $shortcodes->renderArchiveDate($args[0]);
case 'mailpoet_archive_subject':
return $shortcodes->renderArchiveSubject($args[0], $args[1], $args[2]);
}
return '';
});
// result contains a link pointing to the "view in browser" router endpoint // result contains a link pointing to the "view in browser" router endpoint
$result = $shortcodes->getArchive($params = false); $result = $shortcodes->getArchive($params = false);
WordPress::releaseFunction('apply_filters');
$dom = \pQuery::parseStr($result); $dom = \pQuery::parseStr($result);
$link = $dom->query('a'); $link = $dom->query('a');
$link = $link->attr('href'); $link = $link->attr('href');