<?php
/*===================================================+
|| # Woodpecker Housekeeping
|+====================================================+
|| # Copyright © 2008 SuperFun. All rights reserved.
|| # http://www.superfunn.nl/
|+===================================================+
|| # Notice: This is free software.
|+===================================================+
|| # Versions.
|| # Housekeeping version: V3.5
|| # Version of this file: V1.7 (func.php)
|+===================================================+
||
|| # Usage of this page:
|| # This file is being used for all function's
||
|+===================================================*/

if(strstr($_SERVER['PHP_SELF'], "func.php")){
	exit;
}

//loader
function loader($kegel){
	$a = mysql_query("SELECT * FROM cms_loaderconfig WHERE `key` = '".$kegel."'");
	$b = mysql_fetch_array($a);
	return $b['value'];
}

//remote management
function MUSrepley($id){
	if($id == "0"){
		return '<font color=red>Error</font>';
	}elseif($id == "1"){
		return '<font color=green>Gelukt</font>';
	}else{
		return '<font color=red>Error</font> of <font color=red>Server reageerde niet</font>';
	}
}

//MUS Status
function MUSStatus(){
$fp = @fsockopen(loader('remote_ip'), loader('remote_port'), $errno, $errstr, 1);
	if($fp){ 
		return "1";
		fclose($fp);
	}else{
		return "0";
	}
}

//MUS
function SendData($data, $output = true, $timeout = 30){
	if(MUSStatus() == "1"){
		$msg = $data;
		$connection = fsockopen (loader('remote_ip'), loader('remote_port'), $errno, $errstr, $timeout);
		if($connection){
			fwrite($connection, $msg);
			if($output == true){
				echo '<b>Bezig met verzenden naar server</b>...<br>';
			}
			while (!feof($connection)) {
				if($output == true){
					echo '<b>Antwoord:</b> '.MUSrepley(fread($connection,256)).'<br>';
				}else{
					return fread($connection,256);
				}
			}
			fclose ($connection);
		}else{
			if($output == true){
				echo '<font color=red>Kon niet verbinden met server</font><br>';
			}else{
				return 0;
			}
		}
	}else{
		if($output == true){
			echo '<b>Error terwijl versturen van verzoek naar server</b>...<br>';
			echo '<font color=red>Kon niet verbinden met server (SERVER OFFLINE)</font><br>';
		}else{
			return 0;
		}
	}
}

//normal data
function user(){
	$a = mysql_query("SELECT * FROM users WHERE id = '".$_SESSION['housekeeping_member_id']."'");
	$b = mysql_num_rows($a);
	$c = mysql_fetch_array($a);
	return $c['username'];
}

//the stats
function stats(){
	$pet_count = mysql_num_rows(mysql_query("SELECT * FROM items_pets"));
	$items_definitions_count = mysql_num_rows(mysql_query("SELECT * FROM items_definitions"));
	$items_count = mysql_num_rows(mysql_query("SELECT * FROM items"));
	$items_presents_count = mysql_num_rows(mysql_query("SELECT * FROM items_presents"));
	$rooms_count = mysql_num_rows(mysql_query("SELECT * FROM rooms WHERE ownerid != '0'"));
	$rooms_count2 = mysql_num_rows(mysql_query("SELECT * FROM rooms WHERE ownerid = '0'"));
	$users_count = mysql_num_rows(mysql_query("SELECT * FROM users"));
	$bans_count = mysql_num_rows(mysql_query("SELECT * FROM moderation_bans"));
	$blacklist_count = mysql_num_rows(mysql_query("SELECT * FROM moderation_bans"));
	$external_texts_count = mysql_num_rows(mysql_query("SELECT * FROM external_texts"));
	echo '<b>Number of Pets</b>: '.$pet_count.'<br>';
	echo '<b>Number of furni purchased</b>: '.$items_count.'<br>';
	echo '<b>Number of accessories purchased</b>: '.$items_definitions_count.'<br>';
	echo '<b>Number of external texts</b>: '.$external_texts_count.'<br>';
	echo '<b>Number of Presents</b>: '.$items_presents_count.'<br>';
	echo '<b>Rooms</b>: '.$rooms_count.' (+ '.$rooms_count2.' public rooms)<br>';
	echo '<b>Users</b>: '.$users_count.'<br>';
	echo '<b>Actieve bans</b>: '.$bans_count.'<br>';
	echo '<b>Users on Blacklist</b>: '.$blacklist_count;
}

