78% oik

Code Review | oik

WordPress plugin oik scored78%from 54 tests.

About plugin

  • Plugin page: oik
  • Plugin version: 4.10.0
  • PHP version: 7.4.16
  • WordPress compatibility: 5.0.3-6.4.1
  • WordPress version: 6.3.1
  • First release: Feb 5, 2011
  • Latest release: Nov 9, 2023
  • Number of updates: 270
  • Update frequency: every 17.3 days
  • Top authors: bobbingwide (100%)

Code review

54 tests

User reviews

3 reviews

Install metrics

3,000+ active /201,070 total downloads

Benchmarks

Plugin footprint 83% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | All plugins must install correctly, without throwing any errors, warnings, or notices
Installer ran successfully

Server metrics [RAM: ▲1.06MB] [CPU: ▲5.47ms] Passed 4 tests

This is a short check of server-side resources used by oik
No issues were detected with server-side resource usage
PageMemory (MB)CPU Time (ms)
Home /4.21 ▲0.7543.59 ▲1.91
Dashboard /wp-admin4.49 ▲1.1854.27 ▲10.46
Posts /wp-admin/edit.php4.54 ▲1.1855.18 ▲9.13
Add New Post /wp-admin/post-new.php7.29 ▲1.4098.48 ▲0.36
Media Library /wp-admin/upload.php4.36 ▲1.1346.49 ▲13.06
More Options /wp-admin/admin.php?page=oik_options-14.9853.42
Shortcode help /wp-admin/admin.php?page=oik_sc_help6.0864.01
Options /wp-admin/admin.php?page=oik_options5.0546.88
Plugins /wp-admin/admin.php?page=oik_plugins4.3340.69
Buttons /wp-admin/admin.php?page=oik_buttons4.3341.81
Themes /wp-admin/admin.php?page=oik_themes4.4444.88
Overview /wp-admin/admin.php?page=oik_menu4.3841.68

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

Input-output and database impact of this plugin
The plugin installed successfully
Filesystem: 418 new files
Database: no new tables, 6 new options
New WordPress options
theysaidso_admin_options
widget_recent-comments
widget_recent-posts
can_compress_scripts
db_upgraded
widget_theysaidso_widget

Browser metrics Passed 4 tests

oik: an overview of browser usage
This plugin has a minimal impact on browser resources
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,864 ▲10214.72 ▲0.371.85 ▲0.0839.96 ▼4.68
Dashboard /wp-admin2,243 ▲635.63 ▲0.0594.22 ▼3.3140.53 ▲1.09
Posts /wp-admin/edit.php2,156 ▲532.03 ▲0.0736.59 ▼7.6729.53 ▼7.55
Add New Post /wp-admin/post-new.php6,453 ▲4,92728.43 ▲5.33960.29 ▲267.3640.59 ▼14.41
Media Library /wp-admin/upload.php1,453 ▲564.22 ▲0.05100.05 ▲2.4040.77 ▼1.74
More Options /wp-admin/admin.php?page=oik_options-11,7108.00153.72150.00
Shortcode help /wp-admin/admin.php?page=oik_sc_help7,5624.8070.0789.72
Options /wp-admin/admin.php?page=oik_options2,1998.06151.8598.84
Plugins /wp-admin/admin.php?page=oik_plugins9394.6947.8745.47
Buttons /wp-admin/admin.php?page=oik_buttons9654.5848.0655.91
Themes /wp-admin/admin.php?page=oik_themes9424.5850.2151.74
Overview /wp-admin/admin.php?page=oik_menu1,0714.8449.8961.89

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

🔸 Tests weight: 35 | The uninstall procedure must remove all plugin files and extra database tables
These items require your attention
  • Zombie WordPress options detected upon uninstall: 6 options
    • theysaidso_admin_options
    • can_compress_scripts
    • widget_recent-comments
    • widget_theysaidso_widget
    • widget_recent-posts
    • 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
Everything seems fine, however this is by no means an exhaustive test

