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:
@@ -67,17 +67,16 @@ class Shortcodes {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getArchive($params) {
|
function getArchive($params) {
|
||||||
|
$segment_ids = array();
|
||||||
if(!empty($params['segments'])) {
|
if(!empty($params['segments'])) {
|
||||||
$segment_ids = array_map(function($segment_id) {
|
$segment_ids = array_map(function($segment_id) {
|
||||||
return (int)trim($segment_id);
|
return (int)trim($segment_id);
|
||||||
}, explode(',', $params['segments']));
|
}, explode(',', $params['segments']));
|
||||||
}
|
}
|
||||||
|
|
||||||
$newsletters = array();
|
|
||||||
$html = '';
|
$html = '';
|
||||||
|
|
||||||
// TODO: needs more advanced newsletters in order to finish
|
$newsletters = Newsletter::getArchives($segment_ids);
|
||||||
$newsletters = Newsletter::limit(10)->orderByDesc('created_at')->findMany();
|
|
||||||
|
|
||||||
if(empty($newsletters)) {
|
if(empty($newsletters)) {
|
||||||
return apply_filters(
|
return apply_filters(
|
||||||
@@ -109,7 +108,7 @@ class Shortcodes {
|
|||||||
function renderArchiveDate($newsletter) {
|
function renderArchiveDate($newsletter) {
|
||||||
return date_i18n(
|
return date_i18n(
|
||||||
get_option('date_format'),
|
get_option('date_format'),
|
||||||
strtotime($newsletter->created_at)
|
strtotime($newsletter->processed_at)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -611,4 +611,31 @@ class Newsletter extends Model {
|
|||||||
->whereIn('options.value', $segments)
|
->whereIn('options.value', $segments)
|
||||||
->findMany();
|
->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();
|
||||||
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user