From 06d6225e27bb0bfaacae5a06197ab77ec9e94660 Mon Sep 17 00:00:00 2001 From: Jesse Tolj Date: Tue, 9 Apr 2024 14:25:12 -0400 Subject: [PATCH 001/126] convert CI to github action --- .github/workflows/run_tests.yml | 105 +++++++++++++++++++++++++++ .gitlab-ci.yml | 2 +- tests/_support/AcceptanceTester.php | 9 +++ tests/acceptance.suite.yml | 13 +--- tests/acceptance/3_main-feed.feature | 5 +- tests/seed.sql.gz | Bin 0 -> 223207 bytes 6 files changed, 118 insertions(+), 16 deletions(-) create mode 100644 .github/workflows/run_tests.yml create mode 100644 tests/seed.sql.gz diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml new file mode 100644 index 00000000..c23669b9 --- /dev/null +++ b/.github/workflows/run_tests.yml @@ -0,0 +1,105 @@ +name: CI + +on: + pull_request: + branches: + - develop + - master + +permissions: + contents: read + +jobs: + run_tests: + name: Run Unit & Acceptance Tests + runs-on: ubuntu-latest + services: + mysql: + image: mysql:8 + env: + MYSQL_ROOT_PASSWORD: wordpress + MYSQL_USER: wordpress + MYSQL_PASSWORD: wordpress + MYSQL_DATABASE: wordpress_test + ports: + - 3306:3306 + options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Set up PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php_version }} + coverage: none + tools: wp-cli + + - name: Install Composer dependencies + run: composer install + + - name: Setup Node + uses: actions/setup-node@v2 + with: + node-version: '17' + + - name: Prepare testing environment + run: | + # Move the plugin files to the separate folder + mkdir ssp && mv `ls -A | grep -v ssp` ssp + + # Download WordPress + wp core download --allow-root + + # Set up .env + echo "TEST_WP_ROOT=$(pwd)" > .env.testing + echo "TEST_DB_HOST=127.0.0.1" >> .env.testing + echo "TEST_DB_NAME=wordpress_test" >> .env.testing + echo "TEST_DB_USER=wordpress" >> .env.testing + echo "TEST_DB_PASSWORD=wordpress" >> .env.testing + echo "TEST_DOMAIN=localhost" >> .env.testing + mv .env.testing ssp/ + + # Move the plugin to the plugins folder + mv ssp ./wp-content/plugins/seriously-simple-podcasting + cd wp-content/plugins/seriously-simple-podcasting + npm install -g grunt-cli + npm install + npm rebuild node-sass + grunt uglify && grunt cssmin && npm run build + + - name: Run Unit tests + run: cd wp-content/plugins/seriously-simple-podcasting && vendor/bin/codecept run wpunit + + - name: Run Acceptance tests + run: | + wp config create --dbname=wordpress_test --dbuser=wordpress --dbpass=wordpress --dbhost=127.0.0.1 --dbprefix=wsy_ --allow-root + wp config set WP_SITEURL http://localhost:8000 --type=constant --allow-root + wp config set WP_HOME http://localhost:8000 --type=constant --allow-root + nohup php -S localhost:8000 & + cd wp-content/plugins/seriously-simple-podcasting + echo "SITE_URL=http://localhost:8000" >> .env.testing + echo "SITE_USER=autotest" >> .env.testing + echo "SITE_USER_PASS=password" >> .env.testing + echo "PODCAST_GUID=dd94465b-580a-501c-a892-caf224d23d7a" >> .env.testing + sudo apt-get update -qq + sudo env DEBIAN_FRONTEND=noninteractive apt-get install -qq mysql-client default-libmysqlclient-dev + gzip -d tests/seed.sql.gz && wp db import tests/seed.sql --allow-root + wp core update-db --allow-root + wp theme activate twentytwentyfour --allow-root + wp plugin install classic-editor --allow-root + vendor/bin/codecept run acceptance --steps + + - name: Upload codeception output on failure + if: failure() + uses: actions/upload-artifact@v2 + with: + name: acceptance-tests + path: wp-content/plugins/seriously-simple-podcasting/tests/_output + + - name: Upload PHP server logs on failure + if: failure() + uses: actions/upload-artifact@v2 + with: + name: acceptance-tests + path: nohup.out \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9caf71f3..c9b187e4 100755 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -46,7 +46,6 @@ unit_tests: # Prepare testing environment file - touch .env.testing - - echo "TEST_WP_ROOT=$(pwd)" - echo "TEST_WP_ROOT=$(pwd)" >> .env.testing - echo "TEST_DB_HOST=db" >> .env.testing - echo "TEST_DB_NAME=$MYSQL_DATABASE" >> .env.testing @@ -151,6 +150,7 @@ acceptance_tests: - echo "SITE_URL=$SSH_USER" >> .env.testing - echo "SITE_USER=$SITE_USER" >> .env.testing - echo "SITE_USER_PASS=$SITE_USER_PASS" >> .env.testing + - echo "PODCAST_GUID=115e423a-72d2-531e-9d3c-ece7dd4b74fe" >> .env.testing # Run Acceptance tests - vendor/bin/codecept run acceptance --steps diff --git a/tests/_support/AcceptanceTester.php b/tests/_support/AcceptanceTester.php index 269a6c2e..01166020 100644 --- a/tests/_support/AcceptanceTester.php +++ b/tests/_support/AcceptanceTester.php @@ -490,6 +490,15 @@ public function iCanSeeInSource( $arg1 ) { if ( false !== strpos( $arg1, '{{base_url}}' ) ) { $arg1 = str_replace( '{{base_url}}', $this->getConfig( 'url' ), $arg1 ); } + elseif ( false !== strpos( $arg1, '{{base_url_without_port}}' ) ) { + $parts = parse_url($this->getConfig( 'url' )); + $url = $parts['scheme'] . '://' . $parts['host']; + $arg1 = str_replace( '{{base_url_without_port}}', $url, $arg1 ); + } + elseif ( false !== strpos( $arg1, '{{podcast_guid}}' ) ) { + $arg1 = str_replace( '{{podcast_guid}}', $this->getConfig( 'podcastGuid' ), $arg1 ); + } + $this->seeInSource( $arg1 ); } } diff --git a/tests/acceptance.suite.yml b/tests/acceptance.suite.yml index 68911396..9cdf995b 100644 --- a/tests/acceptance.suite.yml +++ b/tests/acceptance.suite.yml @@ -7,24 +7,13 @@ actor: AcceptanceTester modules: enabled: -# - WPBrowser - PhpBrowser: -# url: http://castos.loc - \Helper\Acceptance -# - WPWebDriver: -# url: 'http://castos.loc' -# browser: phantomjs -# port: 4444 -# restart: true -# wait: 2 -# adminUsername: admin -# adminPassword: password -# adminUrl: /wp-admin - config: PhpBrowser: url: '%SITE_URL%' adminPath: '%SITE_URL%/wp-admin' + podcastGuid: '%PODCAST_GUID%' step_decorators: ~ diff --git a/tests/acceptance/3_main-feed.feature b/tests/acceptance/3_main-feed.feature index 81e88d49..7797daa9 100644 --- a/tests/acceptance/3_main-feed.feature +++ b/tests/acceptance/3_main-feed.feature @@ -35,7 +35,7 @@ Feature: Login And I can see in source "xmlns:podcast=\"https://podcastindex.org/namespace/1.0\"" And I can see in source "" And I can see in source "Automated test show" - And I can see in source "" + And I can see in source "" And I can see in source "{{base_url}}/podcasts/automated-test-show/" And I can see in source "This show is to test some SSP functionality" And I can see in source "" @@ -54,8 +54,7 @@ Feature: Login And I can see in source "This show is to test some SSP functionality" And I can see in source "No" And I can see in source "yes" - And I can see in source "115e423a-72d2-531e-9d3c-ece7dd4b74fe" - + And I can see in source "{{podcast_guid}}" # Check items And I can see in source "Episode3" diff --git a/tests/seed.sql.gz b/tests/seed.sql.gz new file mode 100644 index 0000000000000000000000000000000000000000..9356c97114f338a32f1279b148fa06c8365d649e GIT binary patch literal 223207 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�Ye>10fCu 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 Date: Wed, 17 Apr 2024 11:06:10 -0400 Subject: [PATCH 002/126] Set PHP 8.1 as testing base --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index c23669b9..14985721 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -31,7 +31,7 @@ jobs: - name: Set up PHP uses: shivammathur/setup-php@v2 with: - php-version: ${{ matrix.php_version }} + php-version: 8.1 coverage: none tools: wp-cli From 9e213ce131c9ba7e744003f4ad03625cccac0a57 Mon Sep 17 00:00:00 2001 From: Sergiy Zakharchenko Date: Mon, 29 Apr 2024 18:35:27 +0100 Subject: [PATCH 003/126] Onboarding menu item --- assets/admin/css/admin.css | 8 +- assets/admin/scss/_onboarding.scss | 2 +- assets/js/admin-menu.js | 11 +++ .../controllers/class-app-controller.php | 43 ++++++----- .../controllers/class-assets-controller.php | 7 ++ .../class-onboarding-controller.php | 30 +++++--- php/includes/ssp-functions.php | 77 ++++++++++++------- 7 files changed, 114 insertions(+), 64 deletions(-) create mode 100644 assets/js/admin-menu.js diff --git a/assets/admin/css/admin.css b/assets/admin/css/admin.css index e2597b1f..95dca4f5 100644 --- a/assets/admin/css/admin.css +++ b/assets/admin/css/admin.css @@ -977,17 +977,17 @@ textarea#episode_embed_code { font-family: dashicons, 'Inter', sans-serif; } /* Hide the WP bars */ -.admin_page_ssp-onboarding-1 #adminmenumain, .admin_page_ssp-onboarding-1 #wpadminbar, .admin_page_ssp-onboarding-1 #wpfooter, .admin_page_ssp-onboarding-2 #adminmenumain, .admin_page_ssp-onboarding-2 #wpadminbar, .admin_page_ssp-onboarding-2 #wpfooter, .admin_page_ssp-onboarding-3 #adminmenumain, .admin_page_ssp-onboarding-3 #wpadminbar, .admin_page_ssp-onboarding-3 #wpfooter, .admin_page_ssp-onboarding-4 #adminmenumain, .admin_page_ssp-onboarding-4 #wpadminbar, .admin_page_ssp-onboarding-4 #wpfooter, .admin_page_ssp-onboarding-5 #adminmenumain, .admin_page_ssp-onboarding-5 #wpadminbar, .admin_page_ssp-onboarding-5 #wpfooter { +.podcast_page_ssp-onboarding-1 #adminmenumain, .podcast_page_ssp-onboarding-1 #wpadminbar, .podcast_page_ssp-onboarding-1 #wpfooter, .admin_page_ssp-onboarding-1 #adminmenumain, .admin_page_ssp-onboarding-1 #wpadminbar, .admin_page_ssp-onboarding-1 #wpfooter, .admin_page_ssp-onboarding-2 #adminmenumain, .admin_page_ssp-onboarding-2 #wpadminbar, .admin_page_ssp-onboarding-2 #wpfooter, .admin_page_ssp-onboarding-3 #adminmenumain, .admin_page_ssp-onboarding-3 #wpadminbar, .admin_page_ssp-onboarding-3 #wpfooter, .admin_page_ssp-onboarding-4 #adminmenumain, .admin_page_ssp-onboarding-4 #wpadminbar, .admin_page_ssp-onboarding-4 #wpfooter, .admin_page_ssp-onboarding-5 #adminmenumain, .admin_page_ssp-onboarding-5 #wpadminbar, .admin_page_ssp-onboarding-5 #wpfooter { display: none; } -.admin_page_ssp-onboarding-1 #wpcontent, .admin_page_ssp-onboarding-2 #wpcontent, .admin_page_ssp-onboarding-3 #wpcontent, .admin_page_ssp-onboarding-4 #wpcontent, .admin_page_ssp-onboarding-5 #wpcontent { +.podcast_page_ssp-onboarding-1 #wpcontent, .admin_page_ssp-onboarding-1 #wpcontent, .admin_page_ssp-onboarding-2 #wpcontent, .admin_page_ssp-onboarding-3 #wpcontent, .admin_page_ssp-onboarding-4 #wpcontent, .admin_page_ssp-onboarding-5 #wpcontent { margin-left: 0; padding-left: 0; } -.admin_page_ssp-onboarding-1 #wpbody-content, .admin_page_ssp-onboarding-2 #wpbody-content, .admin_page_ssp-onboarding-3 #wpbody-content, .admin_page_ssp-onboarding-4 #wpbody-content, .admin_page_ssp-onboarding-5 #wpbody-content { +.podcast_page_ssp-onboarding-1 #wpbody-content, .admin_page_ssp-onboarding-1 #wpbody-content, .admin_page_ssp-onboarding-2 #wpbody-content, .admin_page_ssp-onboarding-3 #wpbody-content, .admin_page_ssp-onboarding-4 #wpbody-content, .admin_page_ssp-onboarding-5 #wpbody-content { padding-bottom: 30px; } -.admin_page_ssp-onboarding-1 .notice, .admin_page_ssp-onboarding-1 .error, .admin_page_ssp-onboarding-2 .notice, .admin_page_ssp-onboarding-2 .error, .admin_page_ssp-onboarding-3 .notice, .admin_page_ssp-onboarding-3 .error, .admin_page_ssp-onboarding-4 .notice, .admin_page_ssp-onboarding-4 .error, .admin_page_ssp-onboarding-5 .notice, .admin_page_ssp-onboarding-5 .error { +.podcast_page_ssp-onboarding-1 .notice, .podcast_page_ssp-onboarding-1 .error, .admin_page_ssp-onboarding-1 .notice, .admin_page_ssp-onboarding-1 .error, .admin_page_ssp-onboarding-2 .notice, .admin_page_ssp-onboarding-2 .error, .admin_page_ssp-onboarding-3 .notice, .admin_page_ssp-onboarding-3 .error, .admin_page_ssp-onboarding-4 .notice, .admin_page_ssp-onboarding-4 .error, .admin_page_ssp-onboarding-5 .notice, .admin_page_ssp-onboarding-5 .error { display: none; } .ssp-review-notice { diff --git a/assets/admin/scss/_onboarding.scss b/assets/admin/scss/_onboarding.scss index a9bda3c3..9f28a3c8 100644 --- a/assets/admin/scss/_onboarding.scss +++ b/assets/admin/scss/_onboarding.scss @@ -907,7 +907,7 @@ } /* Hide the WP bars */ -.admin_page_ssp-onboarding-1, .admin_page_ssp-onboarding-2, .admin_page_ssp-onboarding-3, .admin_page_ssp-onboarding-4, .admin_page_ssp-onboarding-5 { +.podcast_page_ssp-onboarding-1, .admin_page_ssp-onboarding-1, .admin_page_ssp-onboarding-2, .admin_page_ssp-onboarding-3, .admin_page_ssp-onboarding-4, .admin_page_ssp-onboarding-5 { #adminmenumain, #wpadminbar, #wpfooter { display: none; } diff --git a/assets/js/admin-menu.js b/assets/js/admin-menu.js new file mode 100644 index 00000000..e75ddc8f --- /dev/null +++ b/assets/js/admin-menu.js @@ -0,0 +1,11 @@ +jQuery( document ).ready( function( $ ) { + var initOnboardingMenu = function() { + var $firstMenuItem = $( '#menu-posts-podcast' ).find( '.wp-submenu a.wp-first-item' ); + + if ( $firstMenuItem.length && $firstMenuItem.attr( 'href' ).includes( 'page=ssp-onboarding-1' ) ) { + $firstMenuItem.closest('ul').find('li').not('.wp-first-item').hide(); + } + } + + initOnboardingMenu(); +} ); diff --git a/php/classes/controllers/class-app-controller.php b/php/classes/controllers/class-app-controller.php index bafc448a..4ca9a697 100644 --- a/php/classes/controllers/class-app-controller.php +++ b/php/classes/controllers/class-app-controller.php @@ -281,7 +281,7 @@ protected function bootstrap() { $this->assets_controller = new Assets_Controller(); - $this->series_handler = new Series_Handler( $this->admin_notices_handler, $this->roles_handler, $this->castos_handler, $this->settings_handler, $this->episode_repository ); + $this->series_handler = new Series_Handler( $this->admin_notices_handler, $this->roles_handler, $this->castos_handler, $this->settings_handler, $this->episode_repository ); $this->upgrade_handler = new Upgrade_Handler( $this->episode_repository, $this->castos_handler, $this->series_handler ); @@ -331,7 +331,7 @@ protected function bootstrap() { $this->load_plugin_textdomain(); } - protected function init_integrations(){ + protected function init_integrations() { /* * Gutenberg integration. * Only load Blocks if the WordPress version is newer than 5.0. @@ -393,7 +393,7 @@ public function get_available_services() { * * @return string * */ - protected function get_wp_version(){ + protected function get_wp_version() { global $wp_version; return $wp_version; @@ -402,7 +402,7 @@ protected function get_wp_version(){ /** * Init REST API */ - protected function init_rest_api(){ + protected function init_rest_api() { global $wp_version; // Only load WP REST API Endpoints if the WordPress version is newer than 4.7. @@ -494,7 +494,6 @@ public function get_settings_handler() { } - /** * Register the Castos Blog dashboard widget * Hooks into the wp_dashboard_setup action hook @@ -547,9 +546,9 @@ public function ssp_castos_dashboard_output( $widget_id, $feeds ) { /** * Check if there is a cached version of the RSS Feed and output it */ - $locale = get_user_locale(); - $cache_key = 'ssp_dash_v2_' . md5( $widget_id . '_' . $locale ); - $rss_output = get_transient( $cache_key ); + $locale = get_user_locale(); + $cache_key = 'ssp_dash_v2_' . md5( $widget_id . '_' . $locale ); + $rss_output = get_transient( $cache_key ); if ( false !== $rss_output ) { return $rss_output; } @@ -568,13 +567,14 @@ public function ssp_castos_dashboard_output( $widget_id, $feeds ) { * Set up the cached version to expire in 12 hours and output the content */ set_transient( $cache_key, $rss_output, 12 * HOUR_IN_SECONDS ); + return $rss_output; } /** * Adding podcast episodes to 'At a glance' dashboard widget * - * @param array $items Existing items + * @param array $items Existing items * * @return array Updated items */ @@ -583,8 +583,8 @@ public function glance_items( $items = array() ) { $num_posts = count( ssp_episodes( - 1, '', false, 'glance' ) ); $post_type_object = get_post_type_object( $this->token ); - $text = _n( '%s Episode', '%s Episodes', $num_posts, 'seriously-simple-podcasting' ); - $text = sprintf( $text, number_format_i18n( $num_posts ) ); + $text = _n( '%s Episode', '%s Episodes', $num_posts, 'seriously-simple-podcasting' ); + $text = sprintf( $text, number_format_i18n( $num_posts ) ); if ( $post_type_object && current_user_can( $post_type_object->cap->edit_posts ) ) { $items[] = sprintf( '%2$s', $this->token, $text ) . "\n"; @@ -598,10 +598,10 @@ public function glance_items( $items = array() ) { /** * Adding appreciation links to the SSP record in the plugin list table * - * @param array $plugin_meta Default plugin meta links - * @param string $plugin_file Plugin file - * @param array $plugin_data Array of plugin data - * @param string $status Plugin status + * @param array $plugin_meta Default plugin meta links + * @param string $plugin_file Plugin file + * @param array $plugin_data Array of plugin data + * @param string $status Plugin status * * @return array Modified plugin meta links */ @@ -613,6 +613,7 @@ public function plugin_row_meta( $plugin_meta = array(), $plugin_file = '', $plu $plugin_meta['docs'] = '' . __( 'Documentation', 'seriously-simple-podcasting' ) . ''; $plugin_meta['addons'] = '' . __( 'Add-ons', 'seriously-simple-podcasting' ) . ''; $plugin_meta['review'] = '' . __( 'Write a review', 'seriously-simple-podcasting' ) . ''; + return $plugin_meta; } @@ -650,7 +651,7 @@ public function load_plugin_textdomain() { /** * Hide RSS footer created by WordPress SEO from podcast RSS feed * - * @param boolean $include_footer Default inclusion value + * @param boolean $include_footer Default inclusion value * * @return boolean Modified inclusion value */ @@ -710,7 +711,7 @@ public function maybe_run_plugin_updates() { /** * Add rating link to admin footer on SSP settings pages * - * @param string $footer_text Default footer text + * @param string $footer_text Default footer text * * @return string Modified footer text */ @@ -722,7 +723,7 @@ public function admin_footer_text( $footer_text ) { // Change the footer text if ( ! get_option( 'ssp_admin_footer_text_rated' ) ) { $footer_text = sprintf( __( 'If you like %1$sSeriously Simple Podcasting%2$s please leave a %3$s★★★★★%4$s rating. A huge thank you in advance!', 'seriously-simple-podcasting' ), '', '', '', '' ); - $footer_text .= sprintf(" - From a02540bca0046ef6f69562b44b319d9da203641b Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Tue, 29 Oct 2024 16:36:31 +0000 Subject: [PATCH 092/126] Version 3.6.0-alpha.3 --- seriously-simple-podcasting.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/seriously-simple-podcasting.php b/seriously-simple-podcasting.php index f1f1b9c3..5c6adf09 100644 --- a/seriously-simple-podcasting.php +++ b/seriously-simple-podcasting.php @@ -1,7 +1,7 @@ Date: Wed, 30 Oct 2024 17:04:34 +0000 Subject: [PATCH 093/126] Fixed feed image field --- php/classes/renderers/class-settings-renderer.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/php/classes/renderers/class-settings-renderer.php b/php/classes/renderers/class-settings-renderer.php index b86d80a1..a9a493a4 100644 --- a/php/classes/renderers/class-settings-renderer.php +++ b/php/classes/renderers/class-settings-renderer.php @@ -527,12 +527,15 @@ protected function render_select( $field, $data, $option_name ) { protected function render_image( $field, $data, $option_name, $default_option_name = '' ) { $default_option_name = $default_option_name ?: $option_name; - $html = 'get_data_attrs( $field ) . ' />
' . "\n"; $html .= '' . "\n"; $html .= '' . "\n"; $html .= '
' . "\n"; return $html; From 3e83c99db62d3a27a054ab8a8b0df8093c9780fb Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Wed, 30 Oct 2024 19:33:35 +0000 Subject: [PATCH 094/126] LifterLMS compatibility (744) --- php/classes/controllers/class-assets-controller.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/php/classes/controllers/class-assets-controller.php b/php/classes/controllers/class-assets-controller.php index 8e9e0925..a6aa7e60 100644 --- a/php/classes/controllers/class-assets-controller.php +++ b/php/classes/controllers/class-assets-controller.php @@ -168,11 +168,11 @@ public function enqueue_admin_scripts( $hook ) { protected function need_admin_scripts( $hook ) { $ssp = ssp_post_types(); - return 'post.php' === $hook || - 'post-new.php' === $hook || + return ( in_array( 'post', $ssp ) && 'post.php' === $hook ) || + ( in_array( 'post', $ssp ) && 'post-new.php' === $hook ) || + ( in_array( 'post', $ssp ) && 'edit.php' === $hook ) || strpos( $hook, 'ssp-onboarding' ) || $this->is_ssp_admin_page() || - ( in_array( 'post', $ssp ) && 'edit.php' === $hook ) || - ( 'term.php' === $hook && ssp_series_taxonomy() === filter_input( INPUT_GET, 'taxonomy' ) ); + ( 'term.php' === $hook && (ssp_series_taxonomy() === filter_input( INPUT_GET, 'taxonomy' ) ) ); } } From 328469645d4fbd36ed6c135affb0c7821c4fc4de Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Wed, 30 Oct 2024 20:21:09 +0000 Subject: [PATCH 095/126] Player button style fix (745) --- assets/css/castos-player.css | 1 + 1 file changed, 1 insertion(+) diff --git a/assets/css/castos-player.css b/assets/css/castos-player.css index b63f8670..f17c9cb0 100644 --- a/assets/css/castos-player.css +++ b/assets/css/castos-player.css @@ -719,6 +719,7 @@ height: 44px; display: block; border-radius: 50%; + box-sizing: border-box; } .castos-player .play-pause-controls button { position: absolute; From 5d87da8c8f9d8cf944833e02c435787927b9813b Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Wed, 30 Oct 2024 20:21:36 +0000 Subject: [PATCH 096/126] Version 3.6.0-alpha.4 --- seriously-simple-podcasting.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/seriously-simple-podcasting.php b/seriously-simple-podcasting.php index 5c6adf09..a3c6172c 100644 --- a/seriously-simple-podcasting.php +++ b/seriously-simple-podcasting.php @@ -1,7 +1,7 @@ Date: Mon, 4 Nov 2024 13:08:39 +0000 Subject: [PATCH 097/126] Version 3.6.0 --- package.json | 2 +- readme.txt | 9 ++++++++- seriously-simple-podcasting.php | 4 ++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 73ec5df8..5dfb97d5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "seriously-simple-podcasting", - "version": "3.5.0", + "version": "3.6.0", "main": "build/index.js", "author": "CastosHQ", "devDependencies": { diff --git a/readme.txt b/readme.txt index 6055240d..e6b66802 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Tags: podcast, audio, itunes, podcasting, playlist Requires at least: 5.3 Tested up to: 6.6 Requires PHP: 7.4 -Stable tag: 3.5.0 +Stable tag: 3.6.0 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html @@ -165,6 +165,13 @@ You can find complete user and developer documentation (along with the FAQs) on == Changelog == += 3.6.0 = +2024-11-04 +[UPDATE] Display episode meta boxes in the sidebar +[FIX] Lifter LMS compatibility +[FIX] Fix player button styles for certain environments +[FIX] Code and security improvements + = 3.5.0 = 2024-09-11 [UPDATE] Enhanced UX/UI for Hosting (Castos connection) settings diff --git a/seriously-simple-podcasting.php b/seriously-simple-podcasting.php index a3c6172c..12063a3d 100644 --- a/seriously-simple-podcasting.php +++ b/seriously-simple-podcasting.php @@ -1,7 +1,7 @@ Date: Tue, 5 Nov 2024 14:31:19 +0000 Subject: [PATCH 098/126] Fixed episode meta field styles --- php/classes/controllers/class-assets-controller.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/php/classes/controllers/class-assets-controller.php b/php/classes/controllers/class-assets-controller.php index a6aa7e60..cf3cdd08 100644 --- a/php/classes/controllers/class-assets-controller.php +++ b/php/classes/controllers/class-assets-controller.php @@ -166,13 +166,14 @@ public function enqueue_admin_scripts( $hook ) { protected function need_admin_scripts( $hook ) { + $screen = get_current_screen(); $ssp = ssp_post_types(); - return ( in_array( 'post', $ssp ) && 'post.php' === $hook ) || - ( in_array( 'post', $ssp ) && 'post-new.php' === $hook ) || - ( in_array( 'post', $ssp ) && 'edit.php' === $hook ) || + return ( in_array( $screen->post_type, $ssp ) && 'post.php' === $hook ) || + ( in_array( $screen->post_type, $ssp ) && 'post-new.php' === $hook ) || + ( in_array( $screen->post_type, $ssp ) && 'edit.php' === $hook ) || strpos( $hook, 'ssp-onboarding' ) || $this->is_ssp_admin_page() || - ( 'term.php' === $hook && (ssp_series_taxonomy() === filter_input( INPUT_GET, 'taxonomy' ) ) ); + ( 'term.php' === $hook && ( ssp_series_taxonomy() === filter_input( INPUT_GET, 'taxonomy' ) ) ); } } From 60bfc0499b5095e05bd993faf945e9e5415bdf11 Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Tue, 5 Nov 2024 14:35:22 +0000 Subject: [PATCH 099/126] Version 3.6.1 --- package.json | 2 +- readme.txt | 6 +++++- seriously-simple-podcasting.php | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 5dfb97d5..f8915881 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "seriously-simple-podcasting", - "version": "3.6.0", + "version": "3.6.1", "main": "build/index.js", "author": "CastosHQ", "devDependencies": { diff --git a/readme.txt b/readme.txt index e6b66802..d3fb8a5e 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Tags: podcast, audio, itunes, podcasting, playlist Requires at least: 5.3 Tested up to: 6.6 Requires PHP: 7.4 -Stable tag: 3.6.0 +Stable tag: 3.6.1 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html @@ -165,6 +165,10 @@ You can find complete user and developer documentation (along with the FAQs) on == Changelog == += 3.6.1 = +2024-11-05 +[FIX] Fixed episode meta field styles + = 3.6.0 = 2024-11-04 [UPDATE] Display episode meta boxes in the sidebar diff --git a/seriously-simple-podcasting.php b/seriously-simple-podcasting.php index 12063a3d..d804fb9a 100644 --- a/seriously-simple-podcasting.php +++ b/seriously-simple-podcasting.php @@ -1,7 +1,7 @@ Date: Wed, 6 Nov 2024 19:32:31 +0000 Subject: [PATCH 100/126] New file passthrough URL rules (746) --- .../controllers/class-episode-controller.php | 2 +- .../controllers/class-feed-controller.php | 4 +- .../repositories/class-episode-repository.php | 21 +++++---- .../rest/class-rest-api-controller.php | 6 +-- php/includes/ssp-functions.php | 45 +++++++++++++++++++ templates/feed-podcast.php | 2 +- templates/feed-stylesheet.xsl | 6 --- 7 files changed, 65 insertions(+), 21 deletions(-) diff --git a/php/classes/controllers/class-episode-controller.php b/php/classes/controllers/class-episode-controller.php index 2ed4b76e..050d5545 100644 --- a/php/classes/controllers/class-episode-controller.php +++ b/php/classes/controllers/class-episode-controller.php @@ -76,7 +76,7 @@ public function get_episode_download_link( $episode_id, $referrer = '' ) { * @deprecated Use Episode_Repository::get_episode_player_link() */ public function get_episode_player_link( $episode_id ) { - return $this->episode_repository->get_episode_player_link( $episode_id ); + return $this->episode_repository->get_passthrough_url( $episode_id ); } /** diff --git a/php/classes/controllers/class-feed-controller.php b/php/classes/controllers/class-feed-controller.php index 6ef604ee..68092d03 100644 --- a/php/classes/controllers/class-feed-controller.php +++ b/php/classes/controllers/class-feed-controller.php @@ -265,7 +265,7 @@ public function get_podcast_feed( $series_id = null ) { * * @return string */ - public function fetch_feed_item( $qry, $args ) { + public function fetch_feed_item( $qry, $args, $series_id = 0 ) { $author = isset( $args['author'] ) ? $args['author'] : ''; $is_excerpt_mode = isset( $args['is_excerpt_mode'] ) ? $args['is_excerpt_mode'] : ''; @@ -282,7 +282,7 @@ public function fetch_feed_item( $qry, $args ) { // Audio file $audio_file = $ss_podcasting->get_enclosure( $post_id ); - if ( get_option( 'permalink_structure' ) ) { + if ( ssp_series_passthrough_required( $series_id ) && get_option( 'permalink_structure' ) ) { $enclosure = $ss_podcasting->get_episode_download_link( $post_id ); } else { $enclosure = $audio_file; diff --git a/php/classes/repositories/class-episode-repository.php b/php/classes/repositories/class-episode-repository.php index 9848d50e..22b52ca4 100644 --- a/php/classes/repositories/class-episode-repository.php +++ b/php/classes/repositories/class-episode-repository.php @@ -605,7 +605,10 @@ public function get_player_data( $id, $current_post = null, $skip_empty_audio = $current_post = $current_post ?: $episode; $episode_duration = get_post_meta( $id, 'duration', true ); $current_url = get_post_permalink( $current_post->ID ); - $audio_file = $this->get_episode_player_link( $id ); + + if ( ssp_episode_passthrough_required( $id ) ) { + $audio_file = $this->get_passthrough_url( $id ); + } $album_art = $this->get_album_art( $id, 'thumbnail' ); $podcast_title = $this->get_podcast_title( $id ); $feed_url = $this->get_feed_url( $id ); @@ -657,7 +660,7 @@ protected function format_post_date( $post_date, $format = 'M j, Y' ) { * * @return string */ - public function get_episode_player_link( $episode_id ) { + public function get_passthrough_url( $episode_id ) { $file = $this->get_episode_download_link( $episode_id ); // Switch to podcast player URL @@ -686,17 +689,19 @@ public function get_episode_download_link( $episode_id, $referrer = '' ) { // Get download link based on permalink structure if ( get_option( 'permalink_structure' ) ) { $episode = get_post( $episode_id ); - // Get file extension - default to MP3 to prevent empty extension strings - $ext = pathinfo( $file, PATHINFO_EXTENSION ); - if ( ! $ext ) { - $ext = 'mp3'; + // Get file extension - default to MP3 to prevent empty extension strings. + $link = $this->home_url . 'podcast-download/' . $episode_id . '/' . $episode->post_name; + + // Avoid extensions if possible because the new NGINX version can't handle it properly. + if ( ssp_episode_passthrough_required( $episode_id ) ) { + $ext = pathinfo( $file, PATHINFO_EXTENSION ); + $link .= $ext ? '.' . $ext : '.mp3'; } - $link = $this->home_url . 'podcast-download/' . $episode_id . '/' . $episode->post_name . '.' . $ext; } else { $link = add_query_arg( array( 'podcast_episode' => $episode_id ), $this->home_url ); } - // Allow for dyamic referrer + // Allow for dynamic referrer $referrer = apply_filters( 'ssp_download_referrer', $referrer, $episode_id ); // Add referrer flag if supplied diff --git a/php/classes/rest/class-rest-api-controller.php b/php/classes/rest/class-rest-api-controller.php index 20464f06..11ec220a 100644 --- a/php/classes/rest/class-rest-api-controller.php +++ b/php/classes/rest/class-rest-api-controller.php @@ -272,7 +272,7 @@ public function update_rest_podcast() { */ public function get_episode_audio_player() { $podcast_id = ( isset( $_GET['ssp_podcast_id'] ) ? filter_var( $_GET['ssp_podcast_id'], FILTER_DEFAULT ) : '' ); - $file = $this->episode_repository->get_episode_player_link( $podcast_id ); + $file = $this->episode_repository->get_passthrough_url( $podcast_id ); $params = array( 'src' => $file, 'preload' => 'none' ); return array( @@ -481,7 +481,7 @@ public function get_rest_audio_download_link( $object, $field_name, $request ) { */ public function get_rest_audio_player_link( $object, $field_name, $request ) { if ( ! empty( $object['meta']['audio_file'] ) ) { - return $this->episode_repository->get_episode_player_link( $object['id'] ); + return $this->episode_repository->get_passthrough_url( $object['id'] ); } return ''; @@ -506,7 +506,7 @@ public function get_rest_audio_player( $object, $field_name, $request ) { if ( 'standard' !== $player_style ) { return; } - $file = $this->episode_repository->get_episode_player_link( $object['id'] ); + $file = $this->episode_repository->get_passthrough_url( $object['id'] ); $params = array( 'src' => $file, 'preload' => 'none' ); return wp_audio_shortcode( $params ); } diff --git a/php/includes/ssp-functions.php b/php/includes/ssp-functions.php index 62636cfa..a326cf5b 100644 --- a/php/includes/ssp-functions.php +++ b/php/includes/ssp-functions.php @@ -1880,3 +1880,48 @@ function ssp_episode_sync_status( $episode_id ) { return $episode_repository->get_episode_sync_status( $episode_id ); } } + +if ( ! function_exists( 'ssp_episode_passthrough_required' ) ) { + /** + * Checks if episode requires the passthrough file URL ( /podcast-download/22/my-episode.mp3 ). + * + * @since 3.7.0 + * + * @param int $episode_id + * + * @return bool + */ + function ssp_episode_passthrough_required( $episode_id ) { + $series = wp_get_post_terms( $episode_id, ssp_series_taxonomy() ); + + $needs_passthrough = false; + + // Mark passthrough as needed if Ads enabled in any of the episode series. + if ( is_array( $series ) ) { + foreach ( $series as $term ) { + $needs_passthrough = $needs_passthrough || ssp_series_passthrough_required( $term->term_id ); + } + } + + return apply_filters( 'ssp_episode_passthrough_required', $needs_passthrough, $episode_id ); + } +} + +if ( ! function_exists( 'ssp_series_passthrough_required' ) ) { + /** + * Checks if series requires the passthrough file URL ( /podcast-download/22/my-episode.mp3 ) + * + * @since 3.7.0 + * + * @param int $series_id + * + * @return bool + */ + function ssp_series_passthrough_required( $series_id ) { + + $needs_passthrough = 'on' === ssp_get_option( 'enable_ads', 'off', $series_id ); + + + return apply_filters( 'ssp_series_passthrough_required', $needs_passthrough, $series_id ); + } +} diff --git a/templates/feed-podcast.php b/templates/feed-podcast.php index 095436ef..0706e1c4 100644 --- a/templates/feed-podcast.php +++ b/templates/feed-podcast.php @@ -197,7 +197,7 @@ while ( $qry->have_posts() ) { $turbo_post_count = isset( $turbo_post_count ) ? $turbo_post_count + 1 : null; $args = compact( 'author', 'is_excerpt_mode', 'pub_date_type', 'turbo_post_count', 'media_prefix' ); - echo $feed_controller->fetch_feed_item( $qry, $args ); + echo $feed_controller->fetch_feed_item( $qry, $args, $series_id ); } } ?>
diff --git a/templates/feed-stylesheet.xsl b/templates/feed-stylesheet.xsl index 9f4d094f..5c973edb 100644 --- a/templates/feed-stylesheet.xsl +++ b/templates/feed-stylesheet.xsl @@ -140,12 +140,6 @@

