61% totalpoll-lite

Code Review | Poll | Vote | Contest - Best Poll Plugin for WordPress

WordPress plugin Poll | Vote | Contest - Best Poll Plugin for WordPress scored61%from 54 tests.

About plugin

  • Plugin page: totalpoll-lite
  • Plugin version: 4.9.8
  • PHP compatiblity: 5.6+
  • PHP version: 7.4.16
  • WordPress compatibility: 4.8-6.3.1
  • WordPress version: 6.3.1
  • First release: Oct 7, 2014
  • Latest release: Oct 3, 2023
  • Number of updates: 88
  • Update frequency: every 37.3 days
  • Top authors: totalsuite (80.68%)wpstore (12.5%)misqtech (9.09%)

Code review

54 tests

User reviews

42 reviews

Install metrics

1,000+ active /67,851 total downloads

Benchmarks

Plugin footprint 65% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | Checking the installer triggered no errors
This plugin's installer ran successfully

Server metrics [RAM: ▲0.55MB] [CPU: ▲5.12ms] Passed 4 tests

This is a short check of server-side resources used by Poll | Vote | Contest - Best Poll Plugin for WordPress
No issues were detected with server-side resource usage
PageMemory (MB)CPU Time (ms)
Home /4.00 ▲0.5445.44 ▲8.23
Dashboard /wp-admin3.89 ▲0.5957.13 ▲8.63
Posts /wp-admin/edit.php3.94 ▲0.5955.95 ▲6.10
Add New Post /wp-admin/post-new.php6.43 ▲0.5499.74 ▼2.48
Media Library /wp-admin/upload.php3.74 ▲0.5248.90 ▲17.19
Presets /wp-admin/edit.php?post_type=poll&page=presets3.7342.08
Extensions /wp-admin/edit.php?post_type=poll&page=extensions3.7643.57
Onboarding /wp-admin/edit.php?post_type=poll&page=onboarding3.86192.68
Scheduled Actions /wp-admin/tools.php?page=action-scheduler3.9252.30
Dashboard /wp-admin/edit.php?post_type=poll&page=dashboard3.3321.64
Logs /wp-admin/edit.php?post_type=poll&page=log3.8244.18
Templates /wp-admin/edit.php?post_type=poll&page=templates3.7544.13
Create Poll /wp-admin/post-new.php?post_type=poll4.3774.78
Entries /wp-admin/edit.php?post_type=poll&page=entries3.7846.31
Insights /wp-admin/edit.php?post_type=poll&page=insights3.7443.28

Server storage [IO: ▲6.06MB] [DB: ▲0.01MB] 67% from 3 tests

Filesystem and database footprint
These are issues you should consider
  • Illegal file modification found: 2 files (0.00KB) outside of "wp-content/plugins/totalpoll-lite/" and "wp-content/uploads/"
    • (new file) wp-content/exports/totalpoll/index.html
    • (new file) wp-content/cache/totalpoll/css/.empty
Filesystem: 731 new files
Database: 7 new tables, 15 new options
New tables
wp_actionscheduler_claims
wp_totalpoll_votes
wp_totalpoll_log
wp_actionscheduler_logs
wp_actionscheduler_actions
wp_actionscheduler_groups
wp_totalpoll_entries
New WordPress options
widget_recent-comments
db_upgraded
schema-ActionScheduler_StoreSchema
widget_totalpoll_poll
can_compress_scripts
totalpoll_first_usage
totalpoll_tracking
totalpoll_db_version
widget_recent-posts
widget_theysaidso_widget
...

Browser metrics Passed 4 tests

