Skip to content
Snippets Groups Projects
Commit cf66276b authored by Cyril Vazquez's avatar Cyril Vazquez
Browse files

FIX : wrong logic for population of the select list "Originators" and "Depositors"

parent 45b6760f
No related branches found
No related tags found
No related merge requests found
......@@ -38,10 +38,8 @@ class content
* @param \dependency\html\Document $view The view
* @param \dependency\html\Document $json The json object
*/
public function __construct(
\dependency\html\Document $view,
\dependency\json\JsonObject $json
) {
public function __construct(\dependency\html\Document $view, \dependency\json\JsonObject $json)
{
$this->view = $view;
$this->json = $json;
......@@ -64,27 +62,26 @@ class content
$archivalProfiles = \laabs::callService('recordsManagement/archivalProfile/readIndex');
$archivalAgreements = \laabs::callService('medona/archivalAgreement/readIndex');
$originators = \laabs::callService('organization/organization/readByrole_role_', 'originator');
$depositors = \laabs::callService('organization/organization/readByrole_role_', 'depositor');
$this->view->addContentFile("archivesPubliques/contentDescription/search.html");
$ownerOriginatorOrgs = $this->getOwnerOrgs($currentService, 'originator');
$ownerOriginatorOrgs = [];
$ownerDepositorOrgs = [];
$ownerDepositorOrgs = $this->getOwnerOrgs($currentService, 'depositor');
foreach ($originators as $originator) {
if (!isset($ownerOriginatorOrgs[(string) $originator->ownerOrgId])) {
$orgObject = \laabs::callService('organization/organization/read_orgId_', (string) $originator->ownerOrgId);
/*foreach ($ownerOriginatorOrgs as $ownerOriginatorOrgs) {
if (!isset($ownerOriginatorOrgs[(string) $ownerOriginatorOrgs->ownerOrgId])) {
$orgObject = \laabs::callService('organization/organization/read_orgId_', (string) $ownerOriginatorOrgs->ownerOrgId);
$ownerOriginatorOrgs[(string) $orgObject->orgId] = new \stdClass();
$ownerOriginatorOrgs[(string) $orgObject->orgId]->displayName = $orgObject->displayName;
$ownerOriginatorOrgs[(string) $orgObject->orgId]->originators = [];
}
$ownerOriginatorOrgs[(string) $orgObject->orgId]->originators[] = $originator;
}
}*/
foreach ($depositors as $depositor) {
/*foreach ($depositors as $depositor) {
if (!isset($ownerDepositorOrgs[(string) $depositor->ownerOrgId])) {
$orgObject = \laabs::callService('organization/organization/read_orgId_', (string) $depositor->ownerOrgId);
......@@ -94,7 +91,7 @@ class content
}
$ownerDepositorOrgs[(string) $orgObject->orgId]->depositors[] = $depositor ;
}
}*/
$this->view->translate();
$this->view->setSource('archivalProfiles', $archivalProfiles);
......@@ -106,6 +103,68 @@ class content
return $this->view->saveHtml();
}
/**
* Get the list of user accessible oranizations
* @param object $currentService The user's current service
* @param string $role The org unit role to select
*
* @return The list of user accessible orgs
*/
protected function getOwnerOrgs($currentService, $role)
{
$orgUnits = \laabs::callService('organization/organization/readByrole_role_', $role);
$userPositionController = \laabs::newController('organization/userPosition');
$orgController = \laabs::newController('organization/organization');
$owner = false;
$archiver = false;
$userOrgUnits = [];
$userOrgs = [];
$userOrgUnitOrgRegNumbers = array_merge(array($currentService->registrationNumber), $userPositionController->readDescandantService((string) $currentService->orgId));
foreach ($userOrgUnitOrgRegNumbers as $userOrgUnitOrgRegNumber) {
$userOrgUnit = $orgController->getOrgByRegNumber($userOrgUnitOrgRegNumber);
$userOrgUnits[] = $userOrgUnit;
if (isset($userOrgUnit->orgRoleCodes)) {
foreach ($userOrgUnit->orgRoleCodes as $orgRoleCode) {
if ($orgRoleCode == 'owner') {
$owner = true;
}
if ($orgRoleCode == 'archiver') {
$archiver = true;
}
}
}
}
foreach ($userOrgUnits as $userOrgUnit) {
foreach ($orgUnits as $orgUnit) {
if (
// Owner = all originators
$owner
// Archiver = all originators fo the same org
|| ($archiver && $orgUnit->ownerOrgId == $userOrgUnit->ownerOrgId)
// Originator = all originators at position and sub-services
|| ($role == 'originator' && $orgUnit->registrationNumber == $userOrgUnit->registrationNumber)
// Depositor = all
|| $role == 'depositor'
) {
if (!isset($userOrgs[(string) $orgUnit->ownerOrgId])) {
$orgObject = \laabs::callService('organization/organization/read_orgId_', (string) $orgUnit->ownerOrgId);
$userOrgs[(string) $orgObject->orgId] = new \stdClass();
$userOrgs[(string) $orgObject->orgId]->displayName = $orgObject->displayName;
$userOrgs[(string) $orgObject->orgId]->{$role} = [];
}
$userOrgs[(string) $orgObject->orgId]->{$role}[] = $orgUnit;
}
}
}
return $userOrgs;
}
/**
* Resultat de recherche d'un contenu d'archive
* @param array $archives Array of archive object
......
......@@ -177,7 +177,7 @@
<option value=""></option>
<?merge ownerDepositorOrgs ?>
<optgroup label="[?merge .displayName ?]">
<?merge .depositors ?>
<?merge .depositor ?>
<option value="[?merge .registrationNumber ?]"><?merge .displayName ?></option>
</optgroup>
</select>
......@@ -190,7 +190,7 @@
<option value=""></option>
<?merge ownerOriginatorOrgs ?>
<optgroup label="[?merge .displayName ?]">
<?merge .originators ?>
<?merge .originator ?>
<option value="[?merge .registrationNumber ?]"><?merge .displayName ?></option>
</optgroup>
</select>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment