will be implemented Автоматическое добавление в группу по крону при условии

  • Thread starter Thread starter ler
  • Start date Start date
L

ler

Guest
Например
При достижении количества сообщений >n но <m
При достижении количества релизов >n
При рейтинге>n
При репутации>n
Регистрация на сайте >n месяцев

И дальше при создании группы указать любое из условий или несколько

Например создав группу СуперСидер установить параметр автоматического перемещения в группу при отданном трафике >10TB

Ну вы короче поняли
 
Last edited by a moderator:
составляешь нужные выборки и в цикле добавляешь в группу

add_user_into_group ($group_id, $user_id);
 
Ну я себе такое частично сделал, точнее ты сделал крон задачу автоматического добавления в вип группу при достижении репутации
 
Сам спрашивал, сам отвечу. Создаете группу в админке ТрастСидер (Активный сидер или как нравится) и также создаете звание (лычку)
PHP:
<?php

//$start = microtime(true);
 
if (!defined('BB_ROOT')) die(basename(__FILE__));
 
require_once(INC_DIR .'functions_group.php');

//SELECT user_id,count(*) as active FROM `bb_bt_tracker` WHERE `seeder`=1 AND user_id NOT IN(". EXCLUDED_USERS_CSV .") GROUP BY user_id ORDER BY user_id

$active_torr = 50; // Минимальное колво активных торрентов
$group_seeder_id = 31; // ID Группы в которую добавляем
$rank_id=6; //лычка
 
 
///////////////////////////////////////// добавляем тру сидеров каждый час
 
$sql = DB()->fetch_rowset("
SELECT bbt.user_id,count(*) as active,bug.group_id
    FROM `bb_bt_tracker` bbt
    LEFT JOIN `bb_user_group` bug ON bbt.user_id=bug.user_id AND bug.group_id=".$group_seeder_id."
 
    WHERE bbt.seeder=1
        AND bbt.user_id NOT IN(". EXCLUDED_USERS_CSV .")
 
    GROUP BY bbt.user_id
    ORDER BY bbt.user_id
");
 
foreach ($sql as $row){

    if($row['active'] >= $active_torr){
        if($row['group_id'] != $group_seeder_id){
            add_user_into_group ($group_seeder_id, $row['user_id']);
        }
        DB()->query("UPDATE ". BB_USERS ." SET user_rank = ".$rank_id." WHERE user_id = ".(int)$row['user_id']." AND user_rank = 0 LIMIT 1");
    }

}


//$time = microtime(true) - $start;
//printf(' Время выполнения:%.4F сек.', $time);
//echo "-trustseeder - OK";
//echo " Памяти сожрало:".convert_bytes(memory_get_usage(true))."<br>";
PHP:
<?php

//$start = microtime(true);
 
if (!defined('BB_ROOT')) die(basename(__FILE__));
 
require_once(INC_DIR .'functions_group.php');

$active_torr = 50; // Минимальное колво активных торрентов
$group_seeder_id = 31; // ID Группы c которой  удаляем
$rank_id=6; //лычка


///////////////////////////////////////// удаляем злостных Не сидеров раз в неделю
$sql = DB()->fetch_rowset("
SELECT bug.user_id, bbt.active
FROM `bb_user_group` bug
LEFT JOIN (SELECT user_id,count(*) as active FROM `bb_bt_tracker` WHERE seeder=1 GROUP BY user_id ) bbt ON bbt.user_id=bug.user_id
    WHERE bug.group_id=".$group_seeder_id."
    GROUP BY bug.user_id
    ORDER BY bug.user_id
");
 
foreach ($sql as $row){

    if($row['active']<$active_torr){
        delete_user_group ($group_seeder_id, $row['user_id']);
        DB()->query("UPDATE ". BB_USERS ." SET user_rank = 0 WHERE user_id = ".(int)$row['user_id']." AND user_rank =".$rank_id." LIMIT 1");
    }

}
Создаете в админке две крон задачи для
trustseeder.php время выполнения каждый час
untrustseeder.php время выполнения раз в неделю

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

В новых версиях движка возможно потребуется удалить
require_once(INC_DIR .'functions_group.php');
И заменить
add_user_into_group ($group_seeder_id, $row['user_id']);
на
\TorrentPier\Legacy\Group::add_user_into_group($group_seeder_id, $row['user_id']);

Тоже самое для
delete_user_group ($group_seeder_id, $row['user_id']);
 

Attachments

  • seeder_en.webp
    seeder_en.webp
    1.6 KB · Views: 40
  • seeder.webp
    seeder.webp
    1.4 KB · Views: 23
Last edited:
Back
Top