Commit graph

164 commits

Author SHA1 Message Date
MDW
a0b820564f
QUAL: Add SqlInjectionPlugin to detect unsafe SQL variable usage (fixes, notices) (#38722)
* QUAL: Add SqlInjectionPlugin to detect unsafe SQL variable usage

# QUAL: Add SqlInjectionPlugin to detect unsafe SQL variable usage

This commit adds a new SqlInjectionPlugin to the Phan configuration, which helps detect unsafe SQL variable usage in the Dolibarr codebase. The plugin checks for variables used in sql expressions that are not properly escaped, cast, or protected by safe methods.

* Qual: Add SqlInjection exceptions to Phan baseline

* Qual: Add SqlInjection exceptions to Phan baseline

* Qual: Update baseline.txt to remove SqlInjection suppressions

The SqlInjection suppressions have been removed from the baseline.txt file.
This reenables the notification of "unfixed" cases.

* Qual: SQL injection detection for missing quotes on escaped strings

# Qual: SQL injection detection for missing quotes on escaped strings

In summary: report lines with missing quotes as in `" WHERE ".$db->escape($value)." OR "`.

* Qual: Fix code for SqlInjection analysis

# Qual: Fix code for SqlInjection analysis

Rewrite some escape calls, change escape() in sanitize(), rename variable, ignore SqlInjection notices.

* Qual: Update baseline

Allow some SqlInjection* notices, to be fixed later or already fixed in develop.
2026-08-08 11:19:04 +02:00
Laurent Destailleur
a09519ce41 Fix phan 2026-06-01 23:47:52 +02:00
MDW
180088d1ee
Qual: Add missing sqlite3 stub for Phan (#38426)
# Qual: Add missing sqlite3 stub for Phan

About 43 Phan notices on https://cti.dolibarr.org are present
because of missing information about SQLite3.
This stub and configuration change adds the information.

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-05-25 13:30:24 +02:00
MDW
f6cc55454e
Qual: Update Phan baseline and config using global variables for dolibarr_* (#38395)
# Qual: Update Phan baseline and config using global variables for dolibarr_*

- Add new global variables to config.php to improve static analysis
- Remove dolibarr_* global variable references in filefunc.inc.php
- Update Phan baseline
2026-05-22 14:19:29 +02:00
Laurent Destailleur
97f51c1bc7 CI 2026-05-22 08:31:54 +02:00
Laurent Destailleur
7d2851ec48 CI 2026-05-21 22:32:22 +02:00
MDW
1743565a50
Qual: Fix PHPStan notices (#37933)
* Qual: Fix phpstan notice with cast

* Qual: Fix initialiser (phpstan) and narrow some types

* Qual: Fix typing for object->type field (phpstan)

* Qual: Update preg_quote usage in step2.php

# Qual: Ignore false phpstan positive for preg_match

Add comment to ignore phpstan warning for preg_match argument

* Qual: Extend accepted types for arrayoptions (phpstan)

* Qual: Fix type hint typo

* Qual: Fix type for contact_id assignment

* Qual: Add menuonly as allowed reloadmode

* Qual: Add PHPStan ignore comments for argument.type

* Qual: Ignore unused parameter in constructors (PHPStan)

* Qual: Add type hint for $TMsg (PHPStan)

* Qual: Cast array values to match expected type (PHPStan)

* Qual: Cast $remise_percent_ligne to float (PHPStan)

* Qual: Add array specifier to GETPOST for correct type (PHPStan)

* Qual: Update sumSituation() argument types

* Qual: Cast value to string for printStdColumnContent (PHPStan)

* Qual: Ignore PHPStan notice for autoload function return value

* Qual: Fix type of argument to Menubase::recur (PHPStan)

* Qual: Fix return type hint (PHPStan)

* Qual: Add $dolibarr_main_db_type as default global

* Qual: Update Phan baseline (due to PHPStan fix)
2026-04-20 12:36:21 +02:00
John BOTELLA
3ab77d673e
NEW : Quick memo module (#37422)
* Add quick memo module

* remove backport

* remove under v24 code

* fix css

* remove dirt

* Fix icon and z index

* Fix option coherance

* Missing trad

* css

* Move sql files

* Mv langs files

* missing langs files

* PHP stan add lang trans from Dolibarr JS context

* missing langs

* remove duplicate lang

* Fix lang load after lang move

* remove useless try to include main

* mv jsonResponce.class.php

* rm comment

* rm useless files

* Fix lang load and remove module backport

* Fix lang duplicate

* fix php stan errors

* fix php stan errors

* fix query

* Update memo.class.php

* Update properties to allow null values

* Remove old img

* Fix sql filter

* fields def change for php stan

* PHP doc update

* Comment

* Fix php doc

* Fix php doc

* Fix php doc

* Fix php doc

* Fix php doc

* Fix php stan feedback

* Fix php stan feedback

* Fix php stan feedback

* Fix php stan feedback

* Fix php stan feedback

* Fix php stan feedback

* Use new native css tooltips

* php doc

* php doc

* php doc

* Fix sql

* remove static method

* travis

* travis

* travis

* Move modQuickMemo.class.php

* Update llx_quickmemo_memo-quickmemo.sql

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-04-15 17:47:50 +02:00
Laurent Destailleur
4744f51afc Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-04-08 13:39:40 +02:00
Laurent Destailleur
6844b662f5 More complete stubs 2026-04-08 13:37:43 +02:00
Laurent Destailleur
60806c38b3 Merge branch '23.0' of git@github.com:Dolibarr/dolibarr.git into develop 2026-04-04 11:57:18 +02:00
Laurent Destailleur
63499772c8 Fix ci 2026-04-04 11:53:51 +02:00
Laurent Destailleur
5bf02e5a24
Add captureserver configuration to phan config 2026-04-03 04:23:04 +02:00
Laurent Destailleur
5294805890 Removed non relevant test 2026-03-16 10:14:43 +01:00
John BOTELLA
559454e4d4
Fix : fontawesome icon list in doc (#37481)
* Fix fontawesome icon list

* Label

* remove useless test

* Fix doc php stan

* Fix doc php stan

* Fix doc php stan
2026-03-15 14:54:59 +01:00
Frédéric FRANCE
c08c7170d2
clean code (#35427)
* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

* clean code

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-09-22 22:25:00 +02:00
Frédéric FRANCE
0dde113a71
fix CI v22 (#35430) 2025-09-22 11:55:36 +02:00
Laurent Destailleur
144854769a Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into
develop
2025-06-13 16:27:57 +02:00
Laurent Destailleur
cf1c5bc370 Merge branch '21.0' of git@github.com:Dolibarr/dolibarr.git into 21.0 2025-06-13 16:24:52 +02:00
Laurent Destailleur
d66cd9027a Remove warning 2025-06-13 16:22:57 +02:00
Yannis Hoareau
1301cd36a1
NEW Subtotal module (#33502)
* Changes to follow mvc logic

* Reworked admin page and form to add lines

* Reworked adding line logic

* Adding options when editing subtotal lines

* Fix translations

* Fixed errors/displays and started pdf

* Color for subtotals pdf lines

* FIX display of subtotal totht

* Added pdf azur for propal

* Fix duplicate translation

* Added subtotal support for facture pdf

* Added subtotal support for commande pdf

* Improve UI/translations

* Restored old pdf

* Info to warn user for unsupported pdf

* Added title lines VAT rate and discount support

This is meant for future feature wich is block mass changing vat rate
and discount percentage

* Working on block apply vat and discount

* Added buttons for block actions

* Handle editing vat and discount for subtotal lines

* Editing vat and discount for subtotal lines bloc working

* Added possibility to move by block

* Updated adding and updating a subtotal line

* Improved vat and discount block update

* Improvement for block vat/discount and line edition

Editing a title line edits the corresponding subtotal line

* Improvement for moving by block

* Bad tile or st line placement managing

* Improved bad title or st line placement managing

* Adding subtotal line improved

Adding a subtotal line adds it right under its corresponding title

* Improved deleting subtotal line

Added possibility to choose if you want to delete the corresponding
subtotal line when deleting a title line

* Preventing too high level titles to be created

* Create and update line errors managing

* Improved bad title or st line placement managing

* Improved st line creation

* improve headers

* fix bad block placement managing

* fix adding st line not working if duplicates titles

* fix translations

* Fix block update

* FIX special chars bug

If special char like " ' " was used in title it could be converted to
special char entity.

* Prepare for pdf options

Pdf options like page break befor title should be shown as a picto if activated on a subtotal line on a document

* Added option managing

* Improved subtotal options and PDF integration

* Code refactor

* Action name/Error managment/PDF refreshing

When adding or updating a subtotal line

* Reformat

* Reworked subtotal options database managment

* Changed access to special code

* Remove unecessary call to php trait

* Changed definition of subtotals special code constant

* Reworked align on PDF

* Removed unecessary function and improved error managment

* Typo fix and removed treated todos

* Post typo changed for to better match subtotals names

* Disabled edit if status is not draft

* Changed way subtotals options are stored

* Added view managing when creating a document form an other

* Improved creating document from an other

Can check subtotals lines with table head checkbox and removed highlight
class for better UI.

* Make include of subtotals tpl more clear

* Manage centered or justified case

If user chose to center or justify, we don't change nothing

* Improved pdf

* Removed unecessary code block

* optimisation

* Code sniffer fix

* Code sniffer fix

* Code sniffer fix

* Code sniffer fix

* Code sniffer fix and added missing translation

* Fix php code sniffer

* Reload page when setup saved on subtotals admin page

* Fix php code sniffer

* pjan fix

* phan fix

* phan fix

* phan fix

* phan fix

* phan fix

* phan fix

* phan fix

* phan fix

* phan fix

* phan fix

* phan fix

* php warning fix

* php warning fix

* php phan fix

* php phan fix

* php phan fix

* Fix bug admin page not loading because of const not defined

* php phan fix

* php phan fix

* FIX subtotals admin page display

* php phan fix

* FIX php phan

* Fix bugs and langs

* Fix bug pdf align

* Replace include by require

* Add headers to avoid refreshing and adding unwanted lines

* Fix phan

* Add GETPOST check for security

* Fix phan

* Fix phan

* Fix phan

* Subtotal option when creating a document from another

* Fix phan

* Add field subtotal options for subtotal lines

* Fix phan

* Fix phan

* Fix phan

* Update to follow mvc

* Fix php phan

* Fix php phan

* Fix phpstan/phan

* Fix phpstan

* Fix phpstan

* Fix phpstan

* Fix phpstan

* Fix phpstan

* Update to switch to extraparams

* Update to switch to extraparams

* Retrieve extraparams from db to objectline

* Modified last things to switch to extraparams

* Cleaning unnecessary code lines

* Fix php-stan

* Section subtotal in extraparams to differentiate if needed for further devs

* Fix phan

* Keep extraparams when creating from another object

* Change default value to false when creating a subtotal line

* Fix clone would not keep extraparams in new object

* Fix dark subtotal line background color

Fix when a subtotal background color is too dark and edit pencil or
delete trash could not be seen

* Fix typo

* Fix typo

* Added subtotals for facturerec

* Fix precommit

* Added extraparams when creating rec from fac and other way

* Fix phan

* Fix objectline null

* Desactivating block vat / discount update for facturerec

* reformating code

* Added expeditions for subtotal

* Save extraparams for shipping lines

* Display of subtotals lines in shipments

* Display when creating facture from shipments

* Improve display of lines and invoice creation from shipments

* Fix error if missing line rang

* Deleted duplicate

* Added deletion of subtotal line in shipping documents

* Not including subtotal lines if there is no product line in between

* Update get subtotal lines in shipment docs to disable

* Delete possibility to edit subtotal lines in shipments

* Handle pdf for shipment

* Handle conf stock or shipment supporting services

* Fix precommit

* Fix duplicate name creating bug

* Fix bug where id could be changed by the line id and would create bug

* Deleted subtotal lines when STOCK_SUPPORTS_SERVICES is enabled and block would only have service lines

* Disable shipments in admin modules

Shimpements subtotals lines are only created from commands

* Fixing phan and stan

* Deleted unused template and phan fix

* Fix phan

* Fix phan

* Fix phan

* FIX: phan

* Fix template bug

If document was not in subtotal scope and would use a template used by
subtotal it would create an error.

* Fix php-stan

* Fix bad display when modules and confs were activated

* Fix php codesniffer

* Excluding subtotal lines when mass updating

* Fix shipments service lines exluded + showing subtotal line with specific configs

* Fix line display with situation invoices + bug block line update

* Added ODT managment

This works with invoices but has not been tested with other documents

* Fix bug when editing VAT/discount by block

* Fix error raised when subtotal line added

Subtotal line had no fk_product and raised the error but we want this
line to have no fk product

* Fix precommit

* Added ODT template for documents that uses subtotals

This template can be usefull to understand how to create an odt template
using subtotals module

* Fix phan

* Fix phan

* fix: buttons showing in bad document status

* clean: unwanted commited files

* add: table examples to use with subtotals on ODT templates

* fix: Unwanted print of value when creating a document from another

* feat: renaming for better understanding

* feat: Improved templates for documents related to subtotals

---------

Co-authored-by: Marc de Lima Lucio <68746600+marc-dll@users.noreply.github.com>
Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-05-10 02:44:31 +02:00
MDW
c3104905b3
Qual: Fix phan notices (html/core) (#33474)
* FIX: Replace compromised tj-actions/changed-files

# FIX: Replace compromised tj-actions/changed-files

See https://www.stepsecurity.io/blog/harden-runner-detection-tj-actions-changed-files-action-is-compromised .

* Add changed php file for test

* Qual: Fix phan notices (html/core)

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2025-03-15 16:34:35 +01:00
MDW
f625f8de60
Qual: Fix api phan notices 2025-03-05 13:22:08 +01:00
MDW
035ede5874
Qual: Fix phan notices in API classes 2025-03-02 20:49:46 +01:00
MDW
d2328ef852
Qual: Fix webservices + new phan notice 2025-02-26 21:21:15 +01:00
ldestailleur
b6fb623911 Fix phan 2025-02-25 02:33:20 +01:00
MDW
891e11d692
Qual: Enable and fix phan notices for scripts
# Qual: Enable and fix phan notices for scripts

phpstan is already enable on scripts, so there is no reason to not
enable phan.
This enables phan and fixes the notices at the same time
2025-02-18 16:33:41 +01:00
MDW
c405666765
Qual: Fix phan notices (recruitment) 2025-02-13 22:37:20 +01:00
MDW
7f6c09fc63
Qual: Update baseline, enable PhanTypeMismatchArgument
# Qual: Update baseline, enable PhanTypeMismatchArgument

Update the baseline for fixes.
Enable PhanTypeMismatchArgument as this is being fixed and to avoid
that new cases occur in files where these are fixed.
Only about 3800 cases remain, was more than 12000 when starting with Phan.
2025-02-03 16:05:59 +01:00
MDW
f66e9553d5
Qual: Fix phan notices
# Qual: Fix phan notices

Fix phan notices in fourn/commande (+form class)
2025-02-03 16:05:55 +01:00
MDW
ba53bd741d
Qual: Update phan baseline 2025-01-27 13:24:32 +01:00
Laurent Destailleur
5b20b70b66 Doc 2026-02-04 16:56:20 +01:00
Laurent Destailleur
2ed9107dc0 Try to fix phan 2026-01-28 18:32:27 +01:00
Laurent Destailleur
4415246d46 Exclude dir for phan 2024-11-14 00:03:31 +01:00
MDW
9ec4618199
Qual: Fix FunctionArray phan notices (#31754)
* Qual: Fix FunctionArray phan notices

* Fix class name in typing of htdocs/modulebuilder/index.php

* Fix customreports phpdoc

* Adjust file type after completeFileArrayWithDatabaseInfo

* Further phpdoc typing improvements

* More phpdoc

* Improve typing with cast on position field

* Force phpstan version

* Add phpstan exception

* Fix array index type + adjust phan config comment
2024-11-11 14:48:18 +01:00
MDW
278d301f32
Qual: Fix phan/phpstan notices in class files (part 6) (#31634)
* Qual: Fix notices for paymentdonation...workstationusergroup.class

* Qual: Fix PhanPluginRedundantReturnComment, update baseline

* Qual: Complete array phpdoc for properties
2024-11-06 23:57:45 +01:00
MDW
178d748cad
Qual: Fix phan/phpstan notices in class files (part 5) (#31617)
* Qual: fix commonstickergen..don.class

* Fix notifications for pdf_paiement...cronjob.class

* Qual: Fix notifications for emailcollector..price_parser.class

* Ensure that NULL is used in the database when fk's are 0/empty

* Fix notifications for pdf_paiement...cronjob.class

* Cope with updated phpstan, and make fk_origin_stock int in multiple locations
2024-11-06 20:15:15 +01:00
MDW
e7539f2e19
Qual: Fix notices in .lib.php files (#31672)
* Qual: Fix notices in .lib.php files

* Update wrapper.php

* Update availabilities_card.php

* Update index.php

* Update document.controller.class.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2024-11-04 12:32:13 +01:00
MDW
0ac595364b
Qual: Fix phan/phpstan notices in class files (part 1) (#31501)
* Ignore phpstan configuration for spelling

* Qual: Fix phan notices in class files
2024-10-25 21:00:02 +02:00
MDW
11c43e8c63
Fix: ticket.class phan/phpstan notices (#31448)
* Qual: Fix ticket.class notices

* Do not analyze custom

* Fix: Correct reference to cache (+phpdoc)

* Update baseline, ignore everything in custom

* Qual: Fix notices in files related to ticket class
2024-10-19 01:21:41 +02:00
MDW
8a9f86e109
Qual: Suppress PhanTypeSuspiciousNonTraversableForeach (#31382)
# Qual: Ignore PhanTypeSuspiciousNonTraversableForeach

PhanTypeSuspiciousNonTraversableForeach reports on the use of
`foreach ($object as $key => value)` which is valid accross
tested php versions (at least since PHP7.0).

So suppressing this notice.
2024-10-17 01:54:19 +02:00
MDW
9677a370e9
Qual: Nullable mysoc hint (#31393)
* Qual: Nullable mysoc hint

# Qual: Nullable mysoc hint

$mysoc can be nullable resulting in issues (#31387) so
it is best to detect these cases with static analysis

* Prevent null assignment
2024-10-17 01:44:54 +02:00
MDW
42bb4fbf3e
Qual: Enable & fix or ignore Invalid DimOffset (#31176)
* Qual: Enable & fix or ignore Invalid DimOffset

# Qual: Enable & fix or ignore Invalid DimOffset

The Invalid DimOffset notices occur when array keys are defined and
the index used is not amongst the known array keys.

This PR enables these notices and fixes array definitions when needed,
or ignores the notices locally if it's a false positive, or in the
baseline.txt when it does not seem to be a false positive so that
it can be fixed later

* Nullable object typing in function signature not ok for 7.0/8.4

Can't user '?User' as argument type for PHP7.0 which is required by PHP8.4.
Therefore, removing the typing specification in the function definition

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2024-09-29 21:52:31 +02:00
MDW
9a9e851494
Qual: Fix new UndeclaredGlobalVariable notices & enable (#30963)
* Qual: 🛟 Fix typing

Qual: Fix typing

Fix some typing currently failing ci in develop.

* Fix typing for grabimages

* Qual: Fix new UndeclaredGlobalVariable notices & enable

# Qual: Fix new UndeclaredGlobalVariable notices & enable

This fixes several new notices regarding 'undeclared globals' which
mostly correspond to missing initialisations in views and some real
bugs where the variable name was incorrect.
Some less obvious cases are unsolved and ignored (adherents/list,
and fourn/commande/card).

This is in preparation of fixing the notices in the other files
where the baseline was already set to ignore them where most just
need a phan-var-force declaration which will help with verifying
type compatibity and object member verifications
2024-09-16 01:50:58 +02:00
Laurent Destailleur
dcfaae3bd5 Clean code: fight against global vars 2024-08-27 06:20:04 +02:00
MDW
56e0bba970
Qual: Disable global CommonObject $obj type (phan) (#30750)
* Qual: Disable global CommonObject $obj type (phan)

# Qual: Disable global CommonObject $obj type (phan)

This removes the global typing hint for $obj from the phan configuration

* Fix issues with undeclared $obj

* Fix issues with undeclared $obj

* Fix issues with undeclared $obj
2024-08-27 04:57:04 +02:00
MDW
cc239ce866
Qual: Enable phan notices regarding array definitions (#30751)
# Qual: Enable phan notices regarding array definitions

This configuration change in phan will report NEW array types in phpdoc
that are not specific about the array members.
At level 6, phpstan also expects this.

The exceptions in baseline.txt ensure this is only reported on new files
or files were these missing typing directives are already fixed.
2024-08-27 04:55:42 +02:00
Mohamed DAOUD
563fbb67ca
add restricthtmlallowlinkscript to phan config (#30709) 2024-08-21 13:13:35 +02:00
MDW
d71cd352d5
Qual: Fix PhanUndeclaredMethod (#30661)
* Qual: Fix PhanUndeclaredMethod cases

* Fix PhanUndeclaredMethod cases

* Qual: Remove PhanUndeclaredMethod exceptions

* Fix spelling "disacard"

* Improve phpdoc, add abstract method to trait for typing

* Improve phpdoc typing for PHanUndeclaredMethod

* Suppress phan notices for guarded AliasNbPages calls

* Fix return value for printFile stub

* Fix getting message from Exception

* Define dummy getAllByProducts(), typing for it.

* Fix typo in comment

* Qual: Better typing for apiService (phan)

* Test that the Generic OAuth Service is provided

* Qual: Fix getSqlArrayForStats typing

* Force modTcpdfbarcode

* Correct typing hint

* Set ModelePDFAsset typehint

* Fix ModelePDFUserGroup typing hint

* Fix phan typing hints htdocs/core/modules/printing/printgcp.modules.php

* Fix write_file in ModelePDFStock*

* Update printsheet.php

* Adjust typing hint for barcode generator

* Update printsheet.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2024-08-19 02:05:27 +02:00
MDW
b0087aaf61
Qual: Enable phan on modulebuilder (#30652)
* Allow null for buyer, and force '' for  in printObjectLine(s)

* Allow null for Contact in show_actions_done

* Qual: Enable phan on modulebuilder

# Qual: Enable phan on modulebuilder

Most files of the modulebuilder template can be checked as regular files.
It will help improve the template

* Update baseline (enable modulebuilder notices)

* Add properties that are expected to exist on modules_boxes

* Qual: Ignore false positive (phan)

* Set phpdoc type to include null on formAddObjectLine

* Qual: Fixes for modulebuilder (phan, phpstan, bugs, format)

* Fix phpcs for intracom

* Make ModeleBoxes:showBox() signature match child class's

* Fix *box::showBox() phpdoc types

* Update index.php

---------

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2024-08-18 18:16:08 +02:00