function HandleStoreItemChanges()
{
    header("Location: ItemInfo.php");
    require_once "StrUtils.php";
    define("CMD_COPY_ITEM", <<<SQL
\t\tINSERT INTO our_items (
\t\t\titem_id, art, url, name, price, descr, image_large,
\t\t\timage_small, size, material, drawing, minnum,
\t\t\tcolors, brandname, country, descr_other)
\t\tSELECT id AS item_id, art, url, name, price, descr, image_large,
\t\t\timage_small, size, material, drawing, minnum,
\t\t\tcolors, brandname, country, descr_other
\t\t\tFROM items WHERE items.id = ?
SQL
);
    define("CMD_SET_STAT", <<<SQL
\t\tUPDATE items SET status = ? WHERE id = ?
SQL
);
    global $db;
    if (strcmp($_REQUEST["infoType"], "item") == 0) {
        require_once "../parsers/ContentGrabber.php";
        $parser =& new ContentGrabber();
        // Получить поля для обновления
        $fields = array();
        $fieldsNames = array_intersect(array_keys($parser->getAllFields()), array_keys($_REQUEST));
        foreach ($fieldsNames as $field) {
            $fields[$field] = StrUtils::removeMagicQuotes($_REQUEST[$field]);
        }
        $fields["viewmode"] = isset($_REQUEST["viewmode"]) ? 1 : 0;
        if (sizeof($fields) > 0) {
            if ($_REQUEST["newItem"]) {
                $sql = getUpdateSQL("our_items", $fields, "id = " . $_REQUEST["itemId"]);
                $res =& $db->query($sql, array_values($fields));
                if (PEAR::isError($res)) {
                    $_SESSION["statusMsg"] = "Ошибка при сохранении данных";
                    exit;
                }
            } else {
                // Получить id измененых данных
                $idChanged =& $db->getOne(CMD_SEL_CHANGED_ID, array($_REQUEST["itemId"]));
                if (PEAR::isError($idChanged)) {
                    $_SESSION["statusMsg"] = "Ошибка при сохранении данных";
                    exit;
                }
                // Есть изменения
                if (isset($idChanged)) {
                    // Обновить изменения
                    $sql = getUpdateSQL("our_items", $fields, "id = " . $idChanged);
                } else {
                    // Добавить изменения
                    // Cкопировать данные из items
                    $res =& $db->query(CMD_COPY_ITEM, $_REQUEST["itemId"]);
                    if (PEAR::isError($res)) {
                        $_SESSION["statusMsg"] = "Ошибка при сохранении данных";
                        exit;
                    }
                    $idChanged =& $db->getOne(CMD_SEL_CHANGED_ID, array($_REQUEST["itemId"]));
                    if (PEAR::isError($idChanged) || !isset($idChanged)) {
                        $_SESSION["statusMsg"] = "Ошибка при сохранении данных";
                        exit;
                    }
                    $sql = getUpdateSQL("our_items", $fields, "id = " . $idChanged);
                }
                $res =& $db->query($sql, array_values($fields));
                if (PEAR::isError($res)) {
                    $_SESSION["statusMsg"] = "Ошибка при сохранении данных";
                    exit;
                }
                // Установить флаг изменения записи
                $res =& $db->query("UPDATE items SET existence = 'changed' WHERE id = ?", array($_REQUEST["itemId"]));
            }
        }
    } else {
        if (strcmp($_REQUEST["infoType"], "ourcategory") == 0) {
            $fields = array();
            if (isset($_REQUEST["descr"])) {
                $fields["descr"] = $_REQUEST["descr"];
            }
            if (isset($_REQUEST["dirname"])) {
                $fields["dirname"] = $_REQUEST["dirname"];
            }
            $fields["viewmode"] = isset($_REQUEST["viewmode"]) ? 1 : 0;
            $fields["colorsheme"] = isset($_REQUEST["colorsheme"]) ? 1 : 0;
            $sql = getUpdateSQL("our_categories", $fields, "id = " . $_REQUEST["itemId"]);
            $res =& $db->query($sql, array_values($fields));
            if (PEAR::isError($res)) {
                $_SESSION["statusMsg"] = "Ошибка при сохранении данных";
                exit;
            }
        }
    }
    $_SESSION["statusMsg"] = "Изменения сохранены";
}