Расширенная система повышений для vBulletin
Вложений: 2
Продукт для расширенной системы повышений для vBulletin.
В стандартной системе повышений нельзя указывать сложные условия для перехода между группами и в коде нет ни одного хука для интеграции дополнительного функционала, поэтому во вложении комплект файлов для необходимых модификаций. Установка: 1. Импортируем продукт product-yo_xpromote.xml (он в 1251 кодировке, если форум в UTF-8, предварительно конвертим в UTF-8). В продукте всего пару фраз, и все основное - это редактирование основных файлов. 2. upload\includes\xml\hooks_xpromote.xml копируем в includes\xml форума. 3. Изменяем файлы форума admincp\usergroup.php и includes\cron\promotion.php по аналогии с файлами во вложении для 3.7.3 версии форума (upload\admincp\usergroup~org.php - оригинальный файл и upload\admincp\usergroup.php - полученный файл, для promotion.php - аналогично). Описывать детальнее не буду т.к. без проблем найти нужные изменения с помощью WinMerge или любой другой подобной программы. Пример работы на скринах. |
изменил файлы для своей версии, импортировал продукт, создал повышения
использовал условие и расширенную проверку Цитата:
p.s. самое важное, использую yo edition 1 |
Цитата:
|
При выполнении повышений в крон
Цитата:
Цитата:
|
xpromote_cron_query_hoo k - должно быть без пробела
а сообщение о синтаксической ошибке в модуле, т.е. для проверки мне нужно содержимое модуля "xpromote_cron_query_hook", которое похоже просто неправильно перенесено в старый продукт. |
правильно, неправильно вставил модуль, "должно быть без пробела" это только в этом сообщении.
Скрипт повышений выполняется но повышение (перенос) не производиться содержимое модуля Цитата:
|
orfo, Оставьте только ($promotion['uploaded']+1) / ($promotion['dowloaded']+1)<0.3
|
Skald пробовал, результат такой же
|
orfo, Вопрос - xml с описанием хука залили на сервер? Потому что если не залили то ничего работать не будет.
|
да, поправка к предыдущему посту, переносит но всех пользователей полностью, хотя не может быть такого
использовал условие $promotion['uploaded']>=50000000000 перекинул вроде правильно, как бы с ратио это делать |
повторяю: Вопрос - xml с описанием хука залили на сервер? Потому что если не залили то ничего работать не будет.
|
Цитата:
Цитата:
|
ну можно добавить больше скобочек
((($promotion['uploaded']+1)/($promotion['dowloaded']+1))<0.3) |
Спасибо всё работает
|
Захотел новичков научить пользоваться разделом тестовый, а то многие не умеют нормально оформлять темы, но упорно игнорируют его. Создал группу продвинутые и перекинул пользователей. Основная стала новички. Для новичков запретил возможность создавать темы в разделах кроме тестовый и болталогии. Теперь настроил повышения: 25 сообщений минимум для переноса, но они могут набить их в болталогии или так. Разумнее проверка по кол-ву созданных тем. Тут и встает вопрос реально ли сделать чтобы можно было выбирать в повышениях ещё и кол-во созданных тем, а ещё лучше с возможностью выбора раздела, т.е. вписать id раздела для проверки.
|
Цитата:
Если после этого будут нужны еще какие-то операции прямо перед проверкой конкретного повышения то нужен модуль в xpromote_cron_hook (но в случае с темами этот хук скорее всего не понадобится). Для выбора разделов подойдет forumlist option |
Было бы неплохо, если бы вы сделали повышения учитывающие кол-во созданных тем. Знаний в данной области мало.
|
Aiser, Это будет отдельный продукт, нагружать дополнительными join-ами продукт повышений не вижу смысла. Могу сделать на заказ, но определенно не бесплатно.
|
На версии форума 3,6,7 будет работать? если да, то что нужно для этого сделать или изменить?
|
daemonz, Именно эта версия нет. Была где-то старая для 3.6, изменить там всего ничего надо, но вот у меня под рукой нет 3.6 чтобы сказать что именно
|
Вопрос
Extended promotion check что оно обозначает? ратио? |
Цитата:
Если же знаний нет, то пишите именно так как на скрине (заменив значение ратио на свои цифры) |
Вложений: 1
Для тех, кому привычнее работать с утилитами diff и patch \m/ - вот файлик для patch (в аттаче).
В папке, в которую установлен форум, выполнить: Код:
patch -p0 <patchfile.txt [offtop] Если кому-то интересно узнать, что это за волшебные утилиты - это Линуксовые утилиты. Первая (diff) создает вот такие файлики - в них содержатся различия между двумя файлами (до внесения исправлений и после). Вторая (patch) позволяет на основе файла различий из оригинального файла получить файл с нужными исправлениями. Механизм создания файлов различий и внесения изменеий таков, что позволяет вносить изменения даже в тех случаях, когда оригинальные (неисправленные) файлы менялись (кроме тех случаев, когда менялись непосредственно те строки, которые нужно редактировать). Другими словами, файл различий, полученный для версии движка 3.7.3, подходит для версии 3.8.3 (хотя сами файлы usergroup.php и promotion.php в версии 3.8.3 отличаются от версии 3.7.3) Те же самые diff и patch есть и под Windows [/offtop] |
Вопрос: в какой момент времени выполняется проверка условий? Другими словами - когда срабатывает "повышение"?
Я хочу менять группу пользователя в зависимости от IP адреса, с которого он зашел, и хочу возложить эту задачу на обсуждаемый модуль. Но если "повышения" работают по крону - тогда они могут срабатывать ощутимо позже захода пользователя на форум (и тогда этот способ мне не подойдет) |
Цитата:
Повышения отрабатывают по крону, и совсем не часто (раз или 2 раза час) Есть два варианта решения. Или на лету (в зависимости от ip) подменять права пользователя - это хук cache_permissions (но надо разбираться с системой прав булки) Или на лету подменять основную группу если зашел с запрещенного ip на группу у которой нет никаких прав в нужных разделах - это хук fetch_userinfo. Для этого можно использовать предопределенные константы булки IPADDRESS и ALT_IP |
Цитата:
|
|
Собственно вопрос по системе повышения:
Хочу поставить данную модификацию на сайт не относящийся к трекеру (http://oblozhki.net) и сделать автоматическое повышение пользователей в группы по колличеству загруженых вложений (чтото типа ТОП100, ТОП1000 и т.д). Как можено сделать это проще и правильнее PS: Извиняюсь если не совсем в тему |
alik4277, Все в тему. Но для этого понадобится написание одного модуля, т.к. данные о загруженных вложениях хранятся не в базе пользователей (но зато можно использовать хуки, добавляемые расширенной системой повышений).
|
я уже тоже думал о модуле, только не знаю какое мостоположение ему выбрать
на чет повышений там ничего нету, или просто cron_start выбрать? Но тогда запросы будут идти при каждом старте крона а это тоже нежелательно. Или же в ежедневные... |
alik4277, Если модуль был установлен полностью, то должен появиться хук xpromote_cron_query_hook где можно использовать переменные $hook_query_fields и $hook_query_joins для задания отбора полей в последующем запросе
и хук xpromote_cron_hook где можно обработать каждого отдельного пользователя. |
Да, теперь когда ты написал я нашел. Как то не догнал сразу посмотреть
Попробую чтонибудь сварганить (хоть и не силен в пхп но продолжать учиться надо) Добавлено через 49 минут А какое местоположение модуля лучше выбрать в данном случае: xpromote_cron_query_hook или xpromote_cron_hook |
Цитата:
Вот хук xpromote_cron_hook (где можно обработать каждого отдельного пользователя) лучше использовать если необходима какая либо обработка данных, полученных через запрос, перед условием в свойствах повышения. |
После того как импортируеш, зальеш все файлы что надо делать? Создовать группы как на скрине в 1 посте?
|
Drakula, Файлы надо не просто залить, а отредактировать по образцу оригинальные файлы булки.
|
Skald, Угу в курсе. Так и сделал
|
Цитата:
|
Что то не пойму
Сделал условие: ((($promotion['uploaded'])/($promotion['dowloaded']))>5) AND ($promotion['uploaded'])>214748364800 Ничего не происходит Пробывал: ((($promotion['uploaded']+1)/($promotion['dowloaded']+1))>5) AND ($promotion['uploaded']+1)>214748364800 переносит но не соблюдается условие AND ($promotion['uploaded']+1)>214748364800 В чем собака порылась? |
Не отрабатывает на автомате или даже в ручном режиме через админку?
В первом случае ничего не происходит, потому что с большой вероятностью есть пользователи с 0 в download-е, т.е. деление на 0 (потому и не работает) Во втором попробовать все взять в скобки ( (($promotion['uploaded']+1)/($promotion['dowloaded']+1))>5 AND ($promotion['uploaded']+1)>214748364800 ) |
не отрабатавыет в обоих режимах
в таблице действительно были нули, изменил запросом скачанное и отданное на 10мб всем у кого нули были, взял весь запрос в скобки и все равно такая же лажа Обратил внимание на перенесенных пользователей: повышение происходит либо по условию 1 либо по условию 2, но оба условия одновременно не выполняются Половину дня убил на поиск решения и так ничего не нашел |
Текущее время: 01:11. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.4 Patch Level 6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot