diff --git a/plugins/tasks/Archive.php b/plugins/tasks/Archive.php index 593c99d32423e859b78658d841def18e75a6fd03..2ef3e2f08d4c90222b5bb9b3d42882d13ed8199a 100644 --- a/plugins/tasks/Archive.php +++ b/plugins/tasks/Archive.php @@ -6,7 +6,7 @@ class Archive implements EndpointInterface { private TaskGateway $gateway; - public function __construct(TaskGateway $gateway) + public function __construct (TaskGateway $gateway) { $this->gateway = $gateway; } @@ -15,7 +15,7 @@ class Archive implements EndpointInterface * @return array * Part of the interface of orchestrator plugin to treat GET method */ - public function processEndPointGet(): array + public function processEndPointGet (): array { // Retrieve tasks of type 'archive' return $this->gateway->getObjectTypeTask('archive'); @@ -27,7 +27,7 @@ class Archive implements EndpointInterface * @throws Exception * Note: Part of the interface of orchestrator plugin to treat PATCH method */ - public function processEndPointPatch(array $data = NULL): array + public function processEndPointPatch (array $data = NULL): array { $result = []; $archiveTasks = $this->gateway->getObjectTypeTask('archive'); @@ -37,38 +37,38 @@ class Archive implements EndpointInterface $webServiceCall->setCurlSettings(); // Perform login and set the token foreach ($archiveTasks as $task) { - try { - if (!$this->gateway->statusAndScheduleCheck($task)) { - // Skip this task if it does not meet the status and schedule criteria - continue; - } - - // Receive null or 'toBeArchived' - $supannState = $this->getUserSupannAccountStatus($task['fdtasksgranulardn'][0]); - - if ($supannState !== 'toBeArchived') { - // The task does not meet the criteria for archiving and can therefore be suppressed - $result[$task['dn']]['result'] = "User does not meet the criteria for archiving."; - $this->gateway->removeSubTask($task['dn']); - continue; - } - - // Set the archive endpoint and method using the same WebServiceCall object - $archiveUrl = $_ENV['FUSION_DIRECTORY_API_URL'] . '/archive/user/' . rawurlencode($task['fdtasksgranulardn'][0]); - $webServiceCall->setCurlSettings($archiveUrl, NULL, 'POST'); // Update settings for the archive request - $response = $webServiceCall->execute(); - - // Check if the HTTP status code is 204 - if ($webServiceCall->getHttpStatusCode() === 204) { - $result[$task['dn']]['result'] = "User successfully archived."; - $this->gateway->updateTaskStatus($task['dn'], $task['cn'][0], '2'); - } else { - throw new Exception("Unexpected HTTP status code: " . $webServiceCall->getHttpStatusCode()); - } - } catch (Exception $e) { - $result[$task['dn']]['result'] = "Error archiving user: " . $e->getMessage(); - $this->gateway->updateTaskStatus($task['dn'], $task['cn'][0], $e->getMessage()); + try { + if (!$this->gateway->statusAndScheduleCheck($task)) { + // Skip this task if it does not meet the status and schedule criteria + continue; } + + // Receive null or 'toBeArchived' + $supannState = $this->getUserSupannAccountStatus($task['fdtasksgranulardn'][0]); + + if ($supannState !== 'toBeArchived') { + // The task does not meet the criteria for archiving and can therefore be suppressed + $result[$task['dn']]['result'] = "User does not meet the criteria for archiving."; + $this->gateway->removeSubTask($task['dn']); + continue; + } + + // Set the archive endpoint and method using the same WebServiceCall object + $archiveUrl = $_ENV['FUSION_DIRECTORY_API_URL'] . '/archive/user/' . rawurlencode($task['fdtasksgranulardn'][0]); + $webServiceCall->setCurlSettings($archiveUrl, NULL, 'POST'); // Update settings for the archive request + $response = $webServiceCall->execute(); + + // Check if the HTTP status code is 204 + if ($webServiceCall->getHttpStatusCode() === 204) { + $result[$task['dn']]['result'] = "User successfully archived."; + $this->gateway->updateTaskStatus($task['dn'], $task['cn'][0], '2'); + } else { + throw new Exception("Unexpected HTTP status code: " . $webServiceCall->getHttpStatusCode()); + } + } catch (Exception $e) { + $result[$task['dn']]['result'] = "Error archiving user: " . $e->getMessage(); + $this->gateway->updateTaskStatus($task['dn'], $task['cn'][0], $e->getMessage()); + } } return $result; @@ -79,7 +79,7 @@ class Archive implements EndpointInterface * @return array * Note: Part of the interface of orchestrator plugin to treat POST method */ - public function processEndPointPost(array $data = NULL): array + public function processEndPointPost (array $data = NULL): array { return []; } @@ -89,7 +89,7 @@ class Archive implements EndpointInterface * @return array * Note: Part of the interface of orchestrator plugin to treat DELETE method */ - public function processEndPointDelete(array $data = NULL): array + public function processEndPointDelete (array $data = NULL): array { return []; } @@ -99,7 +99,7 @@ class Archive implements EndpointInterface * @param string $userDn * @return string|null */ - private function getUserSupannAccountStatus(string $userDn): ?string + private function getUserSupannAccountStatus (string $userDn): ?string { $supannState = $this->gateway->getLdapTasks( '(objectClass=supannPerson)', @@ -107,31 +107,31 @@ class Archive implements EndpointInterface '', $userDn ); - - if ($this->hasToBeArchived($supannState)) { - return 'toBeArchived'; - } - - return null; + + if ($this->hasToBeArchived($supannState)) { + return 'toBeArchived'; + } + + return NULL; } - private function hasToBeArchived(array $supannState): bool + private function hasToBeArchived (array $supannState): bool { - if (!isset($supannState[0]['supannressourceetatdate']) || !is_array($supannState[0]['supannressourceetatdate'])) { - return false; - } + if (!isset($supannState[0]['supannressourceetatdate']) || !is_array($supannState[0]['supannressourceetatdate'])) { + return FALSE; + } - foreach ($supannState[0]['supannressourceetatdate'] as $key => $value) { - // Skip non-numeric keys (e.g., 'count') - if (!is_numeric($key)) { - continue; - } + foreach ($supannState[0]['supannressourceetatdate'] as $key => $value) { + // Skip non-numeric keys (e.g., 'count') + if (!is_numeric($key)) { + continue; + } - if (strpos($value, '{COMPTE}I:toBeArchived') !== false) { - return true; - } + if (strpos($value, '{COMPTE}I:toBeArchived') !== FALSE) { + return TRUE; } + } - return false; + return FALSE; } } \ No newline at end of file