changed around the check function a little

This commit is contained in:
skeeter 2001-01-24 03:21:16 +00:00
parent 775d0fc4bc
commit 8a23de20ea
2 changed files with 40 additions and 18 deletions

View File

@ -22,21 +22,43 @@
function display_row($bg_color,$label,$id,$name) {
global $p;
global $phpgw;
global $phpgw_info;
$p->set_var('row_color',$bg_color);
$p->set_var('user',$name);
$rights = $phpgw->acl->get_rights($label.$id,$phpgw_info["flags"]["currentapp"]);
$p->set_var('read',$label.$phpgw_info["flags"]["currentapp"].'['.$id.']['.PHPGW_ACL_READ.']');
if ($rights & PHPGW_ACL_READ) {
$p->set_var('read_selected',' checked');
} else {
$p->set_var('read_selected','');
}
$p->set_var('add',$label.$phpgw_info["flags"]["currentapp"].'['.$id.']['.PHPGW_ACL_ADD.']');
if ($rights & PHPGW_ACL_ADD) {
$p->set_var('add_selected',' checked');
} else {
$p->set_var('add_selected','');
}
$p->set_var('edit',$label.$phpgw_info["flags"]["currentapp"].'['.$id.']['.PHPGW_ACL_EDIT.']');
if ($rights & PHPGW_ACL_EDIT) {
$p->set_var('edit_selected',' checked');
} else {
$p->set_var('edit_selected','');
}
$p->set_var('delete',$label.$phpgw_info["flags"]["currentapp"].'['.$id.']['.PHPGW_ACL_DELETE.']');
if ($rights & PHPGW_ACL_DELETE) {
$p->set_var('delete_selected',' checked');
} else {
$p->set_var('delete_selected','');
}
$p->parse('row','acl_row',True);
}
if ($submit) {
// Still need to write a function in ACL class to wipe all records where
// acl_location like '[gu]_$phpgw_info["flags"]["currentapp"]_%'
$phpgw->acl->remove_granted_rights($phpgw_info["flags"]["currentapp"],"u");
$phpgw->acl->remove_granted_rights($phpgw_info["flags"]["currentapp"],"g");
// Group records
$group_variable = 'g_'.$phpgw_info["flags"]["currentapp"];
@ -46,7 +68,7 @@
while(list($acl,$permission) = each($acllist)) {
$totalacl += $acl;
}
echo "Commiting ACL record for group_id[$group_id]: ".$totalacl."<br>\n";
$phpgw->acl->add($phpgw_info["flags"]["currentapp"],'g_'.$group_id,$phpgw_info["user"]["account_id"],'u',$totalacl);
}
// User records
@ -57,20 +79,8 @@
while(list($acl,$permission) = each($acllist)) {
$totalacl += $acl;
}
echo "Commiting ACL record for user_id[$user_id]: ".$totalacl."<br>\n";
$phpgw->acl->add($phpgw_info["flags"]["currentapp"],'u_'.$user_id,$phpgw_info["user"]["account_id"],'u',$totalacl);
}
// $phpgw->db->query("DELETE FROM phpgw_acl WHERE acl_appname='calendar' AND ");
// $phpgw->preferences->change("calendar","weekdaystarts");
// $phpgw->preferences->change("calendar","workdaystarts");
// $phpgw->preferences->change("calendar","workdayends");
// $phpgw->preferences->change("calendar","defaultcalendar");
// $phpgw->preferences->change("calendar","defaultfilter");
// if ($mainscreen_showevents) {
// $phpgw->preferences->change("calendar","mainscreen_showevents");
// } else {
// $phpgw->preferences->delete("calendar","mainscreen_showevents");
// }
// $phpgw->preferences->commit();
header("Location: ".$phpgw->link($phpgw_info["server"]["webserver_url"]."/preferences/index.php"));
$phpgw->common->phpgw_exit();

View File

@ -44,9 +44,8 @@
values('filemanager', 'create', 2, 'g', 2);
*/
function check($location, $required, $appname = False){
function get_rights($location,$appname = False){
global $phpgw, $phpgw_info;
// $this->db = $phpgw->db;
if ($appname == False){
$appname = $phpgw_info["flags"]["currentapp"];
@ -72,6 +71,12 @@
if ($this->db->f("acl_rights") == 0){ return False; }
$rights |= $this->db->f("acl_rights");
}
return $rights;
}
function check($location, $required, $appname = False){
$rights = $this->get_rights($location,$appname);
return !!($rights & $required);
}
@ -188,5 +193,12 @@
$sql = "DELETE FROM phpgw_acl WHERE acl_location='".$location."' AND acl_account_type='".$id_type."' AND acl_account='".$id."'";
$this->db->query($sql ,__LINE__,__FILE__);
}
function remove_granted_rights($app, $id_type = "u", $id="") {
global $phpgw, $phpgw_info;
if ($id == ""){$id = $phpgw_info["user"]["account_id"];}
$sql = "DELETE FROM phpgw_acl WHERE acl_appname='".$app."' AND acl_account_type = 'u' AND acl_location like '".$id_type."_%' AND acl_account='".$id."'";
$this->db->query($sql ,__LINE__,__FILE__);
}
} //end of acl class
?>