priv_mod module | > Module written by Manick | > Module Version Number: 2.2.0 +--------------------------------------------------------------------------- | > This program is free software; you can redistribute it and/or | > modify it under the terms of the GNU General Public License | > as published by the Free Software Foundation; either version 2 | > of the License, or (at your option) any later version. | > | > This program is distributed in the hope that it will be useful, | > but WITHOUT ANY WARRANTY; without even the implied warranty of | > MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | > GNU General Public License for more details. | > | > You should have received a copy of the GNU General Public License | > along with this program; if not, write to the Free Software | > Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +--------------------------------------------------------------------------- | Changes | =======------- | > If you wish to suggest or submit an update/change to the source | > code, email me at manick@manekian.com with the change, and I | > will look to adding it in as soon as I can. +--------------------------------------------------------------------------- */ class priv_mod extends module { public $title = "Privmsg Utils"; public $author = "Manick"; public $version = "2.1.1"; public $dontShow = true; private $ads; public function init() { $this->loadAds(); } public function destroy() { $this->destroyAds(); } private function loadAds() { $ads = new ini("./modules/default/ads.ini"); if ($ads->getError()) { return; } $sections = $ads->getSections(); foreach ($sections AS $ad) { $int = $ads->getIniVal($ad, "int"); $channel = $ads->getIniVal($ad, "chan"); $msg = $ads->getIniVal($ad, "msg"); $argArray = array('msg' => $msg, 'channel' => $channel); $this->timerClass->addTimer($ad, $this, "misc_adTimer", $argArray, $int); } $this->ads = $ads; } private function destroyAds() { $sections = $this->ads->getSections(); foreach ($sections AS $ad) { $this->timerClass->removeTimer($ad); } } // Misc Timer public function misc_adTimer($msg) { $ad = DARK . "[" . BRIGHT . "Request" . DARK . "] - [" . BRIGHT . $msg['msg'] . DARK . "] - PHP-IRC v" . VERSION; $raw = "PRIVMSG " . $msg['channel'] . " :" . $ad; $this->ircClass->sendRaw($raw); return true; } /* public Message/Channel Functions */ // This function is an example, it will display an add with timer public function priv_ad($line, $args) { $channel = irc::myStrToLower($line['to']); if ($channel == $this->ircClass->getNick()) { return; } if (!$this->ircClass->isMode($line['fromNick'], $channel, "o")) { return; } if ($args['nargs'] == 0) { $timerString = ""; $timers = $this->timerClass->getTimers(); foreach ($timers AS $timer) { if (substr($timer->name, 0, 2) == "ad") { if ($timer->args['channel'] == $channel) { $timerString .= $timer->name . " "; } } } if ($timerString == "") { $this->ircClass->notice($line['fromNick'], "No ads currently for " . $channel . "."); } else { $this->ircClass->notice($line['fromNick'], "Current ads for " . $channel .":"); $this->ircClass->notice($line['fromNick'], $timerString); } $this->ircClass->notice($line['fromNick'], "Type !ad to add an ad, or !ad to view an ad."); } else if ($args['nargs'] >= 1) { if (substr($args['arg1'], 0, 2) == "ad" && strlen($args['arg1']) > 2) { $id = $args['arg1']; $timers = $this->timerClass->getTimers(); foreach ($timers AS $timer) { if ($timer->name == $id) { break; } } if ($timer == null || $channel != $timer->args['channel']) { $this->ircClass->notice($line['fromNick'], "There is no ad by that id."); } else { if ($args['nargs'] >= 2) { if (irc::myStrToLower($args['arg2']) == "delete") { $this->ads->deleteSection($timer->name); $this->ads->writeIni(); $this->timerClass->removeTimer($timer->name); $this->ircClass->notice($line['fromNick'], "Ad successfully deleted."); } else { $this->ircClass->notice($line['fromNick'], "Invalid option. Valid options: delete"); } } else { $this->ircClass->notice($line['fromNick'], "Ad: " . $timer->name); $this->ircClass->notice($line['fromNick'], $timer->args['msg']); $this->ircClass->notice($line['fromNick'], "Use '!ad " . $timer->name . " delete' to delete this ad."); } } } else { if ($args['nargs'] == 1) { $this->ircClass->notice($line['fromNick'], "You must specify a message!"); } else { $int = intval($args['arg1']); if ($int <= 5) { $this->ircClass->notice($line['fromNick'], "Invalid Interval. Interval must be greater than 5 seconds."); } else { $ad = substr($args['query'], strlen($args['arg1']) + 1); $argArray = array('msg' => $ad, 'channel' => $channel); //Find next id $highest = 0; $timers = $this->timerClass->getTimers(); foreach ($timers AS $timer) { if (substr($timer->name, 0, 2) == "ad") { $id = intval(substr($timer->name, 2)); if ($id > $highest) { $highest = $id; } } } $highest++; $this->timerClass->addTimer('ad' . $highest, $this, "misc_adTimer", $argArray, $int, true); $this->ircClass->notice($line['fromNick'], "The ad was successfully added."); $this->ads->setIniVal('ad' . $highest, "int", $int); $this->ads->setIniVal('ad' . $highest, "chan", $channel); $this->ads->setIniVal('ad' . $highest, "msg", $ad); $this->ads->writeIni(); } } } } } public function priv_admin($line, $args) { if ($args['nargs'] < 2) { return; } if ($this->ircClass->getClientConf('dccadminpass') == "") { return; } if (md5($args['arg1']) != $this->ircClass->getClientConf('dccadminpass')) { return; } $query = substr($args['query'], strlen($args['arg1']) + 1); $myArgs = parser::createLine($query); switch ($args['arg2']) { case "chatme": $port = $this->dccClass->addChat($line['fromNick'], null, null, true, null); if ($port === false) { $this->ircClass->notice($line['fromNick'], "Error starting chat, please try again.", 1); } break; default: $chat = new chat_wrapper($line['fromNick'], $this->ircClass); $cmdList = $this->parserClass->getCmdList(); $cmdLower = $myArgs['cmd']; if (isset($cmdList['dcc'][$cmdLower])) { if ($myArgs['nargs'] < $cmdList['dcc'][$cmdLower]['numArgs']) { $chat->dccSend("Usage: " . $cmdLower . " " . $cmdList['dcc'][$cmdLower]['usage']); break; } $module = $cmdList['dcc'][$cmdLower]['module']; $class = $cmdList['file'][$module]['class']; $func = $cmdList['dcc'][$cmdLower]['function']; $class->$func($chat, $myArgs); $chat->dccSend("ADMIN " . irc::myStrToUpper($cmdLower) . " Requested"); } else { $chat->dccSend("Invalid Command: " . $myArgs['cmd']); } break; } } } ?>