/** @function PeerGen() Inserts the new peer or updates if it already exists. * @return $Peer return the peer. */ private function PeerGen() { $Peer = current($this->getClass('PeerManager')->find(array('hash' => bin2hex($_REQUEST['peer_id'])))); if (!$Peer || !$Peer->isValid()) { $Peer = new Peer(array('hash' => bin2hex($_REQUEST['peer_id']), 'agent' => substr($_SERVER['HTTP_USER_AGENT'], 0, 80), 'ip' => ip2long($_SERVER['REMOTE_ADDR']), 'key' => sha1($_REQUEST['key']), 'port' => intval($_REQUEST['port']))); } else { $Peer->set('hash', bin2hex($_REQUEST['peer_id']))->set('agent', substr($_SERVER['HTTP_USER_AGENT'], 0, 80))->set('ip', ip2long($_SERVER['REMOTE_ADDR']))->set('port', intval($_REQUEST['port'])); } $Peer->save(); return $Peer; }