Compare commits

..

20 Commits
23.0.1 ... 21.0

Author SHA1 Message Date
Laurent Destailleur
e98c441c4c Automated merge from 20.0 to 21.0 by tool pullmerge.sh 2026-03-16 10:19:56 +01:00
Laurent Destailleur
638fd27af2 Automated merge from 19.0 to 20.0 by tool pullmerge.sh 2026-03-16 10:19:43 +01:00
Laurent Destailleur
f9c6562de9 Automated merge from 18.0 to 19.0 by tool pullmerge.sh 2026-03-16 10:18:38 +01:00
Laurent Destailleur
8ede2e75f5 Automated merge from 17.0 to 18.0 by tool pullmerge.sh 2026-03-16 10:18:34 +01:00
Laurent Destailleur
86bb0b4cc5 Automated merge from 16.0 to 17.0 by tool pullmerge.sh 2026-03-16 10:17:50 +01:00
Laurent Destailleur
4098eafe24 Automated merge from 15.0 to 16.0 by tool pullmerge.sh 2026-03-16 10:16:32 +01:00
Laurent Destailleur
a81ba1847d Merge branch '14.0' of git@github.com:Dolibarr/dolibarr.git into 15.0 2026-03-15 14:53:27 +01:00
Laurent Destailleur
209323598a Restore parallel-lint only on last version 2026-03-15 14:52:53 +01:00
Laurent Destailleur
88b66741fc Merge branch '14.0' of git@github.com:Dolibarr/dolibarr.git into 15.0 2026-03-15 14:52:07 +01:00
Laurent Destailleur
6505e41b4d Merge branch '14.0' of git@github.com:Dolibarr/dolibarr.git into 15.0 2026-03-15 14:51:02 +01:00
Laurent Destailleur
a4bd180c72 Merge branch '14.0' of git@github.com:Dolibarr/dolibarr.git into 14.0 2026-03-15 14:50:22 +01:00
Laurent Destailleur
2605d33dbc Restore parallel-lint 2026-03-15 14:50:13 +01:00
William Desportes
9e13496975 Fix User creation API permission check (#37502)
Bug introduced by 3c9d8bc931

Co-authored-by: Laurent Destailleur <eldy@destailleur.fr>
2026-03-15 14:48:32 +01:00
Laurent Destailleur
39f3abec0c Try to ignore travis 2026-03-15 13:47:49 +01:00
Laurent Destailleur
a9d846dfd6 Disable paralle-lint that is no more available on travis (security bug) 2026-03-15 12:22:16 +01:00
Laurent Destailleur
2a3982f2fd Automated merge from 20.0 to 21.0 by tool pullmerge.sh 2026-03-15 12:16:15 +01:00
Laurent Destailleur
e77af9c26c Automated merge from 19.0 to 20.0 by tool pullmerge.sh 2026-03-15 12:15:32 +01:00
Laurent Destailleur
e0ceff086e Automated merge from 20.0 to 21.0 by tool pullmerge.sh 2026-03-15 12:08:32 +01:00
William Desportes
2f5a74e34c Fix User creation API permission check (#37504)
Fixes #30465

Bug introduced by 3c9d8bc931
And still present in the change 7b54824d49
See: 7b54824d49 (diff-64e82e2f84fc5a1af766e17f0e533221c48231c6bbe3f342af899ee6854748fb)
2026-03-15 12:01:33 +01:00
atm-lucas
f90e121650 You cannot cancel leave if the balance is negative (#37492) 2026-03-14 18:31:50 +01:00
8956 changed files with 575244 additions and 453148 deletions

View File

@@ -6,6 +6,7 @@ languages:
engines:
phpcodesniffer: true
exclude_paths:
- 'build/*'
- 'dev/*'
- 'doc/*'
- 'test/*'

10
.gitattributes vendored
View File

@@ -39,20 +39,20 @@
# Export ignores to generate clean production tarballs
/build export-ignore
/dev export-ignore
/doc export-ignore
/test export-ignore
/.github export-ignore
/.phan export-ignore
/.tx export-ignore
.buildpath export-ignore
/build.xml export-ignore
.codeclimate.yml export-ignore
Dockerfile export-ignore
.dockerignore export-ignore
.editorconfig export-ignore
.gitattributes export-ignore
.gitignore export-ignore
.mailmap export-ignore
.pre-commit-config.yaml export-ignore
.scrutinizer.yml export-ignore
.settings export-ignore
.travis.yml export-ignore
Dockerfile export-ignore
.tx export-ignore

View File

@@ -136,9 +136,9 @@ If your PR is a change on interface, you must also paste a screenshot showing th
#### Examples
<pre>
FIX|Fix #456 Short description (where #456 is number of bug fix, if an issue ID exists, or #xxx456 with xxx as the name of the VDP platform in lower case for security issues. The "Fix" must be in upper case to appear into ChangeLog)
FIX|Fix #456 Short description (where #456 is number of bug fix, if it exists. In upper case to appear into ChangeLog)
or
CLOSE|Close #456 Short description (where #456 is number of feature request, if it exists. The "Close" must be in upper case to appear into ChangeLog)
CLOSE|Close #456 Short description (where #456 is number of feature request, if it exists. In upper case to appear into ChangeLog)
or
NEW|New|QUAL|Qual|PERF|Perf Short description (In upper case to appear into ChangeLog, use this if you add a feature not tracked, otherwise use CLOSE #xxx)
or
@@ -153,7 +153,7 @@ Long description (Can span across multiple lines).
Pull Request (PR) process is the process to submit a change (enhancement, bug fix, ...) into the code of the project. There is some rules to know and
a process to follow to optimize the chance to have PRs merged efficiently...
* A PR must be atomic. It means it must contains the lower possible changes for 1 need (1 bug fix or 1 new feature) without breaking usability of code. If a PR can be split into several PRs, it often means your PR is not atomic. For PR on maintenance versions, the modified code must be as low as possible and only the absolutely necessary changes are allowed (You must have the number of lines modified as low as possible to have the visible bug fixed (no refactoring, no perf, no quality, no renaming must be joined). This allow to reduce to the maximum the number of future conflicts (so the number of regressions) when merging fixes into higher version to reduce the time of any future impact analysis.
* A PR must be atomic. It means it must contains the lower possible changes for 1 need (1 bug fix or 1 new feature) without breaking usability of code. If a PR can be split into several PRs, it often means your PR is not atomic.
* Your Pull Request (PR) must pass the Continuous Integration checks and code quality checks.
@@ -185,7 +185,7 @@ A so high ratio is very rare on a so popular project and with the increasing pop
Translations
------------
The source language (en_US) is maintained in the repository.
The source language (en_US) is maintained in the repository. See the [Code](#code) section above.
All other translations are managed online at [Transifex](https://www.transifex.com/dolibarr-association/dolibarr/).

View File

@@ -1,9 +1,8 @@
# Instructions
*This is a template to help you make good pull requests. You may use [Github Markdown](https://help.github.com/articles/getting-started-with-writing-and-formatting-on-github/) syntax to format your issue report.*
*Please:*
- *only keep the "FIX", "CLOSE", "NEW", "UIUX", PERF" or "QUAL" section* (use uppercase to have the PR appears into the ChangeLog, lowercase will not appears)
- *only keep the "FIX", "CLOSE", "NEW", "PERF" or "QUAL" section* (use uppercase to have the PR appears into the ChangeLog, lowercase will not appears)
- *follow the project [contributing guidelines](/.github/CONTRIBUTING.md)*
- ***in particular, in case of a bugfix, please check that you are targetting the branch corresponding to the oldest version in which the bug occurs***
- *replace the bracket enclosed texts with meaningful information*
@@ -19,10 +18,6 @@
[*Long description*]
# UIUX|Uiux [*Short description*]
[*Long description*]
# PERF|Perf #[*issue_number Short description*]
[*Long description*]

View File

@@ -1,19 +1,6 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
allow:
# Allow production updates only (can do a AND, several entries are doing a OR)
- dependency-type: "production"
#- dependency-type: "direct"
exclude-paths:
- 'dev'
- 'tests/acceptance'
- 'tests/selenium'

View File

@@ -70,9 +70,9 @@ all_changed_files=$(IFS=" " ; echo "${changed_php_files[*]}")
# Determine changed files flag
if [ -z "$all_changed_files" ]; then
any_changed="false"
any_changed="false"
else
any_changed="true"
any_changed="true"
fi
# Set outputs for GitHub Actions if GITHUB_OUTPUT is available

View File

@@ -1,33 +1,16 @@
# CI Workflows
# Workflow run order
The 2 main CI workflows are:
----------------------------
To reduce run minutes, the following order is put in place:
- ci-on-pull_request.yml
- ci-on-push.yml
On PR & Merge, always run:
This run the actions:
- pre-commit;
- phan.
- pre-commit.yml
- phan.yml
- phpstan.yml
When all succeed, start:
When both succeed, start:
- phpstan;
- Windows-ci;
- travis.
See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#running-a-workflow-based-on-the-conclusion-of-another-workflow
The other worklows are:
-----------------------
- ci-stale-issues-safe to autoclose old issues.
- ci-phpstan_baseline to update the phpstan baseline file.
- ci-cache-clean-pr to clean cache when closing a PR.
- ci-test to make CI tests
Some tests workflows are:
------------------------
- pr-18
- pr-18-autolbal
- test

View File

@@ -1,13 +1,10 @@
---
# This clean the caches of a branch when we close the pull request.
# See https://github.com/actions/cache/blob/main/tips-and-workarounds.md#force-deletion-of-caches-overriding-default-cache-eviction-policy
name: Cleanup caches of a closed branch
# See https://github.com/actions/cache/blob/main/tips-and-workarounds.md#force-deletion-of-caches-overriding-default-cache-eviction-policy
on:
pull_request:
types: [closed]
workflow_dispatch:
jobs:
cleanup:
runs-on: ubuntu-latest
@@ -18,7 +15,7 @@ jobs:
contents: read
steps:
- name: Check out code
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Cleanup
run: |
gh extension install actions/gh-actions-cache

View File

@@ -1,29 +0,0 @@
---
# This is a basic workflow to check the lock on major version (to lock some files on certified versions)
name: Check fileset lock
on: [push, pull_request]
concurrency:
group: check-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
checkmajorversion:
name: Check lock on fileset unalterable_files with generate_filelist_xml.php
runs-on: ubuntu-latest
# Do not run schedule on forks
if: |
github.repository == 'Dolibarr/dolibarr'
|| github.event.schedule == false
steps:
- uses: actions/checkout@v6
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.2
coverage: none # disable xdebug, pcov
- name: Run generate_filelist_xml.php
run: |
# shellcheck disable=2086
dev/build/generate_filelist_xml.php checklock=auto unalterable_files

View File

@@ -1,19 +1,18 @@
name: "CI-PULL-REQUEST"
on: [pull_request]
jobs:
pre-commit:
uses: ./.github/workflows/pre-commit.yml
secrets: inherit
with:
gh_event: ${{ github.event_name }}
#phan:
# uses: ./.github/workflows/phan.yml
# secrets: inherit
# needs: [pre-commit]
# with:
# gh_event: ${{ github.event_name }}
phan:
uses: ./.github/workflows/phan.yml
secrets: inherit
needs: [pre-commit]
with:
gh_event: ${{ github.event_name }}
phpstan:
uses: ./.github/workflows/phpstan.yml
secrets: inherit

View File

@@ -1,19 +1,18 @@
name: "CI-PUSH"
on: [push]
jobs:
pre-commit:
uses: ./.github/workflows/pre-commit.yml
secrets: inherit
with:
gh_event: ${{ github.event_name }}
#phan:
# uses: ./.github/workflows/phan.yml
# secrets: inherit
# needs: [pre-commit]
# with:
# gh_event: ${{ github.event_name }}
phan:
uses: ./.github/workflows/phan.yml
secrets: inherit
needs: [pre-commit]
with:
gh_event: ${{ github.event_name }}
phpstan:
uses: ./.github/workflows/phpstan.yml
secrets: inherit
@@ -26,15 +25,15 @@ jobs:
uses: ./.github/workflows/windows-ci.yml
with:
gh_event: ${{ github.event_name }}
# gh-travis: # Runs travis script on github runner (not on travis)
# if: false
# # needs: [pre-commit, phan]
# # needs: [windows-ci]
# secrets: inherit
# needs: [pre-commit, phan, phpstan]
# uses: ./.github/workflows/gh-travis.yml
# with:
# gh_event: ${{ github.event_name }}
#gh-travis: # Runs travis script on github runner (not on travis)
# if: false
# # needs: [pre-commit, phan]
# # needs: [windows-ci]
# secrets: inherit
# needs: [pre-commit, phan, phpstan]
# uses: ./.github/workflows/gh-travis.yml
# with:
# gh_event: ${{ github.event_name }}
# Note (not tested, from https://github.com/orgs/community/discussions/38361)
# To cancel jobs if one fails, the following action may help

View File

@@ -1,45 +0,0 @@
# Action to prepare the github action
# Go on Dolibarr Organization - Settings - Developer settings - GitHub App (https://github.com/organizations/Dolibarr/settings/apps)
# Create an App: Enter a name + In Home page URL use https://github.com/Dolibarr/dolibarr + Disable webhook
# Set Permissions (see other app for list of permissions)
# Click on generate the private keys
# Click on Install application - choose the repository of the bot
# Go on Organisation - Secret and variables and create a secret PR_SECRET_KEY and copy the content of received private key. Choose the repository access to "Repository Dolibarr".
# Go on Organisation - Secret and variables and create a variable PR_APP_ID and copy the ID of the previously create ID. Choose the repository access to "Repository Dolibarr".
#
name: Set the tag with devcamp label during the session of a devcamp
on:
pull_request_target:
types: [opened]
permissions:
pull-requests: write
issues: write
jobs:
add-label-devcamp:
runs-on: ubuntu-latest
steps:
#- name: Install GitHub CLI
# run: sudo apt-get install gh
- name: Generate a token
id: generate-token
uses: actions/create-github-app-token@v2
with:
app-id: ${{ vars.PR_APP_ID }}
private-key: ${{ secrets.PR_SECRET_KEY }}
- name: Checkout repository
uses: actions/checkout@v4
- name: Assign label
env:
GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}
url: ${{ github.event.pull_request.html_url }}
run: |
echo "env.url=${{env.url}}"
gh pr edit "${{env.url}}" --add-label "Event: DevCamp 2025 XXX"

View File

@@ -1,24 +0,0 @@
# See syntax file on https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
name: "Check tag branch"
on:
push:
tags:
- "18.*"
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Verify tag is on main
run: |
TAG_COMMIT=$(git rev-list -n 1 $GITHUB_REF)
if ! git branch --contains $TAG_COMMIT | grep -q "18.0"; then
echo "The tag must be on branch 18.0"
exit 1
fi

View File

@@ -0,0 +1,38 @@
# See syntax file on https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
name: Doxygen
on:
schedule:
- cron: "0 15 * * *"
workflow_dispatch:
branches:
- develop
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Build
uses: DenverCoder1/doxygen-github-pages-action@v1.2.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: gh-pages
folder: build/html
config_file: build/doxygen/dolibarr-doxygen.doxyfile
# - name: Deploy
# uses: JamesIves/github-pages-deploy-action@v4
# with:
# branch: gh-pages
# folder: build/html # The folder the action should deploy.
# target-folder: docs/html2
#jobs:
# doxygen:
# runs-on: ubuntu-latest
# steps:
# - name: 'Doxygen'
# uses: mattnotmitt/doxygen-action@1.9.5
# with:
# doxyfile-path: build/doxygen

29
.github/workflows/exakat.yml vendored Normal file
View File

@@ -0,0 +1,29 @@
# See syntax file on https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
name: "Exakat analysis"
on:
# execute once a month, the 1st
schedule:
- cron: "0 20 1 * *"
workflow_dispatch:
permissions:
contents: read
jobs:
exakat:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 1
ref: develop
- name: Exakat
uses: docker://exakat/exakat-ga
with:
ignore_rules: 'Classes/UseInstanceof,Constants/ConstantStrangeNames,Performances/PrePostIncrement,Functions/UndefinedFunctions,Functions/WrongNumberOfArguments,Functions/WrongTypeWithCall,Variables/UndefinedVariable,Classes/DontUnsetProperties,Classes/NonPpp,Classes/StaticMethodsCalledFromObject,Classes/UseClassOperator,Functions/UsesDefaultArguments,Php/NoClassInGlobal,Php/ShouldUseCoalesce,Php/WrongTypeForNativeFunction,Structures/AddZero,Structures/DropElseAfterReturn,Structures/IfWithSameConditions,Structures/MergeIfThen,Structures/NestedTernary,Structures/ElseIfElseif,Structures/ExitUsage,Structures/RepeatedPrint,Structures/RepeatedRegex,Structures/SameConditions,Structures/SwitchWithoutDefault,Structures/ShouldMakeTernary,Structures/UselessParenthesis,Structures/UseConstant'
ignore_dirs: '/htdocs/includes/,/htdocs/install/doctemplates/,/build/,/dev/,/doc/,/scripts/,/test/'
file_extensions: php
project_reports: Perfile

View File

@@ -27,15 +27,15 @@ jobs:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php-version:
# matrix:
# php-version:
# # PHPStan requires PHP >= 7.2.
# #- "7.2"
- "8.2"
# - "8.2"
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Checkout travis file
uses: actions/checkout@v5
uses: actions/checkout@v4
- name: Run .travis.yml build script
uses: ktomk/run-travis-yml@v1
with:

View File

@@ -35,14 +35,14 @@ jobs:
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
- 5432:5432
steps:
# git clone dolibarr into GITHUB_WORKSPACE = /home/runner/work/dolibarr/dolibarr
- uses: actions/checkout@v3
with:
fetch-depth: 1
- name: Version PHP
run: |
php -i | head -
@@ -59,7 +59,7 @@ jobs:
sudo apt install apache2 php7.1 php7.1-cli php7.1-curl php7.1-mysql php7.1-pgsql php7.1-gd php7.1-imap php7.1-intl php7.1-ldap php7.1-xml php7.1-mbstring php7.1-xml php7.1-zip libapache2-mod-php7.1
sudo update-alternatives --set php /usr/bin/php7.1
php -i | head -
cd $GITHUB_WORKSPACE
ls $GITHUB_WORKSPACE
composer -n require --ignore-platform-reqs phpunit/phpunit ^7.5 \
@@ -76,7 +76,7 @@ jobs:
sudo rm -fr htdocs/includes/phpunit/php-code-coverage/src/Report/Html
- name: Adding path of binaries tools installed by composer to the PATH
run: |
run: |
export PATH="$GITHUB_WORKSPACE/htdocs/includes/bin:$PATH"
echo $PATH
# We must have a directory bin created by the previous composer call
@@ -107,32 +107,32 @@ jobs:
psql --version
echo "Check pgloader version"
pgloader --version
- name: Create database
run: |
pwd
echo GITHUB_WORKSPACE = $GITHUB_WORKSPACE
echo GITHUB_WORKSPACE = $GITHUB_WORKSPACE
sudo apt-get install -y mysql-client
mysql --version | head -
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e "SELECT VERSION();" | head -
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e "SHOW DATABASES"
echo "Drop and create database"
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e 'DROP DATABASE IF EXISTS travis;'
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e "CREATE DATABASE IF NOT EXISTS travis CHARACTER SET = 'utf8';"
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e "CREATE USER 'travis'@'127.0.0.1' IDENTIFIED BY 'password';"
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e 'GRANT ALL PRIVILEGES ON travis.* TO travis@127.0.0.1;'
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e 'FLUSH PRIVILEGES;'
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -D travis < dev/initdemo/mysqldump_dolibarr_3.5.0.sql
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -D travis -e "UPDATE llx_const set value = '0666' WHERE name = 'MAIN_UMASK';"
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -D travis < dev/initdemo/mysqldump_dolibarr_3.5.0.sql
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -D travis -e "UPDATE llx_const set value = '0666' WHERE name = 'MAIN_UMASK';"
echo "Init postgresql database"
echo "Init postgresql database"
ps fauxww | grep postgres
ls /etc/postgresql/14/main/
sudo chmod -R a+rwx /etc/postgresql/14/main/pg_hba.conf
sudo sed -i -e '/local.*peer/s/postgres/all/' -e 's/peer\|md5/trust/g' /etc/postgresql/14/main/pg_hba.conf
sudo cat /etc/postgresql/14/main/pg_hba.conf
@@ -144,7 +144,7 @@ jobs:
sudo mkdir -p /tmp/pgloader
sudo chmod -R a+rwx /tmp/pgloader/
echo sudo pgloader mysql://root:password@127.0.0.1:32574/travis postgresql://postgres:postgres@127.0.0.1:5432/travis
sudo pgloader mysql://root:password@127.0.0.1:32574/travis postgresql://postgres:postgres@127.0.0.1:5432/travis
echo 'ALTER SEQUENCE llx_accountingaccount_rowid_seq RENAME TO llx_accounting_account_rowid_seq' | psql postgresql://postgres:postgres@127.0.0.1:5432/travis
@@ -190,7 +190,7 @@ jobs:
echo '$'force_install_mainforcehttps=false';' >> $INSTALL_FORCED_FILE
echo '$'force_install_main_data_root=\'/var/www/html\'';' >> $INSTALL_FORCED_FILE
cat $INSTALL_FORCED_FILE
- name: Create document directory
run: |
echo "Create documents directory and set permissions"
@@ -199,9 +199,9 @@ jobs:
sudo chmod -R a+rwx /var/www/html/documents
sudo echo "***** First line of dolibarr.log" > /var/www/html/documents/dolibarr.log
sudo chmod a+rwx /var/www/html/documents/dolibarr.log
- name: Copy app into /var/www
run: |
run: |
sudo cp -r $GITHUB_WORKSPACE/htdocs/. /var/www/html
sudo mv /var/www/html/index.html /var/www/html/index.disabled.html
sudo ln -fs /var/www/html /var/www/htdocs
@@ -217,7 +217,7 @@ jobs:
a2query -s
a2query -m
ls /etc/apache2/sites-available
#sudo cp -f $GITHUB_WORKSPACE/dev/build/travis-ci/apache-githubaction.conf /etc/apache2/sites-available/000-default.conf
#sudo cp -f $GITHUB_WORKSPACE/build/travis-ci/apache-githubaction.conf /etc/apache2/sites-available/000-default.conf
#sudo sed -e "s?%GITHUB_WORKSPACE%?$(pwd)?g" --in-place /etc/apache2/sites-available/000-default.conf
a2ensite 000-default
a2enmod php7.1
@@ -245,7 +245,7 @@ jobs:
# The wget should return a page with line '<meta name="generator" content="Dolibarr installer">
wget -O - --debug http://127.0.0.1 > $GITHUB_WORKSPACE/test.html 2>&1
head -n 200 $GITHUB_WORKSPACE/test.html
echo Logs are...
#sudo cat /tmp/install.log
sudo cat /var/log/apache2/access.log
@@ -287,7 +287,7 @@ jobs:
php upgrade.php 6.0.0 7.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade600700.log
php upgrade2.php 6.0.0 7.0.0 > $GITHUB_WORKSPACE/upgrade600700-2.log
php step5.php 6.0.0 7.0.0 > $GITHUB_WORKSPACE/upgrade600700-3.log
echo "\dt llx_c_paiement" | psql 'postgresql://postgres:postgres@127.0.0.1:5432/travis'
echo "\dt llx_c_payment_term" | psql 'postgresql://postgres:postgres@127.0.0.1:5432/travis'
@@ -324,17 +324,17 @@ jobs:
php upgrade.php 17.0.0 18.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade17001800.log
php upgrade2.php 17.0.0 18.0.0 > $GITHUB_WORKSPACE/upgrade17001800-2.log
php step5.php 17.0.0 18.0.0 > $GITHUB_WORKSPACE/upgrade17001800-3.log
- name: Result of migration scripts
if: always()
run: |
ls -alrt $GITHUB_WORKSPACE/
echo Show content of last file
cat "$(ls -rt $GITHUB_WORKSPACE/ | tail -n1)"
- name: Enabling new modules
run: |
run: |
# Enable modules not enabled into original dump
set -e
cd /var/www/html/install
@@ -361,4 +361,5 @@ jobs:
includes/bin/phpunit -d memory_limit=-1 -c /var/www/test/phpunit/phpunittest.xml /var/www/test/phpunit/AllTests.php
phpunitresult=$?
echo "Phpunit return code = $phpunitresult"
set +e
set +e

View File

@@ -28,7 +28,7 @@ jobs:
- uses: actions/checkout@v3
with:
fetch-depth: 1
- name: Version PHP
run: |
php -i | head -
@@ -38,14 +38,14 @@ jobs:
sudo composer self-update 2.2.18
sudo chmod -R a+rwx /home/runner
composer -n config -g vendor-dir htdocs/includes
sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y pgloader memcached
sudo apt install apache2 php8.1 php8.1-cli php8.1-curl php8.1-mysql php8.1-pgsql php8.1-gd php8.1-imap php8.1-intl php8.1-ldap php8.1-xml php8.1-mbstring php8.1-xml php8.1-zip libapache2-mod-php8.1
sudo update-alternatives --set php /usr/bin/php8.1
php -i | head -
cd $GITHUB_WORKSPACE
ls $GITHUB_WORKSPACE
composer -n require --ignore-platform-reqs phpunit/phpunit ^8 \
@@ -56,7 +56,7 @@ jobs:
sudo rm -fr htdocs/includes/phpunit/php-code-coverage/src/Report/Html
- name: Adding path of binaries tools installed by composer to the PATH
run: |
run: |
export PATH="$GITHUB_WORKSPACE/htdocs/includes/bin:$PATH"
echo $PATH
# We must have a directory bin created by the previous composer call
@@ -87,26 +87,26 @@ jobs:
psql --version
echo "Check pgloader version"
pgloader --version
- name: Create database
run: |
pwd
echo GITHUB_WORKSPACE = $GITHUB_WORKSPACE
echo GITHUB_WORKSPACE = $GITHUB_WORKSPACE
sudo apt-get install -y mysql-client
mysql --version | head -
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e "SELECT VERSION();" | head -
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e "SHOW DATABASES"
echo "Drop and create database"
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e 'DROP DATABASE IF EXISTS travis;'
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e "CREATE DATABASE IF NOT EXISTS travis CHARACTER SET = 'utf8';"
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e "CREATE USER 'travis'@'127.0.0.1' IDENTIFIED BY 'password';"
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e 'GRANT ALL PRIVILEGES ON travis.* TO travis@127.0.0.1;'
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e 'FLUSH PRIVILEGES;'
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -D travis < dev/initdemo/mysqldump_dolibarr_3.5.0.sql
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -D travis < dev/initdemo/mysqldump_dolibarr_3.5.0.sql
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -D travis -e "UPDATE llx_const set value = '0666' WHERE name = 'MAIN_UMASK';"
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -D travis -e "UPDATE llx_const set value = '0666' WHERE name = 'MAIN_UMASK';"
- name: Generate Dolibarr conf file
run: |
@@ -145,7 +145,7 @@ jobs:
echo '$'force_install_mainforcehttps=false';' >> $INSTALL_FORCED_FILE
echo '$'force_install_main_data_root=\'/var/www/html\'';' >> $INSTALL_FORCED_FILE
cat $INSTALL_FORCED_FILE
- name: Create document directory
run: |
echo "Create documents directory and set permissions"
@@ -154,9 +154,9 @@ jobs:
sudo chmod -R a+rwx /var/www/html/documents
sudo echo "***** First line of dolibarr.log" > /var/www/html/documents/dolibarr.log
sudo chmod a+rwx /var/www/html/documents/dolibarr.log
- name: Copy app into /var/www
run: |
run: |
sudo cp -r $GITHUB_WORKSPACE/htdocs/. /var/www/html
sudo mv /var/www/html/index.html /var/www/html/index.disabled.html
sudo ln -fs /var/www/html /var/www/htdocs
@@ -172,7 +172,7 @@ jobs:
a2query -s
a2query -m
ls /etc/apache2/sites-available
#sudo cp -f $GITHUB_WORKSPACE/dev/build/travis-ci/apache-githubaction.conf /etc/apache2/sites-available/000-default.conf
#sudo cp -f $GITHUB_WORKSPACE/build/travis-ci/apache-githubaction.conf /etc/apache2/sites-available/000-default.conf
#sudo sed -e "s?%GITHUB_WORKSPACE%?$(pwd)?g" --in-place /etc/apache2/sites-available/000-default.conf
a2ensite 000-default
a2enmod php8.1
@@ -200,7 +200,7 @@ jobs:
# The wget should return a page with line '<meta name="generator" content="Dolibarr installer">
wget -O - --debug http://127.0.0.1 > $GITHUB_WORKSPACE/test.html 2>&1
head -n 200 $GITHUB_WORKSPACE/test.html
echo Logs are...
#sudo cat /tmp/install.log
sudo cat /var/log/apache2/access.log
@@ -274,17 +274,17 @@ jobs:
php upgrade.php 17.0.0 18.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade17001800.log
php upgrade2.php 17.0.0 18.0.0 > $GITHUB_WORKSPACE/upgrade17001800-2.log
php step5.php 17.0.0 18.0.0 > $GITHUB_WORKSPACE/upgrade17001800-3.log
- name: Result of migration scripts
if: always()
run: |
ls -alrt $GITHUB_WORKSPACE/
echo Show content of last file
cat "$(ls -rt $GITHUB_WORKSPACE/ | tail -n1)"
- name: Enabling new modules
run: |
run: |
# Enable modules not enabled into original dump
set -e
cd /var/www/html/install
@@ -311,7 +311,7 @@ jobs:
includes/bin/phpunit -d memory_limit=-1 -c /var/www/test/phpunit/phpunittest.xml /var/www/test/phpunit/AllTests.php
phpunitresult=$?
echo "Phpunit return code = $phpunitresult"
set +e
set +e
- name: Code quality check - Lint
if: github.event_name == 'push'
@@ -325,9 +325,10 @@ jobs:
- name: Code quality check - phpcs
if: github.event_name == 'push'
run: |
htdocs/includes/bin/phpcs -s -p -d memory_limit=-1 --extensions=php --colors --tab-width=4 --standard=dev/setup/codesniffer/ruleset.xml --encoding=utf-8 --runtime-set ignore_warnings_on_exit true .;
htdocs/includes/bin/phpcs -s -p -d memory_limit=-1 --extensions=php --colors --tab-width=4 --standard=dev/setup/codesniffer/ruleset.xml --encoding=utf-8 --runtime-set ignore_warnings_on_exit true .;
- name: Code quality check - var-dump-check
if: github.event_name == 'push'
run: |
htdocs/includes/bin/var-dump-check --extensions php --tracy --exclude htdocs/includes --exclude test/ --exclude htdocs/public/test/ --exclude htdocs/core/lib/functions.lib.php .

View File

@@ -0,0 +1,13 @@
# See syntax file on https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions
name: Greetings PR
on: [pull_request]
jobs:
greeting:
runs-on: ubuntu-latest
steps:
- uses: actions/first-interaction@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
pr-message: 'Welcome to the Dolibarr army. You are on the road to become an Admiral (see https://wiki.dolibarr.org/index.php/Dolibarr_Project)'

View File

@@ -1,7 +1,4 @@
---
# This is a basic workflow to check code with PHPSTAN tool
name: Phan
on:
# workflow called by the parent workflow ci.yml
workflow_call:
@@ -13,17 +10,17 @@ on:
workflow_dispatch:
concurrency:
group: phan-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
group: phan-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
gh_event: ${{ inputs.gh_event || github.event_name }}
PHAN_CONFIG: dev/tools/phan/config.php
PHAN_BASELINE: dev/tools/phan/baseline.txt
PHAN_MIN_PHP: 7.2
PHAN_MIN_PHP: 7.0
PHAN_QUICK: ${{ github.event.schedule && '' || '--quick' }}
GITHUB_JSON: ${{ toJSON(github) }} # Helps in debugging Github Action
name: phan
jobs:
phan:
name: Run phan
@@ -33,33 +30,26 @@ jobs:
github.repository == 'Dolibarr/dolibarr'
|| github.event.schedule == false
steps:
- uses: actions/checkout@v6
# Another method to get the list of changed files
# It sets the variable steps.changed-php.outputs.all_changed_files for other steps
- name: Get all changed php files (if PR)
id: changed-php
if: env.gh_event == 'pull_request'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./.github/scripts/get_changed_php.sh
- uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.2
coverage: none # disable xdebug, pcov
tools: phan:5.5.2
tools: cs2pr,phan:5.5.2
- name: Run Phan analysis
if: "! cancelled() && steps.changed-php.outputs.any_changed == 'true'"
env:
ALL_CHANGED_FILES: ${{ steps.changed-php.outputs.all_changed_files }}
# shellcheck disable=2086
run: |
# shellcheck disable=2086
> /tmp/phpstan-files.txt
for f in $ALL_CHANGED_FILES; do echo "$f" >> /tmp/phan-files.txt; done
cat /tmp/phan-files.txt
echo phan --file-list /tmp/phan-files.txt $PHAN_QUICK -k "$PHAN_CONFIG" -B "$PHAN_BASELINE" --analyze-twice --minimum-target-php-version "$PHAN_MIN_PHP" --output-mode=github
phan --file-list /tmp/phan-files.txt $PHAN_QUICK -k "$PHAN_CONFIG" -B "$PHAN_BASELINE" --analyze-twice --minimum-target-php-version "$PHAN_MIN_PHP" --output-mode=github
phan $PHAN_QUICK -k "$PHAN_CONFIG" -B "$PHAN_BASELINE" --analyze-twice --minimum-target-php-version "$PHAN_MIN_PHP" --output-mode=checkstyle -o _phan.xml
- name: Add results to PR
if: ${{ always() }}
run: |
cs2pr --prepend-filename --prepend-source --notices-as-warnings _phan.xml
- name: Provide phan log as artifact
uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: phan-srcrt
# path: ${{ github.workspace }}/phan.log
path: ${{ github.workspace }}/_phan.xml
retention-days: 2

32
.github/workflows/phpcs.yml.disabled vendored Normal file
View File

@@ -0,0 +1,32 @@
name: "PHPCS"
on:
push:
pull_request:
paths:
- "**.php"
- "phpcs.xml"
- ".github/workflows/phpcs.yml"
jobs:
phpcs:
runs-on: ubuntu-latest
steps:
# Get git sources
- uses: actions/checkout@v4
with:
fetch-depth: 50 # important!
# we may use whatever way to install phpcs, just specify the path on the next step
# however, curl seems to be the fastest
- name: Install PHP_CodeSniffer
run: |
curl -OL https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar
php phpcs.phar --version
- uses: thenabeel/action-phpcs@v8
with:
files: "**.php" # you may customize glob as needed
phpcs_path: php phpcs.phar
standard: dev/setup/codesniffer/ruleset.xml
fail_on_warnings: false

View File

@@ -1,7 +1,6 @@
---
# This is a basic workflow to check code with PHPSTAN tool
name: PHPStan
# Controls when the workflow will run
on:
# workflow called by the parent workflow ci.yml
@@ -14,9 +13,8 @@ on:
workflow_dispatch:
concurrency:
group: phpstan-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
group: stan-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
gh_event: ${{ inputs.gh_event || github.event_name }}
CACHE_KEY_PART: ${{ ( inputs.gh_event == 'pull_request' || github.event_name == 'pull_request' ) && format('{0}-{1}', github.base_ref, github.head_ref) || github.ref_name }}
@@ -37,7 +35,7 @@ jobs:
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v6
- uses: actions/checkout@v4
# Get PHP and addons
- name: Setup PHP
id: setup-php
@@ -45,14 +43,14 @@ jobs:
with:
php-version: ${{ matrix.php-version }}
coverage: none # disable xdebug, pcov
tools: phpstan:2.1.12, cs2pr
tools: phpstan:2.0, cs2pr
extensions: calendar, json, imagick, gd, zip, mbstring, intl, opcache, imap,
mysql, pgsql, sqlite3, ldap, xml, mcrypt
# Restore old cache
- name: Restore phpstan cache
id: cache
uses: actions/cache/restore@v5
uses: actions/cache/restore@v4
with:
path: ./.github/tmp
key: phpstan-cache-${{ matrix.php-version }}-${{ env.CACHE_KEY_PART }}-${{
@@ -62,64 +60,34 @@ jobs:
phpstan-cache-${{ matrix.php-version }}-${{ github.head_ref }}-
phpstan-cache-${{ matrix.php-version }}-${{ github.base_ref }}-
phpstan-cache-${{ matrix.php-version }}-
- name: Show debug into
run: cd ./.github/tmp && ls -al
# Another method to get the list of changed files
# It sets the variable steps.changed-php.outputs.all_changed_files for other steps
- name: Get all changed php files (if PR)
id: changed-php
if: env.gh_event == 'pull_request'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./.github/scripts/get_changed_php.sh
#- name: Get changed PHP files
# id: files
# run: |
# git fetch origin ${{ github.base_ref }}
# FILES=$(git diff --name-only "origin/${{ github.base_ref }}...HEAD" | grep '\.php$' || true)
# {
# echo "files<<EOF"
# echo "$FILES"
# echo "EOF"
# } > "$GITHUB_OUTPUT"
# Run PHPStan
- name: Run PHPStan
id: phpstan
if: "! cancelled() && steps.changed-php.outputs.any_changed == 'true'"
env:
ALL_CHANGED_FILES: ${{ steps.changed-php.outputs.all_changed_files }}
# shellcheck disable=2086
run: |
# shellcheck disable=2086
> /tmp/phpstan-files.txt
echo "$ALL_CHANGED_FILES" >> /tmp/phpstan-files.txt
cat /tmp/phpstan-files.txt
phpstan -vvv analyse --error-format=checkstyle --memory-limit 7G -a dev/build/phpstan/bootstrap_action.php ${ALL_CHANGED_FILES} | tee _stan.xml | cs2pr --graceful-warnings
phpstan -vvv analyse --error-format=checkstyle --memory-limit 7G -a build/phpstan/bootstrap_action.php | tee _stan.xml | cs2pr --graceful-warnings
# continue-on-error: true
# Save cache
- name: Save phpstan cache
uses: actions/cache/save@v5
uses: actions/cache/save@v4
if: ${{ success() || ( ! cancelled() && steps.cache.outputs.cache-hit != 'true' ) }}
with:
path: ./.github/tmp
key: phpstan-cache-${{ matrix.php-version }}-${{ env.CACHE_KEY_PART }}-${{
github.run_id }}
- name: Provide phpstan log as artifact
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v4
if: ${{ always() }}
with:
name: phpstan-srcrt
path: ${{ github.workspace }}/_stan.xml
retention-days: 2
# Run PHPStan generate baseline
# - name: Run PHPStan generate baseline
# id: phpstan-baseline
# if: ${{ success() }}
# run: |
# phpstan -vv analyse --memory-limit 7G -a dev/build/phpstan/bootstrap_action.php --generate-baseline dev/build/phpstan/phpstan-baseline.neon
# phpstan -vv analyse --memory-limit 7G -a build/phpstan/bootstrap_action.php --generate-baseline build/phpstan/phpstan-baseline.neon

View File

@@ -1,5 +1,3 @@
---
# This run the script to update the phpstan baseline file dev/build/phpstan/phpstan-baseline.neon
name: 'PHPStan baseline'
on:
@@ -33,13 +31,13 @@ jobs:
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ env.PHP_VERSION }}
coverage: none # disable xdebug, pcov
tools: phpstan:2.1.12, cs2pr
tools: phpstan:2.0, cs2pr
extensions: calendar, json, imagick, gd, zip, mbstring, intl, opcache, imap,
mysql, pgsql, sqlite3, ldap, xml, mcrypt
env:
@@ -47,7 +45,7 @@ jobs:
# Restore old cache
- name: Restore phpstan cache
id: cache
uses: actions/cache/restore@v5
uses: actions/cache/restore@v4
with:
path: ./.github/tmp
key: phpstan-cache-${{ env.PHP_VERSION }}-${{ env.CACHE_KEY_PART }}-${{
@@ -62,8 +60,8 @@ jobs:
github_token: ${{ env.GH_TOKEN }}
phpstan_path: phpstan
configuration_path: phpstan.neon.dist
phpstan_additional_arguments: --memory-limit 7G -a dev/build/phpstan/bootstrap_action.php
baseline_path: dev/build/phpstan/phpstan-baseline.neon
phpstan_additional_arguments: --memory-limit 7G -a build/phpstan/bootstrap_action.php
baseline_path: build/phpstan/phpstan-baseline.neon
commit_name: Dolibot
commit_email: dolibarr-bot@users.noreply.github.com
commit_message: PHPStan > Update baseline

View File

@@ -1,6 +1,5 @@
---
name: pre-commit
on:
# workflow called by the parent workflow ci.yml
workflow_call:
@@ -12,11 +11,11 @@ on:
workflow_dispatch:
concurrency:
group: pre-commit-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
group: pre-commit-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref
}}
cancel-in-progress: true
env:
gh_event: ${{ inputs.gh_event || github.event_name }}
jobs:
pre-commit:
runs-on: ubuntu-latest
@@ -24,33 +23,16 @@ jobs:
RAW_LOG: pre-commit.log
CS_XML: pre-commit.xml
steps:
#- name: Install required tools
# run: sudo apt-get update && sudo apt-get install cppcheck
# if: false
- name: Install required tools
run: sudo apt-get update && sudo apt-get install cppcheck
if: false
# Checkout git sources to analyze
- uses: actions/checkout@v6
- uses: actions/checkout@v4
# Try to get the list of modified files into steps.changed-php.outputs.all_changed_files
#- name: Get changed files
# id: changed-files
# uses: actions/github-script@v7
# with:
# script: |
# const base = context.payload.pull_request?.base?.sha;
# const head = context.payload.pull_request?.head?.sha;
# const response = await github.rest.repos.compareCommits({
# owner: context.repo.owner,
# repo: context.repo.repo,
# base,
# head
# });
#
# const changedFiles = response.data.files.map(file => file.filename);
# core.setOutput("all_changed_files", changedFiles.join(" "));
# Another method to get the list of changed files
# The next uses the git API because there is no clone yet.
# It sets the variable steps.changed-php.outputs.all_changed_files for other steps
# This is faster for a big repo.
- name: Get all changed php files (if PR)
id: changed-php
if: env.gh_event == 'pull_request'
@@ -58,23 +40,20 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./.github/scripts/get_changed_php.sh
#- name: Print changed files
# run: echo "Changed files are ${{ steps.changed-files.outputs.all_changed_files }}"
# Action setup-python needs a requirements.txt or pyproject.toml
# This ensures one of them exists.
- name: Create requirements.txt if no requirements.txt or pyproject.toml
run: |-
[ -r requirements.txt ] || [ -r pyproject.toml ] || touch requirements.txt
# Install python and pre-commit tool
- uses: actions/setup-python@v6
- uses: actions/setup-python@v5
with:
cache: pip
python-version: "3.11"
- run: python -m pip install pre-commit
# Restore previous cache of precommit
- uses: actions/cache/restore@v5
- uses: actions/cache/restore@v4
with:
path: ~/.cache/pre-commit/
key: pre-commit-4|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }}
@@ -108,16 +87,12 @@ jobs:
coverage: none # disable xdebug, pcov
tools: phpcs
# Install perltidy and perlcritic
#- name: Install perltidy and perlcritic
# run: sudo apt-get update && sudo apt-get install -y perltidy libperl-critic-perl
# Run all the precommit tools (defined into pre-commit-config.yaml).
# We can force exclusion of some of them here.
- name: Run pre-commit hooks
env:
# SKIP is used by pre-commit to not execute certain hooks
SKIP: no-commit-to-branch,php-cs,php-cbf,trailing-whitespace,end-of-file-fixer,shellcheck
SKIP: no-commit-to-branch,php-cs,php-cbf,trailing-whitespace,end-of-file-fixer
run: |
set -o pipefail
pre-commit gc
@@ -156,20 +131,20 @@ jobs:
ls -l ~/.cache/pre-commit/
- name: Convert Raw Log to Annotations
uses: mdeweerd/logToCheckStyle@v2025.11.2
uses: mdeweerd/logToCheckStyle@v2024.3.5
if: ${{ failure() }}
with:
in: ${{ env.RAW_LOG }}
# Save the precommit cache
- uses: actions/cache/save@v5
- uses: actions/cache/save@v4
if: ${{ ! cancelled() }}
with:
path: ~/.cache/pre-commit/
key: pre-commit-4|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }}
# Upload result log files of precommit into the Artifact shared store
- name: Provide log as artifact
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v4
if: ${{ ! cancelled() }}
with:
name: precommit-logs

View File

@@ -1,6 +1,5 @@
---
name: Win CI
# yamllint disable-line rule:truthy
on:
# workflow called by the parent workflow ci.yml
@@ -26,7 +25,6 @@ env:
PHP_INI_SCAN_DIR: C:\myphpini
CKEY: win-ci-2
GITHUB_JSON: ${{ toJSON(github) }} # Helps in debugging Github Action
jobs:
win-test:
strategy:
@@ -37,7 +35,7 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
@@ -57,9 +55,9 @@ jobs:
# Restore cache
- name: Restore cache
id: cache
uses: actions/cache/restore@v5
uses: actions/cache/restore@v4
env:
HASH: ${{ hashFiles('htdocs/install/**', 'htdocs/filefunc.inc.php', 'htdocs/version.inc.php') }}
HASH: ${{ hashFiles('htdocs/install/**', 'htdocs/filefunc.inc.php') }}
KEY_ROOT: ${{ matrix.os }}-${{ env.ckey }}-${{ matrix.php_version }}
with:
# See https://github.com/actions/cache/issues/1275#issuecomment-1925217178
@@ -167,13 +165,13 @@ jobs:
for /f "tokens=2 delims==" %%A in ('doskey /m:err') do EXIT /B %%A
- name: Convert Raw Log to Annotations
uses: mdeweerd/logToCheckStyle@v2025.11.2
uses: mdeweerd/logToCheckStyle@v2024.3.5
if: ${{ failure() }}
with:
in: ${{ env.PHPUNIT_LOG }}
- name: Provide dolibarr and phpunit logs as artifact
uses: actions/upload-artifact@v6
uses: actions/upload-artifact@v4
if: ${{ ! cancelled() }}
with:
name: win-ci-logs
@@ -187,7 +185,7 @@ jobs:
# Save cache
- name: Save cache
uses: actions/cache/save@v5
uses: actions/cache/save@v4
if: ${{ ! cancelled() }}
with:
# See https://github.com/actions/cache/issues/1275#issuecomment-1925217178

9
.gitignore vendored
View File

@@ -47,12 +47,11 @@ htdocs/.well-known/apple-developer-merchantid-domain-association
/output/
# Node Modules
dev/build/yarn-error.log
dev/build/node_modules/
build/yarn-error.log
build/node_modules/
node_modules/
vendor/
php-vendor
tmp/
#yarn
@@ -85,8 +84,8 @@ doc/install.lock
/INI_PHPUNIT
# ignore cache builds
/dev/build/phpstan/phpstan
/dev/build/phpstan/bootstrap_custom.php
/build/phpstan/phpstan
/build/phpstan/bootstrap_custom.php
phpstan_custom.neon
/.php-cs-fixer.cache
/.php_cs.cache

View File

@@ -1,9 +1,6 @@
# This is mapping list between real user name/email and entry into sources files
# If you don't want to have your real email appears here, just send a Pull Request to
# replace the second field between <> with <secret>
#
# This files allows to have several profiles (the second part) matched to the same name/email (the first part).
#
Laurent Destailleur <eldy@destailleur.fr> Laurent Destailleur <eldy@users.sourceforge.net>
Laurent Destailleur <eldy@destailleur.fr> eldy <eldy@destailleur.fr>
Laurent Destailleur <eldy@destailleur.fr> Laurent Destailleur <ldestailleur@teclib.com>

View File

@@ -1,9 +1,9 @@
---
exclude: (?x)^( htdocs/includes/ckeditor/.*|htdocs/public/includes/ckeditor/.*|(\.(?!github/workflows)[^/]*/.*))$
exclude: (?x)^( htdocs/includes/ckeditor/.*|(\.(?!github/workflows)[^/]*/.*))$
repos:
# Several miscellaneous checks and fix (on yaml files, end of files fix)
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
rev: v4.6.0
hooks:
# This hook tests the name of the branch and return an error if the name is
# 'develop' or an official version 'x.y'
@@ -51,8 +51,8 @@ repos:
exclude:
(?x)^( dev/tools/dolibarr-postgres2mysql.php |test/other/test_serialize.php
|test/phpunit/textutf8.txt |test/phpunit/textiso.txt |htdocs/includes/.*
|htdocs/modulebuilder/template/.* |dev/build/debian/dolibarr.postrm |dev/build/debian/dolibarr.postinst
|dev/build/debian/dolibarr.config )$
|htdocs/modulebuilder/template/.* |build/debian/dolibarr.postrm |build/debian/dolibarr.postinst
|build/debian/dolibarr.config )$
# Fix the first UTF8 byte
- id: fix-byte-order-marker
# Check that there are no files that have are the same when uppercased (conflict on windows)
@@ -60,15 +60,15 @@ repos:
# Gitleaks is a SAST tool for detecting and preventing hardcoded secrets like passwords, api keys, and tokens in git repos
- repo: https://github.com/gitleaks/gitleaks.git
rev: v8.29.0
rev: v8.16.1
hooks:
- id: gitleaks
# Check github actions
#- repo: https://github.com/rhysd/actionlint
# rev: v1.7.8
# hooks:
# - id: actionlint
- repo: https://github.com/rhysd/actionlint
rev: v1.7.3
hooks:
- id: actionlint
# Beautify shell scripts
#- repo: https://github.com/lovesegfault/beautysh.git
@@ -137,8 +137,6 @@ repos:
files: \.(php)$
args: [--standard=dev/setup/codesniffer/ruleset.xml]
- id: php-cs
exclude: |
(?x)^(htdocs/includes/.*)$
files: \.(php)$
args:
[
@@ -170,7 +168,7 @@ repos:
# Prettier (format code, only for non common files)
- repo: https://github.com/pre-commit/mirrors-prettier
rev: v3.1.0
rev: v3.0.3
hooks:
- id: prettier
stages: [manual]
@@ -193,7 +191,7 @@ repos:
# Check format of yaml files
- repo: https://github.com/adrienverge/yamllint.git
rev: v1.37.1
rev: v1.35.1
hooks:
- id: yamllint
args:
@@ -203,7 +201,7 @@ repos:
# Execute codespell to fix typo errors (setup of codespell into dev/tools/codespell/)
- repo: https://github.com/codespell-project/codespell
rev: v2.4.1
rev: v2.3.0
hooks:
- id: codespell
# Due to a current limitation of configuration files,
@@ -245,15 +243,15 @@ repos:
- ned
# Check some shell scripts
#- repo: https://github.com/shellcheck-py/shellcheck-py
# rev: v0.11.0.1
# hooks:
# - id: shellcheck
# args: [-W, "100"]
- repo: https://github.com/shellcheck-py/shellcheck-py
rev: v0.10.0.1
hooks:
- id: shellcheck
args: [-W, "100"]
# Check sql file syntax
- repo: https://github.com/sqlfluff/sqlfluff
rev: 3.3.1
rev: 3.1.0
hooks:
- id: sqlfluff-lint
stages: [pre-commit, manual] # manual needed for ci
@@ -274,22 +272,3 @@ repos:
|htdocs/install/pgsql/functions/functions.*\.sql
|htdocs/modulebuilder/template/sql/.*\.sql
)$
#- repo: https://github.com/perltidy/perltidy
# rev: '20250105.03'
# hooks:
# - id: perltidy
# # virtualmin excuded - reason https://github.com/Dolibarr/dolibarr/pull/36370#issuecomment-3565101823
# exclude: (?x)^
# (dev/build/perl/virtualmin/dolibarr.pl
# )$
# args: [ --tabs, --nola ]
#- repo: https://github.com/henryykt/pre-commit-perl
# rev: v0.0.5
# hooks:
# - id: perlcritic
# # virtualmin excluded - reason https://github.com/Dolibarr/dolibarr/pull/36370#issuecomment-3565101823
# exclude: (?x)^
# (dev/build/perl/virtualmin/dolibarr.pl
# )$

View File

@@ -37,26 +37,26 @@ cache:
jobs:
fast_finish: true
allow_failures:
- php: 'latest'
- php: '8.4'
include:
- stage: PHP min and max
if: type = push
php: '7.2'
php: '7.1'
env:
- DB=postgresql
- TRAVIS_PHP_VERSION=7.2
- TRAVIS_PHP_VERSION=7.1
- stage: PHP min and max
if: type = pull_request OR type = push
php: '8.3'
env:
- DB=mysql
- TRAVIS_PHP_VERSION=8.3
- stage: PHP 8.4
if: type = push AND branch = develop
php: '8.4'
env:
- DB=mysql
- TRAVIS_PHP_VERSION=8.4
- stage: PHP latest
if: type = push AND branch = develop
php: 'latest'
env:
- DB=mysql
- TRAVIS_PHP_VERSION=latest
notifications:
email:
@@ -85,9 +85,6 @@ before_install:
if [ "$TRAVIS_PHP_VERSION" = '7.1' ]; then
sudo apt install unzip apache2 php7.1 php7.1-cli php7.1-curl php7.1-mysql php7.1-pgsql php7.1-gd php7.1-imap php7.1-intl php7.1-ldap php7.1-xml php7.1-mbstring php7.1-xml php7.1-zip libapache2-mod-php7.1
fi
if [ "$TRAVIS_PHP_VERSION" = '7.2' ]; then
sudo apt install unzip apache2 php7.2 php7.2-cli php7.2-curl php7.2-mysql php7.2-pgsql php7.2-gd php7.2-imap php7.2-intl php7.2-ldap php7.2-xml php7.2-mbstring php7.2-xml php7.2-zip libapache2-mod-php7.2
fi
if [ "$TRAVIS_PHP_VERSION" = '8.1' ]; then
sudo apt install unzip apache2 php8.1 php8.1-cli php8.1-curl php8.1-mysql php8.1-pgsql php8.1-gd php8.1-imap php8.1-intl php8.1-ldap php8.1-xml php8.1-mbstring php8.1-xml php8.1-zip libapache2-mod-php8.1
fi
@@ -100,9 +97,6 @@ before_install:
if [ "$TRAVIS_PHP_VERSION" = '8.4' ]; then
sudo apt install unzip apache2 php8.4 php8.4-cli php8.4-curl php8.4-mysql php8.4-pgsql php8.4-gd php8.4-imap php8.4-intl php8.4-ldap php8.4-xml php8.4-mbstring php8.4-xml php8.4-zip libapache2-mod-php8.4
fi
if [ "$TRAVIS_PHP_VERSION" = 'latest' ]; then
sudo apt install unzip apache2 php8.4 php8.4-cli php8.4-curl php8.4-mysql php8.4-pgsql php8.4-gd php8.4-imap php8.4-intl php8.4-ldap php8.4-xml php8.4-mbstring php8.4-xml php8.4-zip libapache2-mod-php8.4
fi
- |
echo Install pgsql if run is for pgsql
@@ -112,8 +106,8 @@ before_install:
#ps fauxww | grep postgres
ls /etc/postgresql/13/main/
sudo sed -i -e '/local.*peer/s/postgres/all/' -e 's/peer\|md5/trust/g' /etc/postgresql/14/main/pg_hba.conf
sudo cat /etc/postgresql/14/main/pg_hba.conf
sudo sed -i -e '/local.*peer/s/postgres/all/' -e 's/peer\|md5/trust/g' /etc/postgresql/13/main/pg_hba.conf
sudo cat /etc/postgresql/13/main/pg_hba.conf
sudo service postgresql restart
@@ -134,9 +128,6 @@ install:
if [ "$TRAVIS_PHP_VERSION" = '7.1' ]; then
sudo update-alternatives --set php /usr/bin/php7.1
fi
if [ "$TRAVIS_PHP_VERSION" = '7.2' ]; then
sudo update-alternatives --set php /usr/bin/php7.2
fi
if [ "$TRAVIS_PHP_VERSION" = '8.1' ]; then
sudo update-alternatives --set php /usr/bin/php8.1
fi
@@ -157,6 +148,7 @@ install:
#sudo apt install composer
composer -V
sudo composer -n config -g vendor-dir htdocs/includes
sudo composer -n config audit.block-insecure false
sudo chmod -R a+rwx /home/travis/.config/composer
echo
@@ -180,7 +172,7 @@ install:
squizlabs/php_codesniffer ^3
fi
# phpunit 9 is required for php 8
if [ "$TRAVIS_PHP_VERSION" = '8.0' ] || [ "$TRAVIS_PHP_VERSION" = '8.1' ] || [ "$TRAVIS_PHP_VERSION" = '8.2' ] || [ "$TRAVIS_PHP_VERSION" = '8.3' ] || [ "$TRAVIS_PHP_VERSION" = '8.4' ] || [ "$TRAVIS_PHP_VERSION" = 'latest' ]; then
if [ "$TRAVIS_PHP_VERSION" = '8.0' ] || [ "$TRAVIS_PHP_VERSION" = '8.1' ] || [ "$TRAVIS_PHP_VERSION" = '8.2' ] || [ "$TRAVIS_PHP_VERSION" = '8.3' ] || [ "$TRAVIS_PHP_VERSION" = '8.4' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then
sudo composer self-update 2.4.4
composer -n require --ignore-platform-reqs phpunit/phpunit ^8 \
php-parallel-lint/php-parallel-lint ^1.2 \
@@ -283,7 +275,6 @@ before_script:
#echo '\d llx_c_country' | psql 'postgresql://postgres:postgres@127.0.0.1:5432/travis'
# Create pgsql compatibility functions
echo "Load functions.sql (may generated errors for tables that does not exists yet)"
psql 'postgresql://postgres:postgres@127.0.0.1:5432/travis' < htdocs/install/pgsql/functions/functions.sql
fi
echo
@@ -327,7 +318,7 @@ before_script:
- |
echo "Setting up Apache"
sudo sed -i -e "s,www-data,travis,g" /etc/apache2/envvars
sudo cp -f dev/build/travis-ci/apache.conf /etc/apache2/sites-available/000-default.conf
sudo cp -f build/travis-ci/apache.conf /etc/apache2/sites-available/000-default.conf
sudo sed -e "s?%TRAVIS_BUILD_DIR%?$(pwd)?g" --in-place /etc/apache2/sites-available/000-default.conf
sudo cat /etc/apache2/sites-available/000-default.conf
sudo service apache2 restart
@@ -525,19 +516,13 @@ script:
php upgrade.php 20.0.0 21.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade20002100.log || cat $TRAVIS_BUILD_DIR/upgrade20002100.log
php upgrade2.php 20.0.0 21.0.0 > $TRAVIS_BUILD_DIR/upgrade20002100-2.log || cat $TRAVIS_BUILD_DIR/upgrade20002100-2.log
php step5.php 20.0.0 21.0.0 > $TRAVIS_BUILD_DIR/upgrade20002100-3.log || cat $TRAVIS_BUILD_DIR/upgrade20002100-3.log
php upgrade.php 21.0.0 22.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade21002200.log || cat $TRAVIS_BUILD_DIR/upgrade21002200.log
php upgrade2.php 21.0.0 22.0.0 > $TRAVIS_BUILD_DIR/upgrade21002200-2.log || cat $TRAVIS_BUILD_DIR/upgrade21002200-2.log
php step5.php 21.0.0 22.0.0 > $TRAVIS_BUILD_DIR/upgrade21002200-3.log || cat $TRAVIS_BUILD_DIR/upgrade21002200-3.log
php upgrade.php 22.0.0 23.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade22002300.log || cat $TRAVIS_BUILD_DIR/upgrade22002300.log
php upgrade2.php 22.0.0 23.0.0 > $TRAVIS_BUILD_DIR/upgrade22002300-2.log || cat $TRAVIS_BUILD_DIR/upgrade22002300-2.log
php step5.php 22.0.0 23.0.0 > $TRAVIS_BUILD_DIR/upgrade22002300-3.log || cat $TRAVIS_BUILD_DIR/upgrade22002300-3.log
set +e
echo
- |
echo Show some debug info, like table content, or migration log from some versions
echo '\d llx_blockedlog' | psql 'postgresql://postgres:postgres@127.0.0.1:5432/travis'
cat $TRAVIS_BUILD_DIR/upgrade500600.log
echo Show some debug info like table content or log
#echo '\d llx_adherent' | psql 'postgresql://postgres:postgres@127.0.0.1:5432/travis'
cat $TRAVIS_BUILD_DIR/upgrade18001900.log
cat $TRAVIS_BUILD_DIR/upgrade19002000.log
echo
@@ -557,7 +542,6 @@ script:
php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_RECEPTION,MAIN_MODULE_RECRUITMENT >> $TRAVIS_BUILD_DIR/enablemodule.log
php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_KnowledgeManagement,MAIN_MODULE_EventOrganization,MAIN_MODULE_PARTNERSHIP >> $TRAVIS_BUILD_DIR/enablemodule.log
php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_EmailCollector >> $TRAVIS_BUILD_DIR/enablemodule.log
php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_BlockedLog >> $TRAVIS_BUILD_DIR/enablemodule.log
echo $?
cd -
set +e

View File

@@ -44,6 +44,12 @@ source_file = htdocs/langs/en_US/blockedlog.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:bookmarks]
file_filter = htdocs/langs/<lang>/bookmarks.lang
source_file = htdocs/langs/en_US/bookmarks.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:boxes]
file_filter = htdocs/langs/<lang>/boxes.lang
source_file = htdocs/langs/en_US/boxes.lang
@@ -98,6 +104,12 @@ source_file = htdocs/langs/en_US/datapolicy.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:deliveries]
file_filter = htdocs/langs/<lang>/deliveries.lang
source_file = htdocs/langs/en_US/deliveries.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:dict]
file_filter = htdocs/langs/<lang>/dict.lang
source_file = htdocs/langs/en_US/dict.lang
@@ -134,6 +146,12 @@ source_file = htdocs/langs/en_US/exports.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:help]
file_filter = htdocs/langs/<lang>/help.lang
source_file = htdocs/langs/en_US/help.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:holiday]
file_filter = htdocs/langs/<lang>/holiday.lang
source_file = htdocs/langs/en_US/holiday.lang
@@ -266,6 +284,12 @@ source_file = htdocs/langs/en_US/partnership.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:paybox]
file_filter = htdocs/langs/<lang>/paybox.lang
source_file = htdocs/langs/en_US/paybox.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:paypal]
file_filter = htdocs/langs/<lang>/paypal.lang
source_file = htdocs/langs/en_US/paypal.lang
@@ -356,12 +380,6 @@ source_file = htdocs/langs/en_US/stripe.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:subtotals]
file_filter = htdocs/langs/<lang>/subtotals.lang
source_file = htdocs/langs/en_US/subtotals.lang
source_lang = en_US
type = MOZILLAPROPERTIES
[o:dolibarr-association:p:dolibarr:r:supplier_proposal]
file_filter = htdocs/langs/<lang>/supplier_proposal.lang
source_file = htdocs/langs/en_US/supplier_proposal.lang

