Added Newsletter::getArchives() in order to return proper archives

- Archives page: replaced created_at by processed_at as the issue date
This commit is contained in:
Jonathan Labreuille
2016-07-28 11:52:56 +02:00
parent 420650f37f
commit 641ba04685
2 changed files with 30 additions and 4 deletions

View File

@@ -67,17 +67,16 @@ class Shortcodes {
}
function getArchive($params) {
$segment_ids = array();
if(!empty($params['segments'])) {
$segment_ids = array_map(function($segment_id) {
return (int)trim($segment_id);
}, explode(',', $params['segments']));
}
$newsletters = array();
$html = '';
// TODO: needs more advanced newsletters in order to finish
$newsletters = Newsletter::limit(10)->orderByDesc('created_at')->findMany();
$newsletters = Newsletter::getArchives($segment_ids);
if(empty($newsletters)) {
return apply_filters(
@@ -109,7 +108,7 @@ class Shortcodes {
function renderArchiveDate($newsletter) {
return date_i18n(
get_option('date_format'),
strtotime($newsletter->created_at)
strtotime($newsletter->processed_at)
);
}

View File

@@ -611,4 +611,31 @@ class Newsletter extends Model {
->whereIn('options.value', $segments)
->findMany();
}
static function getArchives($segment_ids = array()) {
$orm = self::table_alias('newsletters')
->distinct()->select('newsletters.*')
->whereIn('newsletters.type', array(
self::TYPE_STANDARD,
self::TYPE_NOTIFICATION_HISTORY
))
->join(
MP_SENDING_QUEUES_TABLE,
'queues.newsletter_id = newsletters.id',
'queues'
)
->where('queues.status', SendingQueue::STATUS_COMPLETED)
->select('queues.processed_at')
->orderByDesc('queues.processed_at');
if(!empty($segment_ids)) {
$orm->join(
MP_NEWSLETTER_SEGMENT_TABLE,
'newsletter_segments.newsletter_id = newsletters.id',
'newsletter_segments'
)
->whereIn('newsletter_segments.segment_id', $segment_ids);
}
return $orm->findMany();
}
}