Skip to content

Commit a15fc99

Browse files
committed
Revert "BUG: refs #1055. Uploaded items should inherit parent permissions"
This reverts commit 50c6f93. Conflicts: core/controllers/components/UploadComponent.php
1 parent 61d9410 commit a15fc99

File tree

2 files changed

+53
-9
lines changed

2 files changed

+53
-9
lines changed

core/controllers/components/ApisystemComponent.php

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,9 @@ function linkCreate($args)
276276
is supplied.
277277
* @param filename The filename of the file you will upload, will be used as the
278278
bitstream's name and the item's name (unless <b>itemname</b> is supplied).
279+
* @param itemprivacy (Optional)
280+
When passing the <b>folderid</b> param, the privacy status of the newly
281+
created item, Default 'Public', possible values [Public|Private].
279282
* @param itemdescription (Optional)
280283
When passing the <b>folderid</b> param, the description of the item,
281284
if not supplied the item's description will be blank.
@@ -343,9 +346,19 @@ function uploadGeneratetoken($args)
343346
{
344347
throw new Exception('Create new item failed', MIDAS_INTERNAL_ERROR);
345348
}
346-
$itemModel->copyParentPolicies($item, $folder);
347349
$itempolicyuserModel = MidasLoader::loadModel('Itempolicyuser');
348350
$itempolicyuserModel->createPolicy($userDao, $item, MIDAS_POLICY_ADMIN);
351+
352+
if(isset($args['itemprivacy']))
353+
{
354+
$privacyCode = $apihelperComponent->getValidPrivacyCode($args['itemprivacy']);
355+
}
356+
else
357+
{
358+
// Public by default
359+
$privacyCode = MIDAS_PRIVACY_PUBLIC;
360+
}
361+
$apihelperComponent->setItemPrivacy($item, $privacyCode);
349362
}
350363

351364
if(array_key_exists('checksum', $args))

core/controllers/components/UploadComponent.php

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020

