id=$_SESSION['g_user']; $this->pass=$_SESSION['g_pass']; $this->valid=(isset ($_SESSION['isValid']))?1:0; $this->db=$p_cn; if ( isset($_SESSION['g_theme']) ) $this->theme=$_SESSION['g_theme']; $this->admin=( isset($_SESSION['use_admin']) )?$_SESSION['use_admin']:0; if ( isset($_SESSION['use_name']) ) $this->name=$_SESSION['use_name']; if ( isset($_SESSION['use_first_name']) ) $this->first_name=$_SESSION['use_first_name']; } else // if p_id is set get data of another user { $this->id=$p_id; $this->db=$p_cn; $Sql="select use_first_name, use_name, use_login, use_active, use_admin, from ac_users where use_id=$p_id"; $cn=DbConnect(); $Res=pg_exec($cn,$Sql); if (($Max=pg_NumRows($Res)) == 0 ) return -1; $row=pg_fetch_array($Res,0); $this->first_name=$row['use_first_name']; $this->name=$row['use_name']; $this->active=$row['use_active']; $this->login=$row['use_login']; $this->admin=$row['use_admin']; } } /*++ * function : CheckUser * Parameter : none * return : not use * Description : * Check if user is active and exists in the * repository * Automatically redirect * ++*/ function Check() { $res=0; $pass5=md5($this->pass); if ( $this->valid == 1 ) { return; } $cn=DbConnect(); if ( $cn != false ) { $sql="select ac_users.use_login,ac_users.use_active, ac_users.use_pass, use_admin,use_first_name,use_name from ac_users where ac_users.use_login='$this->id' and ac_users.use_active=1 and ac_users.use_pass='$pass5'"; echo_debug(__FILE__,__LINE__,"Sql = $sql"); $ret=pg_exec($cn,$sql); $res=pg_NumRows($ret); echo_debug(__FILE__,__LINE__,"Number of found rows : $res"); if ( $res >0 ) { $r=pg_fetch_array($ret,0); $_SESSION['use_admin']=$r['use_admin']; $_SESSION['use_name']=$r['use_name']; $_SESSION['use_first_name']=$r['use_first_name']; $this->admin=$_SESSION['use_admin']; $this->name=$_SESSION['use_name']; $this->first_name=$_SESSION['use_first_name']; $this->GetGlobalPref(); } } if ( $res == 0 ) { echo ''; echo "





"; echo "

Invalid user
or
Invalid password

"; session_unset(); exit -1; } else { $this->valid=1; } return $ret; } function getJrn() { } /* function Admin ************************************************** * Purpose : Check if an user is an admin * * parm : * - none * gen : * - none * return: 1 for yes 0 for no */ function Admin() { $res=0; if ( $this->id != 'phpcompta') { $pass5=md5($this->pass); $sql="select use_id from ac_users where use_login='$this->id' and use_active=1 and use_admin=1 and use_pass='$pass5'"; $cn=DbConnect(); $this->admin=CountSql($cn,$sql); } else $this->admin=1; return $this->admin; } function AccessJrn($p_cn,$p_jrn_id) { $this->Admin(); if ( $this->admin==1) return true; $sql=CountSql($p_cn,"select uj_id from user_sec_jrn where uj_priv in ('R','W') and uj_jrn_id=".$p_jrn_id. " and uj_login = '".$this->id."'"); if ( $sql != 0 ) return true; return false; } /* function SetPeriode * Purpose : Set the selected periode in the user's preferences * * parm : * - $p_periode * - $p_user * gen : * - none * return: * - none * */ function SetPeriode($p_periode) { $sql="update user_local_pref set parameter_value='$p_periode' where user_id='$this->id' and parameter_type='PERIODE'"; $Res=ExecSql($this->db,$sql); } /* function GetPeriode * Purpose : Get the default periode from the user's preferences * * parm : * - $p_cn connexion * - $p_user * gen : * - none * return: * - the default periode * */ function GetPeriode() { $array=$this->GetPreferences(); return $array['PERIODE']; } /* function GetPreferences * Purpose : Get the default user's preferences * * parm : * - $p_cn connexion * - $p_user * gen : * - none * return: * - none * */ function GetPreferences () { // si preference n'existe pas, les créer $sql="select parameter_type,parameter_value from user_local_pref where user_id='".$this->id."'"; $Res=ExecSql($this->db,$sql); if (pg_NumRows($Res) == 0 ) { // default periode $sql=sprintf("insert into user_local_pref (user_id,parameter_value,parameter_type) select '%s',min(p_id),'PERIODE' from parm_periode where p_closed=false", $this->id); $Res=ExecSql($this->db,$sql); $l_array=$this->GetPreferences(); } else { for ( $i =0;$i < pg_NumRows($Res);$i++) { $row= pg_fetch_array($Res,0); $type=$row['parameter_type']; $l_array[$type]=$row['parameter_value']; } } return $l_array; } /* function CheckAction * Purpose : Check if an user is allowed to do an action * * parm : * - p_dossier dossier id * - p_login user's login * - p_action_id * gen : * - * return: * - 0 no priv * - 1 priv granted * */ function CheckAction ( $p_cn,$p_action_id) { if ( $this->admin==1 ) return 1; $Res=ExecSql($p_cn,"select * from user_sec_act where ua_login='".$this->id."' and ua_act_id=$p_action_id"); $Count=pg_NumRows($Res); if ( $Count == 0 ) return 0; if ( $Count == 1 ) return 1; echo "

