ПЛАГИН xF2 [Xon] Optimized List Queries

Это дополнение предназначено для крупных форумов с десятками тысяч -сотнями тысяч и более тем на одном форуме. Форумы меньшего размера не получат большой пользы от этого дополнения.

Список участников/Форум/Беседа/Реакции/Списки XFMG:

MySQL/MariaDB реализует "ранний поиск строк" в сочетании с LIMIT & OFFSET с большим смещением, что приводит к тому, что оператор large select извлекает больше данных, чем требуется. Возможно, однажды MySQL/MariaDB исправит это. Может быть.

Это вызывает проблему, поскольку именно так диалоги и потоки реализуют подкачку.

Это дополнение предоставляет некоторый оптимизированный запрос для получения тем на форуме с большим количеством тем или для бесед с очень большим количеством страниц.

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

Для получения дополнительной информации смотрите:
Конфигурация

В разделе "Производительность":
1693301462940.png

ПЛАГИН xF2 Mod Tools Improvements by Xon

  • Реализовано "мягкое" объединение сообщений, при котором исходное сообщение остается в покое
    • Для этого требуется поддержка каждого дополнения, поддерживает
      • Подсчет голосов
      • Dice roller
      • Метки тем
      • Закреплять любое сообщение
  • Добавляет разрешение для:
    • Перемещение темы
    • Просмотр журналов модератора темы
    • Объединение темы
    • Мягкое объединение сообщений
    • Жесткое объединение сообщений
  • Исправлен ряд проблем с масштабированием встроенных инструментов редактирования, связанных с блокировкой при обновлении тем после перемещения / копирования записей

ПЛАГИН xF2 [MMO] Hide BbCode by Resource

Плагин добавляет тег по количеству ресурсов пользователя.

1689706145137.png


Для работы плагина необходимо:
XF 2.1.8+
[MMO] Hide 2.1.8 - [MMO] Hide
XFRM (XenForo Resource Manager) 2.1.0 - XenForo Resource Manager

ПЛАГИН xF2 [TH] Holidays

1688399613612.png

1688399618328.png


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

Основные возможности:
  • Создание собственных праздничных наборов на основе пользовательской графики
  • Возможность установить таймер показа украшений, которые будут автоматически включать и выключать праздничные украшения в на основе указанных дат
  • Добавление эффекта падающего снега, с возможностью изменения как вида снежинок, так и интенсивности их падения
  • Возможность рассчитать начало и окончание праздника
  • Установка автоматического включения праздничных украшений
  • Наличие пользовательских настроек для отключения украшений
  • Использование собственных наборов графики для украшения для различных дней
  • Дополнение уже включает небольшой набор графических иконок, пример на скрине ниже
1688399630923.png

ПЛАГИН xF2 D.C Style - Link Proxy

Зашифруйте внешние ссылки в статье и создайте страницу перенаправления для этих ссылок.
  • Можно настроить ссылку, это не влияет.
  • Можно настроить время автоматической навигации или отключить автоматическую навигацию.
  • XF: Публикация
  • XF: Публикация профиля
  • XFRM: Обновление ресурсов
  • XFMG: Альбом
  • XFMG: Галерея

ПЛАГИН xF2 [SVG] Sharing

Дополнение добавляет в дефолтный виджет "Share this page" - "Поделиться этой страницей", добавлены кнопки:
  • ВКонтакте
  • Одноклассники
  • Мой мир mail.ru
  • Blogger
  • Linkedin
  • Liveinternet
  • Livejournal
  • Buffer
  • Diaspora
  • Evernote
  • Digg
  • Getpocket
  • Telegram
  • Viber
  • Skype
  • Line
  • Gmail
  • Yahoomail
Имеются настройки в настройках стиля, для изменения внешнего вида иконок:
  • По умолчанию
  • Цветные
  • Квадратные
  • Круглые

ПЛАГИН xF2 [StylesFactory] Core

Список стилей:
  1. Toxic
  2. Tagon
  3. Empire [Тёмная и светлая]
  4. Gamesboard
  5. EXPerience тёмная
  6. EXperience White
  7. RolePlay Dark
  8. RolePlay
  9. Vice [Тёмная и светлая версия]
  10. Park от StylesFactory
  11. ClanZ Dark
  12. ClanZ White
  13. HorroR тема
  14. Snow
  15. NONAME [Тёмная и светлая тема]
  16. Vertiforo [Тёмная и светлая тема]
  17. Abstract+ Тёмная и светлая тема
  18. CraftStyle
  19. FiveStyle
  20. Rain

