Overview

Namespaces

  • Budabot
    • Core
      • Modules
    • User
      • Modules
  • None
  • Tyrence
    • Modules

Classes

  • AccessLevel
  • Budabot\Core\AccessManager
  • Budabot\Core\AdminManager
  • Budabot\Core\AOChat
  • Budabot\Core\AOChatPacket
  • Budabot\Core\AOChatQueue
  • Budabot\Core\AOExtMsg
  • Budabot\Core\AsyncHttp
  • Budabot\Core\AutoInject
  • Budabot\Core\BotRunner
  • Budabot\Core\Budabot
  • Budabot\Core\BuddylistManager
  • Budabot\Core\CacheManager
  • Budabot\Core\CacheResult
  • Budabot\Core\ClassLoader
  • Budabot\Core\ColorSettingHandler
  • Budabot\Core\CommandAlias
  • Budabot\Core\CommandManager
  • Budabot\Core\ConfigFile
  • Budabot\Core\DB
  • Budabot\Core\DBRow
  • Budabot\Core\EventLoop
  • Budabot\Core\EventManager
  • Budabot\Core\GuildChannelCommandReply
  • Budabot\Core\GuildManager
  • Budabot\Core\HelpManager
  • Budabot\Core\Http
  • Budabot\Core\HttpRequest
  • Budabot\Core\LegacyLogger
  • Budabot\Core\LimitsController
  • Budabot\Core\LoggerWrapper
  • Budabot\Core\MMDBParser
  • Budabot\Core\Modules\AdminController
  • Budabot\Core\Modules\AliasController
  • Budabot\Core\Modules\AltInfo
  • Budabot\Core\Modules\AltsController
  • Budabot\Core\Modules\BanController
  • Budabot\Core\Modules\BuddylistController
  • Budabot\Core\Modules\ColorsController
  • Budabot\Core\Modules\CommandlistController
  • Budabot\Core\Modules\CommandSearchController
  • Budabot\Core\Modules\ConfigController
  • Budabot\Core\Modules\EventlistController
  • Budabot\Core\Modules\HelpController
  • Budabot\Core\Modules\LogsController
  • Budabot\Core\Modules\PlayerLookupController
  • Budabot\Core\Modules\ProfileCommandReply
  • Budabot\Core\Modules\ProfileController
  • Budabot\Core\Modules\SettingsController
  • Budabot\Core\Modules\SQLController
  • Budabot\Core\Modules\SystemController
  • Budabot\Core\Modules\UsageController
  • Budabot\Core\Modules\WhitelistController
  • Budabot\Core\NumberSettingHandler
  • Budabot\Core\OptionsSettingHandler
  • Budabot\Core\PlayerHistory
  • Budabot\Core\PlayerHistoryManager
  • Budabot\Core\PlayerManager
  • Budabot\Core\Preferences
  • Budabot\Core\PrivateChannelCommandReply
  • Budabot\Core\PrivateMessageCommandReply
  • Budabot\Core\Registry
  • Budabot\Core\SettingHandler
  • Budabot\Core\SettingManager
  • Budabot\Core\SettingObject
  • Budabot\Core\SocketManager
  • Budabot\Core\SocketNotifier
  • Budabot\Core\SubcommandManager
  • Budabot\Core\Text
  • Budabot\Core\TextSettingHandler
  • Budabot\Core\Timer
  • Budabot\Core\TimerEvent
  • Budabot\Core\TimeSettingHandler
  • Budabot\Core\Util
  • Budabot\Core\xml
  • Budabot\User\Modules\AlienArmorController
  • Budabot\User\Modules\AlienBioController
  • Budabot\User\Modules\AlienMiscController
  • Budabot\User\Modules\AOSpeakController
  • Budabot\User\Modules\AOUController
  • Budabot\User\Modules\AXPController
  • Budabot\User\Modules\BankController
  • Budabot\User\Modules\BosslootController
  • Budabot\User\Modules\BroadcastController
  • Budabot\User\Modules\BuffPerksController
  • Budabot\User\Modules\CacheController
  • Budabot\User\Modules\ChatAssistController
  • Budabot\User\Modules\ChatCheckController
  • Budabot\User\Modules\ChatLeaderController
  • Budabot\User\Modules\ChatRallyController
  • Budabot\User\Modules\ChatSayController
  • Budabot\User\Modules\ChatTopicController
  • Budabot\User\Modules\CityWaveController
  • Budabot\User\Modules\CloakController
  • Budabot\User\Modules\ClusterController
  • Budabot\User\Modules\CountdownController
  • Budabot\User\Modules\DevController
  • Budabot\User\Modules\DingController
  • Budabot\User\Modules\EventsController
  • Budabot\User\Modules\FightController
  • Budabot\User\Modules\FindOrgController
  • Budabot\User\Modules\FindPlayerController
  • Budabot\User\Modules\FunController
  • Budabot\User\Modules\GitController
  • Budabot\User\Modules\GuideController
  • Budabot\User\Modules\GuildController
  • Budabot\User\Modules\HelpbotController
  • Budabot\User\Modules\HtmlDecodeController
  • Budabot\User\Modules\ImplantController
  • Budabot\User\Modules\ImplantDesignerController
  • Budabot\User\Modules\InactiveMemberController
  • Budabot\User\Modules\ItemsController
  • Budabot\User\Modules\KillOnSightController
  • Budabot\User\Modules\LevelController
  • Budabot\User\Modules\LinksController
  • Budabot\User\Modules\LootListsController
  • Budabot\User\Modules\MdbController
  • Budabot\User\Modules\MessageInfoCommandReply
  • Budabot\User\Modules\MockCommandReply
  • Budabot\User\Modules\NanoController
  • Budabot\User\Modules\NewsController
  • Budabot\User\Modules\NotesController
  • Budabot\User\Modules\OnlineController
  • Budabot\User\Modules\OrgHistoryController
  • Budabot\User\Modules\OrglistController
  • Budabot\User\Modules\OrgMembersController
  • Budabot\User\Modules\OSController
  • Budabot\User\Modules\PlayerHistoryController
  • Budabot\User\Modules\PlayfieldController
  • Budabot\User\Modules\PocketbossController
  • Budabot\User\Modules\PremadeImplantController
  • Budabot\User\Modules\PrivateChannelController
  • Budabot\User\Modules\QuoteController
  • Budabot\User\Modules\RaffleController
  • Budabot\User\Modules\RaidController
  • Budabot\User\Modules\RandomController
  • Budabot\User\Modules\RecipeController
  • Budabot\User\Modules\RelayController
  • Budabot\User\Modules\ReputationController
  • Budabot\User\Modules\ResearchController
  • Budabot\User\Modules\RunAsController
  • Budabot\User\Modules\SendTellController
  • Budabot\User\Modules\ShoppingController
  • Budabot\User\Modules\SilenceController
  • Budabot\User\Modules\SkillsController
  • Budabot\User\Modules\SpiritsController
  • Budabot\User\Modules\StopwatchController
  • Budabot\User\Modules\Teamspeak3
  • Budabot\User\Modules\TeamspeakController
  • Budabot\User\Modules\TestController
  • Budabot\User\Modules\TimeController
  • Budabot\User\Modules\TimerController
  • Budabot\User\Modules\TimezoneController
  • Budabot\User\Modules\TowerController
  • Budabot\User\Modules\TrackerController
  • Budabot\User\Modules\TrickleController
  • Budabot\User\Modules\UnixtimeController
  • Budabot\User\Modules\VoteController
  • Budabot\User\Modules\WeatherController
  • Budabot\User\Modules\WhatBuffsController
  • Budabot\User\Modules\WhereisController
  • Budabot\User\Modules\WhoisController
  • Budabot\User\Modules\WhoisOrgController
  • Budabot\User\Modules\WhompahController
  • Command
  • DefaultStatus
  • DefineCommand
  • Description
  • Event
  • HandlesCommand
  • Help
  • Inject
  • Instance
  • Intoptions
  • Matches
  • Options
  • Setting
  • Setup
  • Type
  • Tyrence\Modules\DemoResponseCommandReply
  • Tyrence\Modules\SameChannelResponseController
  • Visibility

