73% seriously-simple-podcasting

Code Review | Seriously Simple Podcasting

WordPress plugin Seriously Simple Podcasting scored73%from 54 tests.

About plugin

  • Plugin page: seriously-simple-...
  • Plugin version: 2.25.3
  • PHP compatiblity: 7.4+
  • PHP version: 7.4.16
  • WordPress compatibility: 5.3-6.4
  • WordPress version: 6.3.1
  • First release: Dec 13, 2012
  • Latest release: Dec 1, 2023
  • Number of updates: 428
  • Update frequency: every 9.4 days
  • Top authors: psykro (42.76%)hlashbrooke (32.01%)zahardoc (25.7%)

Code review

54 tests

User reviews

290 reviews

Install metrics

30,000+ active /1,683,392 total downloads

Benchmarks

Plugin footprint 83% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | Verifying that this plugin installs correctly without errors
This plugin's installer ran successfully

Server metrics [RAM: ▲3.53MB] [CPU: ▲23.66ms] Passed 4 tests

Server-side resources used by Seriously Simple Podcasting
This plugin has minimal impact on server resources
PageMemory (MB)CPU Time (ms)
Home /6.69 ▲3.2364.37 ▲22.38
Dashboard /wp-admin6.94 ▲3.6079.67 ▲17.91
Posts /wp-admin/edit.php7.05 ▲3.6972.58 ▲22.70
Add New Post /wp-admin/post-new.php9.84 ▲3.95130.27 ▲44.06
Media Library /wp-admin/upload.php6.85 ▲3.6265.33 ▲31.64
Add New Episode /wp-admin/post-new.php?post_type=podcast9.99138.29
All Episodes /wp-admin/edit.php?post_type=podcast6.9374.53
All Podcasts /wp-admin/edit-tags.php?taxonomy=series&post_type=podcast6.9763.35
Extensions /wp-admin/edit.php?post_type=podcastpodcast&page=podcast_settings&tab=extensions6.6151.96
Onboarding wizzard /wp-admin/admin.php?page=ssp-onboarding-26.8757.25
Onboarding wizzard /wp-admin/admin.php?page=ssp-onboarding-37.1667.15
Tags /wp-admin/edit-tags.php?taxonomy=post_tag&post_type=podcast6.9759.85
Onboarding wizzard /wp-admin/admin.php?page=ssp-onboarding-16.8762.01
Options /wp-admin/edit.php?post_type=podcast&page=podcast_options6.8459.63
Settings /wp-admin/edit.php?post_type=podcast&page=podcast_settings6.8962.04

Server storage [IO: ▲3.56MB] [DB: ▲0.15MB] Passed 3 tests

Input-output and database impact of this plugin
No storage issues were detected
Filesystem: 423 new files
Database: no new tables, 17 new options
New WordPress options
ssp_categories_update_dismissed
ss_podcasting_second_line_themes_edit-podcast
ss_podcasting_distribution_upgrade_disabled
ssp_version
ss_podcasting_episode_description
ss_podcasting_review_status
widget_podcast-series
db_upgraded
theysaidso_admin_options
widget_podcast-playlist
...

Browser metrics Passed 4 tests

A check of browser resources used by Seriously Simple Podcasting
This plugin has a minimal impact on browser resources
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,948 ▲17614.26 ▼0.491.90 ▼0.3346.68 ▼2.09
Dashboard /wp-admin2,324 ▲1495.82 ▲0.09100.08 ▼10.3144.99 ▲6.16
Posts /wp-admin/edit.php2,166 ▲662.26 ▲0.2538.80 ▼1.0032.65 ▼5.22
Add New Post /wp-admin/post-new.php6,227 ▲4,68925.15 ▲1.77930.33 ▲277.5087.85 ▲17.92
Media Library /wp-admin/upload.php1,467 ▲644.40 ▲0.2496.78 ▲0.8942.30 ▲0.90
Add New Episode /wp-admin/post-new.php?post_type=podcast6,48325.95920.6794.63
All Episodes /wp-admin/edit.php?post_type=podcast1,2082.6047.1131.43
All Podcasts /wp-admin/edit-tags.php?taxonomy=series&post_type=podcast1,3602.0834.3538.11
Extensions /wp-admin/edit.php?post_type=podcastpodcast&page=podcast_settings&tab=extensions280.410.083.75
Onboarding wizzard /wp-admin/admin.php?page=ssp-onboarding-21,1143.7750.44106.36
Onboarding wizzard /wp-admin/admin.php?page=ssp-onboarding-31,7643.7450.2387.60
Tags /wp-admin/edit-tags.php?taxonomy=post_tag&post_type=podcast1,3882.0236.4531.70
Onboarding wizzard /wp-admin/admin.php?page=ssp-onboarding-11,0823.7045.1676.00
Options /wp-admin/edit.php?post_type=podcast&page=podcast_options1,1572.2635.8730.66
Settings /wp-admin/edit.php?post_type=podcast&page=podcast_settings1,2463.5444.1271.20

Uninstaller [IO: ▲0.00MB] [DB: ▲0.15MB] 75% from 4 tests

🔸 Tests weight: 35 | Verifying that this plugin uninstalls completely without leaving any traces
These items require your attention
  • Zombie WordPress options were found after uninstall: 17 options
    • ss_podcasting_subscribe_options
    • ssp_categories_update_dismissed
    • widget_single-podcast-episode
    • widget_podcast-playlist
    • ss_podcasting_episode_description
    • widget_recent-podcast-episodes
    • widget_theysaidso_widget
    • widget_podcast-series
    • ss_podcasting_second_line_themes_edit-podcast
    • ss_podcasting_distribution_upgrade_disabled
    • ...

