Public feed #528983

Untitled

public text v1 · immutable
Raw Edit
·published 2007-06-01 19:16 UTC
rendered paste body
<?php 
#   Copyright by Manuel Staechele
#   Support www.ilch.de


defined ('main') or die ( 'no direct access' );

# global die zeit wo ein user als online angezeigt wird definieren.
define ('USERUPTIME', 180);

##
###
####
##### alle online 
function ges_online() {
  $dif = date('Y-m-d H:i:s', time() - USERUPTIME);
	$erg = db_query("SELECT COUNT(*) FROM `prefix_online` WHERE uptime > '". $dif."'");
  $anz = db_result($erg,0);
  return ($anz);
} 

##
###
####
##### nur die user
function ges_user_online() {
  $dif = date('Y-m-d H:i:s', time() - USERUPTIME); 
	$erg = db_query("SELECT COUNT(*) FROM `prefix_online` WHERE uid > 0 and uptime > '". $dif."'");
	$anz = db_result($erg,0);
  return ($anz);
}

##
###
####
##### nur die gaeste
function ges_gast_online() {
  $dif = date('Y-m-d H:i:s', time() - USERUPTIME);
	$erg = db_query("SELECT COUNT(*) FROM `prefix_online` WHERE uid = 0 and uptime > '". $dif."'");
	$anz = db_result($erg,0);
  return ($anz);
}

##
###
####
##### user online liste
function user_online_liste(){ 
	$OnListe = ''; 
  $dif = date('Y-m-d H:i:s', time() - USERUPTIME);
	$erg = db_query("SELECT DISTINCT uid, name, prefix_ranks.bez, spezrank FROM `prefix_online` left join prefix_user on prefix_user.id = prefix_online.uid left join prefix_ranks ON prefix_ranks.id = prefix_user.spezrank WHERE uid > 0 and uptime > '". $dif."'");
	while($row = db_fetch_object($erg)) {
	  if ( $row->spezrank <> 0 ) {
      $OnListe .= '<a title="'.$row->bez.'" href="index.php?user-details-'.$row->uid.'"><b><i>'.$row->name.'</i></b></a> , ';
    } else {
      $OnListe .= '<a href="index.php?user-details-'.$row->uid.'">'.$row->name.'</a> , ';
	  }
  }
	$OnListe = substr($OnListe,0,strlen($OnListe) - 3);
  return ($OnListe);
}

#
## user onloine list fuer admin + gaeste
function user_admin_online_liste () { 
	$OnListe = ''; 
  $class = '';
  $dif = date('Y-m-d H:i:s', time() - USERUPTIME);
	$erg = db_query("SELECT DISTINCT uid, DATE_FORMAT(uptime, '%d.%m.%Y - %H:%i:%s') as datum, ipa, name FROM `prefix_online` left join prefix_user on prefix_user.id = prefix_online.uid WHERE uptime > '". $dif."' ORDER BY uid DESC");
	while($row = db_fetch_object($erg)) {
    $name = $row->name;
    if ( $row->uid == 0) {
      $name = 'Gast';
    }
	
	$host_patterns = array(
		'/crawl-[0-9]{1,3}-[0-9]{1,3}-[0-9]{1,3}-[0-9]{1,3}\.googlebot\.com/si',
	  '/[a-z]*[0-9]*\.inktomisearch\.com/si',
		'/[a-z]*[0-9]*\.ask\.com/si',
		'/p[0-9A-F]*\.dip[0-9]*\.t-(dialin|ipconnect)\.(net|de)/si',
		'/[0-9A-F]*\.ipt\.aol\.com/si',
		'/dslb-[0-9]{3}-[0-9]{3}-[0-9]{3}-[0-9]{3}.pools.arcor-ip.net/si',
		'/crawl[0-9]*\}exabot\.com/si',
		'/[0-9A-Z]+\.adsl\.highway\.telekom\.at/si'
	);
	$host_names    = array(
		'Bot Google',
		'Bot Inktomi/Yahoo',
		'Bot Ask.com',
		'T-Online',
		'AOL',
		'Arcor DSL',
		'Bot Exalead',
		'Telekom Austria DSL'
	);	
	
    $class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite' );
    $OnListe .= '<tr class="'.$class.'">';
    $OnListe .= '<td>'. $name .'</td>';
    $OnListe .= '<td>'. $row->datum .'</td>';
    $OnListe .= '<td>'. $row->ipa .'</td>';
    $OnListe .= '<td>'. preg_replace($host_patterns, $host_names, @gethostbyaddr ( $row->ipa )) .'</td>'; 
    $OnListe .= '</tr>';
  }
	#$OnListe = substr($OnListe,0,strlen($OnListe) - 3);
  return ($OnListe);
}

function getip() {
  if (getenv("HTTP_X_FORWARDED_FOR")) {
     return (getenv("HTTP_X_FORWARDED_FOR"));
  } else {
     return (getenv("REMOTE_ADDR"));
  }
}

