Ejemplo n.º 1
0
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);
        }
    }
}
Ejemplo n.º 2
0
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);
    }
}