56% estatik

Code Review | Estatik Real Estate Plugin

WordPress plugin Estatik Real Estate Plugin scored56%from 54 tests.

About plugin

  • Plugin page: estatik
  • Plugin version: 4.1.0
  • PHP compatiblity: 5.6+
  • PHP version: 7.4.16
  • WordPress compatibility: 5.4-6.2
  • WordPress version: 6.3.1
  • First release: Mar 24, 2015
  • Latest release: Sep 18, 2023
  • Number of updates: 271
  • Update frequency: every 11.4 days
  • Top authors: Estatik (100%)

Code review

54 tests

User reviews

160 reviews

Install metrics

7,000+ active /230,055 total downloads

Benchmarks

Plugin footprint 65% 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: ▲1.13MB] [CPU: ▲119.16ms] 75% from 4 tests

Server-side resources used by Estatik Real Estate Plugin
It is recommended to improve the following
  • CPU: Total CPU usage must kept under 500.00ms (currently 817.89ms on /wp-admin/admin.php?page=es_dashboard)
PageMemory (MB)CPU Time (ms)
Home /8.40 ▲4.941,005.47 ▲961.51
Dashboard /wp-admin4.44 ▲1.13533.56 ▲480.50
Posts /wp-admin/edit.php4.50 ▲1.1454.38 ▲1.29
Add New Post /wp-admin/post-new.php7.03 ▲1.1492.54 ▼10.64
Media Library /wp-admin/upload.php4.34 ▲1.1139.33 ▲5.48
Data manager /wp-admin/admin.php?page=es_data_manager4.5470.93
Add new property /wp-admin/post-new.php?post_type=properties4.6482.46
Demo content /wp-admin/admin.php?page=es_demo4.2940.77
Fields Builder /wp-admin/admin.php?page=es_fields_builder4.4185.06
My listings /wp-admin/edit.php?post_type=properties4.5252.07
Settings /wp-admin/admin.php?page=es_settings6.44569.43
Dashboard /wp-admin/admin.php?page=es_dashboard4.49817.89

Server storage [IO: ▲8.32MB] [DB: ▲0.46MB] Passed 3 tests

Filesystem and database footprint
The plugin installed successfully
Filesystem: 559 new files
Database: 2 new tables, 15 new options
New tables
wp_estatik_fb_sections
wp_estatik_fb_fields
New WordPress options
widget_recent-comments
widget_es-request-form
es_flush_executed
es_options
es_migrations
widget_es-slider
widget_es-search-form
estatik-banners
can_compress_scripts
es_google_fonts
...

Browser metrics Passed 4 tests

A check of browser resources used by Estatik Real Estate Plugin
Minimal impact on browser resources
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /3,071 ▲31014.83 ▲0.5822.10 ▲20.2239.22 ▼5.39
Dashboard /wp-admin2,307 ▲1335.25 ▼0.3088.44 ▼1.3279.27 ▲41.00
Posts /wp-admin/edit.php2,215 ▲1122.49 ▲0.4947.65 ▲6.6631.81 ▼4.49
Add New Post /wp-admin/post-new.php1,628 ▲9123.58 ▲5.28680.43 ▲30.6037.91 ▼30.95
Media Library /wp-admin/upload.php1,728 ▲3345.29 ▲0.99118.79 ▲20.1587.32 ▲41.83
Data manager /wp-admin/admin.php?page=es_data_manager5,6592.9557.14184.04
Add new property /wp-admin/post-new.php?post_type=properties5,04110.26299.05241.71
Demo content /wp-admin/admin.php?page=es_demo1,5222.4931.7584.52
Fields Builder /wp-admin/admin.php?page=es_fields_builder2,4663.6184.7045.06
My listings /wp-admin/edit.php?post_type=properties2,2054.8182.6672.94
Settings /wp-admin/admin.php?page=es_settings18,5696.26223.86156.46
Dashboard /wp-admin/admin.php?page=es_dashboard3,6881.9535.03103.34

Uninstaller [IO: ▲0.59MB] [DB: ▲0.46MB] 50% from 4 tests

🔸 Tests weight: 35 | Checking the uninstaller removed all traces of the plugin
The following items require your attention
  • This plugin does not fully uninstall, leaving 2 tables in the database
    • wp_estatik_fb_fields
    • wp_estatik_fb_sections
  • Zombie WordPress options were found after uninstall: 15 options
    • widget_es-search-form
    • widget_recent-posts
    • estatik-banners
    • theysaidso_admin_options
    • widget_es-request-form
    • widget_recent-comments
    • widget_theysaidso_widget
    • db_upgraded
    • can_compress_scripts
    • widget_es-slider
    • ...

Smoke tests 0% from 4 tests

Server-side errors 0% from 1 test

