File: /var/www/html/wp-content/plugins/backup-guard-security-platinum/com/lib/Reloader.php
<?php
namespace BackupGuard\Security;
require_once(BGS_SCAN_PATH.'Scanner.php');
require_once(BGS_LIB_PATH.'ReloaderState.php');
require_once(BGS_LIB_PATH.'ReloadHandler.php');
require_once(BGS_LIB_PATH.'Callback.php');
class Reloader
{
public static function awake($method = null)
{
$reloaderState = ReloaderState::loadState();
if ($reloaderState['callback'] != "" && $reloaderState['state'] == BGS_RELOADER_STATUS_IDLE) {
$callbackJson = json_decode($reloaderState['callback']);
$callbackJson->params = array();
$callback = new Callback($callbackJson->class, $callbackJson->method, $callbackJson->params);
if ($callback->canPerform()) {
self::saveState('', BGS_RELOADER_STATUS_RUNNING);
$callback->perform();
}
}
return;
}
private static function saveState($callback, $state = BGS_RELOADER_STATUS_IDLE)
{
$sgReloaderState = new ReloaderState();
$sgReloaderState->setCallback($callback);
$sgReloaderState->setState($state);
$sgReloaderState->update();
}
public static function didCompleteCallback()
{
self::saveState('', BGS_RELOADER_STATUS_IDLE);
}
public static function registerCallback(Callback $callback)
{
self::saveState($callback->toString());
}
public static function reset()
{
ReloaderState::reset();
}
public static function reloadWithAjaxUrl($awakeURL)
{
// awake frequency in miliseconds
$ajaxRequestFrequency = Config::get('BGS_AJAX_REQUEST_FREQUENCY');
$sgAwakeFrequency = $ajaxRequestFrequency?$ajaxRequestFrequency:BGS_AJAX_DEFAULT_REQUEST_FREQUENCY;
$sgAwakeFrequency = $sgAwakeFrequency / 1000; // awake frequency in seconds
// add 3 seconds to awake frequency
$timeout = $sgAwakeFrequency + 3;
while ($timeout) {
$reloaderState = ReloaderState::loadState();
$state = $reloaderState['state'];
if ($state == BGS_RELOADER_STATUS_RUNNING) {
return;
}
sleep(1);
$timeout--;
}
self::reload($awakeURL);
}
private static function reload($awakeURL)
{
$sgReloadHandler = new ReloadHandler($awakeURL);
$sgReloadHandler->reload();
return;
}
}