Как установить аддон SFCore:
  1. Перейдите в панель управления администратора.
  2. Перейдите в «Дополнения» > нажмите кнопку «Установить/обновить из архива». Следуйте инструкциям Xenforo, в которых говорится: "Установка из архивов должна быть явно разрешена путем добавления следующей строки в src/config.php: $config['enableAddOnArchiveInstaller'] = true; Различные каталоги должны быть доступны для записи пользователем веб-сервера для установки из архива, и это может считаться небезопасным в некоторых средах хостинга. Ваш сервер также должен иметь поддержку ZipArchive в PHP».
  3. Наиболее важные плагины находятся в SFCore.zip. Если вы хотите загрузить его с помощью панели администратора, просто используйте SFCore.zip (не распаковывайте его) и нажмите «Установить/обновить из архива», затем выберите «Архив дополнений» (SFCore.zip) и загрузите его.
  4. Вы также можете загрузить SFCore.zip вручную с помощью вашего FTP-клиента. Если вы хотите сделать это, вы должны распаковать этот zip и загрузить все из папки /upload.

ПЛАГИН xF2 Ban Groups by Xon

Добавляйте пользователей в различные группы в зависимости от того, как они были забанены или если они были отклонены / отключены

При установке настройка "Добавить группу пользователей для бана" копируется в настройки новой группы бана.

Опции
  • Добавить группу пользователей для бана (очистка от спама)
  • Добавить группу пользователей в бан (Permaban)
  • Добавить группу пользователей при отклонении
  • Добавить группу пользователей при отключении

ПЛАГИН xF2 [J] Thread Preview

Небольшое дополнение, обеспечивающее предварительный просмотр первого и последнего сообщения в теме.

ПЛАГИН xF2 [ThemeHouse] UI.X 2 Add-on

Плагин для настроек и работы стилей от Theme House.

Данный плагин необходим для работы таких стилей, как:
  • UI.X 2 Dark
  • UI.X 2
  • Tactical
  • Intrepid
  • Xenith
  • Abyss
  • Drift Dark
  • Drift
  • И других
Дополнение оригинальное и ничего не вырезано, работать будет весь функционал, кроме получения и обновления стилей для которых нужен ключ, получаемый после покупки.

ПЛАГИН xF2 Developer Tools

  • Порядок отображения рядом с группой параметров в разделе "Настройки" > "Параметры"
  • Порядок отображения рядом с названием интерфейса прав
  • Параметры разработчика в меню для каждого плагина позволяют указать, что должно содержаться в файлах LICENSE, .gitignore и README.md.
  • После запуска CLI-команды xf-addon: build-release [addon_id] добавляется новый в дополнительный каталог с названием "_repo", который может использоваться для VCS (Version Control System)

ПЛАГИН xF2 [Liam W.] Custom Editor Colors

Описание :
  • Настройте цвета, отображаемые в цветовой сетке редактора сообщений в XenForo.
  • Это дополнение находится под лицензией MIT.

ПЛАГИН xF2 [TH] Nodes for grid, custom styling, and custom icons

1688655538495.png

1688655544976.png


[TH] Nodes позволит Вам стилизовать свои узлы, иконки и многое другое.

Возможности:
  • Возможность отображения списка узлов в несколько строк (для конкретного узла или для всех)
  • Полная адаптивность
  • Возможность изменения фона и цвета для конкретного узла
  • Возможность назначения собственной иконки для конкретного прочитанного/непрочитанного форума
  • И многое-многое другое

ПЛАГИН xF2 [MMO] Extend Sharing

В дополнение добавлены дополнительные кнопки в виджете для поделиться страницей.:
  • Вконтакте
  • Одноклассники
  • Блоггер
  • Ссылка в
  • Telegram
  • Viber
  • Skype
  • Gmail
  • Почта Yahoo
  • Диаспора
  • Evernote
  • Xing
  • Weibo

ПЛАГИН xF2 Content Title Edit History

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

ПЛАГИН xF2 CLI Job / Cron Runner

