Skip to content
This repository was archived by the owner on Sep 10, 2021. It is now read-only.

Commit d0fc8ff

Browse files
committed
ENH: refs #0319. Allow top level user folders to be created via web api
1 parent 7fa916d commit d0fc8ff

File tree

2 files changed

+26
-19
lines changed

2 files changed

+26
-19
lines changed

core/models/base/FolderModelBase.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ function createFolder($name, $description, $parent, $uuid = '')
110110
$parent = $this->load($parentId);
111111
}
112112

113-
// Check ifa folder with the same name already exists for the same parent
113+
// Check if a folder with the same name already exists for the same parent
114114
if($parent !== false && $this->getFolderExists($name, $parent))
115115
{
116116
$existingfolder = $this->getFolderExists($name, $parent);

modules/api/controllers/components/ApiComponent.php

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -704,27 +704,34 @@ function folderCreate($args)
704704
{
705705
throw new Exception('Parameter parentid is not defined', MIDAS_INVALID_PARAMETER);
706706
}
707-
$folder = $folderModel->load($args['parentid']);
708-
if($folder == false)
709-
{
710-
throw new Exception('Parent doesn\'t exist', MIDAS_INVALID_PARAMETER);
711-
}
712-
$new_folder = $folderModel->createFolder($name, $description, $folder, $uuid);
713-
if($new_folder === false)
707+
if($args['parentid'] == -1) //top level user folder being created
714708
{
715-
throw new Exception('Create folder failed', MIDAS_INTERNAL_ERROR);
709+
$new_folder = $folderModel->createFolder($name, $description, $userDao->getFolderId(), $uuid);
716710
}
717-
$policyGroup = $folder->getFolderpolicygroup();
718-
$policyUser = $folder->getFolderpolicyuser();
719-
$folderpolicygroupModel = $modelLoader->loadModel('Folderpolicygroup');
720-
$folderpolicyuserModel = $modelLoader->loadModel('Folderpolicygroup');
721-
foreach($policyGroup as $policy)
711+
else //child of existing folder
722712
{
723-
$folderpolicygroupModel->createPolicy($policy->getGroup(), $new_folder, $policy->getPolicy());
724-
}
725-
foreach($policyUser as $policy)
726-
{
727-
$folderpolicyuserModel->createPolicy($policy->getUser(), $new_folder, $policy->getPolicy());
713+
$folder = $folderModel->load($args['parentid']);
714+
if($folder == false)
715+
{
716+
throw new Exception('Parent doesn\'t exist', MIDAS_INVALID_PARAMETER);
717+
}
718+
$new_folder = $folderModel->createFolder($name, $description, $folder, $uuid);
719+
if($new_folder === false)
720+
{
721+
throw new Exception('Create folder failed', MIDAS_INTERNAL_ERROR);
722+
}
723+
$policyGroup = $folder->getFolderpolicygroup();
724+
$policyUser = $folder->getFolderpolicyuser();
725+
$folderpolicygroupModel = $modelLoader->loadModel('Folderpolicygroup');
726+
$folderpolicyuserModel = $modelLoader->loadModel('Folderpolicygroup');
727+
foreach($policyGroup as $policy)
728+
{
729+
$folderpolicygroupModel->createPolicy($policy->getGroup(), $new_folder, $policy->getPolicy());
730+
}
731+
foreach($policyUser as $policy)
732+
{
733+
$folderpolicyuserModel->createPolicy($policy->getUser(), $new_folder, $policy->getPolicy());
734+
}
728735
}
729736

730737
return $new_folder->toArray();

0 commit comments

Comments
 (0)