Проблема с "wa($app_id)->getPlugin($plugin_id)->getVersion();" Не принято

1

Данный код 

wa($app_id)->getPlugin($plugin_id)->getVersion();

Должен возвращать только текущую версию плагина $plugin_id. Однако, вдобавок к текущей версии он также возвращает лишний набор цифр. Пример:

//должен возвращать 2.0.0
//по факту возвращает: 2.0.0.1616760239


Из-за этого в некоторых плагинах информация некорректно отображается для пользователей. Примеры в разных плагинах:

https://yadi.sk/i/1hR3agjhtgc4...

https://yadi.sk/i/V-BLWFZtsw2w...


Просьба поправить.

8 комментариев

    • +1
      chikurov-seo chikurov-seo 26 марта 2021 17:23 #

      файл plugin.php :

      <?php
      return array (
          'name' => 'SEO шаблоны',
          'img' => 'img/aaaseotemlates.png',
          'version' => '1.0.1',
          'vendor' => '1200329',
          'custom_settings' => false,
          'handlers' => array(
              'frontend_footer' => 'frontendFooter',
              'backend_menu' => 'backendMenu',
          ),
      );
      

      // возвращает 1.0.1.1616768094

      Если в этом файле есть значение с ключом 'build', то к номеру версии добавляется точка со значением этого параметра.

      - я не вижу в файле plugin.php никакого ключа 'build' и для меня результат работы функции неочевиден. Конечно, при желании, я смогу самостоятельно привести результат в нужный мне вид, но мне кажется что по-хорошему этот момент нужно поправить на уровне движка. Изменения - на усмотрение разработчиков WA.

    • +2
      Алексей Алексей Webasyst 27 марта 2021 09:00 #

      Ошибки нет.
      getVersion отдаёт plugin.php[version] + build.php
      Если у вас включен режим отладки, то еще к этому добавляется текущая метка времени.
      Пользователям не нужен режим отладки в 99% времени.

      • +1
        chikurov-seo chikurov-seo 6 апреля 2021 13:42 #

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


        Мне вот потребовалось получить точную версию плагина без всяких меток. Решил проблему костылем:

        $plugin_version = wa($app_id)->getPlugin($plugin_id)->getVersion();
        $arr = explode('.', $plugin_version);
        foreach ($arr as $i) {
            if (strlen($i) > 7) {
                $replaced_text = '.' . $i;
                $plugin_version = str_replace($replaced_text, '', $plugin_version);
            }
        }

        • +2
          Syrnik.com Syrnik.com 7 апреля 2021 01:29 #

          ну например это надо чтобы css подсоединённый таким образом `/site/css/style.css{$wa->shop->version}` в режиме отладки не кешировался, а в продакшене очень даже кешировался.

          А зачем нужен номер версии без билда?

          • +1
            chikurov-seo chikurov-seo 7 апреля 2021 09:39 #

            ну например это надо чтобы css подсоединённый таким образом `/site/css/style.css{$wa->shop->version}` в режиме отладки не кешировался, а в продакшене очень даже кешировался.

            аргумент


            А зачем нужен номер версии без билда?
            мне понадобился, чтобы сравнивать текущую версию плагина и версию плагина, на которой пользователь последний раз вносил изменения, чтобы вывести в интерфейсе плагина бейджик "New" для настроек, которых ранее пользователь еще не видел. Билд, выводящийся в версии версии плагина мешался, т.к. некорректно выполнялось условие $a > $b.

            https://yadi.sk/i/3S1PuU4qfVecgQ

            - https://yadi.sk/i/8RUyaS831-XAGQ

            • +1
              Syrnik.com Syrnik.com 7 апреля 2021 21:20 #

              тогда не нужен цикл со всеми этими str_replace. См. PHP: version_compare - Manual

              Или от оригинальной версии можно оставить только первые три разряда с помощью explode. По стандарту ВА нумерация версий должна быть x.y.z  см. п.3 Требования к размещению в магазине Webasyst — Документация Webasyst

              • +1
                chikurov-seo chikurov-seo 8 апреля 2021 08:49 #

                Спасибо за советы. С первой функцией никогда ранее не сталкивался, ознакомлюсь, но навскидку она мне не подходит, т.к. помимо сравнения $a и $b, в определенном месте версию плагина без метки времени всё равно нужно вывести. А разрядность версий плагина я хочу предусмотреть любую, хотя стандарту следую.

                Я не претендую на то что написал эталонный код решения проблемы. Сделал то что первое в голову пришло. Здесь я его оставил просто как наглядный пример того, что из-за такой мелочи приходится извращаться: "сначала получи лишний набор символов который тебе не нужен, потом найди способ от него избавиться". 

                Было бы здорово, если бы в функцию getVersion() можно было передавать доп. параметр "Запрашивать метку времени в режиме отладки?":

                //в режиме отладки:
                
                wa($app_id)->getPlugin($plugin_id)->getVersion(); // 1.0.1.1616768094
                wa($app_id)->getPlugin($plugin_id)->getVersion(true); // 1.0.1.1616768094
                wa($app_id)->getPlugin($plugin_id)->getVersion(false); // 1.0.1

                Добавить комментарий

                Чтобы добавить комментарий, зарегистрируйтесь или войдите