<?php

/*********************************************************************************
** The contents of this file are subject to the vtiger CRM Public License Version 1.0
 * ("License"); You may not use this file except in compliance with the License
 * The Original Code is:  vtiger CRM Open Source
 * The Initial Developer of the Original Code is vtiger.
 * Portions created by vtiger are Copyright (C) vtiger.
 * All Rights Reserved.
*
 ********************************************************************************/


require_once('include/database/PearDatabase.php');
require_once('include/utils.php');
include('config.php');
global $vtlog;
if(isset($_REQUEST['groupname']))
{
  $groupname = $_REQUEST['groupname'];
  $sql= "select user_name from users2group inner join users on users.id= users2group.userid where groupname='" .$_REQUEST['groupname'] ."'";
  $result = $adb->query($sql);
  $groupnameList = "";
$numRows=$adb->num_rows($result);
  if($numRows == 0)
    {
     header("Location: index.php?module=Users&action=listgroupmembers&nameofgroup=$groupname&groupmembers=0");
    }
		
  while($groupList=$adb->fetch_array($result))
  {
    $groupnameList = $groupnameList .$groupList['user_name'] .",";
  }
  //CAUTION: The url exceeded was happening because the variable names were the same and would have been set in session thereby getting into an infinite loop
  header("Location: index.php?module=Users&action=listgroupmembers&nameofgroup=$groupname&groupmembers=$groupnameList");
}
function getMailServerInfo($user)
{
	global $adb;
	//$sql= "select rolename from user2role where userid='" .$userid ."'";
   $sql = "select * from mail_accounts where status=1 and user_id=".$user->id;
        $result = $adb->query($sql);
	return $result;
}

function fetchUserRole($userid)
{
	global $adb;
	//$sql= "select rolename from user2role where userid='" .$userid ."'";
	$sql = "select roleid from user2role where userid='" .$userid ."'";
        $result = $adb->query($sql);
	$roleid=  $adb->query_result($result,0,"roleid");
	return $roleid;
}

function fetchUserProfileId($userid)
{
	global $adb;
	$sql = "select roleid from user2role where userid=" .$userid;
        $result = $adb->query($sql);
	$roleid=  $adb->query_result($result,0,"roleid");


	$sql1 = "select profileid from role2profile where roleid=" .$roleid;
        $result1 = $adb->query($sql1);
	$profileid=  $adb->query_result($result1,0,"profileid");
	return $profileid;
}

//added by dingjianting on 2005-10-23 for support public people
function fetchGroupUserids($groupnames) {
	global $adb;
	$sql= "select userid from users2group where groupname in (" .$groupnames.")";
	$result = $adb->query($sql);
	$groupuserids = "";
	$numRows=$adb->num_rows($result);
	for($i=0; $i<$numRows; $i++) 
	{
		$userid = $adb->query_result($result,$i,'userid');
		if($groupuserids != '') {
			$groupuserids .= ",'".$userid."'";
		} else {
			$groupuserids .= "'".$userid."'";
		}
	}
	return $groupuserids;
}

function fetchUserStatus($userid) {
	global $adb;
	$sql = "select status from users where id=".$userid;
	$result = $adb->query($sql);
	$status = $adb->query_result($result,0,"status");
	return $status;
}

function fetchUserGroups($userid)
{
	global $adb;
	$sql= "select groupname from users2group where userid='" .$userid ."'";
	//echo $sql;
	$result = $adb->query($sql);
	//store the groupnames in a comma separated string
	//echo 'count is ' .count($result);
	//added by dingjianting for support mutiple groups
	$num_rows = $adb->num_rows($result);
	$groupnames = '';
	for($i=0; $i<$num_rows; $i++)
	{
		$groupname = $adb->query_result($result,$i,'groupname');
		if($groupnames != '') {
			$groupnames .= ",'".$groupname."'";
		} else {
			$groupnames .= "'".$groupname."'";
		}
		
	}
	//if($adb->num_rows($result)!=0)	$groupname=  $adb->query_result($result,0,"groupname");
	return $groupnames;
}

