| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <?php
- namespace MailPoet\Models;
- if (!defined('ABSPATH')) exit;
- /**
- * @property string|null $sentAt
- */
- class StatisticsNewsletters extends Model {
- public static $_table = MP_STATISTICS_NEWSLETTERS_TABLE; // phpcs:ignore PSR2.Classes.PropertyDeclaration
- public static function createMultiple(array $data) {
- $values = [];
- foreach ($data as $value) {
- if (!empty($value['newsletter_id']) &&
- !empty($value['subscriber_id']) &&
- !empty($value['queue_id'])
- ) {
- $values[] = $value['newsletter_id'];
- $values[] = $value['subscriber_id'];
- $values[] = $value['queue_id'];
- }
- }
- if (!count($values)) return false;
- return self::rawExecute(
- 'INSERT INTO `' . self::$_table . '` ' .
- '(newsletter_id, subscriber_id, queue_id) ' .
- 'VALUES ' . rtrim(
- str_repeat('(?,?,?), ', count($values) / 3),
- ', '
- ),
- $values
- );
- }
- public static function getAllForSubscriber(Subscriber $subscriber) {
- return static::tableAlias('statistics')
- ->select('statistics.newsletter_id', 'newsletter_id')
- ->select('newsletter_rendered_subject')
- ->select('opens.created_at', 'opened_at')
- ->select('sent_at')
- ->join(
- SendingQueue::$_table,
- ['statistics.queue_id', '=', 'queue.id'],
- 'queue'
- )
- ->leftOuterJoin(
- StatisticsOpens::$_table,
- 'statistics.newsletter_id = opens.newsletter_id AND statistics.subscriber_id = opens.subscriber_id',
- 'opens'
- )
- ->where('statistics.subscriber_id', $subscriber->id())
- ->orderByAsc('newsletter_id');
- }
- }
|