예제 #1
0
 /**
  * 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;
 }
예제 #2
0
 /**
  * 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&amp;mode=mm_listmembers&amp;" . 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&amp;mode=mm_listmembers&amp;" . 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);
     }
 }
예제 #3
0
 /**
  * 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 . '&amp;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 . '&amp;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 . '&amp;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;
     }
 }
예제 #4
0
 /**
  *
  * 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";
 }