Владислав Горлов Webasyst


Владислав Горлов

  • В текущей реализации при частичном возврате статус заказа не изменяется. С точки зрения логистики товаров не всё так однозначно, особенно, если уже задействована доставка.

    Статистика продаж должна пересчитаться на основе обновленных данных заказа.

    в ответ на Двухстадийная оплата и частичный возврат

  • Владислав Горлов Владислав Горлов Webasyst 5 сентября 2019 19:07 #

    Речь идёт о предварительном заполнении адреса покупателя в корзине до ввода им данных?

    в ответ на Невозможно установить индекс для шага детальная информацимя в новом оформлении заказа

  • Владислав Горлов Владислав Горлов Webasyst 7 августа 2019 13:04 #

    waNet пока очень плохо приспособлен к повторному использованию объекта. Нет методов изменения заголовков/параметров и остаются данные от запроса при повторных запросах (в том числе при параллельны запросах ). Это постепенно исправим.

    в ответ на WaNet передает неверные заголовки

  • Этот параметр задумывался как флаг, отключающий получение "потенциально тяжелых данных" - хеши коллекций/величина скидки, но пока нет уверенности, что будет использоваться.

    в ответ на Получение данных о промо-акциях Shop-Script

  • Владислав Горлов Владислав Горлов Webasyst 21 февраля 2019 15:13 #

    Прямо сейчас это не заработает - придётся подождать поддержку указания sku_id либо в коллекции, либо на уровне дополнительного кода в плагине. Кроме того, есть подозрение, что такая точность выбора подарков и товаров, к которым они идут, потребует режима экспорта каждого артикула отдельной позицией.

    в ответ на Получение данных о промо-акциях Shop-Script

  • Владислав Горлов Владислав Горлов Webasyst 12 февраля 2019 13:56 #

    Да, опечатка и некорректное суммирование данных будут исправлены, так же ряд других моментов будет перепроверен.

    Для полноценного тестирования и доработок не хватает сценариев использования кода — он изначально создавался как простая замена curl/fopen, использование которых не всегда было дополнено необходимыми проверками доступности функционала. Но, постепенно, класс обрастал добавочным кодом.

    в ответ на waNet

  • Владислав Горлов Владислав Горлов Webasyst 12 февраля 2019 13:44 #

    Хамите, парниша!

    Пока не научитесь корректно доносить свои мысли и замечания, отделяя их от личного мнения и домыслов вас сложно будет воспринимать как специалиста.

    в ответ на waNet

  • Владислав Горлов Владислав Горлов Webasyst 13 декабря 2018 15:53 #

    В json кодируются только массивы. И те, у кого PHP 5.2 всё равно остаются с ошибкой.

    в ответ на Баг в waHtmlControl::getSelectControl()

  • Владислав Горлов Владислав Горлов Webasyst 13 декабря 2018 14:24 #

    Вводить проверку is_int и делать дополнительную ветку сравнения значений и приведения типов - костыль, имхо. Пусть и спасет тех, кто не думает о типизации. Плюс, потенциально сломает в коде, например в том же switch, что может быть в коде.

    в ответ на Баг в waHtmlControl::getSelectControl()

  • Владислав Горлов Владислав Горлов Webasyst 13 декабря 2018 12:59 #

    Использование числовых ключей является некорректным, особенно в смешанном варианте. В БД значения хранятся в виде строк и при сравнении с числовым значением выполняется преобразование, делающее результат сравнения отличным от ожидаемого, в случае, если строка не приводится к числу верно.

    Поэтому либо использовать строго строковые ключи

    array(
        '0' => '',
        'one' => 'first',
        'two' => 'second',
    
    );

    Либо только числовые ключи (в этом случае приведение типов и сравнение будет работать корректно)

    array(
        0 => '',
        1 => 'first',
        2 => 'second',
    );

    В остальных случаях результат может получиться обескураживающим, особенно, если не перепроверить корректность выбора таких настроек.

    в ответ на Баг в waHtmlControl::getSelectControl()

  • Настройка, которая разворачивается в массив в БД сохраняется в виде json_encoded строки (например плагин почты России или курьера).

    Приложение, в котором используются плагин самостоятельно заботится о настройках в виде массива.

    в ответ на Сохранения своих настроек плагина доставки

  • Еще стоит ознакомиться с содержимым метода 

    waPayment::isRefundAvailable

    не каждый платеж может быть возвращен, так же возврат поддерживается только в приложениях crm и shop 8 версии

    в ответ на Возврат платежа

  • Результирующее name собирается из названия плагина, названия варианта доставки (в custom-data оно дублируется на самом деле) и названия service.

    Про экранирование строк - после долгого периода неэкранирования наступил период "экранируем все", по этим моментам мы еще пройдемся.

    в ответ на Чекаут магазина: изменения плагинов доставки

  • Старый инсталлер умеет понимать системные требования тем дизайна в момент установки/обновления. Он может не совсем корректно показать причину, по которой нельзя установить (например, просто серая кнопка "установить" без поясняющих надписей).

    Разве что в старом фреймворке в редакторе тем дизайна не проверяются системные требования (это, если человек самостоятельно загрузил архив с темой).

    И важное уточнение - системные требования тем дизайна учитываются от родительской темы дизайна (в инсталлере это так), для редактора тем дизайна требования можно продублировать и в дочерних темах.

    в ответ на Настройки тем дизайна: обновлённый интерфейс и новые возможности

  • Еще раз смотрим на формат описания деталей: 

    $new_rate['custom_data']['pickup']['description'] 
    $old_rate['description']

    А вообще, в методе waShipping::getRates мы можем исправить нехороший эффект вызванный тем, что разработчики тем использовали comments, а разработчики плагинов description практически без болезненных ощущений для перфекционистов.

    в ответ на Чекаут магазина: изменения плагинов доставки

  • Это для нового режима оформления заказа, онотличается в ряде моментов

    в ответ на Чекаут магазина: изменения плагинов доставки

  • Длительные подготовительные операции плагинам доставки по расписанию будут доступны немного позднее.

    в ответ на Чекаут магазина: изменения плагинов доставки

  • А в новом уже description. Возможно, вариативность названий будет исправлено на уровне кода.

    в ответ на Чекаут магазина: изменения плагинов доставки

  • Владислав Горлов Владислав Горлов Webasyst 31 октября 2018 19:44 #

    Поддержкой новых возможностей обзавелись плагины доставки Курьер, Яндекс.Доставка и Почта России.

    Ознакомиться с изменениями можно в github-е.

    в ответ на Чекаут магазина: изменения плагинов доставки

  • Правильное регулярное выражение /ж/ui — добавлены модификаторы u (юникод) и i (регистронезависимость)

    в ответ на Регулярное выражение

  • Ок, тогда ваш выбор — использование API (общие сведения) магазина (список методов). Любой другой подход приведет к тому, что вы получите некорректные данные (мягко говоря) или сломаете существующие данные. Прямой доступ к БД без четкого понимания её структуры и знания всех тонкостей не приведет ни к чему хорошему.

    в ответ на Sql запрос

  • Владислав Горлов Владислав Горлов Webasyst 12 февраля 2018 16:55 #

    Вы не используете возможности IDE (судя по phpDoc). Не я занимался проверкой плагина, могу лишь предполагать, что могло иметь место интерференция от двух проверяемых плагинов, а тонкий анализ явно за пределами моих личных 5 минут.

    в ответ на Скрость проверки плагинов специалистами WebAsist

  • Владислав Горлов Владислав Горлов Webasyst 12 февраля 2018 15:58 #

    shopEnsoskuimagesPlugin::productDeleteHandlerSQL запросы в цикле, чтобы после во внутреннем цикле по одной удалять записи из БД и заодно по одному удалять файлы... В стандартном интерфейсе можно удалить пачку категорий со всеми товарами из этих категорий (коих может быть тысячи, не говоря уже об артикулах). "Ничего не смущает?" (с). Следует оптимизировать получение данных, а так же структуру директорий, так чтобы, удаление одного товара требовала удаления записей из БД одним запросом, а так же удаление одной директории. А не извращаться с циклами внутри циклов. В догонку: скидывать все 100500 файлов в одну директорию — плохо, используйте разряжение директорий (причины, надеюсь, сумеете найти самостоятельно).

    shopEnsoskuimagesPluginBackendActions::uploadAction — оставлена возможность загрузки php файлов в директорию, открытую всем (нету проверки расширения, опираться на type некорректно)

    Первое - существенный момент в производительности (на мой личный взгляд - фатальный, требующий переделки). Второе - показатель недостаточной безопасности кода (попытки фильтрации по типу есть, но её недостаточно).

    Так что "Ничего не работает!!! срочно исправляйте!!!111 Галактеко Опасносте!"

    в ответ на Скрость проверки плагинов специалистами WebAsist

  • Владислав Горлов Владислав Горлов Webasyst 12 февраля 2018 15:43 #

    Виктор, размер каталога не должен влиять ощутимо при правильном проектировании кода плагина. Пример с запросом всех строк был приведен как пример, причем достаточно типовой (что не очевидно), указать где именно у вас ошибка проблематично, поскольку вы уже несколько раз загружали обновленный код и я лично его не видел.

    И если грубо говорить, то модерация — возможность услышать разработчику об ошибках не от клиента (А, всё пропало! У меня ничего не работает, срочно исправляйте!!!111), а от модераторов (без обязанности последних по исправлению и детальному анализу ошибки) с некоторыми минимальными техническими комментариями. Какие-либо рекомендации по исправлению с примерами кода и/или отсылками к аналогичным по функционалу решениям — это лишь добрая воля модераторов.

    Но если вы настаиваете, могу потратить 5 минут и назвать плохие куски кода.

    в ответ на Скрость проверки плагинов специалистами WebAsist

  • Владислав Горлов Владислав Горлов Webasyst 12 февраля 2018 11:53 #

    Про память: очень желательно, чтобы код мог работать при ограниченных ресурсах (32-64Мб памяти). Но если не хватает 512Мб памяти, то это однозначный признак того, что "кажется, что-то пошло не так". А именно ради одной строки данных вы из БД запросили все записи. У вас "всё работает" но во вполне реальных случаях, где категорий/товаров/типов/характеристик/значений/заказов/покупателей/позиций в заказе счет идет на сотни тысяч будут наблюдаться ненужные замедления работы (выделение памяти и её наполнение из БД/файлов/кешей занимает время).

    Если нет понимания этого момента, то просто необходимо в этом разобраться.

    в ответ на Скрость проверки плагинов специалистами WebAsist

  • Владислав Горлов Владислав Горлов Webasyst 1 февраля 2018 13:30 #

    Использовать символы за пределами цифр и латинских символов некорректно, если учитывать особенности файловых систем хостингов, компьютеров разработчиков и эпизодической необходимости переноса данных (если быть точным, то кодировки файловых систем различаются и это в лучшем случае требует настройки и доставляет неудобства).

    Если задача использования кириллицы обусловлена SEO, то уж лучше перейти к транслитерации.

    И ошибка генерации возникает за счет того, что запрашиваемое имя файла проходит кодирование в urlencoded строки, а файла с таким именем уже нет в файловой системе, помочь может костыль с явным urldecode и, возможно, изменениями кодировки строки в файле thumb.php (и необходимыми проверками, чтобы запрашиваемый файл не оказался за пределами разрешенных директорий)

    в ответ на SS7. Генерация эскизов.

  • Вы готовы к последствиям не сработавшей блокировки и запуску десятков параллельных тяжеловесных процессов?

    в ответ на waLongAction - 4 секунды на ветер?

  • Метод callbackInit должен на основе параметров запроса определить - для какого приложения поступила оплата и какой id экземпляра настроек (merchant_id). Как вариант - настраивать URL уведомлений, чтобы они содержали эти параметры, либо были в "пользовательской" секции данных параметров запроса. Задавать фиксированный id некорректно.

    Часть данных для $transaction_data заполняет родительский метод formalizeData, если его не забыть вызвать, остальное заполняет код плагина на основе формата запроса от платежного шлюза, остальные поля примерно об этом:

    'native_id' — это id в транзакции в платежном шлюзе
    'amount' — сумма поступившего платежа
    'currency_id' — ISO3 код валюты (например RUB)
    'view_data' — строковая информация, показываемая в качестве комментария в истории обработки заказа (может содержать HTML, поэтому внешние данные необходимо экранировать)
    'id' — id записи о транзакции в БД (saveTransaction

    в ответ на Плагин оплаты. Где и как указать, что заказ оплачен?

  • Вот конкретная строчка кода одного из плагинов оплаты, оформленного как пример с комментариями по коду.

    в ответ на Плагин оплаты. Где и как указать, что заказ оплачен?

  • В текущем виде код не будет полностью корректно работать из крона, потребуется надстройка/расширение класса (это нетривиальная задача, требующая тонкого понимания механики кода). Но использование в cli задачах, запускаемых по крону будет вполне полезно (в зависимости от хостера процесс может быть прерван на середине по таймеру, по нагрузке или по любым иным причинам, включая перезагрузку сервиса/сервера).

    в ответ на waLongAction через cron