// 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" // 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; } // Get all children (direct only for display) qChildren = queryExecute(" 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, "ITEM": { "ItemID": qItem.ItemID, "ItemName": qItem.ItemName, "ItemParentItemID": qItem.ItemParentItemID, "ItemIsActive": qItem.ItemIsActive, "ItemIsCollapsible": qItem.ItemIsCollapsible }, "HAS_CHILDREN": qChildren.recordCount > 0, "CHILD_COUNT": qChildren.recordCount, "CHILDREN": childList }; 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 and #qChildren.recordCount# children deactivated successfully"; } writeOutput(serializeJSON(result));