示例#1
0
function tzs_edit_product($id)
{
    $errors = array();
    $user_id = get_current_user_id();
    // Проверим защиту nonce
    if (isset($_POST['pr_type_id_nonce']) && wp_verify_nonce($_POST['pr_type_id_nonce'], 'pr_type_id')) {
        $pr_active = get_param_def('pr_active', '0');
        $pr_type_id = get_param_def('pr_type_id', '0');
        $pr_sale_or_purchase = get_param_def('pr_sale_or_purchase', '0');
        $pr_fixed_or_tender = get_param_def('pr_fixed_or_tender', '0');
        $pr_title = get_param('pr_title');
        $pr_description = get_param('pr_description');
        $pr_copies = get_param_def('pr_copies', '0');
        $pr_unit = get_param_def('pr_unit', '0');
        $pr_currency = get_param_def('pr_currency', '0');
        $pr_price = get_param_def('pr_price', '0');
        $pr_payment = get_param_def('pr_payment', '0');
        $pr_nds = get_param_def('pr_nds', '0');
        $pr_city_from = get_param('pr_city_from');
        $pr_comment = get_param('pr_comment');
        $pr_expiration = get_param('pr_expiration');
        if (is_valid_date($pr_expiration) === null) {
            array_push($errors, "Неверный формат даты");
        } else {
            $cur_date = new DateTime();
            $exp_date = new DateTime($pr_expiration);
            $interval = date_diff($cur_date, $exp_date);
            if ($interval->days < TZS_PR_PUBLICATION_MIN_DAYS) {
                array_push($errors, "Минимальный срок публикации " . TZS_PR_PUBLICATION_MIN_DAYS . " дней");
            }
        }
        $pr_expiration = is_valid_date($pr_expiration);
        if (!is_valid_city($pr_city_from)) {
            array_push($errors, "Неверный населенный пункт");
        }
        if (strlen($pr_title) < 2) {
            array_push($errors, "Введите наименование товара");
        }
        if (strlen($pr_description) < 2) {
            array_push($errors, "Введите описание товара");
        }
        if (!is_valid_num_zero($pr_type_id)) {
            array_push($errors, "Неверно задана категория товара");
        }
        if (!is_valid_num_zero($pr_sale_or_purchase)) {
            array_push($errors, "Неверно задан тип операции");
        }
        if (!is_valid_num_zero($pr_fixed_or_tender)) {
            array_push($errors, "Неверно задан тип ценового предложения");
        }
        if (!is_valid_num_zero($pr_active)) {
            array_push($errors, "Неверно задан статус товара");
        }
        if (!is_valid_num_zero($pr_copies)) {
            array_push($errors, "Неверно задано количество экземпляров товара");
        }
        if (!is_valid_num_zero($pr_unit)) {
            array_push($errors, "Неверно задана единица измерения количества экземпляров товара");
        }
        if (!is_valid_num_zero($pr_currency)) {
            array_push($errors, "Неверно задана валюта");
        }
        if (!is_valid_num_zero($pr_payment)) {
            array_push($errors, "Неверно задана форма оплаты");
        }
        if (!is_valid_num_zero($pr_nds)) {
            array_push($errors, "Неверно задан переключатель наличия НДС");
        }
        if (!is_valid_num_zero($pr_price)) {
            array_push($errors, "Неверно задана стоимость товара");
        }
    } else {
        array_push($errors, "Проверка формы не пройдена. Свяжитесь, пожалуйста, с администрацией сайта.");
    }
    $from_info = null;
    if (count($errors) == 0) {
        $from_info = tzs_yahoo_convert($pr_city_from);
        if (isset($from_info["error"])) {
            array_push($errors, "Не удалось распознать населенный пункт: " . $from_info["error"]);
        }
    }
    if (count($errors) > 0) {
        tzs_print_product_form($errors, $id > 0);
    } else {
        global $wpdb;
        // Если выбран тип заявки "Покупка" - то только "Тендерное предложение"
        // Проверка и присвоение сделаны для перестраховки, на случай если не сработает JS
        if ($pr_sale_or_purchase == 2) {
            $pr_fixed_or_tender = 2;
        }
        $pr_expiration = date('Y-m-d', mktime(0, 0, 0, $pr_expiration['month'], $pr_expiration['day'], $pr_expiration['year']));
        if ($id == 0) {
            $sql = $wpdb->prepare("INSERT INTO " . TZS_PRODUCTS_TABLE . " (type_id, user_id, sale_or_purchase, \tfixed_or_tender, title, description, copies, unit, currency, price, payment, nds, city_from, from_cid, from_rid, from_sid, created, comment, last_edited, active, expiration)" . " VALUES (%d, %d, %d, %d, %s, %s, %d, %d, %d, %f, %d, %d, %s, %d, %d, %d, now(), %s, NULL, %d, %s);", intval($pr_type_id), $user_id, intval($pr_sale_or_purchase), intval($pr_fixed_or_tender), stripslashes_deep($pr_title), stripslashes_deep($pr_description), intval($pr_copies), intval($pr_unit), intval($pr_currency), floatval($pr_price), intval($pr_payment), intval($pr_nds), stripslashes_deep($pr_city_from), $from_info["country_id"], $from_info["region_id"], $from_info["city_id"], stripslashes_deep($pr_comment), intval($pr_active), $pr_expiration);
            if (false === $wpdb->query($sql)) {
                array_push($errors, "Не удалось опубликовать Ваш товар/услугу. Свяжитесь, пожалуйста, с администрацией сайта");
                array_push($errors, $wpdb->last_error);
                tzs_print_product_form($errors, false);
            } else {
                echo "<div>";
                echo "<h2>Ваш товар/услуга опубликован !</h2>";
                echo "<br/>";
                //echo '<a href="/view-product/?id='.tzs_find_latest_product_rec().'&spis=new">Просмотреть товар/услугу</a>';
                echo "<h3>Сейчас будет открыта страница для добавления изображений !</h3>";
                echo "<div>";
                $new_url = get_site_url() . '/edit-images-pr/?id=' . tzs_find_latest_product_rec() . '&form_type=product';
                echo '<meta http-equiv="refresh" content="0; url=' . $new_url . '">';
            }
        } else {
            $sql = $wpdb->prepare("UPDATE " . TZS_PRODUCTS_TABLE . " SET " . " last_edited=now(), type_id=%d, sale_or_purchase=%d, fixed_or_tender=%d, title=%s, description=%s, copies=%d, unit=%d, currency=%d, price=%f, payment=%d, nds=%d, " . " city_from=%s, from_cid=%d, from_rid=%d, from_sid=%d, comment=%s, active=%d, expiration=%s" . " WHERE id=%d AND user_id=%d;", intval($pr_type_id), intval($pr_sale_or_purchase), intval($pr_fixed_or_tender), stripslashes_deep($pr_title), stripslashes_deep($pr_description), intval($pr_copies), intval($pr_unit), intval($pr_currency), floatval($pr_price), intval($pr_payment), intval($pr_nds), stripslashes_deep($pr_city_from), $from_info["country_id"], $from_info["region_id"], $from_info["city_id"], stripslashes_deep($pr_comment), intval($pr_active), $pr_expiration, $id, $user_id);
            if (false === $wpdb->query($sql)) {
                array_push($errors, "Не удалось изменить Ваш товар/услугу. Свяжитесь, пожалуйста, с администрацией сайта");
                array_push($errors, $wpdb->last_error);
                tzs_print_product_form($errors, true);
            } else {
                echo "<div>";
                echo "<h2>Ваш товар/услуга изменен !</h2>";
                echo "<br/>";
                //echo '<a href="/view-product/?id='.$id.'">Просмотреть товар/услугу</a>';
                echo "<h3>Сейчас будет открыта страница для добавления изображений !</h3>";
                echo "<div>";
                $new_url = get_site_url() . '/edit-images-pr/?id=' . $id . '&form_type=product';
                echo '<meta http-equiv="refresh" content="0; url=' . $new_url . '">';
            }
        }
    }
}
示例#2
0
function tzs_edit_product($id)
{
    $errors = array();
    $file_error_message = array(0 => 'Ошибок не возникло, файл был успешно загружен на сервер', 1 => 'Размер принятого файла превысил максимально допустимый размер, который задан директивой upload_max_filesize конфигурационного файла php.ini', 2 => 'Размер загружаемого файла превысил значение MAX_FILE_SIZE, указанное в HTML-форме', 3 => 'Загружаемый файл был получен только частично', 4 => 'Файл не был загружен', 5 => '', 6 => 'Отсутствует временная папка', 7 => 'Не удалось записать файл на диск', 8 => 'PHP-расширение остановило загрузку файла');
    $user_id = get_current_user_id();
    // Проверим защиту nonce
    if (isset($_POST['pr_type_id_nonce']) && wp_verify_nonce($_POST['pr_type_id_nonce'], 'pr_type_id')) {
        $pr_active = get_param_def('pr_active', '0');
        $pr_type_id = get_param_def('pr_type_id', '0');
        $pr_sale_or_purchase = get_param_def('pr_sale_or_purchase', '0');
        $pr_fixed_or_tender = get_param_def('pr_fixed_or_tender', '0');
        $pr_title = get_param('pr_title');
        $pr_description = get_param('pr_description');
        $pr_copies = get_param_def('pr_copies', '0');
        $pr_unit = get_param_def('pr_unit', '0');
        $pr_currency = get_param_def('pr_currency', '0');
        $pr_price = get_param_def('pr_price', '0');
        $pr_city_from = get_param('pr_city_from');
        $pr_comment = get_param('pr_comment');
        $pr_expiration = get_param('pr_expiration');
        $cash = isset($_POST['cash']) ? 1 : 0;
        $nocash = isset($_POST['nocash']) ? 1 : 0;
        $nds = isset($_POST['nds']) ? 1 : 0;
        $nonds = isset($_POST['nonds']) ? 1 : 0;
        $pr_payment = $cash && $nocash ? 11 : ($cash && !$nocash ? 10 : (!$cash && $nocash ? 1 : 0));
        $pr_nds = nds && $nonds ? 11 : (nds && !$nondsh ? 10 : (!nds && $nonds ? 1 : 0));
        //$image_id_lists = get_param('image_id_lists');
        //$main_image = get_param_def('main_image', '0');
        $image_id_lists = array();
        $main_image = 0;
        if (is_valid_date($pr_expiration) === null) {
            array_push($errors, "Неверный формат даты.");
        } else {
            $cur_date = new DateTime();
            $exp_date = new DateTime($pr_expiration);
            $interval = date_diff($cur_date, $exp_date);
            if ($interval->days < TZS_PR_PUBLICATION_MIN_DAYS) {
                array_push($errors, "Минимальный срок публикации " . TZS_PR_PUBLICATION_MIN_DAYS . " дней.");
            }
        }
        $pr_expiration = is_valid_date($pr_expiration);
        if (!is_valid_city($pr_city_from)) {
            array_push($errors, "Не указан пункт местонахождения товара.");
        }
        if (strlen($pr_title) < 2) {
            array_push($errors, "Не указано наименование товара.");
        }
        if (strlen($pr_description) < 2) {
            array_push($errors, "Не указано описание товара.");
        }
        if (!is_valid_num_zero($pr_type_id)) {
            array_push($errors, "Не указана категория товара.");
        }
        if (!is_valid_num_zero($pr_sale_or_purchase)) {
            array_push($errors, "Не указан тип операции.");
        }
        if (!is_valid_num_zero($pr_fixed_or_tender)) {
            array_push($errors, "Не указан тип ценового предложения.");
        }
        if (!is_valid_num_zero($pr_active)) {
            array_push($errors, "Не указан статус товара.");
        }
        if (!is_valid_num_zero($pr_copies)) {
            array_push($errors, "Не указано количество экземпляров товара.");
        }
        if (!is_valid_num_zero($pr_unit)) {
            array_push($errors, "Не указана единица измерения количества экземпляров товара.");
        }
        if (!is_valid_num_zero($pr_currency)) {
            array_push($errors, "Не указана валюта.");
        }
        if (!is_valid_num_zero($pr_price)) {
            array_push($errors, "Не указана стоимость товара.");
        }
        if (!$cash && !$nocash && !$nds && !$nonds) {
            array_push($errors, "Необходимо выбрать хотя бы один способ в блоке \"Форма расчета\".");
        }
    } else {
        array_push($errors, "Проверка формы не пройдена. Свяжитесь, пожалуйста, с администрацией сайта.");
    }
    $from_info = null;
    if (count($errors) == 0) {
        $from_info = tzs_yahoo_convert($pr_city_from);
        if (isset($from_info["error"])) {
            array_push($errors, "Не удалось распознать населенный пункт: " . $from_info["error"]);
        }
    }
    if (count($errors) > 0) {
        tzs_print_product_form($errors, $id > 0);
    } else {
        global $wpdb;
        // Если выбран тип заявки "Покупка" - то только "Тендерное предложение"
        // Проверка и присвоение сделаны для перестраховки, на случай если не сработает JS
        if ($pr_sale_or_purchase == 2) {
            $pr_fixed_or_tender = 2;
        }
        $pr_expiration = date('Y-m-d', mktime(0, 0, 0, $pr_expiration['month'], $pr_expiration['day'], $pr_expiration['year']));
        // Обработка изображений
        for ($i = 1; $i <= 3; $i++) {
            $add_image_index = 'image' . $i . '_load';
            $del_image_index = 'image_id_' . $i;
            // Удаление изображения
            if (count($errors) === 0 && isset($_POST[$del_image_index]) && strlen($_FILES[$add_image_index]['name']) > 0) {
                if (false === wp_delete_attachment($_POST[$del_image_index], true)) {
                    array_push($errors, "Не удалось удалить файл с изображением: " . $_POST[$del_image_index]->get_error_message());
                }
            } elseif (count($errors) === 0 && isset($_POST[$del_image_index]) && strlen($_FILES[$add_image_index]['name']) == 0) {
                $image_id_lists[] = $_POST[$del_image_index];
            }
            // Добавление изображения
            if (count($errors) === 0 && strlen($_FILES[$add_image_index]['name']) > 0) {
                if ($_FILES[$add_image_index]['error']) {
                    array_push($errors, "Не удалось загрузить файл с изображением: " . $file_error_message[$_FILES[$add_image_index]['error']]);
                } else {
                    // Позволим WordPress перехватить загрузку.
                    // не забываем указать атрибут name поля input
                    $attachment_id = media_handle_upload($add_image_index, 0);
                    if (is_wp_error($attachment_id)) {
                        array_push($errors, "Не удалось загрузить файл с изображением: " . $attachment_id->get_error_message());
                    } else {
                        $image_id_lists[] = $attachment_id;
                    }
                }
            }
        }
        $main_image = isset($image_id_lists[0]) ? $image_id_lists[0] : 0;
        // Обработка изображений - END
        if ($id == 0) {
            $sql = $wpdb->prepare("INSERT INTO " . TZS_PRODUCTS_TABLE . " (type_id, user_id, sale_or_purchase, \tfixed_or_tender, title, description, copies, unit, currency, price, payment, nds, city_from, from_cid, from_rid, from_sid, created, comment, last_edited, active, expiration, image_id_lists, main_image_id)" . " VALUES (%d, %d, %d, %d, %s, %s, %d, %d, %d, %f, %d, %d, %s, %d, %d, %d, now(), %s, NULL, %d, %s, %s, %d);", intval($pr_type_id), $user_id, intval($pr_sale_or_purchase), intval($pr_fixed_or_tender), stripslashes_deep($pr_title), stripslashes_deep($pr_description), intval($pr_copies), intval($pr_unit), intval($pr_currency), floatval($pr_price), intval($pr_payment), intval($pr_nds), stripslashes_deep($pr_city_from), $from_info["country_id"], $from_info["region_id"], $from_info["city_id"], stripslashes_deep($pr_comment), intval($pr_active), $pr_expiration, implode(';', $image_id_lists), intval($main_image));
            if (false === $wpdb->query($sql)) {
                array_push($errors, "Не удалось опубликовать Ваш товар/услугу. Свяжитесь, пожалуйста, с администрацией сайта");
                array_push($errors, $wpdb->last_error);
                tzs_print_product_form($errors, false);
            } else {
                echo "<div>";
                echo "<h2>Ваш товар/услуга опубликован !</h2>";
                echo "<br/>";
                echo '<a href="/view-product/?id=' . tzs_find_latest_product_rec() . '&spis=new">Просмотреть товар/услугу</a>';
                //echo "<h3>Сейчас будет открыта страница для добавления изображений !</h3>";
                //echo "<div>";
                //$new_url = get_site_url().'/edit-images-pr/?id='.tzs_find_latest_product_rec().'&form_type=product';
                $new_url = get_site_url() . '/my-products';
                echo '<meta http-equiv="refresh" content="0; url=' . $new_url . '">';
            }
        } else {
            $sql = $wpdb->prepare("UPDATE " . TZS_PRODUCTS_TABLE . " SET " . " last_edited=now(), type_id=%d, sale_or_purchase=%d, fixed_or_tender=%d, title=%s, description=%s, copies=%d, unit=%d, currency=%d, price=%f, payment=%d, nds=%d, " . " city_from=%s, from_cid=%d, from_rid=%d, from_sid=%d, comment=%s, active=%d, expiration=%s, image_id_lists=%s, main_image_id=%d" . " WHERE id=%d AND user_id=%d;", intval($pr_type_id), intval($pr_sale_or_purchase), intval($pr_fixed_or_tender), stripslashes_deep($pr_title), stripslashes_deep($pr_description), intval($pr_copies), intval($pr_unit), intval($pr_currency), floatval($pr_price), intval($pr_payment), intval($pr_nds), stripslashes_deep($pr_city_from), $from_info["country_id"], $from_info["region_id"], $from_info["city_id"], stripslashes_deep($pr_comment), intval($pr_active), $pr_expiration, implode(';', $image_id_lists), intval($main_image), $id, $user_id);
            if (false === $wpdb->query($sql)) {
                array_push($errors, "Не удалось изменить Ваш товар/услугу. Свяжитесь, пожалуйста, с администрацией сайта");
                array_push($errors, $wpdb->last_error);
                tzs_print_product_form($errors, true);
            } else {
                echo "<div>";
                echo "<h2>Ваш товар/услуга изменен !</h2>";
                echo "<br/>";
                echo '<a href="/view-product/?id=' . $id . '">Просмотреть товар/услугу</a>';
                //echo "<h3>Сейчас будет открыта страница для добавления изображений !</h3>";
                //echo "<div>";
                //$new_url = get_site_url().'/edit-images-pr/?id='.$id.'&form_type=product';
                $new_url = get_site_url() . '/my-products';
                echo '<meta http-equiv="refresh" content="0; url=' . $new_url . '">';
            }
        }
    }
}