getFromDB($items_id)) { Html::displayNotFoundError(); } if (isset($_POST['connect'])) { if (!Profile::canCurrentUser(UPDATE) && !Profile::canCurrentUser(CREATE)) { Html::displayRightError(); } $server_id = (int) ($_POST['plugin_urbackup_servers_id'] ?? 0); if ($server_id <= 0) { Html::displayValidationError(__('No server selected')); } $link = ServerAsset::getLinkForAsset($itemtype, $items_id); if ($link !== null) { Html::displayValidationError(__('Asset is already linked to a server')); } $result = ServerAsset::createForAsset($itemtype, $items_id, $server_id); if ($result) { $item->getFromDB($items_id); Html::redirect($item->getLinkURL()); } else { Html::displayValidationError(__('Failed to link asset to server')); } } if (isset($_POST['disconnect'])) { if (!Profile::canCurrentUser(UPDATE) && !Profile::canCurrentUser(DELETE)) { Html::displayRightError(); } global $DB; $link = ServerAsset::getLinkForAsset($itemtype, $items_id, false); if ($link === null) { Html::displayValidationError(__('Asset is not linked to any server')); } $result = $DB->delete('glpi_plugin_urbackup_serverassets', ['id' => (int) $link['id']]); if ($result) { $item->getFromDB($items_id); Html::redirect($item->getLinkURL()); } else { Html::displayValidationError(__('Failed to disconnect asset from server')); } } if (isset($_POST['start_file_backup'])) { if (!Profile::canCurrentUser(UPDATE)) { Html::displayRightError(); } AssetTab::startBackup($item, 'file'); Html::redirect($item->getFormURL()); } if (isset($_POST['start_image_backup'])) { if (!Profile::canCurrentUser(UPDATE)) { Html::displayRightError(); } AssetTab::startBackup($item, 'image'); Html::redirect($item->getFormURL()); } if (isset($_POST['execute'])) { $action = $_POST['urbackup_action'] ?? ''; switch ($action) { case 'incremental_file_backup': if (Profile::canCurrentUser(UPDATE)) { AssetTab::startBackup($item, 'file'); } break; case 'full_file_backup': if (Profile::canCurrentUser(UPDATE)) { $link = ServerAsset::getLinkForAsset($itemtype, $items_id, false); if ($link !== null) { $server = new \GlpiPlugin\Urbackup\Server(); $server->getFromDB((int) $link['plugin_urbackup_servers_id']); $client_name = ServerAsset::getAssetName($itemtype, $items_id); try { $api = new \GlpiPlugin\Urbackup\UrbackupApiClient($server); $api->startFullFileBackup($client_name); } catch (\Throwable $e) { // ignore } } } break; case 'incremental_image_backup': if (Profile::canCurrentUser(UPDATE)) { AssetTab::startBackup($item, 'image'); } break; case 'full_image_backup': if (Profile::canCurrentUser(UPDATE)) { $link = ServerAsset::getLinkForAsset($itemtype, $items_id, false); if ($link !== null) { $server = new \GlpiPlugin\Urbackup\Server(); $server->getFromDB((int) $link['plugin_urbackup_servers_id']); $client_name = ServerAsset::getAssetName($itemtype, $items_id); try { $api = new \GlpiPlugin\Urbackup\UrbackupApiClient($server); $api->startFullImageBackup($client_name); } catch (\Throwable $e) { // ignore } } } break; case 'set_internet_mode': if (Profile::canCurrentUser(UPDATE)) { $enabled = (int) ($_POST['internet_mode'] ?? 0) === 1; if (!AssetTab::saveInternetMode($item, $enabled)) { Session::addMessageAfterRedirect( __('Failed to save internet mode', 'urbackup'), false, \ERROR ); } } break; case 'set_default_dirs': if (Profile::canCurrentUser(UPDATE)) { $dirs = (string) ($_POST['default_dirs'] ?? ''); if (!AssetTab::saveDefaultDirs($item, $dirs)) { Session::addMessageAfterRedirect( __('Failed to save default directories', 'urbackup'), false, \ERROR ); } } break; } $item->getFromDB($items_id); Html::redirect($item->getLinkURL()); } $item->getFromDB($items_id); Html::redirect($item->getLinkURL());