10% nordot

Code Review | Nordot: Content Curation & Syndication for WordPress

WordPress plugin Nordot: Content Curation & Syndication for WordPress scored 10% from 54 tests.

About plugin

  • Plugin page: nordot
  • Plugin version: 1.8.4
  • PHP compatiblity: 5.3+
  • PHP version: 7.4.16
  • WordPress compatibility: 4.0-5.6
  • WordPress version: 5.9.2
  • First release: Nov 18, 2019
  • Latest release: Jul 22, 2021
  • Number of updates: 100
  • Update frequency: every 6.2 days
  • Top authors: kevinwebb1223 (100%)

Code review

54 tests

User reviews

1 review

Install metrics

600+ active / 5,415 total downloads

Benchmarks

Plugin footprint 40% from 16 tests

Installer 0% from 1 test

🔺 Critical test (weight: 50) | The install procedure must perform silently
It is recommended to fix the following installer errors
  • The plugin cannot be installed
    • > User deprecated in wp-includes/functions.php+5316
    get_currentuserinfo is deprecated since version 4.5.0! Use wp_get_current_user() instead.

Server metrics [RAM: ▲0.46MB] [CPU: ▼293.79ms] Passed 4 tests

This is a short check of server-side resources used by Nordot: Content Curation & Syndication for WordPress
Server-side resource usage in normal parameters
PageMemory (MB)CPU Time (ms)
Home /4.02 ▲0.5156.03 ▲5.39
Dashboard /wp-admin3.87 ▲0.4735.96 ▲4.24
Posts /wp-admin/edit.php4.10 ▲0.4640.85 ▲4.11
Add New Post /wp-admin/post-new.php7.40 ▲0.4393.54 ▼1,183.59
Media Library /wp-admin/upload.php3.82 ▲0.5325.04 ▲0.08
Find Articles /wp-admin/admin.php?page=nordot-submenu-search3.7426.11
Settings /wp-admin/admin.php?page=nordot-menu-settings3.7326.51

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

Filesystem and database footprint
There were no storage issued detected upon installing this plugin
Filesystem: 79 new files
Database: 2 new tables, 2 new options
New tables
wp_nordot_read_later
wp_nordot_save_searches
New WordPress options
nordot_db_version
welcome_email_sent

Browser metrics Passed 4 tests

Nordot: Content Curation & Syndication for WordPress: an overview of browser usage
There were no issues detected in relation to browser resource usage
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /3,832 ▲8815.82 ▲0.255.48 ▼1.202.04 ▼0.22
Dashboard /wp-admin2,953 ▲956.15 ▼0.04117.01 ▼14.91157.42 ▼4.80
Posts /wp-admin/edit.php2,749 ▲553.25 ▼0.1162.08 ▼1.06139.08 ▼0.39
Add New Post /wp-admin/post-new.php1,732 ▼2016.65 ▼4.25412.70 ▼55.81174.02 ▲14.43
Media Library /wp-admin/upload.php1,759 ▲615.55 ▲0.06136.58 ▼11.61180.55 ▼9.01
Find Articles /wp-admin/admin.php?page=nordot-submenu-search2,2503.5571.96146.62
Settings /wp-admin/admin.php?page=nordot-menu-settings1,5743.3668.62252.21

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

🔸 Tests weight: 35 | It is important to correctly uninstall your plugin, without leaving any traces
It is recommended to fix the following
  • Uninstall procedure validation failed for this plugin
    • > User notice in wp-includes/functions.php+5768
    wpdb::prepare was called incorrectly. The query argument of wpdb::prepare() must have a placeholder. Please see Debugging in WordPress for more information. (This message was added in version 3.9.0.)
  • Zombie WordPress options detected upon uninstall: 1 option
    • nordot_auto_publish_0

Smoke tests 50% from 4 tests

Server-side errors 0% from 1 test

🔹 Test weight: 20 | Just a short smoke test targeting errors on the server (in the Apache logs)
These errors were triggered by the plugin
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/admin.php?page=nordot-submenu-search
    • > POST request to /wp-admin/admin-ajax.php
    • > User notice in wp-includes/functions.php+5768
    wpdb::prepare was called incorrectly. The query argument of wpdb::prepare() must have a placeholder. Please see Debugging in WordPress for more information. (This message was added in version 3.9.0.)

SRP 50% from 2 tests