Invalid action !!! $Count select * from user_sec_act where ua_login='$p_login' and ua_act_id=$p_action_id

"; } /* function GetGlobalPref ************************************************** * Purpose : Get the global preferences from user_global_pref * in the account_repository db * parm : * - set g_variable * gen : * - none * return: * - none */ function GetGlobalPref() { echo_debug(__FILE__,__LINE__,"function GetGlobalPref"); $cn=Dbconnect(); // Load everything in an array $Res=ExecSql ($cn,"select parameter_type,parameter_value from user_global_pref where user_id='".$this->id."'"); $Max=pg_NumRows($Res); if ( $Max == 0 ) { $this->insert_default_global_pref(); $this->GetGlobalPref(); return; } // Load value into array $line=array(); for ($i=0;$i<$Max;$i++) { $row=pg_fetch_array($Res,$i); $type=$row['parameter_type']; $line[$type]=$row['parameter_value'];; } // save array into g_ variable $array_pref=array ('g_theme'=>'THEME','g_pagesize'=>'PAGESIZE'); foreach ($array_pref as $name=>$parameter ) { if ( ! isset ($line[$parameter]) ) { echo_debug("Missing pref : ".$parameter); $this->insert_default_global_pref($parameter); $this->GetGlobalPref(); return; } $_SESSION[$name]=$line[$parameter]; } } /* function insert_default_global_pref ************************************************** * Purpose : insert default pref * if no parameter are given insert all the existing * parameter otherwise only the requested * parm : * - parameter's type or nothing * gen : * - none * return: nothing */ function insert_default_global_pref($p_type="",$p_value="") { echo_debug(__FILE__,__LINE__,"function insert_default_global_pref"); echo_debug(__FILE__,__LINE__,"parameter p_type $p_type p_value $p_value"); $default_parameter= array("THEME"=>"Light", "PAGESIZE"=>"50"); $cn=Dbconnect(); $Sql="insert into user_global_pref(user_id,parameter_type,parameter_value) values ('%s','%s','%s')"; if ( $p_type == "" ) { foreach ( $default_parameter as $name=>$value) { $Insert=sprintf($Sql,$this->id,$name,$value); ExecSql($cn,$Insert); } } else { $value=($p_value=="")?$default_parameter[$p_type]:$p_value; $Insert=sprintf($Sql,$this->id,$p_type,$value); ExecSql($cn,$Insert); } } /* function update_global_pref ************************************************** * Purpose : update default pref * if value is not given then use the default value * parm : * - parameter's type * - parameter's value value of the type * gen : * - none * return: nothing */ function update_global_pref($p_type,$p_value="") { $default_parameter= array("THEME"=>"Light", "PAGESIZE"=>"50"); $cn=Dbconnect(); $Sql="update user_global_pref set parameter_value='%s' where parameter_type='%s' and user_id='%s'"; $value=($p_value=="")?$default_parameter[$p_type]:$p_value; $Update=sprintf($Sql,$value,$p_type,$this->id); ExecSql($cn,$Update); }//end function } ?>