class UltimateCronProgress in Ultimate Cron 7.2
Class for handling Ultimate Cron progress.
Hierarchy
- class \UltimateCronProgress
Expanded class hierarchy of UltimateCronProgress
File
- ./
ultimate_cron.progress.inc, line 10 - Pseudo namespace for progress functions.
View source
class UltimateCronProgress {
public $name;
public $progressUpdated = 0;
public $interval = 1;
public static $instances = array();
/**
* Constructor.
*
* @param string $name
* Name of job.
* @param float $interval
* How often the database should be updated with the progress.
*/
public function __construct($name, $interval = 1) {
$this->name = $name;
$this->interval = $interval;
}
/**
* Singleton factory.
*
* @param string $name
* Name of job.
* @param float $interval
* How often the database should be updated with the progress.
*
* @return UltimateCronProgress
* The object.
*/
public static function factory($name, $interval = 1) {
if (!isset(self::$instances[$name])) {
self::$instances[$name] = new UltimateCronProgress($name, $interval);
}
self::$instances[$name]->interval = $interval;
return self::$instances[$name];
}
/**
* Get job progress.
*
* @return float
* The progress of this job.
*/
public function getProgress() {
$name = 'uc-progress:' . $this->name;
$target = _ultimate_cron_get_transactional_safe_connection();
$value = db_select('variable', 'v', array(
'target' => $target,
))
->fields('v', array(
'value',
))
->condition('v.name', $name)
->execute()
->fetchField();
$value = $value ? unserialize($value) : FALSE;
return $value;
}
/**
* Get multiple job progresses.
*
* @param array $names
* Job names to get progress for.
*
* @return array
* Progress of jobs, keyed by job name.
*/
public static function getProgressMultiple($names) {
$keys = array();
foreach ($names as $name) {
$keys[] = 'uc-progress:' . $name;
}
$target = _ultimate_cron_get_transactional_safe_connection();
$values = db_select('variable', 'v', array(
'target' => $target,
))
->fields('v', array(
'name',
'value',
))
->condition('v.name', $keys, 'IN')
->execute()
->fetchAllAssoc('name', PDO::FETCH_OBJ);
$result = array();
foreach ($names as $name) {
$result[$name] = isset($values['uc-progress:' . $name]) ? unserialize($values['uc-progress:' . $name]->value) : FALSE;
}
return $result;
}
/**
* Set job progress.
*
* @param float $progress
* The progress (0 - 1).
*/
public function setProgress($progress) {
if (microtime(TRUE) >= $this->progressUpdated + $this->interval) {
$name = 'uc-progress:' . $this->name;
$target = _ultimate_cron_get_transactional_safe_connection();
db_merge('variable', array(
'target' => $target,
))
->key(array(
'name' => $name,
))
->fields(array(
'value' => serialize($progress),
))
->execute();
$this->progressUpdated = microtime(TRUE);
return TRUE;
}
return FALSE;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
UltimateCronProgress:: |
public static | property | ||
UltimateCronProgress:: |
public | property | ||
UltimateCronProgress:: |
public | property | ||
UltimateCronProgress:: |
public | property | ||
UltimateCronProgress:: |
public static | function | Singleton factory. | |
UltimateCronProgress:: |
public | function | Get job progress. | |
UltimateCronProgress:: |
public static | function | Get multiple job progresses. | |
UltimateCronProgress:: |
public | function | Set job progress. | |
UltimateCronProgress:: |
public | function | Constructor. |