actualize-user.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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 $feedId = '';
  9. public function __construct() {
  10. $this->addRequiredOption('user', (new CliOption('user')));
  11. $this->addOption('feedId', (new CliOption('feed-id')));
  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. $feedId = null;
  20. if ($cliOptions->feedId !== '') {
  21. $feedId = filter_var($cliOptions->feedId, FILTER_VALIDATE_INT, [
  22. 'options' => ['min_range' => 1],
  23. ]);
  24. if (!is_int($feedId)) {
  25. fail('FreshRSS error: Invalid feed ID: ' . $cliOptions->feedId . "\n");
  26. }
  27. }
  28. Minz_ExtensionManager::callHookVoid(Minz_HookType::FreshrssUserMaintenance);
  29. fwrite(STDERR, 'FreshRSS actualizing user “' . $username . "”…\n");
  30. $databaseDAO = FreshRSS_Factory::createDatabaseDAO();
  31. $databaseDAO->minorDbMaintenance();
  32. Minz_ExtensionManager::callHookVoid(Minz_HookType::FreshrssUserMaintenance);
  33. FreshRSS_feed_Controller::commitNewEntries();
  34. $feedDAO = FreshRSS_Factory::createFeedDao();
  35. $feedDAO->updateCachedValues();
  36. $result = FreshRSS_category_Controller::refreshDynamicOpmls();
  37. if (!empty($result['errors'])) {
  38. $errors = $result['errors'];
  39. fwrite(STDERR, "FreshRSS error refreshing $errors dynamic OPMLs!\n");
  40. }
  41. if (!empty($result['successes'])) {
  42. $successes = $result['successes'];
  43. echo "FreshRSS refreshed $successes dynamic OPMLs for $username\n";
  44. }
  45. [$nbUpdatedFeeds, , $nbNewArticles] = FreshRSS_feed_Controller::actualizeFeedsAndCommit($feedId);
  46. echo "FreshRSS actualized $nbUpdatedFeeds feeds for $username ($nbNewArticles new articles)\n";
  47. invalidateHttpCache($username);
  48. done($nbUpdatedFeeds > 0);