78% propovoice

Code Review | Propovoice CRM - Best CRM & Invoicing Plugin to Manage Leads, Clients and Billings automation

WordPress plugin Propovoice CRM - Best CRM & Invoicing Plugin to Manage Leads, Clients and Billings automation scored78%from 54 tests.

About plugin

  • Plugin page: propovoice
  • Plugin version: 1.7.4.6
  • PHP compatiblity: 7.1+
  • PHP version: 7.4.16
  • WordPress compatibility: 5.0-6.4
  • WordPress version: 6.3.1
  • First release: Apr 25, 2022
  • Latest release: Dec 1, 2023
  • Number of updates: 104
  • Update frequency: every 6.1 days
  • Top authors: fassionstorage (100%)

Code review

54 tests

User reviews

18 reviews

Install metrics

1,000+ active /21,264 total downloads

Benchmarks

Plugin footprint 83% from 16 tests

Installer Passed 1 test

🔺 Critical test (weight: 50) | The install procedure must perform silently
This plugin's installer ran successfully

Server metrics [RAM: ▲0.56MB] [CPU: ▼0.81ms] Passed 4 tests

A check of server-side resources used by Propovoice CRM - Best CRM & Invoicing Plugin to Manage Leads, Clients and Billings automation
No issues were detected with server-side resource usage
PageMemory (MB)CPU Time (ms)
Home /4.00 ▲0.5442.67 ▼1.57
Dashboard /wp-admin3.89 ▲0.5451.57 ▼8.53
Posts /wp-admin/edit.php3.93 ▲0.5849.56 ▲1.03
Add New Post /wp-admin/post-new.php8.33 ▲2.44111.08 ▲5.85
Media Library /wp-admin/upload.php3.80 ▲0.5740.28 ▲6.82

Server storage [IO: ▲17.62MB] [DB: ▲0.08MB] Passed 3 tests

Analyzing filesystem and database footprints of this plugin
This plugin was installed successfully
Filesystem: 239 new files
Database: no new tables, 21 new options
New WordPress options
ndpv_workspace_default
ndpv_contact_status_children
ndpv_lead_level_children
ndpv_deal_pipeline_children
ndpv_version
theysaidso_admin_options
ndpv_task_priority_children
ndpv_version_install
ndpv_estinv_qty_type_children
ndpv_project_status_children
...

Browser metrics Passed 4 tests

Checking browser requirements for Propovoice CRM - Best CRM & Invoicing Plugin to Manage Leads, Clients and Billings automation
This plugin has a minimal impact on browser resources
PageNodesMemory (MB)Script (ms)Layout (ms)
Home /2,861 ▲11414.32 ▲0.041.69 ▼0.0642.52 ▼1.58
Dashboard /wp-admin2,269 ▲925.60 ▼0.0791.87 ▼6.4742.47 ▼0.05
Posts /wp-admin/edit.php2,171 ▲741.94 ▼0.0638.75 ▲0.4435.84 ▲1.61
Add New Post /wp-admin/post-new.php1,584 ▲5822.93 ▲0.09700.18 ▲30.5249.36 ▼5.12
Media Library /wp-admin/upload.php1,632 ▲2294.55 ▲0.36117.24 ▲18.9547.40 ▲6.78
Project /wp-admin/admin.php?page=ndpv#/project1,2594.4199.9981.83
Contact /wp-admin/admin.php?page=ndpv#/contact1,2374.2488.8533.73
Invoice /wp-admin/admin.php?page=ndpv#/invoice1,2594.3297.5637.05
Client /wp-admin/admin.php?page=ndpv#/client1,2434.2297.5037.89
Lead /wp-admin/admin.php?page=ndpv#/lead1,2474.2889.6133.52
Settings /wp-admin/admin.php?page=ndpv#/setting/general2,4204.5095.8638.30
Dashboard /wp-admin/admin.php?page=ndpv#2,45113.74401.6854.90
Estimate /wp-admin/admin.php?page=ndpv#/estimate1,2384.3094.9436.67
Deal Pipeline /wp-admin/admin.php?page=ndpv#/deal1,3334.40100.6035.99

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

🔸 Tests weight: 35 | All plugins must uninstall correctly, removing their source code and extra database tables they might have created
The following items require your attention
  • This plugin does not fully uninstall, leaving 21 options in the database
    • ndpv_tag_children
    • ndpv_task_status_children
    • ndpv_extra_amount_children
    • ndpv_contact_status_children
    • ndpv_lead_level_children
    • ndpv_lead_source_children
    • can_compress_scripts
    • ndpv_deal_stage_children
    • ndpv_task_type_children
    • widget_recent-comments
    • ...

Smoke tests 50% from 4 tests

Server-side errors Passed 1 test

🔹 Test weight: 20 | Just a short smoke test targeting errors on the server (in the Apache logs)
Good news, no errors were detected

SRP 0% from 2 tests