🔹 Test weight: 20 | This is a shallow check for server-side errors
These server-side errors were triggered
    • > GET request to /wp-admin/admin.php?page=es_fields_builder
    • > Notice in wp-content/plugins/estatik/includes/helper-functions.php+371
    Undefined index: label
    • > GET request to /wp-admin/admin.php?page=es_fields_builder
    • > Notice in wp-content/plugins/estatik/includes/helper-functions.php+371
    Undefined index: frontend_form_name
    • > GET request to /wp-admin/admin.php?page=es_fields_builder
    • > Notice in wp-content/plugins/estatik/includes/helper-functions.php+371
    Undefined index: tab_machine_name
    • > GET request to /wp-admin/admin.php?page=es_fields_builder
    • > Notice in wp-content/plugins/estatik/includes/helper-functions.php+371
    Undefined index: mandatory
    • > GET request to /wp-admin/admin.php?page=es_fields_builder
    • > Notice in wp-content/plugins/estatik/includes/helper-functions.php+371
    Undefined index: type
    • > GET request to /wp-admin/admin.php?page=es_fields_builder
    • > Notice in wp-content/plugins/estatik/includes/helper-functions.php+371
    Undefined index: is_full_width
    • > GET request to /wp-admin/admin.php?page=es_fields_builder
    • > Notice in wp-content/plugins/estatik/includes/helper-functions.php+371
    Undefined index: search_support
    • > GET request to /wp-admin/admin.php?page=es_fields_builder
    • > Notice in wp-content/plugins/estatik/includes/helper-functions.php+371
    Undefined index: compare_support
    • > GET request to /wp-admin/admin.php?page=es_fields_builder
    • > Notice in wp-content/plugins/estatik/includes/helper-functions.php+371
    Undefined index: mls_import_support

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
  • 1× GET requests to PHP files return non-empty strings:
    • > /wp-content/plugins/estatik/templates/front/property/partials/properties-navbar.php
  • 230× PHP files trigger errors when accessed directly with GET requests (only 10 are shown):
    • > PHP Notice
      Undefined variable: attributes in wp-content/plugins/estatik/templates/front/shortcodes/request/request-form-section.php on line 8
    • > PHP Fatal error
      Uncaught Error: Class 'Es_Framework_Base_Field' not found in wp-content/plugins/estatik/includes/classes/framework/fields/class-textarea-field.php:6
    • > PHP Fatal error
      Uncaught Error: Class 'Es_Framework_Base_Field' not found in wp-content/plugins/estatik/includes/classes/framework/fields/class-repeater-field.php:6
    • > PHP Notice
      Undefined variable: args in wp-content/plugins/estatik/templates/front/shortcodes/authentication/buyer-register-buttons.php on line 2
    • > PHP Notice
      Undefined variable: args in wp-content/plugins/estatik/templates/front/shortcodes/authentication/login-buttons.php on line 2
    • > PHP Fatal error
      Uncaught Error: Class 'Es_Authentication' not found in wp-content/plugins/estatik/includes/classes/auth/class-facebook-authentication.php:6
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_filter() in wp-content/plugins/estatik/includes/hooks.php:17
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_action() in wp-content/plugins/estatik/includes/classes/class-assets-init.php:14
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_action() in wp-content/plugins/estatik/includes/classes/pages/admin/class-fields-builder-page.php:14
    • > PHP Fatal error
      Uncaught Error: Class 'Es_My_Listing_Shortcode' not found in wp-content/plugins/estatik/includes/classes/shortcodes/class-properties-slider-shortcode.php:6

User-side errors 0% from 1 test

🔹 Test weight: 20 | Just a short smoke test targeting errors on the browser (console and network errors and warnings)
Please take a look at the following user-side issues
    • > GET request to /wp-admin/admin.php?page=es_settings
    • > Rendering (warning) in unknown
    /wp-admin/admin.php?page=es_settings 490 The specified value "" does not conform to the required format. The format is "#rrggbb" where rr, gg, bb are two-digit hexadecimal numbers.

Optimizations

Plugin configuration 96% from 29 tests

readme.txt Passed 16 tests

It's important to format your readme.txt file correctly as it is parsed for the public listing of your plugin
8 plugin tags: listings, realtor, property, real estate, idx...

estatik/estatik.php 92% from 13 tests

The entry point to "Estatik Real Estate Plugin" version 4.1.0 is a PHP file that has certain tags in its header comment area
The following require your attention:
  • Text Domain: If you choose to specify the text domain, it must be the same as the plugin slug; optional since WordPress version 4.6

Code Analysis Passed 3 tests

File types Passed 1 test

🔸 Test weight: 35 | A short glimpse at programming languages used with this plugin and a check that no dangerous files are present
Everything looks great! No dangerous files found in this plugin122,660 lines of code in 510 files:
LanguageFilesBlank linesComment linesLines of code
PO File1821,28828,61153,214
PHP2324,2416,22022,070
JSON20018,712
CSS319308510,910
Sass532,31349410,200
JavaScript419804504,257
SVG132102,809
HTML13100488

PHP code Passed 2 tests

A short review of cyclomatic complexity and code structure
There are no cyclomatic complexity problems detected for this plugin
Cyclomatic complexity
Average complexity per logical line of code0.42
Average class complexity11.22
▷ Minimum class complexity1.00
▷ Maximum class complexity71.00
Average method complexity3.03
▷ Minimum method complexity1.00
▷ Maximum method complexity40.00
Code structure
Namespaces0
Interfaces1
Traits0
Classes122
▷ Abstract classes1814.75%
▷ Concrete classes10485.25%
▷ Final classes00.00%
Methods639
▷ Static methods28244.13%
▷ Public methods61696.40%
▷ Protected methods233.60%
▷ Private methods00.00%
Functions348
▷ Named functions348100.00%
▷ Anonymous functions00.00%
Constants19
▷ Global constants947.37%
▷ Class constants1052.63%
▷ Public constants10100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

All PNG images should be compressed to minimize bandwidth usage for end users
3 compressed PNG files occupy 0.13MB
Potential savings
Compression of 3 random PNG files using pngquant
FileSize - originalSize - compressedSavings
admin/images/portal.png46.75KB50.08KB0.00%
admin/images/realtor.png41.73KB44.36KB0.00%
admin/images/native.png45.05KB48.16KB0.00%