Initial merging of files_sharing and files_publiclink
This commit is contained in:
parent
9c3a836044
commit
582dca4d91
2 changed files with 64 additions and 49 deletions
|
@ -136,23 +136,29 @@ $(document).ready(function() {
|
|||
|
||||
$('#makelink').live('change', function() {
|
||||
if (this.checked) {
|
||||
var data = 'path='+$('#dropdown').data('file')+'&expire=0';
|
||||
var source = $('#dropdown').data('file');
|
||||
var uid_shared_with = "public";
|
||||
var permissions = 0;
|
||||
var data = 'sources='+encodeURIComponent(source)+'&uid_shared_with='+encodeURIComponent(uid_shared_with)+'&permissions='+encodeURIComponent(permissions);
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: OC.linkTo('files_publiclink','ajax/makelink.php'),
|
||||
type: 'POST',
|
||||
url: OC.linkTo('files_sharing','ajax/share.php'),
|
||||
cache: false,
|
||||
data: data,
|
||||
success: function(token) {
|
||||
if (token) {
|
||||
success: function(result) {
|
||||
if (result !== 'false') {
|
||||
var token = 1234;
|
||||
showPublicLink(token);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
var data = 'token='+$('#link').data('token');
|
||||
var source = $('#dropdown').data('file');
|
||||
var uid_shared_with = "public";
|
||||
var data = 'source='+encodeURIComponent(source)+'&uid_shared_with='+encodeURIComponent(uid_shared_with);
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: OC.linkTo('files_publiclink','ajax/deletelink.php'),
|
||||
url: OC.linkTo('files_sharing','ajax/unshare.php'),
|
||||
cache: false,
|
||||
data: data,
|
||||
success: function(){
|
||||
|
@ -207,11 +213,11 @@ function createDropdown(filename, files) {
|
|||
});
|
||||
}
|
||||
});
|
||||
$.getJSON(OC.linkTo('files_publiclink', 'ajax/getlink.php'), { path: files }, function(token) {
|
||||
if (token) {
|
||||
showPublicLink(token);
|
||||
}
|
||||
});
|
||||
// $.getJSON(OC.linkTo('files_publiclink', 'ajax/getlink.php'), { path: files }, function(token) {
|
||||
// if (token) {
|
||||
// showPublicLink(token);
|
||||
// }
|
||||
// });
|
||||
$('#dropdown').show('blind');
|
||||
$('#share_with').chosen();
|
||||
}
|
||||
|
|
|
@ -30,6 +30,9 @@ class OC_Share {
|
|||
|
||||
const WRITE = 1;
|
||||
const DELETE = 2;
|
||||
const PUBLICLINK = "public";
|
||||
|
||||
private $token;
|
||||
|
||||
/**
|
||||
* Share an item, adds an entry into the database
|
||||
|
@ -39,48 +42,54 @@ class OC_Share {
|
|||
*/
|
||||
public function __construct($source, $uid_shared_with, $permissions) {
|
||||
$uid_owner = OC_User::getUser();
|
||||
if (OC_Group::groupExists($uid_shared_with)) {
|
||||
$gid = $uid_shared_with;
|
||||
$uid_shared_with = OC_Group::usersInGroup($gid);
|
||||
// Remove the owner from the list of users in the group
|
||||
$uid_shared_with = array_diff($uid_shared_with, array($uid_owner));
|
||||
} else if (OC_User::userExists($uid_shared_with)) {
|
||||
$gid = null;
|
||||
$uid_shared_with = array($uid_shared_with);
|
||||
$query = OC_DB::prepare("INSERT INTO *PREFIX*sharing VALUES(?,?,?,?,?)");
|
||||
if ($uid_shared_with == self::PUBLICLINK) {
|
||||
$token = sha1("$uid_shared_with-$source");
|
||||
$query->execute(array($uid_owner, self::PUBLICLINK, $source, $token, $permissions));
|
||||
$this->token = $token;
|
||||
} else {
|
||||
throw new Exception($uid_shared_with." is not a user");
|
||||
}
|
||||
foreach ($uid_shared_with as $uid) {
|
||||
// Check if this item is already shared with the user
|
||||
$checkSource = OC_DB::prepare("SELECT source FROM *PREFIX*sharing WHERE source = ? AND uid_shared_with ".self::getUsersAndGroups($uid));
|
||||
$resultCheckSource = $checkSource->execute(array($source, $uid))->fetchAll();
|
||||
// TODO Check if the source is inside a folder
|
||||
if (count($resultCheckSource) > 0 && !isset($gid)) {
|
||||
throw new Exception("This item is already shared with ".$uid);
|
||||
if (OC_Group::groupExists($uid_shared_with)) {
|
||||
$gid = $uid_shared_with;
|
||||
$uid_shared_with = OC_Group::usersInGroup($gid);
|
||||
// Remove the owner from the list of users in the group
|
||||
$uid_shared_with = array_diff($uid_shared_with, array($uid_owner));
|
||||
} else if (OC_User::userExists($uid_shared_with)) {
|
||||
$gid = null;
|
||||
$uid_shared_with = array($uid_shared_with);
|
||||
} else {
|
||||
throw new Exception($uid_shared_with." is not a user");
|
||||
}
|
||||
// Check if the target already exists for the user, if it does append a number to the name
|
||||
$target = "/".$uid."/files/Shared/".basename($source);
|
||||
if (self::getSource($target)) {
|
||||
if ($pos = strrpos($target, ".")) {
|
||||
$name = substr($target, 0, $pos);
|
||||
$ext = substr($target, $pos);
|
||||
} else {
|
||||
$name = $target;
|
||||
$ext = "";
|
||||
foreach ($uid_shared_with as $uid) {
|
||||
// Check if this item is already shared with the user
|
||||
$checkSource = OC_DB::prepare("SELECT source FROM *PREFIX*sharing WHERE source = ? AND uid_shared_with ".self::getUsersAndGroups($uid));
|
||||
$resultCheckSource = $checkSource->execute(array($source, $uid))->fetchAll();
|
||||
// TODO Check if the source is inside a folder
|
||||
if (count($resultCheckSource) > 0 && !isset($gid)) {
|
||||
throw new Exception("This item is already shared with ".$uid);
|
||||
}
|
||||
$counter = 1;
|
||||
while ($checkTarget !== false) {
|
||||
$newTarget = $name."_".$counter.$ext;
|
||||
$checkTarget = self::getSource($newTarget);
|
||||
$counter++;
|
||||
// Check if the target already exists for the user, if it does append a number to the name
|
||||
$target = "/".$uid."/files/Shared/".basename($source);
|
||||
if (self::getSource($target)) {
|
||||
if ($pos = strrpos($target, ".")) {
|
||||
$name = substr($target, 0, $pos);
|
||||
$ext = substr($target, $pos);
|
||||
} else {
|
||||
$name = $target;
|
||||
$ext = "";
|
||||
}
|
||||
$counter = 1;
|
||||
while ($checkTarget !== false) {
|
||||
$newTarget = $name."_".$counter.$ext;
|
||||
$checkTarget = self::getSource($newTarget);
|
||||
$counter++;
|
||||
}
|
||||
$target = $newTarget;
|
||||
}
|
||||
$target = $newTarget;
|
||||
if (isset($gid)) {
|
||||
$uid = $uid."@".$gid;
|
||||
}
|
||||
$query->execute(array($uid_owner, $uid, $source, $target, $permissions));
|
||||
}
|
||||
if (isset($gid)) {
|
||||
$uid = $uid."@".$gid;
|
||||
}
|
||||
$query = OC_DB::prepare("INSERT INTO *PREFIX*sharing VALUES(?,?,?,?,?)");
|
||||
$query->execute(array($uid_owner, $uid, $source, $target, $permissions));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue