Incomplete installation

Baïkal dependencies have not been installed. If you are a regular user, this means that you probably downloaded the wrong zip file.

To install the dependencies manually, execute "composer install" in the Baïkal root folder.

'); } require PROJECT_PATH_ROOT . 'vendor/autoload.php'; # Bootstraping Flake \Flake\Framework::bootstrap(); # Bootstrap BaikalAdmin \BaikalAdmin\Framework::bootstrap(); if (!\BaikalAdmin\Core\Auth::isAuthenticated()) { exit('

Permission denied. Please log in to Baïkal first.

'); } $db = $GLOBALS["DB"]; # build list of known users $query='SELECT `username` FROM `users`'; $users=array(); $group_ids=array(); $get_content = $db->query($query); while( $fetch_content = $get_content->fetch() ){ $user = $fetch_content['username']; $users[]=$user; } $ok_message=""; # add principals for read/write access and collect group ids foreach ($users as $idx => $user){ # readable shares $query='SELECT `id` ' .'FROM `principals` ' .'WHERE `uri` = "principals/'.$user.'/calendar-proxy-read"'; $get_content = $db->query($query); $fetch_content = $get_content->fetch(); if(!$fetch_content){ $query_insert='INSERT INTO ' .'`principals` (`uri`)' .' VALUES ("principals/'.$user.'/calendar-proxy-read")'; if( !($db->query($query_insert))){ echo "error adding read-access for $user
\n"; } else { $get_content = $db->query($query); $fetch_content = $get_content->fetch(); } } $group_ids['principals/'.$user.'/calendar-proxy-read'] = $fetch_content["id"]; # writable shares $query='SELECT `id` ' .'FROM `principals` ' .'WHERE `uri` = "principals/'.$user.'/calendar-proxy-write"'; $get_content = $db->query($query); $fetch_content = $get_content->fetch(); if(!$fetch_content){ $query_insert='INSERT INTO ' .'`principals` (`uri`) ' .'VALUES ("principals/'.$user.'/calendar-proxy-write")'; if( !($db->query($query_insert))) { echo "error adding read-access for $user
\n"; } else { $get_content = $db->query($query); $fetch_content = $get_content->fetch(); } } $group_ids['principals/'.$user.'/calendar-proxy-write'] = $fetch_content["id"]; # group ids of the users themselves $query='SELECT `id` ' .'FROM `principals` ' .'WHERE `uri` = "principals/'.$user.'"'; $get_content = $db->query($query); $fetch_content = $get_content->fetch(); $group_ids['principals/'.$user] = $fetch_content["id"]; } # end of user loop # now that we have the group ids, fetch assignments in groupmembers table $group_members_read=array(); $group_members_write=array(); foreach ($users as $idx => $user){ # get users who have read permission on other accounts $read_permission=$group_ids['principals/'.$user.'/calendar-proxy-read']; $owner_id=$group_ids['principals/'.$user]; $query='SELECT `member_id` ' .'FROM `groupmembers` ' .'WHERE `principal_id` = "'.$read_permission.'"'; $get_content = $db->query($query); $members=array(); while( $fetch_content = $get_content->fetch() ) { $user_id = $fetch_content['member_id']; if($user_id==$owner_id){ $query='DELETE FROM ' .'`groupmembers` ' .'WHERE `member_id` = "'.$owner_id.'" ' .'AND `principal_id` = "'.$read_permission.'"'; $db->query($query) or die("error when correcting database"); } else { $members[]=$user_id; } } $group_members_read[$owner_id]=$members; # get users who have write permissions on other accounts $write_permission=$group_ids['principals/'.$user.'/calendar-proxy-write']; $query='SELECT `member_id` ' .'FROM `groupmembers` ' .'WHERE `principal_id` = "'.$write_permission.'"'; $get_content = $db->query($query); $members=array(); while( $fetch_content = $get_content->fetch() ) { $user_id = $fetch_content['member_id']; if($user_id==$owner_id){ $query='DELETE ' .'FROM `groupmembers` ' .'WHERE `member_id` = "'.$owner_id.'" ' .'AND `principal_id` = "'.$write_permission.'"'; $db->query($query) or die("error when correcting database"); } else { $members[]=$user_id; } } $group_members_write[$owner_id]=$members; } # end of user loop # out of the current values, the client ip and some 'salt' we create a token $hashval = $_SERVER['REMOTE_ADDR']; $hashval.= var_export($group_members_read, true); $hashval.= var_export($group_members_write, true); $hashval.= session_id(); $hashval.=date("d.m.Y"); $hashval=md5($hashval); # check if the database has been altered or the user has tried to tweak us... if(isset($_POST['submit']) AND $_POST['submit'] != ''){ if(!isset($_POST['token']) OR ($_POST['token']) != $hashval){ die("security violation"); } # evaluate POST-entries we do not take everything that comes in but just things we expect foreach ($users as $idx => $owner){ $oid=$group_ids['principals/'.$owner]; $read_permission=$group_ids['principals/'.$owner.'/calendar-proxy-read']; $write_permission=$group_ids['principals/'.$owner.'/calendar-proxy-write']; foreach ($users as $idx2 => $user){ $uid=$group_ids['principals/'.$user]; # now for each user and each owner check if permissions are ok # the user using the share must be different from the owner # and we encode the permissions as 0=none 1=read 2=write if($uid!=$oid){ $access=(int)$_POST["${oid}_$uid"]; # no access if($access==0){ if(in_array($uid,$group_members_read[$oid])){ $query='DELETE ' .'FROM `groupmembers` ' .'WHERE `principal_id` = "'.$read_permission.'" ' .'AND `member_id` = "'.$uid.'"'; $db->query($query) or die("error setting permissions"); } if(in_array($uid,$group_members_write[$oid])){ $query='DELETE ' .'FROM `groupmembers` ' .'WHERE `principal_id` = "'.$write_permission.'" ' .'AND `member_id` = "'.$uid.'"'; $db->query($query) or die("error setting permissions"); } } # end of none # read access if($access==1){ if(!in_array($uid,$group_members_read[$oid])){ $query='INSERT ' .'INTO `groupmembers` ' .'(`principal_id`, `member_id`) ' .'VALUES ("'.$read_permission.'", "'.$uid.'")'; $db->query($query) or die("error setting permissions"); } if(in_array($uid,$group_members_write[$oid])){ $query='DELETE ' .'FROM `groupmembers` ' .'WHERE `principal_id` = "'.$write_permission.'" ' .'AND `member_id` = "'.$uid.'"'; $db->query($query) or die("error setting permissions"); } } # end of read access # write access if($access==2){ if(in_array($uid,$group_members_read[$oid])){ $query='DELETE ' .'FROM `groupmembers` ' .'WHERE `principal_id` = "'.$read_permission.'" ' .'AND `member_id` = "'.$uid.'"'; $db->query($query) or die("error setting permissions"); } if(!in_array($uid,$group_members_write[$oid])){ $query='INSERT ' .'INTO `groupmembers` ' .'(`principal_id`, `member_id`) ' .'VALUES ("'.$write_permission.'", "'.$uid.'")'; $db->query($query) or die("error setting permissions"); } } # end of write access } # end of user != owner } # end of user loop } # end of owner loop # we have to update the arrays and the hash because the next call # of the script will see the changes we have just sent to the db $group_members_read=array(); $group_members_write=array(); foreach ($users as $idx => $user){ # read permissions first $read_permission=$group_ids['principals/'.$user.'/calendar-proxy-read']; $owner_id=$group_ids['principals/'.$user]; $query='SELECT `member_id` ' .'FROM `groupmembers` ' .'WHERE `principal_id` = "'.$read_permission.'"'; $get_content = $db->query($query); $members=array(); while( $fetch_content = $get_content->fetch() ) { $user_id = $fetch_content['member_id']; if($user_id!==$owner_id){ $members[]=$user_id; } } $group_members_read[$owner_id]=$members; # now write permissions $write_permission=$group_ids['principals/'.$user.'/calendar-proxy-write']; $query='SELECT `member_id` ' .'FROM `groupmembers` ' .'WHERE `principal_id` = "'.$write_permission.'"'; $get_content = $db->query($query); $members=array(); while( $fetch_content = $get_content->fetch() ){ $user_id = $fetch_content['member_id']; if($user_id!=$owner_id){ $members[]=$user_id; } } $group_members_write[$owner_id]=$members; } # end of user loop # update the hash token $hashval = $_SERVER['REMOTE_ADDR']; $hashval.= var_export($group_members_read, true); $hashval.= var_export($group_members_write, true); $hashval.= session_id(); $hashval.=date("d.m.Y"); $hashval=md5($hashval); $ok_message="

