10% wpgenealogy

Code Review | WP Genealogy - Your Family History Website

WordPress plugin WP Genealogy - Your Family History Website scored10%from 54 tests.

About plugin

  • Plugin page: wpgenealogy
  • Plugin version: 0.1.5
  • PHP version: 7.4.16
  • WordPress compatibility: 4.4-6.3
  • WordPress version: 6.3.1
  • First release: Jul 26, 2021
  • Latest release: Nov 1, 2023
  • Number of updates: 19
  • Update frequency: every 45.0 days
  • Top authors: blackandwhitedigital (100%)

Code review

54 tests

User reviews

1 review

Install metrics

60+ active /2,701 total downloads

Benchmarks

Plugin footprint 22% from 16 tests

Installer 0% from 1 test

🔺 Critical test (weight: 50) | It is important to correctly install your plugin, without throwing errors or notices
Please fix the following installer errors
  • The plugin cannot be installed
    • > Warning in wp-content/plugins/wpgenealogy/includes/class-wpgenealogy-activator.php+127
    copy(wpgenealogy/includes/Helpers/mu-plugins/wpgenealogy-helpers.php): failed to open stream: No such file or directory

Server metrics [RAM: ▲1.45MB] [CPU: ▲0.63ms] Passed 4 tests

This is a short check of server-side resources used by WP Genealogy - Your Family History Website
No issues were detected with server-side resource usage
PageMemory (MB)CPU Time (ms)
Home /5.33 ▲1.8652.30 ▲9.05
Dashboard /wp-admin4.77 ▲1.4352.38 ▼11.18
Posts /wp-admin/edit.php4.82 ▲1.4753.36 ▲4.56
Add New Post /wp-admin/post-new.php7.33 ▲1.4493.51 ▲0.08
Media Library /wp-admin/upload.php4.69 ▲1.4644.98 ▲9.60
Freemius Debug [v.2.6.0] /wp-admin/admin.php?page=freemius5.0641.12

Server storage [IO: ▲33.86MB] [DB: ▲0.04MB] 33% from 3 tests

How much does this plugin use your filesystem and database?
Just a few items left to fix
  • You have illegally modified 1 file (0.00KB) outside of "wp-content/plugins/wpgenealogy/" and "wp-content/uploads/"
    • (new file) wp-content/plugins/mu-plugins/.empty
  • Total filesystem usage should be limited to 25MB (currently using 33.86MB)
Filesystem: 3,333 new files
Database: 23 new tables, 10 new options
New tables
wp_tp_timelines
wp_tp_temp_events
wp_tp_todos
wp_tp_event_types
wp_tp_families
wp_tp_childrens
wp_tp_notes
wp_tp_events
wp_tp_todo_comments
wp_tp_associations
...
New WordPress options
fs_active_plugins
theysaidso_admin_options
wpgenealogy_settings
fs_debug_mode
widget_recent-posts
fs_accounts
widget_theysaidso_widget
widget_recent-comments
db_upgraded
can_compress_scripts

Browser metrics Passed 4 tests

Checking browser requirements for WP Genealogy - Your Family History Website
This plugin renders optimally with no browser resource issues detected
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /3,164 ▲40319.24 ▲4.51149.17 ▲147.3539.25 ▼3.08
Dashboard /wp-admin2,234 ▲535.58 ▼0.1482.65 ▼27.2738.60 ▼4.31
Posts /wp-admin/edit.php2,137 ▲402.00 ▲0.0636.20 ▼2.0737.57 ▲4.51
Add New Post /wp-admin/post-new.php1,548 ▲2223.12 ▲0.07654.54 ▼20.1451.29 ▼0.21
Media Library /wp-admin/upload.php1,439 ▲424.24 ▼0.05101.13 ▲1.8444.92 ▼0.25
Freemius Debug [v.2.6.0] /wp-admin/admin.php?page=freemius1,1041.6930.3327.17

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

