forked from Wavyzz/dolibarr
Compare commits
181 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a3969c1d2c | ||
|
|
d87ebbf926 | ||
|
|
08b105502e | ||
|
|
bd2aba1a2f | ||
|
|
a4601686a6 | ||
|
|
bcf6d6a7a2 | ||
|
|
65a3b0893d | ||
|
|
92454d671f | ||
|
|
f43f2909ff | ||
|
|
60f089c015 | ||
|
|
7d898184b5 | ||
|
|
e818bf732d | ||
|
|
347bf3e4d6 | ||
|
|
b3a2257638 | ||
|
|
3b0a4c9fa9 | ||
|
|
154a25f8cb | ||
|
|
6a88d31675 | ||
|
|
f4555c4413 | ||
|
|
bc33f7e1a7 | ||
|
|
3c1b5846c9 | ||
|
|
3b5e07dca9 | ||
|
|
8927d1260a | ||
|
|
53cf9f0bf1 | ||
|
|
c0161ccead | ||
|
|
a4b1700bae | ||
|
|
f5cb64afaa | ||
|
|
a5c51589d3 | ||
|
|
b4501511c8 | ||
|
|
e18c5b9d68 | ||
|
|
d31bad82a1 | ||
|
|
bc0b0bebd3 | ||
|
|
031acacdab | ||
|
|
18725aec6b | ||
|
|
4c6955017f | ||
|
|
de40214a09 | ||
|
|
096b59913d | ||
|
|
d38b9e6248 | ||
|
|
f256deb54b | ||
|
|
7fa3474ecd | ||
|
|
ef159f919e | ||
|
|
42a1cde41a | ||
|
|
324f9631d7 | ||
|
|
2058d572d9 | ||
|
|
089fab828b | ||
|
|
fa05dc44ce | ||
|
|
5b9453e302 | ||
|
|
d81a2d060e | ||
|
|
97aaff7395 | ||
|
|
f7fe6c4f1a | ||
|
|
6f4b2a8905 | ||
|
|
82b7326c99 | ||
|
|
d2e6335e95 | ||
|
|
711f21e8a0 | ||
|
|
e1c343cedd | ||
|
|
bbb8b0f01f | ||
|
|
63ab8d9f75 | ||
|
|
7848d77830 | ||
|
|
e6a6426b5b | ||
|
|
f3dc94d334 | ||
|
|
44d6803d12 | ||
|
|
bdcd7b5ef3 | ||
|
|
f9ec70f1db | ||
|
|
b67fdb3e51 | ||
|
|
ad60a50d4d | ||
|
|
08a976fd85 | ||
|
|
db47ce3bb1 | ||
|
|
736890b244 | ||
|
|
2664518bd3 | ||
|
|
c6f90d8361 | ||
|
|
cc732621ab | ||
|
|
04fed9526a | ||
|
|
f68cf0034a | ||
|
|
ba4e97f07b | ||
|
|
c2c3879032 | ||
|
|
c4529ed986 | ||
|
|
8b7eaf360e | ||
|
|
2f317f0f52 | ||
|
|
bd35af1360 | ||
|
|
fe6d59c090 | ||
|
|
d4e66426e7 | ||
|
|
88d81aa943 | ||
|
|
5354b54ec0 | ||
|
|
49feeee85e | ||
|
|
42d8591758 | ||
|
|
6b0c8f39d5 | ||
|
|
2c2e01d14c | ||
|
|
abc1d1dcb3 | ||
|
|
628189f57f | ||
|
|
748dcd0881 | ||
|
|
4f98ca37e2 | ||
|
|
a34eaa07ed | ||
|
|
20f2293c01 | ||
|
|
7869e45954 | ||
|
|
9af7eaf08c | ||
|
|
df992477be | ||
|
|
79c55149b2 | ||
|
|
762e4ec8d1 | ||
|
|
77f982d1a8 | ||
|
|
7a7146c03d | ||
|
|
6388f6e62a | ||
|
|
e2605fbf64 | ||
|
|
90c24b3d95 | ||
|
|
0912b3b04f | ||
|
|
2dd81deb13 | ||
|
|
273ec857a3 | ||
|
|
2519278269 | ||
|
|
74881ae251 | ||
|
|
f08c9605db | ||
|
|
e41dfcbbb3 | ||
|
|
a5f51dc969 | ||
|
|
04b7fdd4c4 | ||
|
|
37f3fccc35 | ||
|
|
fedcec58a6 | ||
|
|
be95c92c45 | ||
|
|
c6afa1a6cb | ||
|
|
29eedd2ac4 | ||
|
|
ead519811c | ||
|
|
5203652796 | ||
|
|
750ed5e91c | ||
|
|
425c23d28c | ||
|
|
b73bcd68a9 | ||
|
|
6aee2db1d4 | ||
|
|
a96d13d5aa | ||
|
|
f1868ee162 | ||
|
|
42368b37e9 | ||
|
|
addefdf0cf | ||
|
|
15c19b99c9 | ||
|
|
c418a6ff57 | ||
|
|
3aad5fd283 | ||
|
|
9ec4575c43 | ||
|
|
6337a987d8 | ||
|
|
7b16039084 | ||
|
|
115323dec8 | ||
|
|
9c4bb84460 | ||
|
|
5a58b8e721 | ||
|
|
b068fdc9b3 | ||
|
|
b8533e1853 | ||
|
|
753e5e535d | ||
|
|
c5ebc9b7bd | ||
|
|
a602309e04 | ||
|
|
f51935a258 | ||
|
|
cd6ed63768 | ||
|
|
348981a419 | ||
|
|
adf59f2599 | ||
|
|
d30a0ea066 | ||
|
|
ab6c74ae88 | ||
|
|
fbca98ec2a | ||
|
|
93f23fe452 | ||
|
|
8a55e2f6a4 | ||
|
|
723c8278ce | ||
|
|
7133c6529b | ||
|
|
e0a3756c6e | ||
|
|
1987ea2eb7 | ||
|
|
6a4ee18380 | ||
|
|
b3a2908b48 | ||
|
|
910f7e8564 | ||
|
|
7cf1a97673 | ||
|
|
cf57e7e88b | ||
|
|
8b4dcb1194 | ||
|
|
a186e16568 | ||
|
|
1d197e42bb | ||
|
|
abefce7ae2 | ||
|
|
352bdaf9c4 | ||
|
|
111e3fcd32 | ||
|
|
278eea6fae | ||
|
|
fa22ebd893 | ||
|
|
793e77bc5f | ||
|
|
70a453a5c2 | ||
|
|
1e64870a9e | ||
|
|
9509929f5d | ||
|
|
336d3ad8e5 | ||
|
|
e71631abe0 | ||
|
|
66a175e48d | ||
|
|
e24da32424 | ||
|
|
a13b720598 | ||
|
|
86971c7b86 | ||
|
|
daccab5a07 | ||
|
|
4d32d93ee2 | ||
|
|
abc9eb7bdc | ||
|
|
ec19dcc8f8 | ||
|
|
9051e411d0 |
@@ -22,7 +22,3 @@ indent_style = tab
|
|||||||
indent_style = tab
|
indent_style = tab
|
||||||
[*.md]
|
[*.md]
|
||||||
trim_trailing_whitespace = false
|
trim_trailing_whitespace = false
|
||||||
[*.sql]
|
|
||||||
indent_style = tab
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
indent_size = 4
|
|
||||||
|
|||||||
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -21,7 +21,6 @@
|
|||||||
*.yml text eol=lf
|
*.yml text eol=lf
|
||||||
*.yaml text eol=lf
|
*.yaml text eol=lf
|
||||||
*.conf text eol=lf
|
*.conf text eol=lf
|
||||||
*.neon text eol=lf
|
|
||||||
|
|
||||||
.bash_aliases text eol=lf
|
.bash_aliases text eol=lf
|
||||||
|
|
||||||
|
|||||||
49
.github/CONTRIBUTING.md
vendored
49
.github/CONTRIBUTING.md
vendored
@@ -7,18 +7,18 @@ Bug reports and feature requests
|
|||||||
<a name="not-a-support-forum"></a>*Note*: **GitHub Issues is not a support forum.** If you have questions about Dolibarr / need help using the software, please use [the forums](https://www.dolibarr.org/forum.php). Forums exist in different languages.
|
<a name="not-a-support-forum"></a>*Note*: **GitHub Issues is not a support forum.** If you have questions about Dolibarr / need help using the software, please use [the forums](https://www.dolibarr.org/forum.php). Forums exist in different languages.
|
||||||
|
|
||||||
Issues are managed on [GitHub](https://github.com/Dolibarr/dolibarr/issues).
|
Issues are managed on [GitHub](https://github.com/Dolibarr/dolibarr/issues).
|
||||||
Default **language here is English**. So please prepare your contributions in English.
|
Default **language here is english**. So please prepare your contributions in english.
|
||||||
|
|
||||||
1. Please [use the search engine](https://help.github.com/articles/searching-issues) to check if nobody's already reported your problem.
|
1. Please [use the search engine](https://help.github.com/articles/searching-issues) to check if nobody's already reported your problem.
|
||||||
2. [Create an issue](https://help.github.com/articles/creating-an-issue). Choose an appropriate title. Prepend appropriately with Bug or Feature Request.
|
2. [Create an issue](https://help.github.com/articles/creating-an-issue). Choose an appropriate title. Prepend appropriately with Bug or Feature Request.
|
||||||
3. Tell us the version you are using! (look at /htdocs/admin/system/dolibarr.php? and check if you are using the latest version)
|
3. Tell us the version you are using! (look at /htdocs/admin/system/dolibarr.php? and check if you are using the latest version)
|
||||||
4. Write a report with as much detail as possible (Use [screenshots](https://help.github.com/articles/issue-attachments) or even screencasts and provide logging and debugging information whenever possible).
|
4. Write a report with as much detail as possible (Use [screenshots](https://help.github.com/articles/issue-attachments) or even screencasts and provide logging and debugging informations whenever possible).
|
||||||
5. Delete unnecessary submissions.
|
5. Delete unnecessary submissions.
|
||||||
6. **Check your Message at Preview before sending.**
|
6. **Check your Message at Preview before sending.**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="code"></a>Submit code
|
<a name="code"></a>Code
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
### Basic workflow
|
### Basic workflow
|
||||||
@@ -30,30 +30,25 @@ Default **language here is English**. So please prepare your contributions in En
|
|||||||
5. Commit and push your changes.
|
5. Commit and push your changes.
|
||||||
6. [Make a pull request](https://help.github.com/articles/creating-a-pull-request).
|
6. [Make a pull request](https://help.github.com/articles/creating-a-pull-request).
|
||||||
|
|
||||||
|
|
||||||
<span id="branches" name="branches"></span>
|
<span id="branches" name="branches"></span>
|
||||||
### Branches
|
### Branches
|
||||||
|
|
||||||
Unless you're fixing a bug, all pull requests should be made against the *develop* branch.
|
Unless you're fixing a bug, all pull requests should be made against the *develop* branch.
|
||||||
|
|
||||||
If you're fixing a bug, it is preferred that you cook your fix and pull request it against an oldest version affected.
|
If you're fixing a bug, it is preferred that you cook your fix and pull request it
|
||||||
|
against the oldest version affected that's still supported.
|
||||||
|
|
||||||
We recommend to push it into N - 2 for N the latest version available, if not possible into version N - 1, and finally into develop.
|
We officially support versions N, N − 1 and N − 2 for N the latest version available.
|
||||||
This is just a recommendation, currently, if you push a bug fix on a very old version, it is still merged and propagated into
|
|
||||||
higher versions.
|
|
||||||
|
|
||||||
The rule N - 2 is just a tip if you don't know which version to choose to get the best the best compromise between ease of correction
|
|
||||||
and number of potential beneficiaries of the correction.
|
|
||||||
|
|
||||||
|
Choose your base branch accordingly.
|
||||||
|
|
||||||
### General rules
|
### General rules
|
||||||
Please don't edit the ChangeLog file. This file is generated from all commit messages during release process by the project manager.
|
Please don't edit the ChangeLog file. File will be generated from all commit messages during release process by the project manager.
|
||||||
|
|
||||||
|
|
||||||
### <a name="commits"></a>Commits
|
### <a name="commits"></a>Commits
|
||||||
Use clear commit messages with the following structure:
|
Use clear commit messages with the following structure:
|
||||||
|
|
||||||
```plaintext
|
```
|
||||||
[KEYWORD] [ISSUENUM] DESC
|
[KEYWORD] [ISSUENUM] DESC
|
||||||
|
|
||||||
LONGDESC
|
LONGDESC
|
||||||
@@ -71,13 +66,10 @@ where
|
|||||||
#### Keyword
|
#### Keyword
|
||||||
In uppercase if you want to have the log comment appears into the generated ChangeLog file.
|
In uppercase if you want to have the log comment appears into the generated ChangeLog file.
|
||||||
|
|
||||||
The keyword can be omitted if your commit does not fit in any of the following categories:
|
The keyword can be ommitted if your commit does not fit in any of the following categories:
|
||||||
|
|
||||||
- Fix/FIX: for a bug fix
|
- Fix/FIX: for a bug fix
|
||||||
|
- New/NEW: for an unreferenced new feature (Opening a feature request and using close is prefered)
|
||||||
- Close/CLOSE: for closing a referenced feature request
|
- Close/CLOSE: for closing a referenced feature request
|
||||||
- New/NEW: for an unreferenced new feature (Opening a feature request and using close is preferred)
|
|
||||||
- Perf/PERF: for a performance enhancement
|
|
||||||
- Qual/QUAL: for quality code enhancement or re-engineering
|
|
||||||
|
|
||||||
#### Issuenum
|
#### Issuenum
|
||||||
If your commit fixes a referenced bug or feature request.
|
If your commit fixes a referenced bug or feature request.
|
||||||
@@ -98,24 +90,22 @@ Feel free to express technical details, use cases or anything relevant to the cu
|
|||||||
|
|
||||||
This section can span multiple lines.
|
This section can span multiple lines.
|
||||||
|
|
||||||
If your PR is a change on interface, you must also paste a screenshot showing the new screen.
|
Try to keep lines under 120 characters.
|
||||||
|
|
||||||
#### Examples
|
#### Examples
|
||||||
<pre>
|
<pre>
|
||||||
FIX|Fix #456 Short description (where #456 is number of bug fix, if it exists. 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
|
or
|
||||||
CLOSE|Close #456 Short description (where #456 is number of feature request, if it exists. In upper case to appear into ChangeLog)
|
NEW|New Short description (In upper case to appear into ChangeLog, use this if you add a feature not tracked, otherwise use CLOSE #456)
|
||||||
or
|
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 #456)
|
CLOSE|Close #456 Short description (where #456 is number of feature request, if it exists. In upper case to appear into ChangeLog)
|
||||||
or
|
or
|
||||||
Short description (when the commit is not introducing feature nor closing a bug)
|
Short description (when the commit is not introducing feature nor closing a bug)
|
||||||
|
|
||||||
Long description (Can span across multiple lines).
|
Long description (Can span accross multiple lines).
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
### Pull Requests
|
### Pull Requests
|
||||||
|
|
||||||
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
|
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 process to follow to optimize the chance to have PRs merged efficiently...
|
||||||
|
|
||||||
@@ -125,13 +115,11 @@ a process to follow to optimize the chance to have PRs merged efficiently...
|
|||||||
|
|
||||||
* When submitting a pull request, use same rule as [Commits](#commits) for the message. If your pull request only contains 1 commit, GitHub will be smart enough to fill it for you. Otherwise, please be a bit verbose about what you're providing.
|
* When submitting a pull request, use same rule as [Commits](#commits) for the message. If your pull request only contains 1 commit, GitHub will be smart enough to fill it for you. Otherwise, please be a bit verbose about what you're providing.
|
||||||
|
|
||||||
* A screenshot will be always required for any PR of change/addition of a GUI behaviour.
|
|
||||||
|
|
||||||
Also, some code changes need a prior approbation:
|
Also, some code changes need a prior approbation:
|
||||||
|
|
||||||
* if you want to include a new external library (into htdocs/includes directory), please ask before to the core project manager (mention @dolibarr-jedi in your issue) to see if such a library can be accepted.
|
* if you want to include a new external library (into htdocs/includes directory), please ask before to the core project manager (mention @dolibarr-jedi in your issue) to see if such a library can be accepted.
|
||||||
|
|
||||||
* if you add new tables or fields, you MUST first submit a standalone PR with the data structure changes you plan to add/modify (and only data structure changes). Start development only once this data structure has been accepted.
|
* if you add a new tables or fields, you MUST first submit a standalone PR with the data structure changes you plan to add/modify (and only data structure changes). Start development only once this data structure has been accepted.
|
||||||
|
|
||||||
Once a PR has been submitted, you may need to wait for its integration. It is common that the project leader let the PR open for a long delay to allow every developer discuss about the PR (A label is added in such a case).
|
Once a PR has been submitted, you may need to wait for its integration. It is common that the project leader let the PR open for a long delay to allow every developer discuss about the PR (A label is added in such a case).
|
||||||
|
|
||||||
@@ -142,8 +130,7 @@ If your PR has errors reported by the Continuous Integration Platform, it means
|
|||||||
If the PR is valid, and is kept open for a long time, a tag will also be added on the PR to describe the status of your PR and why the PR is kept open. By putting your mouse on the tag, you will get a full explanation of the tag/status that explain why your PR has not been integrated yet.
|
If the PR is valid, and is kept open for a long time, a tag will also be added on the PR to describe the status of your PR and why the PR is kept open. By putting your mouse on the tag, you will get a full explanation of the tag/status that explain why your PR has not been integrated yet.
|
||||||
In most cases, it gives you information of things you have to do to have the PR taken into consideration (for example a change is requested, a conflict is expected to be solved, some questions were asked). If you have a yellow, red flag of purple flag, don't expect to have your PR validated. You must first provide the answer the tag ask you. The majority of open PR are waiting an action of the author of the PR.
|
In most cases, it gives you information of things you have to do to have the PR taken into consideration (for example a change is requested, a conflict is expected to be solved, some questions were asked). If you have a yellow, red flag of purple flag, don't expect to have your PR validated. You must first provide the answer the tag ask you. The majority of open PR are waiting an action of the author of the PR.
|
||||||
|
|
||||||
Statistics on Dolibarr project shows that 95% of submitted PR are reviewed and tagged. Average answer delay is also one of the best among Open source projects (just few days before having the Answer Tag set). This is one of the most important ratio of answered PR in Open Source world for a major project. Don't expect the core team to reach the 100%.
|
Statistics on Dolibarr project shows that 95% of submitted PR are reviewed and tagged. Average answer delay is also one of the best among Open source projects (just few days before having the Answer Tag set). This is one of the most important ratio of answered PR in Open Source world for a major project. Don't expect the core team to reach the 100%. A so high ratio is very rare on a so popular project and with the increasing popularity of Dolibarr, this ratio will probably decrease in future to a more common level.
|
||||||
A so high ratio is very rare on a so popular project and with the increasing popularity of Dolibarr, this ratio will probably decrease in future to a more common level.
|
|
||||||
|
|
||||||
|
|
||||||
### Resources
|
### Resources
|
||||||
@@ -157,7 +144,7 @@ All other translations are managed online at [Transifex](https://www.transifex.c
|
|||||||
|
|
||||||
Translations done on transifex are available in the next major release.
|
Translations done on transifex are available in the next major release.
|
||||||
|
|
||||||
Note: Sometimes, the source text (English) is modified. In such a case, the translation is reset. Transifex assume that if the original source
|
Note: Sometimes, the source text (english) is modified. In such a case, the translation is reset. Transifex assume that if the original source
|
||||||
has changed, the translation is surely no more correct so must be done again. But old translation is not lost and you can use the tab "History"
|
has changed, the translation is surely no more correct so must be done again. But old translation is not lost and you can use the tab "History"
|
||||||
to retrieve all old translation of a source text, and restore the translation in one click with no need to retranslate it if there is no need to.
|
to retrieve all old translation of a source text, and restore the translation in one click with no need to retranslate it if there is no need to.
|
||||||
|
|
||||||
|
|||||||
31
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
31
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -19,9 +19,20 @@ body:
|
|||||||
- type: input
|
- type: input
|
||||||
id: environment-version
|
id: environment-version
|
||||||
attributes:
|
attributes:
|
||||||
label: Dolibarr Version
|
label: Environment Version
|
||||||
description: Affected Dolibarr version(s)
|
description: Affected Dolibarr version(s)
|
||||||
placeholder: 19.0, develop, ...
|
|
||||||
|
- type: input
|
||||||
|
id: environment-os
|
||||||
|
attributes:
|
||||||
|
label: Environment OS
|
||||||
|
description: Server OS type and version
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: environment-webserver
|
||||||
|
attributes:
|
||||||
|
label: Environment Web server
|
||||||
|
description: Webserver type and version
|
||||||
|
|
||||||
- type: input
|
- type: input
|
||||||
id: environment-php
|
id: environment-php
|
||||||
@@ -35,14 +46,26 @@ body:
|
|||||||
label: Environment Database
|
label: Environment Database
|
||||||
description: Database type and version
|
description: Database type and version
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: environment-urls
|
||||||
|
attributes:
|
||||||
|
label: Environment URL(s)
|
||||||
|
description: Affected URL(s)
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: expected-behaviour
|
||||||
|
attributes:
|
||||||
|
label: Expected and actual behavior
|
||||||
|
description: Verbose description
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: reproduce
|
id: reproduce
|
||||||
attributes:
|
attributes:
|
||||||
label: Steps to reproduce the behavior and expected behavior
|
label: Steps to reproduce the behavior
|
||||||
description: Verbose description
|
description: Verbose description
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: files
|
id: files
|
||||||
attributes:
|
attributes:
|
||||||
label: Attached files
|
label: Attached files
|
||||||
description: Screenshots, screencasts, dolibarr.log, debugging information
|
description: Screenshots, screencasts, dolibarr.log, debugging informations
|
||||||
|
|||||||
11
.github/PULL_REQUEST_TEMPLATE.md
vendored
11
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,7 +1,7 @@
|
|||||||
# Instructions
|
# 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.*
|
*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:*
|
*Please:*
|
||||||
- *only keep the "FIX", "CLOSE", "NEW", "PERF" or "QUAL" section* (use uppercase to have the PR appears into the ChangeLog, lowercase will not appears)
|
- *only keep the "FIX", "CLOSE" or "NEW" section* (use uppercase to have the PR appears into the ChangeLog, lowercase will not appears)
|
||||||
- *follow the project [contributing guidelines](/.github/CONTRIBUTING.md)*
|
- *follow the project [contributing guidelines](/.github/CONTRIBUTING.md)*
|
||||||
- *replace the bracket enclosed texts with meaningful information*
|
- *replace the bracket enclosed texts with meaningful information*
|
||||||
|
|
||||||
@@ -16,12 +16,3 @@
|
|||||||
|
|
||||||
# NEW|New [*Short description*]
|
# NEW|New [*Short description*]
|
||||||
[*Long description*]
|
[*Long description*]
|
||||||
|
|
||||||
|
|
||||||
# PERF|Perf #[*issue_number Short description*]
|
|
||||||
[*Long description*]
|
|
||||||
|
|
||||||
|
|
||||||
# QUAL|Qual #[*issue_number Short description*]
|
|
||||||
[*Long description*]
|
|
||||||
|
|
||||||
|
|||||||
86
.github/scripts/get_changed_php.sh
vendored
Executable file
86
.github/scripts/get_changed_php.sh
vendored
Executable file
@@ -0,0 +1,86 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Copyright (C) 2025 MDW <mdeweerd@users.noreply.github.com>
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# This script retrieves the list of changed PHP files for a pull request
|
||||||
|
# using the GitHub API and sets two outputs:
|
||||||
|
# - any_changed: "true" if at least one PHP file changed, "false" otherwise
|
||||||
|
# - all_changed_files: space-separated list of changed PHP file paths
|
||||||
|
#
|
||||||
|
# Required environment variables:
|
||||||
|
# GITHUB_TOKEN - GitHub token with repo access
|
||||||
|
# GITHUB_REPOSITORY - "owner/repo"
|
||||||
|
# GITHUB_EVENT_PATH - Path to the event JSON payload
|
||||||
|
|
||||||
|
# Verify required environment variables are set
|
||||||
|
if [[ -z "${GITHUB_TOKEN:-}" ]]; then
|
||||||
|
echo "GITHUB_TOKEN is not set" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ -z "${GITHUB_REPOSITORY:-}" ]]; then
|
||||||
|
echo "GITHUB_REPOSITORY is not set" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ -z "${GITHUB_EVENT_PATH:-}" ]]; then
|
||||||
|
echo "GITHUB_EVENT_PATH is not set" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Extract the pull request number from the event payload
|
||||||
|
pr_number=$(jq --raw-output '.pull_request.number' "$GITHUB_EVENT_PATH")
|
||||||
|
if [[ "$pr_number" == "null" ]]; then
|
||||||
|
echo "Not a pull request event"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Split repository into owner and repo name
|
||||||
|
# Split repository into owner and repo name using Bash parameter expansion
|
||||||
|
owner="${GITHUB_REPOSITORY%%/*}" # Extract text before the first '/'
|
||||||
|
repo="${GITHUB_REPOSITORY##*/}" # Extract text after the last '/'
|
||||||
|
|
||||||
|
page=1
|
||||||
|
per_page=100
|
||||||
|
changed_php_files=()
|
||||||
|
|
||||||
|
# Loop through all pages to gather changed files
|
||||||
|
while true; do
|
||||||
|
response=$(curl -s -H "Authorization: token ${GITHUB_TOKEN}" \
|
||||||
|
"https://api.github.com/repos/${owner}/${repo}/pulls/${pr_number}/files?per_page=${per_page}&page=${page}")
|
||||||
|
|
||||||
|
# Filter for files ending with .php and add them to the list
|
||||||
|
mapfile -t files < <(echo "$response" | jq -r '.[] | select(.filename | test("\\.php$")) | .filename')
|
||||||
|
changed_php_files+=("${files[@]}")
|
||||||
|
|
||||||
|
# Check if we have reached the last page (less than per_page results)
|
||||||
|
count=$(echo "$response" | jq 'length')
|
||||||
|
if (( count < per_page )); then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
((page++))
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# Build a space-separated string of changed PHP files
|
||||||
|
# This does not cope with files that have spaces.
|
||||||
|
# But such files do not exist in the project (at least not for the
|
||||||
|
# files we are filtering).
|
||||||
|
all_changed_files=$(IFS=" " ; echo "${changed_php_files[*]}")
|
||||||
|
|
||||||
|
|
||||||
|
# Determine changed files flag
|
||||||
|
if [ -z "$all_changed_files" ]; then
|
||||||
|
any_changed="false"
|
||||||
|
else
|
||||||
|
any_changed="true"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set outputs for GitHub Actions if GITHUB_OUTPUT is available
|
||||||
|
if [ -n "${GITHUB_OUTPUT:-}" ]; then
|
||||||
|
echo "any_changed=${any_changed}" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "all_changed_files=${all_changed_files}" >> "$GITHUB_OUTPUT"
|
||||||
|
else
|
||||||
|
# Otherwise, print the outputs
|
||||||
|
echo "any_changed=${any_changed}"
|
||||||
|
echo "all_changed_files=${all_changed_files}"
|
||||||
|
fi
|
||||||
16
.github/workflows/README.md
vendored
16
.github/workflows/README.md
vendored
@@ -1,16 +0,0 @@
|
|||||||
# Workflow run order
|
|
||||||
|
|
||||||
To reduce run minutes, the following order is put in place:
|
|
||||||
|
|
||||||
On PR & Merge, always run:
|
|
||||||
|
|
||||||
- pre-commit;
|
|
||||||
- phan.
|
|
||||||
|
|
||||||
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
|
|
||||||
36
.github/workflows/cache-clean-pr.yml
vendored
36
.github/workflows/cache-clean-pr.yml
vendored
@@ -1,36 +0,0 @@
|
|||||||
---
|
|
||||||
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
|
|
||||||
permissions:
|
|
||||||
# `actions:write` permission is required to delete caches
|
|
||||||
# See also: https://docs.github.com/en/rest/actions/cache?apiVersion=2022-11-28#delete-a-github-actions-cache-for-a-repository-using-a-cache-id
|
|
||||||
actions: write
|
|
||||||
contents: read
|
|
||||||
steps:
|
|
||||||
- name: Check out code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Cleanup
|
|
||||||
run: |
|
|
||||||
gh extension install actions/gh-actions-cache
|
|
||||||
REPO=${{ github.repository }}
|
|
||||||
BRANCH=refs/pull/${{ github.event.pull_request.number }}/merge
|
|
||||||
echo "Fetching list of cache key"
|
|
||||||
cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH | cut -f 1 )
|
|
||||||
|
|
||||||
## Setting this to not fail the workflow while deleting cache keys.
|
|
||||||
set +e
|
|
||||||
echo "Deleting caches..."
|
|
||||||
for cacheKey in $cacheKeysForPR
|
|
||||||
do
|
|
||||||
gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm
|
|
||||||
done
|
|
||||||
echo "Done"
|
|
||||||
env:
|
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
40
.github/workflows/ci.yml
vendored
40
.github/workflows/ci.yml
vendored
@@ -1,40 +0,0 @@
|
|||||||
name: "CI"
|
|
||||||
|
|
||||||
on: [push, 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
|
|
||||||
with:
|
|
||||||
gh_event: ${{ github.event_name }}
|
|
||||||
phpstan:
|
|
||||||
uses: ./.github/workflows/phpstan.yml
|
|
||||||
secrets: inherit
|
|
||||||
needs: [pre-commit, phan]
|
|
||||||
with:
|
|
||||||
gh_event: ${{ github.event_name }}
|
|
||||||
windows-ci:
|
|
||||||
needs: [pre-commit, phan]
|
|
||||||
secrets: inherit
|
|
||||||
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
|
|
||||||
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 failes, the following action may help
|
|
||||||
# - if: "failure()"
|
|
||||||
# uses: "andymckay/cancel-action@0.3"
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
name: Qodana
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: "0 20 * * 1,3,5"
|
|
||||||
workflow_dispatch:
|
|
||||||
branches:
|
|
||||||
- develop
|
|
||||||
# push:
|
|
||||||
# branches:
|
|
||||||
# - develop
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
qodana:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
#php-version: '7.1'
|
|
||||||
- name: 'Qodana Scan'
|
|
||||||
uses: JetBrains/qodana-action@v2023.2.1
|
|
||||||
#with:
|
|
||||||
# php-version: '7.1'
|
|
||||||
env:
|
|
||||||
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
|
|
||||||
38
.github/workflows/doxygen-gh-pages.yml.disabled
vendored
38
.github/workflows/doxygen-gh-pages.yml.disabled
vendored
@@ -1,38 +0,0 @@
|
|||||||
# 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
|
|
||||||
16
.github/workflows/exakat.yml
vendored
16
.github/workflows/exakat.yml
vendored
@@ -2,12 +2,8 @@
|
|||||||
name: "Exakat analysis"
|
name: "Exakat analysis"
|
||||||
|
|
||||||
on:
|
on:
|
||||||
# execute once a month, the 1st
|
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "0 20 1 * *"
|
- cron: "0 20 * * *"
|
||||||
workflow_dispatch:
|
|
||||||
branches:
|
|
||||||
- develop
|
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -16,13 +12,9 @@ jobs:
|
|||||||
exakat:
|
exakat:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v3
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
- name: Exakat
|
- name: Exakat
|
||||||
uses: docker://exakat/exakat-ga
|
uses: docker://exakat/exakat-ga
|
||||||
with:
|
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_rules: 'Classes/UseInstanceof,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/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/'
|
ignore_dirs: '/htdocs/includes,/build,/dev,/doc,/scripts,/test'
|
||||||
file_extensions: php
|
|
||||||
project_reports: Perfile
|
|
||||||
49
.github/workflows/gh-travis.yml
vendored
49
.github/workflows/gh-travis.yml
vendored
@@ -1,49 +0,0 @@
|
|||||||
---
|
|
||||||
# This runs a travis script inside a github runner
|
|
||||||
name: Travis
|
|
||||||
# Controls when the workflow will run
|
|
||||||
on:
|
|
||||||
# push:
|
|
||||||
# pull_request:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
gh_event:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: travis-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref
|
|
||||||
}}
|
|
||||||
cancel-in-progress: true
|
|
||||||
env:
|
|
||||||
gh_event: ${{ inputs.gh_event || github.event_name }}
|
|
||||||
GITHUB_JSON: ${{ toJSON(github) }} # Helps in debugging Github Action
|
|
||||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
|
||||||
jobs:
|
|
||||||
# This workflow contains a single job
|
|
||||||
gh-travis:
|
|
||||||
# The type of runner that the job will run on
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
# matrix:
|
|
||||||
# php-version:
|
|
||||||
# # PHPStan requires PHP >= 7.2.
|
|
||||||
# #- "7.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@v4
|
|
||||||
- name: Run .travis.yml build script
|
|
||||||
uses: ktomk/run-travis-yml@v1
|
|
||||||
with:
|
|
||||||
# run-job: travis # name of a job in travis file
|
|
||||||
allow-failure: false
|
|
||||||
# file: .travis.yml
|
|
||||||
# steps: | # Default: setup, before_install, install, before_script, script, after_script, before_deploy
|
|
||||||
# install
|
|
||||||
# script
|
|
||||||
# env:
|
|
||||||
# TRAVIS_PHP_VERSION: ${{ matrix.php-version }}
|
|
||||||
@@ -116,19 +116,18 @@ jobs:
|
|||||||
mysql --version | head -
|
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 "SELECT VERSION();" | head -
|
||||||
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e "SHOW DATABASES"
|
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e "SHOW DATABASES"
|
||||||
|
|
||||||
echo "Drop and create database"
|
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 '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 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 "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 '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 -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';"
|
||||||
|
|
||||||
echo "Init postgresql database"
|
#psql -c 'create database travis;' -U postgres
|
||||||
|
#psql travis < dev/initdemo/mysqldump_dolibarr_3.5.0.sql
|
||||||
|
#pgloader mysql://root:pass@127.0.0.1:32574/dolibarr_src postgresql://dolibarrowner:dolibarrownerpass@127.0.0.1/dolibarr_dest
|
||||||
ps fauxww | grep postgres
|
ps fauxww | grep postgres
|
||||||
ls /etc/postgresql/14/main/
|
ls /etc/postgresql/14/main/
|
||||||
sudo chmod -R a+rwx /etc/postgresql/14/main/pg_hba.conf
|
sudo chmod -R a+rwx /etc/postgresql/14/main/pg_hba.conf
|
||||||
@@ -144,12 +143,10 @@ jobs:
|
|||||||
|
|
||||||
sudo mkdir -p /tmp/pgloader
|
sudo mkdir -p /tmp/pgloader
|
||||||
sudo chmod -R a+rwx /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
|
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
|
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
|
echo 'ALTER SEQUENCE llx_accountingaccount_rowid_seq RENAME TO llx_accounting_account_rowid_seq' | psql postgresql://postgres:postgres@127.0.0.1:5432/travis
|
||||||
echo 'ALTER SEQUENCE llx_accounting_account_rowid_seq RESTART WITH 1000001;' | psql postgresql://postgres:postgres@127.0.0.1:5432/travis
|
echo 'ALTER SEQUENCE llx_accounting_account_rowid_seq RESTART WITH 1000001;' | psql postgresql://postgres:postgres@127.0.0.1:5432/travis
|
||||||
|
|
||||||
# Create pgsql compatibility functions
|
# Create pgsql compatibility functions
|
||||||
psql postgresql://postgres:postgres@127.0.0.1:5432/travis < htdocs/install/pgsql/functions/functions.sql
|
psql postgresql://postgres:postgres@127.0.0.1:5432/travis < htdocs/install/pgsql/functions/functions.sql
|
||||||
|
|
||||||
@@ -163,11 +160,11 @@ jobs:
|
|||||||
echo '$'dolibarr_main_data_root=\'/var/www/html/documents\'';' >> $CONF_FILE
|
echo '$'dolibarr_main_data_root=\'/var/www/html/documents\'';' >> $CONF_FILE
|
||||||
echo '$'dolibarr_main_db_host=\'127.0.0.1\'';' >> $CONF_FILE
|
echo '$'dolibarr_main_db_host=\'127.0.0.1\'';' >> $CONF_FILE
|
||||||
echo '$'dolibarr_main_db_name=\'travis\'';' >> $CONF_FILE
|
echo '$'dolibarr_main_db_name=\'travis\'';' >> $CONF_FILE
|
||||||
echo '$'dolibarr_main_db_user=\'postgres\'';' >> $CONF_FILE
|
echo '$'dolibarr_main_db_user=\'root\'';' >> $CONF_FILE
|
||||||
echo '$'dolibarr_main_db_pass=\'postgres\'';' >> $CONF_FILE
|
echo '$'dolibarr_main_db_pass=\'password\'';' >> $CONF_FILE
|
||||||
echo '$'dolibarr_main_instance_unique_id=\'travis1234567890\'';' >> $CONF_FILE
|
echo '$'dolibarr_main_instance_unique_id=\'travis1234567890\'';' >> $CONF_FILE
|
||||||
echo '$'dolibarr_main_db_type=\'pgsql\'';' >> $CONF_FILE
|
echo '$'dolibarr_main_db_type=\'mysqli\'';' >> $CONF_FILE
|
||||||
echo '$'dolibarr_main_db_port=\'5432\'';' >> $CONF_FILE
|
echo '$'dolibarr_main_db_port=\'32574\'';' >> $CONF_FILE
|
||||||
echo '$'dolibarr_main_authentication=\'dolibarr\'';' >> $CONF_FILE
|
echo '$'dolibarr_main_authentication=\'dolibarr\'';' >> $CONF_FILE
|
||||||
cat $CONF_FILE
|
cat $CONF_FILE
|
||||||
- name: Generate install.forced.php file to test installation
|
- name: Generate install.forced.php file to test installation
|
||||||
@@ -178,11 +175,13 @@ jobs:
|
|||||||
set +e
|
set +e
|
||||||
echo '<?php' > $INSTALL_FORCED_FILE
|
echo '<?php' > $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_noedit=2';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_noedit=2';' >> $INSTALL_FORCED_FILE
|
||||||
|
#echo '$'force_install_type=\'mysqli\'';' >> $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_type=\'pgsql\'';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_type=\'pgsql\'';' >> $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_dbserver=\'127.0.0.1\'';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_dbserver=\'127.0.0.1\'';' >> $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_database=\'travis\'';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_database=\'travis\'';' >> $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_databaselogin=\'postgres\'';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_databaselogin=\'root\'';' >> $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_databasepass=\'postgres\'';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_databasepass=\'password\'';' >> $INSTALL_FORCED_FILE
|
||||||
|
#echo '$'force_install_port=\'32574\'';' >> $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_port=\'5432\'';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_port=\'5432\'';' >> $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_prefix=\'llx_\'';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_prefix=\'llx_\'';' >> $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_createdatabase=false';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_createdatabase=false';' >> $INSTALL_FORCED_FILE
|
||||||
@@ -235,7 +234,7 @@ jobs:
|
|||||||
sudo cat /etc/apache2/sites-enabled/000-default.conf
|
sudo cat /etc/apache2/sites-enabled/000-default.conf
|
||||||
sudo service apache2 restart
|
sudo service apache2 restart
|
||||||
curl -I localhost
|
curl -I localhost
|
||||||
- name: Check Apache availability
|
- name: Chech Apache availability
|
||||||
run: |
|
run: |
|
||||||
echo "Checking webserver availability by a wget -O - --debug http://127.0.0.1"
|
echo "Checking webserver availability by a wget -O - --debug http://127.0.0.1"
|
||||||
# Ensure we stop on error with set -e
|
# Ensure we stop on error with set -e
|
||||||
@@ -261,7 +260,6 @@ jobs:
|
|||||||
sudo chmod -R a+rwx /var/www
|
sudo chmod -R a+rwx /var/www
|
||||||
ls -l /var/www
|
ls -l /var/www
|
||||||
cd /var/www/html/install
|
cd /var/www/html/install
|
||||||
|
|
||||||
echo Execute upgrade, upgrade2 and step5 for each major version
|
echo Execute upgrade, upgrade2 and step5 for each major version
|
||||||
php upgrade.php 3.5.0 3.6.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade350360.log
|
php upgrade.php 3.5.0 3.6.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade350360.log
|
||||||
php upgrade2.php 3.5.0 3.6.0 > $GITHUB_WORKSPACE/upgrade350360-2.log
|
php upgrade2.php 3.5.0 3.6.0 > $GITHUB_WORKSPACE/upgrade350360-2.log
|
||||||
@@ -287,10 +285,6 @@ jobs:
|
|||||||
php upgrade.php 6.0.0 7.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade600700.log
|
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 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
|
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'
|
|
||||||
|
|
||||||
php upgrade.php 7.0.0 8.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade700800.log
|
php upgrade.php 7.0.0 8.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade700800.log
|
||||||
php upgrade2.php 7.0.0 8.0.0 > $GITHUB_WORKSPACE/upgrade700800-2.log
|
php upgrade2.php 7.0.0 8.0.0 > $GITHUB_WORKSPACE/upgrade700800-2.log
|
||||||
php step5.php 7.0.0 8.0.0 > $GITHUB_WORKSPACE/upgrade700800-3.log
|
php step5.php 7.0.0 8.0.0 > $GITHUB_WORKSPACE/upgrade700800-3.log
|
||||||
@@ -321,9 +315,6 @@ jobs:
|
|||||||
php upgrade.php 16.0.0 17.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade16001700.log
|
php upgrade.php 16.0.0 17.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade16001700.log
|
||||||
php upgrade2.php 16.0.0 17.0.0 > $GITHUB_WORKSPACE/upgrade16001700-2.log
|
php upgrade2.php 16.0.0 17.0.0 > $GITHUB_WORKSPACE/upgrade16001700-2.log
|
||||||
php step5.php 16.0.0 17.0.0 > $GITHUB_WORKSPACE/upgrade16001700-3.log
|
php step5.php 16.0.0 17.0.0 > $GITHUB_WORKSPACE/upgrade16001700-3.log
|
||||||
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
|
- name: Result of migration scripts
|
||||||
if: always()
|
if: always()
|
||||||
|
|||||||
@@ -46,8 +46,6 @@ jobs:
|
|||||||
sudo update-alternatives --set php /usr/bin/php8.1
|
sudo update-alternatives --set php /usr/bin/php8.1
|
||||||
php -i | head -
|
php -i | head -
|
||||||
|
|
||||||
cd $GITHUB_WORKSPACE
|
|
||||||
ls $GITHUB_WORKSPACE
|
|
||||||
composer -n require --ignore-platform-reqs phpunit/phpunit ^8 \
|
composer -n require --ignore-platform-reqs phpunit/phpunit ^8 \
|
||||||
php-parallel-lint/php-parallel-lint ^1.2 \
|
php-parallel-lint/php-parallel-lint ^1.2 \
|
||||||
php-parallel-lint/php-console-highlighter ^0 \
|
php-parallel-lint/php-console-highlighter ^0 \
|
||||||
@@ -96,18 +94,14 @@ jobs:
|
|||||||
mysql --version | head -
|
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 "SELECT VERSION();" | head -
|
||||||
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e "SHOW DATABASES"
|
mysql --host 127.0.0.1 --port 32574 -uroot -ppassword -e "SHOW DATABASES"
|
||||||
|
|
||||||
echo "Drop and create database"
|
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 '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 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 "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 '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 -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
|
- name: Generate Dolibarr conf file
|
||||||
run: |
|
run: |
|
||||||
export CONF_FILE=$GITHUB_WORKSPACE/htdocs/conf/conf.php
|
export CONF_FILE=$GITHUB_WORKSPACE/htdocs/conf/conf.php
|
||||||
@@ -133,12 +127,16 @@ jobs:
|
|||||||
set +e
|
set +e
|
||||||
echo '<?php' > $INSTALL_FORCED_FILE
|
echo '<?php' > $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_noedit=2';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_noedit=2';' >> $INSTALL_FORCED_FILE
|
||||||
|
# For mysql
|
||||||
echo '$'force_install_type=\'mysqli\'';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_type=\'mysqli\'';' >> $INSTALL_FORCED_FILE
|
||||||
|
#echo '$'force_install_type=\'pgsql\'';' >> $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_dbserver=\'127.0.0.1\'';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_dbserver=\'127.0.0.1\'';' >> $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_database=\'travis\'';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_database=\'travis\'';' >> $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_databaselogin=\'root\'';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_databaselogin=\'root\'';' >> $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_databasepass=\'password\'';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_databasepass=\'password\'';' >> $INSTALL_FORCED_FILE
|
||||||
|
# For mysql
|
||||||
echo '$'force_install_port=\'32574\'';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_port=\'32574\'';' >> $INSTALL_FORCED_FILE
|
||||||
|
#echo '$'force_install_port=\'5432\'';' >> $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_prefix=\'llx_\'';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_prefix=\'llx_\'';' >> $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_createdatabase=false';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_createdatabase=false';' >> $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_createuser=false';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_createuser=false';' >> $INSTALL_FORCED_FILE
|
||||||
@@ -190,7 +188,7 @@ jobs:
|
|||||||
sudo cat /etc/apache2/sites-enabled/000-default.conf
|
sudo cat /etc/apache2/sites-enabled/000-default.conf
|
||||||
sudo service apache2 restart
|
sudo service apache2 restart
|
||||||
curl -I localhost
|
curl -I localhost
|
||||||
- name: Check Apache availability
|
- name: Chech Apache availability
|
||||||
run: |
|
run: |
|
||||||
echo "Checking webserver availability by a wget -O - --debug http://127.0.0.1"
|
echo "Checking webserver availability by a wget -O - --debug http://127.0.0.1"
|
||||||
# Ensure we stop on error with set -e
|
# Ensure we stop on error with set -e
|
||||||
@@ -271,9 +269,6 @@ jobs:
|
|||||||
php upgrade.php 16.0.0 17.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade16001700.log
|
php upgrade.php 16.0.0 17.0.0 ignoredbversion > $GITHUB_WORKSPACE/upgrade16001700.log
|
||||||
php upgrade2.php 16.0.0 17.0.0 > $GITHUB_WORKSPACE/upgrade16001700-2.log
|
php upgrade2.php 16.0.0 17.0.0 > $GITHUB_WORKSPACE/upgrade16001700-2.log
|
||||||
php step5.php 16.0.0 17.0.0 > $GITHUB_WORKSPACE/upgrade16001700-3.log
|
php step5.php 16.0.0 17.0.0 > $GITHUB_WORKSPACE/upgrade16001700-3.log
|
||||||
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
|
- name: Result of migration scripts
|
||||||
if: always()
|
if: always()
|
||||||
|
|||||||
58
.github/workflows/phan.yml
vendored
58
.github/workflows/phan.yml
vendored
@@ -1,58 +0,0 @@
|
|||||||
---
|
|
||||||
on:
|
|
||||||
# pull_request:
|
|
||||||
# push:
|
|
||||||
# schedule:
|
|
||||||
# # execute once a day, the 1st
|
|
||||||
# - cron: 10 9 * * *
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
gh_event:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
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.0
|
|
||||||
PHAN_QUICK: ${{ github.event.schedule && '' || '--quick' }}
|
|
||||||
GITHUB_JSON: ${{ toJSON(github) }} # Helps in debugging Github Action
|
|
||||||
|
|
||||||
name: phan
|
|
||||||
jobs:
|
|
||||||
phan:
|
|
||||||
name: Run phan
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
# Do not run schedule on forks
|
|
||||||
if: |
|
|
||||||
github.repository == 'Dolibarr/dolibarr'
|
|
||||||
|| github.event.schedule == false
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
|
||||||
php-version: 8.2
|
|
||||||
coverage: none # disable xdebug, pcov
|
|
||||||
tools: cs2pr,phan
|
|
||||||
- name: Run Phan analysis
|
|
||||||
run: |
|
|
||||||
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
32
.github/workflows/phpcs.yml.disabled
vendored
@@ -1,32 +0,0 @@
|
|||||||
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
|
|
||||||
88
.github/workflows/phpstan.yml
vendored
88
.github/workflows/phpstan.yml
vendored
@@ -1,88 +0,0 @@
|
|||||||
---
|
|
||||||
# This is a basic workflow to check code with PHPSTAN tool
|
|
||||||
name: PHPStan
|
|
||||||
# Controls when the workflow will run
|
|
||||||
on:
|
|
||||||
# push:
|
|
||||||
# pull_request:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
gh_event:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
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 }}
|
|
||||||
GITHUB_JSON: ${{ toJSON(github) }} # Helps in debugging Github Action
|
|
||||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
|
||||||
jobs:
|
|
||||||
# This workflow contains a single job
|
|
||||||
php-stan:
|
|
||||||
# The type of runner that the job will run on
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
php-version:
|
|
||||||
# PHPStan requires PHP >= 7.2.
|
|
||||||
#- "7.2"
|
|
||||||
- '8.2'
|
|
||||||
# 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@v4
|
|
||||||
|
|
||||||
# Get PHP and addons
|
|
||||||
- name: Setup PHP
|
|
||||||
id: setup-php
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
|
||||||
php-version: ${{ matrix.php-version }}
|
|
||||||
tools: phpstan, 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@v4
|
|
||||||
with:
|
|
||||||
path: ./.github/tmp
|
|
||||||
key: phpstan-cache-${{ matrix.php-version }}-${{ env.CACHE_KEY_PART }}-${{
|
|
||||||
github.run_id }}
|
|
||||||
restore-keys: |
|
|
||||||
phpstan-cache-${{ matrix.php-version }}-${{ env.CACHE_KEY_PART }}-
|
|
||||||
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
|
|
||||||
|
|
||||||
# Run PHPStan
|
|
||||||
- name: Run PHPStan
|
|
||||||
id: phpstan
|
|
||||||
run: |
|
|
||||||
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@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@v4
|
|
||||||
if: ${{ always() }}
|
|
||||||
with:
|
|
||||||
name: phpstan-srcrt
|
|
||||||
path: ${{ github.workspace }}/_stan.xml
|
|
||||||
retention-days: 2
|
|
||||||
82
.github/workflows/pre-commit.yml
vendored
82
.github/workflows/pre-commit.yml
vendored
@@ -1,21 +1,8 @@
|
|||||||
---
|
---
|
||||||
name: pre-commit
|
name: pre-commit
|
||||||
on:
|
on:
|
||||||
# pull_request:
|
pull_request:
|
||||||
# push:
|
push:
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
gh_event:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
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:
|
jobs:
|
||||||
pre-commit:
|
pre-commit:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -27,19 +14,18 @@ jobs:
|
|||||||
run: sudo apt-get update && sudo apt-get install cppcheck
|
run: sudo apt-get update && sudo apt-get install cppcheck
|
||||||
if: false
|
if: false
|
||||||
|
|
||||||
|
# Checkout git sources to analyze
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
# The next uses the git API because there is no clone yet.
|
# 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.
|
# This is faster for a big repo.
|
||||||
- name: Get all changed php files (if PR)
|
- name: Get all changed php files (if PR)
|
||||||
id: changed-php
|
id: changed-php
|
||||||
uses: tj-actions/changed-files@v44
|
|
||||||
if: env.gh_event == 'pull_request'
|
if: env.gh_event == 'pull_request'
|
||||||
with:
|
env:
|
||||||
files: |
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
**.php
|
run: ./.github/scripts/get_changed_php.sh
|
||||||
|
|
||||||
# Checkout git sources to analyze
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
# Action setup-python needs a requirements.txt or pyproject.toml
|
# Action setup-python needs a requirements.txt or pyproject.toml
|
||||||
# This ensures one of them exists.
|
# This ensures one of them exists.
|
||||||
- name: Create requirements.txt if no requirements.txt or pyproject.toml
|
- name: Create requirements.txt if no requirements.txt or pyproject.toml
|
||||||
@@ -51,19 +37,32 @@ jobs:
|
|||||||
cache: pip
|
cache: pip
|
||||||
python-version: "3.11"
|
python-version: "3.11"
|
||||||
- run: python -m pip install pre-commit
|
- run: python -m pip install pre-commit
|
||||||
|
|
||||||
# Restore previous cache of precommit
|
# Restore previous cache of precommit
|
||||||
- uses: actions/cache/restore@v4
|
- uses: actions/cache/restore@v4
|
||||||
with:
|
with:
|
||||||
path: ~/.cache/pre-commit/
|
path: ~/.cache/pre-commit/
|
||||||
key: pre-commit-4|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }}
|
key: pre-commit-4|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }}
|
||||||
|
|
||||||
# Run all the precommit tools (defined in pre-commit-config.yaml).
|
- name: Extract PHP version
|
||||||
|
id: extract-php-version
|
||||||
|
run: |
|
||||||
|
PHP_VERSION=$(sed -n 's/.*\$arrayphpmaxversionwarning\s*=\s*array\s*(\s*\([0-9]\+\)\s*,\s*\([0-9]\+\).*/\1.\2/p' htdocs/install/check.php)
|
||||||
|
echo "PHP_VERSION=$PHP_VERSION" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Setup PHPCS
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
# Install proper php version, and also install phpcs which may be needed
|
||||||
|
with:
|
||||||
|
php-version: ${{ env.PHP_VERSION }} # Version from check.php
|
||||||
|
coverage: none # disable xdebug, pcov
|
||||||
|
tools: phpcs
|
||||||
|
|
||||||
|
# Run all the precommit tools (defined into pre-commit-config.yaml).
|
||||||
# We can force exclusion of some of them here.
|
# We can force exclusion of some of them here.
|
||||||
- name: Run pre-commit hooks
|
- name: Run pre-commit hooks
|
||||||
env:
|
env:
|
||||||
# SKIP is used by pre-commit to not execute certain hooks
|
# 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
|
SKIP: no-commit-to-branch,php-cs,php-cbf,trailing-whitespace,end-of-file-fixer,check-json,check-executables-have-shebangs,check-shebang-scripts-are-executable,beautysh,yamllint,shellcheck
|
||||||
run: |
|
run: |
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
pre-commit gc
|
pre-commit gc
|
||||||
@@ -72,35 +71,14 @@ jobs:
|
|||||||
# The next uses git, which is slow for a bit repo.
|
# The next uses git, which is slow for a bit repo.
|
||||||
# - name: Get all changed php files (if PR)
|
# - name: Get all changed php files (if PR)
|
||||||
# id: changed-php
|
# id: changed-php
|
||||||
# uses: tj-actions/changed-files@v44
|
# uses: tj-actions/changed-files@v42
|
||||||
# if: env.gh_event == 'pull_request'
|
# if: github.event_name == 'pull_request'
|
||||||
# with:
|
# with:
|
||||||
# files: |
|
# files: |
|
||||||
# **.php
|
# **.php
|
||||||
|
|
||||||
- name: Setup PHPCS
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
# Install when we're going to run phpcs
|
|
||||||
if: |
|
|
||||||
! cancelled() &&
|
|
||||||
(
|
|
||||||
steps.changed-php.outputs.any_changed == 'true'
|
|
||||||
||
|
|
||||||
(
|
|
||||||
env.gh_event == 'push'
|
|
||||||
&& (
|
|
||||||
github.event.ref == 'refs/heads/develop'
|
|
||||||
|| endsWith(github.event.ref, '.0')
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
with:
|
|
||||||
php-version: 8.1
|
|
||||||
coverage: none # disable xdebug, pcov
|
|
||||||
tools: phpcs
|
|
||||||
|
|
||||||
- name: Run some pre-commit hooks on selected changed files only
|
- name: Run some pre-commit hooks on selected changed files only
|
||||||
if: "! cancelled() && steps.changed-php.outputs.any_changed == 'true'"
|
if: steps.changed-php.outputs.any_changed == 'true'
|
||||||
env:
|
env:
|
||||||
ALL_CHANGED_FILES: ${{ steps.changed-php.outputs.all_changed_files }}
|
ALL_CHANGED_FILES: ${{ steps.changed-php.outputs.all_changed_files }}
|
||||||
run: |
|
run: |
|
||||||
@@ -109,7 +87,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Run some pre-commit hooks on all files on push to "main" branches
|
- name: Run some pre-commit hooks on all files on push to "main" branches
|
||||||
if: |
|
if: |
|
||||||
env.gh_event == 'push'
|
github.event_name == 'push'
|
||||||
&& (
|
&& (
|
||||||
github.event.ref == 'refs/heads/develop'
|
github.event.ref == 'refs/heads/develop'
|
||||||
|| endsWith(github.event.ref, '.0')
|
|| endsWith(github.event.ref, '.0')
|
||||||
@@ -118,11 +96,10 @@ jobs:
|
|||||||
set -o pipefail
|
set -o pipefail
|
||||||
ln -sf ~/.cache .cache # Absolute path in .pre-commit-config.yaml
|
ln -sf ~/.cache .cache # Absolute path in .pre-commit-config.yaml
|
||||||
pre-commit run --hook-stage manual -a php-cs-with-cache | tee -a ${RAW_LOG}
|
pre-commit run --hook-stage manual -a php-cs-with-cache | tee -a ${RAW_LOG}
|
||||||
pre-commit run --hook-stage manual -a sqlfluff-lint | tee -a ${RAW_LOG}
|
|
||||||
ls -l ~/.cache/pre-commit/
|
ls -l ~/.cache/pre-commit/
|
||||||
|
|
||||||
- name: Convert Raw Log to Annotations
|
- name: Convert Raw Log to Annotations
|
||||||
uses: mdeweerd/logToCheckStyle@v2024.3.5
|
uses: mdeweerd/logToCheckStyle@v2024.2.9
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
with:
|
with:
|
||||||
in: ${{ env.RAW_LOG }}
|
in: ${{ env.RAW_LOG }}
|
||||||
@@ -142,3 +119,4 @@ jobs:
|
|||||||
path: |
|
path: |
|
||||||
${{ env.RAW_LOG }}
|
${{ env.RAW_LOG }}
|
||||||
${{ env.CS_XML }}
|
${{ env.CS_XML }}
|
||||||
|
retention-days: 2
|
||||||
|
|||||||
2
.github/workflows/stale-issues-safe.yml
vendored
2
.github/workflows/stale-issues-safe.yml
vendored
@@ -6,7 +6,6 @@ on:
|
|||||||
- cron: "0 21 * * *"
|
- cron: "0 21 * * *"
|
||||||
issue_comment:
|
issue_comment:
|
||||||
types: [created]
|
types: [created]
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions: {} # none
|
permissions: {} # none
|
||||||
|
|
||||||
@@ -26,3 +25,4 @@ jobs:
|
|||||||
days-before-close: 10
|
days-before-close: 10
|
||||||
operations-per-run: 100
|
operations-per-run: 100
|
||||||
dry-run: false
|
dry-run: false
|
||||||
|
|
||||||
|
|||||||
194
.github/workflows/windows-ci.yml
vendored
194
.github/workflows/windows-ci.yml
vendored
@@ -1,194 +0,0 @@
|
|||||||
---
|
|
||||||
name: Win CI
|
|
||||||
# yamllint disable-line rule:truthy
|
|
||||||
on:
|
|
||||||
# push:
|
|
||||||
# pull_request:
|
|
||||||
workflow_call:
|
|
||||||
inputs:
|
|
||||||
gh_event:
|
|
||||||
required: true
|
|
||||||
type: string
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: win-ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref
|
|
||||||
}}
|
|
||||||
cancel-in-progress: true
|
|
||||||
env:
|
|
||||||
gh_event: ${{ inputs.gh_event || github.event_name }}
|
|
||||||
PHPUNIT_LOG: phpunit_tests.log
|
|
||||||
DOLIBARR_LOG: documents/dolibarr.log
|
|
||||||
PHPSERVER_LOG: phpserver.log
|
|
||||||
PHPSERVER_DOMAIN_PORT: 127.0.0.1:8000 # could be 127.0.0.1:8000 if config modified
|
|
||||||
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 }}
|
|
||||||
PHP_INI_SCAN_DIR: C:\myphpini
|
|
||||||
CKEY: win-ci-2
|
|
||||||
GITHUB_JSON: ${{ toJSON(github) }} # Helps in debugging Github Action
|
|
||||||
jobs:
|
|
||||||
win-test:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
os: [windows-latest]
|
|
||||||
# php_version: [7.4, 8.0] # Add more versions if needed
|
|
||||||
php_version: [7.4] # Add more versions if needed
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: Setup PHP
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
|
||||||
php-version: ${{ matrix.php_version }}
|
|
||||||
# ini-values: post_max_size=256M, max_execution_time=180
|
|
||||||
extensions: >
|
|
||||||
calendar, gd, imagick, imap, intl, json, ldap, mbstring,
|
|
||||||
mcrypt, mysql, mysqli, opcache, pgsql, sqlite3, xml, zip
|
|
||||||
tools: >
|
|
||||||
composer,
|
|
||||||
phpunit:9.5
|
|
||||||
coverage: none
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
# phpts: ts # ts for thread-safe, default nts
|
|
||||||
|
|
||||||
# Restore cache
|
|
||||||
- name: Restore cache
|
|
||||||
id: cache
|
|
||||||
uses: actions/cache/restore@v4
|
|
||||||
env:
|
|
||||||
HASH: ${{ hashFiles('htdocs/install/**') }}
|
|
||||||
KEY_ROOT: ${{ matrix.os }}-${{ env.ckey }}-${{ matrix.php_version }}
|
|
||||||
with:
|
|
||||||
# See https://github.com/actions/cache/issues/1275#issuecomment-1925217178
|
|
||||||
enableCrossOsArchive: true
|
|
||||||
path: |
|
|
||||||
./db_init.sql
|
|
||||||
./db_init.sql.md5
|
|
||||||
./.cache/mariadb
|
|
||||||
key: ${{ env.KEY_ROOT }}-${{ env.HASH }}-${{ env.CACHE_KEY_PART }}-${{ github.run_id }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ env.KEY_ROOT }}-${{ env.HASH }}-${{ env.CACHE_KEY_PART }}-
|
|
||||||
${{ env.KEY_ROOT }}-${{ env.HASH }}-${{ github.head_ref }}-
|
|
||||||
${{ env.KEY_ROOT }}-${{ env.HASH }}-${{ github.base_ref }}-
|
|
||||||
${{ env.KEY_ROOT }}-${{ env.HASH }}-
|
|
||||||
${{ env.KEY_ROOT }}-
|
|
||||||
|
|
||||||
- name: Setup MariaDB
|
|
||||||
uses: frederic34/setup-mariadb@v1
|
|
||||||
with:
|
|
||||||
# mariadb-version: ${{ matrix.mariadb-version }}
|
|
||||||
database: travis # Specify your database name
|
|
||||||
|
|
||||||
- name: Create local php.ini with open_basedir restrictions
|
|
||||||
shell: cmd
|
|
||||||
# Objective: separate step, and before database initialisation to verify open_basedir restrictions
|
|
||||||
run: |-
|
|
||||||
echo "BASEDIR=%CD%" >> %GITHUB_ENV%
|
|
||||||
ECHO "==== Show INI file usage before our configuration ==="
|
|
||||||
php --ini
|
|
||||||
ECHO "==== Set PHP_INI_SCAN_DIR to include the INI File we create ==="
|
|
||||||
mkdir %PHP_INI_SCAN_DIR%
|
|
||||||
SET INIFILE="%PHP_INI_SCAN_DIR%\dolibarr.ini"
|
|
||||||
SET HTDOCS_DIR=%CD%\htdocs
|
|
||||||
SET DATA_DIR=%CD%\documents
|
|
||||||
SET TEST_DIR=%CD%\test
|
|
||||||
SET INITDEMO_DIR=%CD%\dev\initdemo
|
|
||||||
ECHO "==== Create INI file to set open_basedir ==="
|
|
||||||
echo [php] > %INIFILE%
|
|
||||||
echo open_basedir^="%HTDOCS_DIR%;%DATA_DIR%;%TEST_DIR%;%INITDEMO_DIR%;%PHPROOT%" >> %INIFILE%
|
|
||||||
REM Unset PHP_INI_SCAN_DIR to disable open_basedir restritions (to limit debug effort)
|
|
||||||
REM SET PHP_INI_SCAN_DIR=
|
|
||||||
ECHO "==== Show contents of INI file to set open_basedir ==="
|
|
||||||
type %INIFILE%
|
|
||||||
ECHO "==== Verify it is used by PHP ==="
|
|
||||||
php --ini
|
|
||||||
REM TEST OPEN_BASEDIR restriction is not limiting wrongly
|
|
||||||
REM THE DATA_DIR MUST BE CREATED HERE - open_base does not allow it's creation
|
|
||||||
mkdir "%DATA_DIR%"
|
|
||||||
mkdir "%DATA_DIR%\mytest"
|
|
||||||
php -r "$d=implode(DIRECTORY_SEPARATOR,[__DIR__,'documents','mytest']);echo 'IS_DIR '.$d.' '.((int) is_dir($d)).PHP_EOL;"
|
|
||||||
php -r "$d=__DIR__.'\documents/mytest';echo 'TEST PATH IS SHOWN: '.$d.PHP_EOL;"
|
|
||||||
php -r "$d=__DIR__.'\documents/mytest';echo 'IS_DIR '.$d.' '.((int) is_dir($d)).PHP_EOL;"
|
|
||||||
ECHO "The above should show 2 successful tests"
|
|
||||||
|
|
||||||
- name: Run Bash script that Initialises the database
|
|
||||||
# Note this is bash (MSYS) on Windows
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
ECHO "#[group]Directory contents to verify cache files, ..."
|
|
||||||
ls -l
|
|
||||||
ECHO "#[endgroup]"
|
|
||||||
ECHO "==== Verify openbase_dir restriction"
|
|
||||||
php --ini
|
|
||||||
# Run bash script to initialise database
|
|
||||||
ECHO "==== Start 'setup_conf.sh' to setup database"
|
|
||||||
${SHELL} -xv dev/setup/phpunit/setup_conf.sh
|
|
||||||
## Updating test configuration to not stop on first failure (to see all errors) - need sed
|
|
||||||
sed -i -e 's/stopOnFailure="[^"]*"/stopOnFailure="false"/' test/phpunit/phpunittest.xml
|
|
||||||
ECHO "#[group]Directory contents after database setup to verify cache files, ..."
|
|
||||||
ls -l
|
|
||||||
ECHO "#[endgroup]"
|
|
||||||
# Export some tool paths to reuse the from CMD shell.
|
|
||||||
echo "TAIL=$(cygpath -w "$(which tail)")" >> "$GITHUB_ENV"
|
|
||||||
echo "GREP=$(cygpath -w "$(which grep)")" >> "$GITHUB_ENV"
|
|
||||||
echo "TEE=$(cygpath -w "$(which tee)")" >> "$GITHUB_ENV"
|
|
||||||
echo "BASEDIR=$(realpath .)" >> "$GITHUB_ENV"
|
|
||||||
|
|
||||||
- name: Run PHPUnit tests
|
|
||||||
# continue-on-error: true
|
|
||||||
shell: cmd
|
|
||||||
# setting up php.ini, starting the php server are currently in this step
|
|
||||||
run: |-
|
|
||||||
ECHO "==== Visually verify our dolibarr.INI file usage ==="
|
|
||||||
php --ini
|
|
||||||
ECHO "==== Add our web server information to the config file ==="
|
|
||||||
echo $dolibarr_main_url_root="http://${{ env.PHPSERVER_DOMAIN_PORT }}"; >> htdocs/conf/conf.php
|
|
||||||
ECHO "#[group]==== Dolibarr config file contents"
|
|
||||||
cat htdocs/conf/conf.php
|
|
||||||
ECHO "#[endgroup]"
|
|
||||||
ECHO "==== START PHP server"
|
|
||||||
start /B php -S %PHPSERVER_DOMAIN_PORT% -t htdocs >> %PHPSERVER_LOG% 2>&1
|
|
||||||
ECHO "#[group]==== Output from curl on PHP server"
|
|
||||||
curl "http://${{ env.PHPSERVER_DOMAIN_PORT }}"
|
|
||||||
ECHO "#[endgroup]"
|
|
||||||
ECHO "==== START PHPUNIT TESTS"
|
|
||||||
REM 'DOSKEY' USED to recover error code (no pipefile equivalent in windows?)
|
|
||||||
( php "%PHPROOT%\phpunit" -d memory_limit=-1 -c %CD%\test\phpunit\phpunittest.xml "test\phpunit\AllTests.php" --exclude-group WindowsWaitingForFix & call doskey /exename=err err=%%^^errorlevel%% ) | "${{ env.TEE }}" "${{ env.PHPUNIT_LOG }}"
|
|
||||||
echo ""
|
|
||||||
echo "Ensure that PHPUNIT completed (no early exit from code)"
|
|
||||||
"${{ env.TAIL }}" -5 "${{ env.PHPUNIT_LOG }}" | "${{ env.GREP }}" -qE "(OK .*[0-9]+ tests.*[0-9]+ assertions|Tests: [0-9]+)" || EXIT /B 1
|
|
||||||
echo "PHPUNIT seems to have completed with a test result, reuse the exit code"
|
|
||||||
for /f "tokens=2 delims==" %%A in ('doskey /m:err') do EXIT /B %%A
|
|
||||||
|
|
||||||
- name: Convert Raw Log to Annotations
|
|
||||||
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@v4
|
|
||||||
if: ${{ ! cancelled() }}
|
|
||||||
with:
|
|
||||||
name: win-ci-logs
|
|
||||||
path: |
|
|
||||||
${{ env.PHPUNIT_LOG }}
|
|
||||||
${{ env.DOLIBARR_LOG }}
|
|
||||||
${{ env.PHPSERVER_LOG }}
|
|
||||||
db_init.sql
|
|
||||||
db_init.sql.md5
|
|
||||||
retention-days: 2
|
|
||||||
|
|
||||||
# Save cache
|
|
||||||
- name: Save cache
|
|
||||||
uses: actions/cache/save@v4
|
|
||||||
if: ${{ ! cancelled() }}
|
|
||||||
with:
|
|
||||||
# See https://github.com/actions/cache/issues/1275#issuecomment-1925217178
|
|
||||||
enableCrossOsArchive: true
|
|
||||||
key: ${{ steps.cache.outputs.cache-primary-key }}
|
|
||||||
path: |
|
|
||||||
./db_init.sql
|
|
||||||
./db_init.sql.md5
|
|
||||||
./.cache/mariadb
|
|
||||||
34
.gitignore
vendored
34
.gitignore
vendored
@@ -14,11 +14,11 @@ default.properties
|
|||||||
/.pydevproject
|
/.pydevproject
|
||||||
/.vscode
|
/.vscode
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
.idea
|
||||||
*.iml
|
*.iml
|
||||||
*.orig
|
*.orig
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
/dolibarr_genesis.mp4
|
/dolibarr_genesis.mp4
|
||||||
.phpunit.result.cache
|
|
||||||
# Log files
|
# Log files
|
||||||
dolibarr_install.log
|
dolibarr_install.log
|
||||||
upgrade.log
|
upgrade.log
|
||||||
@@ -50,9 +50,6 @@ build/yarn-error.log
|
|||||||
build/node_modules/
|
build/node_modules/
|
||||||
node_modules/
|
node_modules/
|
||||||
|
|
||||||
vendor/
|
|
||||||
tmp/
|
|
||||||
|
|
||||||
#yarn
|
#yarn
|
||||||
yarn.lock
|
yarn.lock
|
||||||
|
|
||||||
@@ -60,32 +57,3 @@ yarn.lock
|
|||||||
package-lock.json
|
package-lock.json
|
||||||
|
|
||||||
doc/install.lock
|
doc/install.lock
|
||||||
/.asciidoctorconfig.adoc
|
|
||||||
|
|
||||||
.idea
|
|
||||||
/composer.json
|
|
||||||
/composer.lock
|
|
||||||
|
|
||||||
# Local script, executed during pre-commit
|
|
||||||
/local.sh
|
|
||||||
|
|
||||||
# Local phpstan configuration
|
|
||||||
/phpstan.neon
|
|
||||||
/phpstan-baseline.neon
|
|
||||||
|
|
||||||
# Logs
|
|
||||||
/*.log
|
|
||||||
|
|
||||||
# Vim swap files
|
|
||||||
*.sw?
|
|
||||||
|
|
||||||
# Generated by PHPUNIT.BAT
|
|
||||||
/INI_PHPUNIT
|
|
||||||
|
|
||||||
# ignore cache builds
|
|
||||||
/build/phpstan/phpstan
|
|
||||||
/build/phpstan/bootstrap_custom.php
|
|
||||||
phpstan_custom.neon
|
|
||||||
/.php-cs-fixer.cache
|
|
||||||
/.php_cs.cache
|
|
||||||
/.cache
|
|
||||||
|
|||||||
6
.mailmap
6
.mailmap
@@ -89,9 +89,3 @@ Baffir Abbes <bafbes@users.noreply.github.com> bafbes <bafbes@users.noreply.gith
|
|||||||
Kevin Guerrier <guerrier.k@gmail.com> GUERRIER Kevin <guerrier.k@gmail.com>
|
Kevin Guerrier <guerrier.k@gmail.com> GUERRIER Kevin <guerrier.k@gmail.com>
|
||||||
Remy Younes <ryounes@gmail.com> remy <ryounes@gmail.com>
|
Remy Younes <ryounes@gmail.com> remy <ryounes@gmail.com>
|
||||||
Estephe Loridan <github@estephe.me> Estephe L. <github@estephe.me>
|
Estephe Loridan <github@estephe.me> Estephe L. <github@estephe.me>
|
||||||
Anthony Berton <anthony.berton@bb2a.fr> Anthony Berton <anthony.berton@bb2a.fr>
|
|
||||||
Anthony Berton <anthony.berton@bb2a.fr> Berton Anthony <anthony.berton@bb2a.fr>
|
|
||||||
Anthony Berton <anthony.berton@bb2a.fr> BB2A-Anthony <anthony.berton@bb2a.fr>
|
|
||||||
Anthony Berton <anthony.berton@bb2a.fr> Anthony Berton <bertonanthony@gmail.com>
|
|
||||||
Anthony Berton <anthony.berton@bb2a.fr> Berton Anthony <bertonanthony@gmail.com>
|
|
||||||
Anthony Berton <anthony.berton@bb2a.fr> BB2A-Anthony <bertonanthony@gmail.com>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?php
|
|
||||||
/* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
|
|
||||||
*/
|
|
||||||
return include __DIR__ . "/../dev/tools/phan/config.php";
|
|
||||||
@@ -1,131 +1,60 @@
|
|||||||
---
|
---
|
||||||
exclude: (?x)^( htdocs/includes/ckeditor/.*|(\.[^/]*/.*))$
|
exclude: (?x)^( htdocs/includes/ckeditor/.* )
|
||||||
repos:
|
repos:
|
||||||
# Several miscellaneous checks and fix (on yaml files, end of files fix)
|
# Several miscellaneous checks and fix (on yaml files, end of files fix)
|
||||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
rev: v4.5.0
|
rev: v4.5.0
|
||||||
hooks:
|
hooks:
|
||||||
# This hook tests the name of the branch and return an error if the name is
|
|
||||||
# 'develop' or an official version 'x.y'
|
|
||||||
# So you can't commit if your branch name is not a custom branch name.
|
|
||||||
# Using a custom branch name is good practice that makes it easier to manage PRs.
|
|
||||||
# You can skip this:
|
|
||||||
# - Permanently:
|
|
||||||
# export SKIP=no-commit-to-branch # In your .bashrc or session.
|
|
||||||
# - Only this for one commit:
|
|
||||||
# SKIP=no-commit-to-branch git commit -a -m "My message"
|
|
||||||
# - Skipping all checks for a commit:
|
|
||||||
# git commit -a -m "My message" --no-verify
|
|
||||||
# (Recommendation: run git commit -a .. once, then with `--no-verify`)
|
|
||||||
- id: no-commit-to-branch
|
- id: no-commit-to-branch
|
||||||
args: [--branch, develop, --pattern, \d+.0]
|
args: [--branch, develop, --pattern, \d+.0$]
|
||||||
# This checks that xml files are correct
|
|
||||||
- id: check-xml
|
|
||||||
exclude: |
|
|
||||||
(?x)^(htdocs/includes/.*)$
|
|
||||||
# This checks that yaml files are correct
|
|
||||||
- id: check-yaml
|
- id: check-yaml
|
||||||
args: [--unsafe]
|
args: [--unsafe]
|
||||||
# This checks that json files are correct
|
|
||||||
- id: check-json
|
- id: check-json
|
||||||
# Fixes Fix files that have DOS end of line endings
|
|
||||||
- id: mixed-line-ending
|
- id: mixed-line-ending
|
||||||
# alternative for dev/tools/fixdosfiles.sh
|
exclude: (?x)^(htdocs/includes/tecnickcom/tcpdf/fonts/.*)$
|
||||||
exclude: |
|
|
||||||
(?x)^(htdocs/includes/tecnickcom/tcpdf/fonts/.*
|
|
||||||
|.*/CRLF.*.php # Files in swiftmailer
|
|
||||||
)$
|
|
||||||
args: [--fix=lf]
|
|
||||||
# Remove trailing whitespace
|
|
||||||
- id: trailing-whitespace
|
- id: trailing-whitespace
|
||||||
exclude_types: [markdown]
|
exclude_types: [markdown]
|
||||||
# Fix the end of file
|
|
||||||
- id: end-of-file-fixer
|
- id: end-of-file-fixer
|
||||||
# Check that there are no completely merged file conflicts
|
|
||||||
- id: check-merge-conflict
|
- id: check-merge-conflict
|
||||||
stages: [pre-commit, pre-rebase, pre-commit, pre-merge-commit]
|
|
||||||
# Check that files with shebangs have the executable bit set (in git)
|
|
||||||
- id: check-executables-have-shebangs
|
- id: check-executables-have-shebangs
|
||||||
# Check that shell files are executables
|
|
||||||
- id: check-shebang-scripts-are-executable
|
- id: check-shebang-scripts-are-executable
|
||||||
exclude:
|
exclude:
|
||||||
(?x)^( dev/tools/dolibarr-postgres2mysql.php |test/other/test_serialize.php
|
(?x)^( dev/tools/dolibarr-postgres2mysql.php |test/other/test_serialize.php
|
||||||
|test/phpunit/textutf8.txt |test/phpunit/textiso.txt |htdocs/includes/.*
|
|test/phpunit/textutf8.txt |test/phpunit/textiso.txt |htdocs/includes/.*
|
||||||
|htdocs/modulebuilder/template/.* |build/debian/dolibarr.postrm |build/debian/dolibarr.postinst
|
|htdocs/modulebuilder/template/.* |build/debian/dolibarr.postrm |build/debian/dolibarr.postinst
|
||||||
|build/debian/dolibarr.config )$
|
|build/debian/dolibarr.config )$
|
||||||
# Fix the first UTF8 byte
|
|
||||||
- id: fix-byte-order-marker
|
- id: fix-byte-order-marker
|
||||||
# Check that there are no files that have are the same when uppercased (conflict on windows)
|
|
||||||
- id: check-case-conflict
|
- id: check-case-conflict
|
||||||
|
|
||||||
# Beautify shell scripts
|
|
||||||
- repo: https://github.com/gitleaks/gitleaks.git
|
|
||||||
rev: v8.16.1
|
|
||||||
hooks:
|
|
||||||
- id: gitleaks
|
|
||||||
|
|
||||||
# Beautify shell scripts
|
# Beautify shell scripts
|
||||||
- repo: https://github.com/lovesegfault/beautysh.git
|
- repo: https://github.com/lovesegfault/beautysh.git
|
||||||
rev: v6.2.1
|
rev: v6.2.1
|
||||||
hooks:
|
hooks:
|
||||||
- id: beautysh
|
- id: beautysh
|
||||||
exclude: |
|
exclude: (?x)^(dev/setup/git/hooks/pre-commit)$
|
||||||
(?x)^(dev/setup/git/hooks/pre-commit
|
|
||||||
)$
|
|
||||||
args: [--tab]
|
args: [--tab]
|
||||||
|
|
||||||
# Run local script
|
# Run local script
|
||||||
#
|
#
|
||||||
# For example, to update the license in edited files, you could add to local.sh:
|
# For instance to update the license in edited files, you could add to local.sh:
|
||||||
#
|
#
|
||||||
# ```shell
|
# ```shell
|
||||||
# #!/bin/bash
|
# #!/bin/bash
|
||||||
# MYDIR=$(dirname "$0")
|
# MYDIR=$(dirname "$0")
|
||||||
# git diff HEAD --name-only | grep -v includes | \
|
# CHANGED_INTERNALS=$(git diff --name-only | grep -v includes)
|
||||||
# xargs "$MYDIR/dev/tools/updatelicense.php"
|
# "$MYDIR/dev/tools/updatelicense.php" $CHANGED_INTERNALS
|
||||||
# ```
|
# ```
|
||||||
- repo: local
|
- repo: local
|
||||||
hooks:
|
hooks:
|
||||||
- name: Find missing/unused/duplicate language keys
|
|
||||||
id: check-translations
|
|
||||||
files: (?x)^(htdocs/langs/en_US/.*\.lang)
|
|
||||||
language: script
|
|
||||||
entry: ./dev/translation/sanity_check_trans_missing_unused.sh
|
|
||||||
pass_filenames: false
|
|
||||||
args: [list]
|
|
||||||
- id: local-precommit-script
|
- id: local-precommit-script
|
||||||
name: Run local script before commit if it exists
|
name: Run local script before commit if it exists
|
||||||
language: system
|
language: system
|
||||||
entry: bash -c '[ ! -x local.sh ] || ./local.sh'
|
entry: bash -c '[ ! -x local.sh ] || ./local.sh'
|
||||||
pass_filenames: false
|
pass_filenames: false
|
||||||
- id: duplicate-lang-lines
|
|
||||||
stages: [manual]
|
|
||||||
name: Find duplicate language lines
|
|
||||||
files: (?x)^(htdocs/langs/en_US/.*\.lang)
|
|
||||||
language: script
|
|
||||||
entry: ./dev/tools/fixduplicatelanglines.sh
|
|
||||||
pass_filenames: false
|
|
||||||
args: [list]
|
|
||||||
- id: duplicate-lang-keys
|
|
||||||
stages: [manual]
|
|
||||||
name: Find duplicate language keys
|
|
||||||
files: (?x)^(htdocs/langs/en_US/.*\.lang)
|
|
||||||
language: script
|
|
||||||
entry: ./dev/tools/fixduplicatelangkey.sh
|
|
||||||
pass_filenames: false
|
|
||||||
args: [list]
|
|
||||||
- id: fix-alt-languages
|
|
||||||
stages: [manual]
|
|
||||||
name: Fix alt languages
|
|
||||||
# Selection: see fixaltlanguages.sh script
|
|
||||||
files: (?x)^(htdocs/langs/(e[lnstu]|k[akmno]|s[lqrv]|b[nrs]|c[asy]|n[bel]|[ip]t|a[mr]|d[ae]|f[ar]|h[ei]|m[sy]|t[ag]|u[kr]|gl|ja|lo|ru|vi|zh)_[^/]*/.*\.lang)
|
|
||||||
language: script
|
|
||||||
entry: ./dev/tools/fixaltlanguages_pre-commit.sh
|
|
||||||
pass_filenames: true
|
|
||||||
|
|
||||||
# Check PHP syntax
|
# Check PHP syntax
|
||||||
- repo: https://github.com/mdeweerd/pre-commit-php
|
- repo: https://github.com/mdeweerd/pre-commit-php
|
||||||
rev: v1.6.8
|
rev: v1.6.5
|
||||||
hooks:
|
hooks:
|
||||||
- id: php-cbf
|
- id: php-cbf
|
||||||
files: \.(php)$
|
files: \.(php)$
|
||||||
@@ -137,7 +66,6 @@ repos:
|
|||||||
--standard=dev/setup/codesniffer/ruleset.xml,
|
--standard=dev/setup/codesniffer/ruleset.xml,
|
||||||
--report=emacs,
|
--report=emacs,
|
||||||
--severity=5,
|
--severity=5,
|
||||||
--no-colors,
|
|
||||||
]
|
]
|
||||||
- alias: php-cs-with-cache
|
- alias: php-cs-with-cache
|
||||||
id: php-cs
|
id: php-cs
|
||||||
@@ -148,7 +76,6 @@ repos:
|
|||||||
--standard=dev/setup/codesniffer/ruleset.xml,
|
--standard=dev/setup/codesniffer/ruleset.xml,
|
||||||
--report=emacs,
|
--report=emacs,
|
||||||
--severity=5,
|
--severity=5,
|
||||||
--no-colors,
|
|
||||||
--cache=.cache/pre-commit/dolibarr-php-cs.cache,
|
--cache=.cache/pre-commit/dolibarr-php-cs.cache,
|
||||||
.,
|
.,
|
||||||
]
|
]
|
||||||
@@ -209,6 +136,8 @@ repos:
|
|||||||
- dev/tools/codespell/codespell-ignore.txt
|
- dev/tools/codespell/codespell-ignore.txt
|
||||||
- -x
|
- -x
|
||||||
- dev/tools/codespell/codespell-lines-ignore.txt
|
- dev/tools/codespell/codespell-lines-ignore.txt
|
||||||
|
- --uri-ignore-words-list
|
||||||
|
- ned
|
||||||
exclude_types: [image]
|
exclude_types: [image]
|
||||||
exclude: (?x)^(.phan/stubs/.*)$
|
exclude: (?x)^(.phan/stubs/.*)$
|
||||||
additional_dependencies: [tomli]
|
additional_dependencies: [tomli]
|
||||||
@@ -240,26 +169,3 @@ repos:
|
|||||||
hooks:
|
hooks:
|
||||||
- id: shellcheck
|
- id: shellcheck
|
||||||
args: [-W, "100"]
|
args: [-W, "100"]
|
||||||
|
|
||||||
- repo: https://github.com/sqlfluff/sqlfluff
|
|
||||||
rev: 3.0.4
|
|
||||||
hooks:
|
|
||||||
- id: sqlfluff-lint
|
|
||||||
stages: [pre-commit, manual] # manual needed for ci
|
|
||||||
exclude: (?x)^
|
|
||||||
(htdocs/includes/.*
|
|
||||||
|htdocs/install/doctemplates/websites/.*_template
|
|
||||||
|htdocs/core/menus/init_menu_auguria\.sql
|
|
||||||
|htdocs/install/doctemplates/websites/website_template-.*\.sql
|
|
||||||
|(htdocs/install/mysql/data/(llx_20_c_departements\.sql
|
|
||||||
|llx_accounting_account_.*\.sql)
|
|
||||||
|(htdocs/install/mysql/migration/3\.[256]\.0-.*\.sql)
|
|
||||||
)
|
|
||||||
|htdocs/install/mysql/migration/(1[0-5]|[456789])\.0\.0-.*\.sql
|
|
||||||
|htdocs/install/mysql/migration/3\.([0134789])\.0-.*\.sql
|
|
||||||
|htdocs/install/mysql/migration/repair\.sql
|
|
||||||
|htdocs/install/mysql/tables/llx_bookcal_availabilities-bookcal\.sql
|
|
||||||
|htdocs/install/mysql/tables/llx_categorie(_(account|actioncomm|contact|fournisseur|knowledgemanagement-knowledgemanagement|member|product|project|societe|ticket-ticket|user|warehouse|website_page-website)?\.key\.sql)
|
|
||||||
|htdocs/install/mysql/tables/llx_rights_def\.key\.sql
|
|
||||||
|htdocs/install/pgsql/functions/functions(-(don|loan|mailing|opensurvey|partnership|recruitment|website))?\.sql
|
|
||||||
)$
|
|
||||||
|
|||||||
231
.scrutinizer.yml
Normal file
231
.scrutinizer.yml
Normal file
@@ -0,0 +1,231 @@
|
|||||||
|
# .scrutinizer.yml
|
||||||
|
#build:
|
||||||
|
# - php-scrutinizer-run
|
||||||
|
build:
|
||||||
|
nodes:
|
||||||
|
analysis:
|
||||||
|
tests:
|
||||||
|
override:
|
||||||
|
- command: php-scrutinizer-run
|
||||||
|
idle_timeout: 8000
|
||||||
|
|
||||||
|
imports:
|
||||||
|
- javascript
|
||||||
|
- php
|
||||||
|
|
||||||
|
filter:
|
||||||
|
excluded_paths:
|
||||||
|
- build/*
|
||||||
|
- dev/*
|
||||||
|
- doc/*
|
||||||
|
- documents/*
|
||||||
|
- node_modules/*
|
||||||
|
- test/*
|
||||||
|
dependency_paths:
|
||||||
|
- htdocs/includes/*
|
||||||
|
paths:
|
||||||
|
- htdocs/*
|
||||||
|
- scripts/*
|
||||||
|
|
||||||
|
tools:
|
||||||
|
# php_analyzer. Doc on https://scrutinizer-ci.com/docs/tools/php/php-analyzer/
|
||||||
|
php_analyzer:
|
||||||
|
enabled: true
|
||||||
|
extensions:
|
||||||
|
- php
|
||||||
|
dependency_paths:
|
||||||
|
- htdocs/includes/
|
||||||
|
filter:
|
||||||
|
excluded_paths:
|
||||||
|
- build/*
|
||||||
|
- dev/*
|
||||||
|
- doc/*
|
||||||
|
- documents/*
|
||||||
|
- htdocs/includes/*
|
||||||
|
- htdocs/core/class/lessc.class.php
|
||||||
|
- node_modules/*
|
||||||
|
- test/*
|
||||||
|
paths:
|
||||||
|
- htdocs/
|
||||||
|
- scripts/
|
||||||
|
config:
|
||||||
|
parameter_reference_check:
|
||||||
|
enabled: true
|
||||||
|
checkstyle:
|
||||||
|
enabled: false
|
||||||
|
no_trailing_whitespace: true
|
||||||
|
naming:
|
||||||
|
enabled: true
|
||||||
|
local_variable: ^[a-z][a-zA-Z0-9]*$
|
||||||
|
abstract_class_name: ^Abstract|Factory$
|
||||||
|
utility_class_name: Utils?$
|
||||||
|
constant_name: ^[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)*$
|
||||||
|
property_name: ^[a-z][a-zA-Z0-9]*$
|
||||||
|
method_name: ^(?:[a-z]|__)[a-zA-Z0-9]*$
|
||||||
|
parameter_name: ^[a-z][a-zA-Z0-9]*$
|
||||||
|
interface_name: ^[A-Z][a-zA-Z0-9]*Interface$
|
||||||
|
type_name: ^[A-Z][a-zA-Z0-9]*$
|
||||||
|
exception_name: ^[A-Z][a-zA-Z0-9]*Exception$
|
||||||
|
isser_method_name: ^(?:is|has|should|may|supports)
|
||||||
|
unreachable_code:
|
||||||
|
enabled: true
|
||||||
|
check_access_control:
|
||||||
|
enabled: true
|
||||||
|
typo_checks:
|
||||||
|
enabled: true
|
||||||
|
check_variables:
|
||||||
|
enabled: true
|
||||||
|
check_calls:
|
||||||
|
enabled: true
|
||||||
|
too_many_arguments: true
|
||||||
|
missing_argument: true
|
||||||
|
argument_type_checks: lenient # Allowed Values: "disabled", "lenient", "strict"
|
||||||
|
suspicious_code:
|
||||||
|
enabled: true
|
||||||
|
overriding_parameter: false
|
||||||
|
overriding_closure_use: true
|
||||||
|
parameter_closure_use_conflict: true
|
||||||
|
parameter_multiple_times: true
|
||||||
|
non_existent_class_in_instanceof_check: true
|
||||||
|
non_existent_class_in_catch_clause: true
|
||||||
|
assignment_of_null_return: true
|
||||||
|
non_commented_switch_fallthrough: true
|
||||||
|
non_commented_empty_catch_block: true
|
||||||
|
overriding_private_members: true
|
||||||
|
use_statement_alias_conflict: true
|
||||||
|
precedence_in_condition_assignment: true
|
||||||
|
dead_assignments:
|
||||||
|
enabled: true
|
||||||
|
verify_php_doc_comments:
|
||||||
|
enabled: false
|
||||||
|
parameters: true
|
||||||
|
return: true
|
||||||
|
suggest_more_specific_types: true
|
||||||
|
ask_for_return_if_not_inferrable: true
|
||||||
|
ask_for_param_type_annotation: true
|
||||||
|
loops_must_use_braces:
|
||||||
|
enabled: true
|
||||||
|
check_usage_context:
|
||||||
|
enabled: true
|
||||||
|
simplify_boolean_return:
|
||||||
|
enabled: false
|
||||||
|
phpunit_checks:
|
||||||
|
enabled: false
|
||||||
|
reflection_checks:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
# Checks Common Precedence Mistakes
|
||||||
|
precedence_checks:
|
||||||
|
enabled: true
|
||||||
|
assignment_in_condition: true
|
||||||
|
comparison_of_bit_result: true
|
||||||
|
basic_semantic_checks:
|
||||||
|
enabled: true
|
||||||
|
# Disabled unused code. In most cases, we want to keep it.
|
||||||
|
unused_code:
|
||||||
|
enabled: false
|
||||||
|
deprecation_checks:
|
||||||
|
enabled: true
|
||||||
|
useless_function_calls:
|
||||||
|
enabled: true
|
||||||
|
metrics_lack_of_cohesion_methods:
|
||||||
|
enabled: true
|
||||||
|
metrics_coupling:
|
||||||
|
enabled: true
|
||||||
|
stable_code:
|
||||||
|
namespace_prefixes: []
|
||||||
|
classes: []
|
||||||
|
doctrine_parameter_binding:
|
||||||
|
enabled: false
|
||||||
|
doctrine_entity_manager_injection:
|
||||||
|
enabled: false
|
||||||
|
symfony_request_injection:
|
||||||
|
enabled: false
|
||||||
|
doc_comment_fixes:
|
||||||
|
enabled: true
|
||||||
|
reflection_fixes:
|
||||||
|
enabled: false
|
||||||
|
use_statement_fixes:
|
||||||
|
enabled: true
|
||||||
|
remove_unused: true
|
||||||
|
# Whether you would like multiple imports in one USE statement to be preserved, e.g. ``use A, B;``.
|
||||||
|
preserve_multiple: false
|
||||||
|
# Whether you would like to preserve blank lines between use statements.
|
||||||
|
preserve_blanklines: false
|
||||||
|
order_alphabetically: false
|
||||||
|
# To use specific config for a specific path, use path_configs: (see example on page https://scrutinizer-ci.com/docs/configuration/tool_config_structure)
|
||||||
|
|
||||||
|
# php_depend
|
||||||
|
php_pdepend:
|
||||||
|
enabled: false
|
||||||
|
configuration_file: null
|
||||||
|
suffixes:
|
||||||
|
- php
|
||||||
|
excluded_dirs: { }
|
||||||
|
filter:
|
||||||
|
excluded_paths:
|
||||||
|
- 'build/*'
|
||||||
|
- 'dev/*'
|
||||||
|
- 'doc/*'
|
||||||
|
- 'test/*'
|
||||||
|
- 'htdocs/includes/*'
|
||||||
|
paths: { }
|
||||||
|
|
||||||
|
# change tracking
|
||||||
|
php_changetracking:
|
||||||
|
enabled: false
|
||||||
|
bug_patterns:
|
||||||
|
- '\bfix(?:es|ed)?\b'
|
||||||
|
feature_patterns:
|
||||||
|
- '\badd(?:s|ed)?\b'
|
||||||
|
- '\bimplement(?:s|ed)?\b'
|
||||||
|
filter:
|
||||||
|
excluded_paths:
|
||||||
|
- 'build/*'
|
||||||
|
- 'dev/*'
|
||||||
|
- 'doc/*'
|
||||||
|
- 'documents/*'
|
||||||
|
- 'htdocs/includes/*'
|
||||||
|
- 'node_modules/*'
|
||||||
|
- 'test/*'
|
||||||
|
paths: { }
|
||||||
|
|
||||||
|
# Similar code detection
|
||||||
|
php_sim:
|
||||||
|
enabled: false
|
||||||
|
min_mass: 30
|
||||||
|
filter:
|
||||||
|
excluded_paths:
|
||||||
|
- 'build/*'
|
||||||
|
- 'dev/*'
|
||||||
|
- 'doc/*'
|
||||||
|
- 'documents/*'
|
||||||
|
- 'htdocs/includes/*'
|
||||||
|
- 'node_modules/*'
|
||||||
|
- 'test/*'
|
||||||
|
paths: { }
|
||||||
|
|
||||||
|
# Coding-Style / Bug Detection
|
||||||
|
js_hint:
|
||||||
|
enabled: false
|
||||||
|
use_native_config: true
|
||||||
|
extensions:
|
||||||
|
- js
|
||||||
|
filter:
|
||||||
|
excluded_paths:
|
||||||
|
- 'build/*'
|
||||||
|
- 'dev/*'
|
||||||
|
- 'doc/*'
|
||||||
|
- 'documents/*'
|
||||||
|
- 'htdocs/includes/*'
|
||||||
|
- 'node_modules/*'
|
||||||
|
- 'test/*'
|
||||||
|
paths: { }
|
||||||
|
config: { }
|
||||||
|
path_configs: { }
|
||||||
|
|
||||||
|
|
||||||
|
before_commands: { }
|
||||||
|
after_commands: { }
|
||||||
|
artifacts: { }
|
||||||
|
build_failure_conditions: { }
|
||||||
14
.stickler.yml
Normal file
14
.stickler.yml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
linters:
|
||||||
|
phpcs:
|
||||||
|
standard: 'dev/setup/codesniffer/ruleset.xml'
|
||||||
|
extensions: 'php'
|
||||||
|
tab_width: 4
|
||||||
|
fixer: true
|
||||||
|
|
||||||
|
fixers:
|
||||||
|
enable: true
|
||||||
|
|
||||||
|
files:
|
||||||
|
ignore:
|
||||||
|
- 'htdocs/includes/*'
|
||||||
156
.travis.yml
156
.travis.yml
@@ -2,13 +2,13 @@
|
|||||||
# from Dolibarr GitHub repository.
|
# from Dolibarr GitHub repository.
|
||||||
# For syntax, see https://docs.travis-ci.com/user/languages/php/
|
# For syntax, see https://docs.travis-ci.com/user/languages/php/
|
||||||
|
|
||||||
# We use dist: focal = 20.04
|
# We use dist: focal = 20.04, jammy = 22.04
|
||||||
os: linux
|
os: linux
|
||||||
dist: focal
|
dist: jammy
|
||||||
|
|
||||||
language: generic
|
language: generic
|
||||||
|
|
||||||
#scan_logs: false
|
scan_logs: false
|
||||||
|
|
||||||
git:
|
git:
|
||||||
depth: 1
|
depth: 1
|
||||||
@@ -21,7 +21,7 @@ services:
|
|||||||
|
|
||||||
|
|
||||||
addons:
|
addons:
|
||||||
mariadb: '10.5'
|
mariadb: '10.6'
|
||||||
|
|
||||||
|
|
||||||
env:
|
env:
|
||||||
@@ -29,34 +29,27 @@ env:
|
|||||||
# Set to true for very verbose output
|
# Set to true for very verbose output
|
||||||
- DEBUG=true
|
- DEBUG=true
|
||||||
|
|
||||||
cache:
|
|
||||||
directories:
|
|
||||||
- ~/.cache
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
allow_failures:
|
#allow_failures:
|
||||||
- php: '8.3'
|
#- php: nightly
|
||||||
include:
|
include:
|
||||||
- stage: PHP min and max
|
- stage: PHP 7.0-8.1
|
||||||
if: type = push
|
if: type = push
|
||||||
php: '7.1'
|
php: '7.1'
|
||||||
env:
|
env:
|
||||||
- DB=postgresql
|
- DB=postgresql
|
||||||
- TRAVIS_PHP_VERSION=7.1
|
- TRAVIS_PHP_VERSION=7.1
|
||||||
- stage: PHP min and max
|
- stage: PHP 7.0-8.1
|
||||||
if: type = pull_request OR type = push
|
if: type = pull_request OR type = push
|
||||||
php: '8.2'
|
php: '8.1'
|
||||||
env:
|
env:
|
||||||
- DB=mysql
|
- DB=mysql
|
||||||
- TRAVIS_PHP_VERSION=8.2
|
- TRAVIS_PHP_VERSION=8.1
|
||||||
- stage: PHP 8.3
|
#- stage: PHP Dev
|
||||||
if: type = push AND branch = develop
|
# if: type = push AND branch = developdisabled
|
||||||
php: '8.3'
|
# php: '8.2'
|
||||||
env:
|
# env: DB=mysql
|
||||||
- DB=mysql
|
|
||||||
- TRAVIS_PHP_VERSION=8.3
|
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
email:
|
email:
|
||||||
@@ -82,18 +75,15 @@ before_install:
|
|||||||
- |
|
- |
|
||||||
echo Install packages for PHP
|
echo Install packages for PHP
|
||||||
sudo apt-get install -y pgloader memcached
|
sudo apt-get install -y pgloader memcached
|
||||||
|
if [ "$TRAVIS_PHP_VERSION" = '7.0' ]; then
|
||||||
|
sudo apt install unzip apache2 php7.0 php7.0-cli php7.0-curl php7.0-mysql php7.0-pgsql php7.0-gd php7.0-imap php7.0-intl php7.0-ldap php7.0-xml php7.0-mbstring php7.0-xml php7.0-zip libapache2-mod-php7.0
|
||||||
|
fi
|
||||||
if [ "$TRAVIS_PHP_VERSION" = '7.1' ]; then
|
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
|
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
|
fi
|
||||||
if [ "$TRAVIS_PHP_VERSION" = '8.1' ]; then
|
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
|
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
|
fi
|
||||||
if [ "$TRAVIS_PHP_VERSION" = '8.2' ]; then
|
|
||||||
sudo apt install unzip apache2 php8.2 php8.2-cli php8.2-curl php8.2-mysql php8.2-pgsql php8.2-gd php8.2-imap php8.2-intl php8.2-ldap php8.2-xml php8.2-mbstring php8.2-xml php8.2-zip libapache2-mod-php8.2
|
|
||||||
fi
|
|
||||||
if [ "$TRAVIS_PHP_VERSION" = '8.3' ]; then
|
|
||||||
sudo apt install unzip apache2 php8.3 php8.3-cli php8.3-curl php8.3-mysql php8.3-pgsql php8.3-gd php8.3-imap php8.3-intl php8.3-ldap php8.3-xml php8.3-mbstring php8.3-xml php8.3-zip libapache2-mod-php8.3
|
|
||||||
fi
|
|
||||||
|
|
||||||
- |
|
- |
|
||||||
echo Install pgsql if run is for pgsql
|
echo Install pgsql if run is for pgsql
|
||||||
@@ -119,15 +109,15 @@ before_install:
|
|||||||
|
|
||||||
install:
|
install:
|
||||||
- |
|
- |
|
||||||
|
if [ "$TRAVIS_PHP_VERSION" = '7.0' ]; then
|
||||||
|
sudo update-alternatives --set php /usr/bin/php7.0
|
||||||
|
fi
|
||||||
if [ "$TRAVIS_PHP_VERSION" = '7.1' ]; then
|
if [ "$TRAVIS_PHP_VERSION" = '7.1' ]; then
|
||||||
sudo update-alternatives --set php /usr/bin/php7.1
|
sudo update-alternatives --set php /usr/bin/php7.1
|
||||||
fi
|
fi
|
||||||
if [ "$TRAVIS_PHP_VERSION" = '8.1' ]; then
|
if [ "$TRAVIS_PHP_VERSION" = '8.1' ]; then
|
||||||
sudo update-alternatives --set php /usr/bin/php8.1
|
sudo update-alternatives --set php /usr/bin/php8.1
|
||||||
fi
|
fi
|
||||||
if [ "$TRAVIS_PHP_VERSION" = '8.2' ]; then
|
|
||||||
sudo update-alternatives --set php /usr/bin/php8.2
|
|
||||||
fi
|
|
||||||
php -i | head -
|
php -i | head -
|
||||||
|
|
||||||
- |
|
- |
|
||||||
@@ -138,15 +128,22 @@ install:
|
|||||||
php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
|
php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
|
||||||
sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
|
sudo php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer
|
||||||
sudo chmod -R a+rwx /usr/local/bin/composer
|
sudo chmod -R a+rwx /usr/local/bin/composer
|
||||||
|
|
||||||
#sudo apt install composer
|
|
||||||
composer -V
|
composer -V
|
||||||
composer -n config -g vendor-dir htdocs/includes
|
sudo composer -n config -g vendor-dir htdocs/includes
|
||||||
|
sudo chmod -R a+rwx /home/travis/.config/composer
|
||||||
echo
|
echo
|
||||||
|
|
||||||
- |
|
- |
|
||||||
echo "Update Composer version and Install tools - PHP Unit, Parallel Lint, PHP CodeSniffer, PHP Vardump check - for $TRAVIS_PHP_VERSION"
|
echo "Update Composer version and Install tools - PHP Unit, Parallel Lint, PHP CodeSniffer, PHP Vardump check - for $TRAVIS_PHP_VERSION"
|
||||||
echo "(composer version 2.5 is bugged and generate phpunit error Exception: Serialization of 'Closure' is not allowed)"
|
echo "(composer version 2.5 is bugged and generate phpunit error Exception: Serialization of 'Closure' is not allowed)"
|
||||||
|
if [ "$TRAVIS_PHP_VERSION" = '7.0' ]; then
|
||||||
|
sudo composer self-update 2.2.18
|
||||||
|
composer -n require phpunit/phpunit ^6.0 \
|
||||||
|
php-parallel-lint/php-parallel-lint ^1 \
|
||||||
|
php-parallel-lint/php-console-highlighter ^0 \
|
||||||
|
php-parallel-lint/php-var-dump-check ~0.4 \
|
||||||
|
squizlabs/php_codesniffer ^3
|
||||||
|
fi
|
||||||
if [ "$TRAVIS_PHP_VERSION" = '7.1' ] || [ "$TRAVIS_PHP_VERSION" = '7.2' ]; then
|
if [ "$TRAVIS_PHP_VERSION" = '7.1' ] || [ "$TRAVIS_PHP_VERSION" = '7.2' ]; then
|
||||||
sudo composer self-update 2.2.18
|
sudo composer self-update 2.2.18
|
||||||
composer -n require phpunit/phpunit ^7.5 \
|
composer -n require phpunit/phpunit ^7.5 \
|
||||||
@@ -164,7 +161,7 @@ install:
|
|||||||
squizlabs/php_codesniffer ^3
|
squizlabs/php_codesniffer ^3
|
||||||
fi
|
fi
|
||||||
# phpunit 9 is required for php 8
|
# 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" = 'nightly' ]; then
|
if [ "$TRAVIS_PHP_VERSION" = '8.0' ] || [ "$TRAVIS_PHP_VERSION" = '8.1' ] || [ "$TRAVIS_PHP_VERSION" = '8.2' ] || [ "$TRAVIS_PHP_VERSION" = 'nightly' ]; then
|
||||||
sudo composer self-update 2.4.4
|
sudo composer self-update 2.4.4
|
||||||
composer -n require --ignore-platform-reqs phpunit/phpunit ^8 \
|
composer -n require --ignore-platform-reqs phpunit/phpunit ^8 \
|
||||||
php-parallel-lint/php-parallel-lint ^1.2 \
|
php-parallel-lint/php-parallel-lint ^1.2 \
|
||||||
@@ -211,8 +208,8 @@ before_script:
|
|||||||
phpcs -i | head -
|
phpcs -i | head -
|
||||||
# Check PHP Vardump check version
|
# Check PHP Vardump check version
|
||||||
echo "PHP Vardump check version"
|
echo "PHP Vardump check version"
|
||||||
which var_dump_check
|
which var-dump-check
|
||||||
var_dump_check --version
|
var-dump-check --version
|
||||||
# Check PHPUnit version
|
# Check PHPUnit version
|
||||||
echo "PHPUnit version"
|
echo "PHPUnit version"
|
||||||
which phpunit
|
which phpunit
|
||||||
@@ -273,9 +270,8 @@ before_script:
|
|||||||
|
|
||||||
- |
|
- |
|
||||||
export CONF_FILE=htdocs/conf/conf.php
|
export CONF_FILE=htdocs/conf/conf.php
|
||||||
echo "Setting up Dolibarr '$CONF_FILE'"
|
echo "Setting up Dolibarr $CONF_FILE"
|
||||||
echo '<?php' > $CONF_FILE
|
echo '<?php' > $CONF_FILE
|
||||||
echo 'error_reporting(E_ALL);' >> $CONF_FILE
|
|
||||||
echo '$'dolibarr_main_url_root=\'http://127.0.0.1\'';' >> $CONF_FILE
|
echo '$'dolibarr_main_url_root=\'http://127.0.0.1\'';' >> $CONF_FILE
|
||||||
echo '$'dolibarr_main_document_root=\'$TRAVIS_BUILD_DIR/htdocs\'';' >> $CONF_FILE
|
echo '$'dolibarr_main_document_root=\'$TRAVIS_BUILD_DIR/htdocs\'';' >> $CONF_FILE
|
||||||
echo '$'dolibarr_main_data_root=\'$TRAVIS_BUILD_DIR/documents\'';' >> $CONF_FILE
|
echo '$'dolibarr_main_data_root=\'$TRAVIS_BUILD_DIR/documents\'';' >> $CONF_FILE
|
||||||
@@ -340,55 +336,26 @@ script:
|
|||||||
--exclude htdocs/includes/mike42/escpos-php/example --exclude htdocs/includes/maximebf \
|
--exclude htdocs/includes/mike42/escpos-php/example --exclude htdocs/includes/maximebf \
|
||||||
--exclude htdocs/includes/phpunit/ --exclude htdocs/includes/tecnickcom/tcpdf/include/barcodes --exclude htdocs/includes/webmozart --exclude htdocs/includes/webklex --blame .
|
--exclude htdocs/includes/phpunit/ --exclude htdocs/includes/tecnickcom/tcpdf/include/barcodes --exclude htdocs/includes/webmozart --exclude htdocs/includes/webklex --blame .
|
||||||
fi
|
fi
|
||||||
if [ "$TRAVIS_PHP_VERSION" = "8.2" ]; then
|
set +e
|
||||||
parallel-lint -e php --exclude dev/tools/test/namespacemig --exclude htdocs/includes/composer --exclude htdocs/includes/myclabs --exclude htdocs/includes/phpspec --exclude dev/initdata/dbf/includes \
|
echo
|
||||||
--exclude htdocs/includes/sabre --exclude htdocs/includes/phpoffice/PhpSpreadsheet --exclude htdocs/includes/sebastian \
|
|
||||||
--exclude htdocs/includes/squizlabs/php_codesniffer --exclude htdocs/includes/jakub-onderka --exclude htdocs/includes/php-parallel-lint --exclude htdocs/includes/symfony \
|
- |
|
||||||
--exclude htdocs/includes/mike42/escpos-php/example --exclude htdocs/includes/maximebf \
|
echo "Checking coding style (only for Pull Requests builds and 1 version to not overload travis and avoid duplicate tests)"
|
||||||
--exclude htdocs/includes/phpunit/ --exclude htdocs/includes/tecnickcom/tcpdf/include/barcodes --exclude htdocs/includes/webmozart --exclude htdocs/includes/webklex --blame .
|
# Ensure we catch errors
|
||||||
fi
|
set -e
|
||||||
if [ "$TRAVIS_PHP_VERSION" = "8.3" ]; then
|
# Exclusions are defined in the ruleset.xml file
|
||||||
parallel-lint -e php --exclude dev/tools/test/namespacemig --exclude htdocs/includes/composer --exclude htdocs/includes/myclabs --exclude htdocs/includes/phpspec --exclude dev/initdata/dbf/includes \
|
if [ "$TRAVIS_PULL_REQUEST" = "false" ] && [ "$TRAVIS_PHP_VERSION" = "8.1" ]; then
|
||||||
--exclude htdocs/includes/sabre --exclude htdocs/includes/phpoffice/PhpSpreadsheet --exclude htdocs/includes/sebastian \
|
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 .;
|
||||||
--exclude htdocs/includes/squizlabs/php_codesniffer --exclude htdocs/includes/jakub-onderka --exclude htdocs/includes/php-parallel-lint --exclude htdocs/includes/symfony \
|
|
||||||
--exclude htdocs/includes/mike42/escpos-php/example --exclude htdocs/includes/maximebf \
|
|
||||||
--exclude htdocs/includes/phpunit/ --exclude htdocs/includes/tecnickcom/tcpdf/include/barcodes --exclude htdocs/includes/webmozart --exclude htdocs/includes/webklex --blame .
|
|
||||||
fi
|
fi
|
||||||
set +e
|
set +e
|
||||||
echo
|
echo
|
||||||
|
|
||||||
- |
|
- |
|
||||||
echo "Checking coding style (only for 1 version to not overload travis and avoid duplicate tests)"
|
echo "Checking missing debug"
|
||||||
# Ensure we catch errors
|
|
||||||
set -e
|
|
||||||
CACHE_OPT="--cache=${HOME}/.cache/dolibarr-phpcs-${TRAVIS_PHP_VERSION}.cache"
|
|
||||||
# Exclusions are defined in the ruleset.xml file
|
|
||||||
#if [ "$TRAVIS_PULL_REQUEST" = "false" ] && [ "$TRAVIS_PHP_VERSION" = "8.1" ]; then
|
|
||||||
if [ "$TRAVIS_PHP_VERSION" = "8.1" ]; then
|
|
||||||
phpcs -s -p -d memory_limit=-1 --extensions=php --colors --tab-width=4 --standard=dev/setup/codesniffer/ruleset.xml --encoding=utf-8 --severity=1 ${CACHE_OPT} --runtime-set ignore_warnings_on_exit true .;
|
|
||||||
fi
|
|
||||||
if [ "$TRAVIS_PHP_VERSION" = "8.2" ]; then
|
|
||||||
phpcs -s -p -d memory_limit=-1 --extensions=php --colors --tab-width=4 --standard=dev/setup/codesniffer/ruleset.xml --encoding=utf-8 --severity=1 ${CACHE_OPT} --runtime-set ignore_warnings_on_exit true .;
|
|
||||||
fi
|
|
||||||
if [ "$TRAVIS_PHP_VERSION" = "8.3" ]; then
|
|
||||||
phpcs -s -p -d memory_limit=-1 --extensions=php --colors --tab-width=4 --standard=dev/setup/codesniffer/ruleset.xml --encoding=utf-8 --severity=1 ${CACHE_OPT} --runtime-set ignore_warnings_on_exit true .;
|
|
||||||
fi
|
|
||||||
set +e
|
|
||||||
echo
|
|
||||||
|
|
||||||
- |
|
|
||||||
echo "Checking missing debug (only for 1 version to not overload travis and avoid duplicate tests)"
|
|
||||||
# Ensure we catch errors
|
# Ensure we catch errors
|
||||||
set -e
|
set -e
|
||||||
# Exclusions are defined in the ruleset.xml file
|
# Exclusions are defined in the ruleset.xml file
|
||||||
#if [ "$TRAVIS_PULL_REQUEST" = "false" ] && [ "$TRAVIS_PHP_VERSION" = "8.1" ]; then
|
if [ "$TRAVIS_PULL_REQUEST" = "false" ] && [ "$TRAVIS_PHP_VERSION" = "8.1" ]; then
|
||||||
if [ "$TRAVIS_PHP_VERSION" = "8.1" ]; then
|
|
||||||
var-dump-check --extensions php --tracy --exclude htdocs/includes --exclude test/ --exclude htdocs/public/test/ --exclude htdocs/core/lib/functions.lib.php .
|
|
||||||
fi
|
|
||||||
if [ "$TRAVIS_PHP_VERSION" = "8.2" ]; then
|
|
||||||
var-dump-check --extensions php --tracy --exclude htdocs/includes --exclude test/ --exclude htdocs/public/test/ --exclude htdocs/core/lib/functions.lib.php .
|
|
||||||
fi
|
|
||||||
if [ "$TRAVIS_PHP_VERSION" = "8.3" ]; then
|
|
||||||
var-dump-check --extensions php --tracy --exclude htdocs/includes --exclude test/ --exclude htdocs/public/test/ --exclude htdocs/core/lib/functions.lib.php .
|
var-dump-check --extensions php --tracy --exclude htdocs/includes --exclude test/ --exclude htdocs/public/test/ --exclude htdocs/core/lib/functions.lib.php .
|
||||||
fi
|
fi
|
||||||
set +e
|
set +e
|
||||||
@@ -400,7 +367,6 @@ script:
|
|||||||
# Ensure we catch errors
|
# Ensure we catch errors
|
||||||
set +e
|
set +e
|
||||||
echo '<?php ' > $INSTALL_FORCED_FILE
|
echo '<?php ' > $INSTALL_FORCED_FILE
|
||||||
echo 'error_reporting(E_ALL);' >> $INSTALL_FORCED_FILE
|
|
||||||
echo '$'force_install_noedit=2';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_noedit=2';' >> $INSTALL_FORCED_FILE
|
||||||
if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ]; then
|
if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ]; then
|
||||||
echo '$'force_install_type=\'mysqli\'';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_type=\'mysqli\'';' >> $INSTALL_FORCED_FILE
|
||||||
@@ -420,7 +386,6 @@ script:
|
|||||||
echo '$'force_install_mainforcehttps=false';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_mainforcehttps=false';' >> $INSTALL_FORCED_FILE
|
||||||
echo '$'force_install_main_data_root=\'$TRAVIS_BUILD_DIR/htdocs\'';' >> $INSTALL_FORCED_FILE
|
echo '$'force_install_main_data_root=\'$TRAVIS_BUILD_DIR/htdocs\'';' >> $INSTALL_FORCED_FILE
|
||||||
#cat $INSTALL_FORCED_FILE
|
#cat $INSTALL_FORCED_FILE
|
||||||
echo
|
|
||||||
|
|
||||||
- |
|
- |
|
||||||
echo "Upgrading Dolibarr"
|
echo "Upgrading Dolibarr"
|
||||||
@@ -483,24 +448,10 @@ script:
|
|||||||
php upgrade.php 16.0.0 17.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade16001700.log
|
php upgrade.php 16.0.0 17.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade16001700.log
|
||||||
php upgrade2.php 16.0.0 17.0.0 > $TRAVIS_BUILD_DIR/upgrade16001700-2.log
|
php upgrade2.php 16.0.0 17.0.0 > $TRAVIS_BUILD_DIR/upgrade16001700-2.log
|
||||||
php step5.php 16.0.0 17.0.0 > $TRAVIS_BUILD_DIR/upgrade16001700-3.log
|
php step5.php 16.0.0 17.0.0 > $TRAVIS_BUILD_DIR/upgrade16001700-3.log
|
||||||
php upgrade.php 17.0.0 18.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade17001800.log
|
|
||||||
php upgrade2.php 17.0.0 18.0.0 > $TRAVIS_BUILD_DIR/upgrade17001800-2.log
|
|
||||||
php step5.php 17.0.0 18.0.0 > $TRAVIS_BUILD_DIR/upgrade17001800-3.log
|
|
||||||
php upgrade.php 18.0.0 19.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade18001900.log || cat $TRAVIS_BUILD_DIR/upgrade18001900.log
|
|
||||||
php upgrade2.php 18.0.0 19.0.0 > $TRAVIS_BUILD_DIR/upgrade18001900-2.log || cat $TRAVIS_BUILD_DIR/upgrade18001900-2.log
|
|
||||||
php step5.php 18.0.0 19.0.0 > $TRAVIS_BUILD_DIR/upgrade18001900-3.log || cat $TRAVIS_BUILD_DIR/upgrade18001900-3.log
|
|
||||||
php upgrade.php 19.0.0 20.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade19002000.log || cat $TRAVIS_BUILD_DIR/upgrade19002000.log
|
|
||||||
php upgrade2.php 19.0.0 20.0.0 > $TRAVIS_BUILD_DIR/upgrade19002000-2.log || cat $TRAVIS_BUILD_DIR/upgrade19002000-2.log
|
|
||||||
php step5.php 19.0.0 20.0.0 > $TRAVIS_BUILD_DIR/upgrade19002000-3.log || cat $TRAVIS_BUILD_DIR/upgrade19002000-3.log
|
|
||||||
set +e
|
|
||||||
echo
|
|
||||||
|
|
||||||
- |
|
#show table content and 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'
|
#echo '\d llx_adherent' | psql 'postgresql://postgres:postgres@127.0.0.1:5432/travis'
|
||||||
cat $TRAVIS_BUILD_DIR/upgrade18001900.log
|
#cat $TRAVIS_BUILD_DIR/upgrade500600.log
|
||||||
cat $TRAVIS_BUILD_DIR/upgrade19002000.log
|
|
||||||
echo
|
|
||||||
|
|
||||||
- |
|
- |
|
||||||
echo Result of migration scripts
|
echo Result of migration scripts
|
||||||
@@ -517,14 +468,12 @@ script:
|
|||||||
php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_WEBSITE,MAIN_MODULE_TICKET,MAIN_MODULE_ACCOUNTING,MAIN_MODULE_MRP >> $TRAVIS_BUILD_DIR/enablemodule.log
|
php upgrade2.php 0.0.0 0.0.0 MAIN_MODULE_WEBSITE,MAIN_MODULE_TICKET,MAIN_MODULE_ACCOUNTING,MAIN_MODULE_MRP >> $TRAVIS_BUILD_DIR/enablemodule.log
|
||||||
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_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_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
|
|
||||||
echo $?
|
echo $?
|
||||||
cd -
|
cd -
|
||||||
set +e
|
set +e
|
||||||
echo
|
echo
|
||||||
#cat /tmp/dolibarr_install.log
|
#cat /tmp/dolibarr_install.log
|
||||||
cat $TRAVIS_BUILD_DIR/enablemodule.log
|
cat $TRAVIS_BUILD_DIR/enablemodule.log
|
||||||
echo
|
|
||||||
|
|
||||||
- |
|
- |
|
||||||
echo "Unit testing"
|
echo "Unit testing"
|
||||||
@@ -534,7 +483,6 @@ script:
|
|||||||
phpunitresult=$?
|
phpunitresult=$?
|
||||||
echo "Phpunit return code = $phpunitresult"
|
echo "Phpunit return code = $phpunitresult"
|
||||||
set +e
|
set +e
|
||||||
echo
|
|
||||||
|
|
||||||
after_script:
|
after_script:
|
||||||
- |
|
- |
|
||||||
@@ -557,18 +505,18 @@ after_failure:
|
|||||||
# Show upgrade log files
|
# Show upgrade log files
|
||||||
#for ficlog in `ls $TRAVIS_BUILD_DIR/*.log`
|
#for ficlog in `ls $TRAVIS_BUILD_DIR/*.log`
|
||||||
#do
|
#do
|
||||||
#echo "Debugging information for file $ficlog"
|
#echo "Debugging informations for file $ficlog"
|
||||||
#cat $ficlog
|
#cat $ficlog
|
||||||
#done
|
#done
|
||||||
# Show Apache log file
|
# Show Apache log file
|
||||||
echo "Debugging information for file apache error.log"
|
echo "Debugging informations for file apache error.log"
|
||||||
sudo tail -n 200 /var/log/apache2/travis_error_log
|
sudo tail -n 200 /var/log/apache2/travis_error_log
|
||||||
if [ "$DEBUG" = true ]; then
|
if [ "$DEBUG" = true ]; then
|
||||||
# Dolibarr log file
|
# Dolibarr log file
|
||||||
echo "Debugging information for file dolibarr.log (latest 50 lines)"
|
echo "Debugging informations for file dolibarr.log (latest 50 lines)"
|
||||||
tail -n 200 $TRAVIS_BUILD_DIR/documents/dolibarr.log
|
tail -n 200 $TRAVIS_BUILD_DIR/documents/dolibarr.log
|
||||||
# Database log file
|
# Database log file
|
||||||
echo "Debugging information for file mysql error.log"
|
echo "Debugging informations for file mysql error.log"
|
||||||
sudo tail -n 200 /var/log/mysql/error.log
|
sudo tail -n 200 /var/log/mysql/error.log
|
||||||
# TODO: PostgreSQL log file
|
# TODO: PostgreSQL log file
|
||||||
echo
|
echo
|
||||||
|
|||||||
12
.tx/config
12
.tx/config
@@ -200,6 +200,12 @@ source_file = htdocs/langs/en_US/ldap.lang
|
|||||||
source_lang = en_US
|
source_lang = en_US
|
||||||
type = MOZILLAPROPERTIES
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
|
[o:dolibarr-association:p:dolibarr:r:link]
|
||||||
|
file_filter = htdocs/langs/<lang>/link.lang
|
||||||
|
source_file = htdocs/langs/en_US/link.lang
|
||||||
|
source_lang = en_US
|
||||||
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
[o:dolibarr-association:p:dolibarr:r:loan]
|
[o:dolibarr-association:p:dolibarr:r:loan]
|
||||||
file_filter = htdocs/langs/<lang>/loan.lang
|
file_filter = htdocs/langs/<lang>/loan.lang
|
||||||
source_file = htdocs/langs/en_US/loan.lang
|
source_file = htdocs/langs/en_US/loan.lang
|
||||||
@@ -428,3 +434,9 @@ source_file = htdocs/langs/en_US/workflow.lang
|
|||||||
source_lang = en_US
|
source_lang = en_US
|
||||||
type = MOZILLAPROPERTIES
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
|
[o:dolibarr-association:p:dolibarr:r:zapier]
|
||||||
|
file_filter = htdocs/langs/<lang>/zapier.lang
|
||||||
|
source_file = htdocs/langs/en_US/zapier.lang
|
||||||
|
source_lang = en_US
|
||||||
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
|
|||||||
34
COPYRIGHT
34
COPYRIGHT
@@ -23,40 +23,35 @@ Licence of dependencies of third-party components used by Dolibarr (all compatib
|
|||||||
Component Version License GPL Compatible Usage
|
Component Version License GPL Compatible Usage
|
||||||
-------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------
|
||||||
PHP libraries:
|
PHP libraries:
|
||||||
EvalMath 1.0 BSD Yes Safe math expressions evaluation. Used by dynamic price only. TODO Replace with dol_eval ?
|
EvalMath 1.0 BSD Yes Safe math expressions evaluation
|
||||||
Escpos-php 3.0 MIT License Yes Thermal receipt printer library, for use with ESC/POS compatible printers
|
Escpos-php 2.2 MIT License Yes Thermal receipt printer library, for use with ESC/POS compatible printers
|
||||||
GeoIP2 0.2.0 Apache License 2.0 Yes Lib to make geoip convert
|
GeoIP2 0.2.0 Apache License 2.0 Yes Lib to make geoip convert
|
||||||
GeoPHP 1.2 Modified BSD License Yes Lib to make geo convert
|
Mobiledetect 2.8.39 MIT License Yes Detect mobile devices browsers
|
||||||
MathPHP 2.8.1 MIT License Yes Modern math library for PHP (only few files)
|
NuSoap 0.9.5 LGPL 2.1+ Yes Library to develop SOAP Web services (not into rpm and deb package)
|
||||||
Mobiledetect 2.8.41 MIT License Yes Detect mobile devices browsers
|
|
||||||
NuSoap 0.9.16 LGPL 2.1+ Yes Library to develop SOAP Web services. From https://github.com/f00b4r/nusoap/tree/v0.9.16
|
|
||||||
PEAR Mail_MIME 1.8.9 BSD Yes NuSoap dependency
|
PEAR Mail_MIME 1.8.9 BSD Yes NuSoap dependency
|
||||||
ParseDown 1.7.4 MIT License Yes Markdown parser
|
ParseDown 1.6 MIT License Yes Markdown parser
|
||||||
PCLZip 2.8.4 LGPL-3+ Yes Library to zip/unzip files
|
PCLZip 2.8.4 LGPL-3+ Yes Library to zip/unzip files
|
||||||
PHPDebugBar 1.18.2 MIT License Yes Used only by the module "debugbar" for developers
|
PHPDebugBar 1.15.1 MIT License Yes Used only by the module "debugbar" for developers
|
||||||
PHPSpreadSheet 1.12.0 LGPL-2.1+ Yes Read/Write XLS files, read ODS files
|
|
||||||
PHP-Iban 4.1.1 LGPL-3+ Yes Parse and validate IBAN (and IIBAN) bank account information in PHP
|
|
||||||
PHP-Imap 2.7.2 MIT License Yes Library to use IMAP with OAuth
|
PHP-Imap 2.7.2 MIT License Yes Library to use IMAP with OAuth
|
||||||
|
PHPSpreadSheet 1.8.2 LGPL-2.1+ Yes Read/Write XLS files, read ODS files
|
||||||
|
php-iban 4.1.1 LGPL-3+ Yes Parse and validate IBAN (and IIBAN) bank account information in PHP
|
||||||
PHPoAuthLib 0.8.2 MIT License Yes Library to provide oauth1 and oauth2 to different service
|
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
|
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/Logs 1.0 MIT License Yes Library for logs (used by DebugBar)
|
||||||
PSR/simple-cache ? MIT License Yes Library for cache (used by PHPSpreadSheet)
|
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)
|
Restler 3.1.1 LGPL-3+ Yes Library to develop REST Web services (+ swagger-ui js lib into dir explorer)
|
||||||
Sabre 4.6.0 BSD Yes DAV support
|
Sabre 3.2.2 BSD Yes DAV support
|
||||||
Swift Mailer 5.4.2-DEV MIT License Yes Comprehensive mailing tools for PHP
|
Swift Mailer 5.4.2-DEV MIT License Yes Comprehensive mailing tools for PHP
|
||||||
Symfony/var-dumper ??? MIT License Yes Library to make var dump (used by DebugBar)
|
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
|
Stripe 7.67.0 MIT Licence Yes Library for Stripe module
|
||||||
TCPDF 6.3.2 LGPL-3+ Yes PDF generation
|
TCPDF 6.3.2 LGPL-3+ Yes PDF generation
|
||||||
TCPDI 1.0.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:
|
JS libraries:
|
||||||
Ace 1.4.14 BSD Yes JS library to get code syntaxique coloration in a textarea.
|
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
|
ChartJS 3.7.1 MIT License Yes JS library for graph
|
||||||
CKEditor 4.22.1 LGPL-2.1+ Yes Editor WYSIWYG
|
CKEditor 4.18 LGPL-2.1+ Yes Editor WYSIWYG
|
||||||
jQuery 3.6.4 MIT License Yes JS library
|
jQuery 3.6.0 MIT License Yes JS library
|
||||||
jQuery UI 1.13.2 GPL and MIT License Yes JS library plugin UI
|
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 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 blockUI 2.70.0 GPL and MIT License Yes JS library plugin blockUI (to use ajax popups)
|
||||||
@@ -69,7 +64,8 @@ jQuery jqueryFileTree 1.0.1 GPL and MIT License Yes
|
|||||||
jQuery jquerytreeview 1.4.1 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 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
|
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)
|
jsGanttImproved 2.7.3 BSD License Yes JS library (to build Gantt reports)
|
||||||
|
JsTimezoneDetect 1.0.6 MIT License Yes JS library to detect user timezone
|
||||||
SwaggerUI 2.2.10 GPL-2+ Yes JS library to offer the REST API explorer
|
SwaggerUI 2.2.10 GPL-2+ Yes JS library to offer the REST API explorer
|
||||||
|
|
||||||
Image libraries:
|
Image libraries:
|
||||||
@@ -79,7 +75,7 @@ Font libraries:
|
|||||||
Fontawesome 5.13 Font Awesome Free Licence Yes
|
Fontawesome 5.13 Font Awesome Free Licence Yes
|
||||||
|
|
||||||
|
|
||||||
For more licenses compatibility information: https://www.gnu.org/licenses/licenses.en.html
|
For more licenses compatibility informations: https://www.gnu.org/licenses/licenses.en.html
|
||||||
|
|
||||||
|
|
||||||
Authors
|
Authors
|
||||||
|
|||||||
28
README-FR.md
28
README-FR.md
@@ -1,9 +1,7 @@
|
|||||||
# DOLIBARR ERP & CRM
|
# DOLIBARR ERP & CRM
|
||||||
|
|
||||||

|

|
||||||
[](https://php.net/)
|

|
||||||
[](https://github.com/Dolibarr/dolibarr)
|
|
||||||
[](https://bestpractices.coreinfrastructure.org/projects/5521)
|
|
||||||
|
|
||||||
Dolibarr ERP & CRM est un logiciel moderne pour gérer votre activité (société, association, auto-entrepreneurs, artisans).
|
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, ...).
|
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, ...).
|
||||||
@@ -72,7 +70,7 @@ Note: *Le processus de migration peut être lancé manuellement et plusieurs foi
|
|||||||
|
|
||||||
## CE QUI EST NOUVEAU
|
## CE QUI EST NOUVEAU
|
||||||
|
|
||||||
Voir le fichier [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog).
|
See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog) file.
|
||||||
|
|
||||||
## CE QUE DOLIBARR PEUT FAIRE
|
## CE QUE DOLIBARR PEUT FAIRE
|
||||||
|
|
||||||
@@ -90,11 +88,11 @@ Voir le fichier [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/Ch
|
|||||||
- Gestion de contrats de services
|
- Gestion de contrats de services
|
||||||
- Gestion de stock et inventaires
|
- Gestion de stock et inventaires
|
||||||
- Gestion des expéditions
|
- Gestion des expéditions
|
||||||
- Gestion des demandes de congés
|
- Gestion des demandes de congès
|
||||||
- Gestion des notes de frais
|
- Gestion des notes de frais
|
||||||
- Gestion de recrutement
|
- Gestion de recrutement
|
||||||
- GED (Gestion Electronique de Documents)
|
- GED (Gestion Electronique de Documents)
|
||||||
- E-Mailings de masse
|
- EMailings de masse
|
||||||
- Réalisation de sondages
|
- Réalisation de sondages
|
||||||
- Gestion d'adhérents
|
- Gestion d'adhérents
|
||||||
- Point de vente/Caisse enregistreuse
|
- Point de vente/Caisse enregistreuse
|
||||||
@@ -109,17 +107,17 @@ Voir le fichier [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/Ch
|
|||||||
- Support des codes barres
|
- Support des codes barres
|
||||||
- Calcul des marges
|
- Calcul des marges
|
||||||
- Connectivité LDAP
|
- Connectivité LDAP
|
||||||
- Intégration de ClickToDial
|
- Intégratn de ClickToDial
|
||||||
- Intégration RSS
|
- Intégration RSS
|
||||||
- Intégration Skype
|
- Intégation Skype
|
||||||
- Intégration de système de paiements (PayPal, Stripe, Paybox...)
|
- Intégration de système de paiements (Paypal, Stripe, Paybox...)
|
||||||
- …
|
- …
|
||||||
|
|
||||||
### Divers
|
### Divers
|
||||||
|
|
||||||
- Multi-langue.
|
- Multi-langue.
|
||||||
- Multi-utilisateurs avec différents niveaux de permissions par module.
|
- Multi-utilisateurs avec différents niveaux de permissions par module.
|
||||||
- Multidevise.
|
- Multi-devise.
|
||||||
- Peux être multi-société par ajout du module externe multi-société.
|
- Peux être multi-société par ajout du module externe multi-société.
|
||||||
- Plusieurs thèmes visuels.
|
- Plusieurs thèmes visuels.
|
||||||
- Application simple à utiliser.
|
- Application simple à utiliser.
|
||||||
@@ -129,7 +127,7 @@ Voir le fichier [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/Ch
|
|||||||
- Génération PDF et ODT des éléments (factures, propositions commerciales, commandes, bons expéditions, etc...)
|
- 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).
|
- 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:
|
- Support natif de nombreuses fonctions spécifiques aux pays comme:
|
||||||
- La taxe espagnole TE et ISPF
|
- La tax espagnole TE et ISPF
|
||||||
- Gestion de la TVA NPR (non perçue récupérable - pour les utilisateurs français des DOM-TOM)
|
- 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 loi française Finance 2016 et logiciels de caisse
|
||||||
- La double taxe canadienne
|
- La double taxe canadienne
|
||||||
@@ -141,7 +139,7 @@ Voir le fichier [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/Ch
|
|||||||
|
|
||||||
### Extension
|
### 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).
|
Dolibarr peut aussi être étendu à volonté avec l'ajout de module/applications externes développées par des développeus tiers, disponible sur [DoliStore](https://www.dolistore.com).
|
||||||
|
|
||||||
## CE QUE DOLIBARR NE PEUT PAS (ENCORE) FAIRE
|
## CE QUE DOLIBARR NE PEUT PAS (ENCORE) FAIRE
|
||||||
|
|
||||||
@@ -170,15 +168,15 @@ Voir le fichier [COPYRIGHT](https://github.com/Dolibarr/dolibarr/blob/develop/CO
|
|||||||
|
|
||||||
## ACTUALITES ET RESEAUX SOCIAUX
|
## ACTUALITES ET RESEAUX SOCIAUX
|
||||||
|
|
||||||
Suivez le projet Dolibarr sur les réseaux francophones
|
Suivez le projet Dolibarr project sur les réseaux francophones
|
||||||
|
|
||||||
- [Facebook](https://www.facebook.com/dolibarr.fr)
|
- [Facebook](https://www.facebook.com/dolibarr.fr)
|
||||||
- [X](https://www.twitter.com/dolibarr_france)
|
- [Twitter](https://www.twitter.com/dolibarr_france)
|
||||||
|
|
||||||
ou sur les réseaux anglophones
|
ou sur les réseaux anglophones
|
||||||
|
|
||||||
- [Facebook](https://www.facebook.com/dolibarr)
|
- [Facebook](https://www.facebook.com/dolibarr)
|
||||||
- [X](https://www.twitter.com/dolibarr)
|
- [Twitter](https://www.twitter.com/dolibarr)
|
||||||
- [LinkedIn](https://www.linkedin.com/company/association-dolibarr)
|
- [LinkedIn](https://www.linkedin.com/company/association-dolibarr)
|
||||||
- [YouTube](https://www.youtube.com/user/DolibarrERPCRM)
|
- [YouTube](https://www.youtube.com/user/DolibarrERPCRM)
|
||||||
- [GitHub](https://github.com/Dolibarr/dolibarr)
|
- [GitHub](https://github.com/Dolibarr/dolibarr)
|
||||||
|
|||||||
92
README.md
92
README.md
@@ -1,17 +1,18 @@
|
|||||||
# DOLIBARR ERP & CRM
|
# DOLIBARR ERP & CRM
|
||||||
|
|
||||||

|

|
||||||
[](https://php.net/)
|

|
||||||
|
[](https://php.net/)
|
||||||
[](https://github.com/Dolibarr/dolibarr)
|
[](https://github.com/Dolibarr/dolibarr)
|
||||||
[](https://bestpractices.coreinfrastructure.org/projects/5521)
|
[](https://bestpractices.coreinfrastructure.org/projects/5521)
|
||||||
|
|
||||||
Dolibarr ERP & CRM is a modern software package that helps manage your organization's activities (contacts, suppliers, invoices, orders, stocks, agenda…).
|
Dolibarr ERP & CRM is a modern software package that helps manage your organization's activity (contacts, suppliers, invoices, orders, stocks, agenda…).
|
||||||
|
|
||||||
It's an Open-Source Software suite (written in PHP with JavaScript enhancements) designed for small, medium or large companies, foundations and freelancers.
|
It's an Open Source Software suite (written in PHP with optional JavaScript enhancements) designed for small, medium or large companies, foundations and freelancers.
|
||||||
|
|
||||||
You can freely use, study, modify or distribute it according to its license.
|
You can freely use, study, modify or distribute it according to its licence.
|
||||||
|
|
||||||
You can use it as a standalone application or as a web application to access it from the Internet or from a LAN.
|
You can use it as a standalone application or as a web application to access it from the Internet or a LAN.
|
||||||
|
|
||||||
Dolibarr has a large community ready to help you, free forums and [preferred partners ready to offer commercial support should you need it](https://partners.dolibarr.org)
|
Dolibarr has a large community ready to help you, free forums and [preferred partners ready to offer commercial support should you need it](https://partners.dolibarr.org)
|
||||||
|
|
||||||
@@ -19,7 +20,7 @@ Dolibarr has a large community ready to help you, free forums and [preferred par
|
|||||||
|
|
||||||
## LICENSE
|
## LICENSE
|
||||||
|
|
||||||
Dolibarr is released under the terms of the GNU General Public License as published by the Free Software Foundation; either Version 3 of the License, or (at your option) any later version (GPL-3+).
|
Dolibarr is released under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version (GPL-3+).
|
||||||
|
|
||||||
See the [COPYING](https://github.com/Dolibarr/dolibarr/blob/develop/COPYING) file for a full copy of the license.
|
See the [COPYING](https://github.com/Dolibarr/dolibarr/blob/develop/COPYING) file for a full copy of the license.
|
||||||
|
|
||||||
@@ -29,34 +30,35 @@ Other licenses apply for some included dependencies. See [COPYRIGHT](https://git
|
|||||||
|
|
||||||
### Simple setup
|
### Simple setup
|
||||||
|
|
||||||
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:
|
If you have low technical skills and you're looking to install Dolibarr ERP/CRM in 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))
|
- [DoliWamp for Windows](https://wiki.dolibarr.org/index.php/Dolibarr_for_Windows_(DoliWamp))
|
||||||
- [DoliDeb for Debian](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
|
- DoliRpm for Redhat, Fedora, OpenSuse, Mandriva or Mageia
|
||||||
|
|
||||||
Releases can be downloaded from [official website](https://www.dolibarr.org/).
|
Releases can be downloaded from [official website](https://www.dolibarr.org/).
|
||||||
|
|
||||||
### Recommended setup
|
### Advanced setup
|
||||||
|
|
||||||
You can use any web server supporting PHP (Apache, Nginx, ...) and a supported database (MariaDB, MySQL or PostgreSQL) to install the standard version.
|
You can use a web server and a supported database (MariaDB, MySQL or PostgreSQL) to install the standard version.
|
||||||
|
|
||||||
|
On GNU/Linux, first check if your distribution has already packaged Dolibarr.
|
||||||
|
|
||||||
#### Generic install steps
|
#### Generic install steps
|
||||||
|
|
||||||
- Verify that your installed PHP version is supported [see PHP support](https://wiki.dolibarr.org/index.php/Releases).
|
- Check that your installed PHP version is supported [see PHP support](https://wiki.dolibarr.org/index.php/Releases).
|
||||||
|
|
||||||
- Uncompress the downloaded .zip archive to copy the `dolibarr/htdocs` directory and all its files inside your web server root or get the files directly from GitHub (recommended if you know git as it makes it easier if you want to upgrade later):
|
- Uncompress the downloaded .zip archive to copy the "dolibarr/htdocs" directory and all its files inside your web server root or get the files directly from GitHub (recommanded if you know git as it makes it easier if you want to upgrade later):
|
||||||
|
|
||||||
`git clone https://github.com/dolibarr/dolibarr -b x.y` (where x.y is the main version like 9.0, 19.0, ...)
|
`git clone https://github.com/dolibarr/dolibarr -b x.y` (where x.y is main version like 3.6, 9.0, ...)
|
||||||
|
|
||||||
- Set up your web server to use `dolibarr/htdocs` as root if your web server does not already define a directory to point to.
|
- Set up your web server to use "*dolibarr/htdocs*" as root if your web server does not have an already defined directory to point to.
|
||||||
|
|
||||||
- Create an empty `htdocs/conf/conf.php` file and set *write* permissions for your web server user (*write* permission will be removed once install is finished)
|
- Create an empty `htdocs/conf/conf.php` file and set *write* permissions for your web server user (*write* permission will be removed once install is finished)
|
||||||
|
|
||||||
- From your browser, go to the dolibarr "install/" page
|
- From your browser, go to the dolibarr "install/" page
|
||||||
|
|
||||||
The URL will depend on how your web configuration directs to your dolibarr installation. It may look like:
|
The URL will depends on how you web setup was setup to point to your dolibarr installation. It may looks like:
|
||||||
|
|
||||||
`http://localhost/dolibarr/htdocs/install/`
|
`http://localhost/dolibarr/htdocs/install/`
|
||||||
|
|
||||||
@@ -70,20 +72,18 @@ You can use any web server supporting PHP (Apache, Nginx, ...) and a supported d
|
|||||||
|
|
||||||
- Follow the installer instructions
|
- Follow the installer instructions
|
||||||
|
|
||||||
### SaaS/Cloud Setup
|
### Saas/Cloud setup
|
||||||
|
|
||||||
If you lack the time to install it yourself, consider exploring commercial 'ready-to-use' Cloud offerings (refer to https://saas.dolibarr.org). Keep in mind that this third option comes with associated costs.
|
If you don't have time to install it yourself, you can try some commercial 'ready to use' Cloud offers (See [https://saas.dolibarr.org](https://saas.dolibarr.org)). However, this third solution is not free.
|
||||||
|
|
||||||
## UPGRADING
|
## UPGRADING
|
||||||
|
|
||||||
Dolibarr supports upgrading, usually without the need for any (commercial) support (depending on if you use any commercial extensions). It supports upgrading all the way from any version after 2.8 without breakage. This is unique in the ERP ecosystem and a benefit our users highly appreciate!
|
Dolibarr supports upgrading, usually without the need for any (commercial) support (depending on if you use any commercial extensions). It supports upgrading all the way from any version after 2.8 without breakage. This is unique in the ERP ecosystem and a benefit our users highly appreciate!
|
||||||
|
|
||||||
Follow these step-by-step instructions to seamlessly upgrade Dolibarr to the latest version:
|
|
||||||
|
|
||||||
- At first make a backup of your Dolibarr files & then [see](https://wiki.dolibarr.org/index.php/Installation_-_Upgrade#Upgrade_Dolibarr)
|
- At first make a backup of your Dolibarr files & then [see](https://wiki.dolibarr.org/index.php/Installation_-_Upgrade#Upgrade_Dolibarr)
|
||||||
- Verify that your installed PHP version is supported by the new version [see PHP support](https://wiki.dolibarr.org/index.php/Releases).
|
- Check that your installed PHP version is supported by the new version [see PHP support](https://wiki.dolibarr.org/index.php/Releases).
|
||||||
- Overwrite all old files from the 'dolibarr' directory with files provided in the new version's package.
|
- Overwrite all old files from 'dolibarr' directory with files provided into the new version's package.
|
||||||
- At your next access, Dolibarr will redirect you to the "install/" page to follow the upgrade process.
|
- At first next access, Dolibarr will redirect you to the "install/" page to follow the upgrade process.
|
||||||
If an `install.lock` file exists to lock any other upgrade process, the application will ask you to remove the file manually (you should find the `install.lock` file in the directory used to store generated and uploaded documents, in most cases, it is the directory called "*documents*").
|
If an `install.lock` file exists to lock any other upgrade process, the application will ask you to remove the file manually (you should find the `install.lock` file in the directory used to store generated and uploaded documents, in most cases, it is the directory called "*documents*").
|
||||||
|
|
||||||
## WHAT'S NEW
|
## WHAT'S NEW
|
||||||
@@ -99,13 +99,13 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
|
|||||||
|
|
||||||
Product Management
|
Product Management
|
||||||
|
|
||||||
- Products and/or Services catalogue
|
- Products and/or Services catalog
|
||||||
- Stock / Warehouse management + Inventory
|
- Stock / Warehouse management + Inventory
|
||||||
- Barcodes
|
- Barcodes
|
||||||
- Batches / Lots / Serials
|
- Batches / Lots / Serials
|
||||||
- Product Variants
|
- Product Variants
|
||||||
- Bill of Materials (BOM)
|
- Bill of Materials (BOM)
|
||||||
- Manufacturing Orders (MO)
|
- Manufacturing Orders
|
||||||
|
|
||||||
Customer/Sales Management
|
Customer/Sales Management
|
||||||
|
|
||||||
@@ -115,8 +115,7 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
|
|||||||
- Customer Orders management
|
- Customer Orders management
|
||||||
- Contracts/Subscription management
|
- Contracts/Subscription management
|
||||||
- Interventions management
|
- Interventions management
|
||||||
- Ticket System (+ Knowledge management)
|
- Ticket System
|
||||||
- Partnership management
|
|
||||||
- Shipping management
|
- Shipping management
|
||||||
- Customer Invoices/Credit notes and payment management
|
- Customer Invoices/Credit notes and payment management
|
||||||
- Point of Sale (POS)
|
- Point of Sale (POS)
|
||||||
@@ -124,10 +123,10 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
|
|||||||
Supplier/Purchase Management
|
Supplier/Purchase Management
|
||||||
|
|
||||||
- Suppliers/Vendors + Contacts
|
- Suppliers/Vendors + Contacts
|
||||||
- Supplier (pricing) requests
|
- Supplier (price) requests
|
||||||
- Purchase Orders management
|
- Purchase Orders management
|
||||||
- Delivery/Reception
|
- Delivery/Receiption
|
||||||
- Supplier Invoices/Credit notes and payment management
|
- Supplier Invoices/credit notes and payment management
|
||||||
- INCOTERMS
|
- INCOTERMS
|
||||||
|
|
||||||
Finance/Accounting
|
Finance/Accounting
|
||||||
@@ -143,18 +142,16 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
|
|||||||
|
|
||||||
Collaboration
|
Collaboration
|
||||||
|
|
||||||
- Shared calendar/agenda (with `ical` and `vcal` import/export for third-party tools integration)
|
- Shared calendar/agenda (with ical and vcal import/export for third party tools integration)
|
||||||
- Projects & Tasks management
|
- Projects & Tasks management
|
||||||
- Event organization
|
|
||||||
- Ticket System
|
- Ticket System
|
||||||
- Surveys
|
- Surveys
|
||||||
|
|
||||||
HR - Human Resources Management
|
HR
|
||||||
|
|
||||||
- Employee leave management
|
- Employee's leaves management
|
||||||
- Expense reports
|
- Expense reports
|
||||||
- Recruitment management
|
- Recruitment management
|
||||||
- Employee/staff management
|
|
||||||
- Timesheets
|
- Timesheets
|
||||||
|
|
||||||
### Other application/modules
|
### Other application/modules
|
||||||
@@ -172,29 +169,28 @@ See the [ChangeLog](https://github.com/Dolibarr/dolibarr/blob/develop/ChangeLog)
|
|||||||
- Payment platforms integration (PayPal, Stripe, Paybox...)
|
- Payment platforms integration (PayPal, Stripe, Paybox...)
|
||||||
- Email-Collector
|
- Email-Collector
|
||||||
|
|
||||||
(around 100 modules available by default, 1000+ addons at the official marketplace Dolistore.com)
|
(around 100 modules available by default, 1000+ on the addon market place)
|
||||||
|
|
||||||
### Other general features
|
### Other general features
|
||||||
|
|
||||||
- Multi-Language Support (Localization in most major languages)
|
- Multi-Language Support (Localization in most major languages)
|
||||||
- Multi-users and groups with finely-grained rights
|
- Multi-Users and groups with finely grained rights
|
||||||
- Multi-Currency
|
- Multi-Currency
|
||||||
- Multi-Company (by adding an external module)
|
- Multi-Company (by adding of an external module)
|
||||||
- Very user-friendly and easy to use
|
- Very user friendly and easy to use
|
||||||
- Customizable dashboards
|
- Customizable dashboards
|
||||||
- Highly customizable: enable only the modules you need, add user personalized fields, choose your skin, several menu managers (can be used by internal users as a back-office with a particular menu, or by external users as a front-office with another one)
|
- Highly customizable: enable only the modules you need, add user personalized fields, choose your skin, several menu managers (can be used by internal users as a back-office with a particular menu, or by external users as a front-office with another one)
|
||||||
- APIs (REST, SOAP)
|
- APIs (REST, SOAP)
|
||||||
- Code that is easy to understand, maintain and develop (PHP with no heavy framework; trigger and hook architecture)
|
- Code that is easy to understand, maintain and develop (PHP with no heavy framework; trigger and hook architecture)
|
||||||
- Support a lot of country-specific features:
|
- Support a lot of country specific features:
|
||||||
- Spanish Tax RE and IRPF
|
- Spanish Tax RE and ISPF
|
||||||
- French NPR VAT rate (VAT called "Non Perçue Récupérable" for DOM-TOM)
|
- French NPR VAT rate (VAT called "Non Perçue Récupérable" for DOM-TOM)
|
||||||
- Canadian double taxes (federal/province) and other countries using cumulative VAT
|
- Canadian double taxes (federal/province) and other countries using cumulative VAT
|
||||||
- Tunisian tax stamp
|
- Tunisian tax stamp
|
||||||
- Argentina invoice numbering using A,B,C...
|
- Argentina invoice numbering using A,B,C...
|
||||||
- Greece fetch customer vat details from AADE, all invoice types, MyData(external free module)
|
|
||||||
- ZATCA e-invoicing QR-Code
|
- ZATCA e-invoicing QR-Code
|
||||||
- Compatible with [European directives](https://europa.eu/legislation_summaries/taxation/l31057_en.htm) (2006/112/CE ... 2010/45/UE)
|
- Compatible with [European directives](https://europa.eu/legislation_summaries/taxation/l31057_en.htm) (2006/112/CE ... 2010/45/UE)
|
||||||
- Compatible with data privacy rules (Europe's GDPR, ...)
|
- Compatible with data privacy rules (europe GDPR, ...)
|
||||||
- ...
|
- ...
|
||||||
- Flexible PDF & ODT generation for invoices, proposals, orders...
|
- Flexible PDF & ODT generation for invoices, proposals, orders...
|
||||||
- ...
|
- ...
|
||||||
@@ -209,7 +205,7 @@ See exact requirements on the [Wiki](https://wiki.dolibarr.org/index.php/Prerequ
|
|||||||
|
|
||||||
### Extending
|
### Extending
|
||||||
|
|
||||||
Dolibarr can be extended with a lot of other external applications or modules from third-party developers available at the [DoliStore](https://www.dolistore.com).
|
Dolibarr can be extended with a lot of other external application or modules from third party developers available at the [DoliStore](https://www.dolistore.com).
|
||||||
|
|
||||||
## WHAT DOLIBARR CAN'T DO YET
|
## WHAT DOLIBARR CAN'T DO YET
|
||||||
|
|
||||||
@@ -217,19 +213,19 @@ These are features that Dolibarr does **not** yet fully support:
|
|||||||
|
|
||||||
- Tasks dependencies in projects
|
- Tasks dependencies in projects
|
||||||
- Payroll module
|
- Payroll module
|
||||||
- Native embedded Webmail, but you can send email to contacts in Dolibarr with e.g. offers, invoices, etc.
|
- No native embedded Webmail, but you can send email to contacts in Dolibarr with e.g. offers, invoices, etc.
|
||||||
- Dolibarr can't do coffee (yet)
|
- Dolibarr can't do coffee (yet)
|
||||||
|
|
||||||
## DOCUMENTATION
|
## DOCUMENTATION
|
||||||
|
|
||||||
Administrator, user, developer and translator's documentation are available along with other community resources in the [Wiki](https://wiki.dolibarr.org).
|
Administrator, user, developer and translator's documentations are available along with other community resources in the [Wiki](https://wiki.dolibarr.org).
|
||||||
|
|
||||||
## CONTRIBUTING
|
## CONTRIBUTING
|
||||||
|
|
||||||
This project exists thanks to all the people who contribute.
|
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)]
|
Please read the instructions how to contribute (report a bug/error, a feature request, send code ...) [[Contribute](https://github.com/Dolibarr/dolibarr/blob/develop/.github/CONTRIBUTING.md)]
|
||||||
|
|
||||||
A View on Contributors:
|
A view on Contributors:
|
||||||
|
|
||||||
[](https://github.com/Dolibarr/dolibarr/graphs/contributors)
|
[](https://github.com/Dolibarr/dolibarr/graphs/contributors)
|
||||||
|
|
||||||
@@ -244,7 +240,7 @@ See [COPYRIGHT](https://github.com/Dolibarr/dolibarr/blob/develop/COPYRIGHT) fil
|
|||||||
Follow Dolibarr project on:
|
Follow Dolibarr project on:
|
||||||
|
|
||||||
- [Facebook](https://www.facebook.com/dolibarr)
|
- [Facebook](https://www.facebook.com/dolibarr)
|
||||||
- [X](https://x.com/dolibarr)
|
- [Twitter](https://www.twitter.com/dolibarr)
|
||||||
- [LinkedIn](https://www.linkedin.com/company/association-dolibarr)
|
- [LinkedIn](https://www.linkedin.com/company/association-dolibarr)
|
||||||
- [Reddit](https://www.reddit.com/r/Dolibarr_ERP_CRM/)
|
- [Reddit](https://www.reddit.com/r/Dolibarr_ERP_CRM/)
|
||||||
- [YouTube](https://www.youtube.com/user/DolibarrERPCRM)
|
- [YouTube](https://www.youtube.com/user/DolibarrERPCRM)
|
||||||
|
|||||||
81
SECURITY.md
81
SECURITY.md
@@ -2,22 +2,17 @@
|
|||||||
|
|
||||||
This file contains some policies about the security reports on Dolibarr ERP CRM project, one of the most popular Open Source ERP and CRM in the world.
|
This file contains some policies about the security reports on Dolibarr ERP CRM project, one of the most popular Open Source ERP and CRM in the world.
|
||||||
|
|
||||||
|
|
||||||
## Supported Versions for security reports
|
## Supported Versions for security reports
|
||||||
|
|
||||||
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).
|
Security report are valid only on current stable version (see dolibarr.org web site to get current stable version) or on development version (branch "develop" on https://github.com/Dolibarr/dolibarr).
|
||||||
|
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
To report a vulnerability, for a private report, you can:
|
To report a vulnerability, for a private report, you can:
|
||||||
|
|
||||||
- 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)
|
- Send your report on [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 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 by email to security@dolibarr.org a 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
|
||||||
- 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
|
## Hunting vulnerabilities on Dolibarr
|
||||||
|
|
||||||
@@ -25,9 +20,9 @@ We believe that the future of software is online SaaS. This means software are m
|
|||||||
|
|
||||||
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.
|
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.
|
Any type of denial of service attacks is strictly forbidden, as well as any interference with network equipment and Dolibarr infrastructure.
|
||||||
|
|
||||||
We recommend to install Dolibarr ERP CRM on your own server (as most Open Source software, download and use is free: [https://www.dolibarr.org/download](https://www.dolibarr.org/download)) to get access on every side of application.
|
We recommand to install Dolibarr ERP CRM on your own server (as most Open Source software, download and use is free: [https://www.dolibarr.org/download](https://www.dolibarr.org/download)) to get access on every side of application.
|
||||||
|
|
||||||
### User Agent
|
### User Agent
|
||||||
|
|
||||||
@@ -35,8 +30,7 @@ If you try to find bug on Dolibarr, we recommend to append to your user-agent he
|
|||||||
|
|
||||||
### Account access
|
### Account access
|
||||||
|
|
||||||
You can install the web application yourself on your own platform/server so you get full access to application and sources. Download the zip of the files to put in your own web server virtual host from [https://www.dolibarr.org/download](https://www.dolibarr.org/download)
|
You can install the web application yourself on your own platform/server so you get full access to application and sources. Download the zip of the files to put into your own web server virtual host from [https://www.dolibarr.org/download](https://www.dolibarr.org/download)
|
||||||
|
|
||||||
|
|
||||||
## Eligibility and Responsible Disclosure
|
## Eligibility and Responsible Disclosure
|
||||||
|
|
||||||
@@ -44,44 +38,36 @@ We are happy to thank everyone who submits valid reports which help us improve t
|
|||||||
|
|
||||||
You must be the first reporter of the vulnerability (duplicate reports are closed).
|
You must be the first reporter of the vulnerability (duplicate reports are closed).
|
||||||
|
|
||||||
You must avoid tests that could cause degradation or interruption of our service (refrain from using automated tools, and limit yourself about requests per second), that's why we recommend to install software on your own platform.
|
You must avoid tests that could cause degradation or interruption of our service (refrain from using automated tools, and limit yourself about requests per second), that's why we recommand to install software on your own platform.
|
||||||
|
|
||||||
You must not leak, manipulate, or destroy any user data of third parties to find your vulnerability.
|
You must not leak, manipulate, or destroy any user data of third parties to find your vulnerability.
|
||||||
|
|
||||||
Reports are processed around once a month.
|
Reports are processed around once a month.
|
||||||
|
|
||||||
|
|
||||||
## Scope for qualified vulnerabilities
|
## Scope for qualified vulnerabilities
|
||||||
|
|
||||||
ONLY vulnerabilities discovered, when the following setup on test platform is used, are "valid":
|
ONLY vulnerabilities discovered, when the following setup on test platform is used, are "valid":
|
||||||
|
|
||||||
* The version to analyze must be the last version available in the "develop" branch. Reports on vulnerabilities already fixed (so already reported) in the develop branch will not be validated.
|
* $dolibarr_main_prod must be set to 1 into conf.php
|
||||||
* $dolibarr_main_prod must be set to 1 in conf.php
|
* $dolibarr_nocsrfcheck must be kept to the value 0 into conf.php (this is the default value)
|
||||||
* $dolibarr_nocsrfcheck must be kept to the value 0 in conf.php (this is the default value)
|
|
||||||
* $dolibarr_main_force_https must be set to something else than 0.
|
* $dolibarr_main_force_https must be set to something else than 0.
|
||||||
* Some constant must be set in the backoffice menu Home - Setup - Other
|
* The constant MAIN_SECURITY_CSRF_WITH_TOKEN must be set to 3 into backoffice menu Home - Setup - Other (this protection should be set to 3 soon by default)
|
||||||
- MAIN_SECURITY_CSRF_WITH_TOKEN must be set to 3
|
* ONLY security reports on modules provided by default and with the "stable" status are valid (troubles into "experimental", "developement" or external modules are not valid vulnerabilities).
|
||||||
- MAIN_RESTRICTHTML_ONLY_VALID_HTML = 1
|
|
||||||
- MAIN_RESTRICTHTML_ONLY_VALID_HTML_TIDY = 1
|
|
||||||
- MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES = 1
|
|
||||||
- MAIN_DISALLOW_URL_INTO_DESCRIPTIONS = 1 (only relative links are allowed in descriptions/notes), or 2 (no links are allowed in descriptions/notes)
|
|
||||||
CSRF attacks and HTML injections are accepted but double check this setup that is experimental setup that already fix a lot of case and soon enabled by default.
|
|
||||||
* ONLY security reports on modules provided by default and with the "stable" status are valid (troubles in "experimental", "development" or external modules are not valid vulnerabilities).
|
|
||||||
* The root of web server must link to htdocs and the documents directory must be outside of the web server root (this is the default when using the default installer but may differs with external installer).
|
* The root of web server must link to htdocs and the documents directory must be outside of the web server root (this is the default when using the default installer but may differs with external installer).
|
||||||
* The web server setup must be done so that only the documents directory is in write mode and directory listing is not allowed. The directory path htdocs/ must be read-only.
|
* The web server setup must be done so that only the documents directory is in write mode. The root directory called htdocs must be read-only.
|
||||||
|
* CSRF attacks are accepted but double check that you have set MAIN_SECURITY_CSRF_WITH_TOKEN to value 3.
|
||||||
* The modules DebugBar and ModuleBuilder must NOT be enabled. (by default, these modules are not enabled. They are developer tools)
|
* The modules DebugBar and ModuleBuilder must NOT be enabled. (by default, these modules are not enabled. They are developer tools)
|
||||||
* Fail2ban rules for rate limit on the login page, forgotten password page, API calls and all public pages (/public/*) must be installed as recommended in the section "About - Admin tools - Section Access limits and mitigation".
|
* Ability for a high level user to edit web site pages into the CMS by including HTML or Javascript is an expected feature. Vulnerabilities into the website module are validated only if HTML or Javascript injection can be done by a non allowed user.
|
||||||
|
* Fail2ban rules for rate limit on the login page,password forgotten page, api calls and all public pages (/public/*) must be installed as recommendend into the section "About - Admin tools - Section Access limits and mitigation".
|
||||||
Scope is the web application (backoffice) and the APIs.
|
|
||||||
|
|
||||||
|
Scope is the web application (back office) and the APIs.
|
||||||
|
|
||||||
## Examples of vulnerabilities that are Qualified for reporting.
|
## Examples of vulnerabilities that are Qualified for reporting.
|
||||||
|
|
||||||
* Remote code execution (RCE)
|
* Remote code execution (RCE)
|
||||||
* Local files access and manipulation (LFI, RFI, XXE, SSRF, XSPA)
|
* Local files access and manipulation (LFI, RFI, XXE, SSRF, XSPA)
|
||||||
* Code injections (JS, SQL, PHP). HTML are covered only for fields that are not description, notes or comments fields (where rich content is allowed on purpose).
|
* Code injections (JS, SQL, PHP). HTML are covered only for fields that are not description, notes or comments fields (where rich content is allowed on purpose).
|
||||||
* Cross-Site Scripting (XSS), except from setup page of module "External web site" (allowing any content here, editable by admin user only, is accepted on purpose) and except
|
* Cross-Site Scripting (XSS), except from setup page of module "External web site" (allowing any content here, editable by admin user only, is accepted on purpose) and except into module "Web site" when permission to edit website content is allowed (injecting any data in this case is allowed too).
|
||||||
in the module "Web site" when permission to edit website content is allowed (injecting any data in this case is allowed too).
|
|
||||||
* Cross-Site Requests Forgery (CSRF) with real security impact (when using GET URLs, CSRF are qualified only for creating, updating or deleting data from pages restricted to admin users)
|
* Cross-Site Requests Forgery (CSRF) with real security impact (when using GET URLs, CSRF are qualified only for creating, updating or deleting data from pages restricted to admin users)
|
||||||
* Open redirect
|
* Open redirect
|
||||||
* Broken authentication & session management
|
* Broken authentication & session management
|
||||||
@@ -89,27 +75,24 @@ Scope is the web application (backoffice) and the APIs.
|
|||||||
* Cross-Origin Resource Sharing (CORS) with real security impact
|
* Cross-Origin Resource Sharing (CORS) with real security impact
|
||||||
* Horizontal and vertical privilege escalation
|
* Horizontal and vertical privilege escalation
|
||||||
* "HTTP Host Header" XSS
|
* "HTTP Host Header" XSS
|
||||||
* Software version disclosure (for non-admin users only)
|
* Software version disclosure (for non admin users only)
|
||||||
* Stack traces or path disclosure (for non-admin users only)
|
* Stack traces or path disclosure (for non admin users only)
|
||||||
* Ability for a high-level user to edit web site pages in the CMS by including HTML or JavaScript is an expected feature. Vulnerabilities in the website module are validated only
|
|
||||||
if HTML or JavaScript injection can be done by a non-allowed user.
|
|
||||||
|
|
||||||
|
|
||||||
## Examples of vulnerabilities that are Non-qualified for reporting.
|
## Examples of vulnerabilities that are Non-qualified for reporting.
|
||||||
|
|
||||||
* Any vulnerabilities due to a configuration different than the one defined in chapter "Scope for qualified vulnerabilities".
|
|
||||||
* Directory Listing (this is a bad setup of the web server, not a problem into the application)
|
|
||||||
* "Self" XSS
|
* "Self" XSS
|
||||||
* Clickjacking/UI redressing
|
|
||||||
* Presence of autocomplete attribute on web forms
|
|
||||||
* Logout and other instances of low-severity Cross-Site Request Forgery
|
|
||||||
* Reports from automated web vulnerability scanners (Acunetix, Vega, etc.) that have not been validated
|
|
||||||
* Reports on features on modules flagged as "deprecated", "experimental" or "development" if the module needs to be enabled for that (this is not the case on production).
|
|
||||||
* 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 best practices
|
* SSL/TLS best practices
|
||||||
* Invalid or missing SPF (Sender Policy Framework) records (Incomplete or missing SPF/DKIM/DMARC)
|
* Denial of Service attacks
|
||||||
|
* Clickjacking/UI redressing
|
||||||
* Physical or social engineering attempts or issues that require physical access to a victim’s computer/device
|
* Physical or social engineering attempts or issues that require physical access to a victim’s computer/device
|
||||||
* 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
|
* Presence of autocomplete attribute on web forms
|
||||||
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).
|
* Vulnerabilities affecting outdated browsers or platforms, or vulnerabilities inside browsers themself.
|
||||||
|
* Logout and other instances of low-severity Cross-Site Request Forgery
|
||||||
|
* Missing security-related HTTP headers which do not lead directly to a vulnerability
|
||||||
|
* Reports from automated web vulnerability scanners (Acunetix, Vega, etc.) that have not been validated
|
||||||
|
* Invalid or missing SPF (Sender Policy Framework) records (Incomplete or missing SPF/DKIM/DMARC)
|
||||||
|
* Reports on features flagged as "experimental" or "development"
|
||||||
|
* Software version or private IP disclosure when logged-in user is admin
|
||||||
|
* Stack traces or path disclosure when logged-in user is admin
|
||||||
|
* Any vulnerabilities due to a configuration different than the one defined into chapter "Scope for qualified vulnerabilities".
|
||||||
|
* Brute force attacks on login page, password forgotten page or any public pages (/public/*) are not qualified if the fail2ban recommended fail2ban rules were not installed.
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ See makepack-howto.txt for prerequisites.
|
|||||||
|
|
||||||
--------------------------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
- To build developer documentation, launch the script
|
- To build developper documentation, launch the script
|
||||||
> perl dolibarr-doxygen-build.pl
|
> perl dolibarr-doxygen-build.pl
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,40 +1,19 @@
|
|||||||
--- HOW TO USE COMPOSER
|
|
||||||
|
|
||||||
* Switch to the minimal version of PHP
|
|
||||||
|
|
||||||
update-alternatives --config php
|
|
||||||
|
|
||||||
|
|
||||||
* To list packages
|
* To list packages
|
||||||
|
|
||||||
cd htdocs/includes/diroflib
|
composer show -i
|
||||||
composer install
|
|
||||||
composer show -i
|
|
||||||
|
|
||||||
|
* To test upgrade of a lib with composer:
|
||||||
* To upgrade a lib with composer using the composer.json of the library only:
|
|
||||||
|
|
||||||
Remove entry in composer.lock
|
Remove entry in composer.lock
|
||||||
|
|
||||||
cd htdocs/includes/diroflib
|
|
||||||
rm composer.lock
|
|
||||||
|
|
||||||
Edit composer.json to change version to "x.y.z"
|
Edit composer.json to change version to "x.y.z"
|
||||||
|
composer -v update --root-reqs --no-dev --no-autoloader --dry-run ccampbell/chromephp
|
||||||
|
|
||||||
composer -v update --root-reqs --no-dev --ignore-platform-reqs
|
* To upgrade a lib with composer:
|
||||||
composer -v update --root-reqs --no-dev --ignore-platform-reqs [--no-autoloader] [--dry-run] ccampbell/chromephp
|
|
||||||
|
|
||||||
|
|
||||||
* To upgrade a lib with composer using the composer.json of Dolibarr:
|
|
||||||
|
|
||||||
Remove entry in composer.lock
|
Remove entry in composer.lock
|
||||||
|
|
||||||
cd /
|
|
||||||
mv composer.json.disabled composer.json
|
|
||||||
rm composer.lock
|
|
||||||
|
|
||||||
Edit composer.json to change version to "x.y.z"
|
Edit composer.json to change version to "x.y.z"
|
||||||
|
composer -v update --root-reqs --no-dev --no-autoloader ccampbell/chromephp
|
||||||
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ export QUILT_PATCHES=debian/patches
|
|||||||
# dpkg -l List all packages
|
# dpkg -l List all packages
|
||||||
# dpkg -b To build binary only package
|
# dpkg -b To build binary only package
|
||||||
# dpkg -c package.deb List content of package
|
# dpkg -c package.deb List content of package
|
||||||
# dpkg -I package.deb Give information on package
|
# dpkg -I package.deb Give informations on package
|
||||||
# dpkg -i package.deb Install a package
|
# dpkg -i package.deb Install a package
|
||||||
# dpkg-reconfigure -plow package Reconfigure package
|
# dpkg-reconfigure -plow package Reconfigure package
|
||||||
# dpkg -L packagename List content of installed package
|
# dpkg -L packagename List content of installed package
|
||||||
@@ -173,7 +173,7 @@ or
|
|||||||
> ls /srv/chroot
|
> 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)
|
> schroot -c name_of_chroot (exemple schroot -c unstable-amd64-sbuild)
|
||||||
> cat /etc/debian_chroot to check which debian branch we are into
|
> cat /etc/debian_chroot to check which debian branch we are into
|
||||||
> apt-get install vim dialog
|
> apt-get install vim dialog
|
||||||
> vi /usr/sbin/policy-rc.d and replace return code 101 (not allowed) into 0 (ok)
|
> vi /usr/sbin/policy-rc.d and replace return code 101 (not allowed) into 0 (ok)
|
||||||
@@ -249,7 +249,7 @@ ou
|
|||||||
> git-buildpackage -us -uc --git-ignore-branch --git-upstream-branch=[upstream|upstream-x.y.z]
|
> 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: 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 --git-ignore-new if you want to test build with uncommited 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: Package is built into directory ../build-area
|
||||||
Note: To compare 2 packages: debdiff package1.dsc package2.dsc
|
Note: To compare 2 packages: debdiff package1.dsc package2.dsc
|
||||||
@@ -345,7 +345,7 @@ 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"
|
* 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.
|
* You can test patching of serie 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.
|
* Update the debian/changelog to add entry of change.
|
||||||
|
|
||||||
Once files has been prepared, it's time to test:
|
Once files has been prepared, it's time to test:
|
||||||
@@ -357,7 +357,7 @@ ou
|
|||||||
> git-buildpackage -us -uc --git-ignore-branch --git-upstream-branch=[upstream|upstream-jessie|upstream-3.5.x|3.5.5]
|
> git-buildpackage -us -uc --git-ignore-branch --git-upstream-branch=[upstream|upstream-jessie|upstream-3.5.x|3.5.5]
|
||||||
|
|
||||||
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: 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 --git-ignore-new if you want to test build with uncommited 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: Package is built into directory ../build-area
|
||||||
Note: To compare 2 packages: debdiff package1.dsc package2.dsc
|
Note: To compare 2 packages: debdiff package1.dsc package2.dsc
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Denied from all
|
|||||||
</IfVersion>
|
</IfVersion>
|
||||||
|
|
||||||
|
|
||||||
# OPTIMIZE: To use cache on static pages (A259200 = 1 month, A7200 = 2 hours, A691600 = 8 days = recommended for static resources).
|
# OPTIMIZE: To use cache on static pages (A259200 = 1 month, A7200 = 2 hours, A691600 = 8 days = recommanded for static resources).
|
||||||
# Note that you must also enable the module mod_expires.
|
# Note that you must also enable the module mod_expires.
|
||||||
#ExpiresActive On
|
#ExpiresActive On
|
||||||
#ExpiresByType image/x-icon A2592000
|
#ExpiresByType image/x-icon A2592000
|
||||||
|
|||||||
0
build/debian/control
Normal file → Executable file
0
build/debian/control
Normal file → Executable file
@@ -64,7 +64,7 @@ License: GPL-3+
|
|||||||
Files: htdocs/includes/ckeditor/*
|
Files: htdocs/includes/ckeditor/*
|
||||||
Copyright: 2003-2012 CKSource - Frederico Knabben
|
Copyright: 2003-2012 CKSource - Frederico Knabben
|
||||||
License: GPL-2+
|
License: GPL-2+
|
||||||
The ckeditor is triple licensed under the GNU General Public License (GPL),
|
The ckeditor is tripple licensed under the GNU General Public License (GPL),
|
||||||
GNU Lesser General Public License (LGPL), and Mozilla Public License (MPL).
|
GNU Lesser General Public License (LGPL), and Mozilla Public License (MPL).
|
||||||
In Debian, it is distributed under the GNU General Public License (GPL).
|
In Debian, it is distributed under the GNU General Public License (GPL).
|
||||||
.
|
.
|
||||||
|
|||||||
@@ -2,8 +2,6 @@
|
|||||||
# Debian install package run: config, preinst, prerm, postinst, postrm
|
# Debian install package run: config, preinst, prerm, postinst, postrm
|
||||||
#
|
#
|
||||||
|
|
||||||
# shellcheck disable=1091,2034
|
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|
||||||
@@ -50,7 +48,7 @@ echo "Ask for web server to setup"
|
|||||||
db_input critical dolibarr/reconfigure-webserver || true
|
db_input critical dolibarr/reconfigure-webserver || true
|
||||||
|
|
||||||
if db_go ; then
|
if db_go ; then
|
||||||
okcancel="1"
|
okcancel="1"
|
||||||
else
|
else
|
||||||
okcancel="0"
|
okcancel="0"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# postinst script for dolibarr
|
# postinst script for dolibarr
|
||||||
|
|
||||||
# shellcheck disable=1091,2086,2154
|
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# summary of how this script can be called:
|
# summary of how this script can be called:
|
||||||
@@ -22,24 +20,24 @@ fi
|
|||||||
|
|
||||||
setup_empty_conf() {
|
setup_empty_conf() {
|
||||||
echo Create empty file $config
|
echo Create empty file $config
|
||||||
mkdir -p /etc/dolibarr
|
mkdir -p /etc/dolibarr
|
||||||
touch /etc/dolibarr/conf.php
|
touch /etc/dolibarr/conf.php
|
||||||
chown root:www-data /etc/dolibarr/conf.php
|
chown root:www-data /etc/dolibarr/conf.php
|
||||||
chmod 660 /etc/dolibarr/conf.php
|
chmod 660 /etc/dolibarr/conf.php
|
||||||
}
|
}
|
||||||
|
|
||||||
is_new_upstream_version() {
|
is_new_upstream_version() {
|
||||||
# $1 can be empty (not installed) and will result in a true value
|
# $1 can be empty (not installed) and will result in a true value
|
||||||
# for the check
|
# for the check
|
||||||
old_version=$(echo "$1" | sed -e 's/-[^-]*$//' -e 's/^[0-9]*://')
|
old_version=$(echo "$1" | sed -e 's/-[^-]*$//' -e 's/^[0-9]*://')
|
||||||
new_version=$(dpkg-query -f '${Version}' -W dolibarr | \
|
new_version=$(dpkg-query -f '${Version}' -W dolibarr | \
|
||||||
sed -e 's/-[^-]*$//' -e 's/^[0-9]*://')
|
sed -e 's/-[^-]*$//' -e 's/^[0-9]*://')
|
||||||
test "$old_version" != "$new_version"
|
test "$old_version" != "$new_version"
|
||||||
}
|
}
|
||||||
|
|
||||||
enable_install_upgrade_wizard() {
|
enable_install_upgrade_wizard() {
|
||||||
echo Enable install wizard by removing install.lock file if present
|
echo Enable install wizard by removing install.lock file if present
|
||||||
rm -f /var/lib/dolibarr/documents/install.lock
|
rm -f /var/lib/dolibarr/documents/install.lock
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -48,7 +46,7 @@ php_install() {
|
|||||||
# php5endmod exists for ubuntu only
|
# php5endmod exists for ubuntu only
|
||||||
echo "Enable php module mysqli with php5enmod"
|
echo "Enable php module mysqli with php5enmod"
|
||||||
php5enmod mysqli
|
php5enmod mysqli
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
apache_install() {
|
apache_install() {
|
||||||
@@ -103,7 +101,7 @@ case "$1" in
|
|||||||
configure)
|
configure)
|
||||||
if [ -z "$2" ]; then
|
if [ -z "$2" ]; then
|
||||||
echo First install
|
echo First install
|
||||||
#setup_empty_conf
|
#setup_empty_conf
|
||||||
else
|
else
|
||||||
echo This is not a first install
|
echo This is not a first install
|
||||||
fi
|
fi
|
||||||
@@ -114,14 +112,14 @@ case "$1" in
|
|||||||
|
|
||||||
# Remove lock file
|
# Remove lock file
|
||||||
if is_new_upstream_version "$2"; then
|
if is_new_upstream_version "$2"; then
|
||||||
enable_install_upgrade_wizard
|
enable_install_upgrade_wizard
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create document directory for uploaded data files
|
# Create document directory for uploaded data files
|
||||||
mkdir -p $docdir
|
mkdir -p $docdir
|
||||||
chown -R www-data:www-data $docdir
|
chown -R www-data:www-data $docdir
|
||||||
chmod -R 775 $docdir
|
chmod -R 775 $docdir
|
||||||
chmod -R g+s $docdir
|
chmod -R g+s $docdir
|
||||||
|
|
||||||
# Copy install config file (with matching Debian values) into target directory
|
# Copy install config file (with matching Debian values) into target directory
|
||||||
superuserlogin=''
|
superuserlogin=''
|
||||||
@@ -138,14 +136,14 @@ case "$1" in
|
|||||||
cat $installfileorig | sed -e 's/__SUPERUSERLOGIN__/'$superuserlogin'/g' | sed -e 's/__SUPERUSERPASSWORD__/'$superuserpassword'/g' > $installconfig
|
cat $installfileorig | sed -e 's/__SUPERUSERLOGIN__/'$superuserlogin'/g' | sed -e 's/__SUPERUSERPASSWORD__/'$superuserpassword'/g' > $installconfig
|
||||||
fi
|
fi
|
||||||
chown -R root:www-data $installconfig
|
chown -R root:www-data $installconfig
|
||||||
chmod -R 660 $installconfig
|
chmod -R 660 $installconfig
|
||||||
|
|
||||||
# If a conf already exists and its content was already completed by installer
|
# If a conf already exists and its content was already completed by installer
|
||||||
if [ ! -s $config ] || ! grep -q "File generated by" $config
|
if [ ! -s $config ] || ! grep -q "File generated by" $config
|
||||||
then
|
then
|
||||||
# Create an empty conf.php with permission to web server
|
# Create an empty conf.php with permission to web server
|
||||||
setup_empty_conf
|
setup_empty_conf
|
||||||
#else
|
#else
|
||||||
# File already exist. We add params not found.
|
# File already exist. We add params not found.
|
||||||
#echo Add new params to overwrite path to use shared libraries/fonts
|
#echo Add new params to overwrite path to use shared libraries/fonts
|
||||||
##grep -q -c "dolibarr_lib_GEOIP_PATH" $config || echo "<?php \$dolibarr_lib_GEOIP_PATH=''; ?>" >> $config
|
##grep -q -c "dolibarr_lib_GEOIP_PATH" $config || echo "<?php \$dolibarr_lib_GEOIP_PATH=''; ?>" >> $config
|
||||||
@@ -183,7 +181,7 @@ case "$1" in
|
|||||||
|
|
||||||
# Set permissions to web server
|
# Set permissions to web server
|
||||||
chown -R $webuser:$webgroup /usr/share/dolibarr
|
chown -R $webuser:$webgroup /usr/share/dolibarr
|
||||||
chown -R root:$webgroup $config
|
chown -R root:$webgroup $config
|
||||||
done
|
done
|
||||||
|
|
||||||
# Restart web server.
|
# Restart web server.
|
||||||
@@ -197,31 +195,31 @@ case "$1" in
|
|||||||
# Reload webserver in any case, configuration might have changed
|
# Reload webserver in any case, configuration might have changed
|
||||||
# Redirection of 3 is needed because Debconf uses it and it might
|
# Redirection of 3 is needed because Debconf uses it and it might
|
||||||
# be inherited by webserver. See bug #446324.
|
# be inherited by webserver. See bug #446324.
|
||||||
if [ -f /etc/init.d/$webserver ] ; then
|
if [ -f /etc/init.d/$webserver ] ; then
|
||||||
if [ -x /usr/sbin/invoke-rc.d ]; then
|
if [ -x /usr/sbin/invoke-rc.d ]; then
|
||||||
echo Restart web server $server using invoke-rc.d
|
echo Restart web server $server using invoke-rc.d
|
||||||
# This works with Debian (5.05,...) and Ubuntu (9.10,10.04,...)
|
# This works with Debian (5.05,...) and Ubuntu (9.10,10.04,...)
|
||||||
invoke-rc.d $webserver reload 3>/dev/null || true
|
invoke-rc.d $webserver reload 3>/dev/null || true
|
||||||
else
|
else
|
||||||
echo Restart web server $server using $server reload
|
echo Restart web server $server using $server reload
|
||||||
/etc/init.d/$webserver reload 3>/dev/null || true
|
/etc/init.d/$webserver reload 3>/dev/null || true
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
echo ----------
|
echo ----------
|
||||||
echo "Call Dolibarr page http://localhost/dolibarr/ to complete the setup and use Dolibarr."
|
echo "Call Dolibarr page http://localhost/dolibarr/ to complete the setup and use Dolibarr."
|
||||||
echo ----------
|
echo ----------
|
||||||
;;
|
;;
|
||||||
|
|
||||||
abort-upgrade|abort-remove|abort-deconfigure)
|
abort-upgrade|abort-remove|abort-deconfigure)
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
echo "postinst called with unknown argument $1" >&2
|
echo "postinst called with unknown argument $1" >&2
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
#DEBHELPER#
|
#DEBHELPER#
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
#
|
#
|
||||||
# see: dh_installdeb(1)
|
# see: dh_installdeb(1)
|
||||||
|
|
||||||
# shellcheck disable=1091,2006,2034,2086,2089,2090
|
|
||||||
|
|
||||||
#set -e
|
#set -e
|
||||||
set +e
|
set +e
|
||||||
|
|
||||||
@@ -32,8 +30,8 @@ lighttpd_remove() {
|
|||||||
fi
|
fi
|
||||||
# See bug #448682
|
# See bug #448682
|
||||||
if [ -h /etc/lighttpd/conf-enabled/50-dolibarr.conf ] ; then
|
if [ -h /etc/lighttpd/conf-enabled/50-dolibarr.conf ] ; then
|
||||||
echo "postrm Manually deleting lighttpd/dolibarr configuration link"
|
echo "postrm Manually deleting lighttpd/dolibarr configuration link"
|
||||||
rm /etc/lighttpd/conf-enabled/50-dolibarr.conf
|
rm /etc/lighttpd/conf-enabled/50-dolibarr.conf
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -48,7 +46,7 @@ apache_remove() {
|
|||||||
|
|
||||||
|
|
||||||
if [ -f /usr/share/debconf/confmodule ]; then
|
if [ -f /usr/share/debconf/confmodule ]; then
|
||||||
. /usr/share/debconf/confmodule
|
. /usr/share/debconf/confmodule
|
||||||
fi
|
fi
|
||||||
|
|
||||||
db_version 2.0
|
db_version 2.0
|
||||||
@@ -64,12 +62,12 @@ lockfile="$docdir/install.lock"
|
|||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
|
|
||||||
# Call when we upgrade
|
# Call when we upgrade
|
||||||
upgrade)
|
upgrade)
|
||||||
echo "postrm upgrade"
|
echo "postrm upgrade"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
# Call when we uninstall
|
# Call when we uninstall
|
||||||
remove)
|
remove)
|
||||||
echo "postrm remove"
|
echo "postrm remove"
|
||||||
rm -f $lockfile
|
rm -f $lockfile
|
||||||
@@ -97,9 +95,9 @@ case "$1" in
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
|
||||||
# Call when we uninstall and purge
|
# Call when we uninstall and purge
|
||||||
purge)
|
purge)
|
||||||
echo "postrm purge"
|
echo "postrm purge"
|
||||||
|
|
||||||
@@ -160,62 +158,62 @@ case "$1" in
|
|||||||
# Define mysqlcmd
|
# Define mysqlcmd
|
||||||
if [ -z "$dbserver" ] || [ "$dbserver" = "localhost" ]; then
|
if [ -z "$dbserver" ] || [ "$dbserver" = "localhost" ]; then
|
||||||
hostopt=""
|
hostopt=""
|
||||||
dbserver=localhost
|
dbserver=localhost
|
||||||
else
|
else
|
||||||
case "$dbserver" in
|
case "$dbserver" in
|
||||||
:*)
|
:*)
|
||||||
dbsocket=`echo $dbserver | sed -e 's/^://'`
|
dbsocket=`echo $dbserver | sed -e 's/^://'`
|
||||||
hostopt="-S $dbsocket"
|
hostopt="-S $dbsocket"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
hostopt="-h $dbserver"
|
hostopt="-h $dbserver"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
if [ -z "$dbadmpass" ] ; then
|
if [ -z "$dbadmpass" ] ; then
|
||||||
log="${log}No password used."
|
log="${log}No password used."
|
||||||
passopt=""
|
passopt=""
|
||||||
else
|
else
|
||||||
passopt="--password='"`echo "$dbadmpass" | sed -e "s/'/'"'"'"'"'"'"'/g"`"'"
|
passopt="--password='"`echo "$dbadmpass" | sed -e "s/'/'"'"'"'"'"'"'/g"`"'"
|
||||||
fi
|
fi
|
||||||
mysqlcmd="mysql $hostopt $passopt -u $dbadmin"
|
mysqlcmd="mysql $hostopt $passopt -u $dbadmin"
|
||||||
mysqlcmdnopass="mysql $hostopt -u $dbadmin"
|
mysqlcmdnopass="mysql $hostopt -u $dbadmin"
|
||||||
|
|
||||||
# Now run the drop user
|
# Now run the drop user
|
||||||
if eval $mysqlcmd -f -e "\"DROP USER '$dbuser'@'localhost';\"" ; then
|
if eval $mysqlcmd -f -e "\"DROP USER '$dbuser'@'localhost';\"" ; then
|
||||||
echo postrm Database login $dbuser@localhost removed
|
echo postrm Database login $dbuser@localhost removed
|
||||||
else
|
else
|
||||||
error="Unable to run $mysqlcmdnopass -f -e \"DROP USER '$dbuser'@'localhost';\""
|
error="Unable to run $mysqlcmdnopass -f -e \"DROP USER '$dbuser'@'localhost';\""
|
||||||
echo postrm $error
|
echo postrm $error
|
||||||
fi
|
fi
|
||||||
if eval $mysqlcmd -f -e "\"DROP USER '$dbuser'@'%';\"" ; then
|
if eval $mysqlcmd -f -e "\"DROP USER '$dbuser'@'%';\"" ; then
|
||||||
echo postrm Database login $dbuser@% removed
|
echo postrm Database login $dbuser@% removed
|
||||||
else
|
else
|
||||||
error="Unable to run $mysqlcmdnopass -f -e \"DROP USER '$dbuser'@'%';\""
|
error="Unable to run $mysqlcmdnopass -f -e \"DROP USER '$dbuser'@'%';\""
|
||||||
echo postrm $error
|
echo postrm $error
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Now run the drop commands
|
# Now run the drop commands
|
||||||
if eval $mysqlcmd -f -e "\"show databases;\"" | grep -e "^$dbname" > /dev/null 2>&1 ; then
|
if eval $mysqlcmd -f -e "\"show databases;\"" | grep -e "^$dbname" > /dev/null 2>&1 ; then
|
||||||
log="${log}Dropping database $dbname."
|
log="${log}Droping database $dbname."
|
||||||
if eval $mysqlcmd -f -e "\"DROP DATABASE $dbname;\"" ; then
|
if eval $mysqlcmd -f -e "\"DROP DATABASE $dbname;\"" ; then
|
||||||
if eval $mysqlcmd -f -e "\"show databases;\"" | grep -e "^$dbname" > /dev/null 2>&1 ; then
|
if eval $mysqlcmd -f -e "\"show databases;\"" | grep -e "^$dbname" > /dev/null 2>&1 ; then
|
||||||
error="Database $dbname NOT successfully dropped. You have to do it manually."
|
error="Database $dbname NOT successfully droped. You have to do it manually."
|
||||||
echo postrm $error
|
echo postrm $error
|
||||||
else
|
else
|
||||||
status=drop
|
status=drop
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
error="Unable to run the drop database script."
|
error="Unable to run the drop database script."
|
||||||
echo postrm $error
|
echo postrm $error
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
status=nothing
|
status=nothing
|
||||||
log="${log}Database $dbname already not exists."
|
log="${log}Database $dbname already not exists."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "postrm Remove directory $docdir"
|
echo "postrm Remove directory $docdir"
|
||||||
rm -rf $docdir ;
|
rm -rf $docdir ;
|
||||||
|
|
||||||
else
|
else
|
||||||
echo "postrm Delete of dolibarr database and uploaded files not wanted"
|
echo "postrm Delete of dolibarr database and uploaded files not wanted"
|
||||||
@@ -224,21 +222,21 @@ case "$1" in
|
|||||||
rm -rf /etc/dolibarr
|
rm -rf /etc/dolibarr
|
||||||
|
|
||||||
# We clean variable (we ignore errors because db_reset can fails if var was never set)
|
# We clean variable (we ignore errors because db_reset can fails if var was never set)
|
||||||
set +e
|
set +e
|
||||||
db_reset dolibarr/reconfigure-webserver
|
db_reset dolibarr/reconfigure-webserver
|
||||||
db_reset dolibarr/postrm
|
db_reset dolibarr/postrm
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
#db_purge
|
#db_purge
|
||||||
;;
|
;;
|
||||||
|
|
||||||
failed-upgrade|abort-install|abort-upgrade|disappear)
|
failed-upgrade|abort-install|abort-upgrade|disappear)
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
echo "postrm called with unknown argument $1" >&2
|
echo "postrm called with unknown argument $1" >&2
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
#DEBHELPER#
|
#DEBHELPER#
|
||||||
|
|||||||
@@ -1,13 +1,11 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# shellcheck disable=2034,2086,2103,2164
|
|
||||||
|
|
||||||
tmpdir=$(mktemp -d)
|
tmpdir=$(mktemp -d)
|
||||||
|
|
||||||
|
|
||||||
# Download source file
|
# Download source file
|
||||||
if [ -n "$1" ]; then
|
if [ -n "$1" ]; then
|
||||||
uscan_opts="--download-version=$1"
|
uscan_opts="--download-version=$1"
|
||||||
fi
|
fi
|
||||||
#uscan --noconf --force-download --no-symlink --verbose --destdir=$tmpdir $uscan_opts
|
#uscan --noconf --force-download --no-symlink --verbose --destdir=$tmpdir $uscan_opts
|
||||||
|
|
||||||
|
|||||||
@@ -33,5 +33,5 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
|
|||||||
+$conffile = "/etc/dolibarr/conf.php";
|
+$conffile = "/etc/dolibarr/conf.php";
|
||||||
+$conffiletoshow = "/etc/dolibarr/conf.php";
|
+$conffiletoshow = "/etc/dolibarr/conf.php";
|
||||||
|
|
||||||
$short_options = "c:h";
|
|
||||||
$long_options = array(
|
// Load conf file if it is already defined
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
export DH_VERBOSE=1
|
export DH_VERBOSE=1
|
||||||
export DH_OPTIONS=-v
|
export DH_OPTIONS=-v
|
||||||
|
|
||||||
#export DH_COMPAT=7 # This is the debhelper compatibility version to use, now defined into compat file
|
#export DH_COMPAT=7 # This is the debhelper compatability version to use, now defined into compat file
|
||||||
|
|
||||||
|
|
||||||
%:
|
%:
|
||||||
|
|||||||
@@ -1,17 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
|
$force_install_message='KeepDefaultValuesMamp';
|
||||||
$force_install_message = 'KeepDefaultValuesMamp';
|
$force_install_main_data_root='/Applications/MAMP/dolibarr_documents';
|
||||||
$force_install_main_data_root = '/Applications/MAMP/dolibarr_documents';
|
$force_install_type='mysqli';
|
||||||
$force_install_type = 'mysqli';
|
$force_install_dbserver='localhost';
|
||||||
$force_install_dbserver = 'localhost';
|
$force_install_port='8889';
|
||||||
$force_install_port = '8889';
|
$force_install_database='dolibarr';
|
||||||
$force_install_database = 'dolibarr';
|
$force_install_createdatabase='1';
|
||||||
$force_install_createdatabase = '1';
|
$force_install_databaselogin='dolibarrmysql';
|
||||||
$force_install_databaselogin = 'dolibarrmysql';
|
$force_install_databasepass='root';
|
||||||
$force_install_databasepass = 'root';
|
$force_install_createuser='1';
|
||||||
$force_install_createuser = '1';
|
$force_install_databaserootlogin='root';
|
||||||
$force_install_databaserootlogin = 'root';
|
$force_install_databaserootpass='root';
|
||||||
$force_install_databaserootpass = 'root';
|
$force_install_dolibarrlogin='admin';
|
||||||
$force_install_dolibarrlogin = 'admin';
|
$force_install_nophpinfo='1';
|
||||||
$force_install_nophpinfo = '1';
|
$force_install_lockinstall='444';
|
||||||
$force_install_lockinstall = '444';
|
|
||||||
|
|||||||
@@ -1,61 +0,0 @@
|
|||||||
FROM php:8.1-apache-bullseye
|
|
||||||
|
|
||||||
ENV PHP_INI_DATE_TIMEZONE 'UTC'
|
|
||||||
ENV PHP_INI_MEMORY_LIMIT 256M
|
|
||||||
|
|
||||||
RUN apt-get update -y \
|
|
||||||
&& apt-get install -y --no-install-recommends \
|
|
||||||
libfreetype6-dev \
|
|
||||||
libjpeg62-turbo-dev \
|
|
||||||
libjpeg62-turbo \
|
|
||||||
libpng-dev \
|
|
||||||
libpng16-16 \
|
|
||||||
libldap2-dev \
|
|
||||||
libxml2-dev \
|
|
||||||
libzip-dev \
|
|
||||||
zlib1g-dev \
|
|
||||||
libicu-dev \
|
|
||||||
g++ \
|
|
||||||
default-mysql-client \
|
|
||||||
unzip \
|
|
||||||
curl \
|
|
||||||
apt-utils \
|
|
||||||
msmtp \
|
|
||||||
msmtp-mta \
|
|
||||||
mailutils \
|
|
||||||
&& 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 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
|
|
||||||
|
|
||||||
RUN mkdir /var/documents
|
|
||||||
RUN chown www-data:www-data /var/documents
|
|
||||||
|
|
||||||
COPY docker-run.sh /usr/local/bin/
|
|
||||||
RUN chmod +x /usr/local/bin/docker-run.sh
|
|
||||||
|
|
||||||
RUN pecl install xdebug && docker-php-ext-enable xdebug
|
|
||||||
RUN echo 'zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so"' >> ${PHP_INI_DIR}/php.ini
|
|
||||||
RUN echo 'xdebug.mode=debug' >> ${PHP_INI_DIR}/php.ini
|
|
||||||
RUN echo 'xdebug.start_with_request=yes' >> ${PHP_INI_DIR}/php.ini
|
|
||||||
RUN echo 'xdebug.client_host=host.docker.internal' >> ${PHP_INI_DIR}/php.ini
|
|
||||||
RUN echo 'xdebug.client_port=9003' >> ${PHP_INI_DIR}/php.ini
|
|
||||||
RUN echo 'xdebug.discover_client_host=true' >> ${PHP_INI_DIR}/php.ini
|
|
||||||
#RUN echo 'xdebug.log="/tmp/xdebug.log"' >> ${PHP_INI_DIR}/php.ini
|
|
||||||
RUN echo 'xdebug.idekey="netbeans-xdebug"' >> ${PHP_INI_DIR}/php.ini
|
|
||||||
|
|
||||||
# set up sendmail config, to use maildev
|
|
||||||
RUN echo "account default" > /etc/msmtprc
|
|
||||||
RUN echo "auth off" >> /etc/msmtprc
|
|
||||||
RUN echo "port 1025" >> /etc/msmtprc
|
|
||||||
RUN echo "host mail" >> /etc/msmtprc
|
|
||||||
RUN echo "from local@localdomain.com" >> /etc/msmtprc
|
|
||||||
RUN echo "domain localhost.localdomain" >> /etc/msmtprc
|
|
||||||
RUN echo "sendmail_path=/usr/bin/msmtp -t" >> /usr/local/etc/php/conf.d/php-sendmail.ini
|
|
||||||
|
|
||||||
EXPOSE 80
|
|
||||||
|
|
||||||
ENTRYPOINT ["docker-run.sh"]
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
# 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/tuxgasy/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
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
version: '3'
|
|
||||||
|
|
||||||
networks:
|
|
||||||
internal-pod:
|
|
||||||
internal: true
|
|
||||||
external-pod:
|
|
||||||
internal: false
|
|
||||||
|
|
||||||
services:
|
|
||||||
mariadb:
|
|
||||||
image: mariadb:latest
|
|
||||||
environment:
|
|
||||||
MYSQL_ROOT_PASSWORD: rootpassfordev
|
|
||||||
MYSQL_DATABASE: dolibarr
|
|
||||||
ports:
|
|
||||||
- "3306:3306"
|
|
||||||
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:
|
|
||||||
HOST_USER_ID: $HOST_USER_ID
|
|
||||||
PHP_INI_DATE_TIMEZONE: $PHP_INI_DATE_TIMEZONE
|
|
||||||
PHP_INI_MEMORY_LIMIT: $PHP_INI_MEMORY_LIMIT
|
|
||||||
volumes:
|
|
||||||
- ../../htdocs:/var/www/html/
|
|
||||||
- ../../documents:/var/documents
|
|
||||||
ports:
|
|
||||||
- "80:80"
|
|
||||||
- "9000:9000"
|
|
||||||
depends_on:
|
|
||||||
- mariadb
|
|
||||||
- mail
|
|
||||||
networks:
|
|
||||||
- internal-pod
|
|
||||||
- external-pod
|
|
||||||
extra_hosts:
|
|
||||||
- "localhost.localdomain:127.0.0.1"
|
|
||||||
- "host.docker.internal:host-gateway"
|
|
||||||
|
|
||||||
mail:
|
|
||||||
image: maildev/maildev
|
|
||||||
ports:
|
|
||||||
- "8081:1080"
|
|
||||||
- "25:1025"
|
|
||||||
networks:
|
|
||||||
- internal-pod
|
|
||||||
- external-pod
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
#!/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
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
FROM mariadb:latest
|
|
||||||
# Enable commented out UTF8 charset/collation options
|
|
||||||
RUN sed '/utf8/ s/^#//' /etc/mysql/mariadb.cnf >/tmp/t && mv /tmp/t /etc/mysql/mariadb.cnf
|
|
||||||
36
build/docker/.github/workflows/build.yml
vendored
36
build/docker/.github/workflows/build.yml
vendored
@@ -1,36 +0,0 @@
|
|||||||
name: build
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
schedule:
|
|
||||||
- cron: '0 0 * * 6'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-docker-images:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: docker/setup-buildx-action@v2
|
|
||||||
- env:
|
|
||||||
DOCKER_BUILD: 1
|
|
||||||
DOCKER_PUSH: 1
|
|
||||||
run: |
|
|
||||||
echo ${{ secrets.DOCKER_HUB_PASSWORD }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin
|
|
||||||
./update.sh
|
|
||||||
|
|
||||||
update-readme:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- run: |
|
|
||||||
docker run --rm -t \
|
|
||||||
-v $(pwd):/src \
|
|
||||||
-e DOCKER_USER=${{ secrets.DOCKER_HUB_USERNAME }} \
|
|
||||||
-e DOCKER_PASS=${{ secrets.DOCKER_HUB_PASSWORD }} \
|
|
||||||
-e PUSHRM_PROVIDER=dockerhub \
|
|
||||||
-e PUSHRM_FILE=/src/README.md \
|
|
||||||
-e PUSHRM_SHORT='Docker image for Dolibarr with auto installer on first boot.' \
|
|
||||||
-e PUSHRM_TARGET=docker.io/tuxgasy/dolibarr \
|
|
||||||
-e PUSHRM_DEBUG=1 \
|
|
||||||
chko/docker-pushrm:1
|
|
||||||
27
build/docker/.github/workflows/test.yml
vendored
27
build/docker/.github/workflows/test.yml
vendored
@@ -1,27 +0,0 @@
|
|||||||
name: test
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
pull_request:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
check-update:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- run: |
|
|
||||||
./update.sh
|
|
||||||
git diff --exit-code
|
|
||||||
|
|
||||||
check-build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- env:
|
|
||||||
DOLI_INSTALL_AUTO: 0
|
|
||||||
run: |
|
|
||||||
./update.sh
|
|
||||||
docker build -t tuxgasy/dolibarr:develop images/develop
|
|
||||||
docker run -d -p 127.0.0.1:80:80 --name dolibarr tuxgasy/dolibarr:develop
|
|
||||||
docker ps | grep -q dolibarr
|
|
||||||
3
build/docker/.gitignore
vendored
3
build/docker/.gitignore
vendored
@@ -1,3 +0,0 @@
|
|||||||
.idea/
|
|
||||||
.volumes/
|
|
||||||
docker-compose-links/
|
|
||||||
@@ -1,43 +1,61 @@
|
|||||||
FROM php:8.2-apache-bookworm
|
FROM php:7.3-apache
|
||||||
|
|
||||||
LABEL maintainer="Yann Le Doaré <services@linuxconsole.org>"
|
|
||||||
|
|
||||||
ENV PHP_INI_DATE_TIMEZONE 'UTC'
|
ENV PHP_INI_DATE_TIMEZONE 'UTC'
|
||||||
ENV PHP_INI_MEMORY_LIMIT 256M
|
ENV PHP_INI_MEMORY_LIMIT 256M
|
||||||
ENV PHP_INI_UPLOAD_MAX_FILESIZE 2M
|
|
||||||
ENV PHP_INI_POST_MAX_SIZE 8M
|
|
||||||
ENV PHP_INI_ALLOW_URL_FOPEN 0
|
|
||||||
|
|
||||||
RUN apt-get update -y \
|
RUN apt-get update -y \
|
||||||
&& apt-get dist-upgrade -y \
|
|
||||||
&& apt-get install -y --no-install-recommends \
|
&& apt-get install -y --no-install-recommends \
|
||||||
libc-client-dev \
|
|
||||||
libfreetype6-dev \
|
libfreetype6-dev \
|
||||||
libjpeg62-turbo-dev \
|
libjpeg62-turbo-dev \
|
||||||
libkrb5-dev \
|
libjpeg62-turbo \
|
||||||
libldap2-dev \
|
|
||||||
libpng-dev \
|
libpng-dev \
|
||||||
libpq-dev \
|
libpng16-16 \
|
||||||
|
libldap2-dev \
|
||||||
libxml2-dev \
|
libxml2-dev \
|
||||||
libzip-dev \
|
libzip-dev \
|
||||||
|
zlib1g-dev \
|
||||||
|
libicu-dev \
|
||||||
|
g++ \
|
||||||
default-mysql-client \
|
default-mysql-client \
|
||||||
postgresql-client \
|
unzip \
|
||||||
cron \
|
curl \
|
||||||
|
apt-utils \
|
||||||
|
msmtp \
|
||||||
|
msmtp-mta \
|
||||||
|
mailutils \
|
||||||
&& apt-get autoremove -y \
|
&& apt-get autoremove -y \
|
||||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
|
&& docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \
|
||||||
&& docker-php-ext-install -j$(nproc) calendar intl mysqli pdo_mysql gd soap zip \
|
&& docker-php-ext-install -j$(nproc) calendar intl mysqli pdo_mysql gd soap zip \
|
||||||
&& docker-php-ext-configure pgsql -with-pgsql \
|
&& docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \
|
||||||
&& docker-php-ext-install pdo_pgsql pgsql \
|
&& docker-php-ext-install -j$(nproc) ldap && \
|
||||||
&& docker-php-ext-configure ldap --with-libdir=lib/$(gcc -dumpmachine)/ \
|
mv ${PHP_INI_DIR}/php.ini-development ${PHP_INI_DIR}/php.ini
|
||||||
&& docker-php-ext-install -j$(nproc) ldap \
|
|
||||||
&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
|
RUN mkdir /var/documents
|
||||||
&& docker-php-ext-install imap \
|
RUN chown www-data:www-data /var/documents
|
||||||
&& mv ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini \
|
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
COPY docker-run.sh /usr/local/bin/
|
||||||
|
RUN chmod +x /usr/local/bin/docker-run.sh
|
||||||
|
|
||||||
|
RUN pecl install xdebug && docker-php-ext-enable xdebug
|
||||||
|
RUN echo 'zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so"' >> ${PHP_INI_DIR}/php.ini
|
||||||
|
RUN echo 'xdebug.mode=debug' >> ${PHP_INI_DIR}/php.ini
|
||||||
|
RUN echo 'xdebug.start_with_request=yes' >> ${PHP_INI_DIR}/php.ini
|
||||||
|
RUN echo 'xdebug.client_host=host.docker.internal' >> ${PHP_INI_DIR}/php.ini
|
||||||
|
RUN echo 'xdebug.client_port=9003' >> ${PHP_INI_DIR}/php.ini
|
||||||
|
RUN echo 'xdebug.discover_client_host=true' >> ${PHP_INI_DIR}/php.ini
|
||||||
|
#RUN echo 'xdebug.log="/tmp/xdebug.log"' >> ${PHP_INI_DIR}/php.ini
|
||||||
|
RUN echo 'xdebug.idekey="netbeans-xdebug"' >> ${PHP_INI_DIR}/php.ini
|
||||||
|
|
||||||
|
# set up sendmail config, to use maildev
|
||||||
|
RUN echo "account default" > /etc/msmtprc
|
||||||
|
RUN echo "auth off" >> /etc/msmtprc
|
||||||
|
RUN echo "port 25" >> /etc/msmtprc
|
||||||
|
RUN echo "host mail" >> /etc/msmtprc
|
||||||
|
RUN echo "from local@localdomain.com" >> /etc/msmtprc
|
||||||
|
RUN echo "domain localhost.localdomain" >> /etc/msmtprc
|
||||||
|
RUN echo "sendmail_path=/usr/bin/msmtp -t" >> /usr/local/etc/php/conf.d/php-sendmail.ini
|
||||||
|
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
|
|
||||||
COPY docker-run.sh /usr/local/bin/
|
|
||||||
ENTRYPOINT ["docker-run.sh"]
|
ENTRYPOINT ["docker-run.sh"]
|
||||||
|
|
||||||
CMD ["apache2-foreground"]
|
|
||||||
|
|||||||
@@ -1,6 +1,34 @@
|
|||||||
# How to use it ?
|
# How to use it ?
|
||||||
|
|
||||||
export HOST_USER_ID=$(id -u)
|
The docker-compose.yml file is used to build and run Dolibarr in the current workspace.
|
||||||
export MYSQL_ROOT_PWD=$(tr -dc A-Za-z0-9 </dev/urandom | head -c 13; echo)
|
This docker image intended for developpement usage.
|
||||||
|
For production usage you should consider other contributor reference like https://hub.docker.com/r/tuxgasy/dolibarr
|
||||||
|
|
||||||
docker-compose up -d
|
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
|
||||||
|
|||||||
@@ -1,38 +1,60 @@
|
|||||||
# This docker-compose.yml file is used to build and test quickly
|
version: '3'
|
||||||
# a specific version of Dolibarr
|
|
||||||
#
|
|
||||||
# Before build, define the variable DOLI_VERSION as following:
|
|
||||||
# $ export DOLI_VERSION=4.0.4
|
|
||||||
# And then, you can run :
|
|
||||||
# $ docker-compose up
|
|
||||||
#
|
|
||||||
# More information about Docker-compose : https://docs.docker.com/compose/
|
|
||||||
|
|
||||||
version: "3"
|
networks:
|
||||||
|
internal-pod:
|
||||||
|
internal: true
|
||||||
|
external-pod:
|
||||||
|
internal: false
|
||||||
|
|
||||||
services:
|
services:
|
||||||
mariadb:
|
mariadb:
|
||||||
container_name: dolibarr-mariadb-dev
|
|
||||||
image: mariadb:latest
|
image: mariadb:latest
|
||||||
environment:
|
environment:
|
||||||
MYSQL_ROOT_PASSWORD: $MYSQL_ROOT_PWD
|
MYSQL_ROOT_PASSWORD: root
|
||||||
MYSQL_DATABASE: "dolibarr-prod"
|
MYSQL_DATABASE: dolibarr
|
||||||
|
ports:
|
||||||
web:
|
- "3306:3306"
|
||||||
container_name: dolibarr-web-dev
|
networks:
|
||||||
build: .
|
- internal-pod
|
||||||
|
- external-pod
|
||||||
volumes:
|
|
||||||
- ../../htdocs:/var/www/html/
|
|
||||||
- ../../documents:/var/www/html/documents
|
|
||||||
|
|
||||||
|
phpmyadmin:
|
||||||
|
image: phpmyadmin/phpmyadmin
|
||||||
|
environment:
|
||||||
|
PMA_HOST: mariadb
|
||||||
depends_on:
|
depends_on:
|
||||||
- mariadb
|
- mariadb
|
||||||
environment:
|
|
||||||
WWW_USER_ID: 1000
|
|
||||||
WWW_GROUP_ID: 1000
|
|
||||||
DOLI_ROOT_PASSWORD: $MYSQL_ROOT_PWD
|
|
||||||
DOLI_DATABASE: "dolibarr-prod"
|
|
||||||
DOLI_DB_SERVER: "mariadb"
|
|
||||||
ports:
|
ports:
|
||||||
- "8080:80"
|
- "8080:80"
|
||||||
|
networks:
|
||||||
|
- internal-pod
|
||||||
|
- external-pod
|
||||||
|
|
||||||
|
web:
|
||||||
|
build: .
|
||||||
|
environment:
|
||||||
|
HOST_USER_ID: $HOST_USER_ID
|
||||||
|
volumes:
|
||||||
|
- ../../htdocs:/var/www/html/
|
||||||
|
- ../../documents:/var/documents
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "9000:9000"
|
||||||
|
depends_on:
|
||||||
|
- mariadb
|
||||||
|
- mail
|
||||||
|
networks:
|
||||||
|
- internal-pod
|
||||||
|
- external-pod
|
||||||
|
extra_hosts:
|
||||||
|
- "localhost.localdomain:127.0.0.1"
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
|
||||||
|
mail:
|
||||||
|
image: maildev/maildev
|
||||||
|
ports:
|
||||||
|
- "8081:80"
|
||||||
|
- "25:25"
|
||||||
|
networks:
|
||||||
|
- internal-pod
|
||||||
|
- external-pod
|
||||||
|
|||||||
16
build/docker/docker-run.sh
Executable file → Normal file
16
build/docker/docker-run.sh
Executable file → Normal file
@@ -2,25 +2,23 @@
|
|||||||
# Script used by the Dockerfile.
|
# Script used by the Dockerfile.
|
||||||
# See README.md to know how to create a Dolibarr env with docker
|
# See README.md to know how to create a Dolibarr env with docker
|
||||||
|
|
||||||
usermod -u "${HOST_USER_ID}" www-data
|
usermod -u ${HOST_USER_ID} www-data
|
||||||
groupmod -g "${HOST_USER_ID}" www-data
|
groupmod -g ${HOST_USER_ID} www-data
|
||||||
|
|
||||||
chgrp -hR www-data /var/www/html
|
chgrp -hR www-data /var/www/html
|
||||||
chmod g+rwx /var/www/html/conf
|
chmod g+rwx /var/www/html/conf
|
||||||
|
|
||||||
if [ ! -d /var/documents ]; then
|
if [ ! -d /var/documents ]; then
|
||||||
echo "[docker-run] => create volume directory /var/documents ..."
|
echo "[docker-run] => create volume directory /var/documents ..."
|
||||||
mkdir -p /var/documents
|
mkdir -p /var/documents
|
||||||
fi
|
fi
|
||||||
echo "[docker-run] => Set Permission to www-data for /var/documents"
|
echo "[docker-run] => Set Permission to www-data for /var/documents"
|
||||||
chown -R www-data:www-data /var/documents
|
chown -R www-data:www-data /var/documents
|
||||||
|
|
||||||
echo "[docker-run] => update '${PHP_INI_DIR}/conf.d/dolibarr-php.ini'"
|
if [ ! -f /usr/local/etc/php/php.ini ]; then
|
||||||
cat <<EOF > "${PHP_INI_DIR}/conf.d/dolibarr-php.ini"
|
cat <<EOF > /usr/local/etc/php/php.ini
|
||||||
date.timezone = ${PHP_INI_DATE_TIMEZONE:-UTC}
|
date.timezone = $PHP_INI_DATE_TIMEZONE
|
||||||
memory_limit = ${PHP_INI_MEMORY_LIMIT:-256M}
|
|
||||||
EOF
|
EOF
|
||||||
|
fi
|
||||||
cp /var/www/html/install/install.forced.docker.php /var/www/html/install/install.forced.php
|
|
||||||
|
|
||||||
exec apache2-foreground
|
exec apache2-foreground
|
||||||
|
|||||||
3
build/docker/mariadb/Dockerfile
Normal file
3
build/docker/mariadb/Dockerfile
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
FROM mariadb:latest
|
||||||
|
# Enable comented out UTF8 charset/collation options
|
||||||
|
RUN sed '/utf8/ s/^#//' /etc/mysql/mariadb.cnf >/tmp/t && mv /tmp/t /etc/mysql/mariadb.cnf
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
#--------------------------------------------------------------------
|
#--------------------------------------------------------------------
|
||||||
# Start the generation of the development documentation with doxygen
|
# Lance la generation de la doc dev doxygen
|
||||||
#--------------------------------------------------------------------
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
# Determine the patho of this script
|
# Detecte repertoire du script
|
||||||
($DIR=$0) =~ s/([^\/\\]+)$//;
|
($DIR=$0) =~ s/([^\/\\]+)$//;
|
||||||
$DIR||='.';
|
$DIR||='.';
|
||||||
$DIR =~ s/([^\/\\])[\\\/]+$/$1/;
|
$DIR =~ s/([^\/\\])[\\\/]+$/$1/;
|
||||||
|
|||||||
@@ -220,7 +220,6 @@ OPTIMIZE_OUTPUT_VHDL = NO
|
|||||||
# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
|
# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions
|
||||||
# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
|
# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
|
||||||
|
|
||||||
#EXTENSION_MAPPING = example=PHP
|
|
||||||
EXTENSION_MAPPING =
|
EXTENSION_MAPPING =
|
||||||
|
|
||||||
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
|
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
|
||||||
@@ -283,10 +282,10 @@ TYPEDEF_HIDES_STRUCT = NO
|
|||||||
# For small to medium size projects (<1000 input files) the default value is
|
# For small to medium size projects (<1000 input files) the default value is
|
||||||
# probably good enough. For larger projects a too small cache size can cause
|
# probably good enough. For larger projects a too small cache size can cause
|
||||||
# doxygen to be busy swapping symbols to and from disk most of the time
|
# doxygen to be busy swapping symbols to and from disk most of the time
|
||||||
# causing a significant performance penalty.
|
# causing a significant performance penality.
|
||||||
# If the system has enough physical memory increasing the cache will improve the
|
# If the system has enough physical memory increasing the cache will improve the
|
||||||
# performance by keeping more symbols in memory. Note that the value works on
|
# performance by keeping more symbols in memory. Note that the value works on
|
||||||
# a logarithmic scale so increasing the size by one will roughly double the
|
# a logarithmic scale so increasing the size by one will rougly double the
|
||||||
# memory usage. The cache size is given by this formula:
|
# memory usage. The cache size is given by this formula:
|
||||||
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
|
# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
|
||||||
# corresponding to a cache size of 2^16 = 65536 symbols
|
# corresponding to a cache size of 2^16 = 65536 symbols
|
||||||
@@ -603,7 +602,6 @@ INPUT_ENCODING = UTF-8
|
|||||||
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
|
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
|
||||||
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
|
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
|
||||||
|
|
||||||
#FILE_PATTERNS = *.php *.pl *.sql *.example
|
|
||||||
FILE_PATTERNS = *.php *.pl
|
FILE_PATTERNS = *.php *.pl
|
||||||
|
|
||||||
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
|
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ html {
|
|||||||
--toc-background: var(--side-nav-background);
|
--toc-background: var(--side-nav-background);
|
||||||
--toc-foreground: var(--side-nav-foreground);
|
--toc-foreground: var(--side-nav-foreground);
|
||||||
|
|
||||||
/* height of an item in any tree / collapsible table */
|
/* height of an item in any tree / collapsable table */
|
||||||
--tree-item-height: 30px;
|
--tree-item-height: 30px;
|
||||||
|
|
||||||
--memname-font-size: var(--code-font-size);
|
--memname-font-size: var(--code-font-size);
|
||||||
|
|||||||
@@ -43,5 +43,5 @@ DoliWampWillStartApacheMysql=L'instal·lador DoliWamp intentarà iniciar o reini
|
|||||||
OldVersionFoundAndMoveInNew=S'ha trobat una versió antiga de base de dades i ha estat moguda per a ser utilitzada per la nova versió de Dolibarr
|
OldVersionFoundAndMoveInNew=S'ha trobat una versió antiga de base de dades i ha estat moguda per a ser utilitzada per la nova versió de Dolibarr
|
||||||
OldVersionFoundButFailedToMoveInNew=S'ha trobat una versió antiga de base de dades, però no es pot moure per a ser utilitzada per la nova versió de Dolibarr
|
OldVersionFoundButFailedToMoveInNew=S'ha trobat una versió antiga de base de dades, però no es pot moure per a ser utilitzada per la nova versió de Dolibarr
|
||||||
|
|
||||||
DLLMissing=La teva instal·lació windows no té el component "Microsoft Visual C++ Redistributable for Visual Studio 2017". Instal·la primer la versió de 32-bit (vcredist_x86.exe) (pots trobar-la a https://www.microsoft.com/en-us/download/) i reiniciar després la instal·lació/actualització de DoliWamp.
|
DLLMissing=La teva instal·lació windows no té el component "Microsoft Visual C++ Redistributable for Visual Studio 2015". Instal·la primer la versió de 32-bit (vcredist_x86.exe) (pots trobar-la a https://www.microsoft.com/en-us/download/) i reiniciar després la instal·lació/actualització de DoliWamp.
|
||||||
ContinueAnyway=Continua igualment (el procés d'instal·lació podria fallar sense aquest prerequisit)
|
ContinueAnyway=Continua igualment (el procés d'instal·lació podria fallar sense aquest prerequisit)
|
||||||
|
|||||||
@@ -11,38 +11,38 @@ LaunchProgram=Launch %1
|
|||||||
AssocFileExtension=&Associate %1 with the %2 file extension
|
AssocFileExtension=&Associate %1 with the %2 file extension
|
||||||
AssocingFileExtension=Associating %1 with the %2 file extension...
|
AssocingFileExtension=Associating %1 with the %2 file extension...
|
||||||
|
|
||||||
YouWillInstallDoliWamp=You will install DoliWamp (so Dolibarr plus all required third-party software like Apache, MySQL and PHP) on your computer.
|
YouWillInstallDoliWamp=You will install DoliWamp (so Dolibarr + all required third party software like Apache, Mysql and PHP) on your computer.
|
||||||
ThisAssistantInstallOrUpgrade=WARNING: Using an ERP CRM installed on a local computer can be dangerous: if your computer breaks down, you can lose all your data. Do this if you are ready to manage backups yourself seriously. If not, use an installation in SaaS instead (see https://saas.dolibarr.org).
|
ThisAssistantInstallOrUpgrade=WARNING: Using an ERP CRM installed on a local computer can be dangerous: if your computer break down, you can lose all your data. Do this if you are ready to manage backup yourself seriously. If not, use an installation in Saas instead (see https://saas.dolibarr.org).
|
||||||
IfYouHaveTechnicalKnowledge=Moreover, if you have technical knowledge and want to manage Apache, MySQL and PHP yourself, you should not use this assistant and instead make a manual installation of Dolibarr on your existing server with Apache, MySQL and PHP.
|
IfYouHaveTechnicalKnowledge=Moreover, if you have technical knowledges and want to manage your Apache, Mysql and PHP yourself, you should not use this assistant and make a manual installation of Dolibarr on your existing server with Apache, Mysql and PHP.
|
||||||
ButIfYouLook=But if you are looking for an automatic setup on your local computer, you're on the right path...
|
ButIfYouLook=But if you look for an automatic setup on your local computer, you''re on the good way...
|
||||||
DoYouWantToStart=Do you want to start the installation process?
|
DoYouWantToStart=Do you want to start installation process ?
|
||||||
|
|
||||||
TechnicalParameters=Technical parameters
|
TechnicalParameters=Technical parameters
|
||||||
IfFirstInstall=If this is the first install, please specify some technical parameters. If you don't understand, are not sure, or are doing an upgrade, just keep the default values.
|
IfFirstInstall=If first install, please specify some technical parameters. If you don't understand, are not sure, or are doing an upgrade, just leave the default values.
|
||||||
|
|
||||||
; WARNING !!! STRINGS HERE MUST BE LOWER THAN 60 CHARACTERS
|
; WARNING !!! STRINGS HERE MUST BE LOWER THAN 60 CHARACTERS
|
||||||
SMTPServer=SMTP server (your own or ISP SMTP server, first install only):
|
SMTPServer=SMTP server (your own or ISP SMTP server, first install only) :
|
||||||
ApachePort=Apache port (first install only, common choice is 80):
|
ApachePort=Apache port (first install only, common choice is 80) :
|
||||||
MySqlPort=MySQL port (first install only, common choice is 3306):
|
MySqlPort=MySql port (first install only, common choice is 3306) :
|
||||||
MySqlPassword=MySQL server and database password you want for root (first install only):
|
MySqlPassword=MySql server and database password you want for root (first install only):
|
||||||
|
|
||||||
FailedToDeleteLock=Failed to delete the file %1/www/dolibarr/install.lock. You can ignore this warning but you may have to remove the file manually later when asked. Click OK to continue...
|
FailedToDeleteLock=Failed to delete the file %1/www/dolibarr/install.lock. You can ignore warning but you may have to remove it manually later when asked. Click OK to continue...
|
||||||
|
|
||||||
PortAlreadyInUse=Port %1 seems to already be in use. You should cancel to go back and choose another value for %2 port. Cancel choice and choose another value?
|
PortAlreadyInUse=Port %1 seems to be already in use. You should cancel to go back and choose another value for %2 port. Cancel choice and choose another value ?
|
||||||
|
|
||||||
FirefoxDetected=Firefox has been detected on your computer. Would you like to use it as the default browser for Dolibarr?
|
FirefoxDetected=Firefox has been detected on your computer. Would you like to use it as the default browser for Dolibarr ?
|
||||||
ChromeDetected=Chrome has been detected on your computer. Would you like to use it as the default browser for Dolibarr?
|
ChromeDetected=Chrome has been detected on your computer. Would you like to use it as the default browser for Dolibarr ?
|
||||||
MicrosoftEdgeDetected=Microsoft Edge has been detected on your computer. Would you like to use it as the default browser for Dolibarr?
|
MicrosoftEdgeDetected=Microsoft Edge has been detected on your computer. Would you like to use it as the default browser for Dolibarr ?
|
||||||
ChooseDefaultBrowser=Please choose your default browser (iexplore.exe, firefox.exe, chrome.exe, MicrosoftEdge.exe...). If you are not sure, just click Open:
|
ChooseDefaultBrowser=Please choose your default browser (iexplore.exe, firefox.exe, chrome.exe, MicrosoftEdge.exe...). If you are not sure, just click Open :
|
||||||
|
|
||||||
LaunchNow=Launch Dolibarr now
|
LaunchNow=Launch Dolibarr now
|
||||||
|
|
||||||
ProgramHasBeenRemoved=Dolibarr's program files have been removed. However, all your data files are still in directory %1. You must remove this directory manually for a complete uninstall.
|
ProgramHasBeenRemoved=Dolibarr program files have been removed. However, all your data files are still in directory %1. You must remove this directory manually for a complete uninstall.
|
||||||
|
|
||||||
DoliWampWillStartApacheMysql=DoliWamp installer will now start or restart Apache and MySQL. This may take from several seconds to one minute. Start to install or upgrade the web and database server required by Dolibarr?
|
DoliWampWillStartApacheMysql=DoliWamp installer will now start or restart Apache and Mysql, this may last from several seconds to one minute after this confirmation. Start to install or upgrade the web and database server required by Dolibarr ?
|
||||||
|
|
||||||
OldVersionFoundAndMoveInNew=An old database version has been found and moved to be used by the new Dolibarr version
|
OldVersionFoundAndMoveInNew=An old database version has been found and moved to be used by new Dolibarr version
|
||||||
OldVersionFoundButFailedToMoveInNew=An old database version has been found but could not be moved to be used with the new Dolibarr version
|
OldVersionFoundButFailedToMoveInNew=An old database version has been found but could not be moved to be used with new Dolibarr version
|
||||||
|
|
||||||
DLLMissing=Your Windows installation is missing The "Microsoft Visual C++ Redistributable for Visual Studio 2017" component. Please install the 32-bit version (vcredist_x86.exe) first (you can find it at https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist?view=msvc-170) and restart DoliWamp installation/upgrade after.
|
DLLMissing=Your Windows installation is missing The "Micrsoft Visual C++ Redistributable for Visual Studio 2015" component. Please install the 32-bit version (vcredist_x86.exe) first (you can find it at https://www.microsoft.com/en-us/download/) and restart DoliWamp installation/upgrade after.
|
||||||
ContinueAnyway=Continue anyway (install process may fail without this prerequisite)
|
ContinueAnyway=Continue anyway (install process may fails without this prerequisite)
|
||||||
|
|||||||
@@ -44,5 +44,5 @@ DoliWampWillStartApacheMysql=L'installeur DoliWamp va maintenant d
|
|||||||
OldVersionFoundAndMoveInNew=Une ancienne version de base a <20>t<EFBFBD> trouv<75>e et d<>plac<61>e pour fonctionner avec la nouvelle version de Dolibarr.
|
OldVersionFoundAndMoveInNew=Une ancienne version de base a <20>t<EFBFBD> trouv<75>e et d<>plac<61>e pour fonctionner avec la nouvelle version de Dolibarr.
|
||||||
OldVersionFoundButFailedToMoveInNew=Une ancienne version de base a <20>t<EFBFBD> trouv<75>e mais ne peut <20>tre d<>plac<61>e pour <20>tre utilis<69>e avec la nouvelle version de Dolibarr.
|
OldVersionFoundButFailedToMoveInNew=Une ancienne version de base a <20>t<EFBFBD> trouv<75>e mais ne peut <20>tre d<>plac<61>e pour <20>tre utilis<69>e avec la nouvelle version de Dolibarr.
|
||||||
|
|
||||||
DLLMissing=L'installation de votre Windows est incompl<70>te. Il manque le composant "Micrsoft Visual C++ Redistributable for Visual Studio 2017". Installer la version 32-bit (vcredist_x86.exe) d'abord (vous pourrez le trouver <20> https://www.microsoft.com/fr-fr/download/) puis relancer l'installation de DoliWamp apr<70>s.
|
DLLMissing=L'installation de votre Windows est incompl<70>te. Il manque le composant "Micrsoft Visual C++ Redistributable for Visual Studio 2015". Installer la version 32-bit (vcredist_x86.exe) d'abord (vous pourrez le trouver <20> https://www.microsoft.com/fr-fr/download/) puis relancer l'installation de DoliWamp apr<70>s.
|
||||||
ContinueAnyway=Continuer malgr<67> tout (le process d'installaton <20>chouera)
|
ContinueAnyway=Continuer malgr<67> tout (le process d'installaton <20>chouera)
|
||||||
|
|||||||
@@ -43,5 +43,5 @@ DoliWampWillStartApacheMysql=Die DoliWamp-Installation wird nun starten oder Apa
|
|||||||
OldVersionFoundAndMoveInNew=Eine alte Datenbankversion wurde gefunden und verschoben, um von der neuen Dolibarr-Version verwendet zu werden.
|
OldVersionFoundAndMoveInNew=Eine alte Datenbankversion wurde gefunden und verschoben, um von der neuen Dolibarr-Version verwendet zu werden.
|
||||||
OldVersionFoundButFailedToMoveInNew=Eine alte Datenbankversion wurde gefunden, konnte jedoch nicht verschoben werden, um mit der neuen Dolibarr-Version verwendet zu werden.
|
OldVersionFoundButFailedToMoveInNew=Eine alte Datenbankversion wurde gefunden, konnte jedoch nicht verschoben werden, um mit der neuen Dolibarr-Version verwendet zu werden.
|
||||||
|
|
||||||
DLLMissing=Your Windows installation is missing The "Micrsoft Visual C++ Redistributable for Visual Studio 2017" component. Please install the 32-bit version (vcredist_x86.exe) first (you can find it at https://www.microsoft.com/en-us/download/) and restart DoliWamp installation/upgrade after.
|
DLLMissing=Your Windows installation is missing The "Micrsoft Visual C++ Redistributable for Visual Studio 2015" component. Please install the 32-bit version (vcredist_x86.exe) first (you can find it at https://www.microsoft.com/en-us/download/) and restart DoliWamp installation/upgrade after.
|
||||||
ContinueAnyway=Fahren Sie trotzdem fort (der Installationsvorgang kann ohne diese Voraussetzung fehlschlagen).
|
ContinueAnyway=Fahren Sie trotzdem fort (der Installationsvorgang kann ohne diese Voraussetzung fehlschlagen).
|
||||||
|
|||||||
@@ -43,5 +43,5 @@ DoliWampWillStartApacheMysql=El instalador DoliWamp intentará iniciar o reinici
|
|||||||
OldVersionFoundAndMoveInNew=Se ha encontrado una versión antigua de base de datos y ha sido movida para ser utilizada por la nueva versión de Dolibarr
|
OldVersionFoundAndMoveInNew=Se ha encontrado una versión antigua de base de datos y ha sido movida para ser utilizada por la nueva versión de Dolibarr
|
||||||
OldVersionFoundButFailedToMoveInNew=Se ha encontrado una versión antigua de base de datos, pero no se pudo mover para ser utilizada por la nueva versión de Dolibarr
|
OldVersionFoundButFailedToMoveInNew=Se ha encontrado una versión antigua de base de datos, pero no se pudo mover para ser utilizada por la nueva versión de Dolibarr
|
||||||
|
|
||||||
DLLMissing=Su instalación Windows no tiene el componente "Microsoft Visual C++ Redistributable for Visual Studio 2017". Instale primero la versión de 32-bit (vcredist_x86.exe) (puedes encontrarlo en https://www.microsoft.com/en-us/download/) y reiniciar después la instalación/actualización de DoliWamp.
|
DLLMissing=Su instalación Windows no tiene el componente "Microsoft Visual C++ Redistributable for Visual Studio 2015". Instale primero la versión de 32-bit (vcredist_x86.exe) (puedes encontrarlo en https://www.microsoft.com/en-us/download/) y reiniciar después la instalación/actualización de DoliWamp.
|
||||||
ContinueAnyway=Continua igualmente (el proceso de instalación podría fallar sin este prerequisito)
|
ContinueAnyway=Continua igualmente (el proceso de instalación podría fallar sin este prerequisito)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#-------------------------------------------------------------------#
|
#-------------------------------------------------------------------#
|
||||||
# Makefile to build UsedPort exe
|
# Makefile
|
||||||
#-------------------------------------------------------------------#
|
#-------------------------------------------------------------------#
|
||||||
# 1.0 Laurent Destailleur Creation
|
# 1.0 Laurent Destailleur Creation
|
||||||
#-------------------------------------------------------------------#
|
#-------------------------------------------------------------------#
|
||||||
|
|||||||
@@ -253,7 +253,6 @@ int main(int argc, char **argv)
|
|||||||
//----------------
|
//----------------
|
||||||
int noarg,curseurarg,help=0,invalide=0;
|
int noarg,curseurarg,help=0,invalide=0;
|
||||||
char option;
|
char option;
|
||||||
char *endptr;
|
|
||||||
|
|
||||||
for (noarg=1;noarg<argc;noarg++) {
|
for (noarg=1;noarg<argc;noarg++) {
|
||||||
if (((argv[noarg][0])=='/') || ((argv[noarg][0])=='-')) {
|
if (((argv[noarg][0])=='/') || ((argv[noarg][0])=='-')) {
|
||||||
@@ -262,7 +261,7 @@ for (noarg=1;noarg<argc;noarg++) {
|
|||||||
if (strlen(argv[noarg]) < 3) { ++noarg; curseurarg=0; }
|
if (strlen(argv[noarg]) < 3) { ++noarg; curseurarg=0; }
|
||||||
switch (option) {
|
switch (option) {
|
||||||
case 's': strncpy(Host,argv[noarg]+curseurarg,sizeof(Host)); break;
|
case 's': strncpy(Host,argv[noarg]+curseurarg,sizeof(Host)); break;
|
||||||
case 'p': Port=strtol(argv[noarg] + curseurarg, &endptr, 10); break; // Get port from "-p80" (curseurarg = 2) or "-p 80" (curseurarg = 0)
|
case 'p': Port=atoi(argv[noarg]+curseurarg); break;
|
||||||
case '?': help=-1;break; // Help
|
case '?': help=-1;break; // Help
|
||||||
case 'h': help=-1;break; // Help
|
case 'h': help=-1;break; // Help
|
||||||
case 'v': help=-1;break; // Help
|
case 'v': help=-1;break; // Help
|
||||||
@@ -271,20 +270,6 @@ for (noarg=1;noarg<argc;noarg++) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for conversion errors
|
|
||||||
if (*endptr != '\0') {
|
|
||||||
// Handle error: Invalid input format
|
|
||||||
printf("Invalid port number format\n");
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check for overflow
|
|
||||||
if (Port < 0 || Port > INT_MAX) {
|
|
||||||
// Handle error: Port number out of range
|
|
||||||
printf("Port number out of range\n");
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
help=!(Port > 0);
|
help=!(Port > 0);
|
||||||
|
|
||||||
// Show usage
|
// Show usage
|
||||||
|
|||||||
@@ -100,9 +100,9 @@ Source: "build\exe\doliwamp\UsedPort.exe"; DestDir: "{app}\"; Flags: ignoreversi
|
|||||||
|
|
||||||
; Apache, Php, Mysql
|
; Apache, Php, Mysql
|
||||||
; Put here path of Wampserver applications
|
; Put here path of Wampserver applications
|
||||||
; Value OK: apache 2.4.51, php 7.4.26, mariadb10.6.5 (wampserver3.2.6_x64.exe)
|
; Value OK: apache 2.4.51, php 7.3.33, mariadb10.6.5 (wampserver3.2.6_x64.exe)
|
||||||
Source: "C:\wamp64\bin\apache\apache2.4.51\*.*"; DestDir: "{app}\bin\apache\apache2.4.51"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,httpd.conf,wampserver.conf,*.log,*_log"
|
Source: "C:\wamp64\bin\apache\apache2.4.51\*.*"; DestDir: "{app}\bin\apache\apache2.4.51"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,httpd.conf,wampserver.conf,*.log,*_log"
|
||||||
Source: "C:\wamp64\bin\php\php7.4.26\*.*"; DestDir: "{app}\bin\php\php7.4.26"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,phpForApache.ini,wampserver.conf,*.log,*_log"
|
Source: "C:\wamp64\bin\php\php7.3.33\*.*"; DestDir: "{app}\bin\php\php7.3.33"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,phpForApache.ini,wampserver.conf,*.log,*_log"
|
||||||
Source: "C:\wamp64\bin\mariadb\mariadb10.6.5\*.*"; DestDir: "{app}\bin\mariadb\mariadb10.6.5"; Flags: ignoreversion recursesubdirs; Excludes: "my.ini,data\*,wampserver.conf,*.log,*_log,MySQLInstanceConfig.exe"
|
Source: "C:\wamp64\bin\mariadb\mariadb10.6.5\*.*"; DestDir: "{app}\bin\mariadb\mariadb10.6.5"; Flags: ignoreversion recursesubdirs; Excludes: "my.ini,data\*,wampserver.conf,*.log,*_log,MySQLInstanceConfig.exe"
|
||||||
|
|
||||||
; Mysql data files (does not overwrite if exists)
|
; Mysql data files (does not overwrite if exists)
|
||||||
@@ -121,7 +121,7 @@ Source: "build\exe\doliwamp\dolibarr.conf.install"; DestDir: "{app}\alias"; Flag
|
|||||||
Source: "build\exe\doliwamp\httpd.conf.install"; DestDir: "{app}\bin\apache\apache2.4.51\conf"; Flags: ignoreversion;
|
Source: "build\exe\doliwamp\httpd.conf.install"; DestDir: "{app}\bin\apache\apache2.4.51\conf"; Flags: ignoreversion;
|
||||||
Source: "build\exe\doliwamp\my.ini.install"; DestDir: "{app}\bin\mysql\mysql5.0.45"; Flags: ignoreversion;
|
Source: "build\exe\doliwamp\my.ini.install"; DestDir: "{app}\bin\mysql\mysql5.0.45"; Flags: ignoreversion;
|
||||||
Source: "build\exe\doliwamp\my.ini.install"; DestDir: "{app}\bin\mariadb\mariadb10.6.5"; Flags: ignoreversion;
|
Source: "build\exe\doliwamp\my.ini.install"; DestDir: "{app}\bin\mariadb\mariadb10.6.5"; Flags: ignoreversion;
|
||||||
Source: "build\exe\doliwamp\php.ini.install"; DestDir: "{app}\bin\php\php7.4.26"; Flags: ignoreversion;
|
Source: "build\exe\doliwamp\php.ini.install"; DestDir: "{app}\bin\php\php7.3.33"; Flags: ignoreversion;
|
||||||
Source: "build\exe\doliwamp\index.php.install"; DestDir: "{app}\www"; Flags: ignoreversion;
|
Source: "build\exe\doliwamp\index.php.install"; DestDir: "{app}\www"; Flags: ignoreversion;
|
||||||
Source: "build\exe\doliwamp\install.forced.php.install"; DestDir: "{app}\www\dolibarr\htdocs\install"; Flags: ignoreversion;
|
Source: "build\exe\doliwamp\install.forced.php.install"; DestDir: "{app}\www\dolibarr\htdocs\install"; Flags: ignoreversion;
|
||||||
Source: "build\exe\doliwamp\openssl.conf"; DestDir: "{app}"; Flags: ignoreversion;
|
Source: "build\exe\doliwamp\openssl.conf"; DestDir: "{app}"; Flags: ignoreversion;
|
||||||
@@ -228,7 +228,7 @@ begin
|
|||||||
|
|
||||||
//version des applis, a modifier pour chaque version de WampServer 2
|
//version des applis, a modifier pour chaque version de WampServer 2
|
||||||
apacheVersion := '2.4.51';
|
apacheVersion := '2.4.51';
|
||||||
phpVersion := '7.4.26' ;
|
phpVersion := '7.3.33' ;
|
||||||
mysqlVersion := '10.6.5';
|
mysqlVersion := '10.6.5';
|
||||||
|
|
||||||
smtpServer := 'localhost';
|
smtpServer := 'localhost';
|
||||||
|
|||||||
@@ -260,7 +260,7 @@ if (isset($_GET['askhelp']))
|
|||||||
// Show PHPInfo
|
// Show PHPInfo
|
||||||
if (isset($_GET['phpinfo']))
|
if (isset($_GET['phpinfo']))
|
||||||
{
|
{
|
||||||
phpinfo(INFO_GENERAL|INFO_MODULES);
|
phpinfo();
|
||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -304,15 +304,22 @@ if (isset($_GET['img']))
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Definition of language and texts
|
// Definition de la langue et des textes
|
||||||
|
|
||||||
if (isset ($_GET['lang'])) {
|
if (isset ($_GET['lang']))
|
||||||
$langue = preg_replace('/[^a-z_]/i', '', $_GET['lang']);
|
{
|
||||||
} elseif (preg_match("/^fr/", $_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
|
$langue = $_GET['lang'];
|
||||||
|
}
|
||||||
|
elseif (preg_match("/^fr/", $_SERVER['HTTP_ACCEPT_LANGUAGE']))
|
||||||
|
{
|
||||||
$langue = 'fr';
|
$langue = 'fr';
|
||||||
} elseif (preg_match("/^es/", $_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
|
}
|
||||||
|
elseif (preg_match("/^es/", $_SERVER['HTTP_ACCEPT_LANGUAGE']))
|
||||||
|
{
|
||||||
$langue = 'es';
|
$langue = 'es';
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
$langue = 'en';
|
$langue = 'en';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -320,25 +327,29 @@ if (isset ($_GET['lang'])) {
|
|||||||
// Read PHP extensions
|
// Read PHP extensions
|
||||||
$loaded_extensions = get_loaded_extensions();
|
$loaded_extensions = get_loaded_extensions();
|
||||||
$phpExtContents='';
|
$phpExtContents='';
|
||||||
foreach ($loaded_extensions as $extension) {
|
foreach ($loaded_extensions as $extension)
|
||||||
$phpExtContents .= "<li>${extension}</li>";
|
$phpExtContents .= "<li>${extension}</li>";
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Read alias directory
|
// Read alias directory
|
||||||
$listoffile=array();
|
$listoffile=array();
|
||||||
$aliasarray=array();
|
$aliasarray=array();
|
||||||
$aliasContents='';
|
$aliasContents='';
|
||||||
if (is_dir($aliasDir)) {
|
if (is_dir($aliasDir))
|
||||||
|
{
|
||||||
$handle=opendir($aliasDir);
|
$handle=opendir($aliasDir);
|
||||||
if (is_resource($handle)) {
|
if (is_resource($handle))
|
||||||
while ($file = readdir($handle)) {
|
{
|
||||||
|
while ($file = readdir($handle))
|
||||||
|
{
|
||||||
$listoffiles[]=$file;
|
$listoffiles[]=$file;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sort($listoffiles);
|
sort($listoffiles);
|
||||||
|
|
||||||
foreach($listoffiles as $file) {
|
foreach($listoffiles as $file)
|
||||||
|
{
|
||||||
if (is_file($aliasDir.$file) && preg_match('/\.conf/',$file))
|
if (is_file($aliasDir.$file) && preg_match('/\.conf/',$file))
|
||||||
{
|
{
|
||||||
$msg = '';
|
$msg = '';
|
||||||
@@ -363,7 +374,8 @@ if (!isset($aliasContents))
|
|||||||
// Read projects in www dir
|
// Read projects in www dir
|
||||||
$listoffiles=array();
|
$listoffiles=array();
|
||||||
$handle=opendir(".");
|
$handle=opendir(".");
|
||||||
if (is_resource($handle)) {
|
if (is_resource($handle))
|
||||||
|
{
|
||||||
while ($file = readdir($handle))
|
while ($file = readdir($handle))
|
||||||
{
|
{
|
||||||
$listoffiles[]=$file;
|
$listoffiles[]=$file;
|
||||||
@@ -371,7 +383,8 @@ if (is_resource($handle)) {
|
|||||||
closedir($handle);
|
closedir($handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach($listoffiles as $file) {
|
foreach($listoffiles as $file)
|
||||||
|
{
|
||||||
if (is_dir($file) && !in_array($file,$projectsListIgnore) && !in_array($file,$aliasarray))
|
if (is_dir($file) && !in_array($file,$projectsListIgnore) && !in_array($file,$aliasarray))
|
||||||
{
|
{
|
||||||
$projectContents .= '<tr><td><ul class="projects">';
|
$projectContents .= '<tr><td><ul class="projects">';
|
||||||
@@ -384,9 +397,9 @@ foreach($listoffiles as $file) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($projectContents)) {
|
if (!isset($projectContents))
|
||||||
$projectContents = '<tr><td colspan="3">'.$langues[$langue]['txtNoProjet'].'</td></tr>';
|
$projectContents = '<tr><td colspan="3">'.$langues[$langue]['txtNoProjet'].'</td></tr>';
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$nameServer=getenv("COMPUTERNAME");
|
$nameServer=getenv("COMPUTERNAME");
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ safe_mode_protected_env_vars = LD_LIBRARY_PATH
|
|||||||
; and below. This directive makes most sense if used in a per-directory
|
; and below. This directive makes most sense if used in a per-directory
|
||||||
; or per-virtualhost web server configuration file. This directive is
|
; or per-virtualhost web server configuration file. This directive is
|
||||||
; *NOT* affected by whether Safe Mode is turned On or Off.
|
; *NOT* affected by whether Safe Mode is turned On or Off.
|
||||||
open_basedir = "WAMPROOT;C:\WINDOWS\TEMP"
|
open_basedir = "WAMPROOT"
|
||||||
|
|
||||||
; This directive allows you to disable certain functions for security reasons.
|
; This directive allows you to disable certain functions for security reasons.
|
||||||
; It receives a comma-delimited list of function names. This directive is
|
; It receives a comma-delimited list of function names. This directive is
|
||||||
|
|||||||
@@ -22,18 +22,18 @@
|
|||||||
* \brief This script create a xml checksum file
|
* \brief This script create a xml checksum file
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!defined('NOREQUIREDB')) {
|
if (! defined('NOREQUIREDB')) {
|
||||||
define('NOREQUIREDB', '1'); // Do not create database handler $db
|
define('NOREQUIREDB', '1'); // Do not create database handler $db
|
||||||
}
|
}
|
||||||
|
|
||||||
$sapi_type = php_sapi_name();
|
$sapi_type = php_sapi_name();
|
||||||
$script_file = basename(__FILE__);
|
$script_file = basename(__FILE__);
|
||||||
$path = dirname(__FILE__).'/';
|
$path=dirname(__FILE__).'/';
|
||||||
|
|
||||||
// Test if batch mode
|
// Test if batch mode
|
||||||
if (substr($sapi_type, 0, 3) == 'cgi') {
|
if (substr($sapi_type, 0, 3) == 'cgi') {
|
||||||
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
|
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
|
||||||
exit(1);
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once $path."../htdocs/master.inc.php";
|
require_once $path."../htdocs/master.inc.php";
|
||||||
@@ -44,18 +44,18 @@ require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php";
|
|||||||
* Main
|
* Main
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$includecustom = 0;
|
$includecustom=0;
|
||||||
$includeconstants = array();
|
$includeconstants=array();
|
||||||
$buildzip = 0;
|
$buildzip=0;
|
||||||
|
|
||||||
if (empty($argv[1])) {
|
if (empty($argv[1])) {
|
||||||
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value] [buildzip=1]\n";
|
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value] [buildzip=1]\n";
|
||||||
print "Example: ".$script_file." release=6.0.0 includecustom=1 includeconstant=FR:INVOICE_CAN_ALWAYS_BE_REMOVED:0 includeconstant=all:MAILING_NO_USING_PHPMAIL:1\n";
|
print "Example: ".$script_file." release=6.0.0 includecustom=1 includeconstant=FR:INVOICE_CAN_ALWAYS_BE_REMOVED:0 includeconstant=all:MAILING_NO_USING_PHPMAIL:1\n";
|
||||||
exit(1);
|
exit -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$i = 0;
|
$i=0;
|
||||||
$result = array();
|
$result = array();
|
||||||
while ($i < $argc) {
|
while ($i < $argc) {
|
||||||
if (!empty($argv[$i])) {
|
if (!empty($argv[$i])) {
|
||||||
@@ -71,10 +71,10 @@ while ($i < $argc) {
|
|||||||
$includeconstants[$i] = $result["includeconstant"];
|
$includeconstants[$i] = $result["includeconstant"];
|
||||||
}
|
}
|
||||||
if (!empty($result["buildzip"])) {
|
if (!empty($result["buildzip"])) {
|
||||||
$buildzip = 1;
|
$buildzip=1;
|
||||||
}
|
}
|
||||||
if (preg_match('/includeconstant=/', strval($argv[$i]))) {
|
if (preg_match('/includeconstant=/', strval($argv[$i]))) {
|
||||||
$tmp = explode(':', $result['includeconstant'], 3); // $includeconstant has been set with previous parse_str()
|
$tmp=explode(':', $result['includeconstant'], 3); // $includeconstant has been set with previous parse_str()
|
||||||
if (count($tmp) != 3) {
|
if (count($tmp) != 3) {
|
||||||
print "Error: Bad parameter includeconstant=".$result['includeconstant'] ."\n";
|
print "Error: Bad parameter includeconstant=".$result['includeconstant'] ."\n";
|
||||||
exit -1;
|
exit -1;
|
||||||
@@ -87,41 +87,41 @@ while ($i < $argc) {
|
|||||||
if (empty($release)) {
|
if (empty($release)) {
|
||||||
print "Error: Missing release parameter\n";
|
print "Error: Missing release parameter\n";
|
||||||
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
||||||
exit(2);
|
exit -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
$savrelease = $release;
|
$savrelease = $release;
|
||||||
|
|
||||||
// If release is auto, we take current version
|
// If release is auto, we take current version
|
||||||
$tmpver = explode('-', $release, 2);
|
$tmpver=explode('-', $release, 2);
|
||||||
if ($tmpver[0] == 'auto' || $tmpver[0] == 'autostable') {
|
if ($tmpver[0] == 'auto' || $tmpver[0] == 'autostable') {
|
||||||
$release = DOL_VERSION;
|
$release=DOL_VERSION;
|
||||||
if ($tmpver[1] && $tmpver[0] == 'auto') {
|
if ($tmpver[1] && $tmpver[0] == 'auto') {
|
||||||
$release .= '-'.$tmpver[1];
|
$release.='-'.$tmpver[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($includecustom)) {
|
if (empty($includecustom)) {
|
||||||
$tmpverbis = explode('-', $release, 2);
|
$tmpverbis=explode('-', $release, 2);
|
||||||
if (empty($tmpverbis[1]) || $tmpver[0] == 'autostable') {
|
if (empty($tmpverbis[1]) || $tmpver[0] == 'autostable') {
|
||||||
if (DOL_VERSION != $tmpverbis[0] && $savrelease != 'auto') {
|
if (DOL_VERSION != $tmpverbis[0] && $savrelease != 'auto') {
|
||||||
print 'Error: When parameter "includecustom" is not set and there is no suffix in release parameter, version declared into filefunc.in.php ('.DOL_VERSION.') must be exact same value than "release" parameter ('.$tmpverbis[0].')'."\n";
|
print 'Error: When parameter "includecustom" is not set and there is no suffix in release parameter, version declared into filefunc.in.php ('.DOL_VERSION.') must be exact same value than "release" parameter ('.$tmpverbis[0].')'."\n";
|
||||||
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
||||||
exit(3);
|
exit -1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$tmpverter = explode('-', DOL_VERSION, 2);
|
$tmpverter=explode('-', DOL_VERSION, 2);
|
||||||
if ($tmpverter[0] != $tmpverbis[0]) {
|
if ($tmpverter[0] != $tmpverbis[0]) {
|
||||||
print 'Error: When parameter "includecustom" is not set, version declared into filefunc.in.php ('.DOL_VERSION.') must have value without prefix ('.$tmpverter[0].') that is exact same value than "release" parameter ('.$tmpverbis[0].')'."\n";
|
print 'Error: When parameter "includecustom" is not set, version declared into filefunc.in.php ('.DOL_VERSION.') must have value without prefix ('.$tmpverter[0].') that is exact same value than "release" parameter ('.$tmpverbis[0].')'."\n";
|
||||||
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
||||||
exit(4);
|
exit -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!preg_match('/'.preg_quote(DOL_VERSION, '/').'-/', $release)) {
|
if (! preg_match('/'.preg_quote(DOL_VERSION, '/').'-/', $release)) {
|
||||||
print 'Error: When parameter "includecustom" is set, version declared into filefunc.inc.php ('.DOL_VERSION.') must be used with a suffix into "release" parameter (ex: '.DOL_VERSION.'-mydistrib).'."\n";
|
print 'Error: When parameter "includecustom" is set, version declared into filefunc.inc.php ('.DOL_VERSION.') must be used with a suffix into "release" parameter (ex: '.DOL_VERSION.'-mydistrib).'."\n";
|
||||||
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
print "Usage: ".$script_file." release=autostable|auto[-mybuild]|x.y.z[-mybuild] [includecustom=1] [includeconstant=CC:MY_CONF_NAME:value]\n";
|
||||||
exit(5);
|
exit -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,17 +137,17 @@ foreach ($includeconstants as $countrycode => $tmp) {
|
|||||||
print "\n";
|
print "\n";
|
||||||
|
|
||||||
//$outputfile=dirname(__FILE__).'/../htdocs/install/filelist-'.$release.'.xml';
|
//$outputfile=dirname(__FILE__).'/../htdocs/install/filelist-'.$release.'.xml';
|
||||||
$outputdir = dirname(dirname(__FILE__)).'/htdocs/install';
|
$outputdir=dirname(dirname(__FILE__)).'/htdocs/install';
|
||||||
print 'Delete current files '.$outputdir.'/filelist*.xml*'."\n";
|
print 'Delete current files '.$outputdir.'/filelist*.xml*'."\n";
|
||||||
dol_delete_file($outputdir.'/filelist*.xml*', 0, 1, 1);
|
dol_delete_file($outputdir.'/filelist*.xml*', 0, 1, 1);
|
||||||
|
|
||||||
$checksumconcat = array();
|
$checksumconcat=array();
|
||||||
|
|
||||||
$outputfile = $outputdir.'/filelist-'.$release.'.xml';
|
$outputfile=$outputdir.'/filelist-'.$release.'.xml';
|
||||||
$fp = fopen($outputfile, 'w');
|
$fp = fopen($outputfile, 'w');
|
||||||
if (empty($fp)) {
|
if (empty($fp)) {
|
||||||
print 'Failed to open file '.$outputfile."\n";
|
print 'Failed to open file '.$outputfile."\n";
|
||||||
exit(6);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
fputs($fp, '<?xml version="1.0" encoding="UTF-8" ?>'."\n");
|
fputs($fp, '<?xml version="1.0" encoding="UTF-8" ?>'."\n");
|
||||||
@@ -156,8 +156,8 @@ fputs($fp, '<checksum_list version="'.$release.'" date="'.dol_print_date(dol_now
|
|||||||
foreach ($includeconstants as $countrycode => $tmp) {
|
foreach ($includeconstants as $countrycode => $tmp) {
|
||||||
fputs($fp, '<dolibarr_constants country="'.$countrycode.'">'."\n");
|
fputs($fp, '<dolibarr_constants country="'.$countrycode.'">'."\n");
|
||||||
foreach ($tmp as $constname => $constvalue) {
|
foreach ($tmp as $constname => $constvalue) {
|
||||||
$valueforchecksum = (empty($constvalue) ? '0' : $constvalue);
|
$valueforchecksum=(empty($constvalue)?'0':$constvalue);
|
||||||
$checksumconcat[] = $valueforchecksum;
|
$checksumconcat[]=$valueforchecksum;
|
||||||
fputs($fp, ' <constant name="'.$constname.'">'.$valueforchecksum.'</constant>'."\n");
|
fputs($fp, ' <constant name="'.$constname.'">'.$valueforchecksum.'</constant>'."\n");
|
||||||
}
|
}
|
||||||
fputs($fp, '</dolibarr_constants>'."\n");
|
fputs($fp, '</dolibarr_constants>'."\n");
|
||||||
@@ -172,26 +172,26 @@ $files = new RegexIterator($iterator1, '#^(?:[A-Z]:)?(?:/(?!(?:'.($includecustom
|
|||||||
*/
|
*/
|
||||||
// Define qualified files (must be same than into generate_filelist_xml.php and in api_setup.class.php)
|
// Define qualified files (must be same than into generate_filelist_xml.php and in api_setup.class.php)
|
||||||
$regextoinclude = '\.(php|php3|php4|php5|phtml|phps|phar|inc|css|scss|html|xml|js|json|tpl|jpg|jpeg|png|gif|ico|sql|lang|txt|yml|bak|md|mp3|mp4|wav|mkv|z|gz|zip|rar|tar|less|svg|eot|woff|woff2|ttf|manifest)$';
|
$regextoinclude = '\.(php|php3|php4|php5|phtml|phps|phar|inc|css|scss|html|xml|js|json|tpl|jpg|jpeg|png|gif|ico|sql|lang|txt|yml|bak|md|mp3|mp4|wav|mkv|z|gz|zip|rar|tar|less|svg|eot|woff|woff2|ttf|manifest)$';
|
||||||
$regextoexclude = '('.($includecustom ? '' : 'custom|').'documents|conf|install|dejavu-fonts-ttf-.*|public\/test|sabre\/sabre\/.*\/tests|Shared\/PCLZip|nusoap\/lib\/Mail|php\/example|php\/test|geoip\/sample.*\.php|ckeditor\/samples|ckeditor\/adapters)$'; // Exclude dirs
|
$regextoexclude = '('.($includecustom?'':'custom|').'documents|conf|install|dejavu-fonts-ttf-.*|public\/test|sabre\/sabre\/.*\/tests|Shared\/PCLZip|nusoap\/lib\/Mail|php\/example|php\/test|geoip\/sample.*\.php|ckeditor\/samples|ckeditor\/adapters)$'; // Exclude dirs
|
||||||
$files = dol_dir_list(DOL_DOCUMENT_ROOT, 'files', 1, $regextoinclude, $regextoexclude, 'fullname');
|
$files = dol_dir_list(DOL_DOCUMENT_ROOT, 'files', 1, $regextoinclude, $regextoexclude, 'fullname');
|
||||||
|
|
||||||
$dir = '';
|
$dir='';
|
||||||
$needtoclose = 0;
|
$needtoclose=0;
|
||||||
foreach ($files as $filetmp) {
|
foreach ($files as $filetmp) {
|
||||||
$file = $filetmp['fullname'];
|
$file = $filetmp['fullname'];
|
||||||
//$newdir = str_replace(dirname(__FILE__).'/../htdocs', '', dirname($file));
|
//$newdir = str_replace(dirname(__FILE__).'/../htdocs', '', dirname($file));
|
||||||
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
|
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
|
||||||
if ($newdir != $dir) {
|
if ($newdir!=$dir) {
|
||||||
if ($needtoclose) {
|
if ($needtoclose) {
|
||||||
fputs($fp, ' </dir>'."\n");
|
fputs($fp, ' </dir>'."\n");
|
||||||
}
|
}
|
||||||
fputs($fp, ' <dir name="'.$newdir.'">'."\n");
|
fputs($fp, ' <dir name="'.$newdir.'">'."\n");
|
||||||
$dir = $newdir;
|
$dir = $newdir;
|
||||||
$needtoclose = 1;
|
$needtoclose=1;
|
||||||
}
|
}
|
||||||
if (filetype($file) == "file") {
|
if (filetype($file)=="file") {
|
||||||
$md5 = md5_file($file);
|
$md5=md5_file($file);
|
||||||
$checksumconcat[] = $md5;
|
$checksumconcat[]=$md5;
|
||||||
fputs($fp, ' <md5file name="'.basename($file).'" size="'.filesize($file).'">'.$md5.'</md5file>'."\n");
|
fputs($fp, ' <md5file name="'.basename($file).'" size="'.filesize($file).'">'.$md5.'</md5file>'."\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -205,7 +205,7 @@ fputs($fp, md5(join(',', $checksumconcat))."\n");
|
|||||||
fputs($fp, '</dolibarr_htdocs_dir_checksum>'."\n");
|
fputs($fp, '</dolibarr_htdocs_dir_checksum>'."\n");
|
||||||
|
|
||||||
|
|
||||||
$checksumconcat = array();
|
$checksumconcat=array();
|
||||||
|
|
||||||
fputs($fp, '<dolibarr_script_dir version="'.$release.'">'."\n");
|
fputs($fp, '<dolibarr_script_dir version="'.$release.'">'."\n");
|
||||||
|
|
||||||
@@ -215,27 +215,27 @@ $iterator2 = new RecursiveIteratorIterator($dir_iterator2);
|
|||||||
// Need to ignore document custom etc. Note: this also ignore natively symbolic links.
|
// Need to ignore document custom etc. Note: this also ignore natively symbolic links.
|
||||||
$files = new RegexIterator($iterator2, '#^(?:[A-Z]:)?(?:/(?!(?:custom|documents|conf|install))[^/]+)+/[^/]+\.(?:php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$#i');
|
$files = new RegexIterator($iterator2, '#^(?:[A-Z]:)?(?:/(?!(?:custom|documents|conf|install))[^/]+)+/[^/]+\.(?:php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$#i');
|
||||||
*/
|
*/
|
||||||
$regextoinclude = '\.(php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$';
|
$regextoinclude='\.(php|css|html|js|json|tpl|jpg|png|gif|sql|lang)$';
|
||||||
$regextoexclude = '(custom|documents|conf|install)$'; // Exclude dirs
|
$regextoexclude='(custom|documents|conf|install)$'; // Exclude dirs
|
||||||
$files = dol_dir_list(dirname(__FILE__).'/../scripts/', 'files', 1, $regextoinclude, $regextoexclude, 'fullname');
|
$files = dol_dir_list(dirname(__FILE__).'/../scripts/', 'files', 1, $regextoinclude, $regextoexclude, 'fullname');
|
||||||
$dir = '';
|
$dir='';
|
||||||
$needtoclose = 0;
|
$needtoclose=0;
|
||||||
foreach ($files as $filetmp) {
|
foreach ($files as $filetmp) {
|
||||||
$file = $filetmp['fullname'];
|
$file = $filetmp['fullname'];
|
||||||
//$newdir = str_replace(dirname(__FILE__).'/../scripts', '', dirname($file));
|
//$newdir = str_replace(dirname(__FILE__).'/../scripts', '', dirname($file));
|
||||||
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
|
$newdir = str_replace(DOL_DOCUMENT_ROOT, '', dirname($file));
|
||||||
$newdir = str_replace(dirname(__FILE__).'/../scripts', '', dirname($file));
|
$newdir = str_replace(dirname(__FILE__).'/../scripts', '', dirname($file));
|
||||||
if ($newdir != $dir) {
|
if ($newdir!=$dir) {
|
||||||
if ($needtoclose) {
|
if ($needtoclose) {
|
||||||
fputs($fp, ' </dir>'."\n");
|
fputs($fp, ' </dir>'."\n");
|
||||||
}
|
}
|
||||||
fputs($fp, ' <dir name="'.$newdir.'" >'."\n");
|
fputs($fp, ' <dir name="'.$newdir.'" >'."\n");
|
||||||
$dir = $newdir;
|
$dir = $newdir;
|
||||||
$needtoclose = 1;
|
$needtoclose=1;
|
||||||
}
|
}
|
||||||
if (filetype($file) == "file") {
|
if (filetype($file)=="file") {
|
||||||
$md5 = md5_file($file);
|
$md5=md5_file($file);
|
||||||
$checksumconcat[] = $md5;
|
$checksumconcat[]=$md5;
|
||||||
fputs($fp, ' <md5file name="'.basename($file).'" size="'.filesize($file).'">'.$md5.'</md5file>'."\n");
|
fputs($fp, ' <md5file name="'.basename($file).'" size="'.filesize($file).'">'.$md5.'</md5file>'."\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ If you want to build/test package locally:
|
|||||||
Use URL pattern (stable):
|
Use URL pattern (stable):
|
||||||
For stable: http://www.dolibarr.org/files/lastbuild/package_debian-ubuntu/dolibarr_x.z.*.tar.gz
|
For stable: http://www.dolibarr.org/files/lastbuild/package_debian-ubuntu/dolibarr_x.z.*.tar.gz
|
||||||
|
|
||||||
- For Dev, you can also add link series to GIT HEAD.
|
- For Dev, you can also add link serie to GIT HEAD.
|
||||||
- For stable, you can init from command line
|
- For stable, you can init from command line
|
||||||
cd bzr/dolibarr-stable
|
cd bzr/dolibarr-stable
|
||||||
bzr init
|
bzr init
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
# \file build/makepack-dolibarr.pl
|
# \file build/makepack-dolibarr.pl
|
||||||
# \brief Dolibarr package builder (tgz, zip, rpm, deb, exe, aps)
|
# \brief Dolibarr package builder (tgz, zip, rpm, deb, exe, aps)
|
||||||
# \author (c)2004-2023 Laurent Destailleur <eldy@users.sourceforge.net>
|
# \author (c)2004-2020 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This is list of constant you can set to have generated packages moved into a specific dir:
|
# This is list of constant you can set to have generated packages moved into a specific dir:
|
||||||
#DESTIBETARC='/media/HDDATA1_LD/Mes Sites/Web/Dolibarr/dolibarr.org/files/lastbuild'
|
#DESTIBETARC='/media/HDDATA1_LD/Mes Sites/Web/Dolibarr/dolibarr.org/files/lastbuild'
|
||||||
@@ -369,12 +369,12 @@ if ($nboftargetok) {
|
|||||||
}
|
}
|
||||||
if (! $BUILD || $BUILD eq '0-rc') # For a major version
|
if (! $BUILD || $BUILD eq '0-rc') # For a major version
|
||||||
{
|
{
|
||||||
print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log `git rev-list --boundary '.$MAJOR.'.'.$MINOR.'..origin/develop | grep ^- | cut -c2- | head -n 1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\|PERF\|SEC\|QUAL\|CLOSE\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa';
|
print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log `git rev-list --boundary '.$MAJOR.'.'.$MINOR.'..origin/develop | grep ^- | cut -c2- | head -n 1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\|CLOSE\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa';
|
||||||
}
|
}
|
||||||
else # For a maintenance release
|
else # For a maintenance release
|
||||||
{
|
{
|
||||||
#print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log '.$MAJOR.'.'.$MINOR.'.'.($BUILD-1).'.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\|PERF\|SEC\|QUAL\|CLOSE\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\'| sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa';
|
#print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log '.$MAJOR.'.'.$MINOR.'.'.($BUILD-1).'.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e \'^FIX\|NEW\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\'| sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa';
|
||||||
print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log '.$MAJOR.'.'.$MINOR.'.'.($BUILD-1).'.. | grep -v "Merge branch" | grep -v "Merge pull" | grep "^ " | sed -e "s/^[0-9a-z]* *//" | grep -e \'^FIX\|NEW\|PERF\|SEC\|QUAL\|CLOSE\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa';
|
print 'cd ~/git/dolibarr_'.$MAJOR.'.'.$MINOR.'; git log '.$MAJOR.'.'.$MINOR.'.'.($BUILD-1).'.. | grep -v "Merge branch" | grep -v "Merge pull" | grep "^ " | sed -e "s/^[0-9a-z]* *//" | grep -e \'^FIX\|NEW\|CLOSE\' | sort -u | sed \'s/FIXED:/FIX:/g\' | sed \'s/FIXED :/FIX:/g\' | sed \'s/FIX :/FIX:/g\' | sed \'s/FIX /FIX: /g\' | sed \'s/CLOSE/NEW/g\' | sed \'s/NEW :/NEW:/g\' | sed \'s/NEW /NEW: /g\' > /tmp/aaa';
|
||||||
}
|
}
|
||||||
print "\n";
|
print "\n";
|
||||||
if (! $ret)
|
if (! $ret)
|
||||||
@@ -538,8 +538,6 @@ if ($nboftargetok) {
|
|||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/dev/security`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/dev/security`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/dev/spec`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/dev/spec`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/dev/test`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/dev/test`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/dev/tools/php-cs-fixer/vendor`;
|
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/dev/tools/rector/vendor`;
|
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/dev/uml`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/dev/uml`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/dev/vagrant`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/dev/vagrant`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/dev/xdebug`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/dev/xdebug`;
|
||||||
@@ -583,7 +581,6 @@ if ($nboftargetok) {
|
|||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/factory*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/factory*`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/forceproject*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/forceproject*`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/lead*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/lead*`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/langs/*/README.md`;
|
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/management*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/management*`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/multicompany*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/multicompany*`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/ndf*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/ndf*`;
|
||||||
@@ -630,21 +627,15 @@ if ($nboftargetok) {
|
|||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/tests`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/tests`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/stripe/tests`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/stripe/tests`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/stripe/LICENSE`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/stripe/LICENSE`;
|
||||||
|
$ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/examples`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/dejavu-fonts-ttf-*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/dejavu-fonts-ttf-*`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/freefont-*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/freefont-*`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/ae_fonts_*`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/ae_fonts_*`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/utils`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/fonts/utils`;
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/examples`;
|
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/tools`;
|
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/tecnickcom/tcpdf/tools`;
|
||||||
$ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/vendor`;
|
$ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/vendor`;
|
||||||
$ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/webmozart`;
|
$ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/webmozart`;
|
||||||
$ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/autoload.php`;
|
$ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/autoload.php`;
|
||||||
|
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/bin`;
|
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/bin`;
|
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/*/bin`;
|
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/*/*/bin`;
|
|
||||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/*/*/*/bin`;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Build package for each target
|
# Build package for each target
|
||||||
|
|||||||
@@ -258,7 +258,7 @@ foreach my $target (keys %CHOOSEDTARGET) {
|
|||||||
if ($CHOOSEDTARGET{$target} < 0) {
|
if ($CHOOSEDTARGET{$target} < 0) {
|
||||||
print "Package $target not built (bad requirement).\n";
|
print "Package $target not built (bad requirement).\n";
|
||||||
} else {
|
} else {
|
||||||
print "Package $target built successfully in $DESTI\n";
|
print "Package $target built succeessfully in $DESTI\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ Prerequisites to build autoexe DoliWamp package from Linux (solution seems broke
|
|||||||
See file build/exe/doliwamp.iss to know the doliwamp version currently setup.
|
See file build/exe/doliwamp.iss to know the doliwamp version currently setup.
|
||||||
> Add path to ISCC into PATH windows var:
|
> Add path to ISCC into PATH windows var:
|
||||||
Launch wine cmd, then regedit and add entry int HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment\PATH
|
Launch wine cmd, then regedit and add entry int HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment\PATH
|
||||||
> To build manually the .exe from Windows (running from makepack-dolibarr.pl script is however recommended),
|
> To build manually the .exe from Windows (running from makepack-dolibarr.pl script is however recommanded),
|
||||||
open file build/exe/doliwamp.iss and click on button "Compile".
|
open file build/exe/doliwamp.iss and click on button "Compile".
|
||||||
The .exe file will be build into directory build.
|
The .exe file will be build into directory build.
|
||||||
|
|
||||||
@@ -29,13 +29,12 @@ Prerequisites to build autoexe DoliWamp package from Windows:
|
|||||||
|
|
||||||
> Install Perl for Windows (https://strawberryperl.com/)
|
> Install Perl for Windows (https://strawberryperl.com/)
|
||||||
> Install isetup-5.5.8.exe (https://www.jrsoftware.org)
|
> Install isetup-5.5.8.exe (https://www.jrsoftware.org)
|
||||||
> Install Microsoft Visual C++ Redistributable 2017 (https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist?view=msvc-170)
|
> Install WampServer-3.2.*-64.exe (Apache 2.4.51, PHP 7.3.33, MariaDB 10.6.5 for example. Version must match the values found into doliwamp.iss)
|
||||||
> Install WampServer-3.2.6-64.exe (Apache 2.4.51, PHP 7.4.26, MariaDB 10.6.5 for example. Version must match the values found into doliwamp.iss)
|
|
||||||
> Install GIT for Windows (https://git-scm.com/ => You must choose option "Add Git bash profile", "Git commit as-is")
|
> Install GIT for Windows (https://git-scm.com/ => You must choose option "Add Git bash profile", "Git commit as-is")
|
||||||
> Install Dolibarr current version:
|
> Install Dolibarr current version:
|
||||||
git clone https://github.com/dolibarr/dolibarr or git clone --branch X.Y https://github.com/dolibarr/dolibarr
|
git clone https://github.com/dolibarr/dolibarr or git clone --branch X.Y https://github.com/dolibarr/dolibarr
|
||||||
|
|
||||||
> Add the path of PHP (C:\wamp64\bin\php\php7.4.26) and InnoSetup (C:\Program Files (x86)\Inno Setup 5) into the %PATH% of Windows.
|
> Add the path of PHP (C:\wamp64\bin\php\php7.3.33) and InnoSetup (C:\Program Files (x86)\Inno Setup 5) into the %PATH% of Windows.
|
||||||
|
|
||||||
> Create a config file c:\dolibarr\dolibarr\htdocs\conf\conf.php with content
|
> Create a config file c:\dolibarr\dolibarr\htdocs\conf\conf.php with content
|
||||||
<?php
|
<?php
|
||||||
@@ -44,11 +43,10 @@ Prerequisites to build autoexe DoliWamp package from Windows:
|
|||||||
|
|
||||||
|
|
||||||
***** Actions to do a BETA *****
|
***** Actions to do a BETA *****
|
||||||
|
|
||||||
This files describe steps made by Dolibarr packaging team to make a
|
This files describe steps made by Dolibarr packaging team to make a
|
||||||
beta version of Dolibarr, step by step.
|
beta version of Dolibarr, step by step.
|
||||||
|
|
||||||
- Check all files are committed.
|
- Check all files are commited.
|
||||||
- Update version/info in ChangeLog, for this you can:
|
- Update version/info in ChangeLog, for this you can:
|
||||||
To generate a changelog of a major new version x.y.0 (from a repo on branch develop), you can do "cd ~/git/dolibarr; git log `diff -u <(git rev-list --first-parent x.(y-1).0) <(git rev-list --first-parent develop) | sed -ne 's/^ //p' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa"
|
To generate a changelog of a major new version x.y.0 (from a repo on branch develop), you can do "cd ~/git/dolibarr; git log `diff -u <(git rev-list --first-parent x.(y-1).0) <(git rev-list --first-parent develop) | sed -ne 's/^ //p' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa"
|
||||||
To generate a changelog of a major new version x.y.0 (from a repo on branch x.y repo), you can do "cd ~/git/dolibarr_x.y; git log `diff -u <(git rev-list --first-parent x.(y-1).0) <(git rev-list --first-parent x.y.0) | sed -ne 's/^ //p' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa"
|
To generate a changelog of a major new version x.y.0 (from a repo on branch x.y repo), you can do "cd ~/git/dolibarr_x.y; git log `diff -u <(git rev-list --first-parent x.(y-1).0) <(git rev-list --first-parent x.y.0) | sed -ne 's/^ //p' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa"
|
||||||
@@ -69,11 +67,10 @@ Recopy the content of the output file into the file ChangeLog.
|
|||||||
|
|
||||||
|
|
||||||
***** Actions to do a RELEASE *****
|
***** Actions to do a RELEASE *****
|
||||||
|
|
||||||
This files describe steps made by Dolibarr packaging team to make a
|
This files describe steps made by Dolibarr packaging team to make a
|
||||||
complete release of Dolibarr, step by step.
|
complete release of Dolibarr, step by step.
|
||||||
|
|
||||||
- Check all files are committed.
|
- Check all files are commited.
|
||||||
- Update version/info in ChangeLog, for this you can:
|
- Update version/info in ChangeLog, for this you can:
|
||||||
To generate a changelog of a major new version x.y.0 (from a repo on branch develop), you can do "cd ~/git/dolibarr; git log `diff -u <(git rev-list --first-parent x.(y-1).0) <(git rev-list --first-parent develop) | sed -ne 's/^ //p' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa"
|
To generate a changelog of a major new version x.y.0 (from a repo on branch develop), you can do "cd ~/git/dolibarr; git log `diff -u <(git rev-list --first-parent x.(y-1).0) <(git rev-list --first-parent develop) | sed -ne 's/^ //p' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa"
|
||||||
To generate a changelog of a major new version x.y.0 (from a repo pn branch x.y), you can do "cd ~/git/dolibarr_x.y; git log `diff -u <(git rev-list --first-parent x.(y-1).0) <(git rev-list --first-parent x.y.0) | sed -ne 's/^ //p' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa"
|
To generate a changelog of a major new version x.y.0 (from a repo pn branch x.y), you can do "cd ~/git/dolibarr_x.y; git log `diff -u <(git rev-list --first-parent x.(y-1).0) <(git rev-list --first-parent x.y.0) | sed -ne 's/^ //p' | head -1`.. --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIX\|NEW' | sort -u | sed 's/FIXED:/FIX:/g' | sed 's/FIXED :/FIX:/g' | sed 's/FIX :/FIX:/g' | sed 's/FIX /FIX: /g' | sed 's/NEW :/NEW:/g' | sed 's/NEW /NEW: /g' > /tmp/aaa"
|
||||||
|
|||||||
@@ -54,5 +54,5 @@ OBS:QualityCategory Stable|Testing|Development|Private
|
|||||||
For example: https://bugzilla.novell.com/show_bug.cgi?id=848083 to be a maintener of category
|
For example: https://bugzilla.novell.com/show_bug.cgi?id=848083 to be a maintener of category
|
||||||
https://build.opensuse.org/project/show/Application:ERP
|
https://build.opensuse.org/project/show/Application:ERP
|
||||||
- Once done, go into project, category, subproject and enter a subproject for your application.
|
- Once done, go into project, category, subproject and enter a subproject for your application.
|
||||||
For example: Dolibarr
|
Fo example: Dolibarr
|
||||||
- Then go onto project into your home and ask a publish to the category/you project your created.
|
- Then go onto project into your home and ask a publish to the category/you project your created.
|
||||||
|
|||||||
@@ -58,8 +58,8 @@ DoliWamp is the auto-installer for Windows users with no technical knowledge to
|
|||||||
<Char_Desc_45>DoliWamp, Dolibarr ERP/CRM per Windows</Char_Desc_45>
|
<Char_Desc_45>DoliWamp, Dolibarr ERP/CRM per Windows</Char_Desc_45>
|
||||||
<Char_Desc_80>Gestionale open source e gratuito per piccole e medie imprese, fondazioni</Char_Desc_80>
|
<Char_Desc_80>Gestionale open source e gratuito per piccole e medie imprese, fondazioni</Char_Desc_80>
|
||||||
<Char_Desc_250>Dolibarr è un a gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività.</Char_Desc_250>
|
<Char_Desc_250>Dolibarr è un a gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività.</Char_Desc_250>
|
||||||
<Char_Desc_450>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibarr è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_450>
|
<Char_Desc_450>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibar è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_450>
|
||||||
<Char_Desc_2000>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibarr è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. Dolibarr è completamente web-based, progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_2000>
|
<Char_Desc_2000>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibar è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. Dolibar è completamente web-based, progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_2000>
|
||||||
</Italian>
|
</Italian>
|
||||||
</Program_Descriptions>
|
</Program_Descriptions>
|
||||||
<Web_Info>
|
<Web_Info>
|
||||||
|
|||||||
@@ -53,8 +53,8 @@ Note that Dolibarr is also available with an auto-installer for Windows or Ubunt
|
|||||||
<Char_Desc_45>Gestionale open source e gratuito</Char_Desc_45>
|
<Char_Desc_45>Gestionale open source e gratuito</Char_Desc_45>
|
||||||
<Char_Desc_80>Gestionale open source e gratuito per piccole e medie imprese, fondazioni</Char_Desc_80>
|
<Char_Desc_80>Gestionale open source e gratuito per piccole e medie imprese, fondazioni</Char_Desc_80>
|
||||||
<Char_Desc_250>Dolibarr è un a gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività.</Char_Desc_250>
|
<Char_Desc_250>Dolibarr è un a gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività.</Char_Desc_250>
|
||||||
<Char_Desc_450>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibarr è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_450>
|
<Char_Desc_450>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibar è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_450>
|
||||||
<Char_Desc_2000>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibarr è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. Dolibarr è completamente web-based, progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_2000>
|
<Char_Desc_2000>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibar è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. Dolibar è completamente web-based, progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_2000>
|
||||||
</Italian>
|
</Italian>
|
||||||
<French>
|
<French>
|
||||||
<Keywords>dolibarr, erp, crm, invoices, commercial proposals, orders, accounting, stock, products, agenda, bank, business, company, foundation, management, sme, doliwamp</Keywords>
|
<Keywords>dolibarr, erp, crm, invoices, commercial proposals, orders, accounting, stock, products, agenda, bank, business, company, foundation, management, sme, doliwamp</Keywords>
|
||||||
|
|||||||
@@ -95,8 +95,8 @@ Dolibarr intègre en effet sa propre architecture (design patterns) permettant
|
|||||||
<Char_Desc_45>Gestionale open source e gratuito</Char_Desc_45>
|
<Char_Desc_45>Gestionale open source e gratuito</Char_Desc_45>
|
||||||
<Char_Desc_80>Gestionale open source e gratuito per piccole e medie imprese, fondazioni</Char_Desc_80>
|
<Char_Desc_80>Gestionale open source e gratuito per piccole e medie imprese, fondazioni</Char_Desc_80>
|
||||||
<Char_Desc_250>Dolibarr è un a gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività.</Char_Desc_250>
|
<Char_Desc_250>Dolibarr è un a gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività.</Char_Desc_250>
|
||||||
<Char_Desc_450>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibarr è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_450>
|
<Char_Desc_450>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibar è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_450>
|
||||||
<Char_Desc_2000>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibarr è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. Dolibarr è completamente web-based, progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_2000>
|
<Char_Desc_2000>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibar è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. Dolibar è completamente web-based, progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_2000>
|
||||||
</Italian>
|
</Italian>
|
||||||
</Program_Descriptions>
|
</Program_Descriptions>
|
||||||
<Web_Info>
|
<Web_Info>
|
||||||
|
|||||||
@@ -95,8 +95,8 @@ Dolibarr intègre en effet sa propre architecture (design patterns) permettant
|
|||||||
<Char_Desc_45>Gestionale open source e gratuito</Char_Desc_45>
|
<Char_Desc_45>Gestionale open source e gratuito</Char_Desc_45>
|
||||||
<Char_Desc_80>Gestionale open source e gratuito per piccole e medie imprese, fondazioni</Char_Desc_80>
|
<Char_Desc_80>Gestionale open source e gratuito per piccole e medie imprese, fondazioni</Char_Desc_80>
|
||||||
<Char_Desc_250>Dolibarr è un a gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività.</Char_Desc_250>
|
<Char_Desc_250>Dolibarr è un a gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività.</Char_Desc_250>
|
||||||
<Char_Desc_450>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibarr è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_450>
|
<Char_Desc_450>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibar è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_450>
|
||||||
<Char_Desc_2000>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibarr è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. Dolibarr è completamente web-based, progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_2000>
|
<Char_Desc_2000>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibar è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. Dolibar è completamente web-based, progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_2000>
|
||||||
</Italian>
|
</Italian>
|
||||||
</Program_Descriptions>
|
</Program_Descriptions>
|
||||||
<Web_Info>
|
<Web_Info>
|
||||||
|
|||||||
@@ -88,8 +88,8 @@ DoliWamp is the auto-installer for Windows users with no technical knowledge to
|
|||||||
<Char_Desc_45>DoliWamp, Dolibarr ERP/CRM per Windows</Char_Desc_45>
|
<Char_Desc_45>DoliWamp, Dolibarr ERP/CRM per Windows</Char_Desc_45>
|
||||||
<Char_Desc_80>Gestionale open source e gratuito per piccole e medie imprese, fondazioni</Char_Desc_80>
|
<Char_Desc_80>Gestionale open source e gratuito per piccole e medie imprese, fondazioni</Char_Desc_80>
|
||||||
<Char_Desc_250>Dolibarr è un a gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività.</Char_Desc_250>
|
<Char_Desc_250>Dolibarr è un a gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività.</Char_Desc_250>
|
||||||
<Char_Desc_450>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibarr è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_450>
|
<Char_Desc_450>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibar è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_450>
|
||||||
<Char_Desc_2000>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibarr è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. Dolibarr è completamente web-based, progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_2000>
|
<Char_Desc_2000>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibar è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. Dolibar è completamente web-based, progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_2000>
|
||||||
</Italian>
|
</Italian>
|
||||||
</Program_Descriptions>
|
</Program_Descriptions>
|
||||||
<Web_Info>
|
<Web_Info>
|
||||||
|
|||||||
@@ -88,8 +88,8 @@ DoliWamp is the auto-installer for Windows users with no technical knowledge to
|
|||||||
<Char_Desc_45>DoliWamp, Dolibarr ERP/CRM per Windows</Char_Desc_45>
|
<Char_Desc_45>DoliWamp, Dolibarr ERP/CRM per Windows</Char_Desc_45>
|
||||||
<Char_Desc_80>Gestionale open source e gratuito per piccole e medie imprese, fondazioni</Char_Desc_80>
|
<Char_Desc_80>Gestionale open source e gratuito per piccole e medie imprese, fondazioni</Char_Desc_80>
|
||||||
<Char_Desc_250>Dolibarr è un a gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività.</Char_Desc_250>
|
<Char_Desc_250>Dolibarr è un a gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività.</Char_Desc_250>
|
||||||
<Char_Desc_450>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibarr è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_450>
|
<Char_Desc_450>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibar è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_450>
|
||||||
<Char_Desc_2000>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibarr è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. Dolibarr è completamente web-based, progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_2000>
|
<Char_Desc_2000>Dolibarr è un programma gestionale open source e gratuito per piccole e medie imprese, fondazioni e liberi professionisti. Include varie funzionalità per Enterprise Resource Planning e gestione dei clienti (CRM), ma anche ulteriori attività. Dolibar è progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. Dolibar è completamente web-based, progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare.</Char_Desc_2000>
|
||||||
</Italian>
|
</Italian>
|
||||||
</Program_Descriptions>
|
</Program_Descriptions>
|
||||||
<Web_Info>
|
<Web_Info>
|
||||||
|
|||||||
@@ -3,7 +3,9 @@ README (English)
|
|||||||
Building a Patch file
|
Building a Patch file
|
||||||
##################################################
|
##################################################
|
||||||
|
|
||||||
This directory contains tools to build a patch after a developer has made changes on files in its Dolibarr tree.
|
This directory contains tools to build a patch
|
||||||
The output patch file can then be submitted on Dolibarr dev mailing-list, with explanation on its goal, for inclusion in main branch.
|
after a developer has made changes on files in its
|
||||||
|
Dolibarr tree.
|
||||||
Using this tool is now deprecated. You must use git pull requests to submit contributions.
|
The output patch file can then be submited on Dolibarr
|
||||||
|
dev mailing-list, with explanation on its goal, for
|
||||||
|
inclusion in main branch.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#/bin/ksh
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
# \file build/patch/buildpatch.sh
|
# \file build/patch/buildpatch.sh
|
||||||
# \brief Create patch files
|
# \brief Create patch files
|
||||||
@@ -6,18 +6,16 @@
|
|||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
# This script can be used to build a patch after a developer has made
|
# This script can be used to build a patch after a developer has made
|
||||||
# changes on files in its Dolibarr tree.
|
# changes on files in its Dolibarr tree.
|
||||||
# The output patch file can then be submitted on Dolibarr dev mailing-list,
|
# The output patch file can then be submited on Dolibarr dev mailing-list,
|
||||||
# with explanation on its goal, for inclusion in main branch.
|
# with explanation on its goal, for inclusion in main branch.
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
# shellcheck disable=2086,2291
|
|
||||||
|
|
||||||
echo ----- Building patch file mypatch.patch -----
|
echo ----- Building patch file mypatch.patch -----
|
||||||
if [ -z "$1" ] || [ -z "$2" ];
|
if [ -z "$1" ] || [ -z "$2" ];
|
||||||
then
|
then
|
||||||
echo Usage: buildpatch.sh original_dir_path modified_dir_path
|
echo Usage: buildpatch.sh original_dir_path modified_dir_path
|
||||||
echo Example: buildpatch.sh /mydirA/dolibarrold /mydirB/dolibarrnew
|
echo Example: buildpatch.sh /mydirA/dolibarrold /mydirB/dolibarrnew
|
||||||
else
|
else
|
||||||
echo Build patch between \"$1\" and \"$2\"
|
echo Build patch between \"$1\" and \"$2\"
|
||||||
diff -BNaur --exclude=CVS --exclude="*.patch" --exclude=".#*" --exclude="*~" --exclude="*.rej" --exclude="*.orig" --exclude="*.bak" --exclude=conf.php --exclude=documents $1 $2 > mypatch.patch
|
diff -BNaur --exclude=CVS --exclude="*.patch" --exclude=".#*" --exclude="*~" --exclude="*.rej" --exclude="*.orig" --exclude="*.bak" --exclude=conf.php --exclude=documents $1 $2 > mypatch.patch
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,26 +1,9 @@
|
|||||||
PHPStan (https://phpstan.org)
|
PHPStan
|
||||||
-----------------------------
|
|
||||||
|
https://phpstan.org
|
||||||
|
|
||||||
PHPStan requires PHP >= 7.1
|
PHPStan requires PHP >= 7.1
|
||||||
|
|
||||||
Config File is: ./phpstan.neon
|
Install: composer require --dev phpstan/phpstan
|
||||||
|
|
||||||
= Installation =
|
Config File: phpstan.neon
|
||||||
|
|
||||||
cd ./build/phpstan
|
|
||||||
mkdir phpstan
|
|
||||||
cd phpstan
|
|
||||||
composer require --dev phpstan/phpstan
|
|
||||||
|
|
||||||
|
|
||||||
= Build report from CLI =
|
|
||||||
|
|
||||||
In dolibarr/
|
|
||||||
mv htdocs/custom /tmp/
|
|
||||||
php build/phpstan/phpstan/vendor/bin/phpstan -v analyze -c ./phpstan.neon -a build/phpstan/bootstrap.php --memory-limit 4G --error-format=table htdocs/commande/class
|
|
||||||
php build/phpstan/phpstan/vendor/bin/phpstan -v analyze -c ./phpstan.neon -a build/phpstan/bootstrap.php --memory-limit 4G --error-format=table htdocs/
|
|
||||||
mv /tmp/custom htdocs
|
|
||||||
|
|
||||||
Build HTML report from Cron:
|
|
||||||
Example of line to add into a cron to generate a HTML report:
|
|
||||||
0 1 5 * * cd /home/dolibarr/preview.dolibarr.org/dolibarr; chmod -R u+w /home/dolibarr/preview.dolibarr.org/dolibarr; git pull; /home/dolibarr/phpstan/vendor/bin/phpstan -v analyze --memory-limit 4G --error-format=github | awk ' BEGIN{ print "Date "strftime("%Y-%m-%d")"<br>" } { print $0"<br>" } END{ print NR } ' > /home/dolibarr/doxygen.dolibarr.org/phpstan/index.html
|
|
||||||
|
|||||||
@@ -1,20 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
// Defined some constants and load Dolibarr env to reduce PHPStan bootstrap that fails to load a lot of things.
|
// Defined some constants and load Dolibarr env to reduce PHPStan bootstrap that fails to load a lot of things.
|
||||||
//define('DOL_DOCUMENT_ROOT', __DIR__ . '/../../htdocs');
|
//define('DOL_DOCUMENT_ROOT', __DIR__ . '/../../htdocs');
|
||||||
//define('DOL_DATA_ROOT', __DIR__ . '/../../documents');
|
//define('DOL_DATA_ROOT', __DIR__ . '/../../documents');
|
||||||
//define('DOL_URL_ROOT', '/');
|
//define('DOL_URL_ROOT', '/');
|
||||||
|
|
||||||
// Load the main.inc.php file to have functions env defined
|
// Load the main.inc.php file to have functions env defined
|
||||||
if (!defined("NOLOGIN")) {
|
if (! defined("NOLOGIN")) define("NOLOGIN", '1');
|
||||||
define("NOLOGIN", '1');
|
global $conf, $langs, $user, $db;
|
||||||
}
|
|
||||||
if (!defined("NOSESSION")) {
|
|
||||||
define("NOSESSION", '1');
|
|
||||||
}
|
|
||||||
if (!defined("NOHTTPSREDIRECT")) {
|
|
||||||
define("NOHTTPSREDIRECT", '1');
|
|
||||||
}
|
|
||||||
|
|
||||||
global $conf, $db, $langs, $user;
|
|
||||||
include_once __DIR__ . '/../../htdocs/main.inc.php';
|
include_once __DIR__ . '/../../htdocs/main.inc.php';
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
// Load the main.inc.php file to have functions env defined
|
|
||||||
if (!defined("NOLOGIN")) {
|
|
||||||
define("NOLOGIN", '1');
|
|
||||||
}
|
|
||||||
if (!defined("NOSESSION")) {
|
|
||||||
define("NOSESSION", '1');
|
|
||||||
}
|
|
||||||
if (!defined("NOHTTPSREDIRECT")) {
|
|
||||||
define("NOHTTPSREDIRECT", '1');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Defined some constants and load Dolibarr env to reduce PHPStan bootstrap that fails to load a lot of things.
|
|
||||||
define('DOL_DOCUMENT_ROOT', __DIR__ . '/../../htdocs');
|
|
||||||
define('DOL_DATA_ROOT', __DIR__ . '/../../documents');
|
|
||||||
define('DOL_URL_ROOT', '/');
|
|
||||||
define('DOL_MAIN_URL_ROOT', '/');
|
|
||||||
define('MAIN_DB_PREFIX', 'llx_');
|
|
||||||
|
|
||||||
global $conf, $db, $langs, $user;
|
|
||||||
// include_once DOL_DOCUMENT_ROOT . '/../../htdocs/main.inc.php';
|
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
//
|
//
|
||||||
// Take a look at conf.php.example file for an example of conf.php file
|
// Take a look at conf.php.example file for an example of conf.php file
|
||||||
// and explanations for all possibles parameters.
|
// and explanations for all possibles parameters.
|
||||||
|
|||||||
@@ -24,5 +24,5 @@ diff -up htdocs/install/inc.php.patch htdocs/install/inc.php
|
|||||||
+$conffile = "/etc/dolibarr/conf.php";
|
+$conffile = "/etc/dolibarr/conf.php";
|
||||||
+$conffiletoshow = "/etc/dolibarr/conf.php";
|
+$conffiletoshow = "/etc/dolibarr/conf.php";
|
||||||
|
|
||||||
$short_options = "c:h";
|
|
||||||
$long_options = array(
|
// Load conf file if it is already defined
|
||||||
|
|||||||
6
build/rpm/dolibarr_fedora.spec
Normal file → Executable file
6
build/rpm/dolibarr_fedora.spec
Normal file → Executable file
@@ -25,8 +25,8 @@ BuildArch: noarch
|
|||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
|
|
||||||
Group: Applications/Productivity
|
Group: Applications/Productivity
|
||||||
Requires: httpd, php >= 5.3.0, php-cli, php-gd, php-ldap, php-mysqli, php-nusoap, dejavu-sans-fonts
|
Requires: httpd, php >= 5.3.0, php-cli, php-gd, php-ldap, php-imap, php-mysqli, php-nusoap, dejavu-sans-fonts
|
||||||
Requires: mariadb-server, mariadb
|
Requires: mysql-server, mysql
|
||||||
#BuildRequires: desktop-file-utils
|
#BuildRequires: desktop-file-utils
|
||||||
|
|
||||||
# Set yes to build test package, no for release (this disable need of /usr/bin/php not found by OpenSuse)
|
# Set yes to build test package, no for release (this disable need of /usr/bin/php not found by OpenSuse)
|
||||||
@@ -158,7 +158,6 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/accountancy
|
%_datadir/dolibarr/htdocs/accountancy
|
||||||
%_datadir/dolibarr/htdocs/adherents
|
%_datadir/dolibarr/htdocs/adherents
|
||||||
%_datadir/dolibarr/htdocs/admin
|
%_datadir/dolibarr/htdocs/admin
|
||||||
%_datadir/dolibarr/htdocs/ai
|
|
||||||
%_datadir/dolibarr/htdocs/api
|
%_datadir/dolibarr/htdocs/api
|
||||||
%_datadir/dolibarr/htdocs/asset
|
%_datadir/dolibarr/htdocs/asset
|
||||||
%_datadir/dolibarr/htdocs/asterisk
|
%_datadir/dolibarr/htdocs/asterisk
|
||||||
@@ -229,7 +228,6 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/user
|
%_datadir/dolibarr/htdocs/user
|
||||||
%_datadir/dolibarr/htdocs/variants
|
%_datadir/dolibarr/htdocs/variants
|
||||||
%_datadir/dolibarr/htdocs/webhook
|
%_datadir/dolibarr/htdocs/webhook
|
||||||
%_datadir/dolibarr/htdocs/webportal
|
|
||||||
%_datadir/dolibarr/htdocs/webservices
|
%_datadir/dolibarr/htdocs/webservices
|
||||||
%_datadir/dolibarr/htdocs/website
|
%_datadir/dolibarr/htdocs/website
|
||||||
%_datadir/dolibarr/htdocs/workstation
|
%_datadir/dolibarr/htdocs/workstation
|
||||||
|
|||||||
6
build/rpm/dolibarr_generic.spec
Normal file → Executable file
6
build/rpm/dolibarr_generic.spec
Normal file → Executable file
@@ -46,8 +46,8 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|||||||
|
|
||||||
%if 0%{?fedora} || 0%{?rhel_version} || 0%{?centos_version}
|
%if 0%{?fedora} || 0%{?rhel_version} || 0%{?centos_version}
|
||||||
Group: Applications/Productivity
|
Group: Applications/Productivity
|
||||||
Requires: httpd, php >= 5.3.0, php-cli, php-gd, php-ldap, php-mysqli, php-nusoap, dejavu-sans-fonts, php-mbstring, php-xml
|
Requires: httpd, php >= 5.3.0, php-cli, php-gd, php-ldap, php-imap, php-mysqli, php-nusoap, dejavu-sans-fonts, php-mbstring, php-xml
|
||||||
Requires: mariadb-server, mariadb
|
Requires: mysql-server, mysql
|
||||||
BuildRequires: desktop-file-utils
|
BuildRequires: desktop-file-utils
|
||||||
%else
|
%else
|
||||||
%if 0%{?mdkversion}
|
%if 0%{?mdkversion}
|
||||||
@@ -239,7 +239,6 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/accountancy
|
%_datadir/dolibarr/htdocs/accountancy
|
||||||
%_datadir/dolibarr/htdocs/adherents
|
%_datadir/dolibarr/htdocs/adherents
|
||||||
%_datadir/dolibarr/htdocs/admin
|
%_datadir/dolibarr/htdocs/admin
|
||||||
%_datadir/dolibarr/htdocs/ai
|
|
||||||
%_datadir/dolibarr/htdocs/api
|
%_datadir/dolibarr/htdocs/api
|
||||||
%_datadir/dolibarr/htdocs/asset
|
%_datadir/dolibarr/htdocs/asset
|
||||||
%_datadir/dolibarr/htdocs/asterisk
|
%_datadir/dolibarr/htdocs/asterisk
|
||||||
@@ -310,7 +309,6 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/user
|
%_datadir/dolibarr/htdocs/user
|
||||||
%_datadir/dolibarr/htdocs/variants
|
%_datadir/dolibarr/htdocs/variants
|
||||||
%_datadir/dolibarr/htdocs/webhook
|
%_datadir/dolibarr/htdocs/webhook
|
||||||
%_datadir/dolibarr/htdocs/webportal
|
|
||||||
%_datadir/dolibarr/htdocs/webservices
|
%_datadir/dolibarr/htdocs/webservices
|
||||||
%_datadir/dolibarr/htdocs/website
|
%_datadir/dolibarr/htdocs/website
|
||||||
%_datadir/dolibarr/htdocs/workstation
|
%_datadir/dolibarr/htdocs/workstation
|
||||||
|
|||||||
2
build/rpm/dolibarr_mandriva.spec
Normal file → Executable file
2
build/rpm/dolibarr_mandriva.spec
Normal file → Executable file
@@ -156,7 +156,6 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/accountancy
|
%_datadir/dolibarr/htdocs/accountancy
|
||||||
%_datadir/dolibarr/htdocs/adherents
|
%_datadir/dolibarr/htdocs/adherents
|
||||||
%_datadir/dolibarr/htdocs/admin
|
%_datadir/dolibarr/htdocs/admin
|
||||||
%_datadir/dolibarr/htdocs/ai
|
|
||||||
%_datadir/dolibarr/htdocs/api
|
%_datadir/dolibarr/htdocs/api
|
||||||
%_datadir/dolibarr/htdocs/asset
|
%_datadir/dolibarr/htdocs/asset
|
||||||
%_datadir/dolibarr/htdocs/asterisk
|
%_datadir/dolibarr/htdocs/asterisk
|
||||||
@@ -227,7 +226,6 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/user
|
%_datadir/dolibarr/htdocs/user
|
||||||
%_datadir/dolibarr/htdocs/variants
|
%_datadir/dolibarr/htdocs/variants
|
||||||
%_datadir/dolibarr/htdocs/webhook
|
%_datadir/dolibarr/htdocs/webhook
|
||||||
%_datadir/dolibarr/htdocs/webportal
|
|
||||||
%_datadir/dolibarr/htdocs/webservices
|
%_datadir/dolibarr/htdocs/webservices
|
||||||
%_datadir/dolibarr/htdocs/website
|
%_datadir/dolibarr/htdocs/website
|
||||||
%_datadir/dolibarr/htdocs/workstation
|
%_datadir/dolibarr/htdocs/workstation
|
||||||
|
|||||||
2
build/rpm/dolibarr_opensuse.spec
Normal file → Executable file
2
build/rpm/dolibarr_opensuse.spec
Normal file → Executable file
@@ -166,7 +166,6 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/accountancy
|
%_datadir/dolibarr/htdocs/accountancy
|
||||||
%_datadir/dolibarr/htdocs/adherents
|
%_datadir/dolibarr/htdocs/adherents
|
||||||
%_datadir/dolibarr/htdocs/admin
|
%_datadir/dolibarr/htdocs/admin
|
||||||
%_datadir/dolibarr/htdocs/ai
|
|
||||||
%_datadir/dolibarr/htdocs/api
|
%_datadir/dolibarr/htdocs/api
|
||||||
%_datadir/dolibarr/htdocs/asset
|
%_datadir/dolibarr/htdocs/asset
|
||||||
%_datadir/dolibarr/htdocs/asterisk
|
%_datadir/dolibarr/htdocs/asterisk
|
||||||
@@ -237,7 +236,6 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/user
|
%_datadir/dolibarr/htdocs/user
|
||||||
%_datadir/dolibarr/htdocs/variants
|
%_datadir/dolibarr/htdocs/variants
|
||||||
%_datadir/dolibarr/htdocs/webhook
|
%_datadir/dolibarr/htdocs/webhook
|
||||||
%_datadir/dolibarr/htdocs/webportal
|
|
||||||
%_datadir/dolibarr/htdocs/webservices
|
%_datadir/dolibarr/htdocs/webservices
|
||||||
%_datadir/dolibarr/htdocs/website
|
%_datadir/dolibarr/htdocs/website
|
||||||
%_datadir/dolibarr/htdocs/workstation
|
%_datadir/dolibarr/htdocs/workstation
|
||||||
|
|||||||
@@ -9,14 +9,14 @@
|
|||||||
</Directory>
|
</Directory>
|
||||||
|
|
||||||
# Wire up Apache to use Travis CI's php-fpm.
|
# Wire up Apache to use Travis CI's php-fpm.
|
||||||
#<IfModule mod_fastcgi.c>
|
<IfModule mod_fastcgi.c>
|
||||||
# AddHandler php5-fcgi .php
|
AddHandler php5-fcgi .php
|
||||||
# Action php5-fcgi /php5-fcgi
|
Action php5-fcgi /php5-fcgi
|
||||||
# Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
|
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
|
||||||
# FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization
|
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization
|
||||||
#
|
|
||||||
#<Directory /usr/lib/cgi-bin>
|
<Directory /usr/lib/cgi-bin>
|
||||||
# Require all granted
|
Require all granted
|
||||||
#</Directory>
|
</Directory>
|
||||||
#</IfModule>
|
</IfModule>
|
||||||
</VirtualHost>
|
</VirtualHost>
|
||||||
|
|||||||
@@ -24,26 +24,35 @@
|
|||||||
"vendor-dir" : "htdocs/includes"
|
"vendor-dir" : "htdocs/includes"
|
||||||
},
|
},
|
||||||
"require" : {
|
"require" : {
|
||||||
"php" : ">=7.1.0",
|
"php" : ">=5.6.0",
|
||||||
|
"ext-curl" : "*",
|
||||||
"ckeditor/ckeditor" : "4.12.1",
|
"ckeditor/ckeditor" : "4.12.1",
|
||||||
"mike42/escpos-php" : "3.0",
|
"mike42/escpos-php" : "2.2",
|
||||||
"mobiledetect/mobiledetectlib" : "2.8.41",
|
"mobiledetect/mobiledetectlib" : "2.8.39",
|
||||||
"phpoffice/phpspreadsheet" : ">=1.12",
|
"phpoffice/phpexcel" : "1.8.2",
|
||||||
"restler/framework" : "3.0.0-RC6",
|
"restler/framework" : "3.0.0-RC6",
|
||||||
"tecnickcom/tcpdf" : "6.3.2",
|
"tecnickcom/tcpdf" : "6.3.2",
|
||||||
"nnnick/chartjs" : "^3.7.1",
|
"nnnick/chartjs" : "^2.9",
|
||||||
"stripe/stripe-php" : "10.7.0",
|
"stripe/stripe-php" : "6.43.1",
|
||||||
"maximebf/debugbar" : "1.18.2"
|
"maximebf/debugbar" : "1.15.1",
|
||||||
|
"symfony/var-dumper" : "3.2"
|
||||||
},
|
},
|
||||||
"require-dev" : {
|
"require-dev" : {
|
||||||
|
"php-parallel-lint/php-parallel-lint" : "^0",
|
||||||
|
"php-parallel-lint/php-console-highlighter" : "^0",
|
||||||
|
"phpunit/phpunit" : "^4",
|
||||||
|
"squizlabs/php_codesniffer" : "^2",
|
||||||
|
"phpunit/phpunit-selenium" : "^2"
|
||||||
},
|
},
|
||||||
"suggest" : {
|
"suggest" : {
|
||||||
"ext-mysqlnd" : "To use with MySQL or MariaDB",
|
"ext-mysqlnd" : "To use with MySQL or MariaDB",
|
||||||
"ext-mysqli" : "To use with MySQL or MariaDB",
|
"ext-mysqli" : "To use with MySQL or MariaDB",
|
||||||
"ext-pgsql" : "To use with PostgreSQL",
|
"ext-pgsql" : "To use with PostgreSQL",
|
||||||
|
"ext-mssql" : "To use with MSSQL (experimental)",
|
||||||
|
"ext-pdo_sqlite" : "To use with SQLite (experimental)",
|
||||||
"ext-gd" : "Image manipulation (Required but maybe built-in PHP)",
|
"ext-gd" : "Image manipulation (Required but maybe built-in PHP)",
|
||||||
"ext-imagick" : "Generation of thumbs from PDF",
|
"ext-imagick" : "Generation of thumbs from PDF",
|
||||||
"ext-intl" : "Intl",
|
"ext-mcrypt" : "(Required but maybe built-in PHP)",
|
||||||
"ext-openssl" : "Secure connections (Emails, SOAP\u2026)",
|
"ext-openssl" : "Secure connections (Emails, SOAP\u2026)",
|
||||||
"ext-mbstring" : "Handle non UTF-8 characters",
|
"ext-mbstring" : "Handle non UTF-8 characters",
|
||||||
"ext-soap" : "Native SOAP",
|
"ext-soap" : "Native SOAP",
|
||||||
|
|||||||
1
dev/.gitignore
vendored
1
dev/.gitignore
vendored
@@ -1,2 +1 @@
|
|||||||
/spec
|
/spec
|
||||||
/tools/rector/vendor/
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user