Esempio n. 1
0
 /**
  * @param $fid
  * @param $uid
  * @param $wUid
  * @return bool|string
  * @throws \Exception
  * @throws \OC\HintException
  */
 public function shareFile($uid, $wUid, $fid, $permission = 1)
 {
     $isEnabled = \OCP\Share::isEnabled();
     $isAllowed = \OCP\Share::isResharingAllowed();
     $sharedWith = \OCP\Share::getUsersItemShared('file', $fid, $uid, false, true);
     //$file = $this->connect->files()->getInfoById($fid);
     if ($isEnabled && $isAllowed && !in_array($wUid, $sharedWith)) {
         // \OCP\Constants::PERMISSION_READ
         // \OCP\Constants::PERMISSION_ALL
         // \OCP\Share::SHARE_TYPE_LINK
         // \OCP\Share::SHARE_TYPE_USER,
         $shareIsSuccess = \OC\Share\Share::shareItem('file', $fid, \OCP\Share::SHARE_TYPE_USER, $wUid, $permission);
         if ($shareIsSuccess) {
             $this->connect->update('*PREFIX*share', ['uid_initiator' => $uid], 'share_with = :share_with AND uid_owner = :uid_owner AND file_source = :file_source', [':share_with' => $wUid, ':uid_owner' => $uid, ':file_source' => $fid]);
             $token = \OC\Share\Share::shareItem('file', $fid, \OCP\Share::SHARE_TYPE_LINK, $wUid, $permission);
             $this->connect->update('*PREFIX*share', ['uid_initiator' => $uid, 'share_with' => null], 'uid_owner = :uid_owner AND file_source = :file_source AND token = :token', [':uid_owner' => $uid, ':file_source' => $fid, ':token' => $token]);
             return $token;
         }
     }
 }
Esempio n. 2
0
 /**
  * Share selected files with selected users
  */
 public function shareFiles()
 {
     $this->prepareUsersForShare();
     $files = array();
     foreach ($this->files as $id) {
         $files[] = $file = $this->files->getById($id)[0];
         $fileOwner = \OC\Files\Filesystem::getOwner($file['path']);
         $sharetype = $file['mimetype'] == 2 ? 'folder' : 'file';
         $sharedWith = \OCP\Share::getUsersItemShared($sharetype, $file['fileid'], $fileOwner, false, true);
         foreach ($this->subscriberToShare as $userid) {
             if (isset($file['fileid']) && is_array($file) && !in_array($userid, $sharedWith) && !($userid == $this->author) && ($fileOwner == $this->author || $file['permissions'] >= 16)) {
                 \OCP\Share::shareItem($sharetype, $file['fileid'], \OCP\Share::SHARE_TYPE_USER, $userid, 1);
             }
         }
     }
     $this->forSend['messagedata']['attachlinks'] = Helper::makeAttachLinks($this->files, $files);
 }
