10% postmatic

Code Review | Replyable - Subscribe to Comments and Reply by Email

WordPress plugin Replyable - Subscribe to Comments and Reply by Email scored 10% from 54 tests.

About plugin

  • Plugin page: postmatic
  • Plugin version: 2.2.9
  • PHP version: 7.4.16
  • WordPress compatibility: 4.4-5.9.1
  • WordPress version: 5.8.1
  • First release: Oct 13, 2014
  • Latest release: Mar 9, 2022
  • Number of updates: 174
  • Update frequency: every 15.5 days
  • Top authors: vernal (94.25%)cyberhobo (5.17%)Shelob9 (1.72%)

Code review

54 tests

User reviews

68 reviews

Install metrics

800+ active / 84,905 total downloads

Benchmarks

Plugin footprint 75% from 16 tests

Installer 0% from 1 test

🔺 Critical test (weight: 50) | Checking the installer triggered no errors
These installer errors require your attention
  • The plugin did not install without errors
    • > Warning in wp-content/plugins/postmatic/vendor/composer/autoload_real.php+70
    require(wp-content/plugins/postmatic/vendor/composer/../symfony/polyfill-ctype/bootstrap.php): failed to open stream: No such file or directory

Server metrics [RAM: ▼0.00MB] [CPU: ▼147.12ms] Passed 4 tests

A check of server-side resources used by Replyable - Subscribe to Comments and Reply by Email
This plugin does not affect your website's performance
PageMemory (MB)CPU Time (ms)
Home /2.84 ▲0.0023.65 ▲1.77
Dashboard /wp-admin3.06 ▼0.0030.88 ▼6.15
Posts /wp-admin/edit.php3.11 ▲0.0029.40 ▼1.12
Add New Post /wp-admin/post-new.php5.42 ▼0.0267.69 ▼582.35
Media Library /wp-admin/upload.php3.00 ▲0.0022.47 ▲1.16

Server storage [IO: ▲10.59MB] [DB: ▲0.00MB] Passed 3 tests

How much does this plugin use your filesystem and database?
There were no storage issued detected upon installing this plugin
Filesystem: 550 new files
Database: no new tables, no new options

Browser metrics Passed 4 tests

An overview of browser requirements for Replyable - Subscribe to Comments and Reply by Email
Minimal impact on browser resources
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /3,666 ▲6515.98 ▲0.294.99 ▼0.0876.13 ▼0.70
Dashboard /wp-admin2,929 ▲336.01 ▼0.19113.70 ▼20.80166.11 ▼6.80
Posts /wp-admin/edit.php2,743 ▲33.24 ▲0.0265.12 ▲1.81129.21 ▼9.38
Add New Post /wp-admin/post-new.php3,735 ▼7318.19 ▼0.01409.66 ▼27.68157.54 ▼20.19
Media Library /wp-admin/upload.php1,752 ▲35.54 ▲0.02147.14 ▲4.43188.14 ▲3.00

Uninstaller [IO: ▲0.00MB] [DB: ▲0.00MB] Passed 4 tests

🔸 Tests weight: 35 | Checking the uninstaller removed all traces of the plugin
The plugin uninstalled successfully, without leaving any zombie files or tables

Smoke tests 50% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | A shallow check that no server-side errors were triggered
Good news, no errors were detected

SRP 0% from 2 tests

