From 3d61d883a225a2fa84243e6806f4929993dd7b9f Mon Sep 17 00:00:00 2001 From: John Mizerek Date: Wed, 14 Jan 2026 13:32:38 -0800 Subject: [PATCH] Update cleanup script to handle children --- api/admin/cleanupOrphanItem.cfm | 34 ++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/api/admin/cleanupOrphanItem.cfm b/api/admin/cleanupOrphanItem.cfm index d923edf..36b3076 100644 --- a/api/admin/cleanupOrphanItem.cfm +++ b/api/admin/cleanupOrphanItem.cfm @@ -1,6 +1,6 @@ -// 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 +// Admin script to deactivate orphan items and their children +// Used to clean up stale items leftover from before the template system param name="url.itemId" default="11543"; param name="url.action" default="check"; // "check" or "deactivate" @@ -17,13 +17,18 @@ if (qItem.recordCount == 0) { abort; } -// Check if item has children +// Get all children (direct only for display) qChildren = queryExecute(" - SELECT COUNT(*) as cnt + SELECT ItemID, ItemName FROM Items WHERE ItemParentItemID = :itemId ", { itemId: url.itemId }); +childList = []; +for (row in qChildren) { + arrayAppend(childList, { "ItemID": row.ItemID, "ItemName": row.ItemName }); +} + result = { "OK": true, "ACTION": url.action, @@ -34,21 +39,28 @@ result = { "ItemIsActive": qItem.ItemIsActive, "ItemIsCollapsible": qItem.ItemIsCollapsible }, - "HAS_CHILDREN": qChildren.cnt > 0, - "CHILD_COUNT": qChildren.cnt + "HAS_CHILDREN": qChildren.recordCount > 0, + "CHILD_COUNT": qChildren.recordCount, + "CHILDREN": childList }; -if (url.action == "deactivate" && qChildren.cnt == 0) { +if (url.action == "deactivate") { + // Deactivate children first + queryExecute(" + UPDATE Items + SET ItemIsActive = 0 + WHERE ItemParentItemID = :itemId + ", { itemId: url.itemId }); + + // Then deactivate the parent 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"; + result["MESSAGE"] = "Item and #qChildren.recordCount# children deactivated successfully"; } writeOutput(serializeJSON(result));