function site_statistic () {
	if (!array_key_exists('ilchCMSstati',$_SESSION)) {
		$_SESSION['ilchCMSstati'] = 'geloggt';
	  $d = date('j');
		$m = date('n');
		$y = date('Y');
		$ip = getip();
		$ergResul = db_result(db_query("SELECT COUNT(ip) FROM prefix_stats WHERE ip = '".$ip."' AND `day` = ".$d." AND mon = ".$m." AND yar = ".$y ),0);
		debug ( $ergResul.'#statistic res' );
		if ( $ergResul == 0 ) {
		  $os = site_statistic_get_os($_SERVER['HTTP_USER_AGENT']);
		  $br = site_statistic_get_browser($_SERVER['HTTP_USER_AGENT']);
		  $wt = date('w');
		  $st = date('G');
		  $ur = ( isset ($_SERVER['HTTP_REFERER']) ? site_statistic_get_referer($_SERVER['HTTP_REFERER']) : '' );
		  db_query("INSERT INTO prefix_stats (wtag,stunde,`day`,mon,yar,os,browser,ip,ref)
			VALUES(".$wt.",".$st.",".$d.",".$m.",".$y.",'".$os."','".$br."','".$ip."','".$ur."')");
		
		  $dc = ( strlen ($d) == 1 ? '0'.$d : $d );
			$mc = ( strlen ($m) == 1 ? '0'.$m : $m );
		  $cdate = $y.'-'.$mc.'-'.$dc;
			$query = "SELECT COUNT(date) FROM `prefix_counter` WHERE `date` = '".$cdate."'";
		  if ( db_result(db_query($query),0) == 0 ) {
		    db_query('INSERT INTO `prefix_counter` VALUES ( "'.$cdate.'" , "1" ) ' );
		  } else {
		    db_query('UPDATE `prefix_counter` SET `count` = `count` +1 WHERE `date` = "'.$cdate.'"');
		  }
	  }
  }
}


function site_statistic_get_browser($useragent) {
		  if (preg_match("=MSIE [0-9]{1,2}.[0-9]{1,2}.*Opera.([0-9]{1})=", $useragent, $browser)) {
			  return "Opera ".$browser[1]." (als IE)";
		  } elseif (preg_match("=MSIE ([0-9]{1,2}).[0-9]{1,2}=", $useragent, $browser)) {
			  return "Internet Explorer ".$browser[1];
		  } elseif (preg_match("=Opera/([0-9]{1,2}).[0-9]{1,2}=", $useragent, $browser)) {
			  return "Opera ".$browser[1];
		  } elseif (preg_match("=Konqueror=", $useragent)) {
			  return "Konqueror"; 
		  } elseif (preg_match("=Netscape/7.[0-9]{1,2}=", $useragent)) {
			  return "Netscape Navigator 7";
		  } elseif (preg_match("=^Mozilla.*Firefox\/(.*)$=", $useragent, $browser)) {
        return ("Firefox ".$browser[1]);
      } elseif (preg_match("=Mozilla/5.[0-9]{1,2}=", $useragent)) {
			  return "Netscape Navigator 6";
		  } elseif (preg_match("=Mozilla/([0-9]{1,2}).[0-9]{1,2}=", $useragent, $browser)) {
			  return "Netscape Navigator ".$browser[1];
		  } else {
			  return 0;
		  }
}
	
function site_statistic_get_os($useragent){
		  if (preg_match("=Windows NT 5\.0|Windows 2000=", $useragent)) {
			  return "Windows 2000";
		  } elseif (preg_match("=Windows NT 5\.1|Windows XP=", $useragent)) {
			  return "Windows XP";
			} elseif (preg_match("=Windows NT 6\.0|Windows Vista=", $useragent)) {
			  return "Windows Vista";
			} elseif (preg_match("=Windows NT 5\.2|Windows Server 2003|Windows XP x64=", $useragent)) {
			  return "Windows Server 2003\\Windows XP x64";			  
		  } elseif (preg_match("=Windows NT 4\.0|Windows NT|WinNT4\.0=", $useragent)) {
			  return "Windows NT";
		  } elseif (preg_match("=Windows 98=", $useragent)) {
			  return "Windows 98";
		  } elseif (preg_match("=Windows 95=", $useragent)) {
			  return "Windows 95";
		  } elseif (preg_match("=Mac_PowerPC|Macintosh=", $useragent)) {
			  return "Macintosh";
		  } elseif (preg_match("=Linux=", $useragent)) {
			  return "Linux";
		  } elseif (preg_match("=SunOS=", $useragent)) {
			  return "SunOS";

		  } else {
			  return 0;
		  }
}
		
function site_statistic_get_referer ( $referer ) {
			if ( ! empty ($referer) ) {
			  $refzar = parse_url($referer);
			  $refspa = 'http://'.$refzar['host'].$refzar['path'];
		    return $refspa;
		  } else {
			  return 0;
			}
}

?>