Как удалить параметр у плагина доставки?

Глазов Аркадий

Обнаружил не логичное с моей точки зрения, но очевидно сейчас мне объяснят в чём я не прав, поведение метода savesettings плагина доставки (применительно к ShopScript). Смысл проблемы в том, что даже если, в процессе эволюции кода какой-то параметр стал не актуален, то он из БД не удаляется. Другими словами, когда методу savesetting передаётся массив того, что надо сохранить, то он это сохранит, но то, что исчезло - не удалит. В результате, если набор параметрво динамически меняется при каждом сохранении, то использовать принцип проверки на наличие и отсутствие параметра не возможно. В предельном случае его можно было бы обнулить, но тогда надо ещё и помнить что за параметры удалялись.


Или я что-не так опять делаю? Как сделать так, чтобы исчезали те параметры, которые не передали методу savesettings?

24 мая 2016
  • Глазов Аркадий 27 июля 2016 13:14

    Сам себе отвечу. В методе savesettings перед сохранением добавил

    		$cleaner = new waModel;
    		$cleaner->exec('delete from shop_plugin_settings where id=:id', array('id' => $this->key));
    		unset ($cleaner);
    
  • Михаил Ушенин 27 июля 2016 15:55

    Такой способ некорректен, т. к. плагины доставки являются системными, а значит, могут использоваться и другими приложениями, а не только Shop-Script. Пока таких других приложений нет, ваш способ будет работать, а после их появления снова будут возникать проблемы.

  • Михаил Ушенин 27 июля 2016 14:49

    А для чего нужна такая проверка и очистка? Если так не делать, возникают проблемы? Или вы заботитесь о размере базы данных пользователей?

  • Глазов Аркадий 27 июля 2016 15:49

    Да. Возникают проблемы.

  • Глазов Аркадий 27 июля 2016 16:03
    Такой способ некорректен, т. к. плагины доставки являются системными, а значит, могут использоваться и другими приложениями, а не только Shop-Script. Пока таких других приложений нет, ваш способ будет работать, а после их появления снова будут возникать проблемы.

    Вообще-то плагин хоть и системный, но свои настройки хранит только в параметрах приложения. Причём каждый экземпляр плагина хранит свои. Плагин то подключается именно в приложении. Если не верите - посмотрите в каких таблицах хранятся настройки.

  • Михаил Ушенин 27 июля 2016 16:05

    Вот именно. Вы показали, как можно удалить настройки для приложения shop. А когда появится приложение store, также использующее плагины доставки и хранящее их настройки в своей таблице store_plugin_settings, вы добавите ещё одну похожую строку в свой плагин?

  • Михаил Ушенин 27 июля 2016 16:37

    Причём вы можете никогда не узнать о существовании такого приложения, пока/если оно не будет опубликовано в магазине Webasyst. А значит, ваш плагин в этом приложении может работать некорректно.

  • Глазов Аркадий 27 июля 2016 18:05

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


    Вы бы вместо флуда на вопрос почему виснет метод фетч при генерации страницы сеттингс ответили. Логист даёт. 150 пунктов, а таблицу настроек ваш движок может не зависая построить только для 138. А дальше виснет полностью без сообщений и таймаутов

  • Михаил Ушенин 27 июля 2016 18:08

    Не надо так.

Добавление новых комментариев к этой теме отключено.