Пример #1
0
 /**
  * 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);
 }