function fetchUserGroupsArray($userid)
{
	global $adb;
	$sql= "select groupname from users2group where userid='" .$userid ."'";
	//echo $sql;
	$result = $adb->query($sql);
	//store the groupnames in a comma separated string
	//echo 'count is ' .count($result);
	//added by dingjianting for support mutiple groups
	$num_rows = $adb->num_rows($result);
	$group_array = Array();
	for($i=0; $i<$num_rows; $i++)
	{
		$groupname = $adb->query_result($result,$i,'groupname');		
		$group_array[] = $groupname;
	}
	//if($adb->num_rows($result)!=0)	$groupname=  $adb->query_result($result,0,"groupname");
	return $group_array;
}

function getAllTabsPermission($profileid)
{
	global $adb,$MAX_TAB_PER;
	$sql = "select * from profile2tab where profileid=" .$profileid ;
	$result = $adb->query($sql);
	$tab_perr_array = Array();
	if($MAX_TAB_PER !='')
	{
		$tab_perr_array = array_fill(0,$MAX_TAB_PER,0);
	}
	$num_rows = $adb->num_rows($result);
	for($i=0; $i<$num_rows; $i++)
	{
		$tabid= $adb->query_result($result,$i,'tabid');
		$tab_per= $adb->query_result($result,$i,'permissions');
		$tab_perr_array[$tabid] = $tab_per;
	}		
	return $tab_perr_array; 

}

function getTabsPermission($profileid)
{
	global $adb;
	$sql = "select * from profile2tab where profileid=" .$profileid ;
	$result = $adb->query($sql);
	$tab_perr_array = Array();
	$num_rows = $adb->num_rows($result);
	for($i=0; $i<$num_rows; $i++)
	{
		$tabid= $adb->query_result($result,$i,'tabid');
		$tab_per= $adb->query_result($result,$i,'permissions');
		if($tabid != 1 && $tabid != 3 && $tabid != 16 && $tab_id != 15 && $tab_id != 17 && $tab_id != 18 && $tab_id != 19 && $tab_id != 22)
		{
			$tab_perr_array[$tabid] = $tab_per;
		}
	}		
	return $tab_perr_array; 

}

function getTabsActionPermission($profileid)
{
	global $adb;
	$check = Array(); 	
	$sql1 = "select tabid from profile2tab where profileid=" .$profileid;
	$result1 = $adb->query($sql1);
	$num_rows1 = $adb->num_rows($result1);
	for($i=0; $i<$num_rows1; $i++)
	{
		$access = Array();
		$tab_id = $adb->query_result($result1,$i,'tabid');

		if($tab_id != 1 && $tab_id != 3 && $tab_id != 15 && $tab_id !=16  && $tab_id != 17 && $tab_id != 18 && $tab_id != 19 && $tab_id != 22)
		{
			//Inserting the Standard Actions into the Array	
			$sql= "select * from profile2standardpermissions where profileid =".$profileid." and tabid=".$tab_id;
			$result = $adb->query($sql);
			$num_rows = $adb->num_rows($result);
			for($j=0; $j<$num_rows; $j++)
			{
				$action_id = $adb->query_result($result,$j,'operation');
				$per_id = $adb->query_result($result,$j,'permissions');
				$access[$action_id] = $per_id;
			}

			//Inserting into the global Array
			$check[$tab_id] = $access;
		}

	}			

	return $check;
}

function getTabsUtilityActionPermission($profileid)
{
	global $adb;
	$check = Array(); 	
	$sql1 = "select tabid from profile2tab where profileid=" .$profileid;
	$result1 = $adb->query($sql1);
	$num_rows1 = $adb->num_rows($result1);
	for($i=0; $i<$num_rows1; $i++)
	{
		$access = Array();
		$tab_id = $adb->query_result($result1,$i,'tabid');

		if($tab_id != 1 && $tab_id != 3 && $tab_id != 16 && $tab_id != 15  && $tab_id != 17 && $tab_id != 18 && $tab_id != 19 && $tab_id != 22)
		{
			//Inserting the Standard Actions into the Array	
			$sql= "select * from profile2utility where profileid =".$profileid." and tabid=".$tab_id;
			$result = $adb->query($sql);
			$num_rows = $adb->num_rows($result);
			for($j=0; $j<$num_rows; $j++)
			{
				$action_id = $adb->query_result($result,$j,'activityid');
				$per_id = $adb->query_result($result,$j,'permission');
				$access[$action_id] = $per_id;
			}

			//Inserting into the global Array
			$check[$tab_id] = $access;
		}

	}			

	return $check;
}

