Форум vBTorrents.org

Форум vBTorrents.org (https://vbtorrents.org/index.php)
-   Модули и дополнения (https://vbtorrents.org/forumdisplay.php?f=10)
-   -   Позвать сида (https://vbtorrents.org/showthread.php?t=16)

metallic 14.05.2009 17:48

Позвать сида
 
Вложений: 3
Упдейт от 1.08.2009

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

В приложении архив, для распаковки уберите расширение zip, под рукой не было зип-архиватора, а другие архивы на форум цеплять нельзя :)

Установка:

1) Создаем таблицу в базе форума:

Код:

CREATE TABLE IF NOT EXISTS `seederwanted` (
  `userid` int(10) NOT NULL,
  `fid` int(11) NOT NULL,
  `called` int(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

2) Копируем файл seederwanted.php и seederwanted_clean.php в корень форума

3) Импортируем продукт
Если у вас стоит TMS, то ничего руками редактировать не надо, если не стоит, то открываем редактор стилей и правим шаблон VBTT_Attachment_bit
в самое начало просто добавляем:
Код:

&nbsp;<a href="seederwanted.php?release=$myid" target="_blank" onClick="return window.confirm('$vbphrase[seederwanted_confim]')">$vbphrase[seederwanted_call]</a>
Все.

Если вы хотите, чтобы у пользователей была возможность отключать получение просьб о сидерстве, то в админ-панели нужно добавить дополнительное поле профиля типа "Флажки (checkboxes) с возможностью выбора нескольких" и добавить там одну опцию. Затем поглядеть какое имя было присвоено этой опции (у меня получилось field7).
Открыть файл seederwanted.php, найти строку
Код:

if ( $userinfo['field7'] != '1' )
и заменить в ней field7 на имя своего поля (может быть field5 или еще какое-нибудь другое)

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

Skald 14.05.2009 18:23

metallic, Спасибо. Добавлю в продукт, как только определюсь с лимитами (сколько раз можно звать и с какой периодичностью) и какую привязку реализовывать (к пользователю, к группе или к конкретному торренту)

orfo 14.05.2009 22:52

Цитата:

Нет полных источников.
даже если есть скачавшие
под полными надо понимать Сиды?
думаю надо заменить на своё

Skald 14.05.2009 23:48

Цитата:

Сообщение от orfo (Сообщение 169)
думаю надо заменить на своё

Просто меняете фразу seederwanted_message и все - настраивается ведь все в админке.

orfo 15.05.2009 18:56

там просто Url torrents.fiberboom.ru
а как быть с "Нет полных источников. "

Lightning 02.06.2009 12:49

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

NetS 02.06.2009 16:30

Lightning, спасиб. Там еще глюк с пользователями у которых запрещено лс.

Skald 03.06.2009 00:07

Цитата:

Сообщение от NetS (Сообщение 331)
если в списке полностью скачавших файл есть удалённые пользователи

Кстати спасибо, это напомнило мне что надо чистить пиры при удалении пользователей... Я на тестовом трекере :-) пользователей не удаляю, поэтому и не прикручивал :) Но делать надо... В следующей бете уже будут чиститься пиры

Drakula 20.06.2009 14:20

Появились такие каракули Позвать СЃРёРґР°

Skald 20.06.2009 17:00

Drakula, потому что продукт в утф-8
Надо переконвертировать в 1251 и соответственно изменить запрос.

Drakula 20.06.2009 20:20

ясно, а не подскажите как перекодировать?

UnFeeLing 21.06.2009 00:58

Цитата:

Сообщение от Drakula (Сообщение 465)
ясно, а не подскажите как перекодировать?

https://vbsupport.ru/cp1251utf.php

Drakula 21.06.2009 11:22

ок посмарю

Voltick 21.06.2009 11:31

Вложений: 1
Цитата:

ясно, а не подскажите как перекодировать?
Скачай и поставь NotePad++ отличный блокнот и может перекодировать файлы.


Drakula 21.06.2009 11:36

Ок спасибо всем за помощь помогло)

metallic 05.07.2009 16:45

Вложений: 1
Извиняюсь, исчезал на долгое время, сильно занят был. Итак, кое чего поправил.
В приложении два файла, оба залить в корень.
Первый файл seederwanted.php исправлен, добавлена проверка, разрешена ли отправка пользователю ЛС.
Второй файл seederwanted_clean.php новый, его нужно засунуть в крон(чрез админ-панель), для запуска каждый день.

Voltick 07.07.2009 06:51

metallic,
Fatal error: Call to a member function query_first_slave() on a non-object in ....\global.php on line 242

Выдает ошибку при запуске крона seederwanted_clean.php

Цитата:

Сообщение от вырезки из global.php
{
$style = $db->query_first_slave("
SELECT *
FROM " . TABLE_PREFIX . "style
WHERE (styleid = $styleid" . iif(!($vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions['cancontrolpanel']) AND !$userselect, ' AND userselect = 1') . ")
OR styleid = " . $vbulletin->options['styleid'] . "
ORDER BY styleid " . iif($styleid > $vbulletin->options['styleid'], 'DESC', 'ASC') . "
LIMIT 1
");
}

где $style = $db->query_first_slave(" - 242 строка


Skald 07.07.2009 15:11

Voltick, global.php - это стандартный файл булки, один из основных.

Voltick 07.07.2009 15:26

Вложений: 2
Цитата:

Voltick, global.php - это стандартный файл булки, один из основных.
я понимаю :))) Я хочу узнать почему крон выдаёт ошибку и ругается на seederwanted_clean.php