Это дополнение XenForo 2.x реализует расширенный запуск заданий с запуском CLI для использования с Unix cron в качестве замены встроенной xf:run-jobs команды, представленной в XF 2.2

Команда вызывается hg:run-jobs и выполняет то же самое, что и xf:run-jobs, но с большим количеством опций и функциональности.

Характеристики

Основные возможности этого дополнения:
  • позволяет командам обрабатывать задания / cron до 10 минут за раз, даже если они запускаются каждую минуту из cron-задачи (использует файл блокировки для предотвращения параллельного выполнения нескольких заданий) - идеально подходит для повышения производительности заданий на сайтах с высокой посещаемостью
  • доступны обширные результаты отладки для тестирования и выявления проблем с заданиями и задачами cron
  • прямая замена для xf:run-jobs
  • команда для составления списка всех невыполненных заданий hg:show-jobs
  • команда для составления списка всех задач XF Cron hg:show-crons
  • команда для выполнения задачи XF Cron hg:run-cron

Требования

Для этого дополнения требуется PHP версии 7.0 или выше и оно было протестировано на XenForo версий v2.2 и v2.3

Установка

Установите в соответствии с обычной установкой дополнения.

После установки перейдите на страницу Параметров системы и производительности и измените параметр запуска задания на "Серверный триггер".

1596700351453.webp


Сначала вы должны проверить, работает ли ваш job runner - выполните следующую команду из вашего CLI:
Bash:
$ php <path to your forum root>/cmd.php hg:run-jobs

Например, если у вас root на форуме /srv/www/xenforo/community, то команда job runner будет:
Bash:
$ php /srv/www/xenforo/community/cmd.php hg:run-jobs

Выполнение этой команды выполнит все невыполненные задания, а затем завершится сообщением о том, есть ли еще задания, ожидающие выполнения, или нет. При выполнении этой команды из cron рекомендуется использовать флаг --quiet (или -q) для подавления вывода.

Как только вы убедитесь, что job runner работает правильно, вам нужно будет создать свою собственную cron-задачу, чтобы запускать ее по выбранному вами расписанию.

ПРИМЕЧАНИЕ: если у вас уже настроена для запуска cron-задача, xf:run-jobs просто отключите ее и замените идентичной, которая выполняется hg:run-jobs вместо нее.

Подход № 1 с использованием crontab:

Настоятельно рекомендуется запускать cron-задачу от имени пользователя веб-сервера, чтобы предотвратить возможные проблемы с разрешениями.

Например, в Ubuntu с веб-сервером, использующим www-data, установите cron-задачу, выполнив следующую команду:
Bash:
$ sudo crontab -u www-data -e

Отредактируйте файл crontab и добавьте:
Bash:
    *       *       *       *       *       php /path/to/your/forum/root/cmd.php --quiet hg:run-jobs

Сохраните crontab.

Подход № 2 с использованием cron.d:

Вместо использования crontab некоторые дистрибутивы Linux создают хорошо известный каталог, который автоматически проверяется на выполнение задач cron. В случае Ubuntu вы можете создавать файлы в /etc/cron.d/ где вы указываете расписание, пользователя, от имени которого будет выполняться команда, и саму команду.

Создайте файл в /etc/cron.d/ со следующим содержимым:
Bash:
* * * * * webserver-user php /path/to/your/forum/root/cmd.php --quiet hg:run-jobs

... где webserver-user изменено на имя пользователя, от имени которого работает ваш веб-сервер, и изменен путь к корню вашего форума.

Опять же, используя наш предыдущий пример, где пользователь веб-сервера www-data, а корень нашего форума
/srv/www/xenforo/community Я бы выполнил следующую команду для создания cron-файла:
Bash:
echo "* * * * * www-data php /srv/www/xenforo/community/cmd.php --quiet hg:run-jobs" | sudo tee -a /etc/cron.d/xenforo

Обе опции (crontab и cron.d) будут запускать job runner каждую минуту, проверяя наличие невыполненных заданий для запуска.

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

Обновление с версии addon v1.x после обновления XenForo до версии v2.2

версия 0 этого дополнения изменяет название команды и максимально допустимое время выполнения. Обратите также внимание, что --time опция в версии v1.x была переименована в --max-execution-time в соответствии с основным исполнителем заданий, представленным в XF версии v2.2.

