Changeset 3785848
- Timestamp:
- 11/05/2026 11:35:36 AM (5 hours ago)
- Location:
- mattytap-sermons
- Files:
-
- 4 added
- 16 edited
- 1 copied
-
tags/3.7.0 (copied) (copied from mattytap-sermons/trunk )
-
tags/3.7.0/assets/js/plyr.js (modified) (1 diff)
-
tags/3.7.0/assets/js/plyr.min.js (modified) (1 diff)
-
tags/3.7.0/assets/vendor/svg (added)
-
tags/3.7.0/assets/vendor/svg/plyr.svg (added)
-
tags/3.7.0/includes/sm-core-functions.php (modified) (1 diff)
-
tags/3.7.0/includes/sm-pro-compat-functions.php (modified) (1 diff)
-
tags/3.7.0/languages/mattytap-sermons.pot (modified) (5 diffs)
-
tags/3.7.0/readme.txt (modified) (5 diffs)
-
tags/3.7.0/sermons.php (modified) (2 diffs)
-
tags/3.7.0/views/wpfc-podcast-feed.php (modified) (3 diffs)
-
trunk/assets/js/plyr.js (modified) (1 diff)
-
trunk/assets/js/plyr.min.js (modified) (1 diff)
-
trunk/assets/vendor/svg (added)
-
trunk/assets/vendor/svg/plyr.svg (added)
-
trunk/includes/sm-core-functions.php (modified) (1 diff)
-
trunk/includes/sm-pro-compat-functions.php (modified) (1 diff)
-
trunk/languages/mattytap-sermons.pot (modified) (5 diffs)
-
trunk/readme.txt (modified) (5 diffs)
-
trunk/sermons.php (modified) (2 diffs)
-
trunk/views/wpfc-podcast-feed.php (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
mattytap-sermons/tags/3.7.0/assets/js/plyr.js
r3573498 r3785848 5 5 }; 6 6 } else { 7 sm_data.debug = sm_data.debug === '1'; 8 sm_data.use_native_player_safari = sm_data.use_native_player_safari === '1'; 7 // The plugin sends 1 or 0; Sermon Manager sent '1' or '0'. Accept both. 8 sm_data.debug = String( sm_data.debug ) === '1'; 9 sm_data.use_native_player_safari = String( sm_data.use_native_player_safari ) === '1'; 9 10 } 10 11 11 12 window.addEventListener( 'DOMContentLoaded', function () { 12 const players = Plyr.setup( document.querySelectorAll( '.wpfc-sermon-player,.wpfc-sermon-video-player' ),{13 const options = { 13 14 debug: sm_data.debug, 14 15 enabled: sm_data.use_native_player_safari ? ( !/Safari/.test( navigator.userAgent ) || ( /Safari/.test( navigator.userAgent ) && /Chrome|OPR/.test( navigator.userAgent ) ) ) : true, 15 } ); 16 // Ask YouTube and Vimeo to track visitors less: YouTube plays from youtube-nocookie.com. 17 youtube: { noCookie: true }, 18 vimeo: { dnt: true }, 19 }; 20 21 // Load Plyr's icons from this site, when the plugin says where they are. 22 if ( sm_data.icon_url ) { 23 options.iconUrl = sm_data.icon_url; 24 } 25 26 const players = Plyr.setup( document.querySelectorAll( '.wpfc-sermon-player,.wpfc-sermon-video-player' ), options ); 16 27 17 28 for ( let p in players ) { -
mattytap-sermons/tags/3.7.0/assets/js/plyr.min.js
r3573498 r3785848 1 "undefined"==typeof sm_data?sm_data={debug:!1,use_native_player_safari:!1}:(sm_data.debug="1"=== sm_data.debug,sm_data.use_native_player_safari="1"===sm_data.use_native_player_safari),window.addEventListener("DOMContentLoaded",function(){const a=Plyr.setup(document.querySelectorAll(".wpfc-sermon-player,.wpfc-sermon-video-player"),{debug:sm_data.debug,enabled:!sm_data.use_native_player_safari||!/Safari/.test(navigator.userAgent)||/Safari/.test(navigator.userAgent)&&/Chrome|OPR/.test(navigator.userAgent)});for(let b in a)a.hasOwnProperty(b)&&a[b].on("loadedmetadata ready",function(a){let b=a.detail.plyr;void 0!==b.elements.original.dataset.plyr_seek&&(b.currentTime=parseInt(b.elements.original.dataset.plyr_seek),b.embed.setCurrentTime(parseInt(b.elements.original.dataset.plyr_seek)))})});1 "undefined"==typeof sm_data?sm_data={debug:!1,use_native_player_safari:!1}:(sm_data.debug="1"===String(sm_data.debug),sm_data.use_native_player_safari="1"===String(sm_data.use_native_player_safari)),window.addEventListener("DOMContentLoaded",(function(){const e={debug:sm_data.debug,enabled:!sm_data.use_native_player_safari||(!/Safari/.test(navigator.userAgent)||/Safari/.test(navigator.userAgent)&&/Chrome|OPR/.test(navigator.userAgent)),youtube:{noCookie:!0},vimeo:{dnt:!0}};sm_data.icon_url&&(e.iconUrl=sm_data.icon_url);const a=Plyr.setup(document.querySelectorAll(".wpfc-sermon-player,.wpfc-sermon-video-player"),e);for(let e in a)a.hasOwnProperty(e)&&a[e].on("loadedmetadata ready",(function(e){let a=e.detail.plyr;void 0!==a.elements.original.dataset.plyr_seek&&(a.currentTime=parseInt(a.elements.original.dataset.plyr_seek))}))})); -
mattytap-sermons/tags/3.7.0/includes/sm-core-functions.php
r3702401 r3785848 1475 1475 } 1476 1476 1477 // The placeholder the Sermon Browser and Series Engine importers insert, waiting for an excerpt. 1478 if ( '%todo_render%' === $content ) { 1479 return true; 1480 } 1481 1477 1482 $sermon = get_post( $post ); 1478 1483 -
mattytap-sermons/tags/3.7.0/includes/sm-pro-compat-functions.php
r3724218 r3785848 147 147 // Late, so that a page builder or other plugin that owns one of these names keeps it. 148 148 add_action( 'wp_loaded', 'sm_pro_compat_register_shortcodes' ); 149 150 /** 151 * Renders the Pro-style sermon grid block, as found on sites coming from 152 * Church Sermon Manager, as the plugin's own sermon list. 153 * 154 * The block's count and sort settings carry across; its layout settings don't. 155 * 156 * @since 3.7.0 157 * 158 * @param array $attributes Block attributes, as saved in the post. 159 * 160 * @return string The sermon list HTML. 161 */ 162 function sm_pro_compat_sermon_grid_block( $attributes ) { 163 $attributes = (array) $attributes; 164 $atts = array(); 165 166 if ( isset( $attributes['postscount'] ) ) { 167 $atts['count'] = $attributes['postscount']; 168 } 169 170 foreach ( array( 'order' => 'order', 'orderBy' => 'orderby' ) as $from => $to ) { 171 if ( isset( $attributes[ $from ] ) ) { 172 $atts[ $to ] = $attributes[ $from ]; 173 } 174 } 175 176 return sm_pro_compat_archive_shortcode( $atts ); 177 } 178 179 /** 180 * Registers the Pro-style sermon blocks, each only if nothing else has claimed it. 181 * 182 * @since 3.7.0 183 */ 184 function sm_pro_compat_register_blocks() { 185 if ( ! function_exists( 'register_block_type' ) ) { 186 return; 187 } 188 189 $blocks = array( 190 'sermons-blog-layout/sermons-grid' => 'sm_pro_compat_sermon_grid_block', 191 'sermons-taxonomy-layout/sermons-grid' => 'sm_pro_compat_taxonomy_shortcode', 192 ); 193 194 foreach ( $blocks as $name => $callback ) { 195 if ( ! WP_Block_Type_Registry::get_instance()->is_registered( $name ) ) { 196 register_block_type( $name, array( 'render_callback' => $callback ) ); 197 } 198 } 199 } 200 201 // Late, so that a plugin that owns one of these names keeps it. 202 add_action( 'init', 'sm_pro_compat_register_blocks', 99 ); 149 203 150 204 /** -
mattytap-sermons/tags/3.7.0/languages/mattytap-sermons.pot
r3773815 r3785848 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: Mattytap Sermons 3. 6.3\n"5 "Project-Id-Version: Mattytap Sermons 3.7.0\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/mattytap-sermons\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2026-1 0-29T18:59:06+00:00\n"12 "POT-Creation-Date: 2026-11-05T11:28:36+00:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.12.0\n" … … 18 18 #. translators: %s: The plugin name. Effectively "<strong>Mattytap Sermons</strong>". 19 19 #: sermons.php 20 #: sermons.php:92 720 #: sermons.php:929 21 21 msgid "Mattytap Sermons" 22 22 msgstr "" … … 1853 1853 1854 1854 #: includes/sm-core-functions.php:1422 1855 #: includes/sm-core-functions.php:14 881855 #: includes/sm-core-functions.php:1493 1856 1856 msgid "Bible Text:" 1857 1857 msgstr "" 1858 1858 1859 1859 #: includes/sm-core-functions.php:1438 1860 #: includes/sm-core-functions.php:14 881860 #: includes/sm-core-functions.php:1493 1861 1861 msgid "Series:" 1862 1862 msgstr "" … … 1878 1878 msgstr "" 1879 1879 1880 #: includes/sm-pro-compat-functions.php: 1911880 #: includes/sm-pro-compat-functions.php:245 1881 1881 msgid "Mattytap Sermons found settings left by Sermon Manager Pro." 1882 1882 msgstr "" 1883 1883 1884 #: includes/sm-pro-compat-functions.php: 1921884 #: includes/sm-pro-compat-functions.php:246 1885 1885 msgid "Your sermons, series, preachers, files and main podcast feed have all carried over. Pro's custom layouts, its extra podcasts and its page-builder widgets are not part of Mattytap Sermons: pages that used Pro's sermon archive shortcode now show the standard sermon list, and Pro's extra podcast feeds now carry every sermon. Pro's data is left untouched in the database." 1886 1886 msgstr "" 1887 1887 1888 #: includes/sm-pro-compat-functions.php: 1941888 #: includes/sm-pro-compat-functions.php:248 1889 1889 msgid "Read more about switching from Pro" 1890 1890 msgstr "" 1891 1891 1892 #: includes/sm-pro-compat-functions.php: 1961892 #: includes/sm-pro-compat-functions.php:250 1893 1893 msgid "Dismiss this notice" 1894 1894 msgstr "" 1895 1895 1896 #: sermons.php:70 21896 #: sermons.php:704 1897 1897 msgid "Import failed. Please check that you selected a valid export file, then try again." 1898 1898 msgstr "" 1899 1899 1900 #: sermons.php:70 61900 #: sermons.php:708 1901 1901 msgid "Import done!" 1902 1902 msgstr "" 1903 1903 1904 1904 #. translators: %s: The plugin name. Effectively "<strong>Mattytap Sermons</strong>". 1905 #: sermons.php:92 71905 #: sermons.php:929 1906 1906 #, php-format 1907 1907 msgid "%s requires output buffering to be turned on to display content. It is currently off. Please enable it or contact your hosting provider for help. Most of plugin functionality will be disabled until output buffering is enabled." -
mattytap-sermons/tags/3.7.0/readme.txt
r3773815 r3785848 5 5 Tested up to: 7.1 6 6 Requires PHP: 8.1 7 Stable tag: 3. 6.37 Stable tag: 3.7.0 8 8 License: GPLv2 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 83 83 Nothing of Pro's is deleted, so you can switch back if you need to. Deactivate Sermon Manager Pro and Sermon Manager before activating Mattytap Sermons. 84 84 85 = I'm coming from Church Sermon Manager. What carries over? = 86 87 Church Sermon Manager is built on Sermon Manager and includes Sermon Manager Pro's features, so the switch works the same way. Deactivate Church Sermon Manager first, then activate Mattytap Sermons. WordPress won't activate it while the other is still running, though nothing is harmed if you try. 88 89 Your sermons, series, preachers, topics, books, service types, images, settings and main podcast feed all carry over. Pages using its sermon archive shortcodes or its sermon grid block show the standard sermon list. Its custom layouts, page-builder widgets and extra podcast feeds behave as described for Sermon Manager Pro above. Nothing is deleted, so you can switch back. 90 91 = Can I show my sermons on another website or in a podcast app? = 92 93 Yes. Your sermons are published as a podcast feed at your sermon archive's address with `feed/` added, for example `https://example.com/sermons/feed/`. Each series, preacher, topic and book has its own feed too: add `feed/` to the end of its page's address. Podcast apps can subscribe to any of these, and website builders with a podcast or RSS block can show them on another site. 94 95 For developers, the same sermons are available as data through the WordPress REST API at `/wp-json/wp/v2/wpfc_sermon`. 96 85 97 = How do I report a bug or request a feature? = 86 98 … … 90 102 91 103 No. Mattytap Sermons is GPLv2 free software with no paid tier, no premium add-ons, and no commercial support. Bug fixes, feature requests, and translation contributions are welcome through GitHub. 104 105 == External services == 106 107 Mattytap Sermons doesn't need any outside service to work. A few features do reach one, either in a visitor's browser or from your own site. Each is listed here with what is sent, when, and how to avoid it. 108 109 * **Bible verse popups (Faithlife Reftagger).** On sermon pages, the visitor's browser loads a script from api.reftagger.com, which turns Bible references into links that show the verse when hovered. It's on by default, as it was in Sermon Manager. Turn it off under Sermons > Settings > Verse > Verse Popups. Faithlife [terms](https://faithlife.com/terms) and [privacy](https://faithlife.com/privacy). 110 * **YouTube and Vimeo.** A sermon given a YouTube or Vimeo address in its Video Link field plays in that service's own player, which the visitor's browser loads from YouTube or Vimeo when the sermon is opened. With the Plyr player, the default, YouTube videos come from youtube-nocookie.com, YouTube's reduced-tracking address, though YouTube may still set cookies of its own, and Vimeo is asked not to track the visitor. Plyr also asks noembed.com for a YouTube video's title. A video pasted into the Video Embed Code field plays exactly as pasted. Nothing is embedded unless a sermon has a video. YouTube [terms](https://www.youtube.com/t/terms) and [privacy](https://policies.google.com/privacy). Vimeo [terms](https://vimeo.com/terms) and [privacy](https://vimeo.com/privacy). [noembed](https://noembed.com/). 111 * **Audio file size.** When a sermon is saved with an audio file address rather than an uploaded file, your site sends a single request to that address to read the file's size for the podcast feed. Only public web addresses are checked, and nothing about your site is sent. 112 * **PodTrac.** Off by default. If you turn on PodTrac Tracking under Sermons > Settings > Podcast, the audio links in your podcast feed pass through dts.podtrac.com, so podcast apps fetch each episode by way of PodTrac, which counts the download. PodTrac [privacy](https://www.podtrac.com/privacy-policy/). 113 * **Importing a Sermon Manager export file.** When you import an export file under Sermons > Import/Export, your site downloads each attached file from the address recorded in the export. Only public web addresses are fetched. 114 115 The Plyr player's icons are part of the plugin and load from your own site. 92 116 93 117 == Screenshots == … … 101 125 102 126 == Changelog == 127 128 = 3.7.0 = 129 130 * Improved: with the Plyr player, YouTube sermons now play from youtube-nocookie.com, YouTube's reduced-tracking address, and Vimeo is asked not to track visitors. The player's icons now load from your own site instead of cdn.plyr.io. The player looks and works as before. 131 * Improved: for sites coming from Church Sermon Manager, its sermon grid block now shows the standard sermon list instead of nothing, keeping the block's number of sermons and sort order. Its taxonomy grid block shows nothing, as Sermon Manager Pro's taxonomy shortcode already does. 132 * Fix: the podcast feed now gives its explicit-content flag as `false`, the form Apple Podcasts currently documents, rather than the older `no`. The meaning is unchanged. 133 * Fix: podcast episodes in M4A, MP4, M4V or MOV format are now labelled with their own file type in the feed, rather than as MP3. Inherited from Sermon Manager. 134 * Fix: sermons imported from Sermon Browser or Series Engine with no description no longer show "%todo_render%" as their text. This covers sermons already imported too; the next save replaces it with the usual search summary. Inherited from Sermon Manager. 135 * Fix: the "Use native player on Safari" setting under Settings > Debug works again. Since 3.1 it had no effect. 136 * New: readme sections on the outside services the plugin can reach, on showing your sermons elsewhere, and on switching from Church Sermon Manager. 103 137 104 138 = 3.6.3 = … … 371 405 == Upgrade Notice == 372 406 407 = 3.7.0 = 408 409 Privacy and podcast feed improvements, a landing for sites coming from Church Sermon Manager, and three fixes. Sermon pages look the same as before; no data migration. 410 373 411 = 3.6.3 = 374 412 -
mattytap-sermons/tags/3.7.0/sermons.php
r3773815 r3785848 4 4 * Plugin URI: https://github.com/mattytap/Mattytap-Sermons 5 5 * Description: A maintained restoration of WP-for-Church's Sermon Manager: add audio and video sermons, manage preachers, series, and more. 6 * Version: 3. 6.36 * Version: 3.7.0 7 7 * Author: Matt Fawcett (restoration); WP for Church (original) 8 8 * Author URI: https://github.com/mattytap … … 337 337 'debug' => defined( 'WP_DEBUG' ) && WP_DEBUG === true ? 1 : 0, 338 338 'use_native_player_safari' => SermonManager::getOption( 'use_native_player_safari', false ) ? 1 : 0, 339 // Plyr's own icons, served from here rather than from cdn.plyr.io. 340 'icon_url' => SM_URL . 'assets/vendor/svg/plyr.svg', 339 341 ); 340 342 wp_add_inline_script( -
mattytap-sermons/tags/3.7.0/views/wpfc-podcast-feed.php
r3724191 r3785848 281 281 <itunes:email><?php echo esc_html( $owner_email ); ?></itunes:email> 282 282 </itunes:owner> 283 <itunes:explicit> no</itunes:explicit>283 <itunes:explicit>false</itunes:explicit> 284 284 <?php if ( $cover_image_url ) : ?> 285 285 <itunes:image href="<?php echo esc_url( $cover_image_url ); ?>"/> … … 344 344 $audio = preg_replace( '/^https:/i', 'http:', $audio ); 345 345 } 346 347 // Name the file's real type, from the types Apple Podcasts accepts; MP3 when it can't be told. 348 $audio_types = array( 349 'm4a' => 'audio/x-m4a', 350 'mp4' => 'video/mp4', 351 'm4v' => 'video/x-m4v', 352 'mov' => 'video/quicktime', 353 ); 354 $audio_ext = strtolower( pathinfo( (string) wp_parse_url( $audio, PHP_URL_PATH ), PATHINFO_EXTENSION ) ); 355 $audio_type = isset( $audio_types[ $audio_ext ] ) ? $audio_types[ $audio_ext ] : 'audio/mpeg'; 346 356 ?> 347 357 … … 376 386 <enclosure url="<?php echo esc_url( $audio ); ?>" 377 387 length="<?php echo esc_attr( $audio_file_size ); ?>" 378 type=" audio/mpeg"/>388 type="<?php echo esc_attr( $audio_type ); ?>"/> 379 389 <?php endif; ?> 380 390 -
mattytap-sermons/trunk/assets/js/plyr.js
r3573498 r3785848 5 5 }; 6 6 } else { 7 sm_data.debug = sm_data.debug === '1'; 8 sm_data.use_native_player_safari = sm_data.use_native_player_safari === '1'; 7 // The plugin sends 1 or 0; Sermon Manager sent '1' or '0'. Accept both. 8 sm_data.debug = String( sm_data.debug ) === '1'; 9 sm_data.use_native_player_safari = String( sm_data.use_native_player_safari ) === '1'; 9 10 } 10 11 11 12 window.addEventListener( 'DOMContentLoaded', function () { 12 const players = Plyr.setup( document.querySelectorAll( '.wpfc-sermon-player,.wpfc-sermon-video-player' ),{13 const options = { 13 14 debug: sm_data.debug, 14 15 enabled: sm_data.use_native_player_safari ? ( !/Safari/.test( navigator.userAgent ) || ( /Safari/.test( navigator.userAgent ) && /Chrome|OPR/.test( navigator.userAgent ) ) ) : true, 15 } ); 16 // Ask YouTube and Vimeo to track visitors less: YouTube plays from youtube-nocookie.com. 17 youtube: { noCookie: true }, 18 vimeo: { dnt: true }, 19 }; 20 21 // Load Plyr's icons from this site, when the plugin says where they are. 22 if ( sm_data.icon_url ) { 23 options.iconUrl = sm_data.icon_url; 24 } 25 26 const players = Plyr.setup( document.querySelectorAll( '.wpfc-sermon-player,.wpfc-sermon-video-player' ), options ); 16 27 17 28 for ( let p in players ) { -
mattytap-sermons/trunk/assets/js/plyr.min.js
r3573498 r3785848 1 "undefined"==typeof sm_data?sm_data={debug:!1,use_native_player_safari:!1}:(sm_data.debug="1"=== sm_data.debug,sm_data.use_native_player_safari="1"===sm_data.use_native_player_safari),window.addEventListener("DOMContentLoaded",function(){const a=Plyr.setup(document.querySelectorAll(".wpfc-sermon-player,.wpfc-sermon-video-player"),{debug:sm_data.debug,enabled:!sm_data.use_native_player_safari||!/Safari/.test(navigator.userAgent)||/Safari/.test(navigator.userAgent)&&/Chrome|OPR/.test(navigator.userAgent)});for(let b in a)a.hasOwnProperty(b)&&a[b].on("loadedmetadata ready",function(a){let b=a.detail.plyr;void 0!==b.elements.original.dataset.plyr_seek&&(b.currentTime=parseInt(b.elements.original.dataset.plyr_seek),b.embed.setCurrentTime(parseInt(b.elements.original.dataset.plyr_seek)))})});1 "undefined"==typeof sm_data?sm_data={debug:!1,use_native_player_safari:!1}:(sm_data.debug="1"===String(sm_data.debug),sm_data.use_native_player_safari="1"===String(sm_data.use_native_player_safari)),window.addEventListener("DOMContentLoaded",(function(){const e={debug:sm_data.debug,enabled:!sm_data.use_native_player_safari||(!/Safari/.test(navigator.userAgent)||/Safari/.test(navigator.userAgent)&&/Chrome|OPR/.test(navigator.userAgent)),youtube:{noCookie:!0},vimeo:{dnt:!0}};sm_data.icon_url&&(e.iconUrl=sm_data.icon_url);const a=Plyr.setup(document.querySelectorAll(".wpfc-sermon-player,.wpfc-sermon-video-player"),e);for(let e in a)a.hasOwnProperty(e)&&a[e].on("loadedmetadata ready",(function(e){let a=e.detail.plyr;void 0!==a.elements.original.dataset.plyr_seek&&(a.currentTime=parseInt(a.elements.original.dataset.plyr_seek))}))})); -
mattytap-sermons/trunk/includes/sm-core-functions.php
r3702401 r3785848 1475 1475 } 1476 1476 1477 // The placeholder the Sermon Browser and Series Engine importers insert, waiting for an excerpt. 1478 if ( '%todo_render%' === $content ) { 1479 return true; 1480 } 1481 1477 1482 $sermon = get_post( $post ); 1478 1483 -
mattytap-sermons/trunk/includes/sm-pro-compat-functions.php
r3724218 r3785848 147 147 // Late, so that a page builder or other plugin that owns one of these names keeps it. 148 148 add_action( 'wp_loaded', 'sm_pro_compat_register_shortcodes' ); 149 150 /** 151 * Renders the Pro-style sermon grid block, as found on sites coming from 152 * Church Sermon Manager, as the plugin's own sermon list. 153 * 154 * The block's count and sort settings carry across; its layout settings don't. 155 * 156 * @since 3.7.0 157 * 158 * @param array $attributes Block attributes, as saved in the post. 159 * 160 * @return string The sermon list HTML. 161 */ 162 function sm_pro_compat_sermon_grid_block( $attributes ) { 163 $attributes = (array) $attributes; 164 $atts = array(); 165 166 if ( isset( $attributes['postscount'] ) ) { 167 $atts['count'] = $attributes['postscount']; 168 } 169 170 foreach ( array( 'order' => 'order', 'orderBy' => 'orderby' ) as $from => $to ) { 171 if ( isset( $attributes[ $from ] ) ) { 172 $atts[ $to ] = $attributes[ $from ]; 173 } 174 } 175 176 return sm_pro_compat_archive_shortcode( $atts ); 177 } 178 179 /** 180 * Registers the Pro-style sermon blocks, each only if nothing else has claimed it. 181 * 182 * @since 3.7.0 183 */ 184 function sm_pro_compat_register_blocks() { 185 if ( ! function_exists( 'register_block_type' ) ) { 186 return; 187 } 188 189 $blocks = array( 190 'sermons-blog-layout/sermons-grid' => 'sm_pro_compat_sermon_grid_block', 191 'sermons-taxonomy-layout/sermons-grid' => 'sm_pro_compat_taxonomy_shortcode', 192 ); 193 194 foreach ( $blocks as $name => $callback ) { 195 if ( ! WP_Block_Type_Registry::get_instance()->is_registered( $name ) ) { 196 register_block_type( $name, array( 'render_callback' => $callback ) ); 197 } 198 } 199 } 200 201 // Late, so that a plugin that owns one of these names keeps it. 202 add_action( 'init', 'sm_pro_compat_register_blocks', 99 ); 149 203 150 204 /** -
mattytap-sermons/trunk/languages/mattytap-sermons.pot
r3773815 r3785848 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: Mattytap Sermons 3. 6.3\n"5 "Project-Id-Version: Mattytap Sermons 3.7.0\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/mattytap-sermons\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2026-1 0-29T18:59:06+00:00\n"12 "POT-Creation-Date: 2026-11-05T11:28:36+00:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.12.0\n" … … 18 18 #. translators: %s: The plugin name. Effectively "<strong>Mattytap Sermons</strong>". 19 19 #: sermons.php 20 #: sermons.php:92 720 #: sermons.php:929 21 21 msgid "Mattytap Sermons" 22 22 msgstr "" … … 1853 1853 1854 1854 #: includes/sm-core-functions.php:1422 1855 #: includes/sm-core-functions.php:14 881855 #: includes/sm-core-functions.php:1493 1856 1856 msgid "Bible Text:" 1857 1857 msgstr "" 1858 1858 1859 1859 #: includes/sm-core-functions.php:1438 1860 #: includes/sm-core-functions.php:14 881860 #: includes/sm-core-functions.php:1493 1861 1861 msgid "Series:" 1862 1862 msgstr "" … … 1878 1878 msgstr "" 1879 1879 1880 #: includes/sm-pro-compat-functions.php: 1911880 #: includes/sm-pro-compat-functions.php:245 1881 1881 msgid "Mattytap Sermons found settings left by Sermon Manager Pro." 1882 1882 msgstr "" 1883 1883 1884 #: includes/sm-pro-compat-functions.php: 1921884 #: includes/sm-pro-compat-functions.php:246 1885 1885 msgid "Your sermons, series, preachers, files and main podcast feed have all carried over. Pro's custom layouts, its extra podcasts and its page-builder widgets are not part of Mattytap Sermons: pages that used Pro's sermon archive shortcode now show the standard sermon list, and Pro's extra podcast feeds now carry every sermon. Pro's data is left untouched in the database." 1886 1886 msgstr "" 1887 1887 1888 #: includes/sm-pro-compat-functions.php: 1941888 #: includes/sm-pro-compat-functions.php:248 1889 1889 msgid "Read more about switching from Pro" 1890 1890 msgstr "" 1891 1891 1892 #: includes/sm-pro-compat-functions.php: 1961892 #: includes/sm-pro-compat-functions.php:250 1893 1893 msgid "Dismiss this notice" 1894 1894 msgstr "" 1895 1895 1896 #: sermons.php:70 21896 #: sermons.php:704 1897 1897 msgid "Import failed. Please check that you selected a valid export file, then try again." 1898 1898 msgstr "" 1899 1899 1900 #: sermons.php:70 61900 #: sermons.php:708 1901 1901 msgid "Import done!" 1902 1902 msgstr "" 1903 1903 1904 1904 #. translators: %s: The plugin name. Effectively "<strong>Mattytap Sermons</strong>". 1905 #: sermons.php:92 71905 #: sermons.php:929 1906 1906 #, php-format 1907 1907 msgid "%s requires output buffering to be turned on to display content. It is currently off. Please enable it or contact your hosting provider for help. Most of plugin functionality will be disabled until output buffering is enabled." -
mattytap-sermons/trunk/readme.txt
r3773815 r3785848 5 5 Tested up to: 7.1 6 6 Requires PHP: 8.1 7 Stable tag: 3. 6.37 Stable tag: 3.7.0 8 8 License: GPLv2 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 83 83 Nothing of Pro's is deleted, so you can switch back if you need to. Deactivate Sermon Manager Pro and Sermon Manager before activating Mattytap Sermons. 84 84 85 = I'm coming from Church Sermon Manager. What carries over? = 86 87 Church Sermon Manager is built on Sermon Manager and includes Sermon Manager Pro's features, so the switch works the same way. Deactivate Church Sermon Manager first, then activate Mattytap Sermons. WordPress won't activate it while the other is still running, though nothing is harmed if you try. 88 89 Your sermons, series, preachers, topics, books, service types, images, settings and main podcast feed all carry over. Pages using its sermon archive shortcodes or its sermon grid block show the standard sermon list. Its custom layouts, page-builder widgets and extra podcast feeds behave as described for Sermon Manager Pro above. Nothing is deleted, so you can switch back. 90 91 = Can I show my sermons on another website or in a podcast app? = 92 93 Yes. Your sermons are published as a podcast feed at your sermon archive's address with `feed/` added, for example `https://example.com/sermons/feed/`. Each series, preacher, topic and book has its own feed too: add `feed/` to the end of its page's address. Podcast apps can subscribe to any of these, and website builders with a podcast or RSS block can show them on another site. 94 95 For developers, the same sermons are available as data through the WordPress REST API at `/wp-json/wp/v2/wpfc_sermon`. 96 85 97 = How do I report a bug or request a feature? = 86 98 … … 90 102 91 103 No. Mattytap Sermons is GPLv2 free software with no paid tier, no premium add-ons, and no commercial support. Bug fixes, feature requests, and translation contributions are welcome through GitHub. 104 105 == External services == 106 107 Mattytap Sermons doesn't need any outside service to work. A few features do reach one, either in a visitor's browser or from your own site. Each is listed here with what is sent, when, and how to avoid it. 108 109 * **Bible verse popups (Faithlife Reftagger).** On sermon pages, the visitor's browser loads a script from api.reftagger.com, which turns Bible references into links that show the verse when hovered. It's on by default, as it was in Sermon Manager. Turn it off under Sermons > Settings > Verse > Verse Popups. Faithlife [terms](https://faithlife.com/terms) and [privacy](https://faithlife.com/privacy). 110 * **YouTube and Vimeo.** A sermon given a YouTube or Vimeo address in its Video Link field plays in that service's own player, which the visitor's browser loads from YouTube or Vimeo when the sermon is opened. With the Plyr player, the default, YouTube videos come from youtube-nocookie.com, YouTube's reduced-tracking address, though YouTube may still set cookies of its own, and Vimeo is asked not to track the visitor. Plyr also asks noembed.com for a YouTube video's title. A video pasted into the Video Embed Code field plays exactly as pasted. Nothing is embedded unless a sermon has a video. YouTube [terms](https://www.youtube.com/t/terms) and [privacy](https://policies.google.com/privacy). Vimeo [terms](https://vimeo.com/terms) and [privacy](https://vimeo.com/privacy). [noembed](https://noembed.com/). 111 * **Audio file size.** When a sermon is saved with an audio file address rather than an uploaded file, your site sends a single request to that address to read the file's size for the podcast feed. Only public web addresses are checked, and nothing about your site is sent. 112 * **PodTrac.** Off by default. If you turn on PodTrac Tracking under Sermons > Settings > Podcast, the audio links in your podcast feed pass through dts.podtrac.com, so podcast apps fetch each episode by way of PodTrac, which counts the download. PodTrac [privacy](https://www.podtrac.com/privacy-policy/). 113 * **Importing a Sermon Manager export file.** When you import an export file under Sermons > Import/Export, your site downloads each attached file from the address recorded in the export. Only public web addresses are fetched. 114 115 The Plyr player's icons are part of the plugin and load from your own site. 92 116 93 117 == Screenshots == … … 101 125 102 126 == Changelog == 127 128 = 3.7.0 = 129 130 * Improved: with the Plyr player, YouTube sermons now play from youtube-nocookie.com, YouTube's reduced-tracking address, and Vimeo is asked not to track visitors. The player's icons now load from your own site instead of cdn.plyr.io. The player looks and works as before. 131 * Improved: for sites coming from Church Sermon Manager, its sermon grid block now shows the standard sermon list instead of nothing, keeping the block's number of sermons and sort order. Its taxonomy grid block shows nothing, as Sermon Manager Pro's taxonomy shortcode already does. 132 * Fix: the podcast feed now gives its explicit-content flag as `false`, the form Apple Podcasts currently documents, rather than the older `no`. The meaning is unchanged. 133 * Fix: podcast episodes in M4A, MP4, M4V or MOV format are now labelled with their own file type in the feed, rather than as MP3. Inherited from Sermon Manager. 134 * Fix: sermons imported from Sermon Browser or Series Engine with no description no longer show "%todo_render%" as their text. This covers sermons already imported too; the next save replaces it with the usual search summary. Inherited from Sermon Manager. 135 * Fix: the "Use native player on Safari" setting under Settings > Debug works again. Since 3.1 it had no effect. 136 * New: readme sections on the outside services the plugin can reach, on showing your sermons elsewhere, and on switching from Church Sermon Manager. 103 137 104 138 = 3.6.3 = … … 371 405 == Upgrade Notice == 372 406 407 = 3.7.0 = 408 409 Privacy and podcast feed improvements, a landing for sites coming from Church Sermon Manager, and three fixes. Sermon pages look the same as before; no data migration. 410 373 411 = 3.6.3 = 374 412 -
mattytap-sermons/trunk/sermons.php
r3773815 r3785848 4 4 * Plugin URI: https://github.com/mattytap/Mattytap-Sermons 5 5 * Description: A maintained restoration of WP-for-Church's Sermon Manager: add audio and video sermons, manage preachers, series, and more. 6 * Version: 3. 6.36 * Version: 3.7.0 7 7 * Author: Matt Fawcett (restoration); WP for Church (original) 8 8 * Author URI: https://github.com/mattytap … … 337 337 'debug' => defined( 'WP_DEBUG' ) && WP_DEBUG === true ? 1 : 0, 338 338 'use_native_player_safari' => SermonManager::getOption( 'use_native_player_safari', false ) ? 1 : 0, 339 // Plyr's own icons, served from here rather than from cdn.plyr.io. 340 'icon_url' => SM_URL . 'assets/vendor/svg/plyr.svg', 339 341 ); 340 342 wp_add_inline_script( -
mattytap-sermons/trunk/views/wpfc-podcast-feed.php
r3724191 r3785848 281 281 <itunes:email><?php echo esc_html( $owner_email ); ?></itunes:email> 282 282 </itunes:owner> 283 <itunes:explicit> no</itunes:explicit>283 <itunes:explicit>false</itunes:explicit> 284 284 <?php if ( $cover_image_url ) : ?> 285 285 <itunes:image href="<?php echo esc_url( $cover_image_url ); ?>"/> … … 344 344 $audio = preg_replace( '/^https:/i', 'http:', $audio ); 345 345 } 346 347 // Name the file's real type, from the types Apple Podcasts accepts; MP3 when it can't be told. 348 $audio_types = array( 349 'm4a' => 'audio/x-m4a', 350 'mp4' => 'video/mp4', 351 'm4v' => 'video/x-m4v', 352 'mov' => 'video/quicktime', 353 ); 354 $audio_ext = strtolower( pathinfo( (string) wp_parse_url( $audio, PHP_URL_PATH ), PATHINFO_EXTENSION ) ); 355 $audio_type = isset( $audio_types[ $audio_ext ] ) ? $audio_types[ $audio_ext ] : 'audio/mpeg'; 346 356 ?> 347 357 … … 376 386 <enclosure url="<?php echo esc_url( $audio ); ?>" 377 387 length="<?php echo esc_attr( $audio_file_size ); ?>" 378 type=" audio/mpeg"/>388 type="<?php echo esc_attr( $audio_type ); ?>"/> 379 389 <?php endif; ?> 380 390
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)