Smoke tests 25% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | This is a short smoke test looking for server-side errors
Even though no errors were found, this is by no means an exhaustive test

SRP 0% from 2 tests

🔹 Tests weight: 20 | The single-responsibility principle: PHP files have to remain inert when accessed directly, throwing no errors and performing no actions
The following issues need your attention
  • 2× PHP files perform the action of outputting non-empty strings when accessed directly:
    • > /wp-content/plugins/seriously-simple-podcasting/templates/settings-sidebar.php
    • > /wp-content/plugins/seriously-simple-podcasting/templates/settings/integrations-subtabs.php
  • 104× GET requests to PHP files have triggered server-side errors or warnings (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Call to undefined function admin_url() in wp-content/plugins/seriously-simple-podcasting/templates/onboarding/steps-footer.php:2
    • > PHP Fatal error
      Uncaught Error: Interface 'SeriouslySimplePodcasting\\Interfaces\\Service' not found in wp-content/plugins/seriously-simple-podcasting/php/classes/handlers/class-feed-handler.php:16
    • > PHP Notice
      Undefined variable: data in wp-content/plugins/seriously-simple-podcasting/templates/metafields/datepicker.php on line 10
    • > PHP Notice
      Undefined variable: audio_player in wp-content/plugins/seriously-simple-podcasting/templates/players/media-player.php on line 1
    • > PHP Fatal error
      Uncaught Error: Call to undefined function __() in wp-content/plugins/seriously-simple-podcasting/php/config/settings/security.php:7
    • > PHP Notice
      Undefined variable: player_mode in wp-content/plugins/seriously-simple-podcasting/templates/players/castos-player.php on line 26
    • > PHP Fatal error
      Uncaught Error: Call to undefined function esc_attr() in wp-content/plugins/seriously-simple-podcasting/templates/metafields/textarea.php:10
    • > PHP Notice
      Undefined variable: episodes_query in wp-content/plugins/seriously-simple-podcasting/templates/blocks/podcast-list.php on line 28
    • > PHP Fatal error
      Uncaught Error: Class 'SeriouslySimplePodcasting\\Entities\\Abstract_Entity' not found in wp-content/plugins/seriously-simple-podcasting/php/classes/entities/class-sync-status.php:15
    • > PHP Fatal error
      Uncaught Error: Interface 'SeriouslySimplePodcasting\\Interfaces\\Service' not found in wp-content/plugins/seriously-simple-podcasting/php/classes/handlers/class-settings-handler.php:12

User-side errors 0% from 1 test

🔹 Test weight: 20 | This is just a short smoke test looking for browser issues
There are user-side issues you should fix
    • > GET request to /wp-admin/edit.php?post_type=podcastpodcast&page=podcast_settings&tab=extensions
    • > Network (severe)
    wp-admin/edit.php?post_type=podcastpodcast&page=podcast_settings&tab=extensions - Failed to load resource: the server responded with a status of 403 (Forbidden)

Optimizations

Plugin configuration 97% from 29 tests

readme.txt 94% from 16 tests

The readme.txt file uses markdown syntax to describe your plugin to the world
Please fix the following attributes:
  • Tags: Please delete some tags, you are using 14 tag instead of maximum 10
You can look at the official readme.txt

seriously-simple-podcasting/seriously-simple-podcasting.php Passed 13 tests

The main PHP script in "Seriously Simple Podcasting" version 2.25.3 is automatically included on every request by WordPress
104 characters long description:
Podcasting the way it's meant to be. No mess, no fuss - just you and your content taking over the world.

Code Analysis Passed 3 tests

File types Passed 1 test

🔸 Test weight: 35 | There should be no dangerous file extensions present in any WordPress plugin
There were no executable files found in this plugin29,857 lines of code in 300 files:
LanguageFilesBlank linesComment linesLines of code
PHP1414,6537,26617,366
JavaScript191,4384905,892
CSS272761274,581
Sass621891,325
SVG10208521
XSLT100164
JSON4008

PHP code Passed 2 tests

Analyzing cyclomatic complexity and code structure
Great job! No cyclomatic complexity issues were detected in this plugin
Cyclomatic complexity
Average complexity per logical line of code0.37
Average class complexity24.70
▷ Minimum class complexity1.00
▷ Maximum class complexity155.00
Average method complexity3.15
▷ Minimum method complexity1.00
▷ Maximum method complexity38.00
Code structure
Namespaces22
Interfaces2
Traits4
Classes75
▷ Abstract classes56.67%
▷ Concrete classes7093.33%
▷ Final classes11.43%
Methods892
▷ Static methods283.14%
▷ Public methods61769.17%
▷ Protected methods27030.27%
▷ Private methods50.56%
Functions105
▷ Named functions6460.95%
▷ Anonymous functions4139.05%
Constants84
▷ Global constants78.33%
▷ Class constants7791.67%
▷ Public constants77100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

Often times overlooked, PNG files can occupy unnecessary space in your plugin
83 PNG files occupy 0.48MB with 0.19MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
assets/icons/subscribe/radio-com.png1.72KB1.53KB▼ 11.04%
assets/icons/subscribe/mixcloud.png4.98KB1.57KB▼ 68.42%
assets/icons/subscribe/acast.png3.05KB2.55KB▼ 16.57%
assets/icons/subscribe/pandora.png3.87KB2.11KB▼ 45.33%
assets/css/images/ui-bg_glass_65_ffffff_1x400.png0.20KB0.09KB▼ 57.49%