10% seo-rets

Code Review | SEO RETS

WordPress plugin SEO RETS scored10%from 54 tests.

About plugin

  • Plugin page: seo-rets
  • Plugin version: 3.3.73
  • PHP version: 7.4.16
  • WordPress compatibility: 3.0.1-4.6
  • WordPress version: 6.3.1
  • First release: Jul 24, 2015
  • Latest release: Jul 28, 2017
  • Number of updates: 124
  • Update frequency: every 6.0 days
  • Top authors: seorets (100%)

Code review

54 tests

User reviews

1 review

Install metrics

10+ active /3,284 total downloads

Benchmarks

Plugin footprint 23% from 16 tests

Installer 0% from 1 test

🔺 Critical test (weight: 50) | Checking the installer triggered no errors
It is recommended to fix the following installer errors
  • The plugin cannot be installed
    • > Deprecated in wp-content/plugins/seo-rets/seo-rets.php+3876
    Methods with the same name as their class will not be constructors in a future version of PHP; filter_by_range has a deprecated constructor

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

A check of server-side resources used by SEO RETS
Server-side resource usage in normal parameters
PageMemory (MB)CPU Time (ms)
Home /3.47 ▲0.0136.70 ▼1.96
Dashboard /wp-admin3.31 ▼0.0345.17 ▼16.01
Posts /wp-admin/edit.php3.36 ▲0.0143.98 ▼2.29
Add New Post /wp-admin/post-new.php5.89 ▲0.0181.80 ▼19.16
Media Library /wp-admin/upload.php3.23 ▲0.0140.14 ▲3.21

Server storage [IO: ▲4.41MB] [DB: ▲0.01MB] Passed 3 tests

Analyzing filesystem and database footprints of this plugin
The plugin installed successfully
Filesystem: 243 new files
Database: 7 new tables, 18 new options
New tables
wp_sr_favorites
wp_sr_other
wp_sr_user_note
wp_sr_savesearch
wp_sr_stat_mls
wp_sr_users
wp_sr_stat_option
New WordPress options
sr_listingsOrder
widget_recent-comments
sr_template
sr_use_custom_pagi
sr_open_in_new_window
bootstrap_refine
srRewDB
db_upgraded
sr_fq
sr_crm
...

Browser metrics Passed 4 tests

SEO RETS: an overview of browser usage
This plugin renders optimally with no browser resource issues detected
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,789 ▲4314.35 ▼0.211.54 ▼0.2245.43 ▲0.55
Dashboard /wp-admin2,195 ▲185.54 ▼0.0383.97 ▼1.7537.01 ▲0.80
Posts /wp-admin/edit.php2,097 ▼61.99 ▲0.0135.52 ▼7.8031.49 ▼8.19
Add New Post /wp-admin/post-new.php1,535 ▼018.04 ▼0.10592.24 ▼34.7669.62 ▲1.33
Media Library /wp-admin/upload.php1,397 ▼34.21 ▼0.03108.24 ▲9.1246.93 ▲4.82

Uninstaller [IO: ▲0.00MB] [DB: ▲0.09MB] 25% from 4 tests

🔸 Tests weight: 35 | The uninstall procedure must remove all plugin files and extra database tables
The following items require your attention
  • This plugin did not uninstall without warnings or errors
    • > Deprecated in wp-content/plugins/seo-rets/seo-rets.php+3876
    Methods with the same name as their class will not be constructors in a future version of PHP; filter_by_range has a deprecated constructor
  • Zombie tables were found after uninstall: 7 tables
    • wp_sr_favorites
    • wp_sr_other
    • wp_sr_user_note
    • wp_sr_stat_option
    • wp_sr_stat_mls
    • wp_sr_users
    • wp_sr_savesearch
  • This plugin did not uninstall successfully, leaving 22 options in the database
    • widget_theysaidso_widget
    • widget_seo-rets-search-widget
    • sr_templates
    • sr_listingsOrder
    • widget_recent-comments
    • bootstrap_refine
    • can_compress_scripts
    • theysaidso_admin_options
    • sr_use_custom_pagi
    • widget_recent-posts
    • ...