function getDefaultSharingAction()
{
	global $adb;
	//retreiving the standard permissions	
	$sql= "select * from def_org_share";
	$result = $adb->query($sql);
	$permissionRow=$adb->fetch_array($result);
	do
	{
		for($j=0;$j<count($permissionRow);$j++)
		{
			$copy[$permissionRow[1]]=$permissionRow[2];
		}

	}while($permissionRow=$adb->fetch_array($result));

	return $copy;

}

function setPermittedTabs2Session($profileid)
{
  global $adb;
  $sql = "select tabid from profile2tab where profileid=" .$profileid ." and permissions =0" ;
  $result = $adb->query($sql);
  
  $tabPermission=$adb->fetch_array($result);
  $i=0;
  do
  {
    for($j=0;$j<count($tabPermission);$j++)
    {
      $copy[$i]=$tabPermission["tabid"];
    }
    $i++;
    
  }while($tabPermission=$adb->fetch_array($result));
  
  $_SESSION['tab_permission_set']=$copy;
  
}

function setPermittedActions2Session($profileid)
{
  global $adb;
  $check = Array(); 	
  $sql1 = "select tabid from profile2tab where profileid=" .$profileid ." and permissions =0" ;
  $result1 = $adb->query($sql1);
  $num_rows1 = $adb->num_rows($result1);
  for($i=0; $i<$num_rows1; $i++)
  {
	$access = Array();
	$tab_id = $adb->query_result($result1,$i,'tabid');
	
	//echo 'tab is '.$tab_id;
	//echo '<BR>';

	//Inserting the Standard Actions into the Array	
	$sql= "select * from profile2standardpermissions where profileid =".$profileid." and tabid=".$tab_id;
	$result = $adb->query($sql);
	$num_rows = $adb->num_rows($result);
	for($j=0; $j<$num_rows; $j++)
	{
		$action_id = $adb->query_result($result,$j,'operation');
		//echo 'action is '.$action_id;
		//echo '<BR>';
		$per_id = $adb->query_result($result,$j,'permissions');
		//echo 'permission is '.$per_id;
		//echo '<BR>';
		$access[$action_id] = $per_id;
	}
	
	//Inserting the utility Actions into the Array
	$sql2= "select * from profile2utility where profileid =".$profileid." and tabid=".$tab_id;
	$result2 = $adb->query($sql2);
	$num_rows2 = $adb->num_rows($result2);
	for($k=0; $k<$num_rows2; $k++)
	{
		$action_id = $adb->query_result($result2,$k,'activityid');
		//echo 'action is '.$action_id;
		//echo '<BR>';
		$per_id = $adb->query_result($result2,$k,'permission');
		//echo 'permission is '.$per_id;
		//echo '<BR>';
		$access[$action_id] = $per_id;
	}

	//Inserting into the global Array
	$check[$tab_id] = $access;
	
  }			
  	
 $_SESSION['action_permission_set']=$check;
}

function setPermittedDefaultSharingAction2Session($profileid)
{
	global $adb;
	//retreiving the standard permissions	
	//$sql= "select default_org_sharingrule.* from default_org_sharingrule inner join profile2tab on profile2tab.tabid = default_org_sharingrule.tabid where profile2tab.permissions =0 and profile2tab.profileid=".$profileid;
	$sql = "select * from def_org_share";
	$result = $adb->query($sql);
	$permissionRow=$adb->fetch_array($result);
	do
	{
		for($j=0;$j<count($permissionRow);$j++)
		{
			$copy[$permissionRow[1]]=$permissionRow[2];
		}

	}while($permissionRow=$adb->fetch_array($result));
    
	$_SESSION['defaultaction_sharing_permission_set']=$copy;

}

function createNewRole($roleName,$parentRoleName)
{
  global $adb;
  $sql = "insert into role(name) values('" .$roleName ."')";
  $result = $adb->query($sql); 
  populatePermissions4NewRole($parentRoleName,$roleName);
  header("Location: index.php?module=Users&action=listroles");
}


function createNewGroup($groupName,$groupDescription)
{
  global $adb;
  $sql = "insert into groups(name,description) values('" .$groupName ."','". $groupDescription ."')";
  $result = $adb->query($sql); 
  header("Location: index.php?module=Users&action=listgroups");
}



