public function load()
 {
     add_action('podlove_module_was_activated_related_episodes', array($this, 'was_activated'));
     add_filter('podlove_episode_form_data', array($this, 'episode_relation_form'), 10, 2);
     add_action('save_post', array($this, 'update_episode_relations'), 10, 2);
     add_action('admin_print_styles', array($this, 'admin_print_styles'));
     \Podlove\Template\Episode::add_accessor('relatedEpisodes', array('\\Podlove\\Modules\\RelatedEpisodes\\TemplateExtensions', 'accessorRelatedEpisodes'), 5);
     add_filter('podlove_twig_file_loader', function ($file_loader) {
         $file_loader->addPath(implode(DIRECTORY_SEPARATOR, [\Podlove\PLUGIN_DIR, 'lib', 'modules', 'related_episodes', 'templates']), 'related-episodes');
         return $file_loader;
     });
     Shortcodes::init();
 }
 public function load()
 {
     add_action('podlove_uninstall_plugin', [$this, 'uninstall']);
     add_action('podlove_module_was_activated_contributors', array($this, 'was_activated'));
     add_filter('podlove_episode_form_data', array($this, 'contributors_form_for_episode'), 10, 2);
     add_action('save_post', array($this, 'update_contributors'), 10, 2);
     add_action('podlove_podcast_settings_tabs', array($this, 'podcast_settings_tab'));
     add_action('update_option_podlove_podcast', array($this, 'save_setting'), 10, 2);
     add_filter('parse_query', array($this, 'filter_by_contributor'));
     add_filter('manage_edit-podcast_columns', array($this, 'add_new_podcast_columns'));
     add_action('manage_podcast_posts_custom_column', array($this, 'manage_podcast_columns'));
     add_action('rss2_head', array($this, 'feed_head_contributors'));
     add_action('podlove_append_to_feed_entry', array($this, 'feed_item_contributors'), 10, 4);
     add_action('podlove_xml_export', array($this, 'expandExportFile'));
     add_action('podlove_xml_import', array($this, 'expandImport'));
     add_action('admin_print_styles', array($this, 'admin_print_styles'));
     add_action('wp_ajax_podlove-contributors-delete-podcast', array($this, 'delete_podcast_contributor'));
     add_action('wp_ajax_podlove-contributors-delete-default', array($this, 'delete_default_contributor'));
     add_action('wp_ajax_podlove-contributors-delete-episode', array($this, 'delete_episode_contributor'));
     add_action('podlove_feed_settings_bottom', array($this, 'feed_settings'));
     add_action('podlove_feed_process', array($this, 'feed_process'), 10, 2);
     add_filter('podlove_adn_tags_description', array($this, 'adn_tags_description'));
     add_filter('podlove_adn_example_data', array($this, 'adn_example_data'), 10, 4);
     add_filter('podlove_adn_tags', array($this, 'adn_tags'), 10, 4);
     add_filter('podlove_twig_file_loader', function ($file_loader) {
         $file_loader->addPath(implode(DIRECTORY_SEPARATOR, array(\Podlove\PLUGIN_DIR, 'lib', 'modules', 'contributors', 'templates')), 'contributors');
         return $file_loader;
     });
     add_filter('podlove_cache_tainting_classes', array($this, 'cache_tainting_classes'));
     add_action('podlove_network_admin_bar_podcast', array($this, 'add_to_admin_bar_podcast'), 10, 2);
     \Podlove\Template\Episode::add_accessor('contributors', array('\\Podlove\\Modules\\Contributors\\TemplateExtensions', 'accessorEpisodeContributors'), 5);
     \Podlove\Template\Podcast::add_accessor('contributors', array('\\Podlove\\Modules\\Contributors\\TemplateExtensions', 'accessorPodcastContributors'), 4);
     // register shortcodes
     new Shortcodes();
     // on settings screen, save per_page option
     add_filter("set-screen-option", function ($status, $option, $value) {
         if ($option == 'podlove_contributors_per_page') {
             return $value;
         }
         return $status;
     }, 10, 3);
     // register settings page
     add_action('podlove_register_settings_pages', function ($settings_parent) {
         new Settings\ContributorSettings(\Podlove\Podcast_Post_Type::SETTINGS_PAGE_HANDLE);
     });
     // filter contributions in feeds
     add_filter('podlove_feed_contributions', array($this, 'must_have_uri'), 10, 2);
     add_filter('podlove_feed_contributions', array($this, 'must_match_feed_role_and_group'), 10, 2);
     ContributorRepair::init();
     GenderStats::init();
 }
 public function load()
 {
     // module lifecycle
     add_action('podlove_module_was_activated_seasons', [$this, 'was_activated']);
     // register settings page
     add_action('podlove_register_settings_pages', function ($handle) {
         new \Podlove\Modules\Seasons\Settings\Settings($handle);
     });
     add_action('admin_print_styles', [$this, 'scripts_and_styles']);
     add_action('podlove_xml_export', array($this, 'expandExportFile'));
     add_action('podlove_xml_import', array($this, 'expandImport'));
     add_filter("set-screen-option", function ($status, $option, $value) {
         if ($option == 'podlove_seasons_per_page') {
             return $value;
         }
         return $status;
     }, 10, 3);
     \Podlove\Template\Podcast::add_accessor('seasons', ['\\Podlove\\Modules\\Seasons\\TemplateExtensions', 'accessorPodcastSeasons'], 3);
     \Podlove\Template\Episode::add_accessor('season', ['\\Podlove\\Modules\\Seasons\\TemplateExtensions', 'accessorEpisodeSeason'], 4);
 }