//anti client inject
function fix($temp) {
$result = "";
	for ($i=0; $i<strlen($temp); $i++) {
		if (preg_match("([0-9]|[a-z]|[A-Z]|_|-|=|!|@|:|.|,|'?')", $temp[$i])) {
		$result = $result . $temp[$i];
		}
	}
	//anti hack
	$result = str_replace(chr(1), '', $result);
	$result = str_replace(chr(2), '', $result);
	$result = str_replace(chr(9), '', $result);
	$result = str_replace(chr(10), '', $result);
	$result = str_replace(chr(12), '', $result);
	$result = str_replace(chr(13), '', $result);
	return $result;
}

//id > name
function gebruiker($id){
	$a = mysql_query("SELECT * FROM users WHERE id = '".$id."'");
	$b = mysql_num_rows($a);
	$c = mysql_fetch_array($a);
	return $c['username'];
}

//id > room name
function roomrow($id, $row){
	$a = mysql_query("SELECT ".$row." FROM rooms WHERE id = '".$id."'");
	$b = mysql_num_rows($a);
	$c = mysql_fetch_array($a);
	if($c[$row] != ''){
		return $c[$row];
	}
	return 'Unknown';
}

//name > id
function gebruikerid($name){
	$a = mysql_query("SELECT * FROM users WHERE username = '".$name."'");
	$b = mysql_num_rows($a);
	$c = mysql_fetch_array($a);
	return $c['id'];
}

//For certain remote & hk actions
function logboek($bericht, $naampje){
	mysql_query("INSERT INTO cms_logboek (id,bericht,gebruiker,wanneer,ip) VALUES ('', '".htmlspecialchars($bericht)."', '".$_SESSION['housekeeping_member_id']."', NOW(), '".$_SERVER['REMOTE_ADDR']."')");
	echo mysql_error();
}

//For certain remote actions.
function moderation_log($action, $message, $extrainfo){
	mysql_query("INSERT INTO moderation_log (timestamp,userid,targetid,actiontype,message,extrainfo) VALUES (NOW(), '".$_SESSION['housekeeping_member_id']."', '', '".$action."', '".htmlspecialchars($message)."', '".htmlspecialchars($extrainfo)."')");
	echo mysql_error();
}

//Config for certain forms
function settings($kegel){
	$a = mysql_query("SELECT * FROM configuration WHERE configkey = '".$kegel."'");
	$b = mysql_fetch_array($a);
	return $b['configvalue'];
}

//Config for certain forms
function configkey($kegel){
	$a = mysql_query("SELECT * FROM cms_config WHERE `key` = '".$kegel."'");
	$b = mysql_fetch_array($a);
	return $b['setting'];
}

//Welcome on cp.php
function showwelcome(){
	$dateding = date("H");
	if($dateding >= 17){
		return 'Welcome';
	}elseif($dateding >= 0 AND $dateding <= 12){
		return 'Good Morning';
	}elseif($dateding >= 12 AND $dateding <= 17){
		return 'Good Evening';
	}else{
		return 'Error '.$dateding;
	}
}

//Role
function role($role){
	if($role == "0"){
		return 'Banned User';
	}elseif($role == "1"){
		return 'Normal User';
	}elseif($role == "2"){
		return 'eXpert';
	}elseif($role == "3"){
		return 'Silver hobba';
	}elseif($role == "4"){
		return 'Gold hobba';
	}elseif($role == "5"){
		return 'Moderator';
	}elseif($role == "6"){
		return 'Administrator';
	}elseif($role == "7"){
		return 'Super Administrator';
	}elseif($role == "99"){
		return 'Invalid Rank';
	}else{
		return 'Onbekend';
	}
}

//fuse_rights
function min_fuse($fuse, $id){
	$lol1 = mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id = '".$id."'"));
	$lol22 = mysql_query("SELECT * FROM users_roles_fuserights WHERE fuseright = '".$fuse."'");
	$lol2 = mysql_fetch_array($lol22);
	if(mysql_num_rows($lol22) < 1){
		$ding =  false;
	}else{
		if($lol1['role'] < $lol2['minrole']){
			$ding = false;
		}else{
			$ding = true;
		}
	}
	
	if($ding == false){
		$a = mysql_query("SELECT * FROM users_fuserights WHERE userid = '".$id."' AND fuse = '".$fuse."'");
		echo mysql_error();
			if(mysql_num_rows($a) > 0){
				$ding = true;
			}else{
				$ding = false;
			}
		}	
	return $ding;
}

//Current min role for certain fuse
function fuse_state($fuse){
	$lol = mysql_query("SELECT * FROM users_roles_fuserights WHERE fuseright = '".$fuse."'");
	$lol1 = mysql_fetch_array($lol);
	return $lol1['minrole'];
}

