<?php

# Каждую полночь
use Core\Db;

require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'autoload.php';

/**
 * CRON Очистки сервера от ненужной информации
 * Действия:
 * 1.   Очистка чата
 * 2.    Очистка заявок в поединки
 * 3.    Очистка заявок в пещеры
 * 4.    Очистка походов
 * */

// ЕБИИИИИИИЧЕСКАЯ СИИИИЛА!!!!! (с) Инс.
// forign_keys! Никто не знает про foreign_keys!

function clearUsersFromDb(array $uidsArray, array $loginsArray)
{
    $uids = implode(',', $uidsArray);
    $logins = implode(',', $loginsArray);
    Db::sql('delete from aaa_znahar where uid in (?)', [$uids]);
    Db::sql('delete from actions where uid in (?)', [$uids]);
    Db::sql('delete from add_smiles where uid in (?)', [$uids]);
    Db::sql('delete from a_com_act where uid in (?)', [$uids]);
    Db::sql('delete from bandit where uid in (?)', [$uids]);
    Db::sql('delete from bank_alh where uid in (?)', [$uids]);
    Db::sql('delete from battle_actions where uid in (?)', [$uids]);
    Db::sql('delete from battle_cache where uid in (?)', [$uids]);
    Db::sql('delete from battle_last where uid in (?)', [$uids]);
    Db::sql('delete from battle_users where uid in (?)', [$uids]);
    Db::sql('delete from battle_act where uid1 in (?) or uid2 in (?)', [$uids, $uids]);
    Db::sql('delete from battle_stat where uid1 in (?) or uid2 in (?)', [$uids, $uids]);
    Db::sql('delete from bs_actions where uid in (?)', [$uids]);
    Db::sql('delete from bs_zv where uid in (?)', [$uids]);
    Db::sql('delete from building where uid in (?)', [$uids]);
    Db::sql('delete from complects_priem where uid in (?)', [$uids]);
    Db::sql('delete from dialog_act where uid in (?)', [$uids]);
    Db::sql('delete from dump where uid in (?)', [$uids]);
    Db::sql('delete from dungeon_actions where uid in (?)', [$uids]);
    Db::sql('delete from eff_users where uid in (?)', [$uids]);
    Db::sql('delete from ekr_sale where uid in (?)', [$uids]);
    Db::sql('delete from feerverks where uid in (?)', [$uids]);
    Db::sql('delete from fontan where uid in (?)', [$uids]);
    Db::sql('delete from fontan_hp where uid in (?)', [$uids]);
    Db::sql('delete from fontan_text where uid in (?)', [$uids]);
    Db::sql('delete from friends where user in (?) or friend in (?) or enemy in (?) or notinlist in (?) or ignor in (?) or login_ignor in (?) or user_ignor in (?)',
        [$uids, $uids, $uids, $uids, $uids, $logins, $logins]);
    Db::sql('delete from house where owner in (?)', [$uids]);
    Db::sql('delete from items_img where uid in (?)', [$uids]);
    Db::sql('delete from items_users where uid in (?)', [$uids]);
    Db::sql('delete from izlom_rating where uid in (?)', [$uids]);
    Db::sql('delete from laba_act where uid in (?)', [$uids]);
    Db::sql('delete from laba_itm where uid in (?)', [$uids]);
    Db::sql('delete from lastnames where uid in (?)', [$uids]);
    Db::sql('delete from logs_auth where uid in (?)', [$uids]);
    Db::sql('delete from loto_win where uid in (?)', [$uids]);
    Db::sql('delete from mults where uid in (?) or uid2 in (?)', [$uids, $uids]);
    Db::sql('delete from notepad where uid in (?)', [$uids]);
    Db::sql('delete from obraz where uid in (?) or login in (?)', [$uids, $logins]);
    Db::sql('delete from online where uid in (?)', [$uids]);
    Db::sql('delete from pirogi where uid in (?)', [$uids]);
    Db::sql('delete from reimage where uid in (?)', [$uids]);
    Db::sql('delete from rep where id in (?)', [$uids]);
    Db::sql('delete from repass where uid in (?)', [$uids]);
    Db::sql('delete from ruletka_coin where uid in (?)', [$uids]);
    Db::sql('delete from save_com where uid in (?)', [$uids]);
    Db::sql('delete from stats where id in (?)', [$uids]);
    Db::sql('delete from transfers where uid1 in (?) or uid2 in (?)', [$uids, $uids]);
    Db::sql('delete from users where id in (?)', [$uids]);
    Db::sql('delete from users_delo where uid in (?)', [$uids]);
    Db::sql('delete from users_animal where uid in (?)', [$uids]);
    Db::sql('delete from users_gifts where uid in (?)', [$uids]);
    Db::sql('delete from users_ico where uid in (?)', [$uids]);
    Db::sql('delete from users_reputation where user_id in (?)', [$uids]);
    Db::sql('delete from users_turnirs where uid in (?)', [$uids]);
    Db::sql('delete from users_twink where uid in (?)', [$uids]);
    Db::sql('delete from zayvki where creator in (?)', [$uids]);
}

//1. Очистка чата, остается чат только за последние 3 дня
//Db::sql('delete from chat where time < unix_timestamp() - 86400 * 3');

//2. Очистка заявок в поединки
Db::sql('delete from zayvki where start > 0 or cancel > 0 or time < unix_timestamp() - 86400');

//3. Очистка заявок в пещеры
Db::sql('delete from dungeon_zv where `delete` > 0 or time < unix_timestamp() - 86400');

//4. Очистка походов
$idsArr = Db::getColumn('select id from dungeon_now where time_start < unix_timestamp() - 86400 or time_finish > 0');
$idsStr = implode(',', $idsArr);
Db::sql('delete from dungeon_actions where dn in (?)', [$idsStr]);
Db::sql('delete from dungeon_bots where dn in (?)', [$idsStr]);
Db::sql('delete from dungeon_items where dn in (?)', [$idsStr]);
Db::sql('delete from dungeon_obj where dn in (?)', [$idsStr]);
Db::sql('delete from dungeon_now where id in (?)', [$idsStr]);

//5. Очистка монстров
$botuids = [];
$botlogins = [];

$bots = Db::getRows('select users.id, login
from users
    left join battle on users.battle = battle.id
where `real` = 0 and battle.id = 0 and team_win >= 0 and not exists(select 1 from users where inUser = users.id) order by id');

foreach ($bots as $bot) {
    $botuids[] = $bot['id'];
    $botlogins[] = $bot['login'];
}

clearUsersFromDb($botuids, $botlogins);

Db::sql('delete from stats where id not in (select id from users)');
Db::sql('delete from items_users where `delete` > time_create and `delete` > 0');

//6. Очистка личного дела
//mysql_query('DELETE FROM `users_delo` WHERE `time` < "'.(time()-86400*30).'" LIMIT 1000');