2121
/** This class handles the upload of files into the different assetstores */
2222
class UploadComponent extends AppComponent
23-
{
23+
{
24+
2425
/** Helper function to create the two-level hierarchy */
2526
private function _createAssetstoreDirectory($directorypath)
2627
{
@@ -118,9 +119,14 @@ function uploadBitstream($bitstreamdao, $assetstoredao, $copy = false)
118119
public function createLinkItem($userDao, $name, $url, $parent = null, $sizebytes = 0, $checksum = ' ')
119120
{
120121
$itemModel = MidasLoader::loadModel('Item');
122+
$feedModel = MidasLoader::loadModel('Feed');
121123
$folderModel = MidasLoader::loadModel('Folder');
124+
$bitstreamModel = MidasLoader::loadModel('Bitstream');
122125
$assetstoreModel = MidasLoader::loadModel('Assetstore');
126+
$feedpolicygroupModel = MidasLoader::loadModel('Feedpolicygroup');
123127
$itemRevisionModel = MidasLoader::loadModel('ItemRevision');
128+
$feedpolicyuserModel = MidasLoader::loadModel('Feedpolicyuser');
129+
$itempolicyuserModel = MidasLoader::loadModel('Itempolicyuser');
124130

125131
if($userDao == null)
126132
{
@@ -146,13 +152,13 @@ public function createLinkItem($userDao, $name, $url, $parent = null, $sizebytes
146152
$item->setPrivacyStatus(MIDAS_PRIVACY_PRIVATE); // Must set this flag private initially
147153
$itemModel->save($item, false);
148154

149-
//$feed = $feedModel->createFeed($userDao, MIDAS_FEED_CREATE_ITEM, $item);
155+
$feed = $feedModel->createFeed($userDao, MIDAS_FEED_CREATE_ITEM, $item);
150156

151157
$folderModel->addItem($parent, $item);
152-
$itemModel->copyParentPolicies($item, $parent /*, $feed*/);
158+
$itemModel->copyParentPolicies($item, $parent, $feed);
153159

154-
//$feedpolicyuserModel->createPolicy($userDao, $feed, MIDAS_POLICY_ADMIN);
155-
//$itempolicyuserModel->createPolicy($userDao, $item, MIDAS_POLICY_ADMIN);
160+
$feedpolicyuserModel->createPolicy($userDao, $feed, MIDAS_POLICY_ADMIN);
161+
$itempolicyuserModel->createPolicy($userDao, $item, MIDAS_POLICY_ADMIN);
156162

157163
Zend_Loader::loadClass('ItemRevisionDao', BASE_PATH . '/core/models/dao');
158164
$itemRevisionDao = new ItemRevisionDao;
@@ -194,9 +200,13 @@ public function createLinkItem($userDao, $name, $url, $parent = null, $sizebytes
194200
public function createUploadedItem($userDao, $name, $path, $parent = null, $license = null, $filemd5 = '', $copy = false, $revOnCollision = false)
195201
{
196202
$itemModel = MidasLoader::loadModel('Item');
203+
$feedModel = MidasLoader::loadModel('Feed');
197204
$folderModel = MidasLoader::loadModel('Folder');
205+
$bitstreamModel = MidasLoader::loadModel('Bitstream');
198206
$assetstoreModel = MidasLoader::loadModel('Assetstore');
207+
$feedpolicygroupModel = MidasLoader::loadModel('Feedpolicygroup');
199208
$itemRevisionModel = MidasLoader::loadModel('ItemRevision');
209+
$feedpolicyuserModel = MidasLoader::loadModel('Feedpolicyuser');
200210
$itempolicyuserModel = MidasLoader::loadModel('Itempolicyuser');
201211

202212
if($userDao == null)
@@ -235,11 +245,11 @@ public function createUploadedItem($userDao, $name, $path, $parent = null, $lice
235245

236246
$folderModel->addItem($parent, $item);
237247

238-
//$feed = $feedModel->createFeed($userDao, MIDAS_FEED_CREATE_ITEM, $item);
248+
$feed = $feedModel->createFeed($userDao, MIDAS_FEED_CREATE_ITEM, $item);
239249

240-
$itemModel->copyParentPolicies($item, $parent /*, $feed*/);
250+
$itemModel->copyParentPolicies($item, $parent, $feed);
241251
$itempolicyuserModel->createPolicy($userDao, $item, MIDAS_POLICY_ADMIN);
242-
//$feedpolicyuserModel->createPolicy($userDao, $feed, MIDAS_POLICY_ADMIN);
252+
$feedpolicyuserModel->createPolicy($userDao, $feed, MIDAS_POLICY_ADMIN);
243253
$this->getLogger()->debug('Item uploaded ('.$item->getName().', id='.$item->getKey().')');
244254
}
245255

@@ -295,9 +305,12 @@ public function createNewRevision($userDao, $name, $path, $changes, $itemId, $it
295305
}
296306

297307
$itemModel = MidasLoader::loadModel('Item');
308+
$feedModel = MidasLoader::loadModel('Feed');
298309
$bitstreamModel = MidasLoader::loadModel('Bitstream');
299310
$assetstoreModel = MidasLoader::loadModel('Assetstore');
311+
$feedpolicygroupModel = MidasLoader::loadModel('Feedpolicygroup');
300312
$itemRevisionModel = MidasLoader::loadModel('ItemRevision');
313+
$feedpolicyuserModel = MidasLoader::loadModel('Feedpolicyuser');
301314

302315
$item = $itemModel->load($itemId);
303316

@@ -334,6 +347,24 @@ public function createNewRevision($userDao, $name, $path, $changes, $itemId, $it
334347
$itemRevisionDao->setDate(date("Y-m-d H:i:s"));
335348
$itemRevisionDao->setLicenseId($license);
336349
$itemModel->addRevision($item, $itemRevisionDao);
350+
351+
$feed = $feedModel->createFeed($userDao, MIDAS_FEED_CREATE_REVISION, $itemRevisionDao);
352+
353+
$groupPolicies = $item->getItempolicygroup();
354+
$userPolicies = $item->getItempolicyuser();
355+
356+
//copy policies
357+
if($feed != null && $feed instanceof FeedDao)
358+
{
359+
foreach($groupPolicies as $key => $policy)
360+
{
361+
$feedpolicygroupModel->createPolicy($policy->getGroup(), $feed, $policy->getPolicy());
362+
}
363+
foreach($userPolicies as $key => $policy)
364+
{
365+
$feedpolicyuserModel->createPolicy($policy->getUser(), $feed, $policy->getPolicy());
366+
}
367+
}
337368
}
338369
else
339370
{

0 commit comments

Comments
 (0)