function HandleRemoveNode() { define("CMD_SEL_MOVED_SITECATEGORIES_IDS", <<<SQL \t\tSELECT id FROM site_categories WHERE our_category_id = ? SQL ); define("CMD_SEL_MOVED_ITEMS_IDS", <<<SQL \t\tSELECT id FROM items WHERE our_category_id = ? SQL ); define("CMD_DEL_OURSITE_CATEGORY", <<<SQL \t\tDELETE FROM our_categories WHERE id = ? SQL ); define("CMD_SEL_SUBCATEGORIES_IDS", <<<SQL \t\tSELECT id FROM our_categories WHERE parent_id = ? ORDER BY id SQL ); define("CMD_DEL_CATEGORY_FROMNEW", <<<SQL \t\tUPDATE site_categories SET our_category_id = 0 WHERE id = ? SQL ); define("CMD_DEL_ITEM_FROMNEW", <<<SQL \t\tUPDATE items SET our_category_id = 0 WHERE id = ? SQL ); global $db; $srcNodes = explode(",", $_REQUEST["destNodes"]); foreach ($srcNodes as $nodeStr) { list($nodeId, $nodeType) = explode(":", $nodeStr); // Удаление скопированного узла или элемента if (strlen($nodeType) > 0) { if ($nodeType == NODE_SITE_CATEGORY) { $res =& $db->query(CMD_DEL_CATEGORY_FROMNEW, array($nodeId)); if (PEAR::isError($res)) { printError($res); exit; } } else { if ($nodeType == NODE_SITE_ITEM) { $res =& $db->query(CMD_DEL_ITEM_FROMNEW, array($nodeId)); if (PEAR::isError($res)) { printError($res); exit; } } else { if ($nodeType == NODE_SITE_OURITEM) { $res =& $db->query("DELETE FROM our_items WHERE id = ?", array($nodeId)); if (PEAR::isError($res)) { printError($res); exit; } } } } } else { removeNodeWithChilds($nodeId); } } }
function removeNodeWithChilds($parentId) { global $db; // ”далить скопированые категории из site_categories $data =& $db->getAll(CMD_SEL_MOVED_SITECATEGORIES_IDS, array($parentId), DB_FETCHMODE_OBJECT); if (PEAR::isError($data)) { printError($data); exit; } foreach ($data as $row) { $res =& $db->query(CMD_DEL_CATEGORY_FROMNEW, array($row->id)); if (PEAR::isError($res)) { printError($res); exit; } } // ”далить скопированые элементы из items $data =& $db->getAll(CMD_SEL_MOVED_ITEMS_IDS, array($parentId), DB_FETCHMODE_OBJECT); if (PEAR::isError($data)) { printError($data); exit; } foreach ($data as $row) { $res =& $db->query(CMD_DEL_ITEM_FROMNEW, array($row->id)); if (PEAR::isError($res)) { printError($res); exit; } } // ”далить созданые элементы из our_items $data =& $db->query("DELETE FROM our_items WHERE our_category_id = ?", array($parentId), DB_FETCHMODE_OBJECT); if (PEAR::isError($data)) { printError($data); exit; } // ”даление заданой категории и ее подкатегорий $res =& $db->query(CMD_DEL_OURSITE_CATEGORY, array($parentId)); if (PEAR::isError($res)) { printError($res); exit; } $data =& $db->getAll(CMD_SEL_SUBCATEGORIES_IDS, array($parentId), DB_FETCHMODE_OBJECT); if (PEAR::isError($data)) { printError($data); exit; } foreach ($data as $row) { removeNodeWithChilds($row->id); } }