function fetchTabId($moduleName)
{
  global $adb;
  $sql = "select id from tabu where name ='" .$moduleName ."'";
  $result = $adb->query($sql); 
  $tabid =  $adb->query_result($result,0,"id");
  return $tabid;

}

/*
if(isset($_REQUEST['roleName']))
{
  $roleName = $_REQUEST['roleName'];
  //echo $roleName;
  $parentRoleName = $_REQUEST['parentRoleName'];
  //echo 'PARENT ROLE IS '.$parentRoleName;
  createNewRole($roleName,$parentRoleName);
  
}*/

function populatePermissions4NewRole($parentroleName,$roleName)
{
  global $adb;
  //fetch the permissions for the parent role
  $referenceValues = fetchTabReferenceEntityValues($parentroleName);

  while($permissionRow = $adb->fetch_array($referenceValues))
  {
    $sql_insert="insert into role2tab(rolename,tabid,module_permission,description) values('" .$roleName ."'," .$permissionRow['tabid'] ."," .$permissionRow['module_permission'] .", '')";

    //echo $sql_insert;
    $adb->query($sql_insert);
  }

  $actionreferenceValues = fetchActionReferenceEntityValues($parentroleName);
  while($permissionRow = $adb->fetch_array($actionreferenceValues))
  {
    $sql_insert="insert into role2action(rolename,tabid,actionname,action_permission,description) values('" .$roleName ."'," .$permissionRow['tabid'] .",'" .$permissionRow['actionname'] ."'," .$permissionRow['action_permission'] .", '')";
    //echo $sql_insert;
    $adb->query($sql_insert);
  }
  
}


function fetchTabReferenceEntityValues($parentrolename)
{
  global $adb;
  $sql = "select tabid,module_permission,description from role2tab where rolename='" .$parentrolename ."'"; 
  //echo $sql;
  $result=$adb->query($sql);
  return $result;

}



function fetchActionReferenceEntityValues($parentrolename)
{
  global $adb;
  $sql = "select tabid,actionname,action_permission,description from role2action where rolename='" .$parentrolename ."'"; 
    $result=$adb->query($sql);
  return $result;
}


function fetchRoleId($rolename)
{

  global $adb;
  $sqlfetchroleid = "select roleid from role where name='".$rolename ."'";
  $resultroleid = $adb->query($sqlfetchroleid);
  $role_id = $adb->query_result($resultroleid,0,"roleid");
  return $role_id;
}

function updateUser2RoleMapping($roleid,$userid)
{
  global $adb;
  //Check if row already exists
  $sqlcheck = "select * from user2role where userid=".$userid;
  $resultcheck = $adb->query($sqlcheck);
  if($adb->num_rows($resultcheck) == 1)
  {
  	$sqldelete = "delete from user2role where userid=".$userid;
  	$result_delete = $adb->query($sqldelete);
  }	
  $sql = "insert into user2role(userid,roleid) values(" .$userid ."," .$roleid .")";
  $result = $adb->query($sql);

}




function updateUsers2GroupMapping($groupname,$userid,$isDel=true)
{
  global $adb;
  if($isDel) {
	  $sqldelete = "delete from users2group where userid = '" .$userid ."'";
	  $result_delete = $adb->query($sqldelete);
  }
  $sql = "insert into users2group(groupname,userid) values('" .$groupname ."','" .$userid ."')";
  $result = $adb->query($sql);
}

function insertUser2RoleMapping($roleid,$userid)
{

  global $adb;	
  $sql = "insert into user2role(userid,roleid) values('" .$userid ."','" .$roleid ."')";
 $adb->query($sql); 

}


function insertUsers2GroupMapping($groupname,$userid)
{
  global $adb;
  $sql = "insert into users2group(groupname,userid) values('" .$groupname ."','" .$userid ."')";
  $adb->query($sql);
}





if(isset($_REQUEST['actiontype']))
{
  if($_REQUEST['actiontype'] == 'createnewgroup')
  {
    $groupname = $_REQUEST['groupName'];
    $description = $_REQUEST['groupDescription'];
    //get the new group name
    createNewGroup($groupname,$description);
    
  }
}

function fetchWordTemplateList($module)
{
  global $adb;
  $sql_word = "select filename from wordtemplates where module ='".$module."'" ; 
  $result=$adb->query($sql_word);
  return $result;
}




function fetchEmailTemplateInfo($templateName)
{
	global $adb;
        $sql= "select * from emailtemplates where templatename='" .$templateName ."'";
        $result = $adb->query($sql);
        return $result;
}

//template file 
function substituteTokens($filename,$globals)
{
	global $vtlog;
	$vtlog->logthis("in substituteTokens method  with filename ".$filename.' and content globals as '.$globals,'debug');  

	global $root_directory;
	//$globals = implode(",\\$",$tokens);
    
	if (!$filename)
	 {

	$vtlog->logthis("filename is not set in substituteTokens",'debug');  
		 $filename = $this->filename;
	$vtlog->logthis("filename is not set in substituteTokens so taking default filename",'debug');  
	 }
	
    if (!$dump = file ($filename))
	 {
	$vtlog->logthis("not able to create the file or get access to the file with filename ".$filename." so returning 0",'debug');  
     		 return 0;
    	 }	

	$vtlog->logthis("about to start replacing the tokens",'debug');  
      require_once($root_directory .'/modules/Emails/templates/testemailtemplateusage.php');
      eval ("global $globals; ");
    while (list($key,$val) = each($dump))
    {
	$replacedString ;
      if (ereg( "\$",$val)) 
	{
        $val = addslashes ($val);      
	$vtlog->logthis("token is ".$val,'debug');  
        eval(  "\$val = \"$val\";");
        $val = stripslashes ($val);
	$replacedString .= $val;
      }
    }

	$vtlog->logthis("the replacedString  is ".$replacedString,'debug');  
	return $replacedString;
}



function insert2SalesorderGroupRelation($salesorderid,$groupname)
{
  global $adb;
  $sql = "insert into salesordergrouprelation values (" .$salesorderid .",'".$groupname."')";
  $adb->query($sql);

}

function updateSalesorderGroupRelation($salesorderid,$groupname)
{
  global $adb;
  $sqldelete = "delete from salesordergrouprelation where salesorderid=".$salesorderid;
  $adb->query($sqldelete);
  $sql = "insert into salesordergrouprelation values (".$salesorderid .",'" .$groupname ."')";  
  $adb->query($sql);

}

function insert2PurchaseorderGroupRelation($purchaseorderid,$groupname)
{
  global $adb;
  $sql = "insert into purchaseordergrouprelation values (" .$purchaseorderid .",'".$groupname."')";
  $adb->query($sql);

}

function updatePurchaseorderGroupRelation($purchaseorderid,$groupname)
{
  global $adb;
  $sqldelete = "delete from purchaseordergrouprelation where purchaseorderid=".$purchaseorderid;
  $adb->query($sqldelete);
  $sql = "insert into purchaseordergrouprelation values (".$purchaseorderid .",'" .$groupname ."')";  
  $adb->query($sql);

}

function insert2QuoteGroupRelation($quoteid,$groupname)
{
  global $adb;
  $sql = "insert into quotegrouprelation values (" .$quoteid .",'".$groupname."')";
  $adb->query($sql);

}

function updateQuoteGroupRelation($quoteid,$groupname)
{
  global $adb;
  $sqldelete = "delete from quotegrouprelation where quoteid=".$quoteid;
  $adb->query($sqldelete);
  $sql = "insert into quotegrouprelation values (".$quoteid .",'" .$groupname ."')";  
  $adb->query($sql);

}

function insert2EmailGroupRelation($emailid,$groupname)
{
  global $adb;
  $sql = "insert into emailgrouprelation values (" .$emailid .",'".$groupname."')";
  $adb->query($sql);

}

function updateEmailGroupRelation($emailid,$groupname)
{
  global $adb;
  $sqldelete = "delete from emailgrouprelation where emailid=".$emailid;
  $adb->query($sqldelete);
  $sql = "insert into emailgrouprelation values (".$emailid .",'" .$groupname ."')";  
  $adb->query($sql);

}

function insert2PotentialGroupRelation($potentialid,$groupname)
{
  global $adb;
  $sql = "insert into potentialgrouprelation values (" .$potentialid .",'".$groupname."')";
  $adb->query($sql);

}

function updatePotentialGroupRelation($potentialid,$groupname)
{
  global $adb;
  $sqldelete = "delete from potentialgrouprelation where potentialid=".$potentialid;
  $adb->query($sqldelete);
  $sql = "insert into potentialgrouprelation values (".$potentialid .",'" .$groupname ."')";  
  $adb->query($sql);

}

