Пример #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);
 }
Пример #2
0
 private function initQueues()
 {
     if (false === ($this->queue_in = msg_get_queue(1000 + $this->server->getID()))) {
         return false;
     }
     if (false === ($this->queue_out = msg_get_queue(2000 + $this->server->getID()))) {
         return false;
     }
     return true;
 }
Пример #3
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;
 }
Пример #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;
 }
Пример #5
0
 /**
  * Check if plugin is enabled for server and optional channel.
  * @param Dog_Server $server
  * @param DOG_Channel $channel
  * @return boolean
  */
 public function isEnabled(Dog_Server $server, $channel)
 {
     $plg = $this->name;
     if (Dog_Conf_Plug::isDisabled($plg) || Dog_Conf_Plug_Serv::isDisabled($plg, $server->getID()) || $channel !== false && Dog_Conf_Plug_Chan::isDisabled($plg, $channel->getID(), $this->defdis)) {
         return false;
     }
     return true;
 }
Пример #6
0
 public static function flushPermcache(Dog_Server $server, Dog_User $user)
 {
     $user->unsetVar("dsp_{$server->getID()}");
 }
Пример #7
0
 public function isTriggerEnabled(Dog_Server $server, $channel, $trigger)
 {
     $mod = $this->getName();
     $sid = $server->getID();
     if (!$this->isEnabled($server, $channel) || Dog_Conf_Mod_Serv::isTriggerDisabled($mod, $sid, $trigger, '0') || $channel !== false && Dog_Conf_Mod_Chan::isTriggerDisabled($mod, $channel->getID(), $trigger, $this->getDefDis($trigger))) {
         return false;
     }
     return true;
 }
Пример #8
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));
 }
Пример #9
0
 public static function getByServer(Dog_Server $server)
 {
     return self::table(__CLASS__)->getRow($server->getID());
 }
Пример #10
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}");
         }
     }
 }
Пример #11
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));
     }
 }
Пример #12
0
 public static function getExistingNick(Dog_Server $server, $nickname)
 {
     $nick = self::escape($nickname);
     return self::table(__CLASS__)->selectFirstObject('*', "nick_sid={$server->getID()} AND nick_name='{$nick}'");
 }
Пример #13
0
 /**
  * @param int $sid
  * @param string $name
  * @return Dog_Channel
  */
 public static function getOrCreate(Dog_Server $server, $name)
 {
     $sid = $server->getID();
     if (false !== ($channel = self::getForServer($sid, $name))) {
         return $channel;
     }
     $channel = new self(array('chan_id' => '0', 'chan_sid' => $sid, 'chan_name' => $name, 'chan_lang' => $server->getLangISO(), 'chan_pass' => NULL, 'chan_modes' => '', 'chan_triggers' => NULL, 'chan_options' => self::DEFAULT_OPTIONS));
     return $channel->insert() ? $channel : false;
 }