Merge https://github.com/friendica/red into pending_merge
This commit is contained in:
commit
98c05ae911
@ -966,6 +966,10 @@ function pipe_streams($in, $out) {
|
|||||||
|
|
||||||
function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $verb, $no_activity) {
|
function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid, $deny_gid, $verb, $no_activity) {
|
||||||
|
|
||||||
|
require_once('include/items.php');
|
||||||
|
|
||||||
|
$poster = get_app()->get_observer();
|
||||||
|
|
||||||
//if we got no object something went wrong
|
//if we got no object something went wrong
|
||||||
if(!$object)
|
if(!$object)
|
||||||
return;
|
return;
|
||||||
@ -975,6 +979,7 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
|
|||||||
//do not send activity for folders for now
|
//do not send activity for folders for now
|
||||||
if($is_dir)
|
if($is_dir)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
//check for recursive perms if we are in a folder
|
//check for recursive perms if we are in a folder
|
||||||
if($object['folder']) {
|
if($object['folder']) {
|
||||||
@ -983,22 +988,14 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
|
|||||||
|
|
||||||
$r_perms = check_recursive_perms($allow_cid, $allow_gid, $deny_cid, $deny_gid, $folder_hash);
|
$r_perms = check_recursive_perms($allow_cid, $allow_gid, $deny_cid, $deny_gid, $folder_hash);
|
||||||
|
|
||||||
$allow_cid = $r_perms['allow_cid'];
|
$allow_cid = perms2str($r_perms['allow_cid']);
|
||||||
$allow_gid = $r_perms['allow_gid'];
|
$allow_gid = perms2str($r_perms['allow_gid']);
|
||||||
$deny_cid = $r_perms['deny_cid'];
|
$deny_cid = perms2str($r_perms['deny_cid']);
|
||||||
$deny_gid = $r_perms['deny_gid'];
|
$deny_gid = perms2str($r_perms['deny_gid']);
|
||||||
|
|
||||||
if(!$allow_gid && !$allow_cid) {
|
|
||||||
notice( t('Allowed permissions for this file are not recursive. None of your allowed contacts will have access to this file.') . EOL);
|
|
||||||
$verb = 'update';
|
|
||||||
$update = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
require_once('include/items.php');
|
|
||||||
|
|
||||||
$poster = get_app()->get_observer();
|
|
||||||
|
|
||||||
$mid = item_message_id();
|
$mid = item_message_id();
|
||||||
|
|
||||||
@ -1162,40 +1159,75 @@ function check_recursive_perms($allow_cid, $allow_gid, $deny_cid, $deny_gid, $fo
|
|||||||
$arr_deny_cid = expand_acl($deny_cid);
|
$arr_deny_cid = expand_acl($deny_cid);
|
||||||
$arr_deny_gid = expand_acl($deny_gid);
|
$arr_deny_gid = expand_acl($deny_gid);
|
||||||
|
|
||||||
|
$count = 0;
|
||||||
while($folder_hash) {
|
while($folder_hash) {
|
||||||
$x = q("SELECT allow_cid, allow_gid, deny_cid, deny_gid, folder FROM attach WHERE hash = '%s'",
|
$x = q("SELECT allow_cid, allow_gid, deny_cid, deny_gid, folder FROM attach WHERE hash = '%s' LIMIT 1",
|
||||||
dbesc($folder_hash)
|
dbesc($folder_hash)
|
||||||
);
|
);
|
||||||
|
|
||||||
$parents_arr_allow_cid[] = expand_acl($x[0]['allow_cid']);
|
//only process private folders
|
||||||
$parents_arr_allow_gid[] = expand_acl($x[0]['allow_gid']);
|
if($x[0]['allow_cid'] || $x[0]['allow_gid'] || $x[0]['deny_cid'] || $x[0]['deny_gid']) {
|
||||||
$parents_arr_deny_cid[] = expand_acl($x[0]['deny_cid']);
|
|
||||||
$parents_arr_deny_gid[] = expand_acl($x[0]['deny_gid']);
|
$parent_arr['allow_cid'][] = expand_acl($x[0]['allow_cid']);
|
||||||
|
$parent_arr['allow_gid'][] = expand_acl($x[0]['allow_gid']);
|
||||||
|
$parent_arr['deny_cid'][] = expand_acl($x[0]['deny_cid']);
|
||||||
|
$parent_arr['deny_gid'][] = expand_acl($x[0]['deny_gid']);
|
||||||
|
|
||||||
|
$parents_arr = $parent_arr;
|
||||||
|
|
||||||
|
$count++;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
$folder_hash = $x[0]['folder'];
|
$folder_hash = $x[0]['folder'];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach($parents_arr_allow_gid as $folder_arr_allow_gid) {
|
//if there are no perms on the file we get them from the first parent folder
|
||||||
$arr_allow_gid = array_intersect($arr_allow_gid, $folder_arr_allow_gid);
|
if(!$arr_allow_cid && !$arr_allow_gid && !$arr_deny_cid && !$arr_deny_gid) {
|
||||||
|
$arr_allow_cid = $parent_arr['allow_cid'][0];
|
||||||
|
$arr_allow_gid = $parent_arr['allow_gid'][0];
|
||||||
|
$arr_deny_cid = $parent_arr['deny_cid'][0];
|
||||||
|
$arr_deny_gid = $parent_arr['deny_gid'][0];
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach($parents_arr_allow_cid as $folder_arr_allow_cid) {
|
//allow_cid
|
||||||
$arr_allow_cid = array_intersect($arr_allow_cid, $folder_arr_allow_cid);
|
foreach ($parents_arr['allow_cid'] as $folder_arr_allow_cid) {
|
||||||
|
foreach ($folder_arr_allow_cid as $ac_hash) {
|
||||||
|
$count_values[$ac_hash]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach ($arr_allow_cid as $fac_hash) {
|
||||||
|
if(($count_values[$fac_hash]) && ($count_values[$fac_hash] == $count))
|
||||||
|
$r_arr_allow_cid[] = $fac_hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach($parents_arr_deny_gid as $folder_arr_deny_gid) {
|
|
||||||
|
//allow_gid
|
||||||
|
foreach ($parents_arr['allow_gid'] as $folder_arr_allow_gid) {
|
||||||
|
foreach ($folder_arr_allow_gid as $ag_hash) {
|
||||||
|
$count_values[$ag_hash]++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach ($arr_allow_gid as $fag_hash) {
|
||||||
|
if(($count_values[$fag_hash]) && ($count_values[$fag_hash] == $count))
|
||||||
|
$r_arr_allow_gid[] = $fag_hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
//deny_gid
|
||||||
|
foreach($parents_arr['deny_gid'] as $folder_arr_deny_gid) {
|
||||||
$arr_deny_gid = array_merge($arr_deny_gid, $folder_arr_deny_gid);
|
$arr_deny_gid = array_merge($arr_deny_gid, $folder_arr_deny_gid);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach($parents_arr_deny_cid as $folder_arr_deny_cid) {
|
//deny_cid
|
||||||
|
foreach($parents_arr['deny_cid'] as $folder_arr_deny_cid) {
|
||||||
$arr_deny_cid = array_merge($arr_deny_cid, $folder_arr_deny_cid);
|
$arr_deny_cid = array_merge($arr_deny_cid, $folder_arr_deny_cid);
|
||||||
}
|
}
|
||||||
|
|
||||||
$ret['allow_gid'] = perms2str($arr_allow_gid);
|
$ret['allow_gid'] = $r_arr_allow_gid;
|
||||||
$ret['allow_cid'] = perms2str($arr_allow_cid);
|
$ret['allow_cid'] = $r_arr_allow_cid;
|
||||||
$ret['deny_gid'] = perms2str(array_unique($arr_deny_gid));
|
$ret['deny_gid'] = array_unique($r_arr_deny_gid);
|
||||||
$ret['deny_cid'] = perms2str(array_unique($arr_deny_cid));
|
$ret['deny_cid'] = array_unique($r_arr_deny_cid);
|
||||||
|
|
||||||
return $ret;
|
return $ret;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user