<?php
/********************************************************************
** Knjižnica, kjer so zbrane funkcije za varno procesiranje kode	 **
** Author: Dave @ zabec.net	 												 **
** Date: 2007 						 												 **
********************************************************************/

/* funkcija preveri spremeljivko za SQL injection */
/**************************************************/
	function inputSQLcheck($text)
	{
		return mysql_real_escape_string($text);
	}

/* funkcija preveri spremeljivko za SQL injection & XSS injection */
/******************************************************************/
	function inputXSScheck($text)
	{
		return htmlspecialchars($text,ENT_QUOTES);
	}


function arrayXSScheck($a)
{
	foreach($a as $key => $val) if(is_array($val)) $a[$key] = arrayXSScheck($val); else $a[$key] = inputXSScheck($val);

	return $a;
}

/* funkcija preveri spremeljivko za XSS injection vendar dovoli HTML */
/*********************************************************************/
	function inputXSSallowHTML($text)
	{
		/*require_once("lib_phpfilter.php");
		$filter = new InputFilter();

		return $filter->process($text);*/
		return mysql_escape_string($text);
	}

/* funkcija naredi isto kot inputXSSallowHTML in odstrani html tage, razen tiste podane kot druga spremenljivka */
/* PRIMER : inputXSSallowHTMLstrip($_POST['vsebina'],'<p><a><h2><h3><strong><em><u><sub><sup><li><ol><ul>'); */
	function inputXSSallowHTMLstrip($text,$allow="default")
	{
		if($allow=="default"){
			$allow='<p><a><h1><h2><h3><strong><b><em><u><sub><sup><li><ol><ul><br>';
		}
		else{
			//mail("miha.erzen@zabec.net", "Allow", $allow);
		}
		$text = mysql_escape_string($text);
		$text = strip_tags($text, $allow);
		$regexpr = '/style=[\\\]*"?[^"]*[\\\]*"?/';
		$text = preg_replace($regexpr,'',$text);
		return $text;
	}

/* funkcija preveri spremeljivko za določeno vrednost */
/******************************************************/
	function checkStr($text, $type = "")
	{
		$return = false;
		switch($type)
		{
			case "alpha":
				if(preg_match("/[a-z ]/", $text))
				{
					$return = true;
				}
			break;
			case "num":
				if(is_numeric($text))
				{
					$return = true;
				}
			break;
			case "alphanum":
				if(preg_match("/[0-9a-z ]/", $text))
				{
					$return = true;
				}
			break;
			case "datum":
				if(preg_match("/^\d{2}\.\d{2}\.\d{4}$/", $text))
				{
					$return = true;
				}
			break;
			default:
				if ($text != "")
				{
					$return = true;
				}
			break;
		}
		return $return;
	}

/* Funkcija preveri če ima uporabnik pravice za ogled določenega dela strani
 * klicano iz: @ - index.php
 * 				@ - left_menu.php
 * $id_modul definira id modula za katerega preverimo dovoljenje dostopa
 */
function checkView($id_modul) {
	// 1 - dovoljeno branje in pisanje
	// 2 - dovoljeno branje
	// 3 - ni pravic
	global $db;
	if($id_modul == "nastavitve") {
		$id_modul = 1;
	}
	$result = $db->query("SELECT pravica FROM core_groups WHERE group_id = '$_SESSION[skupina]' AND modul_id = '$id_modul'");
	$r = $result->fetch();
	if($r['pravica'] == 1 OR $r['pravica'] == 2)	{
		return true;
	}
	else {
		return false;
	}
}

/* Funkcija preveri če ima uporabnik pravice za pisanje v določenem delu strani
 * klicano iz:
 * $id_modul definira id modula za katerega preverimo dovoljenje pisanja
 */
function checkWrite($id_modul) {
	global $db;
	//posebnost nastavitev
	if($id_modul == "nastavitve")	{
		$id_modul = 1;
	}
	$result = $db->query("SELECT pravica FROM core_groups WHERE group_id = '$_SESSION[skupina]' AND modul_id = '$id_modul'");
	$r = $result->fetch();
	if($r['pravica'] == 1) {
		return true;
	}
	else {
		return false;
	}
}

function noWritePermission()
{
	napaka($lang['pravice_no']);
}

?>