🔹 Tests weight: 20 | SRP (Single-Responsibility Principle) - PHP files must act as libraries and never output text or perform any action when accessed directly in a browser
Please fix the following items
  • 5× PHP files output non-empty strings when accessed directly via GET requests:
    • > /wp-content/plugins/postmatic/templates/text/text-email-wrapper.php
    • > /wp-content/plugins/postmatic/templates/html/test-email.php
    • > /wp-content/plugins/postmatic/templates/html/email-options-tab-footer.php
    • > /wp-content/plugins/postmatic/vendor/vernal-creative/html-to-markdown/demo/index.php
    • > /wp-content/plugins/postmatic/templates/html-inlined/test-email.php
  • 141× PHP files trigger server errors when accessed directly (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Call to undefined function get_the_post_thumbnail() in wp-content/plugins/postmatic/vendor/postmatic/commentium/templates/comment-digest-email.php:16
    • > PHP Fatal error
      Uncaught Error: Call to a member function subscription_description() on null in wp-content/plugins/postmatic/templates/html-inlined/subscribed-email.php:11
    • > PHP Notice
      Undefined variable: is_trial_underway in wp-content/plugins/postmatic/templates/html/core-options-promo.php on line 29
    • > PHP Fatal error
      Uncaught Error: Interface 'Handlebars\\Cache' not found in wp-content/plugins/postmatic/vendor/salesforce/handlebars-php/src/Handlebars/Cache/APC.php:17
    • > PHP Notice
      Undefined variable: is_trial_underway in wp-content/plugins/postmatic/templates/html/core-options-promo.php on line 49
    • > PHP Fatal error
      Uncaught Error: Class 'Prompt_Text_Template' not found in wp-content/plugins/postmatic/vendor/postmatic/commentium/source/Templates/Text.php:10
    • > PHP Notice
      Undefined variable: is_paying in wp-content/plugins/postmatic/templates/html/core-options-promo.php on line 29
    • > PHP Notice
      Undefined variable: brand_text in wp-content/plugins/postmatic/templates/text/text-email-wrapper.php on line 14
    • > PHP Fatal error
      Uncaught Error: Interface 'Postmatic\\Commentium\\Repositories\\Comment_IQ' not found in wp-content/plugins/postmatic/vendor/postmatic/commentium/source/Repositories/Comment_IQ_API.php:15
    • > PHP Fatal error
      Uncaught Error: Class 'Prompt_Option_Subscribable_Object' not found in wp-content/plugins/postmatic/core/site-comments.php:9

User-side errors Passed 1 test

🔹 Test weight: 20 | This is a smoke test targeting browser errors/issues
Everything seems fine on the user side

Optimizations

Plugin configuration 93% from 29 tests

readme.txt 94% from 16 tests

The readme.txt file describes your plugin functionality and requirements and it is parsed to prepare the your plugin's listing
These attributes need to be fixed:
  • Tags: There are too many tags (12 tag instead of maximum 10)
The official readme.txt might help

postmatic/postmatic.php 92% from 13 tests

The main PHP file in "Replyable - Subscribe to Comments and Reply by Email" ver. 2.2.9 adds more information about the plugin and also serves as the entry point for this plugin
The following require your attention:
  • Text Domain: The text domain name should consist of only dashes and lowercase characters

Code Analysis 97% from 3 tests

File types Passed 1 test

🔸 Test weight: 35 | This is a short overview of programming languages used in this plugin, detecting executable files
Everything looks great! No dangerous files found in this plugin83,280 lines of code in 424 files:
LanguageFilesBlank linesComment linesLines of code
PHP31511,60925,14548,073
PO File1810,58812,88826,046
Sass34465802,862
JSON10102,815
CSS17313121,546
Markdown1139701,014
JavaScript11167120860
YAML63044
XML12013
Bourne Shell1317

PHP code 50% from 2 tests

Analyzing logical lines of code, cyclomatic complexity, and other code metrics
The following items need your attention
  • Please reduce cyclomatic complexity of classes to less than 1000 (currently 2,911)
Cyclomatic complexity
Average complexity per logical line of code0.51
Average class complexity26.24
▷ Minimum class complexity1.00
▷ Maximum class complexity2,911.00
Average method complexity3.50
▷ Minimum method complexity1.00
▷ Maximum method complexity86.00
Code structure
Namespaces16
Interfaces13
Traits0
Classes202
▷ Abstract classes104.95%
▷ Concrete classes19295.05%
▷ Final classes00.00%
Methods2,263
▷ Static methods41418.29%
▷ Public methods1,62471.76%
▷ Protected methods26811.84%
▷ Private methods37116.39%
Functions110
▷ Named functions10797.27%
▷ Anonymous functions32.73%
Constants211
▷ Global constants9946.92%
▷ Class constants11253.08%
▷ Public constants112100.00%

Plugin size 50% from 2 tests

Image compression 50% from 2 tests

All PNG images should be compressed to minimize bandwidth usage for end users
46 PNG files occupy 2.71MB with 1.48MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
media/icons/p.png0.96KB0.55KB▼ 43.08%
vendor/freemius/wordpress-sdk/assets/img/theme-icon.png10.97KB5.78KB▼ 47.37%
media/analytics_full.png883.34KB256.92KB▼ 70.91%
media/background.png38.02KB20.66KB▼ 45.66%
media/replyable.png31.42KB11.01KB▼ 64.94%