<?

class entitlement extends user{

	var $type;
	var $post;
	var $user_list;
	var $user_id;
	var $user_type_id;

function entitlement($post=''){

	global $menu; // menu áthozatala

	$this->screen=1;
	//$this->menu=$menu->fullmenu($nodefault=1);
	$this->post=$post;

	$this->type=array(
		array(name=>'Csoportok',value=>user_type),
		array(name=>'Felhasználók',value=>user)
		);

	$this->tablename='activity_auth';
	if($post[save]==1) $this->checkPostData();

	if($this->what_type=$post[what_list]){
		switch($post[what_list]){
			case 'user':
				$this->getUserData();
				$this->checkEntitlement();
			break;
			case 'user_type':
				$this->getGroupData();
				$this->checkEntitlement();
			break;
		}
	$this->what_list_str=$this->arrayToString3($this->what,'id');
	}

//echo "<pre>";print_r($post);

}

function checkEntitlement($param){
	
	//	A param formaja:   array(FIELD 		=> value )
	//	pelda:			   array('menu_id'	=> 134   )	
	//  lehetseges field-ek: menu_id, content_type_id, riport_id

	global $dbi,$auth;
	
	if(!$this->user_id=$auth->uid){
		//echo "no UID!";
		//return false;
		$this->user_id=0;
	}
	if(!isset($this->user_type_id)) $this->user_type_id=$auth->user_data[type]?$auth->user_data[type]:0;
	
	if(sizeof($param)>1){
		echo "Wrong call!";
		return false;
	}
	foreach($param as $k => $p){
		if($k!='menu_id') $ent=sql_check_field('activity_auth',$k);
		else $ent=1;
		if($ent){
			$sql_param=" and ".$k."=".$p;
		}
	}	

	// USER jog ellenorzes
	$sql="select auth_value from activity_auth a "
		." inner join activity c on c.activity_id=a.activity_id "
		." where id=".$this->user_id." and id_type='user'"
		." $sql_param and a.activity_id=1";

	$res=sql_query($sql,$dbi);
	list($user)=sql_fetch_array($res,$dbi);

	// CSOPORT jog ellenorzes
	$sql="select auth_value from activity_auth a "
		." inner join activity c on c.activity_id=a.activity_id "
		." where id=".$this->user_type_id." and id_type='user_type'"
		." $sql_param and a.activity_id=1";

	$res=sql_query($sql,$dbi);
	list($group)=sql_fetch_array($res,$dbi);

	// orokles csoporttol kombinalva a user joggal
	if($group && ( !isset($user) || ( isset($user) && $user!=0 ) ) ){
		return true;
	}elseif(isset($user) && $user==1){
		return true;
	}

	return false;
}



function arrayToString3($data,$key){

	if(!is_array($data)) return '0';

	$i=0;
	foreach($data as $item){
		$i++;
		$str.=$item[$key];
		if($i<sizeof($data)) $str.=",";
	}
	return $str;

}
/*
function checkEntitlement(){

	global $dbi;

	if(!is_array($this->what)) return false;

	$this->tablename='activity_auth';
	$menu=$this->menu;
	$what=$this->what;

	foreach($menu as $key => $item){ // a menüből
		$menu_id=$item[id];
		if(is_array($item[act])) foreach($item[act] as $act_key => $act_item){ // legyűjteni a tevékenységet
			$act_id=$act_item[id];
			foreach($what as $what_key => $what_item){ // melyik user/csoport milyen értékkel rendelkezik
				$what_id=$what_item[id];
				$sql="select auth_value from $this->tablename where activity_id=$act_id and menu_id=$menu_id and id=$what_id and id_type='$this->what_type' ";
				$res=sql_query($sql,$dbi);
				$d=sql_fetch_array($res,$dbi);
				$menu[$key][act][$act_key][ent_value][$what_id]=$this->EntValue($d[auth_value]);
			}
		}

		// submenu-re is
		if(is_array($item[submenu]))
		foreach($item[submenu] as $submenu_key => $submenu_item){ // legyűjteni az almenüket
			$submenu_id=$submenu_item[id];
			if(is_array($submenu_item[act])) foreach($submenu_item[act] as $act_key => $act_item){ // legyűjteni a tevékenységet
				$act_id=$act_item[id];
				foreach($what as $what_key => $what_item){ // melyik user/csoport milyen értékkel rendelkezik
					$what_id=$what_item[id];
					$sql="select auth_value from $this->tablename where activity_id=$act_id and menu_id=$submenu_id and id=$what_id and id_type='$this->what_type' ";
					$res=sql_query($sql,$dbi);
					$d=sql_fetch_array($res,$dbi);
					$menu[$key][submenu][$submenu_key][act][$act_key][ent_value][$what_id]=$this->EntValue($d[auth_value]);
				}
			}
		}
	}

	$this->menu=$menu;
}
*/
function EntValue($data){
	if($data=='1') return 'yes';
	elseif($data=='0') return 'no';
	else return 'empty_checkbox';
}

function checkPostData(){

	global $dbi;

	$data=$this->post;

	$valtozas=$data[valtozas];

	if(!is_array($valtozas) || !sizeof($valtozas)) return false;

	// mely típustól várjuk az adatot
	$type=$data[what_list];

	foreach($data as $key => $value){

		if(in_array($key,$valtozas) && strstr($key,'#') && $value!=''){

			list($kuka,$menu_id,$act_id,$id)=split('#',$key);

			// előző értékek törlése
			$this->sql_where=" where activity_id=$act_id and menu_id=$menu_id and id=$id and id_type='$type' ";

			// már megvan a this->tablename
			sql_query("delete from ".$this->tablename.$this->sql_where,$dbi);

			// újak mentése
			$sql="insert into $this->tablename (activity_id,menu_id,id,id_type,auth_value) values ($act_id,$menu_id,$id,'$type','$value')";
			sql_query($sql,$dbi);
		}
	}

}


function getUserData(){

			$data=user::getUserList();
			$this->user_list=$data;
			if($uid_list=$this->post[uid_list]){
				foreach($uid_list as $user_id){
						foreach($this->user_list as $key => $item){
							if($item[id]==$user_id){
								$what[]=array(id=>$user_id,name=>$item[login],login=>$item[fname]." ".$item[lname],user_type=>$item[user_type]);
							}
						}
						$user_list_sel[$user_id]=1;
				}
				$this->user_list_sel=$user_list_sel;
				$this->what=$what;
			}

}

function getGroupData(){

			$data=user::getUserTypeList();
			$this->type_list=$data;
			if($uid_list=$this->post[uid_list]){
				foreach($uid_list as $id){
					foreach($this->type_list as $key => $item){
						if($item[id]==$id){
							$what[]=array(id=>$id,name=>$item[type]);
						}
					}
					$type_list_sel[$id]=1;
				}
				$this->user_list_sel=$type_list_sel;
				$this->what=$what;
			}
}

} // end class

?>