Poll | Vote | Contest - Best Poll Plugin for WordPress: an overview of browser usage
This plugin renders optimally with no browser resource issues detected
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,874 ▲13913.16 ▼1.211.50 ▼0.1341.61 ▼3.87
Dashboard /wp-admin2,277 ▲895.85 ▲0.81105.96 ▲1.3238.50 ▼3.65
Posts /wp-admin/edit.php2,163 ▲742.02 ▼0.0339.96 ▼1.3736.86 ▲1.71
Add New Post /wp-admin/post-new.php1,589 ▲5323.47 ▲0.41663.90 ▲18.4151.02 ▲1.22
Media Library /wp-admin/upload.php1,453 ▲654.17 ▼0.0594.89 ▼6.9539.49 ▼2.86
Presets /wp-admin/edit.php?post_type=poll&page=presets1,3362.1629.4439.12
Extensions /wp-admin/edit.php?post_type=poll&page=extensions1,1483.3971.6229.43
Onboarding /wp-admin/edit.php?post_type=poll&page=onboarding1,3643.5669.3075.68
Scheduled Actions /wp-admin/tools.php?page=action-scheduler1,3051.8323.4029.09
Dashboard /wp-admin/edit.php?post_type=poll&page=dashboard1,3493.5667.4062.39
Logs /wp-admin/edit.php?post_type=poll&page=log2,4744.51120.5337.80
Templates /wp-admin/edit.php?post_type=poll&page=templates1,1343.3773.9528.04
Create Poll /wp-admin/post-new.php?post_type=poll24,76214.511,038.7253.96
Entries /wp-admin/edit.php?post_type=poll&page=entries2,1295.51108.2128.10
Insights /wp-admin/edit.php?post_type=poll&page=insights2,1203.0339.4632.34

Uninstaller [IO: ▲0.00MB] [DB: ▲0.01MB] 50% from 4 tests