function insert2ContactGroupRelation($contactid,$groupname)
{
  global $adb;
  $sql = "insert into contactgrouprelation values (" .$contactid .",'".$groupname."')";
  $adb->query($sql);

}

function updateContactGroupRelation($contactid,$groupname)
{
  global $adb;
  $sqldelete = "delete from contactgrouprelation where contactid=".$contactid;
  $adb->query($sqldelete);
  $sql = "insert into contactgrouprelation values (".$contactid .",'" .$groupname ."')";  
  $adb->query($sql);

}

function insert2InvoiceGroupRelation($invoiceid,$groupname)
{
  global $adb;
  $sql = "insert into invoicegrouprelation values (" .$invoiceid .",'".$groupname."')";
  $adb->query($sql);

}

function updateInvoiceGroupRelation($invoiceid,$groupname)
{
  global $adb;
  $sqldelete = "delete from invoicegrouprelation where invoiceid=".$invoiceid;
  $adb->query($sqldelete);
  $sql = "insert into invoicegrouprelation values (".$invoiceid .",'" .$groupname ."')";  
  $adb->query($sql);

}

function insert2AccountGroupRelation($accountid,$groupname)
{
  global $adb;
  $sql = "insert into accountgrouprelation values (" .$accountid .",'".$groupname."')";
  $adb->query($sql);

}

function updateAccountGroupRelation($accountid,$groupname)
{
  global $adb;
  $sqldelete = "delete from accountgrouprelation where accountid=".$accountid;
  $adb->query($sqldelete);
  $sql = "insert into accountgrouprelation values (".$accountid .",'" .$groupname ."')";  
  $adb->query($sql);

}

function insert2NoteGroupRelation($noteid,$groupname)
{
  global $adb;
  $sql = "insert into notegrouprelation values (" .$noteid .",'".$groupname."')";
  $adb->query($sql);

}

function updateNoteGroupRelation($noteid,$groupname)
{
  global $adb;
  $sqldelete = "delete from notegrouprelation where noteid=".$noteid;
  $adb->query($sqldelete);
  $sql = "insert into notegrouprelation values (".$noteid .",'" .$groupname ."')";  
  $adb->query($sql);

}

function insert2LeadGroupRelation($leadid,$groupname)
{
global $adb;
  $sql = "insert into leadgrouprelation values (" .$leadid .",'".$groupname."')";
  $adb->query($sql);

}

function updateLeadGroupRelation($leadid,$groupname)
{
 global $adb;
  $sqldelete = "delete from leadgrouprelation where leadid=".$leadid;
  $adb->query($sqldelete);
  $sql = "insert into leadgrouprelation values (".$leadid .",'" .$groupname ."')";  
  $adb->query($sql);

}
function updateTicketGroupRelation($ticketid,$groupname)
{
 global $adb;
  $sqldelete = "delete from ticketgrouprelation where ticketid=".$ticketid;
  $adb->query($sqldelete);
  $sql = "insert into ticketgrouprelation values (".$ticketid .",'" .$groupname ."')";  
  $adb->query($sql);

}

function insert2ActivityGroupRelation($activityid,$groupname)
{
global $adb;
  $sql = "insert into activitygrouprelation values (" .$activityid .",'".$groupname."')";
  $adb->query($sql);

}

function insert2TicketGroupRelation($ticketid,$groupname)
{
global $adb;
  $sql = "insert into ticketgrouprelation values (" .$ticketid .",'".$groupname."')";
  $adb->query($sql);

}

function updateActivityGroupRelation($activityid,$groupname)
{
	global $adb;
  $sqldelete = "delete from activitygrouprelation where activityid=".$activityid;
  $adb->query($sqldelete);
  $sql = "insert into activitygrouprelation values (".$activityid .",'" .$groupname ."')";  
  $adb->query($sql);

}

function getFieldList($fld_module, $profileid)
{
        global $adb;
        if($fld_module == "Accounts")
        {
                $tabid = 5;
        }
        $query = "select * from profile2field where profileid =".$profileid." and tabid=".$tabid;
        //echo $query;
        $result = $adb->query($query);
        return $result;
}

