app, $request, $response); $view->setTemplate('/Modules/Exchange/Theme/Backend/exchange-dashboard'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1007001001, $request, $response)); return $view; } /** * Method which generates the export list view. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return \Serializable Serializable web view * * @since 1.0.0 * @codeCoverageIgnore */ public function viewExchangeExportList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable { $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Exchange/Theme/Backend/exchange-export-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1007001001, $request, $response)); $interfaces = InterfaceManagerMapper::getAll(); $export = []; foreach ($interfaces as $interface) { if ($interface->hasExport()) { $export[] = $interface; } } $view->addData('interfaces', $export); return $view; } /** * Method which generates the import list view. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return \Serializable Serializable web view * * @since 1.0.0 * @codeCoverageIgnore */ public function viewExchangeImportList(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable { $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Exchange/Theme/Backend/exchange-import-list'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1007001001, $request, $response)); $interfaces = InterfaceManagerMapper::getAll(); $import = []; foreach ($interfaces as $interface) { if ($interface->hasImport()) { $import[] = $interface; } } $view->addData('interfaces', $import); return $view; } /** * Method which generates the export view. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return \Serializable Serializable web view * * @since 1.0.0 * @codeCoverageIgnore */ public function viewExchangeExport(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable { $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Exchange/Theme/Backend/exchange-export'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1007001001, $request, $response)); return $view; } /** * Method which generates the import view. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return \Serializable Serializable web view * * @since 1.0.0 * @codeCoverageIgnore */ public function viewExchangeImport(RequestAbstract $request, ResponseAbstract $response, $data = null) : \Serializable { $view = new View($this->app, $request, $response); $view->setTemplate('/Modules/Exchange/Theme/Backend/exchange-import'); $view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1007001001, $request, $response)); $interface = InterfaceManagerMapper::get((int) $request->getData('id')); $view->addData('interface', $interface); $lang = include __DIR__ . '/Interfaces/' . $interface->getInterfacePath() . '/' . $response->getHeader()->getL11n()->getLanguage() . '.lang.php'; $view->addData('lang', $lang); return $view; } /** * Api method to import data * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiExchangeImport(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { $import = $this->importDataFromRequest($request); $status = NotificationLevel::ERROR; $message = 'Import failed.'; if ($import) { $status = NotificationLevel::OK; $message = 'Import succeeded.'; } $response->set($request->getUri()->__toString(), [ 'status' => status, 'title' => 'Exchange', 'message' => $message ]); } /** * Method to import data based on a request * * @param RequestAbstract $request Request * * @return bool * * @since 1.0.0 */ private function importDataFromRequest(RequestAbstract $request) : bool { $interfaces = InterfaceManagerMapper::getAll(); foreach ($interfaces as $interface) { if ($request->getData('exchange') ?? '' === $interface->getInterfacePath()) { $class = '\\Modules\\Exchange\\Interfaces\\' . $interface->getInterfacePath() . '\\Importer'; $importer = new $class($this->app->dbPool->get()); return $importer->importFromRequest($request); } } return false; } }