- - - ?ref=download - - Download episode - | ?ref=new_window From 8c118ddd53ce896288a288fd0ded5325ae2ef6d2 Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Thu, 7 Nov 2024 16:19:50 +0000 Subject: [PATCH 101/126] Added a hook for SSTranscripts sidebar meta field --- src/components/EpisodeMetaSidebar.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/EpisodeMetaSidebar.js b/src/components/EpisodeMetaSidebar.js index d4b5c5f3..af558d22 100644 --- a/src/components/EpisodeMetaSidebar.js +++ b/src/components/EpisodeMetaSidebar.js @@ -80,6 +80,9 @@ const EpisodeMetaSidebar = () => { const [isMetaSectionOpen, setMetaSectionOpen] = useState(true); const [isItunesSectionOpen, setItunesSectionOpen] = useState(true); + // Render additional content using the filter + const additionalContent = wp.hooks.applyFilters('ssp.episodeMetaSidebarEnd', null); + // Use `useDispatch` to update post meta const { editPost } = useDispatch('core/editor'); @@ -429,6 +432,9 @@ const EpisodeMetaSidebar = () => { { isSyncSectionOpen && } ) } + + { additionalContent } + ); }; From ffc7ff1c4a2c225097ac1b74323260cf5d783eb4 Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Thu, 7 Nov 2024 16:21:26 +0000 Subject: [PATCH 102/126] Version 3.7.0-alpha --- seriously-simple-podcasting.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/seriously-simple-podcasting.php b/seriously-simple-podcasting.php index d804fb9a..afab74fc 100644 --- a/seriously-simple-podcasting.php +++ b/seriously-simple-podcasting.php @@ -1,7 +1,7 @@ Date: Thu, 7 Nov 2024 17:48:13 +0000 Subject: [PATCH 103/126] Acceptance tests fixed --- tests/acceptance/3_main-feed.feature | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/acceptance/3_main-feed.feature b/tests/acceptance/3_main-feed.feature index d8a8c124..e248950b 100644 --- a/tests/acceptance/3_main-feed.feature +++ b/tests/acceptance/3_main-feed.feature @@ -63,7 +63,7 @@ Feature: Login And I can see in source "" And I can see in source "" And I can see in source "" - And I can see in source "" And I can see in source "type=\"audio/mpeg\">" And I can see in source "" And I can see in source "false" From ce701ba17d4de968d843cb0949f3fa3ea81a9972 Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Fri, 15 Nov 2024 08:52:41 +0000 Subject: [PATCH 104/126] Passthrough URL: fixed compact player (746) --- .../controllers/class-episode-controller.php | 12 ---------- .../controllers/class-players-controller.php | 22 +++++++------------ .../repositories/class-episode-repository.php | 2 +- 3 files changed, 9 insertions(+), 27 deletions(-) diff --git a/php/classes/controllers/class-episode-controller.php b/php/classes/controllers/class-episode-controller.php index 050d5545..8c7396c1 100644 --- a/php/classes/controllers/class-episode-controller.php +++ b/php/classes/controllers/class-episode-controller.php @@ -67,18 +67,6 @@ public function get_episode_download_link( $episode_id, $referrer = '' ) { return $this->episode_repository->get_episode_download_link( $episode_id, $referrer ); } - /** - * Get player link for episode. - * - * @param int $episode_id - * - * @return string - * @deprecated Use Episode_Repository::get_episode_player_link() - */ - public function get_episode_player_link( $episode_id ) { - return $this->episode_repository->get_passthrough_url( $episode_id ); - } - /** * Get Album Art for Player * diff --git a/php/classes/controllers/class-players-controller.php b/php/classes/controllers/class-players-controller.php index 6373f98b..67ee031e 100644 --- a/php/classes/controllers/class-players-controller.php +++ b/php/classes/controllers/class-players-controller.php @@ -77,14 +77,6 @@ public function register_player_assets() { } - /** - * @return Episode_Controller - */ - protected function episode_controller(){ - return ssp_episode_controller(); - } - - /** * Todo: move it to Episode_Repository * */ @@ -98,9 +90,7 @@ public function get_ajax_playlist_items() { wp_send_json_error(); } - $episode_repository = ssp_episode_controller()->episode_repository; - - $episodes = $episode_repository->get_episodes( array_merge( $atts, compact( 'page' ) ) ); + $episodes = $this->episode_repository->get_episodes( array_merge( $atts, compact( 'page' ) ) ); $items = array(); $allowed_keys = array( @@ -472,7 +462,11 @@ public function media_player( $id ) { * If the id passed is empty or 0, get_post will return the current post */ $episode = get_post( $id ); - $src_file = $this->episode_controller()->get_episode_player_link( $id ); + + $src_file = ssp_episode_passthrough_required( $id ) ? + $this->episode_repository->get_passthrough_url( $id ) : + $this->episode_repository->get_enclosure( $id ); + $params = array( 'src' => $src_file, 'preload' => 'none', @@ -523,7 +517,7 @@ public function render_media_player( $id, $context = 'block' ) { * @deprecated Use Episode_Repository::get_playlist_episodes() */ public function get_playlist_episodes( $atts ) { - return $this->episode_controller()->episode_repository->get_episodes( $atts ); + return $this->episode_repository->get_episodes( $atts ); } /** @@ -533,7 +527,7 @@ public function get_playlist_episodes( $atts ) { * @deprecated Use Episode_Repository::get_latest_episode_id() */ public function get_latest_episode_id() { - return $this->episode_controller()->episode_repository->get_latest_episode_id(); + return $this->episode_repository->get_latest_episode_id(); } /** diff --git a/php/classes/repositories/class-episode-repository.php b/php/classes/repositories/class-episode-repository.php index 22b52ca4..db4ab8e9 100644 --- a/php/classes/repositories/class-episode-repository.php +++ b/php/classes/repositories/class-episode-repository.php @@ -589,7 +589,7 @@ public function get_player_data( $id, $current_post = null, $skip_empty_audio = $id = $this->get_latest_episode_id(); } - $audio_file = get_post_meta( $id, 'audio_file', true ); + $audio_file = $this->get_enclosure( $id ); if ( $skip_empty_audio && empty( $audio_file ) ) { throw new \Exception(); From 1b817eff51da96e241f72394e66d3072c9d7b9e8 Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Fri, 15 Nov 2024 09:24:51 +0000 Subject: [PATCH 105/126] Passthrough URL: support SSStats (746) --- php/includes/ssp-functions.php | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/php/includes/ssp-functions.php b/php/includes/ssp-functions.php index a326cf5b..a7bd3291 100644 --- a/php/includes/ssp-functions.php +++ b/php/includes/ssp-functions.php @@ -1892,18 +1892,23 @@ function ssp_episode_sync_status( $episode_id ) { * @return bool */ function ssp_episode_passthrough_required( $episode_id ) { + // Require passthrough if the SSStats plugin is enabled. + if ( class_exists( 'SeriouslySimpleStats\Classes\Stats' ) ) { + return apply_filters( 'ssp_episode_passthrough_required', true, $episode_id ); + } + + // Require passthrough if ads are enabled for any episode series. $series = wp_get_post_terms( $episode_id, ssp_series_taxonomy() ); - $needs_passthrough = false; + $required = false; - // Mark passthrough as needed if Ads enabled in any of the episode series. if ( is_array( $series ) ) { foreach ( $series as $term ) { - $needs_passthrough = $needs_passthrough || ssp_series_passthrough_required( $term->term_id ); + $required = $required || ssp_series_passthrough_required( $term->term_id ); } } - return apply_filters( 'ssp_episode_passthrough_required', $needs_passthrough, $episode_id ); + return apply_filters( 'ssp_episode_passthrough_required', $required, $episode_id ); } } @@ -1918,10 +1923,14 @@ function ssp_episode_passthrough_required( $episode_id ) { * @return bool */ function ssp_series_passthrough_required( $series_id ) { + // Require passthrough if the SSStats plugin is enabled. + if ( class_exists( 'SeriouslySimpleStats\Classes\Stats' ) ) { + return apply_filters( 'ssp_episode_passthrough_required', true, $series_id ); + } - $needs_passthrough = 'on' === ssp_get_option( 'enable_ads', 'off', $series_id ); - + // Require passthrough if ads are enabled for this series. + $required = 'on' === ssp_get_option( 'enable_ads', 'off', $series_id ); - return apply_filters( 'ssp_series_passthrough_required', $needs_passthrough, $series_id ); + return apply_filters( 'ssp_series_passthrough_required', $required, $series_id ); } } From 82f74790650a54e430aed68e862dd305b9a96e31 Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Fri, 15 Nov 2024 09:44:30 +0000 Subject: [PATCH 106/126] Version 3.7.0-alpha.2 --- seriously-simple-podcasting.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/seriously-simple-podcasting.php b/seriously-simple-podcasting.php index afab74fc..f161d0eb 100644 --- a/seriously-simple-podcasting.php +++ b/seriously-simple-podcasting.php @@ -1,7 +1,7 @@ Date: Tue, 19 Nov 2024 15:16:38 +0000 Subject: [PATCH 107/126] Fix fatal error in meta sidebar for certain custom post types (750) --- .../class-podcast-post-types-controller.php | 29 ++++++++++++++++++- src/components/EpisodeMetaSidebar.js | 18 +++++++++++- src/components/SSPSidebarPanel.js | 5 ++++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/php/classes/controllers/class-podcast-post-types-controller.php b/php/classes/controllers/class-podcast-post-types-controller.php index ee7d5ba0..27bdd7e5 100644 --- a/php/classes/controllers/class-podcast-post-types-controller.php +++ b/php/classes/controllers/class-podcast-post-types-controller.php @@ -95,7 +95,10 @@ protected function register_hooks_and_filters() { // Register podcast post type, taxonomies and meta fields. add_action( 'init', array( $this, 'register_post_type' ), 11 ); - // prevent copying some meta fields + // Update podcast post type arguments to include custom-fields support if not already enabled. + add_filter( 'register_post_type_args', array( $this, 'update_podcast_post_type_args' ), 20, 2 ); + + // Prevent copying some meta fields add_action( 'admin_init', array( $this, 'prevent_copy_meta' ) ); // Episode meta box. @@ -134,6 +137,30 @@ protected function register_hooks_and_filters() { add_filter( 'pll_copy_post_metas', array( $this, 'handle_polylang_translations' ), 10, 3 ); } + /** + * Updates podcast post type arguments to include custom-fields support if not already enabled. + * Custom fields are necessary for displaying both standard and Gutenberg meta fields. + * + * @since 3.7.0 + * + * @param array $args + * @param string $post_type + * + * @return array + */ + public function update_podcast_post_type_args( $args, $post_type ) { + $podcast_post_types = get_option( 'ss_podcasting_use_post_types', array() ); + if ( in_array( $post_type, $podcast_post_types ) && empty( $args['supports']['custom-fields'] ) ) { + if ( empty( $args['supports'] ) ) { + // Add default support values if none are defined. + $args['supports'] = array( 'title', 'editor', 'autosave' ); + } + $args['supports'][] = 'custom-fields'; + } + + return $args; + } + /** * Handle Polylang translations - prevent copying episode meta fields. * diff --git a/src/components/EpisodeMetaSidebar.js b/src/components/EpisodeMetaSidebar.js index af558d22..459ea4d4 100644 --- a/src/components/EpisodeMetaSidebar.js +++ b/src/components/EpisodeMetaSidebar.js @@ -34,6 +34,22 @@ const EpisodeMetaSidebar = () => { const postMeta = editor.getEditedPostAttribute('meta'); + if ( ! postMeta ) { + const { createNotice } = useDispatch('core/notices'); + const message = __('We noticed that your custom post type does not support custom fields. Please ensure that custom fields are supported. [URL]Learn more[/URL]', 'seriously-simple-podcasting'); + + createNotice( + 'warning', + message.replace('[URL]', '').replace('[/URL]', ''), + { + isDismissible: true, + id: 'ssp-gutenberg-meta', + __unstableHTML: true, + } + ); + return; + } + // Get current meta values const episodeTypeMeta = postMeta.episode_type || 'audio'; const audioFileMeta = postMeta.audio_file || ''; @@ -166,7 +182,7 @@ const EpisodeMetaSidebar = () => { return ( } > diff --git a/src/components/SSPSidebarPanel.js b/src/components/SSPSidebarPanel.js index 8c41afcb..a3daa396 100644 --- a/src/components/SSPSidebarPanel.js +++ b/src/components/SSPSidebarPanel.js @@ -15,6 +15,11 @@ const SSPSidebarPanel = () => { const [isSSPSectionOpen, setSSPSectionOpen] = useState(true); const postMeta = editor.getEditedPostAttribute('meta'); + + if ( ! postMeta ) { + return; + } + const fileIsUploaded = !! postMeta.audio_file; const { openGeneralSidebar } = useDispatch('core/edit-post'); From 634bb67b133b38ffc9e29b602a7dc61a5e3a6740 Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Tue, 19 Nov 2024 17:19:08 +0000 Subject: [PATCH 108/126] Set Podcast to Private to No if integration detected (749) --- .../controllers/class-app-controller.php | 13 +- .../class-integrations-controller.php | 115 ++++++++++++++++++ .../class-podcast-post-types-controller.php | 20 +-- .../lifterlms/class-lifterlms-integrator.php | 14 ++- .../class-memberpress-integrator.php | 13 +- .../class-paid-memberships-pro-integrator.php | 13 +- .../class-wc-memberships-integrator.php | 14 ++- php/config/settings/feed.php | 10 +- 8 files changed, 179 insertions(+), 33 deletions(-) create mode 100644 php/classes/controllers/class-integrations-controller.php diff --git a/php/classes/controllers/class-app-controller.php b/php/classes/controllers/class-app-controller.php index 4c84d2d3..61db4af3 100644 --- a/php/classes/controllers/class-app-controller.php +++ b/php/classes/controllers/class-app-controller.php @@ -348,17 +348,8 @@ protected function init_integrations() { // Yoast Schema integration. new Schema_Controller( $this->episode_repository ); - // Paid Memberships Pro integration - Paid_Memberships_Pro_Integrator::instance()->init( $this->feed_handler, $this->castos_handler, $this->logger, $this->admin_notices_handler ); - - // Lifter LMS integration - LifterLMS_Integrator::instance()->init( $this->feed_handler, $this->castos_handler, $this->logger ); - - // Paid Memberships Pro integration - Memberpress_Integrator::instance()->init( $this->feed_handler, $this->castos_handler, $this->logger, $this->admin_notices_handler ); - - // Woocommerce Memberships integration - WC_Memberships_Integrator::instance()->init( $this->feed_handler, $this->castos_handler, $this->logger, $this->admin_notices_handler ); + // Membership integrations. + new Integrations_Controller( $this->feed_handler, $this->castos_handler, $this->logger, $this->admin_notices_handler ); } /** diff --git a/php/classes/controllers/class-integrations-controller.php b/php/classes/controllers/class-integrations-controller.php new file mode 100644 index 00000000..ed5e3f13 --- /dev/null +++ b/php/classes/controllers/class-integrations-controller.php @@ -0,0 +1,115 @@ +feed_handler = $feed_handler; + $this->castos_handler = $castos_handler; + $this->logger = $logger; + $this->notices_handler = $notices_handler; + + $this->init_integrations(); + + // Disable private podcast option if integration is enabled. + add_filter( 'ssp_get_setting', array( $this, 'maybe_disable_private_option' ), 10, 2 ); + } + + public function init_integrations() { + // Paid Memberships Pro integration + Paid_Memberships_Pro_Integrator::instance()->init( $this->feed_handler, $this->castos_handler, $this->logger, $this->notices_handler ); + + // Lifter LMS integration + LifterLMS_Integrator::instance()->init( $this->feed_handler, $this->castos_handler, $this->logger ); + + // Paid Memberships Pro integration + Memberpress_Integrator::instance()->init( $this->feed_handler, $this->castos_handler, $this->logger, $this->notices_handler ); + + // Woocommerce Memberships integration + WC_Memberships_Integrator::instance()->init( $this->feed_handler, $this->castos_handler, $this->logger, $this->notices_handler ); + } + + /** + * Disables the private option if integration is enabled. + * + * @param mixed $value + * @param array $data + * + * @return mixed + */ + public function maybe_disable_private_option( $value, $data ) { + $option = Settings_Controller::SETTINGS_BASE . 'is_podcast_private'; + + if ( false === strpos( $data['option'], $option ) ) { + return $value; + } + + return $this->is_any_integration_enabled() ? 'no' : $value; + } + + /** + * Checks if any of the available integrations is enabled. + * + * @return bool + */ + public function is_any_integration_enabled() { + return Paid_Memberships_Pro_Integrator::integration_enabled() || + LifterLMS_Integrator::integration_enabled() || + Memberpress_Integrator::integration_enabled() || + WC_Memberships_Integrator::integration_enabled(); + } +} diff --git a/php/classes/controllers/class-podcast-post-types-controller.php b/php/classes/controllers/class-podcast-post-types-controller.php index 27bdd7e5..0422fe3c 100644 --- a/php/classes/controllers/class-podcast-post-types-controller.php +++ b/php/classes/controllers/class-podcast-post-types-controller.php @@ -148,15 +148,21 @@ protected function register_hooks_and_filters() { * * @return array */ - public function update_podcast_post_type_args( $args, $post_type ) { + public function update_podcast_post_type_args( $args, $post_type ) { $podcast_post_types = get_option( 'ss_podcasting_use_post_types', array() ); - if ( in_array( $post_type, $podcast_post_types ) && empty( $args['supports']['custom-fields'] ) ) { - if ( empty( $args['supports'] ) ) { - // Add default support values if none are defined. - $args['supports'] = array( 'title', 'editor', 'autosave' ); - } - $args['supports'][] = 'custom-fields'; + + if ( ! is_array( $podcast_post_types ) || + ! is_array( $args ) || + ! in_array( $post_type, $podcast_post_types ) || + ! empty( $args['supports']['custom-fields'] ) ) { + return $args; + } + + if ( empty( $args['supports'] ) ) { + // Add default support values if none are defined. + $args['supports'] = array( 'title', 'editor', 'autosave' ); } + $args['supports'][] = 'custom-fields'; return $args; } diff --git a/php/classes/integrations/lifterlms/class-lifterlms-integrator.php b/php/classes/integrations/lifterlms/class-lifterlms-integrator.php index a7a262aa..9417ed55 100644 --- a/php/classes/integrations/lifterlms/class-lifterlms-integrator.php +++ b/php/classes/integrations/lifterlms/class-lifterlms-integrator.php @@ -71,8 +71,7 @@ public function init( $feed_handler, $castos_handler, $logger ) { if ( is_admin() && ! ssp_is_ajax() ) { $this->init_integration_settings(); } else { - $integration_enabled = ssp_get_option( 'enable_lifterlms_integration' ); - if ( $integration_enabled ) { + if ( self::integration_enabled() ) { $this->protect_private_series(); } } @@ -80,6 +79,15 @@ public function init( $feed_handler, $castos_handler, $logger ) { $this->init_subscribers_sync(); } + /** + * Checks if integration is enabled. + * + * @return bool + */ + public static function integration_enabled() { + return 'on' === ssp_get_option( 'enable_lifterlms_integration' ); + } + /** * Inits subscribers sync. @@ -536,7 +544,7 @@ protected function get_integration_settings() { ); - if ( ! ssp_get_option( 'enable_lifterlms_integration' ) ) { + if ( ! self::integration_enabled() ) { $settings['description'] = ''; return $settings; diff --git a/php/classes/integrations/memberpress/class-memberpress-integrator.php b/php/classes/integrations/memberpress/class-memberpress-integrator.php index d9abcaea..7d12e142 100644 --- a/php/classes/integrations/memberpress/class-memberpress-integrator.php +++ b/php/classes/integrations/memberpress/class-memberpress-integrator.php @@ -66,8 +66,7 @@ public function init( $feed_handler, $castos_handler, $logger, $notices_handler if ( is_admin() && ! ssp_is_ajax() ) { $this->init_integration_settings(); } else { - $integration_enabled = ssp_get_option( 'enable_memberpress_integration' ); - if ( $integration_enabled ) { + if ( self::integration_enabled() ) { $this->protect_private_series(); } } @@ -75,6 +74,14 @@ public function init( $feed_handler, $castos_handler, $logger, $notices_handler $this->init_subscribers_sync(); } + /** + * Checks if integration is enabled. + * + * @return bool + */ + public static function integration_enabled(){ + return 'on' === ssp_get_option( 'enable_memberpress_integration' ); + } /** * Inits subscribers sync. @@ -645,7 +652,7 @@ protected function get_integration_settings() { * @return bool */ protected function needs_extended_integration_settings() { - if ( ! ssp_get_option( 'enable_memberpress_integration' ) ) { + if ( ! self::integration_enabled() ) { return false; } diff --git a/php/classes/integrations/paid-memberships-pro/class-paid-memberships-pro-integrator.php b/php/classes/integrations/paid-memberships-pro/class-paid-memberships-pro-integrator.php index 335f9c63..507dce76 100644 --- a/php/classes/integrations/paid-memberships-pro/class-paid-memberships-pro-integrator.php +++ b/php/classes/integrations/paid-memberships-pro/class-paid-memberships-pro-integrator.php @@ -67,8 +67,7 @@ public function init( $feed_handler, $castos_handler, $logger, $notices_handler if ( is_admin() && ! ssp_is_ajax() ) { $this->init_integration_settings(); } else { - $integration_enabled = ssp_get_option( 'enable_pmpro_integration', 'on' ); - if ( $integration_enabled ) { + if ( self::integration_enabled() ) { $this->protect_private_series(); $this->print_private_podcast_feeds(); } @@ -77,6 +76,14 @@ public function init( $feed_handler, $castos_handler, $logger, $notices_handler $this->init_subscribers_sync(); } + /** + * Checks if integration is enabled. + * + * @return bool + */ + public static function integration_enabled() { + return 'on' === ssp_get_option( 'enable_pmpro_integration', 'on' ); + } /** * Inits subscribers sync. @@ -740,7 +747,7 @@ protected function get_integration_settings() { ), ); - if ( ! ssp_get_option( 'enable_pmpro_integration', 'on' ) ) { + if ( ! self::integration_enabled() ) { $settings['description'] = ''; return $settings; diff --git a/php/classes/integrations/woocommerce/class-wc-memberships-integrator.php b/php/classes/integrations/woocommerce/class-wc-memberships-integrator.php index 77866bcd..3abd2ef1 100644 --- a/php/classes/integrations/woocommerce/class-wc-memberships-integrator.php +++ b/php/classes/integrations/woocommerce/class-wc-memberships-integrator.php @@ -69,8 +69,7 @@ public function late_init(){ if ( is_admin() && ! ssp_is_ajax() ) { $this->init_integration_settings(); } else { - $integration_enabled = ssp_get_option( 'enable_wcmps_integration' ); - if ( $integration_enabled ) { + if ( self::integration_enabled() ) { $this->protect_private_series(); } } @@ -78,6 +77,15 @@ public function late_init(){ $this->init_subscribers_sync(); } + /** + * Checks if integration is enabled. + * + * @return bool + */ + public static function integration_enabled() { + return 'on' === ssp_get_option( 'enable_wcmps_integration' ); + } + /** * Inits subscribers sync. * There are 2 cases when sync is needed: @@ -591,7 +599,7 @@ protected function get_integration_settings() { * @return bool */ protected function needs_extended_integration_settings() { - if ( ! ssp_get_option( 'enable_wcmps_integration' ) ) { + if ( ! self::integration_enabled() ) { return false; } diff --git a/php/config/settings/feed.php b/php/config/settings/feed.php index 5b30208a..55937cdf 100644 --- a/php/config/settings/feed.php +++ b/php/config/settings/feed.php @@ -10,6 +10,10 @@ * @var bool $is_default * */ +use SeriouslySimplePodcasting\Integrations\LifterLMS\LifterLMS_Integrator; +use SeriouslySimplePodcasting\Integrations\Memberpress\Memberpress_Integrator; +use SeriouslySimplePodcasting\Integrations\Paid_Memberships_Pro\Paid_Memberships_Pro_Integrator; + $feed_fields = array( array( 'id' => 'data_title', @@ -359,11 +363,11 @@ if ( ! ssp_is_connected_to_castos() ) { $private_unavailable_descr = __( 'Setting a podcast as Private is only available to Castos hosting customers.', 'seriously-simple-podcasting' ); -} elseif ( class_exists( 'PMPro_Membership_Level' ) && ssp_get_option( 'enable_pmpro_integration', 'on' ) ) { +} elseif ( class_exists( 'PMPro_Membership_Level' ) && Paid_Memberships_Pro_Integrator::integration_enabled() ) { $private_unavailable_descr = __( 'Looks like you\'re already using Paid Membership Pro to make your podcast private.', 'seriously-simple-podcasting' ); -} elseif ( class_exists( 'LifterLMS' ) && ssp_get_option( 'enable_lifterlms_integration' ) ) { +} elseif ( class_exists( 'LifterLMS' ) && LifterLMS_Integrator::integration_enabled() ) { $private_unavailable_descr = __( 'Looks like you\'re already using LifterLMS to make your podcast private.', 'seriously-simple-podcasting' ); -} elseif ( class_exists( 'MeprUser' ) && ssp_get_option( 'enable_memberpress_integration' ) ) { +} elseif ( class_exists( 'MeprUser' ) && Memberpress_Integrator::integration_enabled() ) { $private_unavailable_descr = __( 'Looks like you\'re already using MemberPress to make your podcast private.', 'seriously-simple-podcasting' ); } From 400175a2b31022b88a6096a91bcf280885bf0bce Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Tue, 19 Nov 2024 17:41:33 +0000 Subject: [PATCH 109/126] Fix color settings translation notice (751) --- php/classes/controllers/class-settings-controller.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/php/classes/controllers/class-settings-controller.php b/php/classes/controllers/class-settings-controller.php index 9f1ae7a9..29797cd6 100644 --- a/php/classes/controllers/class-settings-controller.php +++ b/php/classes/controllers/class-settings-controller.php @@ -142,7 +142,9 @@ public function register_hooks_and_filters() { // Add podcasts sync status to the sync settings add_filter( 'ssp_field_data', array( $this, 'provide_podcasts_sync_status' ), 10, 2 ); - $this->generate_dynamic_color_scheme(); + add_action('admin_init', function(){ + $this->generate_dynamic_color_scheme(); + }); add_shortcode( 'castos_email', array( $this, 'castos_email' ) ); } From b22bb3996d53bcc9ea25f74c3b2ebbe6a398bedc Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Tue, 19 Nov 2024 17:42:25 +0000 Subject: [PATCH 110/126] Version 3.7.0-alpha.3 --- seriously-simple-podcasting.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/seriously-simple-podcasting.php b/seriously-simple-podcasting.php index f161d0eb..e3640f78 100644 --- a/seriously-simple-podcasting.php +++ b/seriously-simple-podcasting.php @@ -1,7 +1,7 @@ Date: Thu, 21 Nov 2024 12:06:01 +0000 Subject: [PATCH 111/126] Improve handling private feed settings with integrations (749) --- .../lifterlms/class-lifterlms-integrator.php | 2 +- .../memberpress/class-memberpress-integrator.php | 2 +- .../class-paid-memberships-pro-integrator.php | 2 +- .../woocommerce/class-wc-memberships-integrator.php | 2 +- php/config/settings/feed.php | 10 +++++++--- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/php/classes/integrations/lifterlms/class-lifterlms-integrator.php b/php/classes/integrations/lifterlms/class-lifterlms-integrator.php index 9417ed55..379e6686 100644 --- a/php/classes/integrations/lifterlms/class-lifterlms-integrator.php +++ b/php/classes/integrations/lifterlms/class-lifterlms-integrator.php @@ -85,7 +85,7 @@ public function init( $feed_handler, $castos_handler, $logger ) { * @return bool */ public static function integration_enabled() { - return 'on' === ssp_get_option( 'enable_lifterlms_integration' ); + return class_exists( 'LifterLMS' ) && 'on' === ssp_get_option( 'enable_lifterlms_integration' ); } diff --git a/php/classes/integrations/memberpress/class-memberpress-integrator.php b/php/classes/integrations/memberpress/class-memberpress-integrator.php index 7d12e142..eecb726b 100644 --- a/php/classes/integrations/memberpress/class-memberpress-integrator.php +++ b/php/classes/integrations/memberpress/class-memberpress-integrator.php @@ -80,7 +80,7 @@ public function init( $feed_handler, $castos_handler, $logger, $notices_handler * @return bool */ public static function integration_enabled(){ - return 'on' === ssp_get_option( 'enable_memberpress_integration' ); + return class_exists( 'MeprUser' ) && 'on' === ssp_get_option( 'enable_memberpress_integration' ); } /** diff --git a/php/classes/integrations/paid-memberships-pro/class-paid-memberships-pro-integrator.php b/php/classes/integrations/paid-memberships-pro/class-paid-memberships-pro-integrator.php index 507dce76..28b33629 100644 --- a/php/classes/integrations/paid-memberships-pro/class-paid-memberships-pro-integrator.php +++ b/php/classes/integrations/paid-memberships-pro/class-paid-memberships-pro-integrator.php @@ -82,7 +82,7 @@ public function init( $feed_handler, $castos_handler, $logger, $notices_handler * @return bool */ public static function integration_enabled() { - return 'on' === ssp_get_option( 'enable_pmpro_integration', 'on' ); + return class_exists( 'PMPro_Membership_Level' ) && 'on' === ssp_get_option( 'enable_pmpro_integration', 'on' ); } /** diff --git a/php/classes/integrations/woocommerce/class-wc-memberships-integrator.php b/php/classes/integrations/woocommerce/class-wc-memberships-integrator.php index 3abd2ef1..c478883a 100644 --- a/php/classes/integrations/woocommerce/class-wc-memberships-integrator.php +++ b/php/classes/integrations/woocommerce/class-wc-memberships-integrator.php @@ -83,7 +83,7 @@ public function late_init(){ * @return bool */ public static function integration_enabled() { - return 'on' === ssp_get_option( 'enable_wcmps_integration' ); + return class_exists( 'WC_Memberships_Loader' ) && 'on' === ssp_get_option( 'enable_wcmps_integration' ); } /** diff --git a/php/config/settings/feed.php b/php/config/settings/feed.php index 55937cdf..b48dca8f 100644 --- a/php/config/settings/feed.php +++ b/php/config/settings/feed.php @@ -13,6 +13,7 @@ use SeriouslySimplePodcasting\Integrations\LifterLMS\LifterLMS_Integrator; use SeriouslySimplePodcasting\Integrations\Memberpress\Memberpress_Integrator; use SeriouslySimplePodcasting\Integrations\Paid_Memberships_Pro\Paid_Memberships_Pro_Integrator; +use SeriouslySimplePodcasting\Integrations\Woocommerce\WC_Memberships_Integrator; $feed_fields = array( array( @@ -363,14 +364,17 @@ if ( ! ssp_is_connected_to_castos() ) { $private_unavailable_descr = __( 'Setting a podcast as Private is only available to Castos hosting customers.', 'seriously-simple-podcasting' ); -} elseif ( class_exists( 'PMPro_Membership_Level' ) && Paid_Memberships_Pro_Integrator::integration_enabled() ) { +} elseif ( Paid_Memberships_Pro_Integrator::integration_enabled() ) { $private_unavailable_descr = __( 'Looks like you\'re already using Paid Membership Pro to make your podcast private.', 'seriously-simple-podcasting' ); -} elseif ( class_exists( 'LifterLMS' ) && LifterLMS_Integrator::integration_enabled() ) { +} elseif ( LifterLMS_Integrator::integration_enabled() ) { $private_unavailable_descr = __( 'Looks like you\'re already using LifterLMS to make your podcast private.', 'seriously-simple-podcasting' ); -} elseif ( class_exists( 'MeprUser' ) && Memberpress_Integrator::integration_enabled() ) { +} elseif ( Memberpress_Integrator::integration_enabled() ) { $private_unavailable_descr = __( 'Looks like you\'re already using MemberPress to make your podcast private.', 'seriously-simple-podcasting' ); +} elseif ( WC_Memberships_Integrator::integration_enabled() ) { + $private_unavailable_descr = __( 'Looks like you\'re already using WooCommerce Memberships to make your podcast private.', 'seriously-simple-podcasting' ); } + if ( ! empty( $private_unavailable_descr ) ) { $private_podcast['description'] = $private_unavailable_descr; $private_podcast['type'] = ''; From bf279c0c3ae4a01bd793107448d32d6f8a82bacf Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Thu, 21 Nov 2024 12:06:40 +0000 Subject: [PATCH 112/126] Version 3.7.0-alpha.4 --- seriously-simple-podcasting.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/seriously-simple-podcasting.php b/seriously-simple-podcasting.php index e3640f78..0d9bf0a3 100644 --- a/seriously-simple-podcasting.php +++ b/seriously-simple-podcasting.php @@ -1,7 +1,7 @@ Date: Mon, 25 Nov 2024 11:22:47 +0000 Subject: [PATCH 113/126] Prepare SSTranscripts sidebar field sync --- templates/metafields/file.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/metafields/file.php b/templates/metafields/file.php index 17496517..fb15ee1e 100644 --- a/templates/metafields/file.php +++ b/templates/metafields/file.php @@ -9,7 +9,7 @@

Date: Wed, 4 Dec 2024 04:05:56 -0800 Subject: [PATCH 115/126] Improved SSP filters --- php/classes/controllers/class-feed-controller.php | 2 +- php/classes/handlers/class-feed-handler.php | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/php/classes/controllers/class-feed-controller.php b/php/classes/controllers/class-feed-controller.php index 68092d03..77b6130b 100644 --- a/php/classes/controllers/class-feed-controller.php +++ b/php/classes/controllers/class-feed-controller.php @@ -241,7 +241,7 @@ public function get_podcast_feed( $series_id = null ) { $feed_controller = $this; - $feed_data = apply_filters( 'ssp_feed_data', get_defined_vars() ); + $feed_data = apply_filters( 'ssp_feed_data', get_defined_vars(), $series_id ); $feed = $this->renderer->fetch( $path, $feed_data ); diff --git a/php/classes/handlers/class-feed-handler.php b/php/classes/handlers/class-feed-handler.php index 6ea73763..a7d63a6e 100644 --- a/php/classes/handlers/class-feed-handler.php +++ b/php/classes/handlers/class-feed-handler.php @@ -166,7 +166,7 @@ public function maybe_protect_unauthorized_access( $series_id ) { $message = get_option( 'ss_podcasting_protection_no_access_message', $default_message ); // Allow message to be filtered dynamically. - $message = apply_filters( 'ssp_feed_no_access_message', $message ); + $message = apply_filters( 'ssp_feed_no_access_message', $message, $series_id ); header( 'WWW-Authenticate: Basic realm="Podcast Feed"' ); @@ -186,7 +186,7 @@ public function maybe_protect_private_feed( $series_id ) { $message = __( 'This content is Private. To access this podcast, contact the site owner.', 'seriously-simple-podcasting' ); - $message = apply_filters( 'ssp_private_feed_message', $message ); + $message = apply_filters( 'ssp_private_feed_message', $message, $series_id ); $this->render_feed_no_access( $series_id, $message ); } @@ -201,8 +201,8 @@ public function render_feed_no_access( $series_id, $description ) { $stylesheet_url = $this->get_stylesheet_url(); $title = esc_html( $this->get_podcast_title( $series_id ) ); - $args = apply_filters( 'ssp_feed_no_access_args', compact( 'stylesheet_url', 'title', 'description' ) ); - $path = apply_filters( 'ssp_feed_no_access_path', 'feed/feed-no-access' ); + $args = apply_filters( 'ssp_feed_no_access_args', compact( 'stylesheet_url', 'title', 'description' ), $series_id ); + $path = apply_filters( 'ssp_feed_no_access_path', 'feed/feed-no-access', $series_id ); $this->renderer->render( $path, $args ); exit; @@ -597,7 +597,7 @@ public function get_pub_date_type( $series_id ) { * @return WP_Query */ public function get_feed_query( $podcast_series, $exclude_series, $pub_date_type ) { - $num_posts = intval( apply_filters( 'ssp_feed_number_of_posts', get_option( 'posts_per_rss', 10 ) ) ); + $num_posts = intval( apply_filters( 'ssp_feed_number_of_posts', get_option( 'posts_per_rss', 10 ), $podcast_series ) ); $args = ssp_episodes( $num_posts, $podcast_series, true, 'feed', $exclude_series ); @@ -624,7 +624,7 @@ public function get_feed_link( $podcast_id ) { $link = trailingslashit( home_url() ); } - return apply_filters( 'ssp_feed_channel_link_tag', $link ); + return apply_filters( 'ssp_feed_channel_link_tag', $link, $podcast_id ); } @@ -642,7 +642,7 @@ public function get_feed_item_description( $post_id, $is_excerpt_mode, $turbo_po $output = get_the_excerpt( $post_id ); // Remove filter convert_chars, because our feed is already escaped with CDATA. remove_filter( 'the_excerpt_rss', 'convert_chars' ); - $content = apply_filters( 'the_excerpt_rss', $output ); + $content = apply_filters( 'the_excerpt_rss', $output, $post_id, $is_excerpt_mode ); } else { $content = ssp_get_the_feed_item_content( $post_id ); if ( $turbo_post_count > 10 ) { From 62c70e9b84c40788cf65f060f23da511f67ef489 Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Wed, 4 Dec 2024 04:07:26 -0800 Subject: [PATCH 116/126] Do not try syncing memberships if Castos is not connected (753) --- .../integrations/lifterlms/class-lifterlms-integrator.php | 4 +++- .../integrations/memberpress/class-memberpress-integrator.php | 4 +++- .../class-paid-memberships-pro-integrator.php | 4 +++- .../woocommerce/class-wc-memberships-integrator.php | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/php/classes/integrations/lifterlms/class-lifterlms-integrator.php b/php/classes/integrations/lifterlms/class-lifterlms-integrator.php index 379e6686..368ccbf7 100644 --- a/php/classes/integrations/lifterlms/class-lifterlms-integrator.php +++ b/php/classes/integrations/lifterlms/class-lifterlms-integrator.php @@ -76,7 +76,9 @@ public function init( $feed_handler, $castos_handler, $logger ) { } } - $this->init_subscribers_sync(); + if ( ssp_is_connected_to_castos() ) { + $this->init_subscribers_sync(); + } } /** diff --git a/php/classes/integrations/memberpress/class-memberpress-integrator.php b/php/classes/integrations/memberpress/class-memberpress-integrator.php index eecb726b..bad394fa 100644 --- a/php/classes/integrations/memberpress/class-memberpress-integrator.php +++ b/php/classes/integrations/memberpress/class-memberpress-integrator.php @@ -71,7 +71,9 @@ public function init( $feed_handler, $castos_handler, $logger, $notices_handler } } - $this->init_subscribers_sync(); + if ( ssp_is_connected_to_castos() ) { + $this->init_subscribers_sync(); + } } /** diff --git a/php/classes/integrations/paid-memberships-pro/class-paid-memberships-pro-integrator.php b/php/classes/integrations/paid-memberships-pro/class-paid-memberships-pro-integrator.php index 28b33629..adf53642 100644 --- a/php/classes/integrations/paid-memberships-pro/class-paid-memberships-pro-integrator.php +++ b/php/classes/integrations/paid-memberships-pro/class-paid-memberships-pro-integrator.php @@ -73,7 +73,9 @@ public function init( $feed_handler, $castos_handler, $logger, $notices_handler } } - $this->init_subscribers_sync(); + if ( ssp_is_connected_to_castos() ) { + $this->init_subscribers_sync(); + } } /** diff --git a/php/classes/integrations/woocommerce/class-wc-memberships-integrator.php b/php/classes/integrations/woocommerce/class-wc-memberships-integrator.php index c478883a..b68f21e5 100644 --- a/php/classes/integrations/woocommerce/class-wc-memberships-integrator.php +++ b/php/classes/integrations/woocommerce/class-wc-memberships-integrator.php @@ -74,7 +74,9 @@ public function late_init(){ } } - $this->init_subscribers_sync(); + if ( ssp_is_connected_to_castos() ) { + $this->init_subscribers_sync(); + } } /** From 9c6ad2accc179a1374615087ee9ce615cce3dc5b Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Wed, 4 Dec 2024 07:58:33 -0800 Subject: [PATCH 117/126] Lazy load settings (753) --- .../controllers/class-settings-controller.php | 5 +- .../handlers/class-settings-handler.php | 51 ++++++++++- .../renderers/class-settings-renderer.php | 3 + .../repositories/class-settings-config.php | 90 +++++++++++++++++++ php/config/settings/hosting.php | 4 +- 5 files changed, 147 insertions(+), 6 deletions(-) create mode 100644 php/classes/repositories/class-settings-config.php diff --git a/php/classes/controllers/class-settings-controller.php b/php/classes/controllers/class-settings-controller.php index 29797cd6..145d5d21 100644 --- a/php/classes/controllers/class-settings-controller.php +++ b/php/classes/controllers/class-settings-controller.php @@ -10,6 +10,7 @@ use SeriouslySimplePodcasting\Renderers\Renderer; use SeriouslySimplePodcasting\Renderers\Settings_Renderer; use SeriouslySimplePodcasting\Repositories\Episode_Repository; +use SeriouslySimplePodcasting\Repositories\Settings_Config; use SeriouslySimplePodcasting\Traits\Useful_Variables; /** @@ -398,13 +399,15 @@ public function register_settings() { /** * @param string $section_id - * @param array $section_data + * @param Settings_Config|array $section_data * @param string $feed_series * @param int $series_id * * @return void */ protected function register_settings_section( $section_id, $section_data, $feed_series = '', $series_id = 0 ) { + $section_data = is_object( $section_data ) ? $section_data->get_config() : $section_data; + $section_title = isset( $section_data['title'] ) ? $section_data['title'] : ''; $default_section_args = $section_data['fields'] ? array( diff --git a/php/classes/handlers/class-settings-handler.php b/php/classes/handlers/class-settings-handler.php index c94264f4..5b650c23 100644 --- a/php/classes/handlers/class-settings-handler.php +++ b/php/classes/handlers/class-settings-handler.php @@ -3,6 +3,7 @@ namespace SeriouslySimplePodcasting\Handlers; use SeriouslySimplePodcasting\Interfaces\Service; +use SeriouslySimplePodcasting\Repositories\Settings_Config; /** * SSP Settings Handler @@ -49,9 +50,20 @@ public function settings_fields() { /** * General settings * - * @return array + * @return Settings_Config */ public function get_general_settings() { + return new Settings_Config( function () { + return $this->_get_general_settings(); + } ); + } + + /** + * General settings + * + * @return array + */ + private function _get_general_settings() { global $wp_post_types; // Todo: get rid of global here $post_type_options = array(); @@ -80,9 +92,20 @@ public function get_general_settings() { /** * Player settings * - * @return array + * @return Settings_Config */ public function get_feed_settings() { + return new Settings_Config( function () { + return $this->_get_feed_settings(); + } ); + } + + /** + * Player settings + * + * @return array + */ + public function _get_feed_settings() { // translators: placeholders are simply html tags to break up the content. return array( 'title' => __( 'Feed details', 'seriously-simple-podcasting' ), @@ -136,9 +159,18 @@ public function get_extensions_settings() { } /** - * @return array + * @return Settings_Config */ public function get_hosting_settings() { + return new Settings_Config( function () { + return $this->_get_hosting_settings(); + } ); + } + + /** + * @return array + */ + public function _get_hosting_settings() { $podcast_options = $this->get_podcasts_list(); return ssp_config( 'settings/hosting', compact( 'podcast_options' ) ); @@ -177,9 +209,20 @@ public function get_publishing_settings(){ /** * Player settings * - * @return array + * @return Settings_Config */ public function get_player_settings() { + return new Settings_Config( function () { + return $this->_get_player_settings(); + } ); + } + + /** + * Player settings + * + * @return array + */ + private function _get_player_settings() { $player_style = ssp_get_option( 'player_style', 'larger' ); $is_meta_data_enabled = $this->is_player_meta_data_enabled(); $is_custom_colors_enabled = $this->is_player_custom_colors_enabled(); diff --git a/php/classes/renderers/class-settings-renderer.php b/php/classes/renderers/class-settings-renderer.php index a9a493a4..be71fbfd 100644 --- a/php/classes/renderers/class-settings-renderer.php +++ b/php/classes/renderers/class-settings-renderer.php @@ -127,6 +127,9 @@ public function render_field( $field, $data, $option_name, $default_option_name break; default: if ( ! empty( $field['description'] ) ) { + if ( is_callable( $field['description'] ) ) { + $field['description'] = call_user_func( $field['description'] ); + } $html .= '' . "\n"; } break; diff --git a/php/classes/repositories/class-settings-config.php b/php/classes/repositories/class-settings-config.php new file mode 100644 index 00000000..c657a9c6 --- /dev/null +++ b/php/classes/repositories/class-settings-config.php @@ -0,0 +1,90 @@ +config_callback = $config_callback; + } + + /** + * @return array|mixed + */ + public function get_config() { + if ( ! $this->config ) { + $this->config = call_user_func( $this->config_callback ); + } + + return $this->config; + } + + #[\ReturnTypeWillChange] + public function offsetSet( $offset, $value ) { + $this->config = $this->get_config(); + + if ( is_null( $offset ) ) { + $this->config[] = $value; + } else { + $this->config[ $offset ] = $value; + } + } + + /** + * #[\ReturnTypeWillChange] + * + * @param $offset + * + * @return bool + */ + #[\ReturnTypeWillChange] + public function offsetExists( $offset ) { + $config = $this->get_config(); + return isset( $config[ $offset ] ); + } + + #[\ReturnTypeWillChange] + public function offsetUnset( $offset ) { + unset( $this->config[ $offset ] ); + } + + #[\ReturnTypeWillChange] + public function offsetGet( $offset ) { + $config = $this->get_config(); + + return array_key_exists( $offset, $config ) ? $config[ $offset ] : null; + } + + #[\ReturnTypeWillChange] + public function getIterator() { + return new \ArrayIterator($this->get_config()); + } + + #[\ReturnTypeWillChange] + public function count() { + return count($this->get_config()); + } +} diff --git a/php/config/settings/hosting.php b/php/config/settings/hosting.php index a347540e..d04d13ba 100644 --- a/php/config/settings/hosting.php +++ b/php/config/settings/hosting.php @@ -35,7 +35,9 @@ array( 'id' => 'castos_sync_info', 'label' => __( 'Castos Account', 'seriously-simple-podcasting' ), - 'description' => do_shortcode( '[castos_email]' ), + 'description' => function() { + return do_shortcode( '[castos_email]' ); + }, 'type' => 'info', ), array( From 1ca0ef484adaedd0908a2f2273cde71a744230c8 Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Wed, 4 Dec 2024 07:59:19 -0800 Subject: [PATCH 118/126] Cache Castos email with transient --- php/classes/handlers/class-castos-handler.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/php/classes/handlers/class-castos-handler.php b/php/classes/handlers/class-castos-handler.php index 5b43e206..398e04de 100644 --- a/php/classes/handlers/class-castos-handler.php +++ b/php/classes/handlers/class-castos-handler.php @@ -203,9 +203,7 @@ public function get_email() { $cache_key = 'ssp_castos_api_email'; - $email = wp_cache_get( $cache_key ); - - if ( $email ) { + if ( $email = get_transient( $cache_key ) ) { return $email; } @@ -213,7 +211,7 @@ public function get_email() { $email = isset( $res['email'] ) ? $res['email'] : ''; - wp_cache_add( $cache_key, $email, '', MINUTE_IN_SECONDS ); + set_transient( $cache_key, $email, MINUTE_IN_SECONDS ); return $email; } catch ( \Exception $e ) { From 81e1aa17b46d80a650d3a687117045a789265fe8 Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Thu, 5 Dec 2024 06:04:48 -0800 Subject: [PATCH 119/126] Version 3.7.1-alpha --- seriously-simple-podcasting.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/seriously-simple-podcasting.php b/seriously-simple-podcasting.php index 7bbfe501..4e5251d4 100644 --- a/seriously-simple-podcasting.php +++ b/seriously-simple-podcasting.php @@ -1,7 +1,7 @@ Date: Thu, 12 Dec 2024 05:58:28 -0800 Subject: [PATCH 120/126] Fix Hosting tab title (753) --- php/classes/controllers/class-settings-controller.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/php/classes/controllers/class-settings-controller.php b/php/classes/controllers/class-settings-controller.php index 145d5d21..8efa8aae 100644 --- a/php/classes/controllers/class-settings-controller.php +++ b/php/classes/controllers/class-settings-controller.php @@ -360,6 +360,10 @@ public function register_settings() { return; } + if ( $data instanceof Settings_Config ) { + $data = $data->get_config(); + } + if ( isset( $data['sections'] ) ) { foreach ( $data['sections'] as $section_id => $section_data ) { $is_section_valid = true; From 7b97beafc1125118b24bced512c84d67d5dc5de8 Mon Sep 17 00:00:00 2001 From: Serhiy Zakharchenko Date: Thu, 12 Dec 2024 05:59:10 -0800 Subject: [PATCH 121/126] Version 3.7.1-alpha.2 --- seriously-simple-podcasting.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/seriously-simple-podcasting.php b/seriously-simple-podcasting.php index 4e5251d4..fecb7ed3 100644 --- a/seriously-simple-podcasting.php +++ b/seriously-simple-podcasting.php @@ -1,7 +1,7 @@ Date: Thu, 12 Dec 2024 11:14:17 -0800 Subject: [PATCH 122/126] Version 3.7.1 --- package.json | 2 +- readme.txt | 14 +++++++++++++- seriously-simple-podcasting.php | 4 ++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index d27f733e..f5bb8341 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "seriously-simple-podcasting", - "version": "3.7.0", + "version": "3.7.1", "main": "build/index.js", "author": "CastosHQ", "devDependencies": { diff --git a/readme.txt b/readme.txt index daad0e60..60967c5d 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Tags: podcast, audio, itunes, podcasting, playlist Requires at least: 5.3 Tested up to: 6.7 Requires PHP: 7.4 -Stable tag: 3.7.0 +Stable tag: 3.7.1 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html @@ -165,6 +165,18 @@ You can find complete user and developer documentation (along with the FAQs) on == Changelog == += 3.7.1 = +2024-12-12 +[UPDATE] Improved plugin performance ( lazy loading for settings, caching ). +[UPDATE] Enhanced SSP feed data filters. +[FIX] Fixed an issue with attempting to sync memberships with Castos when not connected. + +#### Developer Updates +* Added the $series_id parameter to the following feed filters: `ssp_feed_data`, `ssp_feed_no_access_message`, `ssp_private_feed_message`, `ssp_feed_no_access_path`, `ssp_feed_number_of_posts`, `ssp_feed_channel_link_tag`. +* Added the $podcast_series parameter to the `ssp_feed_number_of_posts` filter. +* Added the $podcast_id parameter to the `ssp_feed_channel_link_tag` filter. +* Added the $post_id and $is_excerpt_mode parameters to the `the_excerpt_rss` filter. + = 3.7.0 = 2024-11-25 [UPDATE] Use direct file URLs for player and feed. diff --git a/seriously-simple-podcasting.php b/seriously-simple-podcasting.php index fecb7ed3..85d409dd 100644 --- a/seriously-simple-podcasting.php +++ b/seriously-simple-podcasting.php @@ -1,7 +1,7 @@ Date: Thu, 26 Dec 2024 23:04:08 -0500 Subject: [PATCH 123/126] Add tag filter to playlist player shortcode --- php/classes/repositories/class-episode-repository.php | 5 +++++ php/classes/shortcodes/class-podcast-playlist.php | 1 + 2 files changed, 6 insertions(+) diff --git a/php/classes/repositories/class-episode-repository.php b/php/classes/repositories/class-episode-repository.php index db4ab8e9..7034e958 100644 --- a/php/classes/repositories/class-episode-repository.php +++ b/php/classes/repositories/class-episode-repository.php @@ -256,6 +256,11 @@ public function get_episodes( $atts ) { } } + // Limit query to only episodes with specified tag(s) + if ( $atts['tag'] ) { + $query_args['tag'] = $atts['tag']; + } + // Allow dynamic filtering of query args $query_args = apply_filters( 'ssp_podcast_playlist_query_args', $query_args ); diff --git a/php/classes/shortcodes/class-podcast-playlist.php b/php/classes/shortcodes/class-podcast-playlist.php index e51d75cc..397220b4 100644 --- a/php/classes/shortcodes/class-podcast-playlist.php +++ b/php/classes/shortcodes/class-podcast-playlist.php @@ -107,6 +107,7 @@ protected function prepare_atts( $params ) { array( 'type' => 'audio', 'series' => '', + 'tag' => '', 'order' => 'ASC', 'orderby' => 'menu_order ID', 'include' => '', From 59851d82fa0de24174d9e7d42798c30e5a4ea0b5 Mon Sep 17 00:00:00 2001 From: Damian Christey Date: Thu, 26 Dec 2024 23:45:08 -0500 Subject: [PATCH 124/126] Add tag selection to the playlist player in block editor --- .../blocks/class-castos-blocks.php | 31 +++++++++++++++++++ php/includes/ssp-functions.php | 20 ++++++++++++ src/components/EditPlaylistPlayer.js | 17 ++++++++++ 3 files changed, 68 insertions(+) diff --git a/php/classes/integrations/blocks/class-castos-blocks.php b/php/classes/integrations/blocks/class-castos-blocks.php index 756ef393..fc7d8588 100644 --- a/php/classes/integrations/blocks/class-castos-blocks.php +++ b/php/classes/integrations/blocks/class-castos-blocks.php @@ -417,6 +417,14 @@ protected function register_playlist_player() { 'type' => 'string', 'default' => '-1', ), + 'availableTags' => array( + 'type' => 'array', + 'default' => $this->get_tags(), + ), + 'selectedTag' => array( + 'type' => 'string', + 'default' => '', + ), // Use string everywhere instead of number because of the WP bug. // It doesn't show the saved value in the admin after page refresh. 'limit' => array( @@ -440,6 +448,10 @@ protected function register_playlist_player() { $args['series'] = $this->get_term_slug_by_id( $podcast_id ); } + if ( ! empty( $attributes['selectedTag'] ) ) { + $args['tag'] = $attributes['selectedTag']; + } + if ( ! empty( $attributes['limit'] ) ) { $args['limit'] = $attributes['limit']; } @@ -501,4 +513,23 @@ protected function get_podcast_settings() { ); }, ssp_get_podcasts() ) ); } + + /** + * @return array + */ + protected function get_tags() { + return array_merge( + array( + array( + 'label' => __( '-- All --', 'seriously-simple-podcasting' ), + 'value' => '', + ), + ), + array_map( function ( $item ) { + return array( + 'label' => $item->name, + 'value' => $item->slug, + ); + }, ssp_get_tags() ) ); + } } diff --git a/php/includes/ssp-functions.php b/php/includes/ssp-functions.php index a7bd3291..6f3af0f3 100644 --- a/php/includes/ssp-functions.php +++ b/php/includes/ssp-functions.php @@ -1726,6 +1726,26 @@ function ssp_get_podcasts( $hide_empty = false ) { } } +/** + * Gets array of tags. + */ +if ( ! function_exists( 'ssp_get_tags' ) ) { + /** + * Gets array of tags. + * + * @param bool $hide_empty + * + * @return WP_Term[] + */ + function ssp_get_tags( $hide_empty = false ) { + $tags = get_terms( 'post_tag', array( + 'post_type' => ssp_post_types(), + 'hide_empty' => $hide_empty, + ) ); + return is_array( $tags ) ? $tags : array(); + } +} + /** * Gets SSP Version. */ diff --git a/src/components/EditPlaylistPlayer.js b/src/components/EditPlaylistPlayer.js index ee64b6ea..2a650325 100644 --- a/src/components/EditPlaylistPlayer.js +++ b/src/components/EditPlaylistPlayer.js @@ -20,6 +20,8 @@ class EditPlaylistPlayer extends Component { const { availablePodcasts, + availableTags, + selectedTag, limit, orderBy, order, @@ -45,6 +47,21 @@ class EditPlaylistPlayer extends Component { }} /> + + + { + setAttributes({ + selectedTag: selectedTag + }); + }} + /> +