[modHelpers] Версия 1.4.0. Мобильность, очереди...

Всем привет!
В данной версии добавленный функционал коснулся в основном программистов. Но есть пара фич и для работы с сайтом — проверка запроса на «мобильность» и очереди для почтовых уведомлений.

Для отладки добавил функцию print_str(). Работает как print_r, но дополнительно делает ещё ряд манипуляций — объекты переводит в массивы (при наличии метода toArray), массивы оборачивает в тег pre, для null-евых переменных выводит «NULL», для булевых — «TRUE» или «FALSE» вместо 1 и ''. А также может оборачивать вывод тегами HTML или применять шаблон для вывода. Например, выводить желтым шрифтом на синем фоне.


Список добавленных функций:

  • is_mobile() — проверяет откуда запрос — с мобильного или нет (спасибо Константину Обухову).
  • array_empty() — проверяемая переменная должна быть пустым массивом.
  • array_notempty() — проверяемая переменная должна быть непустым массивом.
  • array_trim(), array_ltrim() и array_rtrim() — рекурсивная обработка массива функциями trim(), ltrim() и rtrim() соответственно. Можно указывать символы для удаления.
  • explode_trim(), explode_ltrim() и explode_rtrim() — объединение 2-х функций: explode() и trim с возможностью указания символов.
  • print_str() — Расширяет функцию print_r(). Конвертирует переменную в строку и печатает или выводит её. В качестве агрумента может быть строка, массив, объект, у которого определён метод toArray(). Массив оборачивается в тег pre. Результат можно оборачивать в теги HTML.
  • print_d() — выводит значение через функцию print_str() и завершает выполнение сценария. Т.е. print and die.
  • echo_nl() — добавляет к выводу символ окончания строки.
  • parse() — заменяет плейсхолдеры с строке на переданные значения. Плейсхолдеры должны передаваться в ассоциативном массиве.
  • str_starts() — возвращает истину, если строка начинается с указанной подстроки.
  • str_ends() — возвращает истину, если строка заканчивается указанной подстрокой.
  • str_contains() — возвращает истину, если указанная подстрока содержится в исходной строке.
  • str_match() — проверяет, соответствует ли строка указанному паттерну.
  • str_limit() — возвращает строку указанной длины и добавляет завершающую строку — по-умолчанию многоточие.
  • str_between() — возвращает подстроку, найденную между указанными тегами.
Пример для функции is_mobile() с использованием фенома:
{if is_mobile()}
    Секция для мобильных устройств
{else}
    Секция для десктопных устройств
{/if}

По очередям. Так как отправка почтового сообщения — операция довольно ресурсоёмкая, лучше выполнять её асинхронно. Например, используя cron. Для работы с очередями в мейлер библиотеки добавлены методы для сохранения писем в очередь и отправки их из очереди.

Кому интересно подробности тут.
Сергей Шлоков
23 марта 2017, 07:13
modx.pro
4
1 790
+9
Поблагодарить автора Отправить деньги

Комментарии: 7

Владимир
23 марта 2017, 14:23
0
Доброго дня!
is_mobile() пока не понимает разницу телефон\планшет, или не планируется?
    Сергей Шлоков
    23 марта 2017, 14:28
    0
    Привет!
    Он и не должен понимать — планшет же не мобильный телефон :)
    Наверно есть смысл добавить функцию is_tablet().
      Владимир
      23 марта 2017, 14:30
      0
      есть смысл добавить функцию is_tablet()
      ну, я собственно об этом :)
        Владимир
        23 марта 2017, 14:40
        0
        PS Кто уже минусуест вполне понятный ответ… воистину, не понять мне разум других чеовеков.
          Владимир
          23 марта 2017, 14:45
          +1
          Вот этим плагином пользуюсь
          В принципе все четко определяется, mobile, tablet, standard. И все три типа устройств сейчас абсолютно актуальны, судя по посещениям (из доступной статистики).
            Владимир
            10 августа 2017, 16:41
            0
            кстати, is_tablet() не будет реализована?
              Сергей Шлоков
              10 августа 2017, 17:20
              +1
              Да я забыл уже про неё благополучно. :)

              П.С. Купил Lenovo Yoga 910. Сижу вот разбираюсь. Так что пару дней меня не беспокоить. :)
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          7