Smoke tests 50% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | This is a shallow check for server-side errors
The smoke test was a success, however most plugin functionality was not tested

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
Please fix the following
  • 16× PHP files output non-empty strings when accessed directly via GET requests (only 10 are shown):
    • > /wp-content/plugins/seo-rets/shortcodes/sr-mapsearch.php
    • > /wp-content/plugins/seo-rets/methods/includes/verify/fail.php
    • > /wp-content/plugins/seo-rets/resources/defaults/template-responsive-css-js3.php
    • > /wp-content/plugins/seo-rets/menu/elite.php
    • > /wp-content/plugins/seo-rets/methods/includes/reset/form.php
    • > /wp-content/plugins/seo-rets/menu/feed-information.php
    • > /wp-content/plugins/seo-rets/methods/compare.php
    • > /wp-content/plugins/seo-rets/templates/refinementform.php
    • > /wp-content/plugins/seo-rets/includes/secureimage/securimage_show.php
    • > /wp-content/plugins/seo-rets/methods/includes/forgot/success.php
  • 180× PHP files trigger errors when accessed directly with GET requests (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Using $this when not in object context in wp-content/plugins/seo-rets/methods/redirect.php:10
    • > PHP Fatal error
      Uncaught Error: Call to undefined function bloginfo() in wp-content/plugins/seo-rets/menu/shortcode-generator.php:231
    • > PHP Parse error
      syntax error, unexpected '}', expecting end of file in wp-content/plugins/seo-rets/templates/list.php on line 224
    • > PHP Notice
      Undefined variable: seo_rets_plugin in wp-content/plugins/seo-rets/menu/shortcode-generator.php on line 2
    • > PHP Fatal error
      Uncaught Error: Using $this when not in object context in wp-content/plugins/seo-rets/methods/customsearch.php:2
    • > PHP Fatal error
      Uncaught Error: Call to undefined function do_action() in wp-content/plugins/seo-rets/templates/results_a.php:3
    • > PHP Fatal error
      Uncaught Error: Class 'WP_Widget' not found in wp-content/plugins/seo-rets/widgets/search.php:4
    • > PHP Notice
      Trying to get property 'admin_title' of non-object in wp-content/plugins/seo-rets/menu/elite.php on line 3
    • > PHP Warning
      count(): Parameter must be an array or an object that implements Countable in wp-content/plugins/seo-rets/methods/includes/reset/form.php on line 1
    • > PHP Fatal error
      Uncaught Error: Call to undefined function wp_enqueue_script() in wp-content/plugins/seo-rets/resources/defaults/template-responsive-details3.php:6

User-side errors Passed 1 test

🔹 Test weight: 20 | Just a short smoke test targeting errors on the browser (console and network errors and warnings)
There were no browser issues found

Optimizations

Plugin configuration 90% from 29 tests

readme.txt 81% from 16 tests

It's important to format your readme.txt file correctly as it is parsed for the public listing of your plugin
These attributes need to be fixed:
  • Donate link: Invalid URI ("")
  • Screenshots: These screenshots have no corresponding images in /assets: #1 (Main plugin page), #2 (Developer Tools page), #3 (Feed Information)
  • Plugin Name: Please specify the plugin name on the first line ( === seo-rets === )
The official readme.txt is a good inspiration

seo-rets/seo-rets.php Passed 13 tests

The main PHP script in "SEO RETS" version 3.3.73 is automatically included on every request by WordPress
66 characters long description:
Convert your RETS/IDX feed into an SEO friendly real estate portal

Code Analysis Passed 3 tests

File types Passed 1 test

🔸 Test weight: 35 | A short check of programming languages and file extensions; no executable files are allowed
No dangerous file extensions were detected50,299 lines of code in 167 files:
LanguageFilesBlank linesComment linesLines of code
PHP1063,8362,64326,086
CSS312,88811220,751
JavaScript236902592,507
SVG200928
HTML47126
INI1001

PHP code Passed 2 tests

A brief analysis of cyclomatic complexity and code structure for this plugin
There were no cyclomatic complexity issued detected
Cyclomatic complexity
Average complexity per logical line of code0.47
Average class complexity73.57
▷ Minimum class complexity1.00
▷ Maximum class complexity293.00
Average method complexity5.01
▷ Minimum method complexity1.00
▷ Maximum method complexity54.00
Code structure
Namespaces0
Interfaces0
Traits0
Classes14
▷ Abstract classes00.00%
▷ Concrete classes14100.00%
▷ Final classes00.00%
Methods251
▷ Static methods239.16%
▷ Public methods19276.49%
▷ Protected methods4718.73%
▷ Private methods124.78%
Functions23
▷ Named functions2295.65%
▷ Anonymous functions14.35%
Constants52
▷ Global constants1223.08%
▷ Class constants4076.92%
▷ Public constants40100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

It is recommended to compress PNG files in your plugin to minimize bandwidth usage
31 PNG files occupy 0.16MB with 0.08MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
tinymce/featured/img/insert.png2.04KB1.05KB▼ 48.42%
resources/images/close.png1.49KB1.06KB▼ 29.12%
resources/images/marker.png3.49KB0.92KB▼ 73.66%
includes/secureimage/images/refresh.png4.72KB2.44KB▼ 48.36%
tinymce/maps/img/maps.png2.16KB1.28KB▼ 40.69%