mirror of
https://codeberg.org/streams/streams.git
synced 2024-09-20 04:35:26 +00:00
implement file notification on initial upload and rename get_parent_cloudpath() to get_cloud_url() which now includes the filename
This commit is contained in:
parent
7b992decd4
commit
8161ec88e5
5 changed files with 26 additions and 19 deletions
|
@ -34,10 +34,10 @@ class File_upload extends \Zotlabs\Web\Controller {
|
|||
$_REQUEST['deny_gid'] = perms2str($_REQUEST['group_deny']);
|
||||
|
||||
if($_REQUEST['filename']) {
|
||||
$r = attach_mkdir($channel,get_observer_hash(),$_REQUEST);
|
||||
$r = attach_mkdir($channel, get_observer_hash(), $_REQUEST);
|
||||
}
|
||||
else {
|
||||
$r = attach_store($channel,get_observer_hash(), '', $_REQUEST);
|
||||
$r = attach_store($channel, get_observer_hash(), '', $_REQUEST);
|
||||
}
|
||||
goaway(z_root() . '/' . $_REQUEST['return_url']);
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ class Filestorage extends \Zotlabs\Web\Controller {
|
|||
|
||||
$recurse = ((x($_POST, 'recurse')) ? intval($_POST['recurse']) : 0);
|
||||
$resource = ((x($_POST, 'filehash')) ? notags($_POST['filehash']) : '');
|
||||
$notify = ((x($_POST, 'notify')) ? intval($_POST['notify']) : 0);
|
||||
$notify = ((x($_POST, 'notify_edit')) ? intval($_POST['notify_edit']) : 0);
|
||||
|
||||
if(! $resource) {
|
||||
notice(t('Item not found.') . EOL);
|
||||
|
@ -39,16 +39,16 @@ class Filestorage extends \Zotlabs\Web\Controller {
|
|||
$acl->set_from_array($_REQUEST);
|
||||
$x = $acl->get();
|
||||
|
||||
$cloudPath = get_parent_cloudpath($channel_id, $channel['channel_address'], $resource);
|
||||
$url = get_cloud_url($channel_id, $channel['channel_address'], $resource);
|
||||
|
||||
//get the object before permissions change so we can catch eventual former allowed members
|
||||
$object = get_file_activity_object($channel_id, $resource, $cloudPath);
|
||||
$object = get_file_activity_object($channel_id, $resource, $url);
|
||||
|
||||
attach_change_permissions($channel_id, $resource, $x['allow_cid'], $x['allow_gid'], $x['deny_cid'], $x['deny_gid'], $recurse, true);
|
||||
|
||||
file_activity($channel_id, $object, $x['allow_cid'], $x['allow_gid'], $x['deny_cid'], $x['deny_gid'], 'post', $notify);
|
||||
|
||||
goaway($cloudPath);
|
||||
goaway(dirname($url));
|
||||
}
|
||||
|
||||
function get() {
|
||||
|
@ -107,11 +107,11 @@ class Filestorage extends \Zotlabs\Web\Controller {
|
|||
$f = $r[0];
|
||||
$channel = \App::get_channel();
|
||||
|
||||
$parentpath = get_parent_cloudpath($channel['channel_id'], $channel['channel_address'], $f['hash']);
|
||||
$url = get_cloud_url($channel['channel_id'], $channel['channel_address'], $f['hash']);
|
||||
|
||||
attach_delete($owner, $f['hash']);
|
||||
|
||||
goaway($parentpath);
|
||||
goaway(dirname($url));
|
||||
}
|
||||
|
||||
if(argc() > 3 && argv(3) === 'edit') {
|
||||
|
@ -131,7 +131,6 @@ class Filestorage extends \Zotlabs\Web\Controller {
|
|||
$channel = \App::get_channel();
|
||||
|
||||
$cloudpath = get_cloudpath($f);
|
||||
$parentpath = get_parent_cloudpath($channel['channel_id'], $channel['channel_address'], $f['hash']);
|
||||
|
||||
$aclselect_e = populate_acl($f, false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_storage'));
|
||||
$is_a_dir = (intval($f['is_dir']) ? true : false);
|
||||
|
@ -146,7 +145,6 @@ class Filestorage extends \Zotlabs\Web\Controller {
|
|||
'$header' => t('Edit file permissions'),
|
||||
'$file' => $f,
|
||||
'$cloudpath' => z_root() . '/' . $encoded_path,
|
||||
'$parentpath' => $parentpath,
|
||||
'$uid' => $channel['channel_id'],
|
||||
'$channelnick' => $channel['channel_address'],
|
||||
'$permissions' => t('Permissions'),
|
||||
|
@ -165,7 +163,7 @@ class Filestorage extends \Zotlabs\Web\Controller {
|
|||
'$submit' => t('Submit'),
|
||||
'$attach_btn_title' => t('Share this file'),
|
||||
'$link_btn_title' => t('Show URL to this file'),
|
||||
'$notify' => array('notify', t('Notify your contacts about this file'), 0, '', array(t('No'), t('Yes'))),
|
||||
'$notify' => array('notify_edit', t('Show in your contacts shared folder'), 0, '', array(t('No'), t('Yes'))),
|
||||
));
|
||||
|
||||
echo $o;
|
||||
|
|
|
@ -347,7 +347,8 @@ class Browser extends DAV\Browser\Plugin {
|
|||
'$return_url' => \App::$cmd,
|
||||
'$path' => $path,
|
||||
'$folder' => find_folder_hash_by_path($this->auth->owner_id, $path),
|
||||
'$dragdroptext' => t('Drop files here to immediately upload')
|
||||
'$dragdroptext' => t('Drop files here to immediately upload'),
|
||||
'$notify' => ['notify', t('Show in your contacts shared folder'), 0, '', [t('No'), t('Yes')]]
|
||||
));
|
||||
}
|
||||
|
||||
|
|
|
@ -423,6 +423,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
|
|||
$hash = (($arr && $arr['hash']) ? $arr['hash'] : null);
|
||||
$upload_path = (($arr && $arr['directory']) ? $arr['directory'] : '');
|
||||
$visible = (($arr && $arr['visible']) ? $arr['visible'] : '');
|
||||
$notify = (($arr && $arr['notify']) ? $arr['notify'] : '');
|
||||
|
||||
$observer = array();
|
||||
|
||||
|
@ -884,6 +885,12 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
|
|||
build_sync_packet($channel['channel_id'],array('file' => array($sync)));
|
||||
}
|
||||
|
||||
if($notify) {
|
||||
$cloudPath = z_root() . '/cloud/' . $channel['channel_address'] . $r['0']['display_path'];
|
||||
$object = get_file_activity_object($channel['channel_id'], $r['0']['hash'], $cloudPath);
|
||||
file_activity($channel['channel_id'], $object, $r['0']['allow_cid'], $r['0']['allow_gid'], $r['0']['deny_cid'], $r['0']['deny_gid'], 'post', $notify);
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
@ -1297,8 +1304,8 @@ function attach_delete($channel_id, $resource, $is_photo = 0) {
|
|||
return;
|
||||
}
|
||||
|
||||
$cloudpath = get_parent_cloudpath($channel_id, $channel_address, $resource);
|
||||
$object = get_file_activity_object($channel_id, $resource, $cloudpath);
|
||||
$url = get_cloudpath($channel_id, $channel_address, $resource);
|
||||
$object = get_file_activity_object($channel_id, $resource, $url);
|
||||
|
||||
// If resource is a directory delete everything in the directory recursive
|
||||
if(intval($r[0]['is_dir'])) {
|
||||
|
@ -1439,7 +1446,7 @@ function get_cloudpath($arr) {
|
|||
* @param string $attachHash
|
||||
* @return string with the full folder path
|
||||
*/
|
||||
function get_parent_cloudpath($channel_id, $channel_name, $attachHash) {
|
||||
function get_cloud_url($channel_id, $channel_name, $attachHash) {
|
||||
$parentFullPath = '';
|
||||
// build directory tree
|
||||
$parentHash = $attachHash;
|
||||
|
@ -1451,9 +1458,9 @@ function get_parent_cloudpath($channel_id, $channel_name, $attachHash) {
|
|||
}
|
||||
} while ($parentHash);
|
||||
|
||||
$parentFullPath = z_root() . '/cloud/' . $channel_name . '/' . $parentFullPath;
|
||||
$url = z_root() . '/cloud/' . $channel_name . '/' . $parentFullPath . find_filename_by_hash($channel_id, $attachHash);
|
||||
|
||||
return $parentFullPath;
|
||||
return $url;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1731,14 +1738,14 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
|
|||
* @param string $hash
|
||||
* @param string $cloudpath
|
||||
*/
|
||||
function get_file_activity_object($channel_id, $hash, $cloudpath) {
|
||||
function get_file_activity_object($channel_id, $hash, $url) {
|
||||
|
||||
$x = q("SELECT creator, filename, filetype, filesize, revision, folder, os_storage, is_photo, is_dir, flags, created, edited, allow_cid, allow_gid, deny_cid, deny_gid FROM attach WHERE uid = %d AND hash = '%s' LIMIT 1",
|
||||
intval($channel_id),
|
||||
dbesc($hash)
|
||||
);
|
||||
|
||||
$url = rawurlencode($cloudpath . $x[0]['filename']);
|
||||
$url = rawurlencode($url);
|
||||
|
||||
$links = array();
|
||||
$links[] = array(
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
<input type="hidden" name="return_url" value="{{$return_url}}" />
|
||||
<label for="files-upload">{{$upload_header}}</label>
|
||||
<input class="form-group pull-left" id="files-upload" type="file" name="userfile">
|
||||
{{include file="field_checkbox.tpl" field=$notify}}
|
||||
<div class="pull-right btn-group">
|
||||
<div class="btn-group">
|
||||
{{if $lockstate}}
|
||||
|
|
Loading…
Reference in a new issue