user-info.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #!/usr/bin/php
  2. <?php
  3. require(__DIR__ . '/_cli.php');
  4. const DATA_FORMAT = "%-7s | %-20s | %-25s | %-15s | %-10s | %-10s | %-10s | %-10s | %-10s | %-10s\n";
  5. $params = array(
  6. 'user:',
  7. 'header',
  8. );
  9. $options = getopt('h', $params);
  10. if (!validateOptions($argv, $params)) {
  11. fail('Usage: ' . basename(__FILE__) . ' (-h --header --user username --user username …)');
  12. }
  13. if (empty($options['user'])) {
  14. $users = listUsers();
  15. } elseif (is_array($options['user'])) {
  16. $users = $options['user'];
  17. } else {
  18. $users = array($options['user']);
  19. }
  20. sort($users);
  21. if (array_key_exists('header', $options)) {
  22. printf(
  23. DATA_FORMAT,
  24. 'default',
  25. 'user',
  26. 'last update',
  27. 'space used',
  28. 'categories',
  29. 'feeds',
  30. 'reads',
  31. 'unreads',
  32. 'favourites',
  33. 'tags'
  34. );
  35. }
  36. foreach ($users as $username) {
  37. $username = cliInitUser($username);
  38. $catDAO = FreshRSS_Factory::createCategoryDao();
  39. $feedDAO = FreshRSS_Factory::createFeedDao($username);
  40. $entryDAO = FreshRSS_Factory::createEntryDao($username);
  41. $tagDAO = FreshRSS_Factory::createTagDao($username);
  42. $databaseDAO = FreshRSS_Factory::createDatabaseDAO($username);
  43. $nbEntries = $entryDAO->countUnreadRead();
  44. $nbFavorites = $entryDAO->countUnreadReadFavorites();
  45. $data = array(
  46. 'default' => $username === FreshRSS_Context::$system_conf->default_user ? '*' : '',
  47. 'user' => $username,
  48. 'lastUpdate' => FreshRSS_UserDAO::mtime($username),
  49. 'spaceUsed' => $databaseDAO->size(),
  50. 'categories' => $catDAO->count(),
  51. 'feeds' => count($feedDAO->listFeedsIds()),
  52. 'reads' => $nbEntries['read'],
  53. 'unreads' => $nbEntries['unread'],
  54. 'favourites' => $nbFavorites['all'],
  55. 'tags' => $tagDAO->count(),
  56. );
  57. if (isset($options['h'])) { //Human format
  58. $data['lastUpdate'] = date('c', $data['lastUpdate']);
  59. $data['spaceUsed'] = format_bytes($data['spaceUsed']);
  60. }
  61. vprintf(DATA_FORMAT, $data);
  62. }
  63. done();