import-for-user.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/usr/bin/env php
  2. <?php
  3. declare(strict_types=1);
  4. require __DIR__ . '/_cli.php';
  5. performRequirementCheck(FreshRSS_Context::systemConf()->db['type'] ?? '');
  6. $cliOptions = new class extends CliOptionsParser {
  7. public string $user;
  8. public string $filename;
  9. public function __construct() {
  10. $this->addRequiredOption('user', (new CliOption('user')));
  11. $this->addRequiredOption('filename', (new CliOption('filename')));
  12. parent::__construct();
  13. }
  14. };
  15. if (!empty($cliOptions->errors)) {
  16. fail('FreshRSS error: ' . array_shift($cliOptions->errors) . "\n" . $cliOptions->usage);
  17. }
  18. $username = cliInitUser($cliOptions->user);
  19. $filename = $cliOptions->filename;
  20. if (!is_readable($filename)) {
  21. fail('FreshRSS error: file is not readable “' . $filename . '”');
  22. }
  23. echo 'FreshRSS importing ZIP/OPML/JSON for user “', $username, "”…\n";
  24. $importController = new FreshRSS_importExport_Controller();
  25. $ok = false;
  26. try {
  27. $ok = $importController->importFile($filename, $filename, $username);
  28. } catch (FreshRSS_ZipMissing_Exception) {
  29. fail('FreshRSS error: Lacking php-zip extension!');
  30. } catch (FreshRSS_Zip_Exception $ze) {
  31. fail('FreshRSS error: ZIP archive cannot be imported! Error code: ' . $ze->zipErrorCode());
  32. }
  33. invalidateHttpCache($username);
  34. done($ok);