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"] = "Изменения сохранены"; }