SRP 50% 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 take a closer look at the following
  • 23× PHP files trigger server errors when accessed directly (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_filter() in wp-content/plugins/oik/libs/oik-shortcodes.php:485
    • > PHP Fatal error
      Uncaught Error: Call to undefined function oik_require_lib() in wp-content/plugins/oik/oik-add-shortcodes.php:14
    • > PHP Fatal error
      Uncaught Error: Call to undefined function oik_require() in wp-content/plugins/oik/shortcodes/oik-attachments.php:20
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_action() in wp-content/plugins/oik/oik-shortcake.php:409
    • > PHP Fatal error
      Uncaught Error: Call to undefined function oik_require_lib() in wp-content/plugins/oik/includes/oik-sc-help.php:7
    • > PHP Fatal error
      Uncaught Error: Call to undefined function oik_require() in wp-content/plugins/oik/shortcodes/oik-table.php:25
    • > PHP Fatal error
      Uncaught Error: Call to undefined function oik_require() in wp-content/plugins/oik/shortcodes/oik-pages.php:23
    • > PHP Fatal error
      Uncaught Error: Call to undefined function oik_require() in wp-content/plugins/oik/shortcodes/oik-thumbs.php:24
    • > PHP Fatal error
      Uncaught Error: Call to undefined function oik_require() in wp-content/plugins/oik/admin/oik-bwtrace.php:6
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_action() in wp-content/plugins/oik/libs/oik-honeypot.php:22

User-side errors 0% from 1 test

🔹 Test weight: 20 | A shallow check that no browser errors were triggered
These are user-side errors you should fix
  • 2 occurences, only the last one shown
    • > GET request to /wp-admin/admin.php?page=oik_options
    • > Console-api (warning) in unknown
    http://maps.googleapis.com/maps/api/js?&region=GB 213:51 "Google Maps JavaScript API has been loaded directly without a callback. This is not supported and can lead to race conditions and suboptimal performance. For supported loading patterns please see https://goo.gle/js-api-loading"

Optimizations

Plugin configuration 97% from 29 tests

readme.txt 94% from 16 tests

Perhaps the most important file in your plugin readme.txt gets parsed in order to generate the public listing of your plugin
These attributes need your attention:
  • Screenshots: These screenshots have no corresponding images in /assets: #1 (oik options - Options), #2 (Demonstrating [bw_pages] and [bw_thumbs]), #3 ([bw_contact_form] - Contact form and [bw_show_googlemap] - Google Map), #4 (Option to display post IDs on admin pages), #5 (Custom CSS button), #6 (oik button dialog - to create the [bw_button] shortcode), #7 (oik PayPal dialog - create PayPal buttons: Pay Now, Buy Now, Donate, Add to Cart and View Cart/Checkout), #8 (oik shortcodes dialog - showing syntax for [bw_block]), #9 (oik options - Shortcode help - lists ALL active shortcodes), #10 (oik options - Buttons)
The official readme.txt might help

oik/oik.php Passed 13 tests

Analyzing the main PHP file in "oik" version 4.10.0
84 characters long description:
OIK Information Kit - Over 80 lazy smart shortcodes for displaying WordPress content

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
Good job! No executable or dangerous file extensions detected32,297 lines of code in 289 files:
LanguageFilesBlank linesComment linesLines of code
PHP1132,51212,29114,565
JavaScript691,3861,5727,028
PO File32,2243,0564,624
Pascal205711,7172,334
CSS262542361,671
JSON39001,315
SVG303594
Sass16301166

PHP code Passed 2 tests

Analyzing logical lines of code, cyclomatic complexity, and other code metrics
No complexity issues detected
Cyclomatic complexity
Average complexity per logical line of code0.21
Average class complexity27.08
▷ Minimum class complexity1.00
▷ Maximum class complexity118.00
Average method complexity2.65
▷ Minimum method complexity1.00
▷ Maximum method complexity19.00
Code structure
Namespaces1
Interfaces0
Traits0
Classes12
▷ Abstract classes00.00%
▷ Concrete classes12100.00%
▷ Final classes00.00%
Methods190
▷ Static methods7640.00%
▷ Public methods17190.00%
▷ Protected methods1910.00%
▷ Private methods00.00%
Functions1,002
▷ Named functions1,002100.00%
▷ Anonymous functions00.00%
Constants60
▷ Global constants60100.00%
▷ Class constants00.00%
▷ Public constants00.00%

Plugin size Passed 2 tests

Image compression Passed 2 tests

All PNG images should be compressed to minimize bandwidth usage for end users
87 compressed PNG files occupy 0.80MB
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
images/green_tick_64x64.png2.18KB1.86KB▼ 14.54%
images/youtube_48.png0.86KB0.84KB▼ 2.27%
images/red_x_64x64.png1.98KB1.86KB▼ 5.73%
css/fancybox-y.png0.17KB0.24KB0.00%
images/instagram_48.png2.66KB1.86KB▼ 30.15%