Esempio n. 3
0
 /**
  * @param array $params
  */
 public static function shareHook($params)
 {
     if ($params['itemType'] === 'file' || $params['itemType'] === 'folder') {
         if (isset($params['uidOwner'])) {
             $uidOwner = $params['uidOwner'];
         } else {
             $uidOwner = \OCP\User::getUser();
         }
         $users = \OCP\Share::getUsersItemShared($params['itemType'], $params['fileSource'], $uidOwner, true, false);
         if (!empty($users)) {
             while (!empty($users)) {
                 $reshareUsers = array();
                 foreach ($users as $user) {
                     if ($user !== $uidOwner) {
                         $etag = \OC\Files\Filesystem::getETag('');
                         \OCP\Config::setUserValue($user, 'files_sharing', 'etag', $etag);
                         // Look for reshares
                         $reshareUsers = array_merge($reshareUsers, \OCP\Share::getUsersItemShared('file', $params['fileSource'], $user, true));
                     }
                 }
                 $users = $reshareUsers;
             }
         }
     }
 }
 public function save()
 {
     $files = $this->connect->files();
     $users = $this->connect->users();
     //$user = $users->getById($this->userId)[0];
     //Helper::uploadFile($_FILES['uploadfile'], $this->userId);
     foreach ($_POST['users'] as $s => $subscriber) {
         if (!($subscriber == $this->userId)) {
             $subscribers[$subscriber] = $users->getUserDetails($subscriber);
         }
     }
     // Get subscribers group
     foreach ($_POST['groups'] as $group) {
         $groupsid = array();
         if (!empty($group)) {
             $groupsid[] = $group;
         }
     }
     $from = count($groupsid) > 0 ? $groupsid : $this->userId;
     // Share selected files with selected users
     $filesid = array();
     foreach ($_POST['upload-files'] as $id) {
         $file = $files->getById($id)[0];
         $fileOwner = \OC\Files\Filesystem::getOwner($file['path']);
         $sharetype = $file['mimetype'] == 2 ? 'folder' : 'file';
         $sharedWith = \OCP\Share::getUsersItemShared($sharetype, $file['fileid'], $fileOwner, false, true);
         foreach ($subscribers as $userid => $user) {
             if (isset($file['fileid']) && is_array($file) && isset($file['fileid']) && !in_array($userid, $sharedWith) && !($userid == $this->userId)) {
                 \OCP\Share::shareItem($sharetype, $file['fileid'], \OCP\Share::SHARE_TYPE_USER, $userid, 1);
                 $filesid[] = $id;
             }
         }
     }
     foreach ($_POST['select-files'] as $id => $on) {
         if ($on == 'on') {
             $file = $files->getById($id)[0];
             $fileOwner = \OC\Files\Filesystem::getOwner($file['path']);
             $sharetype = $file['mimetype'] == 2 ? 'folder' : 'file';
             $sharedWith = \OCP\Share::getUsersItemShared($sharetype, $file['fileid'], $fileOwner, false, true);
             foreach ($subscribers as $userid => $user) {
                 if (isset($file['fileid']) && is_array($file) && isset($file['fileid']) && !in_array($userid, $sharedWith) && !($userid == $this->userId)) {
                     //Helper::shareFile($file['name'], $user, $userid);
                     \OCP\Share::shareItem($sharetype, $file['fileid'], \OCP\Share::SHARE_TYPE_USER, $userid, 1);
                     $filesid[] = $id;
                 }
             }
         }
     }
     $messagedata = array('rid' => $_POST['replyid'], 'date' => date("Y-m-d h:i:s"), 'title' => $_POST['title'], 'text' => Helper::checkTxt($_POST['message-body']), 'attachements' => implode(',', $filesid), 'author' => $this->userId, 'subscribers' => implode(',', array_keys($subscribers)), 'hash' => isset($_POST['talkhash']) && !empty($_POST['talkhash']) ? $_POST['talkhash'] : md5(date("Y-m-d h:i:s") . '' . $_POST['title']), 'status' => 0);
     $messages = $this->connect->messages();
     $saved = $messages->save($messagedata);
     if ($saved) {
         $messagedata['attachlinks'] = Helper::makeAttachLinks($filesid, $files);
         $this->sendMessage($saved, $subscribers, $from, $messagedata);
     }
     $canwrite = true;
     //TODO: Створити перевірку на право починати бесіди
     $usermessages = $this->getUserMessages();
     $talks = $usermessages->getByAuthorOrSubscriber($this->userId, '0');
     $firsttalk = $messages->getByParent($talks[0]['messageid'], 'date ASC');
     if ($canwrite) {
         header('Location: /index.php/apps/' . $this->appName . '/all');
         exit;
         /* $params = array(
         				'user' => $this->userId,
         				'message' => $_POST,
         				'messages' => $talks,
         				'answers' => $firsttalk,
         				'appname' => $this->appName,
         				'files' => $files,
         				'mode' => 'list',
         				'menu' => 'all'
         			);
         
         			return new TemplateResponse($this->appName, 'talk', $params);  // templates/talk.php
         			 */
     } else {
         return;
     }
 }
