Esempio n. 1
0
 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);
 }
Esempio n. 2
0
 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()));
 }
Esempio n. 3
0
 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";
 }
Esempio n. 4
0
 /**
  * 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;
 }
Esempio n. 5
0
 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);
     }
 }
Esempio n. 6
0
 private function getUsername($id)
 {
     if (false === ($user = Dog_User::getByID($id))) {
         return "(Unknown:{$id})";
     }
     return $user->getName();
 }
Esempio n. 7
0
 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));
 }
Esempio n. 8
0
 /**
  * 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');
     }
 }
Esempio n. 9
0
 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);
 }
Esempio n. 10
0
 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));
 }
Esempio n. 11
0
 public function addUser(Dog_User $user)
 {
     $this->users[$user->getID()] = $user;
 }
Esempio n. 12
0
 public static function getPlayer(Dog_User $user)
 {
     if (false === ($player = self::getByUID($user->getID()))) {
         $player = self::createHuman($user);
     }
     return $player;
 }
Esempio n. 13
0
 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));
     }
 }
Esempio n. 14
0
 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 '';
 }
Esempio n. 15
0
 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))));
 }
Esempio n. 16
0
 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);
 }
Esempio n. 17
0
 public static function getUserRecord(Dog_User $user)
 {
     return self::table(__CLASS__)->getRow($user->getID());
 }
Esempio n. 18
0
 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}");
         }
     }
 }
Esempio n. 19
0
 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);
 }
Esempio n. 20
0
 public static function flushPermcache(Dog_Server $server, Dog_User $user)
 {
     $user->unsetVar("dsp_{$server->getID()}");
 }
Esempio n. 21
0
<?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()));
Esempio n. 22
0
 /**
  * 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]);
     }
 }
Esempio n. 23
0
 /**
  * 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;
 }