Interfaces

  • Budabot\Core\CommandReply

Exceptions

  • Budabot\Core\InvalidHttpRequest
  • Budabot\Core\SQLException
  • Budabot\Core\StopExecutionException

Functions

  • Budabot\Core\isWindows
  • Budabot\Core\Modules\read_input
  • Overview
  • Namespace
  • Class
  1: <?php
  2: 
  3: namespace Budabot\Core;
  4: 
  5: use stdClass;
  6: 
  7: /**
  8:  * Authors:
  9:  *  - Tyrence (RK2)
 10:  *
 11:  * @Instance
 12:  */
 13: class PlayerManager {
 14:     /** @Inject */
 15:     public $db;
 16:     
 17:     /** @Inject */
 18:     public $util;
 19:     
 20:     /** @Inject */
 21:     public $chatBot;
 22:     
 23:     /** @Inject */
 24:     public $http;
 25: 
 26:     public function getByName($name, $rk_num = 0, $forceUpdate = false) {
 27:         if ($rk_num == 0) {
 28:             $rk_num = $this->chatBot->vars['dimension'];
 29:         }
 30: 
 31:         $name = ucfirst(strtolower($name));
 32: 
 33:         $charid = '';
 34:         if ($rk_num == $this->chatBot->vars['dimension']) {
 35:             $charid = $this->chatBot->get_uid($name);
 36:             if ($charid == null) {
 37:                 return null;
 38:             }
 39:         }
 40: 
 41:         $player = $this->findInDb($name, $rk_num);
 42: 
 43:         if ($player === null || $forceUpdate) {
 44:             $player = $this->lookup($name, $rk_num);
 45:             if ($player !== null) {
 46:                 $player->charid = $charid;
 47:                 $this->update($player);
 48:             }
 49:         } else if ($player->last_update < (time() - 86400)) {
 50:             $player2 = $this->lookup($name, $rk_num);
 51:             if ($player2 !== null) {
 52:                 $player = $player2;
 53:                 $player->charid = $charid;
 54:                 $this->update($player);
 55:             } else {
 56:                 $player->source .= ' (old-cache)';
 57:             }
 58:         } else {
 59:             $player->source .= ' (current-cache)';
 60:         }
 61: 
 62:         return $player;
 63:     }
 64: 
 65:     public function findInDb($name, $rk_num) {
 66:         $sql = "SELECT * FROM players WHERE name LIKE ? AND dimension = ? LIMIT 1";
 67:         return $this->db->queryRow($sql, $name, $rk_num);
 68:     }
 69: 
 70:     public function lookup($name, $rk_num) {
 71:         $obj = $this->lookupUrl("http://people.anarchy-online.com/character/bio/d/$rk_num/name/$name/bio.xml?data_type=json");
 72:         if ($obj->name == $name) {
 73:             $obj->source = 'people.anarchy-online.com';
 74:             $obj->dimension = $rk_num;
 75:             return $obj;
 76:         }
 77: 
 78:         return null;
 79:     }
 80: 
 81:     private function lookupUrl($url) {
 82:         $response = $this->http->get($url)->waitAndReturnResponse();
 83:         list($char, $org, $lastUpdated) = json_decode($response->body);
 84: 
 85:         $obj = new stdClass;
 86: 
 87:         // parsing of the player data
 88:         $obj->firstname      = trim($char->FIRSTNAME);
 89:         $obj->name           = $char->NAME;
 90:         $obj->lastname       = trim($char->LASTNAME);
 91:         $obj->level          = $char->LEVELX;
 92:         $obj->breed          = $char->BREED;
 93:         $obj->gender         = $char->SEX;
 94:         $obj->faction        = $char->SIDE;
 95:         $obj->profession     = $char->PROF;
 96:         $obj->prof_title     = $char->PROFNAME;
 97:         $obj->ai_rank        = $char->RANK_name;
 98:         $obj->ai_level       = $char->ALIENLEVEL;
 99:         $obj->guild_id       = $org->ORG_INSTANCE;
100:         $obj->guild          = $org->NAME;
101:         $obj->guild_rank     = $org->RANK_TITLE;
102:         $obj->guild_rank_id  = $org->RANK;
103: 
104:         $obj->head_id        = $char->HEADID;
105:         $obj->pvp_rating     = $char->PVPRATING;
106:         $obj->pvp_title      = $char->PVPTITLE;
107: 
108:         //$obj->charid        = $char->CHAR_INSTANCE;
109:         $obj->dimension      = $char->CHAR_DIMENSION;
110: 
111:         forEach ($obj as $key => $value) {
112:             if (is_null($value)) {
113:                 $obj->$key = "";
114:             }
115:         }
116: 
117:         return $obj;
118:     }
119: 
120:     public function update($char) {
121:         $sql = "DELETE FROM players WHERE `name` = ? AND `dimension` = ?";
122:         $this->db->exec($sql, $char->name, $char->dimension);
123:         
124:         if (empty($char->guild_id)) {
125:             $char->guild_id = 0;
126:         }
127:         
128:         if ($char->guild_rank_id === '') {
129:             $char->guild_rank_id = -1;
130:         }
131: 
132:         $sql = "
133:             INSERT INTO players (
134:                 `charid`,
135:                 `firstname`,
136:                 `name`,
137:                 `lastname`,
138:                 `level`,
139:                 `breed`,
140:                 `gender`,
141:                 `faction`,
142:                 `profession`,
143:                 `prof_title`,
144:                 `ai_rank`,
145:                 `ai_level`,
146:                 `guild_id`,
147:                 `guild`,
148:                 `guild_rank`,
149:                 `guild_rank_id`,
150:                 `dimension`,
151:                 `head_id`,
152:                 `pvp_rating`,
153:                 `pvp_title`,
154:                 `source`,
155:                 `last_update`
156:             ) VALUES (
157:                 ?,
158:                 ?,
159:                 ?,
160:                 ?,
161:                 ?,
162:                 ?,
163:                 ?,
164:                 ?,
165:                 ?,
166:                 ?,
167:                 ?,
168:                 ?,
169:                 ?,
170:                 ?,
171:                 ?,
172:                 ?,
173:                 ?,
174:                 ?,
175:                 ?,
176:                 ?,
177:                 ?,
178:                 ?
179:             )";
180: 
181:         $this->db->exec($sql, $char->charid, $char->firstname, $char->name, $char->lastname, $char->level, $char->breed, $char->gender, $char->faction,
182:             $char->profession, $char->prof_title, $char->ai_rank, $char->ai_level, $char->guild_id, $char->guild, $char->guild_rank, $char->guild_rank_id,
183:             $char->dimension, $char->head_id, $char->pvp_rating, $char->pvp_title, $char->source, time());
184:     }
185: 
186:     public function getInfo($whois, $showFirstAndLastName = true) {
187:         $msg = '';
188: 
189:         if ($showFirstAndLastName && $whois->firstname) {
190:             $msg = $whois->firstname . " ";
191:         }
192: 
193:         $msg .= "<highlight>\"{$whois->name}\"<end> ";
194: 
195:         if ($showFirstAndLastName && $whois->lastname) {
196:             $msg .= $whois->lastname . " ";
197:         }
198: 
199:         $msg .= "(<highlight>{$whois->level}<end>/<green>{$whois->ai_level}<end>";
200:         $msg .= ", {$whois->gender} {$whois->breed} <highlight>{$whois->profession}<end>";
201:         $msg .= ", <" . strtolower($whois->faction) . ">$whois->faction<end>";
202: 
203:         if ($whois->guild) {
204:             $msg .= ", {$whois->guild_rank} of <highlight>{$whois->guild}<end>)";
205:         } else {
206:             $msg .= ", Not in a guild)";
207:         }
208: 
209:         return $msg;
210:     }
211:     
212:     public function searchForPlayers($search, $rkNum = null) {
213:         $searchTerms = explode(' ', $search);
214:         list($query, $params) = $this->util->generateQueryFromParams($searchTerms, 'name');
215: 
216:         if ($rkNum == null) {
217:             $sql = "SELECT * FROM players WHERE $query ORDER BY name ASC LIMIT 100";
218:             return $this->db->query($sql, $params);
219:         } else {
220:             $sql = "SELECT * FROM players WHERE $query AND dimension = ? ORDER BY name ASC LIMIT 100";
221:             $params []= $rkNum;
222: 
223:             return $this->db->query($sql, $params);
224:         }
225:     }
226: }
227: 
Budabot 4 Docs API documentation generated by ApiGen