Example #1
0
    /**
     * Main acp function
     * @param int $id
     * @param string $mode
     */
    public function main($id, $mode)
    {
        global $db, $user, $template;
        global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
        $this->PointsController = new \bbdkp\controller\points\PointsController();
        $this->link = '<br /><a href="' . append_sid("{$phpbb_admin_path}index.{$phpEx}", "i=dkp_mdkp&mode=mm_listmemberdkp") . '"><h3>' . $user->lang['RETURN_DKPINDEX'] . '</h3></a>';
        switch ($mode) {
            case 'mm_listmemberdkp':
                if (count($this->games) == 0) {
                    trigger_error($user->lang['ERROR_NOGAMES'], E_USER_WARNING);
                }
                $this->list_memberdkp();
                $this->page_title = 'ACP_DKP_LISTMEMBERDKP';
                if ($config['bbdkp_epgp'] == '1') {
                    $this->tpl_name = 'dkp/acp_mm_listmemberepgp';
                } else {
                    $this->tpl_name = 'dkp/acp_mm_listmemberdkp';
                }
                break;
            case 'mm_editmemberdkp':
                // invisible module
                $member_id = request_var(URI_NAMEID, 0);
                $dkp_id = request_var(URI_DKPSYS, 0);
                $update = isset($_POST['update']) ? true : false;
                if ($update) {
                    if (!check_form_key('mm_editmemberdkp')) {
                        trigger_error('FORM_INVALID');
                    }
                    $member_id = request_var('hidden_id', 0);
                    $dkp_id = request_var('hidden_dkpid', 0);
                    $this->PointsController->dkpsys_id = $dkp_id;
                    $this->PointsController->update_dkpaccount($member_id);
                }
                $delete = isset($_POST['delete']) ? true : false;
                if ($delete) {
                    if (confirm_box(true)) {
                        $this->PointsController->dkpsys_id = request_var('hidden_dkpid', 0);
                        $this->PointsController->delete_dkpaccount(request_var('hidden_id', 0));
                    } else {
                        // Include the member class
                        if (!class_exists('\\bbdkp\\controller\\members\\Members')) {
                            require "{$phpbb_root_path}includes/bbdkp/controller/members/Members.{$phpEx}";
                        }
                        $member = new \bbdkp\controller\members\Members(request_var('hidden_id', 0));
                        $s_hidden_fields = build_hidden_fields(array('delete' => true, 'hidden_id' => request_var('hidden_id', 0), 'hidden_dkpid' => request_var('hidden_dkpid', 0)));
                        confirm_box(false, sprintf($user->lang['CONFIRM_DELETE_MEMBERDKP'], $member->member_name), $s_hidden_fields);
                    }
                }
                /* template filling */
                // Get their correct earned
                $sql_array = array('SELECT' => 'sum(ra.raid_value) AS raid_value, sum(ra.time_bonus) AS time_bonus,
				    		sum(ra.zerosum_bonus) AS zerosum_bonus, sum(ra.raid_decay) AS raid_decay   ', 'FROM' => array(EVENTS_TABLE => 'e', RAIDS_TABLE => 'r', RAID_DETAIL_TABLE => 'ra'), 'WHERE' => ' ra.raid_id = r.raid_id
				    	and e.event_id = r.event_id
						and ra.member_id=' . $member_id . '
						and e.event_dkpid=' . (int) $dkp_id);
                $sql = $db->sql_build_query('SELECT', $sql_array);
                $result = $db->sql_query($sql);
                while ($row = $db->sql_fetchrow($result)) {
                    $correct_raid_value = $row['raid_value'];
                    $correct_time_bonus = $row['time_bonus'];
                    $correct_zerosum_bonus = $row['zerosum_bonus'];
                    $correct_raid_decay = $row['raid_decay'];
                }
                $db->sql_freeresult($sql);
                // Get their correct spent
                $sql_array = array('SELECT' => 'SUM(i.item_value) AS item_value,
							SUM(i.item_decay) AS item_decay  ', 'FROM' => array(EVENTS_TABLE => 'e', RAIDS_TABLE => 'r', RAID_ITEMS_TABLE => 'i'), 'WHERE' => 'e.event_id = r.event_id
	    				and r.raid_id = i.raid_id
						and i.member_id=' . $member_id . '
						and e.event_dkpid=' . (int) $dkp_id);
                $sql = $db->sql_build_query('SELECT', $sql_array);
                $result = $db->sql_query($sql);
                while ($row = $db->sql_fetchrow($result)) {
                    $correct_spent = $row['item_value'];
                    $correct_itemdecay = $row['item_decay'];
                }
                $db->sql_freeresult($sql);
                // get Actual dkp points from account
                $sql_array = array('SELECT' => '
				    	a.*,
						m.member_id,
						m.member_dkpid,
						m.member_raid_value,
						m.member_time_bonus,
						m.member_zerosum_bonus,
						m.member_earned,
						m.member_raid_decay,
						m.member_adjustment,
						(m.member_earned + m.member_adjustment - m.adj_decay) AS ep	,
						m.member_spent,
						m.member_item_decay,
						(m.member_spent - m.member_item_decay  + ' . max(0, $config['bbdkp_basegp']) . ' ) AS gp,
						(m.member_earned + m.member_adjustment - m.member_spent + m.member_item_decay - m.adj_decay ) AS member_current,
						case when (m.member_spent - m.member_item_decay + ' . max(0, $config['bbdkp_basegp']) . ' ) = 0 then 1
						else round( (m.member_earned + m.member_adjustment - m.adj_decay)
							/ ( ' . max(0, $config['bbdkp_basegp']) . ' + m.member_spent - m.member_item_decay),2) end as pr,
						m.adj_decay,
						m.member_lastraid,
						r1.name AS member_race,
						s.dkpsys_name,
						l.name AS member_class,
						r.rank_name,
						r.rank_prefix,
						r.rank_suffix,
						c.class_armor_type AS armor_type ,
						c.colorcode,
						c.imagename ', 'FROM' => array(MEMBER_LIST_TABLE => 'a', MEMBER_DKP_TABLE => 'm', MEMBER_RANKS_TABLE => 'r', CLASS_TABLE => 'c', BB_LANGUAGE => 'l', DKPSYS_TABLE => 's'), 'LEFT_JOIN' => array(array('FROM' => array(BB_LANGUAGE => 'r1'), 'ON' => "r1.attribute_id = a.member_race_id\n\t\t\t\t\t\t\t\tAND r1.language= '" . $config['bbdkp_lang'] . "'\n\t\t\t\t\t\t\t\tAND r1.attribute = 'race'\n\t\t\t\t\t\t\t\tAND r1.game_id = a.game_id")), 'WHERE' => " a.member_rank_id = r.rank_id\n\t\t\t    \t\t\t\tAND a.member_guild_id = r.guild_id\n\t\t\t\t\t\t\t\tAND a.member_id = m.member_id\n\t\t\t\t\t\t\t\tAND a.game_id = c.game_id\n\t\t\t\t\t\t\t\tAND a.member_class_id = c.class_id\n\t\t\t\t\t\t\t\tAND m.member_dkpid = s.dkpsys_id\n\t\t\t\t\t\t\t\tAND l.game_id = c.game_id and l.attribute_id = c.class_id AND l.language= '" . $config['bbdkp_lang'] . "' AND l.attribute = 'class'\n\t\t\t\t\t\t\t\tAND s.dkpsys_id = " . $dkp_id . '
							    AND a.member_id = ' . $member_id);
                $sql = $db->sql_build_query('SELECT', $sql_array);
                $result = $db->sql_query($sql);
                $row = $db->sql_fetchrow($result);
                // make object
                $this->member = array('member_id' => $row['member_id'], 'member_dkpid' => $row['member_dkpid'], 'member_dkpname' => $row['dkpsys_name'], 'member_name' => $row['member_name'], 'member_raid_value' => $row['member_raid_value'], 'member_time_bonus' => $row['member_time_bonus'], 'member_zerosum_bonus' => $row['member_zerosum_bonus'], 'member_earned' => $row['member_earned'], 'member_raid_decay' => $row['member_raid_decay'], 'member_adjustment' => $row['member_adjustment'], 'ep' => $row['ep'], 'member_spent' => $row['member_spent'], 'member_item_decay' => $row['member_item_decay'], 'gp' => $row['gp'], 'pr' => $row['pr'], 'adj_decay' => $row['adj_decay'], 'member_current' => $row['member_current'], 'member_race_id' => $row['member_race_id'], 'member_race' => $row['member_race'], 'member_class_id' => $row['member_class_id'], 'member_class' => $row['member_class'], 'member_level' => $row['member_level'], 'member_rank_id' => $row['member_rank_id'], 'member_rank' => $row['rank_name'], 'imagename' => $row['imagename'], 'colorcode' => $row['colorcode']);
                $db->sql_freeresult($result);
                /******************/
                $form_key = 'mm_editmemberdkp';
                add_form_key($form_key);
                $template->assign_vars(array('L_TITLE' => $user->lang['ACP_DKP_EDITMEMBERDKP'], 'L_EXPLAIN' => $user->lang['ACP_MM_EDITMEMBERDKP_EXPLAIN'], 'F_EDIT_MEMBER' => append_sid("{$phpbb_admin_path}index.{$phpEx}", "i=dkp_mdkp&amp;mode=mm_editmemberdkp&amp;"), 'MEMBER_NAME' => $this->member['member_name'], 'V_MEMBER_ID' => isset($_POST['add']) ? '' : $this->member['member_id'], 'V_MEMBER_DKPID' => isset($_POST['add']) ? '' : $this->member['member_dkpid'], 'MEMBER_ID' => $this->member['member_id'], 'RAIDVAL' => $this->member['member_raid_value'], 'TIMEBONUS' => $this->member['member_time_bonus'], 'ZEROSUM' => $this->member['member_zerosum_bonus'], 'EARNED' => $this->member['member_earned'], 'RAIDDECAY' => $this->member['member_raid_decay'], 'ADJUSTMENT' => $this->member['member_adjustment'], 'RAIDDECAY' => $this->member['member_raid_decay'], 'ADJDECAY' => $this->member['adj_decay'], 'EP' => $this->member['ep'], 'SPENT' => $this->member['member_spent'], 'BGP' => $config['bbdkp_basegp'], 'ITEMDECAY' => $this->member['member_item_decay'], 'GP' => $this->member['gp'], 'PR' => $this->member['pr'], 'MEMBER_EARNED' => $this->member['member_earned'], 'MEMBER_SPENT' => $this->member['member_spent'], 'MEMBER_ADJUSTMENT' => $this->member['member_adjustment'], 'MEMBER_CURRENT' => !empty($this->member['member_current']) ? $this->member['member_current'] : '0.00', 'MEMBER_LEVEL' => $this->member['member_level'], 'MEMBER_DKPID' => $this->member['member_dkpid'], 'MEMBER_DKPNAME' => $this->member['member_dkpname'], 'MEMBER_RACE' => $this->member['member_race'], 'MEMBER_CLASS' => $this->member['member_class'], 'COLORCODE' => $this->member['colorcode'], 'IMAGENAME' => strlen($this->member['imagename']) > 1 ? $phpbb_root_path . "images/bbdkp/class_images/" . $this->member['imagename'] . ".png" : '', 'MEMBER_RANK' => $this->member['member_rank'], 'CORRECT_RAIDVAL' => !empty($correct_raid_value) ? $correct_raid_value : '0.00', 'CORRECT_TIMEBONUS' => !empty($correct_time_bonus) ? $correct_time_bonus : '0.00', 'CORRECT_ZEROSUM' => !empty($correct_zerosum_bonus) ? $correct_zerosum_bonus : '0.00', 'CORRECT_RAIDDECAY' => !empty($correct_raid_decay) ? $correct_raid_decay : '0.00', 'CORRECT_MEMBER_SPENT' => !empty($correct_spent) ? $correct_spent : '0.00', 'CORRECT_ITEMDECAY' => !empty($correct_itemdecay) ? $correct_itemdecay : '0.00', 'CORRECT_EARNED' => $correct_raid_value + $correct_time_bonus + $correct_zerosum_bonus - $correct_raid_decay, 'S_SHOWZS' => $config['bbdkp_zerosum'] == '1' ? true : false, 'S_SHOWDECAY' => $config['bbdkp_decay'] == '1' ? true : false, 'S_SHOWEPGP' => $config['bbdkp_epgp'] == '1' ? true : false, 'S_SHOWTIME' => $config['bbdkp_timebased'] == '1' ? true : false));
                $this->page_title = 'ACP_DKP_EDITMEMBERDKP';
                $this->tpl_name = 'dkp/acp_' . $mode;
                break;
                /***************************************/
                // member dkp transfer
                // this transfers dkp account from one member account to another member account.
                // the old member account will still exist
                /***************************************/
            /***************************************/
            // member dkp transfer
            // this transfers dkp account from one member account to another member account.
            // the old member account will still exist
            /***************************************/
            case 'mm_transfer':
                if (count($this->games) == 0) {
                    trigger_error($user->lang['ERROR_NOGAMES'], E_USER_WARNING);
                }
                // guild dropdown
                $submit = isset($_POST['member_guild_id']) ? true : false;
                $Guild = new \bbdkp\controller\guilds\Guilds();
                $guildlist = $Guild->guildlist(1);
                if ($submit) {
                    $Guild->guildid = request_var('member_guild_id', 0);
                } else {
                    foreach ($guildlist as $g) {
                        $Guild->guildid = $g['id'];
                        $Guild->name = $g['name'];
                        if ($Guild->guildid == 0 && $Guild->name == 'Guildless') {
                            trigger_error('ERROR_NOGUILD', E_USER_WARNING);
                        }
                        break;
                    }
                }
                foreach ($guildlist as $g) {
                    $template->assign_block_vars('guild_row', array('VALUE' => $g['id'], 'SELECTED' => $g['id'] == $Guild->guildid ? ' selected="selected"' : '', 'OPTION' => !empty($g['name']) ? $g['name'] : '(None)'));
                }
                $this->PointsController->guild_id = $Guild->guildid;
                $submitdkp = isset($_POST['dkpsys_id']) || isset($_GET['dkpsys_id']) ? true : false;
                /***  DKPSYS drop-down query ***/
                $sql = 'SELECT dkpsys_id, dkpsys_name , dkpsys_default
		                FROM ' . DKPSYS_TABLE . "\n\t\t                WHERE dkpsys_status = 'Y'\n\t\t                GROUP BY dkpsys_id, dkpsys_name , dkpsys_default  ";
                $result = $db->sql_query($sql);
                $dkpsys_id = 0;
                if ($submitdkp) {
                    $dkpsys_id = request_var('dkpsys_id', 0);
                } else {
                    while ($row = $db->sql_fetchrow($result)) {
                        if ($row['dkpsys_default'] == "Y") {
                            $dkpsys_id = $row['dkpsys_id'];
                        }
                    }
                    if ($dkpsys_id == 0) {
                        $result = $db->sql_query_limit($sql, 1);
                        while ($row = $db->sql_fetchrow($result)) {
                            $dkpsys_id = $row['dkpsys_id'];
                        }
                    }
                }
                $result = $db->sql_query($sql);
                while ($row = $db->sql_fetchrow($result)) {
                    $template->assign_block_vars('dkpsys_row', array('VALUE' => $row['dkpsys_id'], 'SELECTED' => $row['dkpsys_id'] == $dkpsys_id ? ' selected="selected"' : '', 'OPTION' => !empty($row['dkpsys_name']) ? $row['dkpsys_name'] : '(None)'));
                    $dkpsys_name[$row['dkpsys_id']] = $row['dkpsys_name'];
                }
                $db->sql_freeresult($result);
                /***  end drop-down query ***/
                // build template
                $submit = isset($_POST['transfer']) ? true : false;
                if ($submit && $submitdkp == false) {
                    $this->transfer_dkp($dkpsys_id);
                }
                // from member dkp table
                $member_from = request_var('transfer_from', 0);
                $member_to = request_var('transfer_to', 0);
                $sql = 'SELECT m.member_id, l.member_name FROM ' . MEMBER_LIST_TABLE . ' l, ' . MEMBER_DKP_TABLE . ' m, ' . MEMBER_RANKS_TABLE . ' k
						WHERE l.member_rank_id = k.rank_id
						AND k.rank_hide != 1
						AND l.member_guild_id = k.guild_id
						AND l.member_guild_id = ' . $Guild->guildid . '
						AND m.member_id = l.member_id
						AND m.member_dkpid = ' . $dkpsys_id . '
						ORDER BY l.member_name';
                $resultfrom = $db->sql_query($sql);
                // © ippehe //
                $total = 0;
                while ($row = $db->sql_fetchrow($resultfrom)) {
                    $total++;
                    $template->assign_block_vars('transfer_from_row', array('VALUE' => $row['member_id'], 'SELECTED' => $member_from == $row['member_id'] ? ' selected="selected"' : '', 'OPTION' => $row['member_name']));
                }
                $db->sql_freeresult($resultfrom);
                // to member table
                $sql = 'SELECT m.member_id, l.member_name FROM ' . MEMBER_LIST_TABLE . ' l, ' . MEMBER_DKP_TABLE . ' m, ' . MEMBER_RANKS_TABLE . ' k
						WHERE l.member_rank_id = k.rank_id
						AND k.rank_hide != 1
						AND l.member_guild_id = k.guild_id
						AND l.member_guild_id = ' . $Guild->guildid . '
						AND m.member_id = l.member_id
						AND m.member_dkpid = ' . $dkpsys_id . '
						ORDER BY l.member_name';
                $resultto = $db->sql_query($sql);
                $teller_to = 0;
                while ($row = $db->sql_fetchrow($resultto)) {
                    $teller_to++;
                    $template->assign_block_vars('transfer_to_row', array('VALUE' => $row['member_id'], 'SELECTED' => $member_to == $row['member_id'] ? ' selected="selected"' : '', 'OPTION' => $row['member_name']));
                }
                $db->sql_freeresult($resultto);
                $show = true;
                if ($total == 0) {
                    $show = false;
                }
                $template->assign_vars(array('L_TITLE' => $user->lang['ACP_MM_TRANSFER'], 'ERROR_MSG' => $user->lang['ERROR_NODKPACCOUNT'], 'L_EXPLAIN' => $user->lang['TRANSFER_MEMBER_HISTORY_DESCRIPTION'], 'S_SHOW' => $show, 'F_TRANSFER' => append_sid("{$phpbb_admin_path}index.{$phpEx}", "i=dkp_mdkp&amp;mode=mm_transfer"), 'F_DKP' => append_sid("{$phpbb_admin_path}index.{$phpEx}", "i=dkp_mdkp&amp;mode=mm_transfer&ampi=setdkp"), 'L_SELECT_1_OF_X_MEMBERS' => sprintf($user->lang['SELECT_1OFX_MEMBERS'], $total), 'L_SELECT_1_OF_Y_MEMBERS' => sprintf($user->lang['SELECT_1OFX_MEMBERS'], $teller_to)));
                $this->page_title = 'ACP_MM_TRANSFER';
                $this->tpl_name = 'dkp/acp_' . $mode;
                break;
            default:
                $this->page_title = 'ACP_DKP_MAINPAGE';
                $this->tpl_name = 'dkp/acp_mainpage';
                $success_message = 'Error';
                trigger_error($success_message . $this->link);
        }
    }