Для обновления:
  1. Обновитесь до XF версии v2.2 RC2 или более поздней
  2. Установите версию дополнения v2.0.x
  3. измените запись cron в unix на execute hg:run-jobs вместо xf:run-jobs
  4. если вы используете опцию --time, переименуйте это в --max-execution-time
  5. необязательно: установите для параметра --max-execution-time значение до 600 секунд (10 минут), чтобы обработка задания занимала столько времени, сколько необходимо. Например: --max-execution-time=180 позволит исполнять Job Runner до 3 минут одновременно
Примечание: убедитесь, что у вас включен "Серверный триггер" в настройках администратора системы и производительности.
1598424966903.webp


Конфигурация

Вы можете настроить максимальное время выполнения job runner, указав --max-execution-time=[TIME] опцию в командной строке.


Например, чтобы разрешить выполнение job runner максимум в течение 45 секунд:
Bash:
$ php <path to your forum root>/cmd.php --max-execution-time=45 hg:run-jobs

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

Максимально допустимое время выполнения - 10 минут (600 секунд). Команда будет выполняться до тех пор, пока не найдет больше невыполненных заданий, а затем остановится - таким образом, время выполнения обычно составляет всего несколько секунд.


Для дальнейшей настройки выполнения вашего задания вы также можете настроить максимальное время, разрешенное для выполнения каждого задания.
Это настраивается с помощью XenForo config.php Опции:
PHP:
$config['jobMaxRunTime'] = 8;

Параметр jobMaxRunTime определяет количество времени в секундах, в течение которого обрабатываемым заданиям будет разрешено выполняться, прежде чем они будут приостановлены для дальнейшей обработки при другом обходе, если это возможно. Настройка по умолчанию оптимизирована для запуска заданий в браузере, поэтому, чтобы задания выполнялись дольше в среде CLI, вы можете установить для этого значения большее.

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

Использование

Команда run-jobs должна выполняться автоматически с помощью cron-задачи в соответствии с приведенными выше инструкциями.

Показать вакансии

Команда hg:show-jobs выводит список всех ожидающих выполнения заданий, чтобы вы могли видеть, насколько заполнена очередь заданий.

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

Всегда должно отображаться как минимум два задания: основное задание Cron и задание проверки обновления.
Bash:
$ php cmd.php xf:show-jobs           

2 pending jobs found

+----------------+-----------------+----------------------+----------------------+
| Key            | Class           | Next Run             | Last Run             |
+----------------+-----------------+----------------------+----------------------+
| cron           | XF\Job\Cron     | 11-Apr-2019 10:52:01 | 11-Apr-2019 10:52:31 |
| xfUpgradeCheck | XF:UpgradeCheck | 12-Apr-2019 00:12:21 | 10-Apr-2019 21:24:03 |
+----------------+-----------------+----------------------+----------------------+

The current time is: 11-Apr-2019 10:52:31 (UTC+10:00)

Задания по отладке

Существуют обширные инструменты отладки, помогающие выявлять проблемы с заданиями и задачами Cron.

Для запуска в режиме отладки сначала отключите cron Unix, который запускает задания автоматически (не забудьте снова включить его по завершении отладки!), А затем используйте параметры детализации (Verbose: -v, Very verbose: -vv или Debug: -vvv) для hg:run-jobs команды, чтобы указать уровень вывода для отображения на консоли.

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

