public function __toString() { $uid = $this->user ? $this->user->getID() : '?'; $cid = $this->channel ? $this->channel->getID() : '?'; $sid = $this->server ? $this->server->getID() : '?'; return sprintf('SCOPE(U:%s,C:%s,S:%s)', $uid, $cid, $sid); }
private function onAdd(Dog_User $user, $url) { if (false !== ($link = Dog_Link::getByURL($url))) { return true; } if (false === ($description = $this->getDescription($url))) { Dog_Log::error('Mod_Link::onAdd() failed. URL: ' . $url); return false; } $type = $description[0]; $description = $description[1]; switch ($type) { case 'image': if (false === ($link = Dog_Link::insertImage($user->getID(), $url, $description))) { GWF_HTML::err('ERR_DATABASE', array(__FILE__, __LINE__)); return; } break; case 'html': if (false === ($link = Dog_Link::insertLink($user->getID(), $url, $description))) { GWF_HTML::err('ERR_DATABASE', array(__FILE__, __LINE__)); return; } break; default: echo "UNKNOWN TYPE: {$type}\n"; return; } Dog_Log::user($user, sprintf('Inserted Link %s (ID:%d)', $url, $link->getID())); }
private static function onBan(Dog_Server $server, Dog_Channel $channel, Dog_User $user, $message) { $uid = $user->getID(); $cut = time() - DOGMOD_PG::BAN_TIMEOUT; $count = self::table(__CLASS__)->countRows("lpg_uid={$uid} AND lpg_time>{$cut}"); if ($count < DOGMOD_PG::BAN_COUNT) { return; } echo "!!! BAN HIM NOW !!!\n"; }
/** * Grant a user all privileges on a server. * @param int $sid * @param int $uid */ public static function grantAllToAll(Dog_Server $server, Dog_User $user, $bits = NULL) { $uid = $user->getID(); $all = $bits === NULL ? Dog_IRCPriv::allBits() : intval($bits); foreach (GDO::table('Dog_Channel')->selectColumn('chan_id', "chan_sid={$server->getID()}") as $cid) { if (false === self::table(__CLASS__)->insertAssoc(array('priv_cid' => $cid, 'priv_uid' => $uid, 'priv_privs' => $all))) { return false; } $user->setVar("dcp_{$cid}", $all); } return true; }
private function onPG(Dog_Server $server, Dog_User $user, $from, $origin, $message) { if ($user->isBot()) { return; } if (false === ($channel = $server->getChannel($origin))) { // echo "Unknown channel: $origin\n"; return; } if (self::CAPS_LOCK === true) { $this->onCapslockFlood($server, $channel, $user, $message); } if (self::HIGHLIGHT === true) { $this->onHighlightFlood($server, $channel, $user, $message); } }
private function getUsername($id) { if (false === ($user = Dog_User::getByID($id))) { return "(Unknown:{$id})"; } return $user->getName(); }
public function onSend(Dog_Server $server, Dog_User $user, $message) { // $c = Dog::getTrigger(); if (false === ($nickname = Common::substrUntil($message, ' ', false))) { return $this->lang('help_send'); } $message = Common::substrFrom($message, ' '); if (false === ($user_to = Dog_User::getForServer($server->getID(), $nickname))) { return Dog::lang('err_user'); } if (false === Dog_Note::isWithinLimits($user->getID())) { return $this->lang('err_limit', array(Dog_Note::LIMIT_AMT, GWF_Time::humanDuration(Dog_Note::LIMIT_TIME))); } if (false !== ($channel = Dog::getChannel())) { if (false !== $channel->getUserByName($nickname)) { return $this->lang('err_in_chan', array($nickname)); } } if (false === Dog_Note::insertNote($user, $user_to, $message)) { return GWF_HTML::lang('ERR_DATABASE', array(__FILE__, __LINE__)); } return $this->lang('msg_sent', array($nickname)); }
/** * We got triggered by !seen. */ public function on_seen_Pb() { $argv = $this->argv(); $argc = count($argv); if ($argc === 1) { if (!preg_match('/^[a-z0-9_!]+$/iD', $argv[0])) { return Dog::rply('err_user'); } if (false === ($server = Dog::getServerBySuffix($argv[0]))) { return Dog::rply('err_server'); } if (false === ($user = Dog_User::getByLongName($argv[0]))) { return Dog::rply('err_user'); } if (false === ($seen = Dog_Seen::getSeen($user))) { return $this->rply('never', array($user->displayName())); } $channel = $seen->getChannel(); $channam = $channel === false ? '!NOCHAN!' : $channel->displayName(); $this->rply($seen->getEvent(), array($user->displayName(), $server->displayName(), $channam, $seen->displayDate(), $seen->displayAge(), $seen->getMessage())); } else { $this->showHelp('seen'); } }
public static function onQuit(Dog_Server $server, Dog_User $user, $message) { if (false === ($player = self::getPlayerByUID($user->getID()))) { // printf('Can not get Player for user '.$user->getName().".\n"); return; } $p = $player->getParty(); # %s just quit his irc server. $p->ntice('5000', array($player->displayNameNB()), $player); }
public static function record(Dog_User $user, $channel, $event, $message) { return self::table(__CLASS__)->insertAssoc(array('dogseen_uid' => $user->getID(), 'dogseen_cid' => $channel === false ? '0' : $channel->getID(), 'dogseen_event' => $event, 'dogseen_time' => GWF_Time::getDate(), 'dogseen_message' => $message)); }
public function addUser(Dog_User $user) { $this->users[$user->getID()] = $user; }
public static function getPlayer(Dog_User $user) { if (false === ($player = self::getByUID($user->getID()))) { $player = self::createHuman($user); } return $player; }
private function onPrivmsgB(Dog_Server $server, Dog_User $user, $link, $origin, $message) { echo __METHOD__ . "({$link})"; $targets = explode(',', $link); $spam = false; foreach ($targets as $i => $target) { list($sid, $chan) = explode(':', $target); $sid2 = $server->getID(); if ($origin === $chan && $sid == $sid2) { unset($targets[$i]); $spam = true; } } if (!$spam) { return; } $b = chr(2); $lamb = Lamb::instance(); foreach ($targets as $target) { list($sid, $chan) = explode(':', $target); if (false === ($s = $lamb->getServer($sid))) { echo "Can not spam server {$sid}.\n"; continue; } if (false === ($c = $s->getChannel($chan))) { echo "Can not spam server {$sid} channel {$chan}.\n"; continue; } $s->sendPRIVMSG($chan, sprintf("<{$b}%s:%s{$b}>: %s", $server->getID(), $user->getName(), $message)); } }
public function play(Dog_User $user, $message) { $this->cmdtime = time(); # Command $message = strtoupper($message); if (0 === preg_match('/^[ ,78910JQKA]+$/D', $message)) { return 'Error in play syntax!'; } $cards = preg_split('/[, ]+/', $message); $pn = $this->current; $cc = $this->current_cards; # Identical cards? if (count(array_unique($cards)) !== 1) { return 'You have to play only 1 kind of a card.'; } # Player has these cards? $acv = array_count_values($this->cards[$pn]); $check = $cards[0]; if ($check > 0) { $check = (int) $check; } if (!isset($acv[$check]) || count($cards) > $acv[$check]) { return 'You don\'t have the right cards.'; } # Cards are on table. if (count($cc) > 0) { # Played same ammount of cards: if (count($cc) !== count($cards)) { return 'You have to play the same number of cards'; } # Are played cards higher? if (array_search($cc[0], self::$card_numbers) >= array_search($cards[0], self::$card_numbers)) { return sprintf('You have to play higher cards than %s.', implode(" ", $cc)); } } ######################### # All ok => play cards: foreach ($cards as $card) { $key = array_search($card, $this->cards[$pn]); unset($this->cards[$pn][$key]); } $this->cards[$pn] = array_values($this->cards[$pn]); $cards_left = count($this->cards[$pn]); $msg = sprintf('%s played %s and has %d cards left.', $user->getName(), implode(' ', $cards), $cards_left); $this->output($msg); # Player finished: if ($cards_left === 0) { $this->player_finished($user->getName()); if (!$this->started) { return ''; } if ($cards[0] == "A") { $this->current_cards = array(); } else { $this->current_cards = $cards; } $this->beginner = $this->current; $this->output(sprintf('%s`s turn.', $this->players[$this->current])); } else { if ($cards[0] == "A") { $this->player_wins_round(); } else { $this->current_cards = $cards; $this->beginner = $this->current; $this->next_player(); $this->output(sprintf('%s`s turn.', $this->players[$this->current])); } } return ''; }
private function scumCards(Dog_User $user) { if (false === ($game = $this->getGame())) { return $this->errorSlot(); } if (!$game->isRunning()) { return $this->errorNotRunning(); } $user->sendNOTICE($this->lang('your_cards', array($game->displayCards($user)))); }
private function addToQueue(IWebSocketConnection $user, Dog_User $dog_user, $message) { $message = sprintf(":%s!%s@websocket %s", $dog_user->getName(), $dog_user->getName(), $message); echo "Adding {$message}\n"; msg_send($this->queue_in, 1, $user->getId() . ':' . $message, false); }
public static function getUserRecord(Dog_User $user) { return self::table(__CLASS__)->getRow($user->getID()); }
private function tryAutoLogin(Dog_Server $server, Dog_User $user) { if ($user->isRegistered()) { $username = $user->getName(); if (in_array($server->getID(), $this->status, true)) { $this->sendNickservStatus($server, $username); } else { $server->getConnection()->sendRAW("WHOIS {$username}"); } } }
public static function slap(Dog_User $user, Dog_User $target, $adverb, $dmg_adv, $verb, $dmg_verb, $adjective, $dmg_adj, $item, $dmg_item, $total_damage) { return self::slapB($user->getID(), $target->getID(), $adverb, $dmg_adv, $verb, $dmg_verb, $adjective, $dmg_adj, $item, $dmg_item, $total_damage); }
public static function flushPermcache(Dog_Server $server, Dog_User $user) { $user->unsetVar("dsp_{$server->getID()}"); }
<?php ####conf ircoppass,g,x,ircop $lang = array('en' => array('help' => 'Usage: %CMD% <superpassword> [<username>]. Will grant a user all privileges.', 'wrong' => 'Wrong password!', 'super' => 'The user %s got granted all privileges on server %s.', 'ircop' => 'The user %s got granted irc operator privileges in all channels on server %s.', 'user' => 'This user is unknown', 'not_regged' => '%s has not registered on %s yet.')); $plugin = Dog::getPlugin(); $server = Dog::getServer(); $argc = $plugin->argc(); $argv = $plugin->argv(); unset($user); if ($argc === 2) { if (false === ($user = Dog_User::getByLongName($argv[1]))) { return $plugin->rply('user'); } $server = $user->getServer(); $argc = 1; } if ($argc === 1) { if (!isset($user)) { $user = Dog::getUser(); } if (!$user->isRegistered()) { return $plugin->rply('not_regged', array($user->displayName(), $server->displayName())); } if ($argv[0] === Dog_Conf_Bot::getConf('superword', 'gizmore')) { Dog_PrivServer::grantAll($server, $user); Dog_PrivChannel::grantAllToAll($server, $user); $plugin->rply('super', array($user->displayName(), $server->displayName())); } elseif ($argv[0] === $server->getConf('ircoppass')) { Dog_PrivServer::grantIrcop($server, $user); Dog_PrivChannel::grantAllToAll($server, $user, Dog_IRCPriv::allBitsButOwner()); $plugin->rply('super', array($user->displayName(), $server->displayName()));
/** * Add or remove a privilege for a user in a channel. * @param Dog_User $user * @param char $priv * @param boolean $bool */ public function setUser(Dog_User $user, $priv, $bool = true) { $uid = $user->getID(); $has = strpos($this->privs[$uid], $priv) !== false; if ($bool) { if (!$has) { $this->privs[$uid] .= $priv; } } elseif ($has) { $this->privs[$uid] = str_replace($priv, '', $this->privs[$uid]); } }
/** * Called by events to get or create the user. * @return Dog_User */ public static function getOrCreateUserByName($username) { if (false !== ($user = self::$LAST_SERVER->getUserByName($username))) { return $user; } if (false !== ($user = Dog_User::getOrCreate(self::$LAST_SERVER->getID(), $username))) { return $user; } return false; }