From e628443c027132532bc0d006e5a599e1c7e6c9d5 Mon Sep 17 00:00:00 2001 From: John Mizerek Date: Wed, 14 Jan 2026 13:31:18 -0800 Subject: [PATCH] Add admin script to cleanup orphan items --- api/admin/cleanupOrphanItem.cfm | 55 +++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 api/admin/cleanupOrphanItem.cfm diff --git a/api/admin/cleanupOrphanItem.cfm b/api/admin/cleanupOrphanItem.cfm new file mode 100644 index 0000000..d923edf --- /dev/null +++ b/api/admin/cleanupOrphanItem.cfm @@ -0,0 +1,55 @@ + +// Quick admin script to deactivate orphan item 11543 (stale "Extras" on Cheeseburger) +// This item has no children and no template link - it's leftover from before the template system + +param name="url.itemId" default="11543"; +param name="url.action" default="check"; // "check" or "deactivate" + +// Check the item first +qItem = queryExecute(" + SELECT ItemID, ItemName, ItemParentItemID, ItemIsActive, ItemIsCollapsible + FROM Items + WHERE ItemID = :itemId +", { itemId: url.itemId }); + +if (qItem.recordCount == 0) { + writeOutput(serializeJSON({ OK: false, ERROR: "Item not found" })); + abort; +} + +// Check if item has children +qChildren = queryExecute(" + SELECT COUNT(*) as cnt + FROM Items + WHERE ItemParentItemID = :itemId +", { itemId: url.itemId }); + +result = { + "OK": true, + "ACTION": url.action, + "ITEM": { + "ItemID": qItem.ItemID, + "ItemName": qItem.ItemName, + "ItemParentItemID": qItem.ItemParentItemID, + "ItemIsActive": qItem.ItemIsActive, + "ItemIsCollapsible": qItem.ItemIsCollapsible + }, + "HAS_CHILDREN": qChildren.cnt > 0, + "CHILD_COUNT": qChildren.cnt +}; + +if (url.action == "deactivate" && qChildren.cnt == 0) { + queryExecute(" + UPDATE Items + SET ItemIsActive = 0 + WHERE ItemID = :itemId + ", { itemId: url.itemId }); + result["DEACTIVATED"] = true; + result["MESSAGE"] = "Item deactivated successfully"; +} else if (url.action == "deactivate" && qChildren.cnt > 0) { + result["DEACTIVATED"] = false; + result["MESSAGE"] = "Cannot deactivate - item has children"; +} + +writeOutput(serializeJSON(result)); +