HookType.php 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. declare(strict_types=1);
  3. enum Minz_HookType: string {
  4. case ActionExecute = 'action_execute'; // function(Minz_ActionController $controller): bool
  5. case ApiMisc = 'api_misc'; // function(): void
  6. case AutofillField = 'autofill_field'; // function(string $field_name): string | null
  7. case BeforeLoginBtn = 'before_login_btn'; // function(): string
  8. case CheckUrlBeforeAdd = 'check_url_before_add'; // function(string $url) -> string | null
  9. case CustomFaviconBtnUrl = 'custom_favicon_btn_url'; // function(FreshRSS_Feed $feed): string | null
  10. case CustomFaviconHash = 'custom_favicon_hash'; // function(FreshRSS_Feed $feed): string | null
  11. case EntriesFavorite = 'entries_favorite'; // function(array $ids, bool $is_favorite): void
  12. case EntriesRead = 'entries_read'; // function(array $ids, bool $is_read): void
  13. case EntryAutoRead = 'entry_auto_read'; // function(FreshRSS_Entry $entry, string $why): void
  14. case EntryAutoUnread = 'entry_auto_unread'; // function(FreshRSS_Entry $entry, string $why): void
  15. case EntryBeforeAdd = 'entry_before_add'; // function(FreshRSS_Entry $entry) -> FreshRSS_Entry | null
  16. case EntryBeforeDisplay = 'entry_before_display'; // function(FreshRSS_Entry $entry) -> FreshRSS_Entry | null
  17. case EntryBeforeInsert = 'entry_before_insert'; // function(FreshRSS_Entry $entry) -> FreshRSS_Entry | null
  18. case EntryBeforeUpdate = 'entry_before_update'; // function(FreshRSS_Entry $entry) -> FreshRSS_Entry | null
  19. case FeedBeforeActualize = 'feed_before_actualize'; // function(FreshRSS_Feed $feed) -> FreshRSS_Feed | null
  20. case FeedBeforeInsert = 'feed_before_insert'; // function(FreshRSS_Feed $feed) -> FreshRSS_Feed | null
  21. case FeedsAfterActualize = 'feeds_after_actualize'; // function(array $feeds, int $nbNewArticles): void
  22. case FeedsListBeforeActualize = 'feeds_list_before_actualize'; // function(array $feedsList) -> array
  23. case FreshrssInit = 'freshrss_init'; // function() -> none
  24. case FreshrssUserMaintenance = 'freshrss_user_maintenance'; // function() -> none
  25. case JsVars = 'js_vars'; // function($vars = array) -> array | null
  26. case MenuAdminEntry = 'menu_admin_entry'; // function() -> string
  27. case MenuConfigurationEntry = 'menu_configuration_entry'; // function() -> string
  28. case MenuOtherEntry = 'menu_other_entry'; // function() -> string
  29. case NavEntries = 'nav_entries'; // function() -> string
  30. case NavMenu = 'nav_menu'; // function() -> string
  31. case NavReadingModes = 'nav_reading_modes'; // function($readingModes = array) -> array | null
  32. case PostUpdate = 'post_update'; // function(none) -> none
  33. case SimplepieAfterInit = 'simplepie_after_init'; // function(FreshRSS_SimplePieCustom $simplePie, FreshRSS_Feed $feed, bool $result): void
  34. case SimplepieBeforeInit = 'simplepie_before_init'; // function(FreshRSS_SimplePieCustom $simplePie, FreshRSS_Feed $feed): void
  35. case ViewModes = 'view_modes'; // function($viewModes = array) -> array | null
  36. public function signature(): Minz_HookSignature {
  37. switch ($this) {
  38. case self::ApiMisc:
  39. case self::FreshrssInit:
  40. case self::FreshrssUserMaintenance:
  41. case self::PostUpdate:
  42. return Minz_HookSignature::NoneToNone;
  43. case self::BeforeLoginBtn:
  44. case self::MenuAdminEntry:
  45. case self::MenuConfigurationEntry:
  46. case self::MenuOtherEntry:
  47. case self::NavEntries:
  48. case self::NavMenu:
  49. return Minz_HookSignature::NoneToString;
  50. case self::ActionExecute:
  51. case self::CheckUrlBeforeAdd:
  52. case self::EntryBeforeAdd:
  53. case self::EntryBeforeDisplay:
  54. case self::EntryBeforeInsert:
  55. case self::EntryBeforeUpdate:
  56. case self::FeedBeforeActualize:
  57. case self::FeedBeforeInsert:
  58. case self::FeedsListBeforeActualize:
  59. case self::JsVars:
  60. case self::NavReadingModes:
  61. case self::ViewModes:
  62. return Minz_HookSignature::OneToOne;
  63. case self::AutofillField:
  64. case self::CustomFaviconBtnUrl:
  65. case self::CustomFaviconHash:
  66. case self::EntriesFavorite:
  67. case self::EntriesRead:
  68. case self::EntryAutoRead:
  69. case self::EntryAutoUnread:
  70. case self::FeedsAfterActualize:
  71. case self::SimplepieAfterInit:
  72. case self::SimplepieBeforeInit:
  73. return Minz_HookSignature::PassArguments;
  74. default:
  75. throw new \RuntimeException('The hook is not configured!');
  76. }
  77. }
  78. }