🔹 Tests weight: 20 | A shallow check of the single-responsibility principle; PHP files should perform no action - including output of placeholder text - and trigger no errors when accessed directly
Please fix the following items
  • 27× GET requests to PHP files have triggered server-side errors or warnings (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Interface 'League\\HTMLToMarkdown\\Converter\\ConverterInterface' not found in wp-content/plugins/nordot/vendor/league/html-to-markdown/src/Converter/ParagraphConverter.php:7
    • > PHP Fatal error
      Uncaught Error: Interface 'League\\HTMLToMarkdown\\Converter\\ConverterInterface' not found in wp-content/plugins/nordot/vendor/league/html-to-markdown/src/Converter/DivConverter.php:9
    • > PHP Warning
      require_once(WP_PLUGIN_DIR/nordot/nordot-common.php): failed to open stream: No such file or directory in wp-content/plugins/nordot/vendor/league/html-to-markdown/src/Converter/ImageConverter.php on line 8
    • > PHP Fatal error
      Uncaught Error: Interface 'League\\HTMLToMarkdown\\Converter\\ConverterInterface' not found in wp-content/plugins/nordot/vendor/league/html-to-markdown/src/Converter/HardBreakConverter.php:9
    • > PHP Fatal error
      Uncaught Error: Interface 'League\\HTMLToMarkdown\\Converter\\ConverterInterface' not found in wp-content/plugins/nordot/vendor/league/html-to-markdown/src/Converter/EmphasisConverter.php:9
    • > PHP Fatal error
      Uncaught Error: Interface 'League\\HTMLToMarkdown\\Converter\\ConverterInterface' not found in wp-content/plugins/nordot/vendor/league/html-to-markdown/src/Converter/TextConverter.php:7
    • > PHP Fatal error
      Uncaught Error: Interface 'League\\HTMLToMarkdown\\Converter\\ConverterInterface' not found in wp-content/plugins/nordot/vendor/league/html-to-markdown/src/Converter/ListBlockConverter.php:7
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_action() in wp-content/plugins/nordot/nordot-common.php:6
    • > PHP Fatal error
      require_once(): Failed opening required 'WP_PLUGIN_DIR/nordot/nordot-common.php' (include_path='.:/usr/share/php') in wp-content/plugins/nordot/vendor/league/html-to-markdown/src/Converter/ImageConverter.php on line 8
    • > PHP Fatal error
      Uncaught Error: Interface 'League\\HTMLToMarkdown\\Converter\\ConverterInterface' not found in wp-content/plugins/nordot/vendor/league/html-to-markdown/src/Converter/HeaderConverter.php:9

User-side errors Passed 1 test

🔹 Test weight: 20 | This is a smoke test targeting browser errors/issues
No browser errors were detected

Optimizations

Plugin configuration 93% from 29 tests

readme.txt 94% from 16 tests

The readme.txt file is undoubtedly the most important file in your plugin, preparing it for public listing on WordPress.org
These attributes need your attention:
  • Tags: You are using too many tags: 14 tag instead of maximum 10
You can take inspiration from this readme.txt

nordot/nordot.php 92% from 13 tests

This is the main PHP file of "Nordot: Content Curation & Syndication for WordPress" version 1.8.4, providing information about the plugin in the header fields and serving as the principal entry point to the plugin's functions
The following require your attention:
  • Text Domain: The text domain must be the same as the plugin slug, although optional since WordPress version 4.6

Code Analysis Passed 3 tests

File types Passed 1 test

🔸 Test weight: 35 | A short review of files and their extensions; it is not recommended to include executable files
Everything looks great! No dangerous files found in this plugin8,738 lines of code in 61 files:
LanguageFilesBlank linesComment linesLines of code
PHP408848963,445
SVG1002,671
JavaScript7408981,590
Markdown31540376
PO File1133200352
CSS43622169
JSON300121
YAML20614

PHP code Passed 2 tests

Analyzing cyclomatic complexity and code structure
All good! No complexity issues found
Cyclomatic complexity
Average complexity per logical line of code0.36
Average class complexity8.07
▷ Minimum class complexity1.00
▷ Maximum class complexity44.00
Average method complexity2.78
▷ Minimum method complexity1.00
▷ Maximum method complexity18.00
Code structure
Namespaces3
Interfaces4
Traits0
Classes26
▷ Abstract classes00.00%
▷ Concrete classes26100.00%
▷ Final classes13.85%
Methods139
▷ Static methods42.88%
▷ Public methods12287.77%
▷ Protected methods21.44%
▷ Private methods1510.79%
Functions79
▷ Named functions7898.73%
▷ Anonymous functions11.27%
Constants5
▷ Global constants240.00%
▷ Class constants360.00%
▷ Public constants3100.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
2 PNG files occupy 0.03MB with 0.02MB in potential savings
Potential savings
Compression of 2 random PNG files using pngquant
FileSize - originalSize - compressedSavings
images/NDT_Full.png20.12KB7.24KB▼ 64.01%
images/bgimg.png12.18KB4.40KB▼ 63.90%