1: <?php
2:
3: namespace Budabot\User\Modules;
4:
5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
28:
29: class ChatLeaderController {
30:
31:
32: public $chatBot;
33:
34:
35: public $settingManager;
36:
37:
38: public $accessManager;
39:
40: 41: 42: 43: 44: 45: 46: 47:
48: public $defaultLeaderecho = '1';
49:
50: 51: 52: 53: 54: 55:
56: public $defaultLeaderechoColor = '<font color=#FFFF00>';
57:
58: 59: 60:
61: private $leader;
62:
63: 64: 65: 66: 67:
68: public function leaderCommand($message, $channel, $sender, $sendto, $args) {
69: if ($this->leader == $sender) {
70: unset($this->leader);
71: $this->chatBot->sendPrivate("Raid Leader cleared.");
72: } else {
73: $msg = $this->setLeader($sender, $sender);
74: if (!empty($msg)) {
75: $sendto->reply($msg);
76: }
77: }
78: }
79:
80: 81: 82: 83: 84:
85: public function leaderSetCommand($message, $channel, $sender, $sendto, $args) {
86: $msg = $this->setLeader($args[1], $sender);
87: if (!empty($msg)) {
88: $sendto->reply($msg);
89: }
90: }
91:
92: public function setLeader($name, $sender) {
93: $name = ucfirst(strtolower($name));
94: $uid = $this->chatBot->get_uid($name);
95: if (!$uid) {
96: $msg = "Character <highlight>{$name}<end> does not exist.";
97: } else if (!isset($this->chatBot->chatlist[$name])) {
98: $msg = "Character <highlight>{$name}<end> is not in the private channel.";
99: } else {
100: if (!isset($this->leader) || $sender == $this->leader || $this->accessManager->compareCharacterAccessLevels($sender, $this->leader) > 0) {
101: $this->leader = $name;
102: $this->chatBot->sendPrivate($this->getLeaderStatusText());
103: } else {
104: $msg = "You cannot take Raid Leader from <highlight>{$this->leader}<end>.";
105: }
106: }
107: return $msg;
108: }
109:
110: 111: 112: 113: 114:
115: public function leaderechoOnCommand($message, $channel, $sender, $sendto, $args) {
116: if ($this->checkLeaderAccess($sender)) {
117: $this->settingManager->save("leaderecho", "1");
118: $this->chatBot->sendPrivate("Leader echo has been " . $this->getEchoStatusText());
119: } else {
120: $sendto->reply("You must be Raid Leader to use this command.");
121: }
122: }
123:
124: 125: 126: 127: 128:
129: public function leaderechoOffCommand($message, $channel, $sender, $sendto, $args) {
130: if ($this->checkLeaderAccess($sender)) {
131: $this->settingManager->save("leaderecho", "0");
132: $this->chatBot->sendPrivate("Leader echo has been " . $this->getEchoStatusText());
133: } else {
134: $sendto->reply("You must be Raid Leader to use this command.");
135: }
136: }
137:
138: 139: 140: 141: 142:
143: public function leaderechoCommand($message, $channel, $sender, $sendto, $args) {
144: if ($this->checkLeaderAccess($sender)) {
145: $this->chatBot->sendPrivate("Leader echo is currently " . $this->getEchoStatusText());
146: } else {
147: $sendto->reply("You must be Raid Leader to use this command.");
148: }
149: }
150:
151: 152: 153: 154:
155: public function privEvent($eventObj) {
156: if ($this->settingManager->get("leaderecho") == 1 && $this->leader == $eventObj->sender && $eventObj->message[0] != $this->settingManager->get("symbol")) {
157: $msg = $this->settingManager->get("leaderecho_color") . $eventObj->message . "<end>";
158: $this->chatBot->sendPrivate($msg);
159: }
160: }
161:
162: 163: 164: 165:
166: public function leavePrivEvent($eventObj) {
167: if ($this->leader == $eventObj->sender) {
168: unset($this->leader);
169: $msg = "Raid Leader cleared.";
170: $this->chatBot->sendPrivate($msg);
171: }
172: }
173:
174: 175: 176:
177: private function getEchoStatusText() {
178: if ($this->settingManager->get("leaderecho") == 1) {
179: $status = "<green>Enabled<end>";
180: } else {
181: $status = "<red>Disabled<end>";
182: }
183: return $status;
184: }
185:
186: 187: 188:
189: private function getLeaderStatusText() {
190: $cmd = $this->settingManager->get("leaderecho") == 1? "off": "on";
191: $status = $this->getEchoStatusText();
192: $msg = "{$this->leader} is now Raid Leader. Leader echo is currently {$status}. You can change it with <symbol>leaderecho {$cmd}";
193: return $msg;
194: }
195:
196: public function getLeader() {
197: return $this->leader;
198: }
199:
200: public function checkLeaderAccess($sender) {
201: if (empty($this->leader)) {
202: return true;
203: } else if ($this->leader == $sender) {
204: return true;
205: } else if ($this->accessManager->checkAccess($sender, "moderator")) {
206: return true;
207: } else {
208: return false;
209: }
210: }
211: }
212: