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 Budabot\Core\xml;
  6: use stdClass;
  7: use Budabot\Core\AOChatPacket;
  8: 
  9: /**
 10:  * Authors:
 11:  *  - Tyrence (RK2)
 12:  *
 13:  * @Instance
 14:  */
 15: class GuildManager {
 16:     /** @Inject */
 17:     public $chatBot;
 18:     
 19:     /** @Inject */
 20:     public $db;
 21:     
 22:     /** @Inject */
 23:     public $cacheManager;
 24:     
 25:     /** @Inject */
 26:     public $playerManager;
 27: 
 28:     public function getById($guild_id, $rk_num = 0, $forceUpdate = false) {
 29:         // if no server number is specified use the one on which the bot is logged in
 30:         if ($rk_num == 0) {
 31:             $rk_num = $this->chatBot->vars["dimension"];
 32:         }
 33:         
 34:         $name = ucfirst(strtolower($name));
 35:         $url = "http://people.anarchy-online.com/org/stats/d/$rk_num/name/$guild_id/basicstats.xml?data_type=json";
 36:         $groupName = "guild_roster";
 37:         $filename = "$guild_id.$rk_num.json";
 38:         if ($this->chatBot->vars["my_guild_id"] == $guild_id) {
 39:             $maxCacheAge = 21600;
 40:         } else {
 41:             $maxCacheAge = 86400;
 42:         }
 43:         $cb = function($data) {
 44:             $result = json_decode($data) != null;
 45:             return $result;
 46:         };
 47: 
 48:         $cacheResult = $this->cacheManager->lookup($url, $groupName, $filename, $cb, $maxCacheAge, $forceUpdate);
 49: 
 50:         // if there is still no valid data available give an error back
 51:         if ($cacheResult->success !== true) {
 52:             return null;
 53:         }
 54:         
 55:         list($orgInfo, $members, $lastUpdated) = json_decode($cacheResult->data);
 56:         
 57:         $guild = new stdClass;
 58:         $guild->guild_id = $guild_id;
 59: 
 60:         // parsing of the member data
 61:         $guild->orgname = $orgInfo->NAME;
 62:         $guild->orgside = $orgInfo->SIDE_NAME;
 63: 
 64:         // pre-fetch the charids...this speeds things up immensely
 65:         forEach ($members as $member) {
 66:             $name = $member->NAME;
 67:             if (!isset($this->chatBot->id[$name])) {
 68:                 $this->chatBot->send_packet(new AOChatPacket("out", AOCP_CLIENT_LOOKUP, $name));
 69:             }
 70:         }
 71: 
 72:         forEach ($members as $member) {
 73:             $name = $member->NAME;
 74:             $charid = $this->chatBot->get_uid($name);
 75:             if ($charid == null) {
 76:                 $charid = 0;
 77:             }
 78: 
 79:             $guild->members[$name]                 = new stdClass;
 80:             $guild->members[$name]->charid         = $charid;
 81:             $guild->members[$name]->firstname      = trim($member->FIRSTNAME);
 82:             $guild->members[$name]->name           = $name;
 83:             $guild->members[$name]->lastname       = trim($member->LASTNAME);
 84:             $guild->members[$name]->level          = $member->LEVELX;
 85:             $guild->members[$name]->breed          = $member->BREED;
 86:             $guild->members[$name]->gender         = $member->SEX;
 87:             $guild->members[$name]->faction        = $guild->orgside;
 88:             $guild->members[$name]->profession     = $member->PROF;
 89:             $guild->members[$name]->prof_title     = $member->PROF_TITLE;
 90:             $guild->members[$name]->ai_rank        = $member->DEFENDER_RANK_TITLE;
 91:             $guild->members[$name]->ai_level       = $member->ALIENLEVEL;
 92:             $guild->members[$name]->guild_id       = $guild->guild_id;
 93:             $guild->members[$name]->guild          = $guild->orgname;
 94:             $guild->members[$name]->guild_rank     = $member->RANK_TITLE;
 95:             $guild->members[$name]->guild_rank_id  = $member->RANK;
 96:             $guild->members[$name]->dimension      = $rk_num;
 97:             $guild->members[$name]->source         = 'org_roster';
 98:             
 99:             $guild->members[$name]->head_id        = $member->HEADID;
100:             $guild->members[$name]->pvp_rating     = $member->PVPRATING;
101:             $guild->members[$name]->pvp_title      = $member->PVPTITLE;
102:         }
103: 
104:         // this is done separately from the loop above to prevent nested transaction errors from occurring
105:         // when looking up charids for characters
106:         if ($cacheResult->usedCache === false) {
107:             $this->db->beginTransaction();
108: 
109:             $sql = "UPDATE players SET guild_id = 0, guild = '' WHERE guild_id = ? AND dimension = ?";
110:             $this->db->exec($sql, $guild->guild_id, $rk_num);
111: 
112:             forEach ($guild->members as $member) {
113:                 $this->playerManager->update($member);
114:             }
115: 
116:             $this->db->commit();
117:         }
118: 
119:         return $guild;
120:     }
121: }
122: 
Budabot 4 Docs API documentation generated by ApiGen