View File

@@ -12,16 +12,11 @@ These dependencies are listed in the bottom of this file.
The Dolibarr images resources (available in the doc directory) is distributed under the Creative Commons Attribution 4.0 International license (CC BY 4.0).
Trademark usage
---------------
The name Dolibarr is a trademark initially registered by Laurent Destailleur and ceased to the Dolibarr foundation. You can use the name Dolibarr
for your own need as long as you follow the rules defined on the page https://wiki.dolibarr.org/index.php/Rules_to_use_the_brand_name_%22Dolibarr%22
The use of the name DoliStore is also restricted to the same rules defined on https://wiki.dolibarr.org/index.php/Rules_to_use_the_brand_name_%22Dolibarr%22
License of third party libraries
--------------------------------
Licence of dependencies of third-party components used by Dolibarr (all compatible with the Licence of Dolibarr):
@@ -44,6 +39,7 @@ PHP-Iban 4.1.1 LGPL-3+ Yes
PHP-Imap 2.7.2 MIT License Yes Library to use IMAP with OAuth
PHPoAuthLib 0.8.2 MIT License Yes Library to provide oauth1 and oauth2 to different service
PHPPrintIPP 1.3 GPL-2+ Yes Library to send print IPP requests
PrestaShop-WS-Lib 94feb5f OSL-3.0 No Library providing API client for Prestashop.
PSR/Logs 1.0 MIT License Yes Library for logs (used by DebugBar)
PSR/simple-cache ? MIT License Yes Library for cache (used by PHPSpreadSheet)
Restler 3.1.1 LGPL-3+ Yes Library to develop REST Web services (+ swagger-ui js lib into dir explorer)
@@ -52,17 +48,18 @@ Swift Mailer 5.4.2-DEV MIT License Yes
Symfony/var-dumper ??? MIT License Yes Library to make var dump (used by DebugBar)
Stripe 10.7.0 MIT Licence Yes Library for Stripe module
TCPDF 6.7.5 LGPL-3+ Yes PDF generation
TCPDI 1.1.0 LGPL-3+ / Apache 2.0 Yes FPDI replacement
TCPDI 1.0.0 LGPL-3+ / Apache 2.0 Yes FPDI replacement
bacon, dasprid, swiss-qr-bill, kmukku, symfony/validator
JS libraries:
Ace 1.43.12 BSD Yes JS library to get code syntaxique coloration in a textarea (Must take src dir into https://github.com/ajaxorg/ace-builds/).
Ace 1.4.14 BSD Yes JS library to get code syntaxique coloration in a textarea.
ChartJS 3.7.1 MIT License Yes JS library for graph
CKEditor 4.22.1 LGPL-2.1+ Yes Editor WYSIWYG
jQuery 3.6.4 MIT License Yes JS library
jQuery UI 1.13.2 GPL and MIT License Yes JS library plugin UI
jQuery select2 4.0.13 GPL and Apache License Yes JS library plugin for sexier multiselect. Warning: 4.0.6+ create troubles without patching css
jQuery blockUI 2.70.0 GPL and MIT License Yes JS library plugin blockUI (to use ajax popups)
jQuery Colorpicker 1.1 MIT License Yes JS library for color picker for a defined list of colors
jQuery JCrop 0.9.8 GPL and MIT License Yes JS library plugin Crop (to crop images)
jQuery Jeditable 1.7.1 GPL and MIT License Yes JS library plugin jeditable (to edit in place)
@@ -71,9 +68,13 @@ jQuery jPicker 1.1.6 GPL and MIT License Yes
jQuery jqueryFileTree 1.0.1 GPL and MIT License Yes JS library for filetree
jQuery jquerytreeview 1.4.1 MIT License Yes JS library for filetree
jQuery TableDnD 0.6 GPL and MIT License Yes JS library plugin TableDnD (to reorder table rows)
jQuery Timepicker 1.1.0 GPL and MIT License Yes JS library Timepicker addon for Datepicker
jsGanttImproved 2.8.10 BSD License Yes JS library (to build Gantt reports)
SwaggerUI 2.2.10 GPL-2+ Yes JS library to offer the REST API explorer
Image libraries:
Octicons 8.1 MIT Yes
Font libraries:
Fontawesome 5.13 Font Awesome Free Licence Yes

661
ChangeLog
View File

@@ -2,660 +2,6 @@
English Dolibarr ChangeLog
--------------------------------------------------------------
***** ChangeLog for 23.0.1 compared to 23.0.0 *****
FIX: Removed SQL error on install process.
FIX: #37412 Better fix
FIX: Added user filtering for displaying leave in the calendar (#37385)
FIX: Bad value when entering price with multicurrency included tax.
FIX: Better compatibility for module using condition object-> in tabs
FIX: CSS
FIX: Fetch of lead status
FIX: Fix doc preview in comm card
FIX: height of confirm popup
FIX: option MAIN_USE_TITLE_FOR_USER was on update and not on create
FIX: Order API: delete order returns wrong http response in case order could not be deleted (#37472)
FIX: Pb with import of agendaevents. Date and import id not visible.
FIX: read_supplier_price filter for stock complement (#37417)
FIX: Reload page after check holiday for save param (#37410)
FIX: Several trouble with demo docker packages. More secured way to use install.force.php file
FIX: translation on multiselect with rich label - Fix CSS public ticket
FIX: update COPYRIGHT file to reflect removed libraries in v23.0.0
***** ChangeLog for 23.0.0 compared to 22.0 *****
For users:
----------
NEW: Need PHP 7.2 as minimum version
NEW: Module datapolicy moved as stable (for anonimization features)
NEW: #31723 - Improve project overview: Hide paid orders (#35524)
NEW: #35700 : Throw an error when validating a propal, order, supplier with a product no more in sale/purchase… (#35709)
NEW: Accountancy - Accounting by payment type (#34729)
NEW: Accountancy - Add accounting for discounts (#35977)
NEW: Accountancy - Add a protection on various payment for auxiliary account on general account not centralized (#35720)
NEW: Accountancy - Add field centralized on import/export (#35872)
NEW: Accountancy - Add hook on export filename (#35188)
NEW: Accountancy - Add reconcile on general accounting account - SQL part (#35994)
NEW: Accountancy - Analytical axis (SQL Structure) (#34738)
NEW: Accountancy - Manual input - Add script to greyed out subledger_account if general ledger is not centralized (#35855)
NEW: Accountancy - Transaction - Add verification on centralized account (#35824)
NEW: Accountancy - Various payment - Add script to greyed out subledger_account if general ledger is not centralized (#35842)
NEW: Add a boolean for lines in api and $properties (#34293)
NEW: Add accounting export mode for ISTEA (#36006)
NEW: add a limit to avoid too many answer in agenda view. Add warning if limit has been reached.
NEW: Add a page to edit http security headers of application (#34941)
NEW: Add auto-reference generation for tasks (like in project) in API (#35981)
NEW: Add column ref_ext and note_private for membership
NEW: Add column thirdparty ref_customer and ref_supplier in project list
NEW: Add column title in emailing and add more filters
NEW: add combining characters (accents, cedilla...) codes in dol_string_unaccent() (#35130)
NEW: add company date birth (SQL structure) (#34854) (UI) (#34861)
NEW: add conditional supplier price display (#35900)
NEW: Add configuration for default timesheet menu (#35805)
NEW: Add contact tab on product service (#35914)
NEW: Add directory navigation to Web Portal Shared Documents (#35443)
NEW: Added Messaging and agenda tabs on order and shipments (#34859)
NEW: Add event when installing a module in the security event list.
NEW: add extrafield option "empty on clone" (#34866)
NEW: add fields usage_opportunity, usage_task, usage_bill_time for project import (#35301)
NEW: Add filter on agenda event progression on agenda page
NEW: add free numbering module for members (#35636)
NEW: add global search for resource object (#36043)
NEW: add hidden const to get response header in geturlcontent function (#34781) (#34824)
NEW: add hook getListOfModels (#34626)
NEW: Add hook on calcula_price() and get_default_tva()
NEW: Add hooks in webportal (#35326)
NEW: add hook when printing new card button on thirdparty list (#36350)
NEW: add hourly rate in list of users
NEW: Add missing parameters for menus on webportal hook (#35550)
NEW: Add option PDF_PURCHASE_INVOICE_HIDE_VAT
NEW: Add option PROJECT_CAN_ALWAYS_LINK_TO_ALL_CUSTOMERS
NEW: Add option to create simple standalone shipment of non origin (#35651)
NEW: Add option to create standalone reception (#36134)
NEW: add private and public note on ticket (#35303)
NEW: add product_type field on fichinter (preparing subtotal) (#36196)
NEW: Add regions for CONGO, THE DEMOCRATIC REPUBLIC OF THE;CD (#36340)
NEW: ADD Send mail for reception / Delivery (#34829)
NEW: Add setup page to concat natively files on invoice PDF.
NEW: add shipping address to propal (#34441)
NEW: Add Sign feature on shipments (#34640)
NEW: Add sms reminder in reminder of agenda events (#35239)
NEW: Add SQL table for expensereport line extrafields support (#36251)
NEW: add supplier invoice, order and supplier order tag filter and bulk insert and statistics order and supplier order (#35399)
NEW: add supplier payment mail template (#35877)
NEW: add tags on proposals and supplier proposals and in statistics (#35553)
NEW: Add task categories 1/3 (#35848)
NEW: Add tasks card hooks (#35616)
NEW: Add the "Dispute status" in list of invoice.
NEW: add the option to not synchronize thirdparty <--> member (#36033)
NEW: Add the widget funnel of opportunities
NEW: Add tpl files for standalone shipment (#35624)
NEW: Add tpl loader for discounts.tpl.php (#34798)
NEW: Add Transfer Number (#35665)
NEW: Add Type, Description columns to Project Overview Expense Reports (#36214)
NEW: Add user permission for create/edit/delete supplier prices (#35940)
NEW: Allow omission of ODT template name when generating ODT and PDF (#35701)
NEW: Better navigation and report into database admin tools
NEW: Button to create a proposal and sale order from a contract always on
NEW: Can add info of main IT service provider in setup.
NEW: can admin payments extrafields (#34822)
NEW: Can drag and drop in BOM card
NEW: Can force_install_dolibarrpassword for automatic installation (#34537)
NEW: Can have a tooltip picto on title of column and keep autotruncation of label. Tooltip is show at begin of text.
NEW: Can show both currency code and symbol into the select of currency
NEW: Can sort on employee in holiday balance. Add link to go to history.
NEW: Can update value of timespent with last task hourly rate (#36018)
NEW: Can urlencode substitution variable of constants
NEW: Can view/list/edit the dispute status of an invoice
NEW: Change the path for the mailing files (#34878)
NEW: Constant ORDER_MASS_ACTION_BILLED_LINK_EXPEDITIONS (#34617)
NEW: const MENU_HIDE_EMAIL_TEMPLATES to hide email templates setup in Tools menu (#35739)
NEW: Create simple shipment of non origin (#35604)
NEW: Currency for the Democratic Republic of Congo added. (#36104)
NEW: Customized step in duration select (#34652)
NEW: Dashboard - Add option in ihm to disable MRP thumb (#36185)
NEW: date function related to holiday can accept country id in addition to country code
NEW: DEV Can set color of the on/off button.
NEW: Disable by default obfuscation methods and function in extrafields evaluable strings. Can re-enable with MAIN_ALLOW_OBFUSCATION_METHODS_IN_DOL_EVAL=1
NEW: Discount split more than two parts (#34782)
NEW: Display company logo on kanban view (#34520)
NEW: dol_sort_array can be used with 2 sorting criteria.
NEW: Enhanced layout feature for emailing
NEW: Enhance popup for image preview (show size in title, can restore small view, always show the Rotate button).
NEW: Enhance the system for warnings on module activation
NEW: execute hook addMoreActionsButtons on bank card (#35598)
NEW: extrafields: add field to link a field to a module (#34416)
NEW: Feature to merge duplicate members (#35308)
NEW: generate renewal proposal for contracts (#35120)
NEW: Holiday - Allow to specify a specific mail address from (#36184)
NEW: hook allowing external modules to replace the behavior of fetchObjectLinked() (#34724)
NEW: hooks `showInputExtraField` and `showOutputExtraField` to override ExtraFields::show(Input|Output)Field (#35496)
NEW: implement box on product and interventional index page (#34629)
NEW: import subscriptions (#35612)
NEW: Introduce getCurrency(). $conf is no more allowed into computed formulae.
NEW: Invert logic of default date in proposal/order/invoice creation: Need option to NOT autofill instead of the opposite.
NEW: line input multicurrency price with tax (#35064)
NEW: Major overhaul of DataPolicyCron and add Recruitment policy (#34704)
NEW: Make the public contact form with experimental status
NEW: Minimal version of PHP is now 7.2
NEW: More index for memberships table
NEW: More information on the user credential section
NEW: More webportal feature - Can add shared files and thirdparty documents (#35391)
NEW: New hook mergePdf (#34707)
NEW: On invoice, show also nb of credit notes notyet converted for consumption
NEW: Option to clone parent categories on variant creation (#35806)
NEW: Output of category tag is nicer for long subcategories.
NEW: Parent project column in list of projects (#36177)
NEW: Paymentok validate invoice if not already done (#35564)
NEW: PDF Show customer balance on invoice date (#34800)
NEW: possibility to define global entity in user param (#35908)
NEW: Add messaging and agenda features to proposals (#34883)
NEW: public and private note can be shown on contact list
NEW: Public donation page (#35565)
NEW: public pages donation, ticket and member use captcha setup (#35913)
NEW: Rework of the management of the card and fields on the web portal (#36076)
NEW: Save the BAN and RUM for SEPA into database not just file.
NEW: search all facture rec (#34563)
NEW: Show cron last result and output in info (#36028)
NEW: Show full date with seconds in the tooltip of date of event
NEW: Show the link to download the zip of a module on module setup
NEW: Show warning on banner when an email is not valid
NEW: The check file feature can limit check on unalterable files only
NEW: The flag "Dispute open" make the status in Red.
NEW: The PHP info is in a popup in install page.
NEW: update country list (#34865)
NEW: Update Incoterms to 2025 standards and add new terms (#36041)
NEW: Upgrade ACE editor to 1.43.12
NEW: User/Date in the Follow tab are more condensed.
NEW: We added a hook to allow us to modify the Prospect Customer drop down… (#25635)
NEW: Withholdingtax how VatRefund (#34649)
For developers:
---------------
NEW: Introducing the TRIGGER_PREFIX property to force developers to use unique triggerkey per business object, to limit code to business CRUD events and report warning when it is not.
NEW: add extraparams field in llx_categorie (#35975)
NEW: Add prepare() method to DoliDB class (rebuild) (#35249)
NEW: Add function to split a discount in 2 by API REST (#34786)
NEW: Add a new API "product lots" (#36243)
NEW: Add API for Holidays/Leaves
NEW: add api for members statistics (#35851)
NEW: add api List VAT (#35920)
NEW: add api_paiements.class.php (#34756)
NEW: document API builddoc product
NEW: Add contact management on project Api (#35459)
NEW: Add contact support on products in REST API (#35925)
NEW: Add country ID resolution from country code for thirdparty api (#36345)
NEW: Add getcontacts on api of interventional and proposal (#35589)
NEW: Add hook initialization for interventions API (#35203)
NEW: Add option API_ENABLE_COUNT_CALLS
NEW: Add thirdparty search on api list (#34634)
NEW: add timespent API endpoints for projects and tasks add also cascading assignment of contacts to tasks (#35897)
NEW: add upload api feature for shipment (#34639)
NEW: Allow creating contact via api with ISO code (#36322)
NEW: API endpoint for getting products in a warehouse (#35918)
NEW: API for getting, adding, deleting and/or modifying email templates (#35853)
NEW: API for handling mass mailing targets (#35603)
NEW: API GET endpoint for thirdparties types listing (c_typent) (#34751)
NEW: Api mass emailing (#35531)
NEW: API user/groups/ POST, PUT, DELETE + some hurl tests (#35903)
NEW: API User - Remove user from group (#35453)
NEW: Implement listTimespent method in api_projects.class.php (#36093)
NEW: qual fixes on api contract (#36066)
NEW: stock API GET movement (#36193)
NEW: action to clone ticket
WARNING:
--------
The following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
* If you were using the website module with PHP page, you must add the following parameter $dolibarr_website_allow_custom_php=2; into your conf.php to continue to be
allowed to edit PHP content into the website module.
* The deprecated column "egroupware_id" has been dropped from table llx_user.
* The property $sumpayed (duplicated of $totalpaid), $sumdeposit (duplicate of $totaldeposits) and $sumcreditnote (duplicate of $totalcreditnotes) has
been removed (there are replaced with the property that was a duplication of (same for $sumpayed_multicurrency, $sumdeposit_multicurrency, $sumcreditnote_multicurrency).
* Parameters $maxlen and $notooltip of Contract have been inverted to follow the standard. It was breaking the common use of getNomUrl() but if you were
using the parameter maxlen (rare) by using the old signature, result may be just a tooltip that is no more visible when mous over the contract ref shown by your module.
* Removed array $MAP_ID_TO_CODE that was a duplicate of the array "array_flip($categ->MAP_ID)"
* The signature of the Sale order ->cancel() method and shipment ->cancel() has been modified to introduce the $user param like for other methods that modify a status.
* Adding new "document generation templates" must be done by adding files into the mymodule/core/modules/xxx/doc directory. Adding files into custom directory with the
same path than the core path, without using a "mymodule" directory, is now forbidden.
* The directory theme/common/octicons has been removed. No resource was used by Dolibarrfrom this directory.
* The library timepicker.js has been removed. Was no more used by Dolibarr since a long time.
* Because of the new TRIGGER_PREFIX property, the triggers SUPPLIER_PRODUCT_BUYPRICE_XXX are renamed into PRODUCT_BUYPRICE_XXX.
* Function img_pdf() has been removed. Replace it with img_picto('', 'pdf') if you were using it.
* The method run_trigger() was deprecated 10+ years ago in favor of runTrigger(). It has been removed. Change your trigger file if you still use it.
* Property ->picto of module descriptors or menu entries must contains the image extension if it is not a font awesome tag. Example: $this->picto="mymoduleimg.png";
* Stock movement API GET method output variable names has been harmonized with POST input parameter names
* Concatenation into computed property of extrafields is off by default. You can enable it from conf.php file by adding dol_concat to list of allowed function in $dolibarr_main_restrict_eval_methods,
For example: $dolibarr_main_restrict_eval_methods='getDolGlobalString,getDolGlobalInt,getDolCurrency,fetchNoCompute,hasRight,isModEnabled,isStringVarMatching,abs,min,max,round,dol_now,dol_concat,preg_match';
* Old variable $obj and $object are no more allowed into on the fly evaluated strings like computed or conditions on extrafields. Use $objectoffield to get current object
Also if you were using temporary variables int a computed extrafields, the nameot temporary variable must match $var123.
* The hidden constant MAIN_ALLOW_UNSECURED_SPECIAL_CHARS_IN_DOL_EVAL in database has been replaced with the
variable $dolibarr_main_allow_unsecured_special_chars_in_dol_eval into file conf/conf.php
* $conf use into "computed formulae" of etrafields is now deprecated (not yet forbidden). You can replace use of $conf->currency by the new method getCurrency() and $conf->global->xxx by getDolGlobalString('xxx').
* $user->rights->module->perms is also deprecated. You can use $user->hasRight() instead.
* The API endpoint /proposals/{id}/contact/{contactid}/{type}/{source} is now {id}/contact/{contactid}/{type} to match same behaviour than order and invoices.
* The API endpoint /interventions/{id}/reopen hase been removed in favor of /interventions/{id}/settodraft
* If the module geoipmaxmind is used, you must resubmit the geoip data file as it is now stored differently.
***** ChangeLog for 22.0.4 compared to 22.0.3 *****
FIX: $param is the 5th parameter of print_liste_field_titre ($moreparam) (#36250)
FIX: 17.0: perweek.php resets task progress to 0% when: (#36401)
FIX: 18.0: GETPOSTDATE and buildParamDate assumed HTTP param names 'minute' and 'second' instead of 'min' and 'sec'
FIX: 19.0 - attachments upload dir for invoices not always determined correctly (doesn't always take multi-entity into account) (#36302)
FIX: #33148 - partial payments are taken into account in EPC QR codes (#36338)
FIX: #33899 API Timespent Service Field
FIX: #35061
FIX: #35096 #36393 Add minimal fields required asthe class is used by
FIX: #35141 (#36390)
FIX: #35375 Accountancy - SQL error on empty filter account category
FIX: #35655 API Contract Creation Fails for Non-Admin Users in Version 22.0.2
FIX: #36090 Accountancy - Inconsistent date on various journal
FIX: #36149 (#36150)
FIX: #36310 Accountancy - Data - Wrong account labels (cache) on write bookkeeping action (#36410)
FIX: #36334 - reload invoice data before pdf-creation in process of generating a new member contribution (#36335)
FIX: #36347 (#36358)
FIX: #36368 - avoid overlaying of EPC-QR Code and payment information (#36369)
FIX: #36576 - date creation is empty on import
FIX: Accountancy - #36090 Inconsistent date on various journal
FIX: Accountancy - No limit on chart of account to define category on account
FIX: Accountancy - Not propose to write operation on draft asset
FIX: Accountancy - Problem calculating exercises with different tax periods on fixed assets
FIX: Accountancy - Problem calculating fiscal year with different periods on fixed assets
FIX: Accountancy - Reverse accounting account in depreciation expense entries for fixed assets
FIX: Accountancy - Verify fiscal year on last hour to enable the integration of asset entries
FIX: allow a situation with credit to be removed from cycle
FIX: API task getTimeSpent to actually return data
FIX: avoid php warning error (#36330), avoid php warnings (#36301), (#36411)
FIX: Can Validated Holidays When Negative Balance
FIX: Concat of PDF to invoices (#36329)
FIX: create API temp directory in Dolibarr API constructor
FIX: DA027383: permissions not checked on HRM evaluation card (#36328) (#36399)
FIX: do not force rowid to int (#36412)
FIX: Email Collector Module: manage error when imap_fetchstructure return false. Previously it generated warning and fatal error because the returned value was not of type class
FIX: empty origin type passed to addline when creating invoices from expeditions using massaction (confirm_createbills) (#36413)
FIX: expense report card: do not show bank account if user cannot see them
FIX: expense report card: use correct bank module designator for detection
FIX: Export of extrafield in organized events
FIX: fix #36401 (for v17.0) doesn't work in v18.0+ because of variable renaming
FIX: | Fixing addPayment /invoices/id/payments
FIX: getEntity use element instead table_element (#36405)
FIX: Implementation of multi-company compatibility with inventory/warehouse management
FIX: info on supplier payment card on v22 and payment link
FIX: keep user who validate proposal on update (#36257)
FIX: List is filtered on task status when it should not
FIX: Missing AND on fields filter on evaluation class
FIX: missing p.default_vat_code in product import profile.
FIX: Missing Product ref in Bom stats
FIX: Mo::deleteLine() - stock movement correction (#34733)
FIX: Multicompany compatibility with "project_task"
FIX: not remove value of others extra-fields on update extras action
FIX: Object should be cloned here (#36289)
FIX: PR#36401 fixed a missing GETPOSTISSET() but the check involves a variable ($taskid) that was renamed ($tmptaskid) in 18.0
FIX: (propal): Incorrect HT/TTC recalculation when editing proposal lines #36514
FIX: (propal): values lost when editing HT price
FIX: propal shipping and availability update (v18+)
FIX: re-create API temp dir after purging temp files
FIX: remove situation invoice from cycle
FIX: remove useless condition to create credit on situation invoice (#35786)
FIX: Search all for supplier proposals via object reference
FIX: Selection of email when prefilled from a template
FIX: SQL error for LIST_OF_QUALIFIED_INVOICES_LIMIT_DEFINED
FIX: subtotal feature button availability according setup
FIX: TakePOS Missing Thirdparty Id when getting more products (#36341)
FIX: (tasks): dates in gantt view
FIX: undefined variables on create invoice card from order (backport from v19) or shipment card (backport from v20)
FIX: use array_intersect instead in_array
FIX: warning on select
FIX: wrong $param parameter position (#36265)
SEC: 7ed0af2a138a34e7c7005b95c85ffc791976a6cf
SEC: empty commit for CI automata
SEC: FIX: #36430 permissions not checked on other tabs of HRM evaluation card
SEC: fix IDOR attack on employee evaluation. Missing permission test https://github.com/atm-florianm/dolibarr/commit/7ed0af2a138a34e7c7005b95c85ffc791976a6cf
SEC: permissions not checked on other tabs of HRM evaluation card
***** ChangeLog for 22.0.3 compared to 22.0.2 *****
FIX: 16.0: extrafield of type link to category causes SQL error in selectForFormsList() (#36074)
FIX: 20.0 ajax_constantonoff + FormSetup were ignoring custom css class (cssClass / $morecss) (#36039)
FIX: #33741 FIX: #35632
FIX: #35247 FIX: #35950 Using same option for landing page and home page
FIX: #35519 (security) missing check user rights (#35527)
FIX: #35520 FIX: #35522
FIX: #35568 (#35569)
FIX: #35573 FIX: #35241
FIX: #35634 (#35912)
FIX: #35766: Update buying price INT Float (#35769)
FIX: #35780
FIX: #35782
FIX: #35784
FIX: #35922 Lines of orders - Status filter unexpected beahavior (#35924)
FIX: #36025 Accountancy - Error when cloning directly from accounting entry (#36034)
FIX: #36046 enabling extrafieldmanaged to enable deletion of records from the llx_salay_extrafields table
FIX: #36113 (#36116)
FIX: access problem when label is used for next/prev (#35933)
FIX: Accountancy - Admin personalized report - Remove duplicate button (#35721)
FIX: Accountancy - General setup - Missing form on UpdateMask (#35735)
FIX: Accountancy - Missing subledger information on mass cloning (#35777)
FIX: Accountancy - Printing the subsidiary ledger returns the general ledger (#35719)
FIX: Accountancy - Print subledger balance return general balance (#35712)
FIX: Accountancy - Problem with general setup (#36067)
FIX: Accountancy - Return on wrong page on y/n button (#35978)
FIX: Add missing left join to filter by extrafields (#36092)
FIX: add possibility to override authoritative dns (#35699)
FIX: Allow decimals on services duration (#36031)
FIX: avoid link problem with employee list context (#36125)
FIX: avoid NULL value (#36126)
FIX: avoid php warning (#35756)
FIX: avoid php warning (#35953)
FIX: avoid php warnings (#35492)
FIX: Bad label for column title on multicurency
FIX: bad name for target import table (#35615)
FIX: broken feature ! (#35906)
FIX: Can approve holidays when negative balance (#36144)
FIX: categories: sql error in link extrafields targettings categories (#36236)
FIX: check if category module is enabled (#35770)
FIX: check if service is activated only for api product (#35911)
FIX: check if zip file of website exists (#35879)
FIX: Clear filter
FIX: clone of cron tasks
FIX: conflict between $user->id and $object->id (#36225)
FIX: create invoice from order using API and multi-entity (#35654)
FIX: day of ticket on takePOS. Backport 6abdb6e. (#35745)
FIX: Deletion of a donation. Button was disabled.
FIX: detection of setup not done with
FIX: dol_escape_htmltag in extrafields_view (#36136)
FIX: doubled display of PRoduct Stokable checkbox when STOCK_SUPPORTS_SERVICES on service edit card (#36138)
FIX: Email template fetching (#35738)
FIX: Error 500 on api if cache is on and directory does not exists
FIX: extra-field list depend on parent extra-filed list on direct edit (#35803)
FIX: filter on note lost when sorting company list
FIX: Hide AWP if product has no stock managed
FIX: Import/Export - Do not list imports or exports of Builder module backups of module descriptor files (#36192)
FIX: In shipment creation process, if product is not manage in stock, Dolibarr should not display a "low stock warning" (#36139)
FIX: in shippement creation with SHIPMENT_SUPPORTS_SERVICES and/or STOCK_DISALLOW_NEGATIVE_TRANSFER and/or stockable_product there are inconsistencies (#36140)
FIX: Invoice Situation - Octopus - Column offset for amounts greater than 5 digits (#36124)
FIX: Invoice Situation - Octopus - Shipping block overlap issue (#36122)
FIX: Invoice Situation - Octopus - Show remaintopay at bottom (#36121)
FIX: invoices payments on multicurrencies being converted as int (#35622)
FIX: Knowledge management - Button ReOpen show in draft mode (#36008)
FIX: Label shown when value is empty
FIX: late customer orders are not shown on start page (#36200)
FIX: link to sort of target email page
FIX: MAIN_AUTOFILL_DATE in supplier invoice display 01/01/1970 (#36087)
FIX: MAIN_SEE_SUBORDONATES sql request error (#35896)
FIX: Missing begin transaction, The status of customer was not
FIX: missing check if partership is enabled (#36169)
FIX: missing entity field (#36086)
FIX: missing entity filter (#35517)
FIX: missing entity filter (#35857)
FIX: missing entity filters + wrong widget name (#35873)
FIX: missing "printFieldListValue" hook (#35990)
FIX: missing prospect/customer category translation (#35814)
FIX: Must show unit price when price is not for quantity 1
FIX: muticompany compatibility (wrong sharing name) (#36013)
FIX: my previous fix was incompatible with Thomas' fix from PR#35590 (#35890)
FIX: no emails sent when closing a ticket (#35874)
FIX: notification email not sent : NOTIFICATION_EMAIL_FROM is replaced with MAIN_MAIL_EMAIL_FROM if it's empty (#35881)
FIX: notifications: correctly report email delivery errors (#35864)
FIX: not possible to search for billed and not billed supplier orders in the list (#35680)
FIX: Perf for bom select (#35871)
FIX: Performance Problem on load stats command (#35785)
FIX: pgsql: error when calculating depreciations (#34213)
FIX: php 8+ warnings when creating deposits (#35582)
FIX: prices must be HT in dolistore browser
FIX: product stock lists: prevent SQL error when filtering on physical stock (#36038)
FIX: resize iban column to support encryption (#36237)
FIX: Select correct approver when making a leave request for someone else (#36118)
FIX: Situation percent set as 0 when adding line on situation invoices (#35999)
Fix: sql error if LIST_OF_QUALIFIED_INVOICES_LIMIT_DEFINED is used (#36135)
FIX: sql syntax error (#35588)
FIX: Status if thirdparty not synchronized with status WON of
FIX: substitutions on subject of the sent email reminder of the event (#35621)
FIX: The IBAN into EPC qr code must use the default bank account if not
FIX: The order closing date was not filled in during the shipment validation (workflow module). (#36235)
FIX: The status of customer was not synchronized with opportunity status
FIX: thirdparty was never notified. Passing of contact ID information was not coherent. (#35590)
FIX: To have only the sender's entity when sending mail (#31053)
FIX: when creating a ticken on backend and adding a linked file, the 'notify thirdparty at creation' chackbox disappears. (#35595)
FIX: when display in view mode HTML extrafeilds content doubled (#36127)
FIX: Wrong cast on TVA rate when updating supplier order lines (#36106)
FIX: wrong check of hook return
FIX: wrong entity alias (#35821)
FIX: wrong entity filter (#35691)
FIX: wrong field name (#35728)
FIX: wrong getEntiy element name (#35771)
FIX: wrong number of categories by entity (#36111)
FIX: wrong socpeople id when multiple assigned + avoid php warnings (#35878)
***** ChangeLog for 22.0.2 compared to 22.0.1 *****
FIX: ContratLigne::fetch() returns 1 even if the line doesn't exist (#35324)
FIX: #34678
FIX: #35142 FIX: #35143
FIX: #35154 - Massaction createbills in reception list don't mind about order and/or thirdparty currency (#35156)
FIX: #35181 Cancelled purchase orders now shown as such in Project Overview (#35186)
FIX: #35407 After updating to version 22, local taxes were no longer applied (#35408)
FIX: #35425 (#35426)
FIX: accountancy general ledger: bad handling of hook return (#34029)
FIX: Add security test for show terminal selection if no terminal selected when invoice.php is call (#34717)
FIX: allow to create First Situation Invoice (#35228)
FIX: api orders : forward database error on failure (backport commit d9e81cb) (#35478)
FIX: Can't edit tags of a user.
FIX: can't reset intracomm transport mode
FIX: can't save setup of odt template for stock
FIX: check commande liste validate (#35479)
FIX: color of late warning for nb of bank account reconciliation lines
FIX: Correct the calculation of the amount of the current period between the period provided (#35083)
FIX: Date planned of delivery is not propagated from order to shipment
FIX: Edit of email in emailing. Property messtype not set.
FIX: extra field list depend on parent list when editing a card (#35165)
FIX: fallback of "from" email when sending email in member module
FIX: missing token to disable custom group category for compta report (page /htdocs/accountancy/admin/categories_list.php) (#35084)
FIX: Generation of member cards (file not found and substitution broken)
FIX: invoice not set to closed when we add a credit note to close it
FIX: missing check constant PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS (#33277)
FIX: missing entity filter (#35461)
FIX: missing quick edit for extrafields (backport commit 4fc66c6) (#35160)
FIX: Missing sentence part (#35144)
FIX: Remove perms to access commerce tab when the only active permission is fournisseur:lire (#35467)
FIX: Restore decimal quantity for stock correction/transfer
FIX: save the packaging qty on update buying price (#35234)
FIX: set global mysoc and load langs in API access (#35041)
FIX: Societe - Problem of date on outstanding opened late (#35266)
FIX: vat detection when country of buyer is unknown.
FIX: wrong extrafield template in create mode (#35241) (#35470)
***** ChangeLog for 22.0.1 compared to 22.0.0 *****
FIX: #34843 (#34875)
FIX: #34936
FIX: a Fatal error when a trigger files is not correctly named.
FIX: array for arrayofkeyval is lost in module builder edit of property
FIX: asset: could not select invoice in disposal pop-in (#34725)
FIX: avoid php warning with "$forceFullTextIndexation" (#34881)
FIX: bad consistency on test on permission to disable service
FIX: Can edit status of tasks
FIX: Create public ticket if email need exist. (#34965)
FIX: DA026536: missing <br> in automatic e-mail (#34895)
FIX: extrafields of type "int" not displayed on `projet/tasks.php` (#34896)
FIX: Filter on the balance of leave
FIX: Logo on company is no more visible.
FIX: mailing destination list title (#34929)
FIX: main checkbox left column was before global conf (#34858)
FIX: Missing a column on group permissions
FIX: several minor troubles with modulebuilder
FIX: Test on mandatory product or thirdparty barcode
FIX: trigger mailmanspip when un/linking categories
FIX: Security when using Advanced Target page of emailing (feature hidden in v21, default in v22+). Possible
SQL injection by users with permission to make and send mass emailing.
***** ChangeLog for 22.0.0 compared to 21.0 *****
For users:
----------
NEW: Module WebPortal is moved as stable
NEW: Subtotal module (#33502) - development
NEW: shipment kits with dispatcher v2 (#33750)
NEW: ticket : display files linked to actioncomm (#32325)
NEW: Support of monthly or weekly recurring events
NEW: AI feature to autofill extrafields
NEW: Introduce the view "Kanban Grouped By" opportunity status in projects
NEW: #32706 - Treasury accountancy (#33701)
NEW: #33506 Add a constant to apply a ratio to resize images in ODT templates (#33543)
NEW: Accountancy - Add centralized account (SQL & migration part) (#33384) (#33577)
NEW: Accountancy - Add filter on chart of accounts (#33656)
NEW: Accountancy - Centralized account are highlighted (#33648)
NEW: Accountancy - Define fiscal year by default
NEW: Accountancy - Show subledger account in thirdparty
NEW: Add a delay to be sure that any Stripe action from webhooks are executed after interactive actions
NEW: Add also start date fill buttons for salary clone
NEW: Add a test mode for AI setup
NEW: Add DateMaxPayment option on selectDate (#33601)
NEW: Add/enhance the popup for preview of icons
NEW: Add field usenewcurrencyrate
NEW: Add globale MAIN_DISABLE_PDF_AUTO_DOWNLOAD_AFTER_CONVERT_FROM_ODT to disable the auto download after auto convert odt to pdf (#33511)
NEW: add home box mrp (#33549)
NEW: Add invoice tags
NEW: Add ip into table of website accounts
NEW: Add knowledgebase info on box_dolibarr_state_board.php (#33960)
NEW: Add link to create shipment on picto
NEW: Add link to picto help page on module builder
NEW: Add management of date begin/end and discount for a customer price (Code + SQL)
NEW: add new permissions to read supplier prices (#33598)
NEW: Add option MAIN_ALLOW_DOUBLE_COLON_IN_DOL_EVAL
NEW: Add option MAIN_MAIL_EMAIL_FROM_PASSWORDRESET
NEW: Add options on intervention clone popup to clone or not contact and notes
NEW: Add options PDF_XXX_SHOW_PRICE_INCL_TAX into PDF setup
NEW: add option to not prefill qty line at shipment creation
NEW: Add page list for categories.
NEW: Add parameters for the hook selectProductsListWhere (#33718)
NEW: add phone_mobile to export of thirdparty (#33893)
NEW: Add public page for donation module (#33978)
NEW: add setasnumber for forms (#33845)
NEW: Add Shared links on links in attachments (#33459)
NEW: Add tags / category on supplier invoice (#33490)
NEW: Add the possibility to merge PDF from the product list (#33723)
NEW: allow stock management by product (#32326)
NEW: attendee status "Showed up" - to ensure that only one attendee gets in on a ticket (#33987)
NEW: auto-detect country from code in creation (follow-up)
NEW: autofix mysqldump command for backup when path is wrong
NEW: Better presentation of list of user approver.
NEW: Can define a different PDF for concatenation for proposal, order and invoices
NEW: Can filter on field "Refuse emailing" in list of thirdparties.
NEW: Can filter on public/private notes in list sale orders thirdparties
NEW: Can filter on string with spaces if search criteria is inside quote.
NEW: Can force the tooltip before the text on column title.
NEW: Can link member subscription/contribution with proposal, order and invoice (#33647)
NEW: Can set a specific permission on an extrafields
NEW: cash control: add hidden setting to show total including taxed in detail by vat rate
NEW: Closing task
NEW: CONSTANT: ORDER_TYPE_CONTACT_DEFAULT
NEW: const PREVIEW_PICTO_ON_LEFT_OF_NAME for icon to preview documents (#33519)
NEW: Dictionary - Manage countries of SEPA Area
NEW: Dolibarr#22848 Add order tags
NEW: Filter on date creation/date modification in invoice list
NEW: fix #33456 (#33458)
NEW: force Extrafields values when constants THIRDPARTY_PROPAGATE_EXTRAFIELDS_TO_(ORDER|INVOICE) are set (#33954)
NEW: input reason for customer invoice (#33599)
NEW: Invoice - Add constant to prevent modification of an invoice (#33455)
NEW: Loan - Add total on each payment to see the global amount off the reimbursement
NEW: login page: button to toggle the visibility of the password (#33698)
NEW: Look and feel - Checkboxes and radio buttons are larger
NEW: Allow user to define the number of email sent by batch directly from mailing config page (#32750)
NEW: Mass action delete on donation list
NEW: Merge surface and volume in one line on product card.
NEW: Module external website is deprecated. Replaced with menu editor.
NEW: Move right from advance to normal for thirdparty information payment page (#33885)d
NEW: delays conf for supplier proposals (#33800)
NEW: new option in invoice setup to limit options of deposit invoice (#33468)
NEW: No auto open keyboard on smartphone when opening list of columns
NEW: On list, see complete ref customer/supplier with constant MAIN_SHOW_GLOBAL_REF_CUSTOMER_SUPPLIER (#33373)
NEW: Option MAIN_RESTRICTHTML_ONLY_VALID_HTML and MAIN_RESTRICTHTML_ONLY_VALID_HTML_TIDY are on by default
NEW: Option MAIN_SECURITY_MAXFILESIZE_DOWNLOADED become official
NEW: Order - Add drag & drop file (#33848)
NEW: reopen for interventions API (#33982)
NEW: Rounding unit price - line discount before applying quantity - option MAIN_APPLY_DISCOUNT_ON_UNIT_PRICE_THEN_ROUND_BEFORE_MULTIPLICATION_BY_QTY (#33690)
NEW: shipment with product in cache
NEW: shipment with warehouse in cache
NEW: Show code of stripe hooks supported in setup page
NEW: Show country flag in list of chart of account
NEW: Show IP of previous connection and date of last password change in the "Connection" widget.
NEW: Some trans keys to prepare a new website template (#33886)
NEW: SUBMIT_FOR_ALL_MARK_RESPAWN (#32101)
NEW: Supplier orders - Add tags/categories (#33386)
NEW: takepos cash control: add vat taxless total
NEW: The closing reason of invoice appear on tooltip of invoice status
NEW: The link "In accountancy" is now clickable to reach bookkeeping
NEW: The public media browser is now a stable feature
NEW: The signature is on the good page even if another module add pages
NEW: Toggle Display of Supplier Invoices and Credit Notes on Payment Page (#33856)
NEW: Try to set the tooltip as ajax call by default.
NEW: Update of currency supports also apilayer (not only currencylayer)
NEW: use specific landing page to home menu entry
NEW: Use the packaging feature to round the quantities to some given multiples for the sale
NEW: Use the PhpZipProxy handler to generate ODT files (avoid corrupted ODT with recent version of Libre Office).
NEW: vcard (vcf) download for third party (#31957)
NEW: Web pages of websites are protected by the WAF
NEW: Add constant to show stock in products combo
NEW: Can edit the module_source and pos_source field.
NEW: Accountancy - Add actions on entries (Cloning, assigning, returning)
NEW: Add conf PDF_HIDE_LINKED_OBJECT_IN_PUBLIC_NOTE to hide linked object in public note of pdf.
NEW: Add MULTICURRENCY_SHOW_ALSO_MAIN_CURRENCY_ON_PDF for legal requirement that need both currencies on PDF
NEW: Add note public and private on order export
NEW: Finish dev for API_ENABLE_COUNT_CALLS (count of API use is visible on user API key field)
For developers:
---------------
NEW: Add an API endpoint to get properties of a single line of an order (#34045)
NEW: add const to not include default CSS in top_htmlhead with DISABLE_CSS_DEFAULT_THEME
NEW: add const to not include default lib_head.js in top_htmlhead with DISABLE_LIB_HEAD_JS
NEW: add const to not include JQuery UI in top_htmlhead DISABLE_JQUERY_UI
NEW: add create category project link via api (#34016)
NEW: add creditnotelist var in fetch
NEW: add hook 'addMoreInformationsBlock'
NEW: Add hook on API call (#33501)
NEW: add hooks to modify select_produits_fournisseurs_list sql query
NEW: Adding API endpoints for event attendee handling (#33932)
NEW: Add internal contact of proposal, order and invoice on api call (#34009)
NEW: Add option to create simple shipment of non origin. SQL part (#34071)
NEW: add settodraft to the supplier invoice API (#34064)
NEW: Can set isMandatory property in generic setup framework
NEW: endpoints DELETE event atteendee by ID or REF (#33986)
NEW: endpoints GET event attendee by ID or REF (#33984)
NEW: endpoints PUT (update) event atteendee by ID or REF (#33985)
NEW: hidden conf for api contrat putLine endpoint to only return the line (#33809)
NEW: introduce method dolSetCookie
NEW: Invoice - Document - Add hook on action
NEW: Pagination data for intervention APi
NEW: Add experimental Website Template for Association
NEW: expense report API deny
WARNING:
--------
The following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
* The use of GETPOST function is not allowed inside extrafields conditions or any strings that contains dynamic code evaluated with dol_eval().
* The deprecated variable $trigger_name (duplicate of variable $triggersendname) has been removed. You must use $triggersendname everywhere now.
* The behavior of constant STOCK_ALLOW_NEGATIVE_TRANSFER has been reversed. It has been renamed into STOCK_DISALLOW_NEGATIVE_TRANSFER.
* Method Categoie->getObjectsInCateg() is deprecated. Try by using instead: getListForItem() or containing().
* Global variables $bctag, $conffiletoshowshort, $type2label has been removed.
* Deprecatedproperty ->fk_departement that was replaced by ->state_id has been completely removed.
* If you setup the API to update multicurrency rate from internet, you may need to re-enter your API key (so API key will be crypted in database).
* The signature of API get for intervention has been modified to match other get api on other objects.
* The directory /build has been moved into /dev/build.
* The API to create a website account /idthirdparty/accounts/site is now POST (instead of PUT) and to update is PUT (instead of PATCH).
* Debug v22 - Invert option TICKET_DO_NOT_INCLUDE_LINK_TO_CUSTOMER (that add link to backoffice interface link when it should remain private)
into TICKET_INCLUDE_LINK_TO_PUBLIC_INTERFACE_IN_MESSAGE. It also avoid often emails marked as SPAM due to suspicious link.
* The property ->price_ht of an object line that was a duplicate of ->subprice has been standardized. Use ->subprice everywhere now.
***** ChangeLog for 21.0.4 compared to 21.0.3 *****
FIX: #35147 SQL Error on Beluga Export when ExpenseReport is enabled (#35149)
FIX: error when using a code too large in dictionary
@@ -1127,7 +473,7 @@ FIX: product variants copy: also copy multiprice variations
FIX: refactorize (maybe broken feature for not received completely)
FIX: remove debug trace
FIX: remove socid when cloning a project without third parties
FIX: removes traces of HEAD conflicts following the postponement of branch 13 modifications (#32014)
FIX: removes traces of <<<HEAD conflicts following the postponement of branch 13 modifications (#32014)
FIX: remove unused code
FIX: same broken feature for propal and invoice
FIX: select 2 no record found translate
@@ -1434,7 +780,7 @@ NEW: fetch object by element for website account card
NEW: filter on sale representative in contact list
NEW: Filter shipments by selecting multiple shipping methods (#28376)
NEW: Font param Look and Feel (#29302)
NEW: functionality for configuration of post and pre prompt in AI module (#28030)
NEW: functionality for stock configuration prompt in AI module (#28030)
NEW: functionality to delete contact of company list
NEW: functionality to display codebar on pdf files (#29623)
NEW: functionality to list event for user
@@ -2135,6 +1481,7 @@ NEW: updating for display Help title when try to delete Don (issue #25314)
NEW: Upgrade in module builder in menu section
NEW: use account address in sepa mandate (#23642)
NEW: VAT rate - Add entity
NEW: Website: Support of js into the Dolibarr server preview
NEW: When an user unset the batch management of products, transformation of each batch stock movement in global stock movement
NEW: PDF Generation for each Human Resource Evaluations.
@@ -2235,7 +1582,7 @@ The following changes may create regressions for some external modules, but were
* The delete() method of AdherentType, Contact, Delivery, MultiCurrency, CurrencyRate now need $user as first parameter.
* A very high number of class properties (with old name in french) are now deprecated in favor of the property name in english.
* The load of hook context productdao has been removed before calling loadvirtualstock. Modules must use the context of main parent page or 'all' for all cases.
* booking.class.php was removed, please have a look at calendar.class.php
***** ChangeLog for 18.0.8 compared to 18.0.7 *****
35 files changed, 647 insertions(+), 298 deletions(-)

195
README-FR.md Normal file
View File

@@ -0,0 +1,195 @@
# DOLIBARR ERP & CRM
![Downloads per day](https://img.shields.io/sourceforge/dw/dolibarr.svg)
![Docker hub pulls](https://img.shields.io/docker/pulls/dolibarr/dolibarr.svg)
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.1-8892BF.svg?style=flat-square)](https://php.net/)
[![GitHub release](https://img.shields.io/github/v/release/Dolibarr/dolibarr)](https://github.com/Dolibarr/dolibarr)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/5521/badge)](https://bestpractices.coreinfrastructure.org/projects/5521)
Dolibarr ERP & CRM est un logiciel moderne pour gérer votre activité (société, association, auto-entrepreneurs, artisans).
Il est simple d'utilisation et modulaire, vous permettant de n'activez que les fonctions dont vous avez besoin (contacts, fournisseurs, factures, commandes, stocks, agenda, ...).
![ScreenShot](https://www.dolibarr.org/medias/dolibarr_screenshot1_1920x1080.jpg)
## LICENCE
Dolibarr est distribué sous les termes de la licence GNU General Public License v3+ ou supérieure.
## INSTALLER DOLIBARR
### Installation simple
Si vous avez peu de compétences techniques et que vous souhaitez installer Dolibarr ERP/CRM en quelques clics, vous pouvez utiliser l'une des versions pré-packagées avec les prérequis:
- DoliWamp pour Windows
- DoliDeb pour Debian ou Ubuntu
- DoliRpm pour Redhat, Fedora, OpenSuse, Mandriva ou Mageia
Les packages peuvent être téléchargés à partir de [site web officiel](https://www.dolibarr.org/).
### Installation recommandée/avancée
Vous pouvez aussi utiliser un serveur Web et une base de données prise en charge (MariaDB, MySQL ou PostgreSQL) pour installer la version standard.
- Décompressez l'archive .zip téléchargée pour copier le répertoire "dolibarr/htdocs" et tous ses fichiers à la racine du serveur Web ou récupérez-les directement à partir de GitHub (recommandé si vous connaissez git):
  `git clone https://github.com/dolibarr/dolibarr -b x.y` (où x.y est la version principale comme 3.6, 9.0, ...)
- Configurez votre serveur Web pour qu'il utilise "*dolibarr/htdocs*" en tant que racine si votre serveur Web ne possède pas déjà de répertoire défini vers lequel pointer.
- Créez un fichier `htdocs/conf/conf.php` vide et définissez les autorisations d'*écrire* pour l'utilisateur de votre serveur Web (l'autorisation *écrire* sera supprimée une fois l'installation terminée)
- Depuis votre navigateur, allez à la page "install/" de dolibarr
LURL dépendra de la façon dont votre configuration Web a été configurée pour pointer vers votre installation de dolibarr. Cela peut ressembler à:
`http://localhost/dolibarr/htdocs/install/`
ou
`http://localhost/dolibarr/install/`
ou
`http://yourdolibarrvirtualhost/install/`
- Suivez les instructions de l'installateur
## METTRE A JOUR DOLIBARR
Pour mettre à jour Dolibarr depuis une vieille version vers celle ci:
- Faites une sauvegarde de votre instance [voir ce tutorial](https://wiki.dolibarr.org/index.php/Installation_-_Upgrade#Upgrade_Dolibarr)
- Vérifiez que la nouvelle version est compatible avec la version PHP de votre serveur [voir PHP support](https://wiki.dolibarr.org/index.php/Releases).
- Ecrasez les vieux fichiers dans le vieux répertoire 'dolibarr' par les fichiers
fournis dans ce nouveau package.
- Au prochain accès, Dolibarr proposera la page de "mise à jour" des données (si nécessaire).
Si un fichier install.lock existe pour verrouiller le processus de mise à jour, il sera demandé de le supprimer manuellement (vous devriez trouver le fichier install.lock dans le répertoire utilisé pour stocker les documents générés ou transférés sur le serveur. Dans la plupart des cas, c'est le répertoire appelé "documents")
Note: *Le processus de migration peut être lancé manuellement et plusieurs fois, sans risque, en appelant la page /install/*
## CE QUI EST NOUVEAU
Voir le fichier [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog).
## CE QUE DOLIBARR PEUT FAIRE
### Modules principaux (tous optionnels)
- Annuaires des prospects et/ou client et/ou fournisseurs
- Gestion de catalogue de produits et services
- Gestion des devis, propositions commerciales
- Gestion des commandes
- Gestion des factures clients/fournisseurs et paiements
- Gestion des virements bancaires SEPA
- Gestion des comptes bancaires
- Calendrier/Agenda partagé (avec export ical, vcal)
- Suivi des opportunités et/ou projets (suivi de rentabilité incluant les factures, notes de frais, temps consommé valorisé, ...)
- Gestion de contrats de services
- Gestion de stock et inventaires
- Gestion des expéditions
- Gestion des demandes de congés
- Gestion des notes de frais
- Gestion de recrutement
- GED (Gestion Electronique de Documents)
- E-Mailings de masse
- Réalisation de sondages
- Gestion d'adhérents
- Point de vente/Caisse enregistreuse
- … (près de 100 modules disponibles en standard, près de 1000 autre sur la place de marché d'extensions)
### Autres modules
- Gestion de marque-pages
- Gestion des promesses de dons
- Rapports
- Imports/Exports des données
- Support des codes barres
- Calcul des marges
- Connectivité LDAP
- Intégration de ClickToDial
- Intégration RSS
- Intégration Skype
- Intégration de système de paiements (PayPal, Stripe, Paybox...)
-
### Divers
- Multi-langue.
- Multi-utilisateurs avec différents niveaux de permissions par module.
- Multidevise.
- Peux être multi-société par ajout du module externe multi-société.
- Plusieurs thèmes visuels.
- Application simple à utiliser.
- Requiert PHP et MariaDb, Mysql ou Postgresql (Voir versions exactes sur [https://wiki.dolibarr.org/index.php/Prérequis](https://wiki.dolibarr.org/index.php/Prérequis)).
- Compatible avec toutes les offres Cloud du marché respectant les prérequis de base de données et PHP.
- APIs.
- Génération PDF et ODT des éléments (factures, propositions commerciales, commandes, bons expéditions, etc...)
- Code simple et facilement personnalisable (pas de framework lourd; mécanisme de hook et triggers).
- Support natif de nombreuses fonctions spécifiques aux pays comme:
- La taxe espagnole TE et ISPF
- Gestion de la TVA NPR (non perçue récupérable - pour les utilisateurs français des DOM-TOM)
- La loi française Finance 2016 et logiciels de caisse
- La double taxe canadienne
- Le timbre fiscal tunisien
- Numérotation de facture de l'argentines (avec type A,B,C...)
- Compatible avec vos processus RGPD
- ...
-
### Extension
Dolibarr peut aussi être étendu à volonté avec l'ajout de modules/applications externes développées par des développeurs tiers, disponible sur [DoliStore](https://www.dolistore.com).
## CE QUE DOLIBARR NE PEUT PAS (ENCORE) FAIRE
Voici un liste de fonctionnalités pas encore gérées par Dolibarr:
- Dolibarr ne contient pas de module de génération de feuille de paie.
- Les tâches du module de gestion de projets n'ont pas de dépendances entre elle.
- Dolibarr n'embarque pas de Webmail intégré nativement.
- Dolibarr ne fait pas le café (pas encore).
## DOCUMENTATION
La documentation utilisateur, développeur et traducteur est disponible sous forme de ressources de la communauté via le site [Wiki](https://wiki.dolibarr.org).
## CONTRIBUER
Ce projet existe grâce à ses nombreux contributeurs [[Contribuer](https://github.com/Dolibarr/dolibarr/blob/develop/.github/CONTRIBUTING.md)].
[![Dolibarr](https://opencollective.com/dolibarr/contributors.svg?width=890&button=false)](https://github.com/Dolibarr/dolibarr/graphs/contributors)
## CREDITS
Dolibarr est le résultat du travail de nombreux contributeurs depuis des années et utilise des librairies d'autres contributeurs.
Voir le fichier [COPYRIGHT](https://github.com/Dolibarr/dolibarr/blob/develop/COPYRIGHT)
## ACTUALITES ET RESEAUX SOCIAUX
Suivez le projet Dolibarr sur les réseaux francophones
- [Facebook](https://www.facebook.com/dolibarr.fr)
- [X](https://www.twitter.com/dolibarr_france)
ou sur les réseaux anglophones
- [Facebook](https://www.facebook.com/dolibarr)
- [X](https://www.twitter.com/dolibarr)
- [LinkedIn](https://www.linkedin.com/company/association-dolibarr)
- [YouTube](https://www.youtube.com/user/DolibarrERPCRM)
- [GitHub](https://github.com/Dolibarr/dolibarr)

View File

@@ -2,7 +2,7 @@
![Downloads per day](https://img.shields.io/sourceforge/dw/dolibarr.svg)
![Docker hub pulls](https://img.shields.io/docker/pulls/dolibarr/dolibarr.svg)
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.2-8892BF.svg?style=flat-square)](https://php.net/)
[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.1-8892BF.svg?style=flat-square)](https://php.net/)
[![GitHub release](https://img.shields.io/github/v/release/Dolibarr/dolibarr)](https://github.com/Dolibarr/dolibarr)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/5521/badge)](https://bestpractices.coreinfrastructure.org/projects/5521)
@@ -34,12 +34,12 @@ There is a lot of different solutions to install Dolibarr.
### Using packages
If you have low technical skills and you're looking to install Dolibarr ERP/CRM with just few clicks, you can use one of the packaged versions (see next chapter if you have IT knowledge) :
If you have low technical skills and you're looking to install Dolibarr ERP/CRM with just a few clicks, you can use one of the packaged versions:
- [DoliWamp for Windows](https://wiki.dolibarr.org/index.php/Dolibarr_for_Windows_(DoliWamp))
- [DoliDeb for Debian, Ubuntu](https://wiki.dolibarr.org/index.php/Dolibarr_for_Ubuntu_or_Debian)
- [DoliDeb for Debian](https://wiki.dolibarr.org/index.php/Dolibarr_for_Ubuntu_or_Debian)
- DoliRpm for Red Hat, Fedora, OpenSuse, Mandriva or Mageia
- The Docker image (see chapter "Using Docker")
- The Docker image (see next chapter)
Releases can be downloaded from [official website](https://www.dolibarr.org/).
@@ -116,7 +116,6 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
- Product Variants
- Bill of Materials (BOM)
- Manufacturing Orders (MO)
- Workstations / Workplaces
Customer/Sales Management
@@ -176,13 +175,12 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
- Data export/import
- Barcodes
- LDAP connectivity
- Click-To-Dial integration
- ClickToDial integration
- Mass emailing
- RSS integration
- Social platforms linking
- Payment platforms integration (PayPal, Stripe, Paybox...)
- Email-Collector
- AI support via API
(around 100 modules available by default, 1000+ addons at the official marketplace Dolistore.com)
@@ -239,7 +237,7 @@ These are features that Dolibarr does **not** yet fully support:
Administrator, user, developer and translator's documentation are available along with other community resources in the [Wiki](https://wiki.dolibarr.org).
## CONTRIBUTING AND RELEASE PROCESS
## CONTRIBUTING
This project exists thanks to all the people who contribute.
Please read the instructions on how to contribute (report a bug/error, a feature request, send code, ...) [[Contributing](https://github.com/Dolibarr/dolibarr/blob/develop/.github/CONTRIBUTING.md)]
@@ -248,8 +246,6 @@ A View on Contributors:
[![Dolibarr](https://opencollective.com/dolibarr/contributors.svg?width=890&button=false)](https://github.com/Dolibarr/dolibarr/graphs/contributors)
The release process is described into the file dev/build/makepack-howto.md
## CREDITS
@@ -262,12 +258,9 @@ See [COPYRIGHT](https://github.com/Dolibarr/dolibarr/blob/develop/COPYRIGHT) fil
Follow Dolibarr project on:
- [LinkedIn](https://www.linkedin.com/company/association-dolibarr)
- [Mastodon](https://pouet.chapril.org/@dolibarr)
- [BlueSky](https://bsky.app/profile/dolibarr.org)
- [Threads](https://www.threads.net/@dolibarr)
- [X](https://x.com/dolibarr)
- [Facebook](https://www.facebook.com/dolibarr)
- [X](https://x.com/dolibarr)
- [LinkedIn](https://www.linkedin.com/company/association-dolibarr)
- [Reddit](https://www.reddit.com/r/Dolibarr_ERP_CRM/)
- [YouTube](https://www.youtube.com/user/DolibarrERPCRM)
- [GitHub](https://github.com/Dolibarr/dolibarr)

View File

@@ -5,27 +5,26 @@ This file contains some policies about the security reports on Dolibarr ERP CRM
## Supported Versions for security reports
Security report are valid only on any current stable version for the last 5 major versions (see https://dolibarr.org web site to get current stable version) or on development version (branch "develop" on https://github.com/Dolibarr/dolibarr).
Security report are valid only on current stable version (see https://dolibarr.org web site to get current stable version) or on development version (branch "develop" on https://github.com/Dolibarr/dolibarr).
## Reporting a Vulnerability
To report a vulnerability, for a private report, you can:
- Send your report as an issue on https://github.com/Dolibarr/dolibarr/issues or on GitHub Vulnerability Disclosure Program tool (VDP): https://github.com/Dolibarr/dolibarr/security/advisories (recommended)
- Send your report on Vulnerability Disclosure Program (VDP): Link will be updated soon (recommended for everybody)
<!--
- Send your report on Vulnerability Disclosure Program (VDP) [https://app.yogosha.com/cvd/dolibarr/10VxeNx6Ui3rSEhAgX63US](https://app.yogosha.com/cvd/dolibarr/10VxeNx6Ui3rSEhAgX63US) (recommended for everybody)
- Or if you have permissions, use GitHub security advisory at [https://github.com/Dolibarr/dolibarr/security/advisories/new](https://github.com/Dolibarr/dolibarr/security/advisories/new)
-->
- Or send an email to security@dolibarr.org with clear textual description of the report along with steps to reproduce the issue, include attachments such as screenshots or proof of concept code as necessary (in such a case, the issue may be created by the developer that will fix the vulnerability or the Release Manager).
- Or send an email to security@dolibarr.org with clear textual description of the report along with steps to reproduce the issue, include attachments such as screenshots or proof of concept code as necessary.
## Hunting vulnerabilities on Dolibarr
We believe that the future of software is online SaaS. This means software are more and more critical and no technology is perfect. Working with skilled security researchers is crucial in identifying weaknesses in our technology.
If you believe you've found a security bug in our service, we are happy to work with you to resolve the issue promptly.
We plan to re-open our bug bounty program (closed in end of 2024) in the future, but this is not yet available.
If you believe you've found a security bug in our service, we are happy to work with you to resolve the issue promptly and ensure you are fairly rewarded for your discovery.
Any type of denial-of-service attack is strictly forbidden, as well as any interference with network equipment and Dolibarr infrastructure.
@@ -110,12 +109,8 @@ Scope is the web application (backoffice) and the APIs.
* Software or libraries versions, private IP disclosure, Stack traces or path disclosure when logged-in user is admin.
* Vulnerabilities affecting outdated browsers or platforms, or vulnerabilities inside browsers themself.
* Brute force attacks on login page, password forgotten page or any public pages (/public/*) are not qualified if the recommended fail2ban rules were not installed.
* SSL/TLS practices (cypher enabled or not)
* SSL/TLS best practices
* Invalid or missing SPF (Sender Policy Framework) records (Incomplete or missing SPF/DKIM/DMARC)
* Physical or social engineering attempts or issues that require physical access to a victims computer/device
* Vulnerabilities of type XSS exploited by using javascript into a website page of the website module or by using php code into a website page (being able to set javascript or php code is the expected behaviour in the website module), except if the user does not have the permission to edit page or php code.
## Be informed of a new vulnerability
You can get more information on how to be informed on a new vulnerability on the page https://wiki.dolibarr.org/index.php/Security_information
* Vulnerabilities of type XSS exploited by using javascript into a website page (with permission to edit website pages) or by using php code into a website page
using the permission to edit php code are not qualified, except if this allow to get higher privileges (being able to set javascript or php code is the expected behaviour).

View File

@@ -7,4 +7,3 @@
/dolibarr-*.zip
/*.exe
/html
/*.bak

View File

@@ -1,13 +1,13 @@
README (English)
Path: /dolibarr/dev/build/README
Path: /dolibarr/build/README
##################################################
Building packages
##################################################
All sub-directories of "build" directory contains files (setup or binary tools) required to build automatically Dolibarr packages.
The build directory and all its contents is absolutely not required to make Dolibarr working.
The build directory and all its contents is absolutely not required to make Dolibarr working.
It is here only to build Dolibarr packages, and those generated packages will not contains this "build" directory.
@@ -21,7 +21,7 @@ There are several tools:
See makepack-howto.txt for prerequisites.
--------------------------------------------------------------------------------------------------
- To build a theme package, launch the script
> perl makepack-dolibarrtheme.pl

View File

@@ -5,7 +5,7 @@
update-alternatives --config php
* To list packages
* To list packages
cd htdocs/includes/diroflib
composer install
@@ -37,3 +37,4 @@ Edit composer.json to change version to "x.y.z"
composer -v update --root-reqs --no-dev --ignore-platform-reqs
composer -v update --root-reqs --no-dev --ignore-platform-reqs [--no-autoloader] [--dry-run] ccampbell/chromephp

View File

@@ -43,16 +43,16 @@ END
# Complete .bashrc with DEBEMAIL and DEBFULLNAME
Example:
export DEBFULLNAME="Laurent Destailleur (eldy)"
export DEBFULLNAME="Laurent Destailleur (eldy)"
export DEBEMAIL=eldy@users.sourceforge.net
Other example:
export DEBFULLNAME="Laurent Destailleur"
export DEBFULLNAME="Laurent Destailleur"
export DEBEMAIL="eldy@destailleur.fr"
export QUILT_PATCHES=debian/patches
# Note: alioth.debian.org is outdated --> https://alioth-archive.debian.org/ --> https://salsa.debian.org/public
# Note: alioth.debian.org is outdated --> https://alioth-archive.debian.org/ --> https://salsa.debian.org/public
* Create an account login
* Update your ~/.ssh/config file to add:
Host svn.debian.org git.debian.org bzr.debian.org hg.debian.org darcs.debian.org arch.debian.org
@@ -72,10 +72,10 @@ export QUILT_PATCHES=debian/patches
# podebconf-report-po --from email@email.com To send email to ask translations
# Edit manually file XX.po and remove all lines "#, fuzzy" when translation is complete
# msgfmt -v -c -o /dev/null XX.po To have status of translation for language XX
# To check package integrity
# lintian --pedantic -E -I package.deb To test a binary package
# lintian --pedantic -E -I package.dsc To test a source package
# lintian --pedantic -E -I package.deb To test a binary package
# lintian --pedantic -E -I package.dsc To test a source package
# To manipulate packages
# dpkg -l List all packages
@@ -84,7 +84,7 @@ export QUILT_PATCHES=debian/patches
# dpkg -I package.deb Give information on package
# dpkg -i package.deb Install a package
# dpkg-reconfigure -plow package Reconfigure package
# dpkg -L packagename List content of installed package
# dpkg -L packagename List content of installed package
# dpkg -r packagename Remove config files and interactive saved answers
# dpkg -s packagename Give status of installed package
# dpkg --purge Remove config files and interactive saved answers
@@ -104,9 +104,9 @@ See page https://www.debian.org/devel/wnpp/#l1 for example of ITP requests conte
- Wait until you received bug number.
For first ITP submission of Dolibarr, bug id was 634783.
- Check bug is into database by searching with id on
- Check bug is into database by searching with id on
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=634783
- Add a line for upstream into file changelog with bug number
- Call for a mentor on ML debian-mentors to upload packages
@@ -129,26 +129,26 @@ To set status of a bug to "pending"
> bts --smtp-host=yoursmtpserver tag 999999 +pending
or replay to email 999999@bugs.debian.org + submitter of bug
With a message starting with:
With a message starting with:
Control: tag -1 +pending
Thanks. Fixed into git.
or replay to email control@bugs.debian.org
With only message
With only message
tag 729538 +pending
To remove status of a bug without "moreinfo" (bug can be processed)
or replay to email 999999@bugs.debian.org + submitter of bug
With a message starting with:
With a message starting with:
Control: tag -1 -moreinfo
Thanks. Fixed into git.
or replay to email control@bugs.debian.org
With only message
With only message
tag 729538 -moreinfo
@@ -172,7 +172,7 @@ Pour lister les env chroot
or
> ls /srv/chroot
Puis pour se connecter et préparer l'environnement
Puis pour se connecter et préparer l'environnement
> schroot -c name_of_chroot (example schroot -c unstable-amd64-sbuild)
> cat /etc/debian_chroot to check which debian branch we are into
> apt-get install vim dialog
@@ -212,7 +212,7 @@ or better
* You can then create a PHP project from Eclipse called tcpdf-debian
from git clone dir and make link to git.
* If local branch upstream and pristine-tar does not exists, create it
from origin/upstream and origin/pristine.
@@ -220,7 +220,7 @@ from origin/upstream and origin/pristine.
> debian/get-orig-source.sh
If script fails with error Bad certificate, you can set "export PERL_LWP_SSL_VERIFY_HOSTNAME=0" to solve this.
* Some files are removed from archive by the get-orig-source.sh
* Some files are removed from archive by the get-orig-source.sh
* Modify the tag file to replace sRGB.icc with correct free version and rename file into
tcpdf_x.y.z+dfsgw.orig.tar.xz
@@ -243,14 +243,14 @@ Warning: Date must have format reported by "date -R"
Warning: Name and email must match value into debian/control file (Entry added here is used by next step).
* We try to build package
> rm -fr ../build-area;
> rm -fr ../build-area;
> git-buildpackage -us -uc --git-debian-branch=[master|jessie] --git-upstream-branch=[upstream|upstream-x.y.z]
ou
> git-buildpackage -us -uc --git-ignore-branch --git-upstream-branch=[upstream|upstream-x.y.z]
Note: To build an old version, do: git checkout oldtagname -b newbranchname; git-buildpackage -us -uc --git-debian-branch=newbranchname --git-upstream-branch=[upstream|upstream-3.5.x]
Note: You can use git-buildpackage -us -uc --git-ignore-new if you want to test build with uncommitted file
Note: You can use git-buildpackage -us -uc -d if you want to test build when dependencies does not match
Note: You can use git-buildpackage -us -uc -d if you want to test build when dependencies does not match
Note: Package is built into directory ../build-area
Note: To compare 2 packages: debdiff package1.dsc package2.dsc
@@ -297,7 +297,7 @@ from origin/upstream and origin/pristine.
> debian/get-orig-source.sh
If script fails with error Bad certificate, you can set "export PERL_LWP_SSL_VERIFY_HOSTNAME=0" to solve this.
* Edit orig.tar.gz file to remove
* Edit orig.tar.gz file to remove
- debian
- htdocs/includes/ckeditor
- htdocs/includes/jquery/css
@@ -311,7 +311,7 @@ If script fails with error Bad certificate, you can set "export PERL_LWP_SSL_VER
- htdocs/includes/restler/framework/Luracast/Restler/explorer
- htdocs/includes/swiftmailer
- htdocs/includes/tcpdf or htdocs/includes/tecnickcom
And rename file into
And rename file into
dolibarr-x.y.z+dfsgw.tgz
(x.y.z = version, w start from 1 and is increased for each new git-import-orig already done)
@@ -343,7 +343,7 @@ To update dolibarr debian package when only files into debian has changed:
To update dolibarr debian package when only files not into debian has changed:
* Checkout the branch you want to work on: master of debian/...
* Checkout the branch you want to work on: master of debian/...
* Manually, add patches into debian/patches and update the file debian/series, or do the 2 steps with "quilt import filepatch.patch"
* You can test patching of series with "quilt push" (autant de fois que de patch). Avec "quilt pop -a", on revient a l'état du upstream sans les patch.
* Update the debian/changelog to add entry of change.
@@ -358,7 +358,7 @@ ou
Note: To build an old version, do: git checkout oldtagname -b newbranchname; git-buildpackage -us -uc --git-debian-branch=newbranchname --git-upstream-branch=[upstream|upstream-jessie|upstream-3.5.x|3.5.5]
Note: You can use git-buildpackage -us -uc --git-ignore-new if you want to test build with uncommitted file
Note: You can use git-buildpackage -us -uc -d if you want to test build when dependencies does not match
Note: You can use git-buildpackage -us -uc -d if you want to test build when dependencies does not match
Note: Package is built into directory ../build-area
Note: To compare 2 packages: debdiff package1.dsc package2.dsc
@@ -382,7 +382,7 @@ Note: If there was errors managed manually, you may need to make a git commit bu
* Package arrives into FTPmaster taskboard with status NEW (pending upload). You can view it at:
http://ftp-master.debian.org/new/
* Once package is validated, you should see it into area unstable at:
http://packages.qa.debian.org
@@ -390,7 +390,7 @@ http://packages.qa.debian.org
##### Send an unblock request to make a full update of a stable package
##### Send an unblock request to make a full update of a stable package
Use this to move from unstable to testing.
@@ -402,7 +402,7 @@ Fill message, for example:
"Please unblock package dolibarr
A security error CVE-2015-3935 was reported and is fixed into package 3.5.7.
Note that package 3.5.7 contains not only fixed for bugs reported to debian. It includes other fixes, but they are all related to stability or security,
so it is a better solution to validate this maintenance release than applying a patch of the only CVE-2015-3935.
so it is a better solution to validate this maintenance release than applying a patch of the only CVE-2015-3935.
After discussion with ..., it appears that security holes are enough to request this unblock request."
@@ -423,14 +423,14 @@ Pro are:
- Patches were already tested because deployed and used by several thousands of users.
- It is easier for package maintener to include this official set of fixes than applying one patch after one patch for each debian report or backported each patch into a dedicated version.
- Debian maintenance version is inline with official project maintenance version (better when all fixes are not related to the way the software is packaged)
Cons are:
Cons are:
- The patch include more than the only one security reported fixes
So I just need to know if it's ok to push such a version 3.5.7 (fixes for 3.5.* branch) instead of only one fix for only the few (the only) reported debian bugs,
since it provides more stability and is for me a more secured process.
"
##### Send an request to ask a simple fix of a stable package
##### Send an request to ask a simple fix of a stable package
Use this to ask to apply patches on a stable version.
@@ -442,7 +442,7 @@ Fill message, for example:
"Please unblock package dolibarr
A security error CVE-2015-3935 was reported and is fixed into package 3.5.7.
Note that package 3.5.7 contains not only fixed for bugs reported to debian. It includes other fixes, but they are all related to stability or security,
so it is a better solution to validate this maintenance release than applying a patch of the only CVE-2015-3935.
so it is a better solution to validate this maintenance release than applying a patch of the only CVE-2015-3935.
After discussion with ..., it appears that security holes are enough to request this unblock request."
Note: If there is a response to ask more information, don't forget to remove the tag during answer.

View File

@@ -2,5 +2,5 @@ dolibarr (__VERSION__) UNRELEASED; urgency=low
[ Laurent Destailleur (eldy) ]
* New upstream release.
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Tue, 12 May 2015 12:00:00 +0100
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Tue, 12 May 2015 12:00:00 +0100

1
build/debian/compat Normal file
View File

@@ -0,0 +1 @@
10

View File

@@ -137,7 +137,7 @@ $dolibarr_main_db_collation='latin1_swedish_ci';
# Default value: dolibarr
# Possible values: Any values found in files in htdocs/core/login directory after
# the "function_" string and before the ".php" string. You can also separate several
# values using a ",". In this case, Dolibarr will check login/pass for each value in
# values using a ",". In this case, Dolibarr will check login/pass for each value in
# order defined into value. However, note that this can't work with all values.
# Examples:
# $dolibarr_main_authentication='http';
@@ -235,3 +235,4 @@ $dolibarr_main_prod='0';
# dolibarr_main_distrib
# A key to identify the distribution used for first installation
$dolibarr_main_distrib = 'debian';

View File

@@ -7,7 +7,7 @@ Standards-Version: 3.9.6
Homepage: https://www.dolibarr.org
Build-Depends: debhelper (>= 9), po-debconf
# This package need at least debian 7 or ubuntu 13.04 or any distribution based on this version
Package: dolibarr
Architecture: all
# For debian 7 or 8 or 9
@@ -35,8 +35,8 @@ Recommends: apache2 | lighttpd | httpd,
php-xml, php-mbstring, php-intl
Suggests: www-browser, php5-geoip
Description: Web based software to manage a company or foundation
Dolibarr ERP & CRM is an easy to use open source/free software package for
companies, foundations or freelances. It includes different
Dolibarr ERP & CRM is an easy to use open source/free software package for
companies, foundations or freelances. It includes different
features for Enterprise Resource Planning (ERP) and Customer Relationship
Management (CRM) but also for different other activities.
.

View File

@@ -38,7 +38,7 @@ Copyright: 2002-2009, Rodolphe Quiedeville <rodolphe@quiedeville.org>
2011, Herve Prot <herve.prot@symeos.com>
2011, Remy Younes <ryounes@gmail.com>
2012-2013, Christophe Battarel <christophe.battarel@altairis.fr>
License: GPL-3+
This program is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public
@@ -147,7 +147,7 @@ Comments:
------------------------------------------------------------
Files: doc/images/*
Copyright: Laurent Destailleur
Copyright: Laurent Destailleur
License: CC-BY-SA-3.0
You are free:
to Share (to copy, distribute and transmit the work) and
@@ -306,7 +306,7 @@ Comment:
Files: htdocs/includes/odtphp/*
Copyright: 2008, Julien Pauli
2008, Cyril PIERRE de GEYER
2008, Cyril PIERRE de GEYER
2010, Laurent Destailleur <eldy@users.sourceforge.net>
License: GPL-2+
This program is free software; you can redistribute it

View File

View File

@@ -12,7 +12,7 @@ Comment[es]=Software para gestión de PYMES, profesionales independientes, auto
Comment[fr]=L'ERP & CRM simple pour la gestion des PME et associations
Comment[it]=Programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti
# Command to open an URL
# For Fedora: xdg-open
# For Fedora: xdg-open
# For Debian/Ubuntu: xdg-open or x-www-browser
# (exo-open for xfde, gnome-open for gnome, ...)
Exec=xdg-open http://localhost/dolibarr

View File

@@ -8,4 +8,4 @@ htdocs usr/share/dolibarr/
scripts usr/share/dolibarr/
doc/install usr/share/doc/dolibarr/
doc/user usr/share/doc/dolibarr/
doc/index.html usr/share/doc/dolibarr/
doc/index.html usr/share/doc/dolibarr/

View File

@@ -7,4 +7,4 @@ dolibarr: apache2-deprecated-auth-config Order
dolibarr: apache2-deprecated-auth-config Allow
# Ignore warning required for a good install process
dolibarr: apache2-reverse-dependency-calls-wrapper-script postinst a2enmod
dolibarr: apache2-reverse-dependency-calls-wrapper-script postinst a2enconf
dolibarr: apache2-reverse-dependency-calls-wrapper-script postinst a2enconf

View File

View File

View File

@@ -102,3 +102,4 @@ Description: Delete database ?
# Delete also all uploaded and generated files (datas related
# to this quetion are all files found into /usr/share/dolibarr/documents,
# uploaded or generated when using Dolibarr) ?

View File

@@ -27,7 +27,7 @@ $force_install_lockinstall='444';
$force_install_distrib='debian';
// Value to overwrite path to use shared libraries/fonts instead of embedded one.
// If during install, we enable/disable declaration to use non embedded libraries, we must also check they are
// If during install, we enable/disable declaration to use non embedded libraries, we must also check they are
// - not removed from package (see rm in rules file),
// - declared into dependencies (see Depends in control file)
//$force_dolibarr_lib_TCPDF_PATH='';

View File

@@ -1,11 +1,11 @@
# Alias for dolibarr directory
alias.url += (
alias.url += (
"/dolibarr" => "/usr/share/dolibarr/htdocs",
)
# Disallow access to libraries
#$HTTP["url"] =~ "^/dolibarr/libraries" {
# url.access-deny = ( "" )
#$HTTP["url"] =~ "^/dolibarr/libraries" {
# url.access-deny = ( "" )
#}
# Limit access to setup script

View File

@@ -19,8 +19,8 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-//$conffiletoshow = "/etc/dolibarr/conf.php";
+$conffile = "/etc/dolibarr/conf.php";
+$conffiletoshow = "/etc/dolibarr/conf.php";
// Include configuration
--- a/htdocs/install/inc.php
+++ b/htdocs/install/inc.php
@@ -32,6 +32,6 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-//$conffiletoshow = "/etc/dolibarr/conf.php";
+$conffile = "/etc/dolibarr/conf.php";
+$conffiletoshow = "/etc/dolibarr/conf.php";
$short_options = "c:h";
$long_options = array(

View File

@@ -0,0 +1 @@
[type: gettext/rfc822deb] dolibarr.templates

View File

@@ -66,7 +66,7 @@ override_dh_install:
rm -fr dev/xdebug
rm -f dev/dolibarr_changes.txt
rm -f dev/README
rm -f doc/images/dolibarr_screenshot2.png
rm -f doc/images/dolibarr_screenshot3.png
rm -f doc/images/dolibarr_screenshot4.png
@@ -81,17 +81,17 @@ override_dh_install:
rm -fr test
rm -fr dev/build/aps
rm -fr dev/build/dmg
rm -fr dev/build/doap
rm -fr dev/build/exe
rm -fr dev/build/launchpad
rm -fr dev/build/live
rm -fr dev/build/patch
rm -fr dev/build/perl
rm -fr dev/build/rpm
rm -fr dev/build/zip
rm -fr build/aps
rm -fr build/dmg
rm -fr build/doap
rm -fr build/exe
rm -fr build/launchpad
rm -fr build/live
rm -fr build/patch
rm -fr build/perl
rm -fr build/rpm
rm -fr build/zip
# clean from all PHP embedded libraries (we use package dependencies instead)
# rm -fr htdocs/includes/geoip
# rm -fr htdocs/includes/nusoap
@@ -128,3 +128,4 @@ override_dh_fixperms:
# Give rights to the webserver on the upload directory
chown www-data:www-data debian/dolibarr/var/lib/dolibarr/documents
chmod 2775 debian/dolibarr/var/lib/dolibarr/documents

View File

@@ -0,0 +1 @@
3.0 (quilt)

View File

@@ -1,6 +1,5 @@
# Remove warning, we want to keep both standard and minified sources.
dolibarr: source-contains-prebuilt-javascript-object htdocs/includes/jquery/*
dolibarr: source-contains-prebuilt-javascript-object htdocs/public/includes/jquery/*
dolibarr: source-contains-prebuilt-javascript-object htdocs/includes/jsgantt/*
dolibarr: source-contains-prebuilt-javascript-object htdocs/includes/jstz/*
# Those are false positives, the files are their own sources since
@@ -11,13 +10,8 @@ source-is-missing htdocs/includes/ckeditor/ckeditor/lang/*.js
source-is-missing htdocs/includes/ckeditor/ckeditor/plugins/*/dialogs/*.js
source-is-missing htdocs/includes/ckeditor/ckeditor/plugins/*/filter/*.js
source-is-missing htdocs/includes/ckeditor/ckeditor/plugins/templates/templates/default.js
source-is-missing htdocs/public/includes/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/*.js
source-is-missing htdocs/public/includes/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/*.js
source-is-missing htdocs/public/includes/ckeditor/ckeditor/lang/*.js
source-is-missing htdocs/public/includes/ckeditor/ckeditor/plugins/*/dialogs/*.js
source-is-missing htdocs/public/includes/ckeditor/ckeditor/plugins/*/filter/*.js
source-is-missing htdocs/public/includes/ckeditor/ckeditor/plugins/templates/templates/default.js
source-is-missing htdocs/includes/restler/framework/Luracast/Restler/explorer/lib/*.js
# Those are false positives, the files are their own sources since
# they are data files
source-is-missing htdocs/includes/mobiledetect/mobiledetectlib/Mobile_Detect.json

View File

@@ -4,4 +4,4 @@ DOLIMAMP Package tools
##################################################
This directory contains files and docs used to build
a DoliMamp package for Mac OS X.
a DoliMamp package for Mac OS X.

View File

@@ -23,12 +23,11 @@ RUN apt-get update -y \
msmtp \
msmtp-mta \
mailutils \
libpq-dev \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/* \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) calendar intl mysqli pdo_mysql pgsql gd soap zip \
&& docker-php-ext-configure ldap \
&& docker-php-ext-install -j$(nproc) calendar intl mysqli pdo_mysql gd soap zip \
&& docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \
&& docker-php-ext-install -j$(nproc) ldap && \
mv ${PHP_INI_DIR}/php.ini-development ${PHP_INI_DIR}/php.ini

View File

@@ -0,0 +1,34 @@
# How to use it ?
The docker-compose.yml file is a sample of a config file to use to build and run Dolibarr in the current workspace with Docker.
This docker image is intended for development usage.
For production usage you should consider other contributor reference like https://hub.docker.com/r/dolibarr/dolibarr
Before build/run, define the variable HOST_USER_ID as following:
export HOST_USER_ID=$(id -u)
Go in repository build/docker :
cd build/docker
And then, you can run :
docker-compose up
This will run 4 containers Docker : Dolibarr, MariaDB, PhpMyAdmin and MailDev.
The URL to go to the Dolibarr is :
http://0.0.0.0
The URL to go to PhpMyAdmin is (login/password is root/root) :
http://0.0.0.0:8080
In Dolibarr configuration Email let PHP mail function, To see all mail send by Dolibarr go to maildev
http://0.0.0.0:8081
Setup the database connection during the installation process, please use mariadb (name of the database container) as database host.
Setup documents folder, during the installation process, to /var/documents

View File

@@ -1,4 +1,5 @@
---
version: '3'
networks:
internal-pod:
internal: true
@@ -16,6 +17,19 @@ services:
networks:
- internal-pod
- external-pod
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
PMA_HOST: mariadb
depends_on:
- mariadb
ports:
- "8080:80"
networks:
- internal-pod
- external-pod
web:
build: .
environment:
@@ -23,12 +37,13 @@ services:
PHP_INI_DATE_TIMEZONE: $PHP_INI_DATE_TIMEZONE
PHP_INI_MEMORY_LIMIT: $PHP_INI_MEMORY_LIMIT
volumes:
- ../../../htdocs:/var/www/html/
- ../../../documents:/var/www/documents
- ../../htdocs:/var/www/html/
- ../../documents:/var/documents
ports:
- "80:80"
- "9000:9000"
depends_on:
- mariadb
- mail
networks:
- internal-pod

24
build/docker-dev/docker-run.sh Executable file
View File

@@ -0,0 +1,24 @@
#!/bin/bash
# Script used by the Dockerfile.
# See README.md to know how to create a Dolibarr env with docker
usermod -u "${HOST_USER_ID}" www-data
groupmod -g "${HOST_USER_ID}" www-data
chgrp -hR www-data /var/www/html
chmod g+rwx /var/www/html/conf
if [ ! -d /var/documents ]; then
echo "[docker-run] => create volume directory /var/documents ..."
mkdir -p /var/documents
fi
echo "[docker-run] => Set Permission to www-data for /var/documents"
chown -R www-data:www-data /var/documents
echo "[docker-run] => update '${PHP_INI_DIR}/conf.d/dolibarr-php.ini'"
cat <<EOF > "${PHP_INI_DIR}/conf.d/dolibarr-php.ini"
date.timezone = ${PHP_INI_DATE_TIMEZONE:-UTC}
memory_limit = ${PHP_INI_MEMORY_LIMIT:-256M}
EOF
exec apache2-foreground

23
build/docker/README.md Normal file
View File

@@ -0,0 +1,23 @@
# How to use run Dolibarr with docker ?
## For a fast run of a demo of the local version, you can build the docker image from this current repository by running
sudo docker-compose build
sudo -s
export HOST_USER_ID=$(id -u)
export HOST_GROUP_ID=$(id -g)
export MYSQL_ROOT_PWD=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 13; echo)
docker-compose up -d
Warning: There is no persistency of data. This process is for dev purpose only.
## For a more robust or a production usage
If you want to execute an official Docker package, you can find it and read the doc on ihttps://hub.docker.com/r/dolibarr/dolibarr

View File

@@ -0,0 +1,28 @@
version: "3"
services:
mariadb-prod:
container_name: dolibarr-mariadb-prod
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PWD
MYSQL_DATABASE: "dolibarr-prod"
web:
container_name: dolibarr-web-prod
build: .
volumes:
- ../../htdocs:/var/www/html/
- ../../documents:/var/www/html/documents
depends_on:
- mariadb-prod
environment:
HOST_USER_ID: $HOST_USER_ID
HOST_GROUP_ID: $HOST_GROUP_ID
DOLI_ROOT_PASSWORD: $MYSQL_ROOT_PWD
DOLI_DATABASE: "dolibarr-prod"
DOLI_DB_SERVER: "mariadb-prod"
ports:
- "8080:80"

View File

@@ -10,16 +10,6 @@ if [ "${PHP_INI_DIR}" == "" ]; then
exit
fi
if [ "${HOST_USER_ID}" == "" ]; then
echo "Define HOST_USER_ID to your user ID before starting (example: www-data)"
exit 1
fi
if [ "${HOST_GROUP_ID}" == "" ]; then
echo "Define HOST_GROUP_ID to your group ID before starting (example: www-data)"
exit 1
fi
usermod -u "${HOST_USER_ID}" www-data
groupmod -g "${HOST_GROUP_ID}" www-data
@@ -39,7 +29,6 @@ date.timezone = ${PHP_INI_DATE_TIMEZONE:-UTC}
memory_limit = ${PHP_INI_MEMORY_LIMIT:-256M}
EOF
echo cp /var/www/html/install/install.forced.sample.php /var/www/html/install/install.forced.php
cp /var/www/html/install/install.forced.sample.php /var/www/html/install/install.forced.php
cp /var/www/html/install/install.forced.docker.php /var/www/html/install/install.forced.php
exec apache2-foreground

View File

@@ -0,0 +1,55 @@
#!/usr/bin/perl
#--------------------------------------------------------------------
# Start the generation of the development documentation with doxygen
#--------------------------------------------------------------------
# Determine the patho of this script
($DIR=$0) =~ s/([^\/\\]+)$//;
$DIR||='.';
$DIR =~ s/([^\/\\])[\\\/]+$/$1/;
$OPTIONS="";
#$OPTIONS="-d Preprocessor";
$CONFFILE="dolibarr-doxygen.doxyfile";
use Cwd;
my $dir = getcwd;
print "Current dir is: $dir\n";
#print "Running dir for doxygen must be: $DIR\n";
if (! -s "build/doxygen/$CONFFILE")
{
print "Error: current directory for building Dolibarr doxygen documentation is not correct.\n";
print "\n";
print "Change your current directory then, to launch the script, run:\n";
print '> perl .\dolibarr-doxygen-build.pl (on Windows)'."\n";
print '> perl ../dolibarr-doxygen-build.pl (on Linux or BSD)'."\n";
sleep 4;
exit 1;
}
$SOURCE=".";
# Get version $MAJOR, $MINOR and $BUILD
$result = open( IN, "< " . $SOURCE . "/htdocs/filefunc.inc.php" );
if ( !$result ) { die "Error: Can't open descriptor file " . $SOURCE . "/htdocs/filefunc.inc.php\n"; }
while (<IN>) {
if ( $_ =~ /define\('DOL_VERSION', '([\d\.a-z\-]+)'\)/ ) { $PROJVERSION = $1; break; }
}
close IN;
($MAJOR,$MINOR,$BUILD)=split(/\./,$PROJVERSION,3);
if ($MINOR eq '') { die "Error can't detect version into ".$SOURCE . "/htdocs/filefunc.inc.php"; }
$version=$MAJOR.".".$MINOR.".".$BUILD;
print "Running doxygen for version ".$version.", please wait...\n";
print "cat build/doxygen/$CONFFILE | sed -e 's/x\.y\.z/".$version."/' | doxygen $OPTIONS - 2>&1\n";
$result=`cat build/doxygen/$CONFFILE | sed -e 's/x\.y\.z/$version/' | doxygen $OPTIONS - 2>&1`;
print $result;
0;

View File

@@ -0,0 +1,88 @@
#!/usr/bin/perl
#--------------------------------------------------------------------
# \brief This script is a preprocessor for PHP files to be used
# on PHP source files before running Doxygen.
# \author Laurent Destailleur
#--------------------------------------------------------------------
# Usage: dolibarr-doxygen-filter.pl pathtofilefromdolibarrroot
$file=$ARGV[0];
if (! $file)
{
print "Usage: dolibarr-doxygen-filter.pl pathtofilefromdolibarrroot\n";
exit;
}
open(FILE,$file) || die "Failed to open file $file";
while (<FILE>)
{
if ($_ =~ /\\version\s/i)
{
$_ =~ s/\$Id://i;
$_ =~ s/(Exp|)\s\$$//i;
$_ =~ s/(\\version\s+)[^\s]+\s/$1/i;
$_ =~ s/(\w)\s(\w)/$1_$2/g;
}
$_ =~ s/exit\s*;/exit(0);/i;
$i=0;
$len=length($_);
$s="";
$insidequote=0;
$insidedquote=0;
$ignore="";
while ($i < $len)
{
$c=substr($_,$i,1);
if ($c eq "\\")
{
if ($insidequote) { $ignore="'"; };
if ($insidedquote) { $ignore="\""; };
}
else
{
if ($c eq "'")
{
if (! $insidedquote)
{
$c="\"";
#print "X".$ignore;
if ($ignore ne "'")
{
#print "Z".$ignore;
$insidequote++;
if ($insidequote == 2)
{
$insidequote=0;
}
}
}
#print "X".$insidequote;
}
elsif ($c eq "\"")
{
#print "Y".$insidequote;
if ($insidequote)
{
$c="'";
}
else
{
if ($ignore ne "\"")
{
$insidedquote++;
if ($insidedquote == 2)
{
$insidedquote=0;
}
}
}
}
$ignore="";
}
$s.=$c;
$i++;
}
print $s;
}
close(FILE);

View File

@@ -1,7 +1,4 @@
#!/usr/bin/perl
use strict;
use warnings;
#--------------------------------------------------------------------
# Script to get version of a source file
# Does not work with cygwin cvs command on Windows.
@@ -10,18 +7,15 @@ use warnings;
# Usage: dolibarr-doxygen-getversion.pl pathtofilefromdolibarrroot
$file = $ARGV[0];
if ( !$file ) {
$file=$ARGV[0];
if (! $file)
{
print "Usage: dolibarr-doxygen-getversion.pl pathtofilefromdolibarrroot\n";
exit;
}
$commande =
'cvs status "'
. $file
. '" | sed -n \'s/^[ \]*Working revision:[ \t]*\([0-9][0-9\.]*\).*/\1/p\'';
$commande='cvs status "'.$file.'" | sed -n \'s/^[ \]*Working revision:[ \t]*\([0-9][0-9\.]*\).*/\1/p\'';
#print $commande;
$result = `$commande 2>&1`;
$result=`$commande 2>&1`;
print $result;

View File

@@ -41,7 +41,7 @@ PROJECT_NUMBER = x.y.z
# If a relative path is entered, it will be relative to the location
# where doxygen was started. If left blank the current directory will be used.
OUTPUT_DIRECTORY = dev/build
OUTPUT_DIRECTORY = build
# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
# 4096 sub-directories (in 2 levels) under the output directory of each output
@@ -89,7 +89,7 @@ REPEAT_BRIEF = YES
# "The $name file" "is" "provides" "specifies" "contains"
# "represents" "a" "an" "the"
ABBREVIATE_BRIEF =
ABBREVIATE_BRIEF =
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# Doxygen will generate a detailed section even if there is only a brief
@@ -126,7 +126,7 @@ STRIP_FROM_PATH = "/home/dolibarr/doxygen.dolibarr.org/"
# definition is used. Otherwise one should specify the include paths that
# are normally passed to the compiler using the -I flag.
STRIP_FROM_INC_PATH =
STRIP_FROM_INC_PATH =
# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
# (but less readable) file names. This can be useful is your file systems
@@ -182,7 +182,7 @@ TAB_SIZE = 2
# will result in a user-defined paragraph with heading "Side Effects:".
# You can put \n's in the value part of an alias to insert newlines.
ALIASES =
ALIASES =
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
# sources only. Doxygen will then generate output that is more tailored for C.
@@ -469,7 +469,7 @@ GENERATE_DEPRECATEDLIST = YES
# The ENABLED_SECTIONS tag can be used to enable conditional
# documentation sections, marked by \if sectionname ... \endif.
ENABLED_SECTIONS =
ENABLED_SECTIONS =
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
# the initial value of a variable or define consists of for it to appear in
@@ -515,7 +515,7 @@ SHOW_NAMESPACES = NO
# is used as the file version. See the manual for examples.
#FILE_VERSION_FILTER = dolibarr-doxygen-getversion.pl
FILE_VERSION_FILTER =
FILE_VERSION_FILTER =
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated
@@ -524,7 +524,7 @@ FILE_VERSION_FILTER =
# You can optionally specify a file name after the option, if omitted
# DoxygenLayout.xml will be used as the name of the layout file.
LAYOUT_FILE =
LAYOUT_FILE =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
@@ -575,7 +575,7 @@ WARN_FORMAT = "$file:$line: $text"
# and error messages should be written. If left blank the output is written
# to stderr.
WARN_LOGFILE = dev/build/html/doxygen_warnings.log
WARN_LOGFILE = build/html/doxygen_warnings.log
#---------------------------------------------------------------------------
# configuration options related to the input files
@@ -638,13 +638,13 @@ EXCLUDE_PATTERNS = */CVS/*
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# AClass::ANamespace, ANamespace::*Test
EXCLUDE_SYMBOLS =
EXCLUDE_SYMBOLS =
# The EXAMPLE_PATH tag can be used to specify one or more files or
# directories that contain example code fragments that are included (see
# the \include command).
#EXAMPLE_PATH = htdocs/modulebuilder/template
#EXAMPLE_PATH = htdocs/modulebuilder/template
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
@@ -678,7 +678,7 @@ IMAGE_PATH = doc/images
# Works on Linux only
#INPUT_FILTER = ../dolibarr-doxygen-filter.pl
#INPUT_FILTER = "perl ../dolibarr-doxygen-filter.pl"
INPUT_FILTER =
INPUT_FILTER =
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
# basis.
@@ -689,7 +689,7 @@ INPUT_FILTER =
# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
# is applied to all files.
FILTER_PATTERNS =
FILTER_PATTERNS =
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER) will be used to filter the input files when producing source
@@ -774,7 +774,7 @@ ALPHABETICAL_INDEX = YES
# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
# should be ignored while generating the index headers.
IGNORE_PREFIX =
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
@@ -804,14 +804,14 @@ HTML_FILE_EXTENSION = .html
# standard header.
# Does not work with 1.7.3
#HTML_HEADER = dev/build/doxygen/doxygen_header.html
#HTML_HEADER = build/doxygen/doxygen_header.html
# The HTML_FOOTER tag can be used to specify a personal HTML footer for
# each generated HTML page. If it is left blank doxygen will generate a
# standard footer.
# Does not work with 1.7.3
HTML_FOOTER = dev/build/doxygen/doxygen_footer.html
HTML_FOOTER = build/doxygen/doxygen_footer.html
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
# style sheet that is used by each HTML page. It can be used to
@@ -820,7 +820,7 @@ HTML_FOOTER = dev/build/doxygen/doxygen_footer.html
# the style sheet file to the HTML output directory, so don't put your own
# stylesheet in the HTML output directory as well, or it will be erased!
HTML_STYLESHEET =
HTML_STYLESHEET =
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
# Doxygen will adjust the colors in the stylesheet and background images
@@ -927,14 +927,14 @@ GENERATE_HTMLHELP = NO
# can add a path in front of the file if the result should not be
# written to the html output directory.
CHM_FILE =
CHM_FILE =
# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
# be used to specify the location (absolute path including file name) of
# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
# the HTML help compiler on the generated index.hhp.
HHC_LOCATION =
HHC_LOCATION =
# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
# controls if a separate .chi index file is generated (YES) or that
@@ -946,7 +946,7 @@ GENERATE_CHI = NO
# is used to encode HtmlHelp index (hhk), content (hhc) and project file
# content.
CHM_INDEX_ENCODING =
CHM_INDEX_ENCODING =
# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
# controls whether a binary table of contents is generated (YES) or a
@@ -970,7 +970,7 @@ GENERATE_QHP = NO
# be used to specify the file name of the resulting .qch file.
# The path specified is relative to the HTML output folder.
QCH_FILE =
QCH_FILE =
# The QHP_NAMESPACE tag specifies the namespace to use when generating
# Qt Help Project output. For more information please see
@@ -988,14 +988,14 @@ QHP_VIRTUAL_FOLDER = doc
# add. For more information please see
# http://doc.trolltech.com/qthelpproject.html#custom-filters
QHP_CUST_FILTER_NAME =
QHP_CUST_FILTER_NAME =
# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
# custom filter to add. For more information please see
# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
# Qt Help Project / Custom Filters</a>.
QHP_CUST_FILTER_ATTRS =
QHP_CUST_FILTER_ATTRS =
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
# project's
@@ -1003,14 +1003,14 @@ QHP_CUST_FILTER_ATTRS =
# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
# Qt Help Project / Filter Attributes</a>.
QHP_SECT_FILTER_ATTRS =
QHP_SECT_FILTER_ATTRS =
# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
# be used to specify the location of Qt's qhelpgenerator.
# If non-empty doxygen will try to run qhelpgenerator on the generated
# .qhp file.
QHG_LOCATION =
QHG_LOCATION =
# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
# will be generated, which together with the HTML files, form an Eclipse help
@@ -1146,14 +1146,14 @@ PAPER_TYPE = a4
# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
# packages that should be included in the LaTeX output.
EXTRA_PACKAGES =
EXTRA_PACKAGES =
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
# the generated latex document. The header should contain everything until
# the first chapter. If it is left blank doxygen will generate a
# standard header. Notice: only use this tag if you know what you are doing!
LATEX_HEADER =
LATEX_HEADER =
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
# is prepared for conversion to pdf (using ps2pdf). The pdf file will
@@ -1223,12 +1223,12 @@ RTF_HYPERLINKS = NO
# config file, i.e. a series of assignments. You only have to provide
# replacements, missing definitions are set to their default value.
RTF_STYLESHEET_FILE =
RTF_STYLESHEET_FILE =
# Set optional variables used in the generation of an rtf document.
# Syntax is similar to doxygen's config file.
RTF_EXTENSIONS_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
@@ -1278,13 +1278,13 @@ XML_OUTPUT = xml
# which can be used by a validating XML parser to check the
# syntax of the XML files.
#XML_SCHEMA =
#XML_SCHEMA =
# The XML_DTD tag can be used to specify an XML DTD,
# which can be used by a validating XML parser to check the
# syntax of the XML files.
#XML_DTD =
#XML_DTD =
# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
# dump the program listings (including syntax highlighting
@@ -1338,7 +1338,7 @@ PERLMOD_PRETTY = YES
# This is useful so different doxyrules.make files included by the same
# Makefile don't overwrite each other's variables.
PERLMOD_MAKEVAR_PREFIX =
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
@@ -1372,14 +1372,14 @@ SEARCH_INCLUDES = YES
# contain include files that are not input files but should be processed by
# the preprocessor.
INCLUDE_PATH =
INCLUDE_PATH =
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
# directories. If left blank, the patterns specified with FILE_PATTERNS will
# be used.
INCLUDE_FILE_PATTERNS =
INCLUDE_FILE_PATTERNS =
# The PREDEFINED tag can be used to specify one or more macro names that
# are defined before the preprocessor is started (similar to the -D option of
@@ -1389,14 +1389,14 @@ INCLUDE_FILE_PATTERNS =
# undefined via #undef or recursively expanded use the := operator
# instead of the = operator.
PREDEFINED =
PREDEFINED =
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
# this tag can be used to specify a list of macro names that should be expanded.
# The macro definition that is found in the sources will be used.
# Use the PREDEFINED tag if you want to use a different macro definition.
EXPAND_AS_DEFINED =
EXPAND_AS_DEFINED =
# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
# doxygen's preprocessor will remove all function-like macros that are alone
@@ -1427,12 +1427,12 @@ SKIP_FUNCTION_MACROS = YES
# If a tag file is not located in the directory in which doxygen
# is run, you must also specify the path to the tagfile here.
TAGFILES =
TAGFILES =
# When a file name is specified after GENERATE_TAGFILE, doxygen will create
# a tag file that is based on the input files it reads.
GENERATE_TAGFILE =
GENERATE_TAGFILE =
# If the ALLEXTERNALS tag is set to YES all external classes will be listed
# in the class index. If set to NO only the inherited external classes
@@ -1471,7 +1471,7 @@ CLASS_DIAGRAMS = NO
# the mscgen tool resides. If left empty the tool is assumed to be found in the
# default search path.
#MSCGEN_PATH =
#MSCGEN_PATH =
# If set to YES, the inheritance and collaboration graphs will hide
# inheritance and usage relations if the target is undocumented
@@ -1515,7 +1515,7 @@ DOT_FONTSIZE = 10
# different font using DOT_FONTNAME you can set the path where dot
# can find it using this tag.
DOT_FONTPATH =
DOT_FONTPATH =
# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
# will generate a graph for each documented class showing the direct and
@@ -1598,13 +1598,13 @@ DOT_IMAGE_FORMAT = png
# The tag DOT_PATH can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
DOT_PATH =
DOT_PATH =
# The DOTFILE_DIRS tag can be used to specify one or more directories that
# contain dot files that are included in the documentation (see the
# \dotfile command).
DOTFILE_DIRS =
DOTFILE_DIRS =
# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
# nodes that will be shown in the graph. If the number of nodes in a graph
@@ -1655,4 +1655,4 @@ DOT_CLEANUP = YES
FULL_SIDEBAR = NO
HTML_EXTRA_STYLESHEET = dev/build/doxygen/doxygen-awesome.css
HTML_EXTRA_STYLESHEET = build/doxygen/doxygen-awesome.css

View File

@@ -204,7 +204,7 @@ html {
--code-background: #2a2c2f;
--tablehead-background: #2a2c2f;
--blockquote-background: #222325;
--blockquote-foreground: #7e8c92;
@@ -884,7 +884,7 @@ div.header {
flex-wrap: nowrap;
align-items: flex-start;
}
div.contents .textblock {
min-width: 200px;
flex-grow: 1;
@@ -973,21 +973,21 @@ html.dark-mode div.contents table iframe {
h2.groupheader {
border-bottom: 0px;
color: var(--page-foreground-color);
box-shadow:
100px 0 var(--page-background-color),
box-shadow:
100px 0 var(--page-background-color),
-100px 0 var(--page-background-color),
100px 0.75px var(--separator-color),
-100px 0.75px var(--separator-color),
500px 0 var(--page-background-color),
500px 0 var(--page-background-color),
-500px 0 var(--page-background-color),
500px 0.75px var(--separator-color),
-500px 0.75px var(--separator-color),
900px 0 var(--page-background-color),
900px 0 var(--page-background-color),
-900px 0 var(--page-background-color),
900px 0.75px var(--separator-color),
-900px 0.75px var(--separator-color),
1400px 0 var(--page-background-color),
-1400px 0 var(--page-background-color),
-1400px 0 var(--page-background-color),
1400px 0.75px var(--separator-color),
-1400px 0.75px var(--separator-color),
1900px 0 var(--page-background-color),
@@ -1143,8 +1143,8 @@ div.toc li a.aboveActive {
div.contents .toc.interactive > h3::before {
content: "";
width: 0;
height: 0;
width: 0;
height: 0;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
border-top: 5px solid var(--primary-color);
@@ -1822,8 +1822,8 @@ table.memberdecls img[src="closed.png"],
table.memberdecls img[src="open.png"],
div.dynheader img[src="open.png"],
div.dynheader img[src="closed.png"] {
width: 0;
height: 0;
width: 0;
height: 0;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
border-top: 5px solid var(--primary-color);
@@ -1841,7 +1841,7 @@ table.memberdecls img {
table.memberdecls img[src="closed.png"],
div.dynheader img[src="closed.png"] {
transform: rotate(-90deg);
}
.compoundTemplParams {
@@ -1884,7 +1884,7 @@ div.dynheader img[src="closed.png"] {
margin-bottom: calc(0px - var(--page-font-size));
}
table.memberdecls .memItemRight,
table.memberdecls .memItemRight,
table.memberdecls .mdescRight,
table.memberdecls .memTemplItemRight {
border-top: 0;
@@ -2070,8 +2070,8 @@ html.dark-mode .iconfopen, html.dark-mode .iconfclosed {
background-color: transparent;
}
/*
Class Index Doxygen 1.8
/*
Class Index Doxygen 1.8
*/
table.classindex {
@@ -2212,7 +2212,7 @@ div.contents .toc::-webkit-scrollbar-thumb {
background-color: transparent;
border: var(--webkit-scrollbar-padding) solid transparent;
border-radius: calc(var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding));
background-clip: padding-box;
background-clip: padding-box;
}
#nav-tree:hover::-webkit-scrollbar-thumb,
@@ -2406,8 +2406,8 @@ h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.
#MSearchBox .left {
background: none !important;
background: none !important;
}
#MSearchBox .right {
background: none !important;
background: none !important;
}

View File

@@ -1,4 +1,4 @@
<!--
<!--
File added into doxygen generated documentation
-->
@@ -23,4 +23,4 @@ File added into doxygen generated documentation
</script>
</body>
</html>
</html>

View File

@@ -48,3 +48,5 @@
</div>
<!-- End doxygen_header.html -->

Some files were not shown because too many files have changed in this diff Show More