Esempio n. 5
0
 private function shareFileToUsers(\OC\Files\FileInfo $file, array $uids)
 {
     $user = $this->configurator->get('collab_user');
     $result = [];
     $owner = $user;
     $shareType = $file['mimetype'] == 2 ? 'folder' : 'file';
     $sharedWith = \OCP\Share::getUsersItemShared($shareType, $file['fileid'], $owner, false, true);
     $isEnabled = \OCP\Share::isEnabled();
     $isAllowed = \OCP\Share::isResharingAllowed();
     if ($isEnabled && $isAllowed) {
         $sharedUsers = is_array($sharedWith) ? array_values($sharedWith) : [];
         foreach ($uids as $uid) {
             if ($owner == $uid || in_array($uid, $sharedUsers)) {
                 continue;
             }
             // \OCP\Share::SHARE_TYPE_USER
             // \OCP\Constants::PERMISSION_ALL
             //$resultToken = \OCP\Share::shareItem($shareType, $file['fileid'], 0, $uid, 31);
             $resultToken = $this->connect->files()->shareFile($owner, $uid, $file['fileid'], \OCP\Constants::PERMISSION_ALL);
             $result[$uid] = ['uid' => $uid, 'file' => $file['path'], 'file_token' => $resultToken];
         }
     }
     return $result;
 }
Esempio n. 6
0
 /**
  * Share selected files with selected users
  */
 public function shareFiles()
 {
     $this->prepareUsersForShare();
     $files = array();
     foreach ($this->files as $id) {
         $file = $this->Files->getById($id)[0];
         $fileOwner = \OC\Files\Filesystem::getOwner($file['path']);
         $sharetype = $file['mimetype'] == 2 ? 'folder' : 'file';
         $sharedWith = \OCP\Share::getUsersItemShared($sharetype, $file['fileid'], $fileOwner, false, true);
         $isenabled = \OCP\Share::isEnabled();
         $isallowed = \OCP\Share::isResharingAllowed();
         foreach ($this->subscriberToShare as $userid) {
             if (isset($file['fileid']) && is_array($file) && !in_array($userid, $sharedWith) && !($userid == $this->author) && ($fileOwner == $this->author || $file['permissions'] >= 16) && $isenabled && $isallowed) {
                 //try {
                 \OCP\Share::shareItem($sharetype, $file['fileid'], \OCP\Share::SHARE_TYPE_USER, $userid, 1);
                 $files[] = $file['fileid'];
                 //}
                 //catch (\Exception $e) {
                 //	echo $e->getMessage();
                 //}
             }
         }
     }
     $this->forSaveData['attachements'] = $files;
     $this->fileLinks = Helper::makeAttachLinks($files, $this->Files);
     //print_r($this->fileLinks);
     //file_put_contents('/tmp/inb.log', "\n\nfileLinks : "print_r($this->fileLinks, true)."\n", FILE_APPEND);
     /* foreach ($_POST['select-files'] as $id => $on) {
     			if ($on == 'on') {
     				$file = $files->getById($id)[0];
     				$fileOwner = \OC\Files\Filesystem::getOwner($file['path']);
     				$sharetype = $file['mimetype'] == 2 ? 'folder' : 'file';
     				$sharedWith = \OCP\Share::getUsersItemShared($sharetype, $file['fileid'], $fileOwner, false, true);
     				foreach ($allusers as $userid => $user) {
     					if (isset($file['fileid']) && is_array($file) && isset($file['fileid']) && !in_array($userid, $sharedWith) && !($userid == $this->userId)) {
     						//Helper::shareFile($file['name'], $user, $userid);
     						\OCP\Share::shareItem($sharetype, $file['fileid'], \OCP\Share::SHARE_TYPE_USER, $userid, 1);
     						$filesid[] = $id;
     					}
     				}
     			}
     		} */
 }