// 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 ID, Name, ParentItemID, IsActive, IsCollapsible FROM Items WHERE ID = :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 ID, Name FROM Items WHERE ParentItemID = :itemId ", { itemId: url.itemId }); childList = []; for (row in qChildren) { arrayAppend(childList, { "ItemID": row.ID, "Name": row.Name }); } result = { "OK": true, "ACTION": url.action, "ITEM": { "ItemID": qItem.ID, "Name": qItem.Name, "ParentItemID": qItem.ParentItemID, "IsActive": qItem.IsActive, "IsCollapsible": qItem.IsCollapsible }, "HAS_CHILDREN": qChildren.recordCount > 0, "CHILD_COUNT": qChildren.recordCount, "CHILDREN": childList }; if (url.action == "deactivate") { // Deactivate children first queryExecute(" UPDATE Items SET IsActive = 0 WHERE ParentItemID = :itemId ", { itemId: url.itemId }); // Then deactivate the parent queryExecute(" UPDATE Items SET IsActive = 0 WHERE ItemID = :itemId ", { itemId: url.itemId }); result["DEACTIVATED"] = true; result["MESSAGE"] = "Item and #qChildren.recordCount# children deactivated successfully"; } writeOutput(serializeJSON(result));