File: /var/www/gurumedia_st_usr/data/www/gurumedia.store/frd-api/frdapi-SoftUp.php
<?php
/*
Soft Up
Version: 2
*/
// Always return JSON
header('Content-Type: application/json; charset=utf-8');
http_response_code(200);
// ---- Method & Content-Type handling ----
$method = $_SERVER['REQUEST_METHOD'] ?? 'GET';
if ($method !== 'POST') {
http_response_code(405);
echo json_encode(['FRA' => 2, 'FRM' => 'Only POST allowed']);
exit;
}
$rawContentType = $_SERVER['CONTENT_TYPE'] ?? '';
$ct = strtolower(trim(explode(';', $rawContentType)[0]));
// Accept JSON primarily; tolerate form-encoded as fallback
$input = [];
if ($ct === 'application/json') {
$raw = file_get_contents('php://input');
try {
$input = json_decode($raw, true, 512, JSON_THROW_ON_ERROR);
} catch (Throwable $e) {
http_response_code(400);
echo json_encode(['FRA' => 2, 'FRM' => 'Invalid JSON: '.$e->getMessage()]);
exit;
}
} elseif ($ct === 'application/x-www-form-urlencoded' || $ct === 'multipart/form-data') {
// Fallback: accept standard form submit
$input = $_POST;
} else {
// If no/unknown content-type but body exists, try JSON; else 415
$raw = file_get_contents('php://input');
if (strlen($raw ?? '') > 0) {
$try = json_decode($raw, true);
if (json_last_error() === JSON_ERROR_NONE) {
$input = $try;
} else {
http_response_code(415);
echo json_encode(['FRA' => 2, 'FRM' => 'Unsupported Media Type. Send application/json or application/x-www-form-urlencoded']);
exit;
}
} else {
http_response_code(415);
echo json_encode(['FRA' => 2, 'FRM' => 'Unsupported Media Type (empty body)']);
exit;
}
}
// ---- Pull expected fields with defaults ----
$FR_U = $input['FR_U'] ?? '0';
$FR_P = $input['FR_P'] ?? '0';
$FRd_LATEST_R_VERSION = isset($input['FRd_LATEST_R_VERSION']) ? (int)$input['FRd_LATEST_R_VERSION'] : null;
// Your environment variables / constants must exist:
$FR_SOFT_VERSION = $FR_SOFT_VERSION ?? 0;
$FR_PATH_HD = rtrim($FR_PATH_HD ?? __DIR__.'/../../', '/').'/';
$FRD_HURL = $FRD_HURL ?? ($_SERVER['HTTP_HOST'] ?? '');
// ---- Output scaffold ----
$FR_OUTPUT = [];
$FRc_FRA = 2; // default: not updated
$FRc_RuningVersion = $FR_SOFT_VERSION;
$FRc_Message = "";
$FRc_MMessage_TABLEUPDATE = "";
// ---- Short-circuit if already latest ----
$FR_VC_LATEST_R_VERSION = "NO";
if ($FRd_LATEST_R_VERSION !== null && $FRd_LATEST_R_VERSION == $FR_SOFT_VERSION) {
$FR_VC_LATEST_R_VERSION = "YES";
$FRc_FRA = 2;
$FRc_Message .= "LATEST VERSION $FR_SOFT_VERSION RUNNING ON $FRD_HURL";
}
// ---- If not latest, continue update chain ----
$FRc_NEXT_VALID_UPDATE_VERSION = $FR_SOFT_VERSION + 1;
$FR_VC_ZIP_FILE_EXIST = 0;
$FR_VC_ZIP_FILE_DOWNLOAD = 0;
$FR_VC_FILE_VERSION = 0;
$FR_VC_ZIP_FILE_EXTRACT = 0;
$FR_VC_TABLE_UPDATE = 0;
if ($FR_VC_LATEST_R_VERSION === "NO") {
// Remote file
$remoteZipFileURL = "https://spiderecommerce.com/ahost/released-version/V-3-$FRc_NEXT_VALID_UPDATE_VERSION-SPIDER_ECOMMERCE.zip";
$localZipFile = $FR_PATH_HD."V-3-$FRc_NEXT_VALID_UPDATE_VERSION-SPIDER_ECOMMERCE.zip";
// HEAD check
$ch = curl_init($remoteZipFileURL);
curl_setopt_array($ch, [
CURLOPT_NOBODY => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if (($info['http_code'] ?? 0) == 200) {
$ctype = strtolower($info['content_type'] ?? '');
// Some servers return different zip MIME types; be lenient
if (strpos($ctype, 'zip') !== false || $ctype === '' /* some hosts omit */) {
$FR_VC_ZIP_FILE_EXIST = 1;
$FRc_Message .= "Remote ZIP file exists and can be downloaded \n";
} else {
$FRc_Message .= " + Error: Remote ZIP not reported as zip (content-type=$ctype) \n";
$FRc_Message .= " + Error: RUNNING VERSION $FR_SOFT_VERSION \n";
}
} else {
$FRc_Message .= " + Error: Remote ZIP file not exists (HTTP ".($info['http_code'] ?? 'NA').") \n";
$FRc_Message .= " + Error: RUNNING VERSION $FR_SOFT_VERSION \n";
}
// Download
if ($FR_VC_ZIP_FILE_EXIST === 1) {
$zipContents = @file_get_contents($remoteZipFileURL);
if ($zipContents === false) {
$FRc_Message .= " + ERROR: Failed to download remote file \n";
} else {
if (@file_put_contents($localZipFile, $zipContents) !== false) {
$FR_VC_ZIP_FILE_DOWNLOAD = 1;
$FRc_Message .= " + Zip File downloaded and saved successfully. \n";
} else {
$FRc_Message .= " + ERROR: Zip File save failed. \n";
}
}
}
// Version validation
if ($FR_VC_ZIP_FILE_DOWNLOAD === 1) {
if (file_exists($localZipFile)) {
$fileName = basename($localZipFile);
$ARR = explode("-", $fileName);
$FRc_File_Version = $ARR[2] ?? '';
if ((string)$FRc_File_Version === (string)$FRc_NEXT_VALID_UPDATE_VERSION) {
$FR_VC_FILE_VERSION = 1;
$FRc_Message .= " + NEXT VERSION VALID \n";
} else {
$FRc_Message .= " + ERROR: NEXT VERSION NOT VALID ($FRc_File_Version) \n";
}
} else {
$FRc_Message .= " + ERROR: ZIP FILE NOT FOUND \n";
}
}
// Unzip
if ($FR_VC_FILE_VERSION === 1) {
$unzip = new ZipArchive();
$out = $unzip->open($localZipFile);
if ($out === TRUE) {
$unzip->extractTo($FR_PATH_HD);
$unzip->close();
$FR_VC_ZIP_FILE_EXTRACT = 1;
$FRc_Message .= " + ZIP FILE EXTRACT COMPLETED \n";
} else {
$FRc_Message .= " + ERROR: ZIP FILE EXTRACT FAILED \n";
}
}
// Table update
if ($FR_VC_ZIP_FILE_EXTRACT === 1) {
$alterFile = $FR_PATH_HD."frd-src/frd-alter-table.php";
if (file_exists($alterFile)) {
require_once $alterFile;
$FR_VC_TABLE_UPDATE = 1;
$FRc_Message .= " + TABLE UPDATE COMPLETED \n";
} else {
$FRc_Message .= " + ERROR: TABLE UPDATE FAILED \n";
}
}
// Cleanup (paths normalized)
if ($FR_VC_TABLE_UPDATE === 1) {
$alterFile = $FR_PATH_HD."frd-src/frd-alter-table.php";
if (file_exists($alterFile)) {
@unlink($alterFile);
if (!file_exists($alterFile)) {
$FRc_Message .= " + TABLE UPDATE FILE DELETE COMPLETED \n";
}
} else {
$FRc_Message .= " + ERROR: TABLE UPDATE FILE NOT EXIST \n";
}
if (file_exists($localZipFile)) {
@unlink($localZipFile);
if (!file_exists($localZipFile)) {
$FRc_Message .= " + ZIP FILE DELETE COMPLETED \n";
}
} else {
$FRc_Message .= " + ERROR: ZIP FILE NOT EXIST FOR DELETE \n";
}
// (Your FRF_DeleteFolder and unlink calls kept as-is; ensure functions and flags exist)
if (function_exists('FRF_DeleteFolder')) {
if (($frsc_sells_reports ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frdsp/dp/page/frd-p-sr"); }
if (($frsc_sells_reports ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frd-api/frd-sr"); }
if (($frsc_profit_reports ?? 1) == 0){ FRF_DeleteFolder($FR_PATH_HD."frdsp/dp/page/frd-p-pal");}
if (($frsc_profit_reports ?? 1) == 0){ FRF_DeleteFolder($FR_PATH_HD."frd-api/frd-pal"); }
if (($frsc_ppr_panel ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frdsp/dp/page/frd-p-ppr"); }
if (($frsc_ppr_panel ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frd-api/frd-ppr"); }
if (($frsc_usr_m_panel ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frdsp/dp/page/frd-p-usr"); }
if (($frsc_cust_m_panel ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frdsp/dp/page/frd-p-crm"); }
if (($frplug_RatingRev ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frdsp/dp/page/frd-p-rr"); }
if (($frplug_SMSs ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frdsp/dp/page/frd-p-smss");}
if (($frplug_SMSs ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frd-api/frd-sms"); }
if (($frplug_sms_m_osb ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frdsp/dp/page/frd-p-smsMosb"); }
if (($frplug_SFC_OSAU ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frdsp/dp/page/frd-p-SFCosau"); }
if (($frsc_fb_feed_xml ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frdsp/dp/page/frd-p-fbcat"); }
if (($frplug_suppliers ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frdsp/dp/page/frd-p-supp"); }
if (($frplug_cost ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frdsp/dp/page/frd-p-cost"); }
if (($frplug_ac_m ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frdsp/dp/page/frd-p-acc"); }
if (($frplug_inv_m ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frdsp/dp/page/frd-p-inv");}
if (($frplug_due_m ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frdsp/dp/page/frd-p-due");}
if (($frplug_sitedata ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frdsp/dp/page/frd-p-sitedata");}
if (($frplug_sitedata ?? 1) == 0) { FRF_DeleteFolder($FR_PATH_HD."frd-api/frd-sitedata");}
}
if (($frplug_api_steadfast ?? 1) == 0){ @unlink($FR_PATH_HD."frdsp/dp/page/frd-p-om/frd-BookingApi_SteadFast.php"); }
if (($frplug_api_pathao ?? 1) == 0) { @unlink($FR_PATH_HD."frdsp/dp/page/frd-p-om/frd-BookingApi_Pathao.php"); }
if (($frplug_capi ?? 1) == 0) { @unlink($FR_PATH_HD."frd-api/frd-mixd/frdapi-IniCAPI.php"); }
$FRc_FRA = 1;
$FRc_RuningVersion = $FRc_NEXT_VALID_UPDATE_VERSION;
$FRc_Message .= " + Dear Boss Your eCommerce Website [$FRD_HURL] Update Completed Version $FRc_NEXT_VALID_UPDATE_VERSION!";
}
}
// ---- Final response ----
$FR_OUTPUT['FRA'] = $FRc_FRA;
$FR_OUTPUT['FRM'] = $FRc_Message;
$FR_OUTPUT['FRM_ATERTABLE'] = $FRc_MMessage_TABLEUPDATE;
$FR_OUTPUT['FRrd_RunningVersion']= $FRc_RuningVersion;
$FR_OUTPUT['FRrd_BACK'] = $input;
echo json_encode($FR_OUTPUT, JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);