🔸 Tests weight: 35 | Checking the uninstaller removed all traces of the plugin
The following items require your attention
  • The uninstall procedure failed, leaving 7 tables in the database
    • wp_actionscheduler_actions
    • wp_actionscheduler_logs
    • wp_totalpoll_entries
    • wp_totalpoll_log
    • wp_totalpoll_votes
    • wp_actionscheduler_claims
    • wp_actionscheduler_groups
  • Zombie WordPress options detected upon uninstall: 15 options
    • can_compress_scripts
    • totalpoll_db_version
    • widget_totalpoll_poll
    • widget_theysaidso_widget
    • widget_totalpoll_latest_poll
    • widget_totalpoll_random_poll
    • widget_recent-posts
    • widget_recent-comments
    • totalpoll_first_usage
    • action_scheduler_hybrid_store_demarkation
    • ...

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
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
The following issues need your attention
  • 29× PHP files output text when accessed directly (only 10 are shown):
    • > /wp-content/plugins/totalpoll-lite/src/Admin/Poll/views/design/tabs/advanced.php
    • > /wp-content/plugins/totalpoll-lite/modules/templates/Basic/views/preview/vote.php
    • > /wp-content/plugins/totalpoll-lite/src/Admin/Poll/views/form/field-textarea.php
    • > /wp-content/plugins/totalpoll-lite/src/Admin/Poll/views/form/index.php
    • > /wp-content/plugins/totalpoll-lite/modules/templates/Basic/views/preview/results.php
    • > /wp-content/plugins/totalpoll-lite/src/Admin/Poll/views/choices/choice-video.php
    • > /wp-content/plugins/totalpoll-lite/modules/templates/Basic/views/vote/other.php
    • > /wp-content/plugins/totalpoll-lite/src/Admin/Onboarding/views/steps/menu.php
    • > /wp-content/plugins/totalpoll-lite/src/Admin/Poll/views/quick-action-menu.php
    • > /wp-content/plugins/totalpoll-lite/src/Admin/Plugins/views/uninstall-feedback.php
  • 380× GET requests to PHP files trigger server-side errors or Error 500 responses (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Call to undefined function esc_html_e() in wp-content/plugins/totalpoll-lite/src/Admin/Log/views/index.php:2
    • > PHP Fatal error
      Uncaught Error: Class 'TotalPollVendors\\League\\Container\\ServiceProvider\\AbstractServiceProvider' not found in wp-content/plugins/totalpoll-lite/vendor/league/container/src/ServiceProvider/AbstractSignatureServiceProvider.php:5
    • > PHP Fatal error
      Uncaught Error: Interface 'TotalPoll\\Contracts\\Migrations\\Poll\\Template\\Template' not found in wp-content/plugins/totalpoll-lite/src/Contracts/Migrations/Poll/Template/Poll.php:9
    • > PHP Notice
      Undefined variable: product in wp-content/plugins/totalpoll-lite/src/Admin/Plugins/views/uninstall-feedback.php on line 165
    • > PHP Fatal error
      Uncaught Error: Interface 'TotalPoll\\Contracts\\Migrations\\Poll\\Transform' not found in wp-content/plugins/totalpoll-lite/src/Migrations/Polls/WPPolls/Transform.php:16
    • > PHP Fatal error
      Uncaught Error: Call to undefined function esc_html_e() in wp-content/plugins/totalpoll-lite/src/Admin/Options/views/tabs/migration.php:11
    • > PHP Fatal error
      Uncaught Error: Call to undefined function esc_attr() in wp-content/plugins/totalpoll-lite/modules/templates/Basic/views/vote/choice.php:1
    • > PHP Fatal error
      Uncaught Error: Call to undefined function esc_html_e() in wp-content/plugins/totalpoll-lite/modules/templates/Basic/views/settings.php:2
    • > PHP Fatal error
      Uncaught Error: Class 'ActionScheduler_DBStore' not found in wp-content/plugins/totalpoll-lite/vendor/woocommerce/action-scheduler/classes/migration/ActionScheduler_DBStoreMigrator.php:10
    • > PHP Fatal error
      Uncaught Error: Class 'ActionScheduler_Store' not found in wp-content/plugins/totalpoll-lite/vendor/woocommerce/action-scheduler/classes/data-stores/ActionScheduler_wpPostStore.php:6

User-side errors 0% from 1 test

🔹 Test weight: 20 | This is just a short smoke test looking for browser issues
Please fix the following user-side errors
    • > GET request to /wp-admin/post-new.php?post_type=poll
    • > Javascript (severe) in unknown
    /wp-content/plugins/totalpoll-lite/assets/dist/scripts/poll-editor.js?ver=1696569242 2872:52 Uncaught TypeError: Cannot read properties of undefined (reading 'pollId')

Optimizations

Plugin configuration 80% 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
Attributes that require attention:
  • Tags: Too many tags (51 tag instead of maximum 10); only the first 5 tags are used in your directory listing
The official readme.txt might help

totalpoll-lite/plugin.php 62% from 13 tests

Analyzing the main PHP file in "Poll | Vote | Contest - Best Poll Plugin for WordPress" version 4.9.8
The following require your attention:
  • Requires at least: The required version number must match the one declared in readme.txt ("4.6.0" instead of "4.8")
  • Domain Path: The domain path should use only dashes and lowercase characters ("languages")
  • Domain Path: Please prefix the domain path with a forward slash character ("/languages")
  • Text Domain: Since WordPress version 4.6 the text domain is optional; if specified, it must be the same as the plugin slug
  • Main file name: It is recommended to name the main PHP file as the plugin slug ("totalpoll-lite.php" instead of "plugin.php")

Code Analysis Passed 3 tests

File types Passed 1 test

🔸 Test weight: 35 | This is an overview of file extensions present in this plugin and a short test that no dangerous files are bundled with this plugin
No dangerous file extensions were detected72,215 lines of code in 556 files:
LanguageFilesBlank linesComment linesLines of code
PHP4746,53317,73030,519
PO File137,84811,13217,308
JavaScript191162,27112,346
CSS161,4324011,574
SVG2804378
SQL30044
JSON20041
XML1005

PHP code Passed 2 tests

Analyzing logical lines of code, cyclomatic complexity, and other code metrics
All good! No complexity issues found
Cyclomatic complexity
Average complexity per logical line of code0.26
Average class complexity8.27
▷ Minimum class complexity1.00
▷ Maximum class complexity140.00
Average method complexity2.34
▷ Minimum method complexity1.00
▷ Maximum method complexity79.00
Code structure
Namespaces98
Interfaces73
Traits5
Classes260
▷ Abstract classes4216.15%
▷ Concrete classes21883.85%
▷ Final classes10.46%
Methods2,243
▷ Static methods2008.92%
▷ Public methods2,02390.19%
▷ Protected methods1747.76%
▷ Private methods462.05%
Functions240
▷ Named functions5623.33%
▷ Anonymous functions18476.67%
Constants85
▷ Global constants78.24%
▷ Class constants7891.76%
▷ Public constants78100.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

Using a strong compression for your PNG files is a great way to speed-up your plugin
5 PNG files occupy 0.26MB with 0.07MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
assets/dist/images/general/onboarding-slider-02.png125.43KB78.77KB▼ 37.20%
assets/dist/images/migration/wp-polls.png11.63KB9.69KB▼ 16.69%
assets/dist/images/migration/yop-poll.png16.91KB13.49KB▼ 20.21%
assets/dist/images/migration/totalpoll-3.png20.85KB16.00KB▼ 23.29%
assets/dist/images/general/onboarding-slider-01.png96.00KB53.97KB▼ 43.78%