Your settings have been stored to the database

"; } # end of the processing of the POST values # print out the form now echo "

Manage permissions

$ok_message

Select the access rights in the following matrix.
For the calendars owned by each user (displayed in separate sections) you can grant rights to the other users (each permission is a line of the table).
Note that you first have to create the users in Baikal, so that they appear here.
It is not supported to grant access rights based on individual calendars, only on the basis of users.

\n"; # loop over users again and print out tables # and radio-buttons for granting access to this owner's calendars foreach ($users as $idx => $owner){ echo "

Calendars owned by $owner

"; $oid=$group_ids['principals/'.$owner]; # loop over other users who have access (or not) to the calendars of this owner foreach ($users as $idx2 => $user){ $uid=$group_ids['principals/'.$user]; if($uid!=$oid){ $access=0; if (in_array($uid,$group_members_read[$oid]))$access=1; if (in_array($uid,$group_members_write[$oid]))$access=2; echo "\n"; # 2=write access echo "\n"; # 1=read access echo "\n"; # 0=no access echo "\n\n"; } # end of if uid!=oid } # end of loop over users for granting access echo "
Grant access to write read NONE
$user
\n\n"; } # end of loop over owners of the calendars # finally the hidden field and the submit button echo "

\n"; echo "\n"; echo "
\n"; # and that's it. ?>