Например, Подробный вариант -v:
Bash:
$ php cmd.php hg:run-jobs -v
[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XF\Cron\CleanUp::runUserDowngrade executed in 0.01 seconds

[2019-11-27 23:53:09] XF\Job\Cron: Cron entry Hampel\LogDigest\Cron\SendLogs::serverError executed in 0.00 seconds

[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XF\Cron\MemberStats::rebuildMemberStatsCache executed in 0.00 seconds

[2019-11-27 23:53:09] XF\Job\Cron: Cron entry Hampel\Slack\Cron\NotifyLogs::notify executed in 0.03 seconds

[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XF\Cron\Feeder::importFeeds executed in 0.01 seconds

[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XFMG\Cron\RandomCache::generateRandomMediaCache executed in 0.07 seconds

[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XF\Cron\EmailBounce::process executed in 0.00 seconds

[2019-11-27 23:53:09] XF\Job\Cron: Cron entry XF\Cron\Counters::rebuildForumStatistics executed in 0.02 seconds

[2019-11-27 23:53:09] XF\Job\Cron: Job executed in 0.20 seconds

No more runnable jobs pending

Очень подробный параметр -vv добавляет контекст, обычно касающийся JobResult:
Bash:
$ php cmd.php hg:run-jobs -vv
[2019-11-27 23:49:49] XF\Job\Cron: Cron entry Hampel\Slack\Cron\NotifyLogs::notify executed in 0.01 seconds {"entry_id":"slackNotifyServerErrors","cron_class":"Hampel\\Slack\\Cron\\NotifyLogs","cron_method":"notify","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":-1}},"active":true,"next_run":1574898543,"addon_id":"Hampel\/Slack"}

[2019-11-27 23:49:49] XF\Job\Cron: Cron entry Hampel\SparkPost\Cron\MessageEvents::fetchMessageEvents executed in 0.00 seconds {"entry_id":"sparkpostMessageEvents","cron_class":"Hampel\\SparkPost\\Cron\\MessageEvents","cron_method":"fetchMessageEvents","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":19,"1":49}},"active":true,"next_run":1574898543,"addon_id":"Hampel\/SparkPost"}

[2019-11-27 23:49:49] XF\Job\Cron: Job executed in 0.03 seconds {"completed":false,"jobId":2,"continueDate":1574898603,"continueDate_formatted":"2019-11-27 23:50:03 UTC","statusMessage":"Running... Cron entries"}

[2019-11-27 23:49:49] Hampel\SparkPost:MessageEvent: Job executed in 0.83 seconds {"completed":true,"jobId":12,"continueDate":null,"continueDate_formatted":"","statusMessage":""}

No more runnable jobs pending

И, наконец, опция Отладки -vvv добавляет дополнительную информацию о задании:
Bash:
$ php cmd.php hg:run-jobs -vvv
[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\Feeder::importFeeds executed in 0.01 seconds {"entry_id":"feeder","cron_class":"XF\\Cron\\Feeder","cron_method":"importFeeds","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":2,"1":12,"2":22,"3":32,"4":42,"5":52}},"active":true,"next_run":1574879524,"addon_id":"XF"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\Counters::rebuildForumStatistics executed in 0.02 seconds {"entry_id":"forumStatistics","cron_class":"XF\\Cron\\Counters","cron_method":"rebuildForumStatistics","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":3,"1":13,"2":23,"3":33,"4":43,"5":53}},"active":true,"next_run":1574879584,"addon_id":"XF"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\MemberStats::rebuildMemberStatsCache executed in 0.03 seconds {"entry_id":"memberStatsCache","cron_class":"XF\\Cron\\MemberStats","cron_method":"rebuildMemberStatsCache","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":0,"1":10,"2":20,"3":30,"4":40,"5":50}},"active":true,"next_run":1574880004,"addon_id":"XF"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\Trophy::runTrophyCheck executed in 0.00 seconds {"entry_id":"trophy","cron_class":"XF\\Cron\\Trophy","cron_method":"runTrophyCheck","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":40}},"active":true,"next_run":1574880004,"addon_id":"XF"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XFMG\Cron\Statistics::cacheGalleryStatistics executed in 0.01 seconds {"entry_id":"xfmgCacheStats","cron_class":"XFMG\\Cron\\Statistics","cron_method":"cacheGalleryStatistics","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":10,"1":40}},"active":true,"next_run":1574880004,"addon_id":"XFMG"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\CleanUp::expireTempUserChanges executed in 0.00 seconds {"entry_id":"expireTempUserChanges","cron_class":"XF\\Cron\\CleanUp","cron_method":"expireTempUserChanges","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":42}},"active":true,"next_run":1574880124,"addon_id":"XF"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XFMG\Cron\RandomCache::generateRandomAlbumCache executed in 0.02 seconds {"entry_id":"xfmgGenerateRandomAlbum","cron_class":"XFMG\\Cron\\RandomCache","cron_method":"generateRandomAlbumCache","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":12,"1":42}},"active":true,"next_run":1574880124,"addon_id":"XFMG"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\EmailUnsubscribe::process executed in 0.00 seconds {"entry_id":"emailUnsubscribe","cron_class":"XF\\Cron\\EmailUnsubscribe","cron_method":"process","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":13,"1":43}},"active":true,"next_run":1574880184,"addon_id":"XF"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Cron entry XF\Cron\Ban::deleteExpiredBans executed in 0.01 seconds {"entry_id":"deleteExpiredBans","cron_class":"XF\\Cron\\Ban","cron_method":"deleteExpiredBans","run_rules":{"day_type":"dom","dom":{"0":-1},"hours":{"0":-1},"minutes":{"0":45}},"active":true,"next_run":1574880304,"addon_id":"XF"} {}

