<?php
/******************************* PHP-P10 v2 *****************************
- * Copyright (C) 2011 Philipp Kreil (pk910) *
+ * Copyright (C) 2011-2012 Philipp Kreil (pk910) *
* *
* 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 3 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 *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
* *
************************************************************************
- *
+ *
* Bots/PulseBot.class.php
*
* WhatPulse bot...
private $pulsebot;
private $cache = array();
private $db = array();
-
+
const TEAM_ID = 19418;
-
+
public function load($uplink, $old = false) {
$this->uplink = $uplink;
if(!$old) {
} else {
$this->pulsebot = $old;
}
- BotLoader::registerDB($this, "PulseBot");
+ BotLoader::registerDB($this, "pulsebot");
ModCMD::bind($this, BIND_CHANMSG, "recive_privmsg");
ModCMD::bind($this, BIND_JOIN, "recive_join");
ModCMD::bind($this, BIND_QUIT, "recive_quit");
}
-
+
public function unload($rehash = false) {
if($rehash) {
return $this->pulsebot;
$this->uplink->delUser($this->pulsebot, "Bye.");
}
}
-
+
public function readDB($db) {
$this->db = $db;
}
-
+
public function writeDB() {
return $this->db;
}
-
+
private function getStats() {
if(array_key_exists("stats", $this->cache) && time() - $this->cache['stats_time'] < 300) {
//use cached stats
}
return $stats;
}
-
+
private function getUserStats($name) {
if(array_key_exists("ustats_".strtolower($name), $this->cache) && time() - $this->cache['ustats_'.strtolower($name).'_time'] < 300) {
//use cached stats
return $ustats;
}
$stats = $this->getStats();
- $users = $stats->TeamStats->Members;
+ $users = $stats->TeamStats->Members->Member;
foreach ($users as $user) {
if(strtolower($user->MemberName) == strtolower($name)) {
$xmlstr = file_get_contents("http://whatpulse.org/api/user.php?UserID=".$user->MemberUserID);
$ustats = new SimpleXMLElement($xmlstr);
- $this->cache["ustats_".strtolower($name)] = $stats;
+ $this->cache["ustats_".strtolower($name)] = $ustats;
$this->cache["ustats_".strtolower($name)."_time"] = time();
return $ustats;
}
}
return null;
}
-
+
private function botOppedOnChannel($channel) {
$privs = $channel->getUserPrivs($this->pulsebot);
return ($privs & P10_Channel::USERPRIV_OPED);
}
-
+
function recive_privmsg($user, $channel, $message) {
if(!$this->botOppedOnChannel($channel)) return;
$privs = $channel->getUserPrivs($user);
$pulseUserName = $exp[1];
$stats = $this->getStats();
$pulseUser = null;
- print_r($stats);
$users = $stats->TeamStats->Members->Member;
foreach ($users as $puser) {
if(strtolower($puser->MemberName) == strtolower($pulseUserName)) {
if(!array_key_exists("users", $this->db)) {
$this->db['users'] = array();
}
- $this->db['users'][$auth] = $pulseUser->MemberName;
- $this->uplink->notice($this->pulsebot, $user, "WhatPulse user '".$pulseUserName."' added (Keys: ".$pulseUser->MemberKeys.", Clicks: ".$pulseUser->MemberClicks.").");
+ $this->db['users'][$auth] = strval($pulseUser->MemberName);
+ $this->uplink->notice($this->pulsebot, $user, "WhatPulse user '".$pulseUserName."' added (Keys: ".number_format(floatval($pulseUser->MemberKeys),0,',','.').", Clicks: ".number_format(floatval($pulseUser->MemberClicks),0,',','.').").");
}
break;
case ".deluser":
}
}
if(!$f)
- $this->uplink->notice($this->pulsebot, $user, "WhatPulse user '".$exp[1]."' is not added.");
+ $this->uplink->notice($this->pulsebot, $user, "WhatPulse user '".$exp[1]."' is not added.");
break;
case ".users":
$table = new Table(5);
break;
}
}
- $table->add($puser->MemberName, $puser->MemberKeys, $puser->MemberClicks, $puser->MemberMiles, $ircUserName);
+ $table->add($puser->MemberName, number_format(floatval($puser->MemberKeys),0,',','.'), number_format(floatval($puser->MemberClicks),0,',','.'), number_format(floatval($puser->MemberMiles),2,',','.'), $ircUserName);
}
$lines = $table->end();
foreach($lines as $line) {
if(count($exp) > 1)
- $this->uplink->privmsg($this->pulsebot, $channel, $line);
+ $this->uplink->privmsg($this->pulsebot, $channel, $line);
else
- $this->uplink->notice($this->pulsebot, $user, $line);
+ $this->uplink->notice($this->pulsebot, $user, $line);
}
break;
case ".mypulse":
break;
}
$ustats = $this->getUserStats($pulseUser->MemberName);
- $message = "User \002".$pulseUser->MemberName."\002 has \002".$pulseUser->MemberKeys."\002 keys (".$ustats->AvKPS." per second), \002".$pulseUser->MemberClicks."\002 clicks (".$ustats->AvCPS." per second) and ".$pulseUser->MemberMiles." miles.\n";
- $message .= "Last Pulse: ".$ustats->LastPulse;
+ $message = array();
+ $message[] = "User \002".$pulseUser->MemberName."\002 has \002".number_format(floatval($pulseUser->MemberKeys),0,',','.')."\002 keys (".number_format(floatval($ustats->AvKPS),2,',','.')." per second), \002".number_format(floatval($pulseUser->MemberClicks),0,',','.')."\002 clicks (".number_format(floatval($ustats->AvCPS),2,',','.')." per second) and ".number_format(floatval($pulseUser->MemberMiles),2,',','.')." miles.";
+ $message[] = "Last Pulse: ".$ustats->LastPulse;
if(count($exp) > 1) {
foreach($message as $line) {
$this->uplink->privmsg($this->pulsebot, $channel, $line);
break;
}
}
-
+
public function recive_join($user, $channel, $isBurst) {
if(!$this->botOppedOnChannel($channel)) return false;
if(!($auth = $user->getModes()->hasMode('r'))) return;
}
if($pulseUser) {
$this->uplink->mode($this->pulsebot, $channel, "+v ".$user->getNumeric());
- $this->uplink->privmsg($this->pulsebot, $channel, "WhatPulse User \002".$pulseUser->MemberName."\002 (\002".$pulseUser->MemberKeys."\002 keys and \002".$pulseUser->MemberClicks."\002 clicks) has joined the channel.");
+ $this->uplink->privmsg($this->pulsebot, $channel, "WhatPulse User \002".$pulseUser->MemberName."\002 (\002".number_format(floatval($pulseUser->MemberKeys),0,',','.')."\002 keys and \002".number_format(floatval($pulseUser->MemberClicks),0,',','.')."\002 clicks) has joined the channel.");
}
}
-
+
public function recive_quit($user, $reason) {
if($user === $this->pulsebot) {
$this->load($this->uplink);