public function testInsertPermission() { $this->testDb->createPlainTables(array('perm_upload')); $accessibleBefore = $this->uploadPermissionDao->isAccessible($uploadId = 1, $groupId = 2); assertThat($accessibleBefore, equalTo(false)); $this->uploadPermissionDao->insertPermission($uploadId, $groupId, Auth::PERM_READ); $accessibleAfter = $this->uploadPermissionDao->isAccessible($uploadId, $groupId); assertThat($accessibleAfter, equalTo(true)); $this->uploadPermissionDao->insertPermission($uploadId, $groupId, Auth::PERM_NONE); $accessibleNomore = $this->uploadPermissionDao->isAccessible($uploadId, $groupId); assertThat($accessibleNomore, equalTo(false)); }
private function insertPermission($groupId, $uploadId, $permission, $uploadList) { $fileName = false; foreach ($uploadList as $uploadEntry) { if ($uploadEntry['upload_pk']) { $fileName = $uploadEntry['name']; } } if (empty($fileName)) { throw new \Exception('This upload is missing or inaccessible'); } $reuseBit = $permission & self::MOD_REUSE; if ($reuseBit) { $jobId = \JobAddJob(Auth::getUserId(), $groupId, $fileName, $uploadId); $reuserAgent = \plugin_find('agent_reuser'); $request = new Request(array('uploadToReuse' => "{$uploadId}," . Auth::getGroupId(), 'groupId' => $groupId)); $reuserAgent->scheduleAgent($jobId, $uploadId, $errorMsg, $request); if (!empty($errorMsg)) { throw new Exception($errorMsg); } $permission ^= $reuseBit; } $this->uploadPermDao->insertPermission($uploadId, $groupId, $permission); }