🔹 Tests weight: 20 | SRP (Single-Responsibility Principle) - PHP files must act as libraries and never output text or perform any action when accessed directly in a browser
Almost there! Just fix the following items
  • 4× PHP files output text when accessed directly:
    • > /wp-content/plugins/propovoice/view/template/partial/403.php
    • > /wp-content/plugins/propovoice/view/email/invoice.php
    • > /wp-content/plugins/propovoice/view/template/partial/404.php
    • > /wp-content/plugins/propovoice/view/email/password.php
  • 36× PHP files trigger server errors when accessed directly (only 10 are shown):
    • > PHP Fatal error
      Uncaught Error: Class 'Elementor\\Widget_Base' not found in wp-content/plugins/propovoice/app/Ctrl/Widget/Elementor/Widgets/Registration.php:7
    • > PHP Fatal error
      Trait 'Ndpv\\Traits\\Singleton' not found in wp-content/plugins/propovoice/app/Ctrl/Api/Type/Taxonomy.php on line 8
    • > PHP Fatal error
      Trait 'Ndpv\\Traits\\Singleton' not found in wp-content/plugins/propovoice/app/Ctrl/Api/Type/Team.php on line 10
    • > PHP Fatal error
      Trait 'Ndpv\\Traits\\Singleton' not found in wp-content/plugins/propovoice/app/Ctrl/Api/Type/Webhook.php on line 7
    • > PHP Fatal error
      Trait 'Ndpv\\Traits\\Singleton' not found in wp-content/plugins/propovoice/app/Ctrl/Api/Type/Project.php on line 12
    • > PHP Fatal error
      Uncaught Error: Call to undefined function add_action() in wp-content/plugins/propovoice/view/template/estimate-template.php:9
    • > PHP Fatal error
      Trait 'Ndpv\\Traits\\Singleton' not found in wp-content/plugins/propovoice/app/Ctrl/Api/Type/File.php on line 7
    • > PHP Fatal error
      Trait 'Ndpv\\Traits\\Singleton' not found in wp-content/plugins/propovoice/app/Ctrl/Api/Type/Org.php on line 9
    • > PHP Fatal error
      Trait 'Ndpv\\Traits\\Singleton' not found in wp-content/plugins/propovoice/app/Ctrl/Api/Type/Action.php on line 8
    • > PHP Fatal error
      Uncaught Error: Call to undefined function ndpv() in wp-content/plugins/propovoice/view/template/estvoice-template.php:42

User-side errors Passed 1 test

🔹 Test weight: 20 | Just a short smoke test targeting errors on the browser (console and network errors and warnings)
Everything seems fine on the user side

Optimizations

Plugin configuration 93% from 29 tests

readme.txt 88% 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:
  • Tags: Please delete some tags, you are using 18 tag instead of maximum 10
  • Donate link: Invalid URI found ("")
The official readme.txt might help

propovoice/propovoice.php Passed 13 tests

The primary PHP file in "Propovoice CRM - Best CRM & Invoicing Plugin to Manage Leads, Clients and Billings automation" version 1.7.4.6 is used by WordPress to initiate all plugin functionality
66 characters long description:
Lead, Deal, Estimate, Invoice, Billing, Client, Project Automation

Code Analysis Passed 3 tests

File types Passed 1 test

🔸 Test weight: 35 | This is a short overview of programming languages used in this plugin, detecting executable files
There were no executable files found in this plugin16,998 lines of code in 197 files:
LanguageFilesBlank linesComment linesLines of code
PHP952,6681,01215,701
JavaScript98642,8971,287
CSS3055
JSON1005

PHP code Passed 2 tests

This is a very shot review of cyclomatic complexity and code structure
This plugin has no cyclomatic complexity problems
Cyclomatic complexity
Average complexity per logical line of code0.48
Average class complexity31.16
▷ Minimum class complexity1.00
▷ Maximum class complexity175.00
Average method complexity6.39
▷ Minimum method complexity1.00
▷ Maximum method complexity67.00
Code structure
Namespaces29
Interfaces0
Traits1
Classes75
▷ Abstract classes00.00%
▷ Concrete classes75100.00%
▷ Final classes11.33%
Methods448
▷ Static methods419.15%
▷ Public methods42995.76%
▷ Protected methods71.56%
▷ Private methods122.68%
Functions46
▷ Named functions36.52%
▷ Anonymous functions4393.48%
Constants6
▷ Global constants6100.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
36 compressed PNG files occupy 0.12MB
Potential savings
Compression of 5 random PNG files using pngquant
FileSize - originalSize - compressedSavings
asset/img/task-type/task.png0.33KB0.35KB0.00%
asset/img/icon-20x20.png0.51KB0.52KB0.00%
asset/img/tmpl/estimate-4.png6.33KB6.97KB0.00%
asset/img/tmpl/invoice-3.png6.16KB6.70KB0.00%
asset/img/task-type/mail.png0.25KB0.26KB0.00%