[2019-11-27 23:48:03] XF\Job\Cron: Job executed in 0.32 seconds {"completed":false,"jobId":2,"continueDate":1574898543,"continueDate_formatted":"2019-11-27 23:49:03 UTC","statusMessage":"Running... Cron entries"} {"job_id":2,"unique_key":"cron","execute_class":"XF\\Job\\Cron","execute_data":{},"manual_execute":0,"trigger_date":1574879464,"last_run_date":1574879405,"trigger_date_formatted":"2019-11-27 18:31:04 UTC","last_run_date_formatted":"2019-11-27 18:30:05 UTC"}

[2019-11-27 23:48:03] Hampel\SparkPost:MessageEvent: Job executed in 0.90 seconds {"completed":true,"jobId":10,"continueDate":null,"continueDate_formatted":"","statusMessage":""} {"job_id":10,"unique_key":"SparkPostMessageEvents","execute_class":"Hampel\\SparkPost:MessageEvent","execute_data":{},"manual_execute":0,"trigger_date":1574898483,"last_run_date":null,"trigger_date_formatted":"2019-11-27 23:48:03 UTC","last_run_date_formatted":""}

[2019-11-27 23:48:03] Hampel\SparkPost:EmailBounce: Job executed in 0.02 seconds {"completed":true,"jobId":11,"continueDate":null,"continueDate_formatted":"","statusMessage":""} {"job_id":11,"unique_key":"SparkPostEmailBounce","execute_class":"Hampel\\SparkPost:EmailBounce","execute_data":{},"manual_execute":0,"trigger_date":1574898483,"last_run_date":null,"trigger_date_formatted":"2019-11-27 23:48:03 UTC","last_run_date_formatted":""}

No more runnable jobs pending

Отладка пользовательских заданий

Вы можете добавить дополнительную отладку к своим пользовательским заданиям.

Добавьте следующую функцию в свой класс job для вызова logJobProgress функции нашего класса Logger:
Bash:
    protected function log($message, array $context = [])
    {
        // check to see if we actually have a logger available and abort if not
        if (!isset($this->app['cli.logger'])) return;

        /** @var Logger $logger */
        $logger = $this->app['cli.logger'];
        $logger->logJobProgress($message, $context, $this);
    }

Затем вы можете вызвать log() функцию в коде вашего задания для отправки информации на консоль, когда выполнение задания выполняется в подробном режиме.

Для примера - посмотрите тестовое задание, включенное в это дополнение Hampel\JobRunner\Job\TestJob:
Bash:
    public function run($maxRunTime)
    {
        $this->log("About to start test job", $this->data);

        $mail = $this->app->mailer()->newMail();
        $mail->setTo($this->data['email']);
        $mail->setContent(
            "Test job",
            "This is an email sent from a test job"
        );
        $sent = $mail->send();

        $this->log("Sent mail", ['sent' => $sent]);

        return $this->complete();
    }

Приведенный выше код сгенерирует следующий вывод, когда программа выполнения задания находится в режиме отладки:
Bash:
$ php cmd.php hg:run-jobs -vvv
[2019-11-28 00:26:21] Hampel\JobRunner:TestJob: About to start test job {"email":"foo@example.com"} {"job_id":17,"class":"Hampel\\JobRunner\\Job\\TestJob","status_message":"Testing jobs","data":{"email":"foo@example.com"},"execution_time":"0.00"}

[2019-11-28 00:26:21] Hampel\JobRunner:TestJob: Sent mail {"sent":1} {"job_id":17,"class":"Hampel\\JobRunner\\Job\\TestJob","status_message":"Testing jobs","data":{"email":"foo@example.com"},"execution_time":"0.95"}

