Ei kuvausta

Subscribers.php 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace MailPoet\Tasks;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\Models\ScheduledTask;
  5. use MailPoet\Models\ScheduledTaskSubscriber;
  6. class Subscribers {
  7. private $task;
  8. public function __construct(
  9. ScheduledTask $task
  10. ) {
  11. $this->task = $task;
  12. }
  13. public function setSubscribers(array $subscriberIds) {
  14. ScheduledTaskSubscriber::setSubscribers($this->task->id, $subscriberIds);
  15. }
  16. public function getSubscribers() {
  17. return ScheduledTaskSubscriber::where('task_id', $this->task->id);
  18. }
  19. public function removeSubscribers(array $subscribersToRemove) {
  20. $this->getSubscribers()
  21. ->whereIn('subscriber_id', $subscribersToRemove)
  22. ->deleteMany();
  23. $this->checkCompleted();
  24. }
  25. public function removeAllSubscribers() {
  26. $this->getSubscribers()
  27. ->deleteMany();
  28. $this->checkCompleted();
  29. }
  30. public function updateProcessedSubscribers(array $processedSubscribers) {
  31. if (!empty($processedSubscribers)) {
  32. $this->getSubscribers()
  33. ->whereIn('subscriber_id', $processedSubscribers)
  34. ->findResultSet()
  35. ->set('processed', ScheduledTaskSubscriber::STATUS_PROCESSED)
  36. ->save();
  37. }
  38. $this->checkCompleted();
  39. }
  40. public function saveSubscriberError($subcriberId, $errorMessage) {
  41. $this->getSubscribers()
  42. ->where('subscriber_id', $subcriberId)
  43. ->findResultSet()
  44. ->set('failed', ScheduledTaskSubscriber::FAIL_STATUS_FAILED)
  45. ->set('error', $errorMessage)
  46. ->save();
  47. }
  48. private function checkCompleted($count = null) {
  49. if (!$count && !ScheduledTaskSubscriber::getUnprocessedCount($this->task->id)) {
  50. $this->task->complete();
  51. }
  52. }
  53. }