PluginProbe
VikBooking Hotel Booking Engine & PMS / trunk
VikBooking Hotel Booking Engine & PMS vtrunk
1.8.15 1.8.14 1.8.13 1.8.12 1.8.11 1.8.10 1.8.9 1.8.6 1.8.7 1.8.8 trunk 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 All 36 releases
vikbooking / admin / helpers / src / crontab / semaphore / config.php

config.php in VikBooking Hotel Booking Engine & PMS trunk, at admin/helpers/src/crontab/semaphore/config.php

58 lines 1.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @package VikBooking
4 * @subpackage core
5 * @author E4J s.r.l.
6 * @copyright Copyright (C) 2021 E4J s.r.l. All Rights Reserved.
7 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
8 * @link https://vikwp.com
9 */
10
11 // No direct access
12 defined('ABSPATH') or die('No script kiddies please!');
13
14 /**
15 * Cron runner semaphore interface.
16 *
17 * @since 1.7
18 */
19 class VBOCrontabSemaphoreConfig implements VBOCrontabSemaphore
20 {
21 /**
22 * @inheritDoc
23 */
24 public function getLastExecution(VBOCrontabRunner $cron)
25 {
26 // fetch the last execution time of the provided cron (unix timestamp)
27 $lastExecution = VBOFactory::getConfig()->getUint('cron_exec_' . $cron->getID(), 0);
28 // create a date time instance starting from the provided UNIX timestamp
29 return JFactory::getDate($lastExecution);
30 }
31
32 /**
33 * @inheritDoc
34 */
35 public function shouldPass(VBOCrontabRunner $cron)
36 {
37 // fetch the last execution date time of the cron job
38 $lastExecution = $this->getLastExecution($cron);
39
40 // calculate the next execution of the cron job
41 $nextExecution = $cron->getNextExecution($lastExecution)->getTimestamp();
42
43 // get the current timestamp
44 $now = JFactory::getDate()->getTimestamp();
45
46 // check whether the next execution is still in the future
47 if ($nextExecution > $now) {
48 // should not execute
49 return false;
50 }
51
52 // immediately update the execution to prevent duplicate usages
53 VBOFactory::getConfig()->set('cron_exec_' . $cron->getID(), $now);
54 // should execute right now
55 return true;
56 }
57 }
58