🔸 Tests weight: 35 | Verifying that this plugin uninstalls completely without leaving any traces
It is recommended to fix the following
  • Uninstall procedure had uncaught errors
    • > Notice in wp-content/plugins/wpgenealogy/freemius/includes/class-freemius.php+8546
    Undefined property: stdClass::$plugins
  • This plugin does not fully uninstall, leaving 23 tables in the database
    • wp_tp_todo_comments
    • wp_tp_charts
    • wp_tp_notes
    • wp_tp_places
    • wp_tp_branches
    • wp_tp_events
    • wp_tp_repositories
    • wp_tp_sources
    • wp_tp_temp_events
    • wp_tp_addresses
    • ...
  • This plugin did not uninstall successfully, leaving 10 options in the database
    • fs_active_plugins
    • can_compress_scripts
    • widget_recent-comments
    • widget_recent-posts
    • fs_debug_mode
    • widget_theysaidso_widget
    • theysaidso_admin_options
    • wpgenealogy_settings
    • fs_accounts
    • db_upgraded

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
The smoke test was a success, however most plugin functionality was not tested

SRP 0% from 2 tests

🔹 Tests weight: 20 | It is important to ensure that your PHP files perform no action when accessed directly, respecting the single-responsibility principle
The following issues need your attention
  • 10× PHP files output text when accessed directly:
    • > /wp-content/plugins/wpgenealogy/vendor/sabberworm/php-css-parser/tests/quickdump.php
    • > /wp-content/plugins/wpgenealogy/public/partials/wpgenealogy-public-display.php
    • > /wp-content/plugins/wpgenealogy/vendor/illuminate/pagination/resources/views/simple-bootstrap-4.blade.php
    • > /wp-content/plugins/wpgenealogy/vendor/doctrine/dbal/bin/doctrine-dbal.php
    • > /wp-content/plugins/wpgenealogy/admin/partials/wpgenealogy-admin-display.php
    • > /wp-content/plugins/wpgenealogy/vendor/illuminate/pagination/resources/views/semantic-ui.blade.php
    • > /wp-content/plugins/wpgenealogy/vendor/symfony/translation/Resources/bin/translation-status.php
    • > /wp-content/plugins/wpgenealogy/vendor/illuminate/pagination/resources/views/default.blade.php
    • > /wp-content/plugins/wpgenealogy/vendor/illuminate/pagination/resources/views/simple-default.blade.php
    • > /wp-content/plugins/wpgenealogy/vendor/illuminate/pagination/resources/views/bootstrap-4.blade.php
  • 914× PHP files trigger server-side errors or warnings when accessed directly (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Class 'Doctrine\\DBAL\\Platforms\\Keywords\\PostgreSQL94Keywords' not found in wp-content/plugins/wpgenealogy/vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/Keywords/PostgreSQL100Keywords.php:10
    • > PHP Fatal error
      Uncaught Error: Class 'PhpGedcom\\Parser\\Component' not found in wp-content/plugins/wpgenealogy/includes/Import/php-gedcom/library/PhpGedcom/Parser/Head/Date.php:22
    • > PHP Fatal error
      Uncaught Error: Class 'PhpGedcom\\Parser\\Fam\\Even' not found in wp-content/plugins/wpgenealogy/includes/Import/php-gedcom/library/PhpGedcom/Parser/Fam/Anul.php:22
    • > PHP Fatal error
      Uncaught Error: Class 'FontLib\\Table\\Table' not found in wp-content/plugins/wpgenealogy/vendor/phenx/php-font-lib/src/FontLib/Table/Type/post.php:18
    • > PHP Fatal error
      Uncaught Error: Class 'Illuminate\\Console\\Command' not found in wp-content/plugins/wpgenealogy/vendor/illuminate/database/Console/Migrations/InstallCommand.php:9
    • > PHP Fatal error
      Uncaught Error: Class 'Illuminate\\Support\\Facades\\Facade' not found in wp-content/plugins/wpgenealogy/vendor/illuminate/support/Facades/Session.php:33
    • > PHP Fatal error
      Uncaught Error: Class 'Illuminate\\Database\\Query\\Processors\\Processor' not found in wp-content/plugins/wpgenealogy/vendor/illuminate/database/Query/Processors/MySqlProcessor.php:5
    • > PHP Fatal error
      Uncaught Error: Class 'Symfony\\Component\\Translation\\Loader\\ArrayLoader' not found in wp-content/plugins/wpgenealogy/vendor/symfony/translation/Loader/FileLoader.php:21
    • > PHP Fatal error
      Uncaught Error: Class 'PhpGedcom\\Parser\\Component' not found in wp-content/plugins/wpgenealogy/includes/Import/php-gedcom/library/PhpGedcom/Parser/Subn.php:22
    • > PHP Fatal error
      Uncaught Error: Class 'PhpGedcom\\Parser\\Indi\\Attr' not found in wp-content/plugins/wpgenealogy/includes/Import/php-gedcom/library/PhpGedcom/Parser/Indi/Titl.php:22

User-side errors Passed 1 test

🔹 Test weight: 20 | A shallow check that no browser errors were triggered
No browser errors were detected

Optimizations

Plugin configuration 97% from 29 tests

readme.txt 94% from 16 tests

The readme.txt file is an important file in your plugin as it is parsed by WordPress.org to prepare the public listing of your plugin
Attributes that require attention:
  • Screenshots: Please add images for these screenshots: #16 ([TBC Front end: Timeline]), #17 ([TBC Front end: Add a Descendent Chart Anywhere on your Blog with a Shortcode])
You can take inspiration from this readme.txt

wpgenealogy/wpgenealogy.php Passed 13 tests

The principal PHP file in "WP Genealogy - Your Family History Website" v. 0.1.5 is loaded by WordPress automatically on each request
62 characters long description:
All you need to build your family history website in WordPress

Code Analysis 0% from 3 tests

File types 0% from 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
Please make sure to remedy the following
  • Do not include executable or dangerous files in your plugin
    • .bat - Batch File in Windows
      • wp-content/plugins/wpgenealogy/vendor/nesbot/carbon/bin/carbon.bat
230,771 lines of code in 2,601 files:
LanguageFilesBlank linesComment linesLines of code
PHP2,12841,247108,025179,854
Vuejs Component2262502,83025,774
JavaScript871,74754613,255
XSD392482,803
JSON26002,575
Sass126992,481
Markdown2950401,594
CSS632131271,237
XML183761691
SVG600159
Blade51119144
YAML416283
reStructuredText1747874
HTML20024
Bourne Shell16119
DOS Batch1004

PHP code 0% from 2 tests

Cyclomatic complexity and code structure are the fingerprint of this plugin
It is recommended to fix the following
  • Cyclomatic complexity of classes should be reduced to less than 1000 (currently 3,096)
  • Method cyclomatic complexity should be reduced to less than 100 (currently 652)
Cyclomatic complexity
Average complexity per logical line of code0.44
Average class complexity16.38
▷ Minimum class complexity1.00
▷ Maximum class complexity3,096.00
Average method complexity2.96
▷ Minimum method complexity1.00
▷ Maximum method complexity652.00
Code structure
Namespaces220
Interfaces168
Traits80
Classes1,157
▷ Abstract classes574.93%
▷ Concrete classes1,10095.07%
▷ Final classes928.36%
Methods11,818
▷ Static methods1,28210.85%
▷ Public methods9,42079.71%
▷ Protected methods1,61813.69%
▷ Private methods7806.60%
Functions844
▷ Named functions19623.22%
▷ Anonymous functions64876.78%
Constants761
▷ Global constants11214.72%
▷ Class constants64985.28%
▷ Public constants63798.15%

Plugin size 50% from 2 tests

Image compression 50% from 2 tests

It is recommended to compress PNG files in your plugin to minimize bandwidth usage
329 PNG files occupy 1.23MB with 0.67MB in potential savings
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
public/src/assets/images/delete-white.png1.22KB0.33KB▼ 73.04%
public/js/timeline_ajax/images/message-right.png1.85KB0.38KB▼ 79.18%
public/src/assets/images/admin/people.png2.21KB1.79KB▼ 19.25%
public/css/public/src/assets/images/admin/album_blue.png1.62KB0.86KB▼ 46.78%
public/src/assets/images/admin/chart.png10.08KB4.52KB▼ 55.13%