metallic 11.07.2009 19:29

Файл в корень положил? Если руками через браузер запустить, что пишет?

metallic 11.07.2009 19:52

Вложений: 1
Сделал, чтоб нельзя было звать сида, если в онлайне их больше двух.
Там появилась новая фраза, если мод уже установлен, ее нужно вручную добавить через админку в основные.
Имя переменной: seaderwanted_too_many_seeders, текст "В этой раздаче уже есть полные источники" (ну или сами что хотите).

Также в шапке перезалил архив, в нем все последние версии файлов и новая xml

Voltick 12.07.2009 05:13

metallic, файл в корне. Если запустить белая страница...

metallic 12.07.2009 12:16

Voltick, все правильно, значит выполнился без ошибок

Voltick 12.07.2009 15:03

metallic, дак в кроне то ошибка

Fatal error: Call to a member function query_first_slave() on a non-object in ...\www\forum\global.php on line 242

Как с этим то быть?

metallic 13.07.2009 13:52

Цитата:

Сообщение от Voltick (Сообщение 536)
metallic, дак в кроне то ошибка

Fatal error: Call to a member function query_first_slave() on a non-object in ...\www\forum\global.php on line 242

Как с этим то быть?

А где ты это увидел? может у меня тоже самое с кроном, погляжу :)

Voltick 14.07.2009 08:45

Вложений: 2
Цитата:

А где ты это увидел? может у меня тоже самое с кроном, погляжу :)
Вот смотри... Скрины в атаче...

gM@X 22.07.2009 02:50

кстати вроде не дружит с БД где используются префиксы :)

Skald 22.07.2009 18:38

Цитата:

Сообщение от gM@X (Сообщение 651)
кстати вроде не дружит с БД где используются префиксы :)

Ну при небольшом знании mysql и основ php - это легко исправляется :))))

gM@X 23.07.2009 13:24

уху :)

metallic 01.08.2009 14:21

Исправил файл seederwanted_clean.php

Переименовал его в seederwanted_cleanup.php и положил в includes/cron/seederwanted_cleanup.php

Задание в кроне тоже нужно подправить, поле "Имя файла" : ./includes/cron/seederwanted_cleanup.php

Новое содержимое файла seederwanted_cleanup.php:

PHP код:

<?php
/* 
 * Удаление старых запписей из таблици seederwanted
 */

// ######################## SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);
if (!
is_object($vbulletin->db))
{
    exit;
}

$SW_QUERY_TTL 86400;

$vbulletin->db->query_write("DELETE FROM `seederwanted` WHERE `called` + $SW_QUERY_TTL < UNIX_TIMESTAMP();");

?>

Теперь работает 100%

Skald 01.08.2009 15:40

Цитата:

Сообщение от metallic (Сообщение 819)
PHP код:

$vbulletin->db->query_write("DELETE FROM `seederwanted` WHERE `called` + $SW_QUERY_TTL < UNIX_TIMESTAMP();"); 


Небольшой фикс для префиксов таблиц (наверное в остальном коде тоже првать надо).
PHP код:

$vbulletin->db->query_write("DELETE FROM " TABLE_PREFIX "seederwanted WHERE `called` < ". (TIMENOW $SW_QUERY_TTL)); 


1ce666 01.08.2009 16:25

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

metallic 01.08.2009 18:41

1ce666, сейчас так и есть

вот проверка:

PHP код:

if ( $db->num_rows($seeders_result) > )
    eval( 
standard_error($vbphrase[seaderwanted_too_many_seeders]) ); 

если сидеров больше двух, то сида звать нельзя

1ce666 01.08.2009 18:55

metallic, то есть уже так и есть в обновлении хака? Если так , то хорошо.

metallic 01.08.2009 20:44

1ce666, да, это в последней версии появилось

Voltick 02.08.2009 08:15

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

metallic 02.08.2009 12:52

Специально делал сообщения от бота, но вообще можно такое сделать, может сегодня сделаю.

Voltick 02.08.2009 13:09

Цитата:

Специально делал сообщения от бота, но вообще можно такое сделать, может сегодня сделаю.
НУ да сообщение от бота, в теле сообщения "Вас просит встать на эту раздачу пользователь такой-то"

venom_ 11.08.2009 13:15

у меня после нажатия на "Плзвать сида" все как бы работает, но в шапке ошибку пишет:
Цитата:

Warning: in_array() [function.in-array]: Wrong datatype for second argument in [path]/includes/init.php(298) : eval()'d code on line 7

Voltick 11.08.2009 14:46

А у меня некоторые пользователи стали жаловаться на то что мод не работает. На кнопку нажимаю всё вроде бы ок. Но личное сообщение не рассылается. Хотя попробывал на себе, мне приходит. В настройках активно получение ЛС. Может быть мод не работает для некоторых групп пользователей?


Текущее время: 14:08. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.4 Patch Level 6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot