Complete port of all 163 API endpoints from Lucee/CFML to PHP 8.3. Shared helpers in api/helpers.php (DB, auth, request/response, security). PDO prepared statements throughout. Same JSON response shapes as CFML.
61 lines
1.9 KiB
PHP
61 lines
1.9 KiB
PHP
<?php
|
|
require_once __DIR__ . '/../helpers.php';
|
|
runAuth();
|
|
|
|
/**
|
|
* Clear menu data for a specific business
|
|
*
|
|
* POST body: { "BusinessID": 37, "confirm": "DELETE_ALL_DATA" }
|
|
*/
|
|
|
|
$data = readJsonBody();
|
|
$businessID = (int) ($data['BusinessID'] ?? 0);
|
|
$confirm = $data['confirm'] ?? '';
|
|
|
|
if ($businessID === 0) {
|
|
jsonResponse(['OK' => false, 'ERROR' => 'BusinessID is required']);
|
|
}
|
|
|
|
if ($confirm !== 'DELETE_ALL_DATA') {
|
|
jsonResponse(['OK' => false, 'ERROR' => "Must pass confirm: 'DELETE_ALL_DATA' to proceed"]);
|
|
}
|
|
|
|
try {
|
|
// Get counts before deletion
|
|
$itemCount = queryOne("SELECT COUNT(*) as cnt FROM Items WHERE BusinessID = ?", [$businessID]);
|
|
$catCount = queryOne("SELECT COUNT(*) as cnt FROM Categories WHERE BusinessID = ?", [$businessID]);
|
|
|
|
// Get item IDs for this business to delete template links
|
|
$itemRows = queryTimed("SELECT ID FROM Items WHERE BusinessID = ?", [$businessID]);
|
|
$itemIds = array_column($itemRows, 'ID');
|
|
|
|
$deletedLinks = 0;
|
|
if (count($itemIds) > 0) {
|
|
$placeholders = implode(',', array_fill(0, count($itemIds), '?'));
|
|
$params = array_merge($itemIds, $itemIds);
|
|
queryTimed(
|
|
"DELETE FROM lt_ItemID_TemplateItemID WHERE ItemID IN ($placeholders) OR TemplateItemID IN ($placeholders)",
|
|
$params
|
|
);
|
|
$deletedLinks = count($itemIds);
|
|
}
|
|
|
|
// Delete all items for this business
|
|
queryTimed("DELETE FROM Items WHERE BusinessID = ?", [$businessID]);
|
|
|
|
// Delete all categories for this business
|
|
queryTimed("DELETE FROM Categories WHERE BusinessID = ?", [$businessID]);
|
|
|
|
jsonResponse([
|
|
'OK' => true,
|
|
'deleted' => [
|
|
'items' => (int) $itemCount['cnt'],
|
|
'categories' => (int) $catCount['cnt'],
|
|
'templateLinks' => $deletedLinks,
|
|
],
|
|
'businessID' => $businessID,
|
|
]);
|
|
|
|
} catch (Exception $e) {
|
|
jsonResponse(['OK' => false, 'ERROR' => $e->getMessage()]);
|
|
}
|