<?php

define('_CONSTANT_', 1); 

require_once '../../core/start.php';

checkAuth();

head('Клан', 'Клан');

if (empty($user['clan_id'])) 
{
    error('Вы не состоите в клане', '/modules/clan/clans.php', 'Посмотреть список кланов');
} 

switch ($do) 
{
    default: 

    $userClan = DB::$dbs->queryFetch("SELECT * FROM " . CLANS . " WHERE `id` = ?", [$user['clan_id']]);

    if ($userClan) 
    {
        ?>
        
            <div class="head">
                <span><?=$Filter->output($userClan['name'])?></span>
            </div>
            <div class="content">
            <?=(empty($userClan['announcement']) ? 'Обьявления нет...' : $Filter->output($userClan['announcement']))?>
            </div>
            <br />
            <div class="clanInfo">
                <span>Уровень: <?=$Filter->clearInt($userClan['lvl'])?></span>
                <br />
                <span>Рейтинг: <?=$Count->clanCountRating($userClan['id'])?></span>
            </div>
            <br />
            <br />
            <div class="clanLink">
                <a href="<?=HOME?>/modules/clan/index.php?do=clanBank" class="link-touch"><?=ico('gold-big.png')?> Сокровищница</a>
                <a href="#" class="link-touch"><?=ico('chat.png')?> Чат</a>
                <a href="#" class="link-touch"> Форум</a>
                <a href="<?=HOME?>/modules/clan/index.php?do=clanJournal" class="link-touch"><?=ico('journal.png')?> Журнал</a>
                <?=($user['clan_access'] == 5 ? '<a href="'. HOME .'/modules/clan/index.php?do=liderPanel" class="link-touch">'. ico('panel.png') .' Управление игроками</a>' : null)?>
                <a href="<?=HOME?>/modules/clan/index.php?leaveClan" class="link-touch"><?=ico('0.png')?> Покинуть клан</a>
            </div>
        <div class="head">Участники [<?=$Filter->clearInt($userClan['users'])?>/<?=$Filter->clearInt($userClan['max_users'])?>]</div><br/>
        <?php

        # Leave clan;
        if (isset($_GET['leaveClan'])) 
        {
            if ($user['clan_access'] == 5 && $userClan['users'] > 1) 
            {
                errorNoExit('Вы не можете покинуть клан пока в нем есть игроки');
            } 
            else 
            {   
                # Leave;
                if (isset($_GET['true'])) 
                {
                    DB::$dbs->query("UPDATE ". CLANS ." SET `users` = ?, `rating` = ? WHERE `id` = ?", [($userClan['users'] - 1), ($userClan['rating'] - $user['clan_rating']), $userClan['id']]);
                    DB::$dbs->query("UPDATE ". USERS ." SET `clan_id` = ?, `clan_rating` = ?, `clan_access` = ? WHERE `id` = ?", [0, 0, 0, $user['id']]);
                    $User->addClanJournal(' покинул клан');
                    success('Вы успешно покинули клан', '/game/index.php', 'На главную');
                } 
                else 
                {
                    echo '<div class="title">Подтвердите действие</div><div class="content">Вы действительно хотите покинуть клан?<br/><a href="'. HOME .'/modules/clan/index.php?leaveClan&amp;true" class="link-touch">'. ico('1.png') .' Покинуть клан</a><a href="'. HOME .'/modules/clan/index.php" class="link-touch">'. ico('0.png') .' Нет</a></div>';
                }
            }
        }
        $all = DB::$dbs->querySingle("SELECT COUNT(`id`) FROM " . USERS . " WHERE `clan_id` = ? ORDER BY `clan_access` DESC", [$user['clan_id']]);
        $n = new Navigator($all,10,'');
        $sql = DB::$dbs->query("SELECT * FROM " . USERS . " WHERE `clan_id` = ? ORDER BY `clan_access` DESC LIMIT {$n->start()}, 10", [$user['clan_id']]);

        if (empty($all)) 
        {
            errorNoExit('Пусто...');
        } 
        while ($profile = $sql -> fetch()) 
        {
            ?>
            <?=userLink($profile['id'], 'link-touch', $User->clanAccess($profile['id'], 'name') . '<span class="count">'. ico('clan-rating.png') . $profile['clan_rating'] .'</span>');?>
            <?php
        }
    } 
    else 
    {
        error('Ошибка! Обратитесь к администратору', '/', 'На главную');
    }

    break;

    case 'clanBank': 

    if ($user['clan_id'] == 0) 
    {
        error('Вы не состоите в клане', '/modules/clan/clans.php', 'Посмотреть список кланов');
    } 

    $userClan = DB::$dbs->queryFetch("SELECT * FROM " . CLANS . " WHERE `id` = ?", [$user['clan_id']]);

    if ($userClan) 
    {
        ?> 
        Золото: <?=moneyIcon() . $Filter->clearInt($userClan['money'])?><br/>
        <?php
        /* Form add */
        if (isset($_POST['addMoney'])) 
        {
            $data = $_POST;
            $data['money'] = $Filter->clearInt($data['money']);

            if ($user['money'] < $data['money']) 
            {
                error('Недостаточно золота', '/modules/clan/index.php', 'Веруться в клан');
            }

            DB::$dbs->query("UPDATE " . CLANS . " SET `money` = ? WHERE `id` = ?", [($userClan['money'] + $data['money']), $userClan['id']]);
            DB::$dbs->query("UPDATE " . USERS . " SET `money` = ? WHERE `id` = ?", [($user['money'] - $data['money']), $user['id']]);
            $User->addClanJournal(' добавил '.$data['money'].' золота в сокровищницу клана');
            success('Вы успешно добавили золото в казну', '/modules/clan/index.php', 'Вернуться в клан');
        } 
        ?> 
        <form action="" method="POST"> 
        <input type="text" name="money" placeholder="Введите количество..."><br/>
        <input type="submit" name="addMoney" value="Добавить">
        </form>
        <?php
    } 
    else 
    {
        error('Ошибка! Обратитесь к администратору', '/', 'На главную');        
    }

    break;

    case 'clanJournal': 

    if ($user['clan_id'] == 0) 
    {
        error('Вы не состоите в клане', '/modules/clan/clans.php', 'Посмотреть список кланов');
    } 

    $userClan = DB::$dbs->queryFetch("SELECT * FROM " . CLANS . " WHERE `id` = ?", [$user['clan_id']]); 

    if ($userClan) 
    {
        $all = DB::$dbs->querySingle("SELECT COUNT(`id`) FROM " . CLANS_JOURNAL . " WHERE `clan_id` = ? ORDER BY `time` DESC", [$user['clan_id']]);
        $n = new Navigator($all,10,'do=clanJournal');
        $sql = DB::$dbs->query("SELECT * FROM " . CLANS_JOURNAL . " WHERE `clan_id` = ? ORDER BY `time` DESC LIMIT {$n->start()}, 10", [$user['clan_id']]);

        if (empty($all)) 
        {
            errorNoExit('Пусто...');            
        } 
        while ($list = $sql -> fetch()) 
        {
            ?> 
            <div style="padding: 5px; border: 1px solid #111;"><span style="color: #808080;"> <?=dataTime($list['time'])?></span> <?=userLink($Filter->clearInt($list['user_id'])) . $Filter->output($list['text'])?></div>
            <?php
        }

        echo $n->navi();
    } 
    else 
    {
        error('Ошибка! Обратитесь к администратору', '/', 'На главную');                
    }

    break;

    case 'inviteUser':

    if (isset($_GET['userId']) && $User->clanAccess($user['id']) == 5) 
    {
        $userId = $Filter->clearInt($_GET['userId']);

        $profile = DB::$dbs->queryFetch("SELECT * FROM " . USERS . " WHERE `id` = ?", [$userId]);

        $clan = DB::$dbs->queryFetch("SELECT * FROM " . CLANS . " WHERE `id` = ?", [$user['clan_id']]);

        if (!$profile) 
        {
            error('Пользователя не существует', '/', 'На главную');
        } 

        if ($profile['clan_id'] != 0) 
        {
            error('Пользователь уже в клане', '/', 'На главную');            
        }

        if ($profile['clan_invite'] == 1) 
        {
            error('У этого пользователя уже есть приглашение', '/', 'На главную');            
        }

        if ($clan['users'] == $clan['max_users']) 
        {
            error('В клане нет мест', '/', 'На главную');  
        }

        DB::$dbs->query("UPDATE " . USERS . " SET `clan_invite` = ?, `clan_invite_id` = ? WHERE `id` = ?", [1, $user['clan_id'], $userId]);
        success('Приглашение отправлено', '/', 'На главную');        
    } 
    else 
    {
        error('Не получен ID пользователя и/или у вас не достаточно прав', '/', 'На главную');  
    }
    break;

    case 'liderPanel': 

    if ($user['clan_access'] != 5) 
    {
        errorNoExit('Управлять кланом может только лидер!');
    } 
    else 
    {
        $all = DB::$dbs->querySingle("SELECT COUNT(`id`) FROM " . USERS . " WHERE `clan_id` = ? ORDER BY `clan_access` DESC", [$user['clan_id']]);
        $n = new Navigator($all,5,'do=liderPanel');
        $sql = DB::$dbs->query("SELECT * FROM " . USERS . " WHERE `clan_id` = ? ORDER BY `clan_access` DESC LIMIT {$n->start()}, 5", [$user['clan_id']]);

        if (empty($all)) 
        {
            errorNoExit('Пусто...');
        } 
        else 
        {
            while ($profile = $sql -> fetch()) 
            {
                if ($profile['id'] != $user['id']) 
                {
                    ?> 
                    <div class="content">
                    <?=userLink($profile['id'], 'link-touch', $User->clanAccess($profile['id'], 'name') . '<span class="count">'. ico('clan-rating.png') . $profile['clan_rating'] .'</span>');?>
                    <a href="<?=HOME?>/modules/clan/index.php?do=liderPanel&amp;upAccess&amp;userId=<?=$Filter->clearInt($profile['id'])?>" class="link-touch"> Повысить</a>
                    <a href="<?=HOME?>/modules/clan/index.php?do=liderPanel&amp;downAccess&amp;userId=<?=$Filter->clearInt($profile['id'])?>" class="link-touch"> Понизить</a>
                    <a href="<?=HOME?>/modules/clan/index.php?do=liderPanel&amp;kickUser&amp;userId=<?=$Filter->clearInt($profile['id'])?>" class="link-touch"> Выгнать</a>
                    <a href="<?=HOME?>/modules/clan/index.php?do=liderPanel&amp;giveGold&amp;userId=<?=$Filter->clearInt($profile['id'])?>" class="link-touch"> Дать золота из казны</a>
                    </div>
                    <?php
                }
            }
            echo $n->navi();

            # Up access;
            if (isset($_GET['upAccess']) && $user['clan_access'] == 5) 
            {
                $userId = $Filter->clearInt($_GET['userId']);

                if (empty($userId)) 
                {
                    errorNoExit('Не получен id игрока');
                } 
                else 
                {
                    $profile = DB::$dbs->queryFetch("SELECT * FROM " . USERS . " WHERE `id` = ? and `clan_id` = ?", [$userId, $user['clan_id']]);

                    if (empty($profile)) 
                    {
                        errorNoExit('Пользователь не найден, или он не из этого клана');
                    } 
                    else 
                    {
                        if ($profile['id'] == $user['id']) 
                        {
                            errorNoExit('Нельзя повысить себя');
                        } 
                        else 
                        {
                            if ($profile['clan_access'] == 4) 
                            {
                                errorNoExit('Игрок уже повышен на максимальный уровень');
                            } 
                            else 
                            {
                                DB::$dbs->query("UPDATE ". USERS ." SET `clan_access` = ? WHERE `id` = ?", [($profile['clan_access'] + 1), $profile['id']]);
                                $User->addClanJournal(' повысил игрока ' . $User->userAnswer($profile['id'], 'login'));
                                $User->addUserJournal(userLink($user['id']) . ' повысил вас в клане', $profile['id']);
                                success('Вы успешно повысили игрока', '/modules/clan/index.php?do=liderPanel', 'Управление игроками');
                            }
                        }
                    }
                }
            } 

            # Down access; 
            if (isset($_GET['downAccess']) && $user['clan_access'] == 5) 
            {
                $userId = $Filter->clearInt($_GET['userId']);

                if (empty($userId)) 
                {
                    errorNoExit('Не получен id игрока');
                } 
                else 
                {
                    $profile = DB::$dbs->queryFetch("SELECT * FROM " . USERS . " WHERE `id` = ? and `clan_id` = ?", [$userId, $user['clan_id']]);

                    if (empty($profile)) 
                    {
                        errorNoExit('Пользователь не найден, или он не из этого клана');
                    } 
                    else 
                    {
                        if ($profile['id'] == $user['id']) 
                        {
                            errorNoExit('Нельзя понизить себя');
                        } 
                        else 
                        {
                            if ($profile['clan_access'] == 0) 
                            {
                                errorNoExit('Игрок уже понижен на максимальный уровень');
                            } 
                            else 
                            {
                                DB::$dbs->query("UPDATE ". USERS ." SET `clan_access` = ? WHERE `id` = ?", [($profile['clan_access'] - 1), $profile['id']]);
                                $User->addClanJournal(' понизил игрока ' . $User->userAnswer($profile['id'], 'login'));
                                $User->addUserJournal(userLink($user['id']) . ' понизил вас в клане', $profile['id']);
                                success('Вы успешно понизили игрока', '/modules/clan/index.php?do=liderPanel', 'Управление игроками');
                            }
                        }
                    }
                }
            } 

            # Kick user; 
            if (isset($_GET['kickUser']) && $user['clan_access'] == 5) 
            {
                $userId = $Filter->clearInt($_GET['userId']);

                if (empty($userId)) 
                {
                    errorNoExit('Не получен id игрока');
                } 
                else 
                {
                    $profile = DB::$dbs->queryFetch("SELECT * FROM " . USERS . " WHERE `id` = ? and `clan_id` = ?", [$userId, $user['clan_id']]);

                    if (empty($profile)) 
                    {
                        errorNoExit('Пользователь не найден, или он не из этого клана');
                    } 
                    else 
                    {
                        if ($profile['id'] == $user['id']) 
                        {
                            errorNoExit('Нельзя выгнать себя');
                        } 
                        else 
                        {
                            if (isset($_GET['true'])) 
                            {
                                $clan = DB::$dbs->queryFetch("SELECT * FROM ". CLANS ." WHERE `id` = ?", [$user['clan_id']]);

                                DB::$dbs->query("UPDATE ". CLANS ." SET `users` = ?, `rating` = ? WHERE `id` = ?", [($clan['users'] - 1), ($clan['rating'] - $user['clan_rating']), $clan['id']]);
                                DB::$dbs->query("UPDATE ". USERS ." SET `clan_id` = ?, `clan_rating` = ?, `clan_access` = ? WHERE `id` = ?", [0, 0, 0, $profile['id']]);
                                $User->addClanJournal(' выгнал игрока ' . $User->userAnswer($profile['id'], 'login'));
                                $User->addUserJournal(userLink($user['id']) . ' выгнал вас из клана', $profile['id']);
                                success('Вы выгнали игрока ' . userLink($profile['id']), '/modules/clan/index.php?do=liderPanel', 'Управление игроками');
                            } 
                            else 
                            {
                                ?> 
                                <div class="head">Подтвердите действие</div>
                                <div class="content">
                                Вы действительно хотите выгнать <?=userLink($profile['id'])?> из клана?
                                <a href="<?=HOME?>/modules/clan/index.php?do=liderPanel&amp;kickUser&amp;userId=<?=$Filter->clearInt($profile['id'])?>&amp;true" class="link-touch"> Да</a>
                                <a href="<?=HOME?>/modules/clan/index.php?do=liderPanel" class="link-touch"> Нет</a>
                                </div>
                                <?php
                            }
                        }
                    }
                }
            } 

            # Give gold;
            if (isset($_GET['giveGold']) && $user['clan_access'] == 5) 
            {
                $userId = $Filter->clearInt($_GET['userId']);

                if (empty($userId)) 
                {
                    errorNoExit('Не получен id игрока');
                } 
                else 
                {
                    $profile = DB::$dbs->queryFetch("SELECT * FROM " . USERS . " WHERE `id` = ? and `clan_id` = ?", [$userId, $user['clan_id']]);

                    if (empty($profile)) 
                    {
                        errorNoExit('Пользователь не найден, или он не из этого клана');
                    } 
                    else 
                    {
                        if ($profile['id'] == $user['id']) 
                        {
                            errorNoExit('Нельзя дать золота себя');
                        } 
                        else 
                        {
                            $clan = DB::$dbs->queryFetch("SELECT * FROM ". CLANS ." WHERE `id` = ?", [$user['clan_id']]);

                            if (empty($clan['money']) || $clan['money'] <= 500) 
                            {
                                errorNoExit('Нет золота в казне или золота меньше чем 500');
                            } 
                            else 
                            {
                                $allowGold = $profile['clan_rating'] / 2;
                                
                                if (isset($_POST['try']) && $user['clan_access'] == 5) 
                                {
                                    $data = $_POST;

                                    $data['money'] = $Filter->clearInt($data['money']);

                                    if ($data['money'] > $allowGold) 
                                    {
                                        errorNoExit('Нельзя дать столько золота');
                                    } 
                                    else if ($data['money'] > $clan['money']) 
                                    {
                                        errorNoEXit('В казне нет столько золота');
                                    } 
                                    else if (($clan['money'] - $data['money']) < 500) 
                                    {
                                        errorNoEXit('После перевода в казне должно остаться не меньше чем 500 золота');
                                    } 
                                    else 
                                    {
                                        DB::$dbs->query("UPDATE ". USERS ." SET `money` = ? WHERE `id` = ?", [($profile['money'] + $data['money']), $profile['id']]);
                                        DB::$dbs->query("UPDATE ". CLANS ." SET `money` = ? WHERE `id` = ?", [($clan['money'] - $data['money']), $clan['id']]);
                                        $User->addClanJournal(' дал '. $data['money'] .' золота из казны клана игроку ' . $User->userAnswer($profile['id'], 'login'));
                                        $User->addUserJournal(userLink($user['id']) . ' дал вам ' . ico('gold.png') . $data['money'] .' из казны клана.', $profile['id']);
                                        success('Вы успешно перевели '. ico('gold.png') . $data['money'] .' пользователю ' . userLink($profile['id']), '/modules/clan/index.php?do=liderPanel', 'Управление игроками');
                                    }
                                } 
                                ?> 

                                В казне: <?=ico('gold.png') . $Filter->clearInt($clan['money'])?><br/>
                                К переводу разрешено: <?=ico('gold.png') . $Filter->clearInt($allowGold)?><br/>
                                <?=ico('info.png')?> Количество перевода зависит от количества рейтинга игрока в клане.<br/>

                                <form action="" method="POST"> 
                                    <b>Количество золота:</b> <br/>
                                    <input type="text" name="money" placeholder="Введите количество..."><br/>
                                    <input type="submit" name="try" value="Перевести">
                                </form>
                                <?php
                            }
                        }
                    }
                }
            }
        }
    }
    break;

    case 'buildings': 
    ?>

    <div class="head"> 
        Клановы постройки
    </div>

    <?php
    $userClan = DB::$dbs->queryFetch("SELECT * FROM " . CLANS . " WHERE `id` = ?", [$user['clan_id']]);
    ?> 

    <div class="wrap"> 
        <a href="<?=HOME?>/modules/clan/index.php?do=buildings&amp;towerMagic">Башня магов - <?=$userClan['magic_lvl']?>ур.<br/>
    </div>

    <?php
    if (isset($_GET['towerMagic'])) 
    {
        $cost         = $userClan['magic_lvl'] * 1000;
        $percentBonus = $userClan['magic_lvl'] * 3;
        ?>

        <div class="head"> 
            Башня магов
        </div>
        <div class="wrap">
            + <?=$userClan['magic_lvl']?>% к криту.<br/>
            + <?=$percentBonus?>% к городскому бонусу.<br/>
        </div>

        <?php
        if ($userClan['magic_lvl'] == 10) 
        {
            ?>

            <div class="wrap">
                Башня магов уже максимального уровня
            </div>

            <?php
        } 
        else 
        {
            ?> 

            <div class="wrap">
              Уровень: <?=$userClan['magic_lvl']?>
            </div>

            <?php
            if ($user['clan_access'] == 5) 
            {
                ?> 

                <a href="<?=HOME?>/modules/clan/index.php?do=buildings&amp;towerMagic&amp;update" class="link-touch"> Улучшить за <?=ico('gold.png') . $cost?></a>

                <?php
                if (isset($_GET['update'])) 
                {
                    if ($userClan['money'] < $cost) 
                    {
                        error('Недостаточно золота в казне клана', '/modules/clan/index.php?do=buildings&amp;towerMagic');
                    } 
                    else if ($userClan['magic_lvl'] == 10) 
                    {
                        error('Башня магов уже максимального уровня', '/modules/clan/index.php?do=buildings&amp;towerMagic');
                    } 
                    else 
                    {
                        DB::$dbs->query("UPDATE ". CLANS ." SET `money` = ?, `magic_lvl` = ? WHERE `id` = ?", [($userClan['money'] - $cost), ($userClan['magic_lvl'] + 1), $userClan['id']]);
                        success('Башня магов успешно улучшена.', '/modules/clan/index.php?do=buildings&amp;towerMagic');
                    }
                }
            }
        }
    }
}

require_once '../../core/foot.php';