[2019-11-28 00:26:21] Hampel\JobRunner:TestJob: Job executed in 0.95 seconds {"completed":true,"jobId":17,"continueDate":null,"continueDate_formatted":"","statusMessage":""} {"job_id":17,"unique_key":null,"execute_class":"Hampel\\JobRunner:TestJob","execute_data":{"email":"foo@example.com"},"manual_execute":0,"trigger_date":1574900777,"last_run_date":null,"trigger_date_formatted":"2019-11-28 00:26:17 UTC","last_run_date_formatted":""}

No more runnable jobs pending

При запуске в тихом режиме выходные данные отображаться не будут - и, что более важно, если это дополнение отключено, код ведения журнала удалять не нужно. Важной частью является if (!isset(\XF::app['cli.logger'])) return; строка, которая будет прервана, если наш регистратор недоступен.

Отладка пользовательских задач Cron

Используя аналогичный механизм, мы также можем добавлять отладочный код в наши пользовательские задачи Cron:

Добавьте немного другую функцию в свои задачи Cron для вызова log() функции нашего класса Logger:
Код:
    protected static function log($message, array $context = [])
    {
        // check to see if we actually have a logger available and abort if not
        if (!isset(\XF::app['cli.logger'])) return;

        /** @var Logger $logger */
        $logger = \XF::app['cli.logger'];
        $logger->log("XF\Job\Cron", $message, $context);
    }

Затем просто вызовите что-то вроде: self::log("some message about something happening", ['key' => 'value']); в своем коде для вывода информации на консоль, когда Job Runner выполняется в подробном режиме.

Особенность регистратора

Также есть функция, которую вы можете включить в свои классы: Hampel\JobRunner\Cli\LoggerTrait которая реализует некоторые базовые функции ведения журнала, которые вы можете вызывать из своего кода:
  • getLogger
  • журнал
  • logQuiet (будет отображаться, даже если для запуска задания указан параметр -q) - используйте это только для критических ошибок
  • логИчески нормальный (будет отображаться без подробностей или выше)
  • logVerbose (будет отображаться только для -v опции или выше)
  • logVeryVerbose (будет отображаться только для -vv опции или выше)
  • отладка (будет отображаться, только если для запуска задания указан параметр -vvv option)
Нет необходимости удалять логирование или отладочный код из вашего аддона при развертывании - при запуске hg:run-jobs в обычном или тихом режиме ничего из выходных данных не отображается, если в нем не используется logNormal или logQuiet (которые следует использовать только для ошибок).

Отладка Cron-задач

Начиная с версии v2.0 beta 3, появились две новые команды для работы с задачами XF cron:

Показать Crons

Команда hg:show-crons отобразит список всех ваших активных задач XF cron
Bash:
$ cmd.php hg:show-crons

19 active cron entries found

+---------------------------+----------------------+--------------------------+
| ID                        | Next Run (UTC+10:00) | Addon                    |
+---------------------------+----------------------+--------------------------+
| forumStatistics           | 29-Sep-2020 06:53    | XF                       |
| emailBounce               | 29-Sep-2020 06:53    | XF                       |
| warningExpiry             | 29-Sep-2020 06:55    | XF                       |
| rebuildSearchForumCache   | 29-Sep-2020 07:00    | XF                       |
| memberStatsCache          | 29-Sep-2020 07:00    | XF                       |
| feeder                    | 29-Sep-2020 07:02    | XF                       |
| cleanUpHourly             | 29-Sep-2020 07:10    | XF                       |
| emailUnsubscribe          | 29-Sep-2020 07:13    | XF                       |
| userGroupPromotions       | 29-Sep-2020 07:20    | XF                       |
| views                     | 29-Sep-2020 07:30    | XF                       |
| trophy                    | 29-Sep-2020 07:40    | XF                       |
| expireTempUserChanges     | 29-Sep-2020 07:42    | XF                       |
| deleteExpiredBans         | 29-Sep-2020 07:45    | XF                       |
| downgradeExpired          | 29-Sep-2020 07:50    | XF                       |
| fileCheck                 | 29-Sep-2020 10:10    | XF                       |
| dailyStats                | 29-Sep-2020 10:30    | XF                       |
| cleanUpDaily              | 29-Sep-2020 13:00    | XF                       |
| activitySummaryEmail      | 30-Sep-2020 00:20    | XF                       |
| sitemap                   | 30-Sep-2020 15:37    | XF                       |
+---------------------------+----------------------+--------------------------+