//general redirect
function javascriptr($location){
	echo '<script language="JavaScript">
	<!--
	 window.location="'.$location.'";
	//-->
	</script>';
	echo '<br>Click <a href="'.$location.'" target="_self">here</a> to be redirected.';
}

//anti sql inject
function beveilig($waarde) {
    if (get_magic_quotes_gpc()) {
      $waarde = addslashes($waarde);
    }
    if(version_compare(phpversion(),"4.3.0") == "-1") {
      return mysql_escape_string($waarde);
    } else {
      return mysql_real_escape_string($waarde);
    }
}

//For room settings
function category($id){
	$ca = mysql_query("SELECT * FROM rooms_categories WHERE id = '".$id."'");
	$cb = mysql_fetch_array($ca);
	return $cb['name'];
}

//For the loader (anti cache)
function randomfortext($aantal = 20){
	while($i != $aantal){
		$ding .= rand(0, 9);
		$i++;
	}
	return $ding;
}

function onlineusers(){
	$a = mysql_query("SELECT * FROM users WHERE lastactivity >= SUBDATE( CURRENT_DATE, INTERVAL 1 HOUR)");
	$i = 0;
	while($b = mysql_fetch_array($a)){
		if(useronline($b['id'])){
			$i++;
		}
	}
	return $i;
}

function usr($id, $row){
	$a = mysql_query("SELECT * FROM users WHERE id = '".$id."'");
	if(mysql_num_rows($a) < 1){
		return 0;
	}elseif(mysql_num_rows($a) > 1){
		return 0;
	}else{
		$b = mysql_fetch_assoc($a);
		return $b[$row];
	}
}

function endate($input){
	$input = str_replace('January', 'January', $input);
	$input = str_replace('February', 'February', $input);
	$input = str_replace('March', 'March', $input);
	$input = str_replace('April', 'April', $input);
	$input = str_replace('May', 'May', $input);
	$input = str_replace('June', 'June', $input);
	$input = str_replace('July', 'July', $input);
	$input = str_replace('August', 'August ', $input);
	$input = str_replace('September', 'September', $input);
	$input = str_replace('October', 'October ', $input);
	$input = str_replace('November', 'November ', $input);
	$input = str_replace('December', 'December', $input);
	return $input;
}

function validemail($email){
	if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) {
		return true;
	}else{
		return false;
	}
}

function GenerateTicket(){
	$data = "ST-";
	for ($i=1; $i<=6; $i++){
		$data = $data . rand(0,9);		
	}
	$data = $data . "-";
	for ($i=1; $i<=20; $i++){
		$data = $data . rand(0,9);	
	}
	$data = $data . "-wood-fe";
	$data = $data . rand(0,5);
	return $data;
}

function dailycredits(){
	$stamp = date("dmy");
	mysql_query("DELETE FROM daily_credits WHERE stamp != '".$stamp."'");
	$sel = mysql_query("SELECT stamp FROM daily_credits");
	if(mysql_num_rows($sel) == 0){
		$se = mysql_query("SELECT id, lastactivity, credits FROM users WHERE lastactivity >= SUBDATE( CURRENT_DATE, INTERVAL 23 HOUR)");
		while($row = mysql_fetch_assoc($se)){
			mysql_query("INSERT INTO users_creditlog (userid, moment, type, activity) VALUES ('".$row['id']."', NOW(), 'web_internal', 500)");
			$phpdate = strtotime($row['lastactivity']);
			if(useronline($row['id'])){
				SendData("53".chr('1').$row['id'].chr('1').'500', false, 1);
			}else{
				mysql_query("UPDATE users SET credits = credits + 500 WHERE id = '".beveilig($cc['id'])."'");
			}
		}
		mysql_query("INSERT INTO daily_credits (stamp) VALUES ('".$stamp."')");
		SendData('1'.chr('1').'De dagelijkse credits zijn bij deze uitgegeven!<br>Veel plezier :)', false, 1);
	}
}

function IsValidName($nm = ''){
	if(preg_match('/^[a-z0-9]+$/i', $nm) && strlen($nm) >= 1 && strlen($nm) <= 32){
		return true;
	}
	return false;
}

function useronline($userid){
	$se = mysql_query("SELECT lastactivity FROM users WHERE id = '".$userid."' LIMIT 1");
	$row = mysql_fetch_assoc($se);
	$phpdate = strtotime($row['lastactivity']);
	if($phpdate >= (time() - 19000)){
		return true;
	}
	return false;
}

dailycredits();
?> 