function getFieldVisibilityArray($fld_module, $profileid)
{
	global $adb;
        if($fld_module == "Accounts")
        {
                $tabid = 5;
        }
        $query = "select * from profile2field where profileid =".$profileid." and tabid=".$tabid;
        //echo $query;
        $result = $adb->query($query);
	$fldVisbArray = Array();
	$noofrows = $adb->num_rows($fieldListResult);
	for($i=0; $i<$noofrows; $i++)
	{
		$fld_name = $adb->query_result($fieldListResult,$i,"fieldname");
		$fldVisbArray[$fld_name] = $adb->query_result($fieldListResult,$i,"visible");	
	}
	return $fldVisbArray;	
	
}

function getFieldReadOnlyArray($fld_module, $profileid)
{
	global $adb;
        if($fld_module == "Accounts")
        {
                $tabid = 5;
        }
        $query = "select * from profile2field where profileid =".$profileid." and tabid=".$tabid;
        //echo $query;
        $result = $adb->query($query);
	$fldReadOnlyArray = Array();
	$noofrows = $adb->num_rows($fieldListResult);
	for($i=0; $i<$noofrows; $i++)
	{
		$fld_name = $adb->query_result($fieldListResult,$i,"fieldname");
		$fldReadOnlyArray[$fld_name] = $adb->query_result($fieldListResult,$i,"readonly");	
	}
	
	return $fldReadOnlyArray;	
}

function getRecordOwnerId($module, $record)
{
	global $adb;
	if($module == "Accounts")
	{
		$table_name = "accounts";
	}
	elseif($module == "Leads")
	{
		$table_name = "leads";
	}
	elseif($module == "Contacts")
	{
		$table_name = "contacts";
	}
	elseif($module == "Potentials")
	{
		$table_name = "potential";
	}

	$query = "select assigned_user_id from ".$table_name." where id='".$record."'";
	$result = $adb->query($query);
	$user_id = $adb->query_result($result,0,"assigned_user_id");
	return $user_id;	
		
}

function getRoleName($roleid)
{
	global $adb;
	$sql1 = "select * from role where roleid=".$roleid;
	$result = $adb->query($sql1);
	$rolename = $adb->query_result($result,0,"name");
	return $rolename;	
}

function getProfileName($profileid)
{
	global $adb;
	$sql1 = "select * from profile where profileid=".$profileid;
	$result = $adb->query($sql1);
	$profilename = $adb->query_result($result,0,"profilename");
	return $profilename;	
}

function isPermitted($module,$actionid,$record_id)
{
    global $current_user;
	$permission = "no";
	/*
	if(is_admin($current_user)) {		
		$permission = "yes";
	} else {
		if($record_id == '') {
			return "yes";
		}
		if($module == 'Users' || $module == 'Home' || $module == 'Administration' || $module == 'uploads' ||  $module == 'Settings' || $module == 'Calendar')
		{
			//These modules done have security
			$permission = "yes";

		} else {
			if(checkSecurity($record_id,$module)) {
				$permission = "yes";
			}
			
		}
	}
	return $permission;
	*/
	//added by dingjianting on 2005-10-15 for permition
	
	global $current_user;
	if(is_admin($current_user)) {		
		$permission = "yes";
	} else {
		if($module == 'Users' || $module == 'Home' || $module == 'Administration' || $module == 'uploads' ||  $module == 'Settings' || $module == 'Calendar')
		{
			//These modules done have security
			$permission = "yes";

		}
		else
		{	
			global $adb;
			global $current_user;
			$tabid = getTabid($module);
			//echo "tab id is ".$tabid;
			//echo '<BR>';
			$action = getActionname($actionid);
			$profile_id = $_SESSION['authenticated_user_profileid'];
			$tab_per_Data = getAllTabsPermission($profile_id);

			$permissionData = $_SESSION['action_permission_set'];
			$defSharingPermissionData = $_SESSION['defaultaction_sharing_permission_set'];
			$others_permission_id = $defSharingPermissionData[$tabid];

			//Checking whether this tab is allowed
			if($tab_per_Data[$tabid] == 0)
			{
				//echo "inside tab permission success";
				//echo '<BR>';
				$permission = 'yes';
				//Checking whether this action is allowed
				if($permissionData[$tabid][$actionid] == 0)
				{
					//echo "inside action permission success";
								//echo '<BR>';	
					$permission = 'yes';
					/*
					$rec_owner_id = '';
					if($record_id != '' && $module != 'Notes' && $module != 'Products' && $module != 'Faq' && $module != 'Vendor'  && $module != 'PriceBook')
					{
						$rec_owner_id = getUserId($record_id);
					}
					*/

					//if($record_id != '' && $others_permission_id != '' && $module != 'Notes' && $module != 'Products' && $module != 'Faq' && $module != 'Vendor' && $module != 'PriceBook' && $rec_owner_id != 0)
					if($record_id != '' && $others_permission_id != '' && $module != 'Products' && $module != 'Faq' && $module != 'Vendor' && $module != 'PriceBook')
					{
						//echo "inside other permission success";
										//echo '<BR>';
						//Checking for Default Sharing Permission
						//$rec_owner_id = getUserId($record_id);
						//if($rec_owner_id != $current_user->id)
						if(!checkSecurity($record_id,$module))
						{
							if($others_permission_id == 0)
							{
								if($action == 'EditView' || $action == 'Delete')
								{
									$permission = "no";	
								}
								else
								{
									$permission = "yes";
								}
							}
							elseif($others_permission_id == 1)
							{
								if($action == 'Delete')
								{
									$permission = "no";
								}
								else
								{
									$permission = "yes";
								}
							}
							elseif($others_permission_id == 2)
							{

								$permission = "yes";
							}
							elseif($others_permission_id == 3)
							{
								if($action == 'DetailView' || $action == 'EditView' || $action == 'Delete')
								{
									$permission = "no";
								}
								else
								{
									$permission = "yes";
								}
							}


						}
						else
						{
							$permission = "yes";	
						}	
					}
				}
				else
				{
					$permission = "no";
				}		
			}
			else
			{
				$permission = "no";
			}		
		}
	}
	
	return $permission;
	

}



