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: /**
  6:  * @Instance
  7:  */
  8: class Text {
  9: 
 10:     /** @Inject */
 11:     public $chatBot;
 12:     
 13:     /** @Inject */
 14:     public $settingManager;
 15:     
 16:     /** @Logger */
 17:     public $logger;
 18: 
 19:     public function makeHeaderLinks($links) {
 20:         $output = '';
 21:         forEach ($links as $title => $command){
 22:             $output .= " ::: " . $this->makeChatcmd($title, $command, 'style="text-decoration:none;"') . " ::: ";
 23:         }
 24:         return $output;
 25:     }
 26: 
 27:     /**
 28:      * @name: makeBlob
 29:      * @description: creates an info window
 30:      */
 31:     public function makeBlob($name, $content, $header = null) {
 32:         if ($header === null) {
 33:             $header = $name;
 34:         }
 35: 
 36:         // trim extra whitespace from beginning and ending
 37:         $content = trim($content);
 38: 
 39:         // escape double quotes
 40:         $content = str_replace('"', '&quot;', $content);
 41:         $header = str_replace('"', '&quot;', $header);
 42: 
 43:         $content = $this->formatMessage($content);
 44: 
 45:         // if the content is blank, add a space so the blob will at least appear
 46:         if ($content == '') {
 47:             $content = ' ';
 48:         }
 49: 
 50:         $pages = $this->paginate($content, $this->settingManager->get("max_blob_size"), array("<pagebreak>", "\n", " "));
 51:         $num = count($pages);
 52: 
 53:         if ($num == 1) {
 54:             $page = $pages[0];
 55:             $headerMarkup = "<header>$header<end>\n\n";
 56:             $page = "<a href=\"text://".$this->settingManager->get("default_window_color").$headerMarkup.$page."\">$name</a>";
 57:             return $page;
 58:         } else {
 59:             $i = 1;
 60:             forEach ($pages as $key => $page) {
 61:                 $headerMarkup = "<header>$header (Page $i / $num)<end>\n\n";
 62:                 $page = "<a href=\"text://".$this->settingManager->get("default_window_color").$headerMarkup.$page."\">$name</a> (Page <highlight>$i / $num<end>)";
 63:                 $pages[$key] = $page;
 64:                 $i++;
 65:             }
 66:             return $pages;
 67:         }
 68:     }
 69: 
 70:     public function makeLegacyBlob($name, $content) {
 71:         // escape double quotes
 72:         $content = str_replace('"', '&quot;', $content);
 73: 
 74:         $content = $this->formatMessage($content);
 75: 
 76:         $pages = $this->paginate($content, $this->settingManager->get("max_blob_size"), array("<pagebreak>", "\n", " "));
 77:         $num = count($pages);
 78: 
 79:         if ($num == 1) {
 80:             $page = $pages[0];
 81:             $page = "<a href=\"text://".$this->settingManager->get("default_window_color").$page."\">$name</a>";
 82:             return $page;
 83:         } else {
 84:             $i = 1;
 85:             forEach ($pages as $key => $page) {
 86:                 if ($i > 1) {
 87:                     $header = "<header>$name (Page $i / $num)<end>\n\n";
 88:                 } else {
 89:                     $header = '';
 90:                 }
 91:                 $page = "<a href=\"text://".$this->settingManager->get("default_window_color").$header.$page."\">$name</a> (Page <highlight>$i / $num<end>)";
 92:                 $pages[$key] = $page;
 93:                 $i++;
 94:             }
 95:             return $pages;
 96:         }
 97:     }
 98: 
 99:     public function paginate($input, $maxLength, $symbols) {
100:         if (count($symbols) == 0) {
101:             $this->logger->log('ERROR', "Could not successfully page blob due to lack of paging symbols");
102:             return $input;
103:         }
104: 
105:         $pageSize = 0;
106:         $currentPage = '';
107:         $result = array();
108:         $symbol = array_shift($symbols);
109: 
110:         $lines = explode($symbol, $input);
111:         forEach ($lines as $line) {
112:             // retain new lines and spaces in output
113:             if ($symbol == "\n" || $symbol == " ") {
114:                 $line .= $symbol;
115:             }
116: 
117:             $lineLength = strlen($line);
118:             if ($lineLength > $maxLength) {
119:                 if ($pageSize != 0) {
120:                     $result []= $currentPage;
121:                     $currentPage = '';
122:                     $pageSize = 0;
123:                 }
124: 
125:                 $newResult = $this->paginate($line, $maxLength, $symbols);
126:                 $result = array_merge($result, $newResult);
127:             } else if ($pageSize + $lineLength < $maxLength) {
128:                 $currentPage .= $line;
129:                 $pageSize += $lineLength;
130:             } else {
131:                 $result []= $currentPage;
132:                 $currentPage = $line;
133:                 $pageSize = $lineLength;
134:             }
135:         }
136: 
137:         if ($pageSize > 0) {
138:             $result []= $currentPage;
139:         }
140: 
141:         return $result;
142:     }
143: 
144:     /**
145:      * @name: makeChatcmd
146:      * @description: creates a chatcmd link
147:      * @param: $name - the name the link will show
148:      * @param: $content - the chatcmd to execute
149:      * @param: $style (optional) - any styling you want applied to the link
150:      */
151:     public function makeChatcmd($name, $content, $style = null) {
152:         $content = str_replace("'", '&#39;', $content);
153:         return "<a $style href='chatcmd://$content'>$name</a>";
154:     }
155: 
156:     /**
157:      * @name: makeUserlink
158:      * @description: creates a user link which adds support for right clicking usernames in chat, providing you with a menu of options (ignore etc.) (see 18.1 AO patchnotes)
159:      * @param: $name - the name the user to create a link for
160:      * @param: $style (optional) - any styling you want applied to the link
161:      */
162:     public function makeUserlink($user, $style = null) {
163:         return "<a $style href='user://$user'>$user</a>";
164:     }
165: 
166:     /**
167:      * @name: makeItem
168:      * @description: creates an item link
169:      */
170:     public function makeItem($lowId, $highId, $ql, $name) {
171:         return "<a href='itemref://{$lowId}/{$highId}/{$ql}'>{$name}</a>";
172:     }
173: 
174:     /**
175:      * @name: makeImage
176:      * @description: creates an image.
177:      * @param $imageId id of the image
178:      * @param $db (optional) image database to use, by default uses rdb
179:      */
180:     public function makeImage($imageId, $db = "rdb") {
181:         return "<img src='{$db}://{$imageId}'>";
182:     }
183: 
184:     /**
185:      * @name: formatMessage
186:      * @description: formats a message with colors, bot name, symbol, etc
187:      */
188:     public function formatMessage($message) {
189:         $array = array(
190:             "<header>" => $this->settingManager->get('default_header_color'),
191:             "<header2>" => $this->settingManager->get('default_header2_color'),
192:             "<highlight>" => $this->settingManager->get('default_highlight_color'),
193:             "<black>" => "<font color='#000000'>",
194:             "<white>" => "<font color='#FFFFFF'>",
195:             "<yellow>" => "<font color='#FFFF00'>",
196:             "<blue>" => "<font color='#8CB5FF'>",
197:             "<green>" => "<font color='#00DE42'>",
198:             "<red>" => "<font color='#FF0000'>",
199:             "<orange>" => "<font color='#FCA712'>",
200:             "<grey>" => "<font color='#C3C3C3'>",
201:             "<cyan>" => "<font color='#00FFFF'>",
202:             "<violet>" => "<font color='#8F00FF'>",
203: 
204:             "<neutral>" => $this->settingManager->get('default_neut_color'),
205:             "<omni>" => $this->settingManager->get('default_omni_color'),
206:             "<clan>" => $this->settingManager->get('default_clan_color'),
207:             "<unknown>" => $this->settingManager->get('default_unknown_color'),
208: 
209:             "<myname>" => $this->chatBot->vars["name"],
210:             "<myguild>" => $this->chatBot->vars["my_guild"],
211:             "<tab>" => "    ",
212:             "<end>" => "</font>",
213:             "<symbol>" => $this->settingManager->get("symbol"),
214:             "<br>" => "\n");
215: 
216:         $message = str_ireplace(array_keys($array), array_values($array), $message);
217: 
218:         return $message;
219:     }
220: }
221: 
Budabot 4 Docs API documentation generated by ApiGen