/** * registers a bbDKP character * * @param \bbdkp\controller\guilds\Guilds $Guild * @return number */ public function register_bbdkp(\bbdkp\controller\guilds\Guilds $Guild) { global $user, $phpbb_root_path, $phpEx; // Include the member class if (!class_exists('\\bbdkp\\controller\\members\\Members')) { require "{$phpbb_root_path}includes/bbdkp/controller/members/Members.{$phpEx}"; } $newmember = new \bbdkp\controller\members\Members(); // check if user exceeded allowed character count, to prevent alt spamming if ($newmember->has_reached_maxbbdkpaccounts()) { return false; } $newmember->game_id = $this->game; // get member name $newmember->member_achiev = $this->achievementPoints; $newmember->member_region = $Guild->region; $newmember->member_realm = $this->realm; $newmember->member_name = $this->name; $newmember->member_title = ' '; $newmember->member_guild_id = $Guild->guildid; $newmember->member_rank_id = $this->guildrank; $newmember->member_level = $this->level; $newmember->member_race_id = $this->raceid; $newmember->member_class_id = $this->classid; $newmember->member_role = ''; $newmember->member_gender_id = $this->genderid; $newmember->member_comment = $user->lang['MEMBER_COMMENT']; $boardtime = getdate(time() + $user->timezone + $user->dst - date('Z')); $jointime = $boardtime[0]; $newmember->member_joindate = $jointime; $newmember->member_outdate = mktime(0, 0, 0, 12, 31, 2030); $newmember->member_achiev = $this->achievementPoints; $newmember->member_armory_url = $this->url; $newmember->phpbb_user_id = $user->data['user_id']; $newmember->member_status = 1; $newmember->Armory_getmember(); $member_id = $newmember->Makemember(); unset($newmember); return $member_id; }
/** * Add a new member * */ private function Addmember() { global $phpbb_admin_path, $phpEx, $user; $newmember = new \bbdkp\controller\members\Members(); $newmember->game_id = request_var('game_id', ''); $newmember->member_name = utf8_normalize_nfc(request_var('member_name', '', true)); $newmember->member_title = utf8_normalize_nfc(request_var('member_title', '', true)); $newmember->member_guild_id = request_var('member_guild_id', 0); $newmember->member_rank_id = request_var('member_rank_id', 99); $newmember->member_level = request_var('member_level', 1); $newmember->member_realm = request_var('realm', ''); $newmember->member_region = request_var('region_id', ''); if (!in_array($newmember->member_region, $newmember->regionlist)) { $newmember->member_region = ''; } $newmember->member_race_id = request_var('member_race_id', 1); $newmember->member_class_id = request_var('member_class_id', 1); $newmember->member_role = request_var('member_role', 0); $newmember->member_gender_id = isset($_POST['gender']) ? request_var('gender', '') : '0'; $newmember->member_comment = utf8_normalize_nfc(request_var('member_comment', '', true)); $newmember->member_joindate = mktime(0, 0, 0, request_var('member_joindate_mo', 0), request_var('member_joindate_d', 0), request_var('member_joindate_y', 0)); $newmember->member_outdate = 0; if (request_var('member_outdate_mo', 0) + request_var('member_outdate_d', 0) != 0) { $newmember->member_outdate = mktime(0, 0, 0, request_var('member_outdate_mo', 0), request_var('member_outdate_d', 0), request_var('member_outdate_y', 0)); } $newmember->member_achiev = 0; $newmember->member_armory_url = utf8_normalize_nfc(request_var('member_armorylink', '', true)); $newmember->phpbb_user_id = request_var('phpbb_user_id', 0); $newmember->member_status = request_var('activated', '') == 'on' ? 1 : 0; $newmember->Armory_getmember(); $newmember->Makemember(); if ($newmember->member_id > 0) { //record added. now update some stats meta_refresh(2, append_sid("{$phpbb_admin_path}index.{$phpEx}", "i=dkp_mm&mode=mm_listmembers&" . URI_GUILD . "=" . $newmember->member_guild_id)); $success_message = sprintf($user->lang['ADMIN_ADD_MEMBER_SUCCESS'], ucwords($newmember->member_name), date("F j, Y, g:i a")); $this->link = '<br /><a href="' . append_sid("{$phpbb_admin_path}index.{$phpEx}", "i=dkp_mm&mode=mm_listmembers&" . URI_GUILD . "=" . $newmember->member_guild_id) . '"><h3>' . $user->lang['RETURN_MEMBERLIST'] . '</h3></a>'; trigger_error($success_message . $this->link, E_USER_NOTICE); } else { meta_refresh(2, append_sid("{$phpbb_admin_path}index.{$phpEx}", "i=dkp_mm&mode=mm_listmembers&" . URI_GUILD . "=" . $newmember->member_guild_id)); $failure_message = sprintf($user->lang['ADMIN_ADD_MEMBER_FAIL'], ucwords($newmember->member_name)); trigger_error($failure_message . $this->link, E_USER_WARNING); } }
/** * main ucp function * @param int $id * @param string $mode */ function main($id, $mode) { global $db, $user, $auth, $template, $config, $phpbb_root_path, $phpEx; // Attach the language files $user->add_lang(array('mods/dkp_admin', 'mods/dkp_common', 'acp/common')); $guilds = new \bbdkp\controller\guilds\Guilds(); $guildlist = $guilds->guildlist(1); if (count($guildlist) == 0) { trigger_error('ERROR_NOGUILD', E_USER_WARNING); } $mode = $mode == '' ? 'characters' : $mode; // GET processing logic add_form_key('cocoa'); switch ($mode) { case 'characters': /*** * * ucp tab 1 * list of characters * */ $this->link = ''; $submit = isset($_POST['submit']) ? true : false; $member = new \bbdkp\controller\members\Members(); if ($submit) { if (!check_form_key('cocoa')) { trigger_error('FORM_INVALID'); } $member_id = (int) request_var('memberlist', 0); $member->member_id = $member_id; $member->Getmember(); $member->Claim_Member(); // Generate confirmation page. It will redirect back to the calling page meta_refresh(2, $this->u_action); $message = sprintf($user->lang['CHARACTERS_UPDATED'], $member->member_name) . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>'); unset($member); trigger_error($message); } $show_buttons = true; $s_guildmembers = ' '; //if user has no access to claiming chars, don't show the add button. if (!$auth->acl_get('u_dkpucp')) { $show_buttons = false; } if ($member->has_reached_maxbbdkpaccounts()) { $show_buttons = false; } //if there are no chars at all, do not show add button $sql = 'SELECT count(*) AS mcount FROM ' . MEMBER_LIST_TABLE . ' WHERE member_rank_id < 90 '; $result = $db->sql_query($sql, 0); $mcount = (int) $db->sql_fetchfield('mcount'); $show = true; if ($mcount == 0) { $show = false; } if ($show) { // list all characters bound to me $this->listmychars(); // build popup for adding new chars to my phpbb account, get only those that are not assigned yet. // note if someone picks a guildmember that does not belong to them then the guild admin can override this in acp $member->listallmembers($guilds->guildid, true); if (count($member->guildmemberlist) > 0) { foreach ($member->guildmemberlist as $id => $m) { $s_guildmembers .= '<option value="' . $m['member_id'] . '">' . $m['rank_name'] . ' ' . $m['member_name'] . '-' . $m['member_realm'] . '</option>'; } } else { $show_buttons = false; } } $db->sql_freeresult($result); unset($member); // These template variables are used on all the pages $template->assign_vars(array('S_DKPMEMBER_OPTIONS' => $s_guildmembers, 'S_SHOW' => $show, 'S_SHOW_BUTTONS' => $show_buttons, 'U_ACTION' => $this->u_action, 'LA_ALERT_AJAX' => $user->lang['ALERT_AJAX'], 'LA_ALERT_OLDBROWSER' => $user->lang['ALERT_OLDBROWSER'], 'UA_MEMBERLIST' => append_sid("{$phpbb_root_path}styles/" . rawurlencode($user->theme['template_path']) . '/template/dkp/findmemberlist.' . $phpEx))); $this->tpl_name = 'dkp/ucp_dkp'; $this->page_title = $user->lang['UCP_DKP_CHARACTERS']; break; case 'characteradd': /** * * ucp tab 2 * character add/edit * */ //get member_id if selected from pulldown $member_id = request_var('hidden_member_id', request_var(URI_NAMEID, 0)); $submit = isset($_POST['add']) ? true : false; $update = isset($_POST['update']) ? true : false; $delete = isset($_POST['delete']) ? true : false; if ($submit || $update || $delete) { if ($delete) { // check if user can delete character if (!$auth->acl_get('u_dkp_chardelete')) { trigger_error($user->lang['NOUCPDELCHARS']); } if (confirm_box(true)) { $deletemember = new \bbdkp\controller\members\Members(); $deletemember->member_id = request_var('del_member_id', 0); $deletemember->Getmember(); $deletemember->Deletemember(); $success_message = sprintf($user->lang['ADMIN_DELETE_MEMBERS_SUCCESS'], $deletemember->member_name); trigger_error($success_message); } else { $deletemember = new \bbdkp\controller\members\Members(); $deletemember->member_id = request_var('member_id', 0); $deletemember->Getmember(); $s_hidden_fields = build_hidden_fields(array('delete' => true, 'del_member_id' => $deletemember->member_id)); confirm_box(false, sprintf($user->lang['CONFIRM_DELETE_MEMBER'], $deletemember->member_name), $s_hidden_fields); } } if ($submit) { // add character if (!check_form_key('characteradd')) { trigger_error('FORM_INVALID'); } $newmember = new \bbdkp\controller\members\Members(); if ($newmember->has_reached_maxbbdkpaccounts()) { trigger_error(sprintf($user->lang['MAX_CHARS_EXCEEDED'], $config['bbdkp_maxchars']), E_USER_WARNING); } $newmember->game_id = request_var('game_id', ''); // get member name $newmember->member_region = request_var('region_id', ''); $newmember->member_name = utf8_normalize_nfc(request_var('member_name', '', true)); $newmember->member_class_id = request_var('member_class_id', 1); $newmember->member_race_id = request_var('member_race_id', 1); $newmember->member_role = request_var('member_role', ''); $newmember->member_region = request_var('region_id', ''); $newmember->member_gender_id = isset($_POST['gender']) ? request_var('gender', '') : '0'; $newmember->member_title = utf8_normalize_nfc(request_var('member_title', '', true)); $newmember->member_realm = utf8_normalize_nfc(request_var('realm', '', true)); $newmember->member_guild_id = request_var('member_guild_id', 0); $newmember->member_rank_id = request_var('member_rank_id', 99); $newmember->member_level = request_var('member_level', 1); $newmember->member_comment = utf8_normalize_nfc(request_var('member_comment', '', true)); $newmember->member_joindate = mktime(0, 0, 0, request_var('member_joindate_mo', 0), request_var('member_joindate_d', 0), request_var('member_joindate_y', 0)); $newmember->member_outdate = mktime(0, 0, 0, 12, 31, 2030); if (request_var('member_outdate_mo', 0) + request_var('member_outdate_d', 0) != 0) { $newmember->member_outdate = mktime(0, 0, 0, request_var('member_outdate_mo', 0), request_var('member_outdate_d', 0), request_var('member_outdate_y', 0)); } $newmember->member_achiev = request_var('member_achiev', 0); $newmember->member_armory_url = utf8_normalize_nfc(request_var('member_armorylink', '', true)); $newmember->phpbb_user_id = $user->data['user_id']; $newmember->member_status = request_var('activated', 0) > 0 ? 1 : 0; $newmember->Makemember(); if ($newmember->member_id > 0) { // record added. $newmember->member_comment = sprintf($user->lang['ADMIN_ADD_MEMBER_SUCCESS'], ucwords($newmember->member_name), date("F j, Y, g:i a")); $newmember->Armory_getmember(); $newmember->Updatemember($newmember); meta_refresh(1, $this->u_action . '&member_id=' . $newmember->member_id); $success_message = sprintf($user->lang['ADMIN_ADD_MEMBER_SUCCESS'], ucwords($newmember->member_name), date("F j, Y, g:i a")); trigger_error($success_message, E_USER_NOTICE); } else { meta_refresh(1, $this->u_action . '&member_id=' . $newmember->member_id); $failure_message = sprintf($user->lang['ADMIN_ADD_MEMBER_FAIL'], ucwords($newmember->member_name), $newmember->member_id); trigger_error($failure_message, E_USER_WARNING); } } if ($update) { //update if (!check_form_key('characteradd')) { trigger_error('FORM_INVALID'); } // check if user can update character if (!$auth->acl_get('u_dkp_charupdate')) { trigger_error($user->lang['NOUCPUPDCHARS']); } $updatemember = $this->UpdateMyCharacter($member_id); meta_refresh(1, $this->u_action . '&member_id=' . $updatemember->member_id); //$success_message = sprintf($user->lang['ADMIN_UPDATE_MEMBER_SUCCESS'], ucwords($updatemember->member_name)) . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>'); //trigger_error($success_message, E_USER_NOTICE); } } //template fill $this->fill_addmember($member_id, $guildlist); $template->assign_vars(array('LA_ALERT_AJAX' => $user->lang['ALERT_AJAX'], 'LA_ALERT_OLDBROWSER' => $user->lang['ALERT_OLDBROWSER'], 'LA_MSG_NAME_EMPTY' => $user->lang['FV_REQUIRED_NAME'], 'UA_FINDGAMERANK' => append_sid("{$phpbb_root_path}styles/" . rawurlencode($user->theme['template_path']) . '/template/dkp/findGameRank.' . $phpEx), 'UA_FINDCLASSRACE' => append_sid("{$phpbb_root_path}styles/" . rawurlencode($user->theme['template_path']) . '/template/dkp/findclassrace.' . $phpEx))); $this->tpl_name = 'dkp/ucp_dkp_charadd'; break; } }
/** * * adds new members to listmembers table, adds dkp */ private function handle_new_members() { global $db, $user, $config, $phpbb_root_path, $phpEx; $membersadded = 0; $attendee = new \bbdkp\controller\members\Members(0, $this->guildlist); foreach ($this->allplayerinfo as $playerid => $player) { $member_id = $attendee->get_member_id($player['playername'], 'wow', $player['realm']); if ($member_id != 0) { // existing bbdkp member $attendee->member_id = $member; $attendee->Getmember(); $this->allplayerinfo[$playerid]['member_id'] = $attendee->member_id; $this->allplayerinfo[$playerid]['rank_id'] = $attendee->member_rank_id; $this->allplayerinfo[$playerid]['guild_id'] = $attendee->member_guild_id; } else { // player in dkp string is unknown $attendee = new \bbdkp\controller\members\Members(0, $this->guildlist); $attendee->game_id = 'wow'; $attendee->member_name = $player['playername']; $attendee->member_realm = $player['realm'] == '' ? $config['bbdkp_default_region'] : $player['realm']; $attendee->member_region = $config['bbdkp_default_region']; $attendee->member_guild_id = $this->guild->guildid; $attendee->member_rank_id = $this->defaultrank_id; $attendee->member_level = $player['level']; if (!in_array($attendee->member_region, $attendee->regionlist)) { $attendee->member_region = ''; } $attendee->member_race_id = $player['race']; $attendee->member_class_id = $player['class']; $attendee->member_gender_id = $player['sex']; $attendee->member_comment = "Member inserted " . $user->format_date($this->time) . ' by RaidTracker'; // take two days ago from raid start (3600*24*-2 = -172800) $attendee->member_joindate = $this->raidbegin - 172800; $attendee->member_outdate = 0; $attendee->member_achiev = 0; if ($attendee->Armory_getmember() == -1) { //no armory response //do checks on guild name from dkp string $found = false; foreach ($this->guildlist as $guild) { // has dkpstringguild a match in guildlist ? if ($guild['name'] == $player['guild']) { $found = true; //is the form guild different from the dkpstring guild ? then override guild ! if ($this->guild->guildid != $guild['id']) { $attendee->member_guild_id = $guild['id']; $attendee->member_guild_name = $player['guild']; $attendee->member_rank_id = $guild['joinrank']; } break; } } if ($found == false) { // if dkpstring guild not in database then assign to noguild $attendee->member_guild_id = 0; $attendee->member_rank_id = 99; } } switch ($config['bbdkp_rt_noguild']) { case 0: //RT_NOGUILD_IGNORE // if we ignore no guild then skip this member if he's got no guild if ($attendee->member_guild_id != 0) { $this->allplayerinfo[$playerid]['member_id'] = $attendee->Makemember(); if ($this->allplayerinfo[$playerid]['member_id'] > 0) { $membersadded += 1; } } break; case 1: //RT_NOGUILD_ADDNONE $this->allplayerinfo[$playerid]['member_id'] = $attendee->Makemember(); if ($this->allplayerinfo[$playerid]['member_id'] > 0) { $membersadded += 1; } break; } } if ($attendee->member_id == 0) { //skipped $this->allplayerinfo[$playerid]['skipped'] = true; } else { $this->acceptedraiders += 1; $this->allplayerinfo[$playerid]['skipped'] = false; $Points = new \bbdkp\controller\points\Points($attendee->member_id, $this->dkp); // check if player has dkp record for pool if (!$Points->has_account($attendee->member_id, $this->dkp)) { $Points->member_id = $attendee->member_id; $Points->dkpid = $this->dkp; $Points->raid_value = 0.0; $Points->time_bonus = 0.0; $Points->zerosum_bonus = 0.0; $Points->earned_decay = 0.0; $Points->spent = 0.0; $Points->item_decay = 0.0; $Points->adjustment = 0.0; $Points->adj_decay = 0.0; $Points->firstraid = $this->raidbegin; $Points->lastraid = $this->raidbegin; $Points->raidcount = 1; $Points->status = 1; $Points->open_account(); unset($Points); //add starting adjustment that can never decay $newadjust = new \bbdkp\controller\adjustments\Adjust($this->dkp); $newadjust->member_id = $attendee->member_id; $newadjust->adjustment_dkpid = $this->dkp; $newadjust->adjustment_value = floatval($config['bbdkp_starting_dkp']); $newadjust->adjustment_reason = $user->lang['RT_STARTING_DKP']; $newadjust->can_decay = 0; $newadjust->adj_decay = 0; $newadjust->decay_time = 0; $newadjust->adjustment_date = $this->raidbegin; $newadjust->adjustment_groupkey = $this->gen_group_key($this->raidbegin, $newadjust->adjustment_reason, $newadjust->adjustment_value); $newadjust->adjustment_added_by = $user->data['username']; $newadjust->add(); unset($newadjust); } } } $a = "debug"; }