/** * Learn about an IP address * * @return @e void [Outputs to screen] */ protected function _learnIP() { if ($this->request['ip'] == "") { $this->_toolsIndex($this->lang->words['t_noip']); return false; } $ip = trim($this->request['ip']); $resolved = $this->lang->words['t_partip']; $exact = 0; if (substr_count($ip, '.') == 3) { $exact = 1; } if (strstr($ip, '*')) { $exact = 0; $ip = str_replace("*", "", $ip); } //----------------------------------------- // Warning...ipv6 doesn't tend to resolve properly on // some Windows machines - this seems to be an OS limitation //----------------------------------------- if (IPSLib::validateIPv6($ip) == true) { $exact = 1; } if ($exact == 1) { $resolved = @gethostbyaddr($ip); $query = "='" . $ip . "'"; } else { $query = " LIKE '" . $ip . "%'"; } $results = IPSLib::findIPAddresses($query); //----------------------------------------- // INIT //----------------------------------------- $registered = array(); $posted = array(); $voted = array(); $emailed = array(); $validating = array(); //----------------------------------------- // Find registered members //----------------------------------------- if (count($results['members'])) { foreach ($results['members'] as $m) { $m['_joined'] = ipsRegistry::getClass('class_localization')->getDate($m['joined'], 'SHORT'); $registered[] = $m; } unset($results['members']); } //----------------------------------------- // Find Names POSTED under //----------------------------------------- if (count($results['posts'])) { foreach ($results['posts'] as $m) { $m['members_display_name'] = $m['members_display_name'] ? $m['members_display_name'] : $this->lang->words['t_guest']; $m['email'] = $m['email'] ? $m['email'] : $this->lang->words['t_notavail']; $m['_post_date'] = ipsRegistry::getClass('class_localization')->getDate($m['date'], 'SHORT'); $posted[] = $m; } unset($results['posts']); } //----------------------------------------- // Find Names VOTED under //----------------------------------------- if (count($results['voters'])) { foreach ($results['voters'] as $m) { $m['members_display_name'] = $m['members_display_name'] ? $m['members_display_name'] : $this->lang->words['t_guest']; $m['email'] = $m['email'] ? $m['email'] : $this->lang->words['t_notavail']; $m['_vote_date'] = ipsRegistry::getClass('class_localization')->getDate($m['date'], 'SHORT'); $voted[] = $m; } unset($results['voters']); } //----------------------------------------- // Find Names VALIDATING under //----------------------------------------- if (count($results['validating'])) { foreach ($results['validating'] as $m) { $m['members_display_name'] = $m['members_display_name'] ? $m['members_display_name'] : $this->lang->words['t_guest']; $m['email'] = $m['email'] ? $m['email'] : $this->lang->words['t_notavail']; $m['_entry_date'] = ipsRegistry::getClass('class_localization')->getDate($m['date'], 'SHORT'); $validating[] = $m; } unset($results['validating']); } //----------------------------------------- // And output //----------------------------------------- $this->registry->output->html .= $this->html->learnIPResults($resolved, $registered, $posted, $voted, $emailed, $validating, $results); }
/** * Learn about an IP address * * @access private * @return void [Outputs to screen] */ private function _learnIP() { if ($this->request['ip'] == "") { $this->_toolsIndex($this->lang->words['t_noip']); } $ip = trim($this->request['ip']); $resolved = $this->lang->words['t_partip']; $exact = 0; if (substr_count($ip, '.') == 3) { $exact = 1; } if (strstr($ip, '*')) { $exact = 0; $ip = str_replace("*", "", $ip); } if ($exact == 1) { $resolved = @gethostbyaddr($ip); $query = "='" . $ip . "'"; } else { $query = " LIKE '" . $ip . "%'"; } $results = IPSLib::findIPAddresses($query); //----------------------------------------- // INIT //----------------------------------------- $registered = array(); $posted = array(); $voted = array(); $emailed = array(); $validating = array(); //----------------------------------------- // Find registered members //----------------------------------------- if (count($results['members'])) { foreach ($results['members'] as $m) { $m['_joined'] = ipsRegistry::getClass('class_localization')->getDate($m['joined'], 'SHORT'); $registered[] = $m; } unset($results['members']); } //$this->DB->build( array( 'select' => 'member_id, members_display_name, email, posts, ip_address, joined', // 'from' => 'members', // 'where' => 'ip_address' . $query, // 'order' => 'joined DESC', // 'limit' => array( 250 ) // ) ); //$this->DB->execute(); //while ( $m = $this->DB->fetch() ) //{ // $m['_joined'] = ipsRegistry::getClass( 'class_localization')->getDate( $m['joined'], 'SHORT' ); // // $registered[] = $m; //} //----------------------------------------- // Find Names POSTED under //----------------------------------------- if (count($results['posts'])) { foreach ($results['posts'] as $m) { $m['members_display_name'] = $m['members_display_name'] ? $m['members_display_name'] : $this->lang->words['t_guest']; $m['email'] = $m['email'] ? $m['email'] : $this->lang->words['t_notavail']; $m['_post_date'] = ipsRegistry::getClass('class_localization')->getDate($m['post_date'], 'SHORT'); $posted[] = $m; } unset($results['posts']); } //$this->DB->build( array( 'select' => 'p.pid, p.author_id, p.post_date, p.ip_address, p.topic_id', // 'from' => array( 'posts' => 'p' ), // 'where' => 'p.ip_address' . $query, // 'group' => 'p.author_id', // 'order' => 'p.post_date DESC', // 'limit' => array( 250 ), // 'add_join' => array( // array( 'select' => 'm.member_id, m.members_display_name, m.email, m.posts, m.joined', // 'from' => array( 'members' => 'm' ), // 'where' => 'm.member_id=p.author_id', // 'type' => 'left' // ) // ) // ) ); //$this->DB->execute(); //while ( $m = $this->DB->fetch() ) //{ // $m['members_display_name'] = $m['members_display_name'] ? $m['members_display_name'] : $this->lang->words['t_guest']; // $m['email'] = $m['email'] ? $m['email'] : $this->lang->words['t_notavail']; // $m['_post_date'] = ipsRegistry::getClass( 'class_localization')->getDate( $m['post_date'], 'SHORT' ); // // $posted[] = $m; //} //----------------------------------------- // Find Names VOTED under //----------------------------------------- if (count($results['voters'])) { foreach ($results['voters'] as $m) { $m['members_display_name'] = $m['members_display_name'] ? $m['members_display_name'] : $this->lang->words['t_guest']; $m['email'] = $m['email'] ? $m['email'] : $this->lang->words['t_notavail']; $m['_vote_date'] = ipsRegistry::getClass('class_localization')->getDate($m['vote_date'], 'SHORT'); $voted[] = $m; } unset($results['voters']); } //$this->DB->build( array( 'select' => 'p.vote_date, p.ip_address, p.tid', // 'from' => array( 'voters' => 'p' ), // 'where' => 'p.ip_address' . $query, // 'group' => 'p.member_id', // 'order' => 'p.vote_date DESC', // 'limit' => array( 250 ), // 'add_join' => array( // array( 'select' => 'm.member_id, m.members_display_name, m.email, m.posts, m.joined', // 'from' => array( 'members' => 'm' ), // 'where' => 'm.member_id=p.member_id', // 'type' => 'left' // ) // ) // ) ); //$this->DB->execute(); //while ( $m = $this->DB->fetch() ) //{ // $m['members_display_name'] = $m['members_display_name'] ? $m['members_display_name'] : $this->lang->words['t_guest']; // $m['email'] = $m['email'] ? $m['email'] : $this->lang->words['t_notavail']; // $m['_vote_date'] = ipsRegistry::getClass( 'class_localization')->getDate( $m['vote_date'], 'SHORT' ); // // $voted[] = $m; //} //----------------------------------------- // Find Names EMAILING under //----------------------------------------- if (count($results['email_logs'])) { foreach ($results['email_logs'] as $m) { $m['members_display_name'] = $m['members_display_name'] ? $m['members_display_name'] : $this->lang->words['t_guest']; $m['email'] = $m['email'] ? $m['email'] : $this->lang->words['t_notavail']; $m['_email_date'] = ipsRegistry::getClass('class_localization')->getDate($m['email_date'], 'SHORT'); $emailed[] = $m; } unset($results['email_logs']); } //$this->DB->build( array( 'select' => 'p.email_date, p.from_ip_address', // 'from' => array( 'email_logs' => 'p' ), // 'where' => 'p.from_ip_address' . $query, // 'group' => 'p.from_member_id', // 'order' => 'p.email_date DESC', // 'limit' => array( 250 ), // 'add_join' => array( // array( 'select' => 'm.member_id, m.members_display_name, m.email, m.posts, m.joined', // 'from' => array( 'members' => 'm' ), // 'where' => 'm.member_id=p.from_member_id', // 'type' => 'left' // ) // ) // ) ); //$this->DB->execute(); //while ( $m = $this->DB->fetch() ) //{ // $m['members_display_name'] = $m['members_display_name'] ? $m['members_display_name'] : $this->lang->words['t_guest']; // $m['email'] = $m['email'] ? $m['email'] : $this->lang->words['t_notavail']; // $m['_email_date'] = ipsRegistry::getClass( 'class_localization')->getDate( $m['email_date'], 'SHORT' ); // // $emailed[] = $m; //} //----------------------------------------- // Find Names VALIDATING under //----------------------------------------- if (count($results['validating'])) { foreach ($results['validating'] as $m) { $m['members_display_name'] = $m['members_display_name'] ? $m['members_display_name'] : $this->lang->words['t_guest']; $m['email'] = $m['email'] ? $m['email'] : $this->lang->words['t_notavail']; $m['_entry_date'] = ipsRegistry::getClass('class_localization')->getDate($m['entry_date'], 'SHORT'); $validating[] = $m; } unset($results['validating']); } //$this->DB->build( array( 'select' => 'p.entry_date, p.ip_address', // 'from' => array( 'validating' => 'p' ), // 'where' => 'p.ip_address' . $query, // 'group' => 'p.member_id', // 'order' => 'p.entry_date DESC', // 'limit' => array( 250 ), // 'add_join' => array( // array( 'select' => 'm.member_id, m.members_display_name, m.email, m.posts, m.joined', // 'from' => array( 'members' => 'm' ), // 'where' => 'm.member_id=p.member_id', // 'type' => 'left' // ) // ) // ) ); //$this->DB->execute(); //while ( $m = $this->DB->fetch() ) //{ // $m['members_display_name'] = $m['members_display_name'] ? $m['members_display_name'] : $this->lang->words['t_guest']; // $m['email'] = $m['email'] ? $m['email'] : $this->lang->words['t_notavail']; // $m['_entry_date'] = ipsRegistry::getClass( 'class_localization')->getDate( $m['entry_date'], 'SHORT' ); // // $emailed[] = $m; //} //----------------------------------------- // And output //----------------------------------------- $this->registry->output->html .= $this->html->learnIPResults($resolved, $registered, $posted, $voted, $emailed, $validating, $results); }