Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
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;
 }
Exemplo n.º 3
0
 public function testUpdateShareGroup()
 {
     $manager = $this->createManagerMock()->setMethods(['canShare', 'getShareById', 'generalCreateChecks', 'groupCreateChecks', 'pathCreateChecks'])->getMock();
     $origGroup = $this->getMock('\\OCP\\IGroup');
     $user = $this->getMock('\\OCP\\IUser');
     $originalShare = new \OC\Share20\Share();
     $originalShare->setShareType(\OCP\Share::SHARE_TYPE_GROUP)->setSharedWith($origGroup);
     $manager->expects($this->once())->method('canShare')->willReturn(true);
     $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
     $share = new \OC\Share20\Share();
     $share->setProviderId('foo')->setId('42')->setShareType(\OCP\Share::SHARE_TYPE_GROUP)->setSharedWith($origGroup)->setShareOwner($user);
     $this->defaultProvider->expects($this->once())->method('update')->with($share)->willReturn($share);
     $hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock();
     \OCP\Util::connectHook('OCP\\Share', 'post_set_expiration_date', $hookListner, 'post');
     $hookListner->expects($this->never())->method('post');
     $manager->updateShare($share);
 }
Exemplo n.º 4
0
 public function testUpdateShareLink()
 {
     $manager = $this->createManagerMock()->setMethods(['canShare', 'getShareById', 'generalCreateChecks', 'linkCreateChecks', 'pathCreateChecks', 'verifyPassword', 'validateExpirationDate'])->getMock();
     $user = $this->getMock('\\OCP\\IUser');
     $user->method('getUID')->willReturn('owner');
     $originalShare = new \OC\Share20\Share();
     $originalShare->setShareType(\OCP\Share::SHARE_TYPE_LINK);
     $tomorrow = new \DateTime();
     $tomorrow->setTime(0, 0, 0);
     $tomorrow->add(new \DateInterval('P1D'));
     $manager->expects($this->once())->method('canShare')->willReturn(true);
     $manager->expects($this->once())->method('getShareById')->with('foo:42')->willReturn($originalShare);
     $manager->expects($this->once())->method('validateExpirationDate')->with($tomorrow)->willReturn($tomorrow);
     $file = $this->getMock('OCP\\Files\\File', [], [], 'File');
     $file->method('getId')->willReturn(100);
     $share = new \OC\Share20\Share();
     $share->setProviderId('foo')->setId('42')->setShareType(\OCP\Share::SHARE_TYPE_LINK)->setSharedBy($user)->setShareOwner($user)->setPassword('password')->setExpirationDate($tomorrow)->setPath($file);
     $this->defaultProvider->expects($this->once())->method('update')->with($share)->willReturn($share);
     $hookListner = $this->getMockBuilder('Dummy')->setMethods(['post'])->getMock();
     \OCP\Util::connectHook('OCP\\Share', 'post_set_expiration_date', $hookListner, 'post');
     $hookListner->expects($this->once())->method('post')->with(['itemType' => 'file', 'itemSource' => 100, 'date' => $tomorrow, 'uidOwner' => 'owner']);
     $manager->updateShare($share);
 }