You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.8 KiB

<?php
if (!defined('pp_allowed_access')) {
die('Direct access not allowed');
}
add_action('pp_cron', 'auto_update_checker');
function auto_update_checker() {
$logFile = __DIR__ . '/pp-auto-update-log.json';
$checkInterval = 24 * 60 * 60; // 24 hours in seconds
// Load last log
$lastLog = [];
if (file_exists($logFile)) {
$lastLog = json_decode(file_get_contents($logFile), true);
}
// Check if last update was less than 24 hours ago
$lastCheckTime = isset($lastLog['last_check']) ? strtotime($lastLog['last_check']) : 0;
$now = time();
if ($now - $lastCheckTime < $checkInterval) {
echo json_encode([
'status' => 'false',
'message' => 'Update check already performed within the last 24 hours.'
]);
exit;
}
// Perform cURL update
$url = "https://{$_SERVER['HTTP_HOST']}/pp-auto-update";
$postData = [
'auto-update' => 'start',
'mh-piprapay-auto-update' => 'yes'
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
$response = curl_exec($ch);
$curlError = curl_error($ch);
curl_close($ch);
// Prepare log entry
$logEntry = [
'last_check' => date('Y-m-d H:i:s'),
'response_raw' => $response,
'error' => $curlError ?: 'none'
];
// Save log
file_put_contents($logFile, json_encode($logEntry, JSON_PRETTY_PRINT));
// Output response
if ($curlError) {
echo json_encode([
'status' => 'false',
'message' => 'cURL error: ' . $curlError
]);
} else {
echo $response; // assuming it's already JSON from server
}
}