/** * Unlink a file from the IATI Registry. * @param $registryInfo * @param $changeDetails * @return bool * @throws Exception */ public function unlink($registryInfo, $changeDetails) { try { $apiKey = $registryInfo[0]['api_id']; $api = new CkanClient(env('REGISTRY_URL'), $apiKey); foreach ($changeDetails['previous'] as $filename => $previous) { $pieces = explode(".", $filename); $fileId = array_first($pieces, function () { return true; }); if (getVal($previous, ['published_status'])) { $api->package_delete($fileId); } } return true; } catch (Exception $exception) { throw $exception; } }
/** * @param Organization $organization * @param Settings $settings * @param $filename * @return bool */ public function publishToRegistry(Organization $organization, Settings $settings, $filename) { $orgPublishedFiles = $this->getPublishedFiles($organization->id, $filename); $api_url = config('filesystems.iati_registry_api_base_url'); $apiCall = new CkanClient($api_url, $settings['registry_info'][0]['api_id']); try { foreach ($orgPublishedFiles as $publishedFile) { $data = $this->generateJson($publishedFile, $settings, $organization); if ($publishedFile['published_to_register'] == 0) { $apiCall->package_create($data); $this->updatePublishToRegister($publishedFile->id); } elseif ($publishedFile['published_to_register'] == 1) { // $package = $settings['registry_info'][0]['publisher_id'] . '-org'; $apiCall->package_update($data); } $this->loggerInterface->info('Organization File Published', ['payload' => $data]); } return true; } catch (\Exception $e) { if (isset($data)) { $this->loggerInterface->error($e, ['trace' => $e->getTraceAsString(), 'payload' => $data]); return false; } $this->loggerInterface->error($e, ['trace' => $e->getTraceAsString()]); return false; } }
/** * @param $publishedFile * @param $orgId * @return bool */ protected function publishToRegistryForBulk($publishedFile, $orgId) { $settings = $this->settingsManager->getSettings($orgId); $api_url = config('filesystems.iati_registry_api_base_url'); $apiCall = new CkanClient($api_url, $settings['registry_info'][0]['api_id']); try { $data = $this->generateJson($publishedFile); if ($publishedFile['published_to_register'] == 0) { $apiCall->package_create($data); $this->activityManager->updatePublishToRegister($publishedFile->id); } elseif ($publishedFile['published_to_register'] == 1) { $apiCall->package_update($data); } $this->loggerInterface->info('Successfully published selected activity files', ['payload' => $data, 'by_user' => auth()->user()->name]); return true; } catch (\Exception $e) { $this->loggerInterface->error($e); return false; } }