The current time is: 29-Sep-2020 06:52:05 (UTC+10:00)

Вы можете указать три параметра командной строки:
  • -a или --all показывает все задачи cron, включая отключенные задачи
  • -m или --method включает class::method для каждой задачи cron
  • -s или --sort задает столбец сортировки для списка (дата, идентификатор или дополнение)
Вы можете использовать этот инструмент для быстрого определения идентификатора задачи cron , которую вы хотите запустить , который затем вы используете в другой новой команде ...

Запустить Cron

Команда hg:run-cron выполнит задачу XF cron - просто укажите cron ID в качестве аргумента.

Например: cmd.php hg:run-cron activitySummaryEmail запустит cron-задачу "Отправить сводку активности по электронной почте".

По умолчанию отключенные cron-задачи не могут запускаться, поэтому вы можете переопределить это, указав параметр -f или --force в командной строке.

Здесь работают те же флаги детализации - поэтому укажите -v, -vv или -vvv для создания желаемого уровня вывода.

ПЛАГИН xF2 Location Explain

Добавляет объяснение в поле Местоположения в регистрационной форме (если оно указано) и в форме сведений об учетной записи.

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

Обратите внимание, что версия v1.0.1 - это минимальная версия, необходимая для XF 2.2.8 или более поздней

Настройки:
1592212761091.webp


Регистрационная форма:
1592212786008.webp


Форма для получения сведений об учетной записи:
1592212799730.webp

ПЛАГИН xF2 Home Page Title

Задайте пользовательский заголовок для домашней страницы вместо boardTitle.

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

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

Пример использования:

Мы используем бренд "Somersoft" в качестве заголовка, чтобы суффикс был коротким.

ПЛАГИН xF2 Items This Page

Добавлена новая переменная шаблона, $xf.itemsThisPage указывающая, сколько постов / медиа-элементов / ресурсов / и т.д. Показано на странице.

Это полезно в шаблонах, если вы хотите настроить отображение какого-либо элемента в зависимости от количества отображаемых там постов, тем или медиа-элементов.

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

Пример использования:

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

HTML:
 <xf:if is="in_array($xf.reply.template, [
                'thread_view',
                'thread_view_type_article',
                'thread_view_type_poll',
                'thread_view_type_question',
                'thread_view_type_suggestion'
               ]) && $xf.itemsThisPage <= 1">
        <!-- show nothing -->
    <xf:else />
        <!-- show the item -->
    </xf:if>

Еще более простой способ

Если мы объединим этот аддон с аддоном Родительский шаблон, который дает нам сокращенный способ ссылаться на все различные типы тем и форумов в именах шаблонов, используя новую $xf.reply.templateParent переменную шаблона, мы сможем еще больше упростить приведенный выше пример:

HTML:
  <xf:if is="$xf.reply.templateParent == 'thread_view' && $xf.itemsThisPage <= 1">
        <!-- show nothing -->
    <xf:else />
        <!-- show the item -->
    </xf:if>

Скрытие рекламы при отсутствии контента

Я использую следующий код в PropertyChat, чтобы скрыть рекламу, когда на странице нет контента:
HTML:
<xf:if is="$xf.itemsThisPage === 0">
    <!-- show nothing -->
<xf:else />
    <!-- show the item -->
</xf:if>

... мы можем сделать это даже для рекламы уровня PAGE_CONTAINER , потому что, если значение $xf.itemsThisPage не определено , оно просто вернет null ... итак, используя $xf.itemsThisPage === 0, мы можем сказать "если оно определено и фактически равно нулю, то сделайте это" ... продолжая выполнять что-то еще на страницах, где оно не было определено, и, таким образом, возвращает null.

ПЛАГИН xF2 [MMO] Verified Badge

1686746664286.png

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

ПЛАГИН xF2 [MMO] Live Threads

Добавляет живые темы форума с помощью websockets. Для работы надстройки необходимо установить [MMO] Centrifuge. Вы можете установить права для групп, у которых будут живые темы

ПЛАГИН xF2 [MMO] Live Conversations

Добавляет живые обсуждения на форуме с использованием websockets. Для работы надстройки необходимо установить [MMO] Centrifuge. Вы можете установить права для групп, которые будут вести прямые трансляции

Фильтровать

Назад
Верх Низ