function isAllowed_Outlook($module,$action,$user_id,$record_id)
{

	$permission = "no";
	if($module == 'Users' || $module == 'Home' || $module == 'Administration' || $module == 'uploads' ||  $module == 'Settings' || $module == 'Calendar')
	{
		//These modules done have security
		$permission = "yes";

	}
	else
	{	
		global $adb;
		global $current_user;
		$tabid = getTabid($module);
		//echo "tab id is ".$tabid;
		//echo '<BR>';
		$actionid = getActionid($action);
		$profile_id = fetchUserProfileId($user_id);
		$tab_per_Data = getAllTabsPermission($profile_id);

		$permissionData = getTabsActionPermission($profile_id); 
		$defSharingPermissionData = getDefaultSharingAction();
		$others_permission_id = $defSharingPermissionData[$tabid];

		//Checking whether this tab is allowed
		if($tab_per_Data[$tabid] == 0)
		{
			//echo "inside tab permission success";
			//echo '<BR>';
			$permission = 'yes';
			//Checking whether this action is allowed
			if($permissionData[$tabid][$actionid] == 0)
			{
				//echo "inside action permission success";
	                        //echo '<BR>';	
				$permission = 'yes';
				$rec_owner_id = '';
				if($record_id != '' && $module != 'Notes' && $module != 'Products' && $module != 'Faq')
				{
					$rec_owner_id = getUserId($record_id);
				}

				if($record_id != '' && $others_permission_id != '' && $module != 'Notes' && $module != 'Products' && $module != 'Faq' && $rec_owner_id != 0)
				{
					//echo "inside other permission success";
                                	//echo '<BR>';
					//Checking for Default Sharing Permission
					//$rec_owner_id = getUserId($record_id);
					if($rec_owner_id != $current_user->id)
					{
						if($others_permission_id == 0)
						{
							if($action == 'EditView' || $action == 'Delete')
							{
								$permission = "no";	
							}
							else
							{
								$permission = "yes";
							}
						}
						elseif($others_permission_id == 1)
						{
							if($action == 'Delete')
							{
								$permission = "no";
							}
							else
							{
								$permission = "yes";
							}
						}
						elseif($others_permission_id == 2)
						{

							$permission = "yes";
						}
						elseif($others_permission_id == 3)
						{
							if($action == 'DetailView' || $action == 'EditView' || $action == 'Delete')
							{
								$permission = "no";
							}
							else
							{
								$permission = "yes";
							}
						}


					}
					else
					{
						$permission = "yes";	
					}	
				}
			}
			else
			{
				$permission = "no";
			}		
		}
		else
		{
			$permission = "no";
		}		
	}
	return $permission;

}
?>
