getIni('twitter.tweetrequireadmin')) { // if so, override default self::$TWEET_REQUIRE_ADMIN = $req; } if (!$twitterClass = $this->getIni('twitter.class')) { $twitterClass = 'Twitter'; } if ($url = $this->getIni('twitter.url')) { $this->twitter = new $twitterClass($this->getIni('twitter.user'), $this->getIni('twitter.password'), $url); } else { $this->twitter = new $twitterClass($this->getIni('twitter.user'), $this->getIni('twitter.password')); } } /** * Fetches the associated tweet and relays it to the channel * * @param string $tweeter if numeric the tweet number/id, otherwise the twitter user name (optionally prefixed with @) * @param int $num optional tweet number for this user (number of tweets ago) * @return void */ public function onDoTwitter($tweeter = null, $num = 1) { $user = $this->getIni('twitter.user'); $source = $this->event->getSource(); if (is_numeric($tweeter)) { $tweet = $this->twitter->getTweetByNum($tweeter); } else if (is_null($tweeter) && $user) { $tweet = $this->twitter->getLastTweet($user, 1); } else { $tweet = $this->twitter->getLastTweet(ltrim($tweeter, '@'), $num); } if ($tweet) { $this->doPrivmsg($source, $this->formatTweet($tweet)); } } /** * Sends a tweet to Twitter as the configured user * * @param string $txt the text to tweet * @return void */ public function onDoTweet($txt) { $nick = $this->event->getNick(); if (!$this->getIni('twitter.user')) { return; } if (self::$TWEET_REQUIRE_ADMIN && !$this->fromAdmin(true)) { return; } $source = $this->event->getSource(); if ($tweet = $this->twitter->sendTweet($txt)) { $this->doPrivmsg($source, 'Tweeted: '. $this->twitter->getUrlOutputStatus($tweet)); } else { $this->doNotice($nick, 'Tweet failed'); } } /** * Formats a Tweet into a message suitable for output * * @param object $tweet * @return string */ protected function formatTweet(StdClass $tweet) { return '<@' . $tweet->user->screen_name .'> '. $this->twitter->decode($tweet->text) . ' - ' . $this->getCountdown(time() - strtotime($tweet->created_at)) . ' ago' . ' (' . $this->twitter->getUrlOutputStatus($tweet) . ')'; } }