暫無描述

SubscriberLinkTokens.php 1.1KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. namespace MailPoet\Cron\Workers;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\Models\ScheduledTask;
  5. use MailPoet\Models\Subscriber;
  6. use MailPoet\WP\Functions as WPFunctions;
  7. use MailPoetVendor\Carbon\Carbon;
  8. use MailPoetVendor\Idiorm\ORM;
  9. if (!defined('ABSPATH')) exit;
  10. class SubscriberLinkTokens extends SimpleWorker {
  11. const TASK_TYPE = 'subscriber_link_tokens';
  12. const BATCH_SIZE = 10000;
  13. const AUTOMATIC_SCHEDULING = false;
  14. public function processTaskStrategy(ScheduledTask $task, $timer) {
  15. $count = Subscriber::whereNull('link_token')->count();
  16. if ($count) {
  17. $authKey = defined('AUTH_KEY') ? AUTH_KEY : '';
  18. ORM::rawExecute(
  19. sprintf('UPDATE %s SET link_token = SUBSTRING(MD5(CONCAT(?, email)), 1, ?) WHERE link_token IS NULL LIMIT ?', Subscriber::$_table),
  20. [$authKey, Subscriber::OBSOLETE_LINK_TOKEN_LENGTH, self::BATCH_SIZE]
  21. );
  22. $this->schedule();
  23. }
  24. return true;
  25. }
  26. public function getNextRunDate() {
  27. $wp = new WPFunctions();
  28. return Carbon::createFromTimestamp($wp->currentTime('timestamp'));
  29. }
  30. }