[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.133.152.151: ~ $
<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing

namespace MailPoet\Cron;

if (!defined('ABSPATH')) exit;


use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
use MailPoetVendor\Carbon\Carbon;

class CronWorkerScheduler {
  /** @var ScheduledTasksRepository */
  private $scheduledTaskRepository;

  public function __construct(
    ScheduledTasksRepository $scheduledTaskRepository
  ) {
    $this->scheduledTaskRepository = $scheduledTaskRepository;
  }

  public function scheduleImmediatelyIfNotRunning($taskType, $priority = ScheduledTaskEntity::PRIORITY_LOW): ScheduledTaskEntity {
    $task = $this->scheduledTaskRepository->findScheduledOrRunningTask($taskType);
    // Do nothing when task is running
    if (($task instanceof ScheduledTaskEntity) && $task->getStatus() === null) {
      return $task;
    }
    $now = Carbon::now()->millisecond(0);
    // Reschedule existing scheduled task
    if ($task instanceof ScheduledTaskEntity) {
      $task->setScheduledAt($now);
      $task->setPriority($priority);
      $this->scheduledTaskRepository->flush();
    }
    // Schedule new task
    return $this->schedule($taskType, $now, $priority);
  }

  public function schedule($taskType, $nextRunDate, $priority = ScheduledTaskEntity::PRIORITY_LOW): ScheduledTaskEntity {
    $alreadyScheduled = $this->scheduledTaskRepository->findScheduledTask($taskType);
    if ($alreadyScheduled) {
      return $alreadyScheduled;
    }
    $task = new ScheduledTaskEntity();
    $task->setType($taskType);
    $task->setStatus(ScheduledTaskEntity::STATUS_SCHEDULED);
    $task->setPriority($priority);
    $task->setScheduledAt($nextRunDate);
    $this->scheduledTaskRepository->persist($task);
    $this->scheduledTaskRepository->flush();
    return $task;
  }

  public function reschedule(ScheduledTaskEntity $task, $timeout) {
    $scheduledAt = Carbon::now()->millisecond(0);
    $task->setScheduledAt($scheduledAt->addMinutes($timeout));
    $task->setStatus(ScheduledTaskEntity::STATUS_SCHEDULED);
    $this->scheduledTaskRepository->persist($task);
    $this->scheduledTaskRepository->flush();
  }

  public function rescheduleProgressively(ScheduledTaskEntity $task): int {
    $scheduledAt = Carbon::now()->millisecond(0);
    $rescheduleCount = $task->getRescheduleCount();
    $timeout = (int)min(ScheduledTaskEntity::BASIC_RESCHEDULE_TIMEOUT * pow(2, $rescheduleCount), ScheduledTaskEntity::MAX_RESCHEDULE_TIMEOUT);
    $task->setScheduledAt($scheduledAt->addMinutes($timeout));
    $task->setRescheduleCount($rescheduleCount + 1);
    $task->setStatus(ScheduledTaskEntity::STATUS_SCHEDULED);
    $this->scheduledTaskRepository->persist($task);
    $this->scheduledTaskRepository->flush();

    return $timeout;
  }
}

Filemanager

Name Type Size Permission Actions
ActionScheduler Folder 0755
Triggers Folder 0755
Workers Folder 0755
CronHelper.php File 7.13 KB 0644
CronTrigger.php File 2.39 KB 0644
CronWorkerInterface.php File 939 B 0644
CronWorkerRunner.php File 5.81 KB 0644
CronWorkerScheduler.php File 2.77 KB 0644
Daemon.php File 4.28 KB 0644
DaemonActionSchedulerRunner.php File 2.04 KB 0644
DaemonHttpRunner.php File 4.67 KB 0644
Supervisor.php File 1.36 KB 0644
index.php File 6 B 0644