Shortcut-Eigenschaften

Backups

Implementieren

Füge das ServerHostingBackupTrait zu Deiner Page- und Action-Klasse hinzu:

Page-Handler

Die folgende Funktion im Page-Handler sollte die geparsten Daten Deiner Backups zurückgeben. Die Funktion gibt ein ServerHostingBackupResponse() zurück, das Folgendes enthält...

  • Array von backupItems

  • (optional) Boolean, ob der Nutzer Backups erstellen kann, sowie das Backup-Limit.

  • (optional) Boolean, ob die Integration benutzerdefinierte Namen für Backups unterstützt

  • (optional) Integer der maximal erlaubten Backups. (-1, wenn unbegrenzt)

  • (optional) Wenn der Wiederherstellungsprozentsatz nicht speziell für ein einzelnes Backup angegeben ist (siehe unten), sondern für das gesamte Produkt gilt, übergib ihn hier.

Die backupItems sind ein Array von ServerHostingBackupItem(), das Folgendes enthält...

  1. ID des Backups (dies wird zum Wiederherstellen und Löschen von Backups verwendet)

  2. Carbon() Datum der Erstellung

  3. (optional) Anzeigename

  4. (optional) Boolean, ob das Backup für die Wiederherstellung verfügbar ist

  5. (optional) Die Größe des Backups. Du kannst einen Integer in Bytes oder einen String zurückgeben, der dann einfach ausgegeben wird.

  6. (optional) Wenn das Backup gerade erstellt wird, der Prozentsatz der Erstellung als Integer von 1 bis 100

public function _getBackups(ProductHosting $productHosting, string $page, Request $request) {
   // Get the backups from the remote API (in this case Virtualizor)
   $backups = $productHosting->module->getHostingHandler($productHosting->sales_channel_id)->getEnduserClient()->list_backup($productHosting->custom_fields['vpsId']);


   $backupItems = [];
   foreach ($backups['backups_list'] as $backup) {
      $display = substr($backup, 6, 2) . "." . substr($backup, 4, 2) . "." . substr($backup, 0, 4);

      // For each backup, create a new ServerHostingBackupItem() class
      $backupItems[] = new ServerHostingBackupItem(
         $backup,                 // <-- Backup ID
         Carbon::parse($display), // <-- The carbon time when the backup was created
         "Backup display name",   // <-- The display name
         true,                    // <-- If the backup is currently available for restore / deletion
         460000000,               // <-- The size in bytes OR the size as string, if available
         57                       // <-- The percentage of backup creation, if available
      );
   }

   return new ServerHostingBackupResponse(
      $backupItems,                   // <-- The backup items
      true,                           // <-- If the user can create backups, usually true
      (int)$backups['backup_limit']  // <-- The limit of backups. -1 if unlimited
   );
}

hostware verwendet diese Daten, um die Backup-Tabelle anzuzeigen. Abhängig davon, welche Daten Du angegeben hast, werden Tabellenspalten für Datum, Name und Größe erstellt. Wenn nichts davon angegeben ist, wird als letzter Ausweg die ID angezeigt.

Action-Handler

Integriere die folgenden Funktionen, die das Backup erstellen und wiederherstellen. Sie können entweder einen Boolean zurückgeben, wenn erfolgreich (dann wird eine hostware-Standard-Backup-Nachricht ausgegeben), eine Exception für eine benutzerdefinierte Fehlermeldung oder bei Bedarf ein ServerHostingProductActionResponse().

Um die Codezeilen zu minimieren und die Standardisierung von hostware zu maximieren, sollten Booleans meistens verwendet werden, außer wenn benutzerdefinierte Meldungen zurückgegeben werden sollen. Technische Fehlermeldungen sollten niemals an den Nutzer zurückgegeben werden, sondern stattdessen mit dem LogService protokolliert werden.

public function _createBackup(ProductHosting $productHosting, Request $request) {
   $response = $productHosting->module->getHostingHandler($productHosting->sales_channel_id)->getEnduserClient()->backup($productHosting->custom_fields['vpsId'], ['cbackup' => 1]);

   return !is_string($response);
}

public function _restoreBackup(ProductHosting $productHosting, Request $request) {
   $post['bid'] = $request->get('backupId');
   $post['restore'] = 1;

   $response = $productHosting->module->getHostingHandler($productHosting->sales_channel_id)->getEnduserClient()->restore_backup($post, $productHosting->custom_fields['vpsId']);

   return !is_string($response);
}
War das hilfreich?