/**
  * Create a share object from an database row
  *
  * @param array $data
  * @return IShare
  * @throws InvalidShare
  * @throws ShareNotFound
  */
 private function createShare($data)
 {
     $share = new Share($this->rootFolder);
     $share->setId((int) $data['id'])->setShareType((int) $data['share_type'])->setPermissions((int) $data['permissions'])->setTarget($data['file_target'])->setMailSend((bool) $data['mail_send'])->setToken($data['token']);
     $shareTime = new \DateTime();
     $shareTime->setTimestamp((int) $data['stime']);
     $share->setShareTime($shareTime);
     $share->setSharedWith($data['share_with']);
     if ($data['uid_initiator'] !== null) {
         $share->setShareOwner($data['uid_owner']);
         $share->setSharedBy($data['uid_initiator']);
     } else {
         //OLD SHARE
         $share->setSharedBy($data['uid_owner']);
         $path = $this->getNode($share->getSharedBy(), (int) $data['file_source']);
         $owner = $path->getOwner();
         $share->setShareOwner($owner->getUID());
     }
     $share->setNodeId((int) $data['file_source']);
     $share->setNodeType($data['item_type']);
     $share->setProviderId($this->identifier());
     return $share;
 }
 public function testGroupCreateChecksShareWithGroupMembersOnlyInGroup()
 {
     $share = new \OC\Share20\Share();
     $sharedBy = $this->getMock('\\OCP\\IUser');
     $sharedWith = $this->getMock('\\OCP\\IGroup');
     $share->setSharedBy($sharedBy)->setSharedWith($sharedWith);
     $sharedWith->method('inGroup')->with($sharedBy)->willReturn(true);
     $path = $this->getMock('\\OCP\\Files\\Node');
     $share->setNode($path);
     $this->defaultProvider->method('getSharesByPath')->with($path)->willReturn([]);
     $this->config->method('getAppValue')->will($this->returnValueMap([['core', 'shareapi_only_share_with_group_members', 'no', 'yes']]));
     $this->invokePrivate($this->manager, 'groupCreateChecks', [$share]);
 }
示例#3
0
 /**
  * Create a share object from an database row
  *
  * @param mixed[] $data
  * @return \OCP\Share\IShare
  * @throws InvalidShare
  */
 private function createShare($data)
 {
     $share = new Share($this->rootFolder);
     $share->setId((int) $data['id'])->setShareType((int) $data['share_type'])->setPermissions((int) $data['permissions'])->setTarget($data['file_target'])->setMailSend((bool) $data['mail_send']);
     $shareTime = new \DateTime();
     $shareTime->setTimestamp((int) $data['stime']);
     $share->setShareTime($shareTime);
     if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) {
         $share->setSharedWith($data['share_with']);
     } else {
         if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
             $share->setSharedWith($data['share_with']);
         } else {
             if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
                 $share->setPassword($data['share_with']);
                 $share->setToken($data['token']);
             }
         }
     }
     if ($data['uid_initiator'] === null) {
         //OLD SHARE
         $share->setSharedBy($data['uid_owner']);
         $path = $this->getNode($share->getSharedBy(), (int) $data['file_source']);
         $owner = $path->getOwner();
         $share->setShareOwner($owner->getUID());
     } else {
         //New share!
         $share->setSharedBy($data['uid_initiator']);
         $share->setShareOwner($data['uid_owner']);
     }
     $share->setNodeId((int) $data['file_source']);
     $share->setNodeType($data['item_type']);
     if ($data['expiration'] !== null) {
         $expiration = \DateTime::createFromFormat('Y-m-d H:i:s', $data['expiration']);
         $share->setExpirationDate($expiration);
     }
     $share->setProviderId($this->identifier());
     return $share;
 }
示例#4
0
 /**
  * @dataProvider dataCanShare
  *
  * @param bool $expected
  * @param string $sharingEnabled
  * @param bool $disabledForUser
  */
 public function testCanShare($expected, $sharingEnabled, $disabledForUser)
 {
     $this->config->method('getAppValue')->will($this->returnValueMap([['core', 'shareapi_enabled', 'yes', $sharingEnabled]]));
     $manager = $this->createManagerMock()->setMethods(['isSharingDisabledForUser'])->getMock();
     $manager->method('isSharingDisabledForUser')->willReturn($disabledForUser);
     $user = $this->getMock('\\OCP\\IUser');
     $share = new \OC\Share20\Share();
     $share->setSharedBy($user);
     $res = $this->invokePrivate($manager, 'canShare', [$share]);
     $this->assertEquals($expected, $res);
 }
示例#5
0
 /**
  * Create a share object from an database row
  *
  * @param mixed[] $data
  * @return Share
  */
 private function createShare($data)
 {
     $share = new Share();
     $share->setId((int) $data['id'])->setShareType((int) $data['share_type'])->setPermissions((int) $data['permissions'])->setTarget($data['file_target'])->setShareTime((int) $data['stime'])->setMailSend((bool) $data['mail_send']);
     if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) {
         $share->setSharedWith($this->userManager->get($data['share_with']));
     } else {
         if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
             $share->setSharedWith($this->groupManager->get($data['share_with']));
         } else {
             if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
                 $share->setPassword($data['share_with']);
                 $share->setToken($data['token']);
             } else {
                 $share->setSharedWith($data['share_with']);
             }
         }
     }
     $share->setSharedBy($this->userManager->get($data['uid_owner']));
     // TODO: getById can return an array. How to handle this properly??
     $folder = $this->rootFolder->getUserFolder($share->getSharedBy()->getUID());
     $path = $folder->getById((int) $data['file_source'])[0];
     $owner = $path->getOwner();
     $share->setShareOwner($owner);
     $path = $this->rootFolder->getUserFolder($owner->getUID())->getById((int) $data['file_source'])[0];
     $share->setPath($path);
     if ($data['expiration'] !== null) {
         $expiration = \DateTime::createFromFormat('Y-m-d H:i:s', $data['expiration']);
         $share->setExpirationDate($expiration);
     }
     return $share;
 }
 /**
  * Create a share object from an database row
  *
  * @param mixed[] $data
  * @return Share
  */
 private function createShare($data)
 {
     $share = new Share();
     $share->setId((int) $data['id'])->setShareType((int) $data['share_type'])->setPermissions((int) $data['permissions'])->setTarget($data['file_target']);
     if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) {
         $share->setSharedWith($this->userManager->get($data['share_with']));
     } else {
         if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
             $share->setSharedWith($this->groupManager->get($data['share_with']));
         } else {
             if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
                 /*
                  * TODO: Clean this up, this should be set as password not sharedWith
                  */
                 $share->setSharedWith($data['share_with']);
                 $share->setToken($data['token']);
             } else {
                 $share->setSharedWith($data['share_with']);
             }
         }
     }
     $share->setSharedBy($this->userManager->get($data['uid_owner']));
     // TODO: getById can return an array. How to handle this properly??
     $path = $this->userFolder->getById($data['file_source']);
     $path = $path[0];
     $share->setPath($path);
     $owner = $path->getStorage()->getOwner('.');
     if ($owner !== false) {
         $share->setShareOwner($this->userManager->get($owner));
     }
     if ($data['expiration'] !== null) {
         $expiration = \DateTime::createFromFormat('Y-m-d H:i:s', $data['expiration']);
         $share->setExpirationDate($expiration);
     }
     return $share;
 }