mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2026-02-12 10:52:37 +01:00
Merge branch 'develop' into PhanTypeInvalidRightOperandOfNumericOp
This commit is contained in:
16
.github/workflows/README.md
vendored
Normal file
16
.github/workflows/README.md
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
# 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
|
||||
40
.github/workflows/ci.yml
vendored
Normal file
40
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
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"
|
||||
49
.github/workflows/gh-travis.yml
vendored
Normal file
49
.github/workflows/gh-travis.yml
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
---
|
||||
# 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 }}
|
||||
21
.github/workflows/phan.yml
vendored
21
.github/workflows/phan.yml
vendored
@@ -1,16 +1,22 @@
|
||||
---
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
schedule:
|
||||
# execute once a day, the 1st
|
||||
- cron: 10 9 * * *
|
||||
# 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: ${{ github.workflow }}-${{ github.ref }}
|
||||
group: phan-${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
env:
|
||||
# Do pull analysis on schedule or manual dispatch
|
||||
gh_event: ${{ inputs.gh_event || github.event_name }}
|
||||
PHAN_CONFIG: >
|
||||
${{
|
||||
( github.event.schedule || github.event_name == 'workflow_dispatch' )
|
||||
@@ -21,6 +27,7 @@ env:
|
||||
PHAN_MIN_PHP: 7.0
|
||||
PHAN_QUICK: ${{ github.event.schedule && '' || '--quick' }}
|
||||
GITHUB_JSON: ${{ toJSON(github) }} # Helps in debugging Github Action
|
||||
|
||||
name: phan
|
||||
jobs:
|
||||
phan:
|
||||
|
||||
42
.github/workflows/phpstan.yml
vendored
42
.github/workflows/phpstan.yml
vendored
@@ -1,16 +1,25 @@
|
||||
---
|
||||
# This is a basic workflow to check code with PHPSTAN tool
|
||||
|
||||
name: "PHPStan"
|
||||
|
||||
name: PHPStan
|
||||
# Controls when the workflow will run
|
||||
on: [push, pull_request]
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
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:
|
||||
CACHE_KEY_PART: ${{ 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
|
||||
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
|
||||
@@ -23,7 +32,7 @@ jobs:
|
||||
php-version:
|
||||
# PHPStan requires PHP >= 7.2.
|
||||
#- "7.2"
|
||||
- "8.2"
|
||||
- '8.2'
|
||||
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||
steps:
|
||||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
||||
@@ -34,9 +43,10 @@ jobs:
|
||||
id: setup-php
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: "${{ matrix.php-version }}"
|
||||
php-version: ${{ matrix.php-version }}
|
||||
tools: phpstan, cs2pr
|
||||
extensions: calendar, json, imagick, gd, zip, mbstring, intl, opcache, imap, mysql, pgsql, sqlite3, ldap, xml, mcrypt
|
||||
extensions: calendar, json, imagick, gd, zip, mbstring, intl, opcache, imap,
|
||||
mysql, pgsql, sqlite3, ldap, xml, mcrypt
|
||||
|
||||
# Restore old cache
|
||||
- name: Restore phpstan cache
|
||||
@@ -44,7 +54,8 @@ jobs:
|
||||
uses: actions/cache/restore@v4
|
||||
with:
|
||||
path: ./.github/tmp
|
||||
key: phpstan-cache-${{ matrix.php-version }}-${{ env.CACHE_KEY_PART }}-${{ github.run_id }}
|
||||
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 }}-
|
||||
@@ -61,12 +72,13 @@ jobs:
|
||||
# continue-on-error: true
|
||||
|
||||
# Save cache
|
||||
- name: "Save phpstan 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 }}
|
||||
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() }}
|
||||
|
||||
21
.github/workflows/pre-commit.yml
vendored
21
.github/workflows/pre-commit.yml
vendored
@@ -1,8 +1,17 @@
|
||||
---
|
||||
name: pre-commit
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
# pull_request:
|
||||
# push:
|
||||
workflow_call:
|
||||
inputs:
|
||||
gh_event:
|
||||
required: true
|
||||
type: string
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
gh_event: ${{ inputs.gh_event || github.event_name }}
|
||||
jobs:
|
||||
pre-commit:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -20,7 +29,7 @@ jobs:
|
||||
- name: Get all changed php files (if PR)
|
||||
id: changed-php
|
||||
uses: tj-actions/changed-files@v43
|
||||
if: github.event_name == 'pull_request'
|
||||
if: env.gh_event == 'pull_request'
|
||||
with:
|
||||
files: |
|
||||
**.php
|
||||
@@ -58,7 +67,7 @@ jobs:
|
||||
# - name: Get all changed php files (if PR)
|
||||
# id: changed-php
|
||||
# uses: tj-actions/changed-files@v43
|
||||
# if: github.event_name == 'pull_request'
|
||||
# if: env.gh_event == 'pull_request'
|
||||
# with:
|
||||
# files: |
|
||||
# **.php
|
||||
@@ -72,7 +81,7 @@ jobs:
|
||||
steps.changed-php.outputs.any_changed == 'true'
|
||||
||
|
||||
(
|
||||
github.event_name == 'push'
|
||||
env.gh_event == 'push'
|
||||
&& (
|
||||
github.event.ref == 'refs/heads/develop'
|
||||
|| endsWith(github.event.ref, '.0')
|
||||
@@ -94,7 +103,7 @@ jobs:
|
||||
|
||||
- name: Run some pre-commit hooks on all files on push to "main" branches
|
||||
if: |
|
||||
github.event_name == 'push'
|
||||
env.gh_event == 'push'
|
||||
&& (
|
||||
github.event.ref == 'refs/heads/develop'
|
||||
|| endsWith(github.event.ref, '.0')
|
||||
|
||||
@@ -2,19 +2,26 @@
|
||||
name: Win CI
|
||||
# yamllint disable-line rule:truthy
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
# push:
|
||||
# pull_request:
|
||||
workflow_call:
|
||||
inputs:
|
||||
gh_event:
|
||||
required: true
|
||||
type: string
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref
|
||||
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: ${{ github.event_name == 'pull_request' && format('{0}-{1}', github.base_ref, github.head_ref) || github.ref_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 }}
|
||||
PHP_INI_SCAN_DIR: C:\myphpini
|
||||
CKEY: win-ci-2
|
||||
GITHUB_JSON: ${{ toJSON(github) }} # Helps in debugging Github Action
|
||||
@@ -3,6 +3,7 @@
|
||||
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -112,11 +113,16 @@ if ($action == 'set') {
|
||||
|
||||
dolibarr_del_const($db, 'SYSLOG_HANDLERS', -1); // To be sure there is not a setup into another entity
|
||||
dolibarr_set_const($db, 'SYSLOG_HANDLERS', json_encode($activeModules), 'chaine', 0, '', 0);
|
||||
|
||||
$error = 0;
|
||||
$errors = [];
|
||||
// Check configuration
|
||||
foreach ($activeModules as $modulename) {
|
||||
$module = new $modulename();
|
||||
$error = $module->checkConfiguration();
|
||||
$res = $module->checkConfiguration();
|
||||
if (!$res) {
|
||||
$error++;
|
||||
$errors = array_merge($errors, $module->errors);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -125,7 +131,7 @@ if ($action == 'set') {
|
||||
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
||||
} else {
|
||||
$db->rollback();
|
||||
setEventMessages($error, $errors, 'errors');
|
||||
setEventMessages('', $errors, 'errors');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -379,7 +379,7 @@ if (GETPOST('withtab', 'alpha')) {
|
||||
// Add $param from extra fields
|
||||
//include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_param.tpl.php';
|
||||
|
||||
print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'">';
|
||||
print '<form method="POST" id="searchFormList" action="'.$_SERVER["PHP_SELF"].'?output=file">';
|
||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||
|
||||
print '<div class="right">';
|
||||
|
||||
@@ -1916,9 +1916,9 @@ if ($id > 0) {
|
||||
*/
|
||||
print '</td><td td colspan="3">';
|
||||
$tzforfullday = getDolGlobalString('MAIN_STORE_FULL_EVENT_IN_GMT');
|
||||
print $form->selectDate($datep ? $datep : $object->datep, 'ap', 1, 1, 0, "action", 1, 1, 0, 'fulldaystart', '', '', '', 1, '', '', $object->fulldayevent ? ($tzforfullday ? $tzforfullday : 'tzuserrel') : 'tzuserrel');
|
||||
print $form->selectDate($datep ? $datep : $object->datep, 'ap', 1, 1, 0, "action", 1, 2, 0, 'fulldaystart', '', '', '', 1, '', '', $object->fulldayevent ? ($tzforfullday ? $tzforfullday : 'tzuserrel') : 'tzuserrel');
|
||||
print ' <span class="hideonsmartphone"> - </span> ';
|
||||
print $form->selectDate($datef ? $datef : $object->datef, 'p2', 1, 1, 1, "action", 1, 0, 0, 'fulldayend', '', '', '', 1, '', '', $object->fulldayevent ? ($tzforfullday ? $tzforfullday : 'tzuserrel') : 'tzuserrel');
|
||||
print $form->selectDate($datef ? $datef : $object->datef, 'p2', 1, 1, 1, "action", 1, 2, 0, 'fulldayend', '', '', '', 1, '', '', $object->fulldayevent ? ($tzforfullday ? $tzforfullday : 'tzuserrel') : 'tzuserrel');
|
||||
print '</td></tr>';
|
||||
|
||||
print '<tr><td class=""> </td><td></td></tr>';
|
||||
|
||||
@@ -729,7 +729,7 @@ $url = DOL_URL_ROOT.'/comm/action/card.php?action=create';
|
||||
$url .= '&apyear='.$tmpforcreatebutton['year'].'&apmonth='.$tmpforcreatebutton['mon'].'&apday='.$tmpforcreatebutton['mday'].'&aphour='.$tmpforcreatebutton['hours'].'&apmin='.$tmpforcreatebutton['minutes'];
|
||||
$url .= '&backtopage='.urlencode($_SERVER["PHP_SELF"].($newparam ? '?'.$newparam : ''));
|
||||
|
||||
$newcardbutton = dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', $url, '', $user->rights->agenda->myactions->create || $user->hasRight('agenda', 'allactions', 'create'));
|
||||
$newcardbutton = dolGetButtonTitle($langs->trans('AddAction'), '', 'fa fa-plus-circle', $url, '', $user->hasRight('agenda', 'myactions', 'create') || $user->hasRight('agenda', 'allactions', 'create'));
|
||||
|
||||
$param .= '&mode='.urlencode($mode);
|
||||
|
||||
|
||||
@@ -584,6 +584,9 @@ class AdvanceTargetingMailing extends CommonObject
|
||||
if (!empty($arrayquery['cust_saleman']) && count($arrayquery['cust_saleman']) > 0) {
|
||||
$sqlwhere[] = " (saleman.fk_user IN (".$this->db->sanitize(implode(',', $arrayquery['cust_saleman']))."))";
|
||||
}
|
||||
if (!empty($arrayquery['cust_state']) && count($arrayquery['cust_state']) > 0) {
|
||||
$sqlwhere[] = " (t.fk_departement IN (".$this->db->sanitize(implode(',', $arrayquery['cust_state']))."))";
|
||||
}
|
||||
if (!empty($arrayquery['cust_country']) && count($arrayquery['cust_country']) > 0) {
|
||||
$sqlwhere[] = " (t.fk_pays IN (".$this->db->sanitize(implode(',', $arrayquery['cust_country']))."))";
|
||||
}
|
||||
@@ -825,6 +828,12 @@ class AdvanceTargetingMailing extends CommonObject
|
||||
if (!empty($arrayquery['cust_saleman']) && count($arrayquery['cust_saleman']) > 0) {
|
||||
$sqlwhere[] = " (saleman.fk_user IN (".$this->db->sanitize(implode(',', $arrayquery['cust_saleman']))."))";
|
||||
}
|
||||
//if (!empty($arrayquery['cust_state'])) {
|
||||
// $sqlwhere[] = $this->transformToSQL('tsd.nom', $arrayquery['cust_state']);
|
||||
//}
|
||||
if (!empty($arrayquery['cust_state']) && count($arrayquery['cust_state']) > 0) {
|
||||
$sqlwhere[] = " (t.fk_departement IN (".$this->db->sanitize(implode(',', $arrayquery['cust_state']))."))";
|
||||
}
|
||||
if (!empty($arrayquery['cust_country']) && count($arrayquery['cust_country']) > 0) {
|
||||
$sqlwhere[] = " (ts.fk_pays IN (".$this->db->sanitize(implode(',', $arrayquery['cust_country']))."))";
|
||||
}
|
||||
|
||||
@@ -87,6 +87,67 @@ class FormAdvTargetEmailing extends Form
|
||||
return $this->advMultiselectarray($htmlname, $options_array, $selected_array);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return combo list of activated countries, into language of user
|
||||
*
|
||||
* @param string $htmlname of html select object
|
||||
* @param array $selected_array or Code or Label of preselected country
|
||||
* @return string HTML string with select
|
||||
*/
|
||||
public function multiselectState($htmlname = 'state_id', $selected_array = array())
|
||||
{
|
||||
global $conf, $langs;
|
||||
|
||||
$langs->load("dict");
|
||||
$maxlength = 0;
|
||||
|
||||
$out = '';
|
||||
$stateArray = array();
|
||||
$label = array();
|
||||
|
||||
$options_array = array();
|
||||
|
||||
$sql = "SELECT d.rowid as rowid, d.code_departement as code, d.nom as department, r.nom as region";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."c_departements d";
|
||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_regions r on d.fk_region=r.code_region";
|
||||
$sql .= " WHERE d.active = 1 AND d.code_departement<>'' AND r.code_region<>''";
|
||||
//$sql .= " ORDER BY r.nom ASC, d.nom ASC";
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql) {
|
||||
$num = $this->db->num_rows($resql);
|
||||
$i = 0;
|
||||
if ($num) {
|
||||
$foundselected = false;
|
||||
|
||||
while ($i < $num) {
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
$stateArray [$i] ['rowid'] = $obj->rowid;
|
||||
$stateArray [$i] ['code'] = $obj->code;
|
||||
$stateArray [$i] ['label'] = $obj->region.'/'.$obj->department;
|
||||
$label[$i] = $stateArray[$i]['label'];
|
||||
$i++;
|
||||
}
|
||||
|
||||
$array1_sort_order = SORT_ASC;
|
||||
array_multisort($label, $array1_sort_order, $stateArray);
|
||||
|
||||
foreach ($stateArray as $row) {
|
||||
$label = dol_trunc($row['label'], $maxlength, 'middle');
|
||||
if ($row['code']) {
|
||||
$label .= ' ('.$row['code'].')';
|
||||
}
|
||||
|
||||
$options_array[$row['rowid']] = $label;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
dol_print_error($this->db);
|
||||
}
|
||||
|
||||
return $this->advMultiselectarray($htmlname, $options_array, $selected_array);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return combo list of activated countries, into language of user
|
||||
*
|
||||
|
||||
@@ -72,7 +72,7 @@ $date_stopMonth = GETPOSTINT('date_stopmonth');
|
||||
$date_stopYear = GETPOSTINT('date_stopyear');
|
||||
$date_stop = dol_mktime(23, 59, 59, $date_stopMonth, $date_stopDay, $date_stopYear, 'tzuserrel');
|
||||
$action = GETPOST('action', 'aZ09');
|
||||
$projectid = (GETPOSTINT('projectid') ? GETPOSTINT('projectid') : 0);
|
||||
$projectid = GETPOSTINT('projectid');
|
||||
|
||||
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
|
||||
$hookmanager->initHooks(array('comptafileslist', 'globallist'));
|
||||
@@ -667,7 +667,7 @@ foreach ($listofchoices as $choice => $val) {
|
||||
$disabled = ' disabled';
|
||||
}
|
||||
$checked = (((!GETPOSTISSET('search') && $action != 'searchfiles') || GETPOST($choice)) ? ' checked="checked"' : '');
|
||||
print '<div class="'.($i > 0 ? 'paddingleft marginleftonly' : '').' inline-block marginrightonly paddingright"><input type="checkbox" id="'.$choice.'" name="'.$choice.'" value="1"'.$checked.$disabled.'><label for="'.$choice.'"> ';
|
||||
print '<div class="inline-block marginrightonlylarge paddingright margintoponly"><input type="checkbox" id="'.$choice.'" name="'.$choice.'" value="1"'.$checked.$disabled.'><label for="'.$choice.'"> ';
|
||||
print img_picto($langs->trans($val['label']), $val['picto'], 'class=""').' '.$langs->trans($val['label']);
|
||||
print '</label></div>';
|
||||
$i++;
|
||||
@@ -701,7 +701,7 @@ if (!empty($date_start) && !empty($date_stop)) {
|
||||
|
||||
echo dol_print_date($date_start, 'day', 'tzuserrel')." - ".dol_print_date($date_stop, 'day', 'tzuserrel');
|
||||
|
||||
print '<a class="marginleftonly small'.(empty($TData) ? ' butActionRefused' : ' butAction').'" href="'.$_SERVER["PHP_SELF"].'?action=dl&token='.currentToken().'&projectid='.$projectid.'&output=file&file='.urlencode($filename).$param.'"';
|
||||
print '<a class="marginleftonly small'.(empty($TData) ? ' butActionRefused' : ' butAction').'" href="'.$_SERVER["PHP_SELF"].'?action=dl&token='.currentToken().'&projectid='.((int) $projectid).'&output=file&file='.urlencode($filename).$param.'"';
|
||||
if (empty($TData)) {
|
||||
print " disabled";
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -68,7 +69,7 @@ class box_graph_invoices_permonth extends ModeleBoxes
|
||||
//include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
||||
//$facturestatic=new Facture($this->db);
|
||||
|
||||
$startmonth = $conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1;
|
||||
$startmonth = getDolGlobalInt('SOCIETE_FISCAL_MONTH_START', 1);
|
||||
if (!getDolGlobalString('GRAPH_USE_FISCAL_YEAR')) {
|
||||
$startmonth = 1;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -65,7 +66,7 @@ class box_graph_invoices_peryear extends ModeleBoxes
|
||||
//include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
|
||||
//$facturestatic=new Facture($this->db);
|
||||
|
||||
$startmonth = $conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1;
|
||||
$startmonth = getDolGlobalInt('SOCIETE_FISCAL_MONTH_START', 1);
|
||||
if (!getDolGlobalString('GRAPH_USE_FISCAL_YEAR')) {
|
||||
$startmonth = 1;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -66,7 +67,7 @@ class box_graph_invoices_supplier_permonth extends ModeleBoxes
|
||||
|
||||
include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
|
||||
|
||||
$startmonth = $conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1;
|
||||
$startmonth = getDolGlobalInt('SOCIETE_FISCAL_MONTH_START', 1);
|
||||
if (!getDolGlobalString('GRAPH_USE_FISCAL_YEAR')) {
|
||||
$startmonth = 1;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -67,7 +68,7 @@ class box_graph_orders_permonth extends ModeleBoxes
|
||||
//include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
|
||||
//$commandestatic=new Commande($this->db);
|
||||
|
||||
$startmonth = $conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1;
|
||||
$startmonth = getDolGlobalInt('SOCIETE_FISCAL_MONTH_START', 1);
|
||||
if (!getDolGlobalString('GRAPH_USE_FISCAL_YEAR')) {
|
||||
$startmonth = 1;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -66,7 +67,7 @@ class box_graph_orders_supplier_permonth extends ModeleBoxes
|
||||
|
||||
include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php';
|
||||
|
||||
$startmonth = $conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1;
|
||||
$startmonth = getDolGlobalInt('SOCIETE_FISCAL_MONTH_START', 1);
|
||||
if (!getDolGlobalString('GRAPH_USE_FISCAL_YEAR')) {
|
||||
$startmonth = 1;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -67,7 +68,7 @@ class box_graph_propales_permonth extends ModeleBoxes
|
||||
//include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
|
||||
//$propalstatic=new Propal($this->db);
|
||||
|
||||
$startmonth = $conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1;
|
||||
$startmonth = getDolGlobalInt('SOCIETE_FISCAL_MONTH_START', 1);
|
||||
if (!getDolGlobalString('GRAPH_USE_FISCAL_YEAR')) {
|
||||
$startmonth = 1;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<?php
|
||||
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2015-2023 Frédéric France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2021-2023 Waël Almoman <info@almoman.com>
|
||||
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2015-2024 Frédéric France <frederic.france@free.fr>
|
||||
* Copyright (C) 2021-2023 Waël Almoman <info@almoman.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -140,12 +140,11 @@ class box_members_by_tags extends ModeleBoxes
|
||||
$line++;
|
||||
$AdherentTag = array();
|
||||
foreach ($sumMembers as $key => $data) {
|
||||
$adhtag = new Categorie($this->db);
|
||||
$adhtag->id = $key;
|
||||
|
||||
if ($key == 'total') {
|
||||
break;
|
||||
}
|
||||
$adhtag = new Categorie($this->db);
|
||||
$adhtag->id = (int) $key;
|
||||
$adhtag->label = $data['label'];
|
||||
$AdherentTag[$key] = $adhtag;
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<?php
|
||||
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2015-2023 Frederic France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2021-2023 Waël Almoman <info@almoman.com>
|
||||
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2015-2024 Frédéric France <frederic.france@free.fr>
|
||||
* Copyright (C) 2021-2023 Waël Almoman <info@almoman.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -140,12 +140,11 @@ class box_members_by_type extends ModeleBoxes
|
||||
$line++;
|
||||
$AdherentType = array();
|
||||
foreach ($sumMembers as $key => $data) {
|
||||
$adhtype = new AdherentType($this->db);
|
||||
$adhtype->id = $key;
|
||||
|
||||
if ($key == 'total') {
|
||||
break;
|
||||
}
|
||||
$adhtype = new AdherentType($this->db);
|
||||
$adhtype->id = (int) $key;
|
||||
$adhtype->label = $data['label'];
|
||||
$AdherentType[$key] = $adhtype;
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2015-2020 Frederic France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2015-2024 Frédéric France <frederic.france@free.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -110,7 +110,7 @@ class box_members_last_modified extends ModeleBoxes
|
||||
$memberstatic->email = $objp->email;
|
||||
$memberstatic->morphy = $objp->morphy;
|
||||
$memberstatic->company = $objp->company;
|
||||
$memberstatic->statut = $objp->status;
|
||||
$memberstatic->status = $objp->status;
|
||||
$memberstatic->date_creation = $datec;
|
||||
$memberstatic->date_modification = $datem;
|
||||
$memberstatic->need_subscription = $objp->subscription;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?php
|
||||
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2015-2020 Frederic France <frederic.france@netlogic.fr>
|
||||
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2017 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||
* Copyright (C) 2015-2024 Frédéric France <frederic.france@free.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -110,7 +110,7 @@ class box_members_last_subscriptions extends ModeleBoxes
|
||||
$staticmember->email = $obj->email;
|
||||
$staticmember->photo = $obj->photo;
|
||||
$staticmember->morphy = $obj->morphy;
|
||||
$staticmember->statut = $obj->status;
|
||||
$staticmember->status = $obj->status;
|
||||
$staticmember->need_subscription = $obj->need_subscription;
|
||||
$staticmember->datefin = $this->db->jdate($obj->date_end_subscription);
|
||||
if (!empty($obj->fk_soc)) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2012-2018 Charlene BENKE <charlie@patas-monkey.com>
|
||||
* Copyright (C) 2015-2021 Frederic France <frederic.france@netlogic.fr>
|
||||
* Copyright (C) 2015-2024 Frédéric France <frederic.france@free.fr>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -174,7 +174,7 @@ class box_task extends ModeleBoxes
|
||||
$taskstatic->ref = $objp->ref;
|
||||
$taskstatic->label = $objp->label;
|
||||
$taskstatic->progress = $objp->progress;
|
||||
$taskstatic->fk_statut = $objp->fk_statut;
|
||||
$taskstatic->status = $objp->fk_statut;
|
||||
$taskstatic->date_end = $this->db->jdate($objp->datee);
|
||||
$taskstatic->planned_workload = $objp->planned_workload;
|
||||
$taskstatic->duration_effective = $objp->duration_effective;
|
||||
|
||||
@@ -40,8 +40,9 @@ interface Database
|
||||
/**
|
||||
* Return datas as an array
|
||||
*
|
||||
* @param resource $resultset Resultset of request
|
||||
* @return array Array
|
||||
* @param resource $resultset Resultset of request
|
||||
* @return array Array
|
||||
* @deprecated Use fetch_object() so you can access a field with its name instead of using an index of position of field.
|
||||
*/
|
||||
public function fetch_row($resultset);
|
||||
// phpcs:enable
|
||||
@@ -441,6 +442,16 @@ interface Database
|
||||
);
|
||||
// phpcs:enable
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||
/**
|
||||
* List information of columns into a table.
|
||||
*
|
||||
* @param string $table Name of table
|
||||
* @return array Array with information on table
|
||||
*/
|
||||
public function DDLInfoTable($table);
|
||||
// phpcs:enable
|
||||
|
||||
/**
|
||||
* Convert (by PHP) a PHP server TZ string date into a Timestamps date (GMT if gm=true)
|
||||
* 19700101020000 -> 3600 with TZ+1 and gmt=0
|
||||
@@ -470,16 +481,6 @@ interface Database
|
||||
*/
|
||||
public function commit($log = '');
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
|
||||
/**
|
||||
* List information of columns into a table.
|
||||
*
|
||||
* @param string $table Name of table
|
||||
* @return array Array with information on table
|
||||
*/
|
||||
public function DDLInfoTable($table);
|
||||
// phpcs:enable
|
||||
|
||||
/**
|
||||
* Free last resultset used.
|
||||
*
|
||||
|
||||
@@ -481,7 +481,6 @@ class DoliDBMysqli extends DoliDB
|
||||
return $this->db->affected_rows;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Libere le dernier resultset utilise sur cette connection
|
||||
*
|
||||
|
||||
@@ -125,7 +125,7 @@ class pdf_canelle extends ModelePDFSuppliersInvoices
|
||||
/* if (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT) || !empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT_COLUMN)) {
|
||||
$this->posxtva = $this->posxup;
|
||||
} */
|
||||
$this->posxpicture = $this->posxtva - (!getDolGlobalString('MAIN_DOCUMENTS_WITH_PICTURE_WIDTH') ? 20 : $conf->global->MAIN_DOCUMENTS_WITH_PICTURE_WIDTH); // width of images
|
||||
$this->posxpicture = $this->posxtva - (getDolGlobalInt('MAIN_DOCUMENTS_WITH_PICTURE_WIDTH', 20)); // width of images
|
||||
if ($this->page_largeur < 210) { // To work with US executive format
|
||||
$this->posxpicture -= 20;
|
||||
$this->posxtva -= 20;
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
||||
*/
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -24,6 +26,11 @@ class LogHandler
|
||||
{
|
||||
protected $ident = 0;
|
||||
|
||||
/**
|
||||
* @var string[] Array of errors messages
|
||||
*/
|
||||
public $errors = [];
|
||||
|
||||
|
||||
/**
|
||||
* Content of the info tooltip.
|
||||
@@ -80,11 +87,11 @@ class LogHandler
|
||||
* It will be called after setting the configuration.
|
||||
* The function returns an array with error messages
|
||||
*
|
||||
* @return array
|
||||
* @return bool
|
||||
*/
|
||||
public function checkConfiguration()
|
||||
{
|
||||
return array();
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
||||
*/
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -79,7 +81,7 @@ interface LogHandlerInterface
|
||||
/**
|
||||
* Output log content
|
||||
*
|
||||
* @param string $content Content to log
|
||||
* @param array $content Content to log
|
||||
* @return void
|
||||
*/
|
||||
public function export($content);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
|
||||
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
||||
*/
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/modules/syslog/logHandler.php';
|
||||
@@ -78,23 +79,21 @@ class mod_syslog_file extends LogHandler implements LogHandlerInterface
|
||||
/**
|
||||
* Return if configuration is valid
|
||||
*
|
||||
* @return array Array of errors. Empty array if ok.
|
||||
* @return bool true if ok
|
||||
*/
|
||||
public function checkConfiguration()
|
||||
{
|
||||
global $langs;
|
||||
|
||||
$errors = array();
|
||||
|
||||
$filename = $this->getFilename();
|
||||
|
||||
if (file_exists($filename) && is_writable($filename)) {
|
||||
dol_syslog('admin/syslog: file '.$filename);
|
||||
return true;
|
||||
} else {
|
||||
$errors[] = $langs->trans("ErrorFailedToOpenFile", $filename);
|
||||
$this->errors[] = $langs->trans("ErrorFailedToOpenFile", $filename);
|
||||
return false;
|
||||
}
|
||||
|
||||
return $errors;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
<?php
|
||||
/* Copyright (C) 2024 Frédéric France <frederic.france@free.fr>
|
||||
*/
|
||||
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/modules/syslog/logHandler.php';
|
||||
|
||||
@@ -77,15 +79,14 @@ class mod_syslog_syslog extends LogHandler implements LogHandlerInterface
|
||||
/**
|
||||
* Return if configuration is valid
|
||||
*
|
||||
* @return array Array of errors. Empty array if ok.
|
||||
* @return bool True if ok.
|
||||
*/
|
||||
public function checkConfiguration()
|
||||
{
|
||||
global $conf, $langs;
|
||||
global $langs;
|
||||
|
||||
$errors = array();
|
||||
$facility = constant(getDolGlobalString('SYSLOG_FACILITY'));
|
||||
|
||||
$facility = constant($conf->global->SYSLOG_FACILITY);
|
||||
if ($facility) {
|
||||
// Only LOG_USER supported on Windows
|
||||
if (!empty($_SERVER["WINDIR"])) {
|
||||
@@ -93,11 +94,11 @@ class mod_syslog_syslog extends LogHandler implements LogHandlerInterface
|
||||
}
|
||||
|
||||
dol_syslog("admin/syslog: facility ".$facility);
|
||||
return true;
|
||||
} else {
|
||||
$errors[] = $langs->trans("ErrorUnknownSyslogConstant", $facility);
|
||||
$this->errors[] = $langs->trans("ErrorUnknownSyslogConstant", $facility);
|
||||
return false;
|
||||
}
|
||||
|
||||
return $errors;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -110,9 +110,9 @@ if (!empty($array_query['cust_code'])) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
$cust_code_str = (string) $array_query['cust_code'];
|
||||
} else {
|
||||
$cust_code_str = "null";
|
||||
$cust_code_str = null;
|
||||
}
|
||||
print '</td><td><input type="text" name="cust_code" value="'.$cust_code_str.'"/></td><td>'."\n";
|
||||
print '</td><td><input type="text" name="cust_code"'.($cust_code_str!=null?' value="'.$cust_code_str:'').'"/></td><td>'."\n";
|
||||
print $form->textwithpicto('', $langs->trans("AdvTgtSearchTextHelp"), 1, 'help');
|
||||
print '</td></tr>'."\n";
|
||||
|
||||
@@ -143,6 +143,16 @@ print '</td><td><input type="text" name="cust_city" value="'.$array_query['cust_
|
||||
print $form->textwithpicto('', $langs->trans("AdvTgtSearchTextHelp"), 1, 'help');
|
||||
print '</td></tr>'."\n";
|
||||
|
||||
// State Client
|
||||
print '<tr><td>'.$langs->trans('State');
|
||||
if (!empty($array_query['cust_state'])) {
|
||||
print img_picto($langs->trans('AdvTgtUse'), 'ok.png@advtargetemailing');
|
||||
}
|
||||
print '</td><td>'."\n";
|
||||
print $formadvtargetemaling->multiselectState('cust_state', $array_query['cust_state']);
|
||||
print '</td><td>'."\n";
|
||||
print '</td></tr>'."\n";
|
||||
|
||||
// Customer Country
|
||||
print '<tr><td>'.$langs->trans("Country");
|
||||
if (!empty($array_query['cust_country'])) {
|
||||
|
||||
@@ -117,7 +117,7 @@ class Cronjob extends CommonObject
|
||||
public $lastoutput;
|
||||
|
||||
/**
|
||||
* @var string Unit frequency of job execution
|
||||
* @var int Unit frequency of job execution (60, 86400, ...)
|
||||
*/
|
||||
public $unitfrequency;
|
||||
|
||||
|
||||
@@ -143,7 +143,8 @@ $result = @include_once $conffile; // Keep @ because with some error reporting m
|
||||
$listofwrappers = stream_get_wrappers();
|
||||
// We need '.phar' for geoip2. TODO Replace phar in geoip with exploded files so we can disable phar by default.
|
||||
// phar stream does not auto unserialize content (possible code execution) since PHP 8.1
|
||||
$arrayofstreamtodisable = array('compress.zlib', 'compress.bzip2', 'ftp', 'ftps', 'glob', 'data', 'expect', 'ogg', 'rar', 'zip', 'zlib');
|
||||
// zip stream is necessary by excel import module
|
||||
$arrayofstreamtodisable = array('compress.zlib', 'compress.bzip2', 'ftp', 'ftps', 'glob', 'data', 'expect', 'ogg', 'rar', 'zlib');
|
||||
if (!empty($dolibarr_main_stream_to_disable) && is_array($dolibarr_main_stream_to_disable)) {
|
||||
$arrayofstreamtodisable = $dolibarr_main_stream_to_disable;
|
||||
}
|
||||
|
||||
@@ -887,6 +887,7 @@ class FactureFournisseur extends CommonInvoice
|
||||
$sql .= " t.note_private,";
|
||||
$sql .= " t.note_public,";
|
||||
$sql .= " t.model_pdf,";
|
||||
$sql .= " t.last_main_doc,";
|
||||
$sql .= " t.import_key,";
|
||||
$sql .= " t.extraparams,";
|
||||
$sql .= " cr.code as cond_reglement_code, cr.libelle as cond_reglement_label, cr.libelle_facture as cond_reglement_doc,";
|
||||
@@ -967,6 +968,7 @@ class FactureFournisseur extends CommonInvoice
|
||||
$this->note_private = $obj->note_private;
|
||||
$this->note_public = $obj->note_public;
|
||||
$this->model_pdf = $obj->model_pdf;
|
||||
$this->last_main_doc = $obj->last_main_doc;
|
||||
$this->import_key = $obj->import_key;
|
||||
|
||||
//Incoterms
|
||||
|
||||
@@ -150,7 +150,7 @@ class modMyModule extends DolibarrModules
|
||||
|
||||
// Prerequisites
|
||||
$this->phpmin = array(7, 1); // Minimum version of PHP required by module
|
||||
$this->need_dolibarr_version = array(11, -3); // Minimum version of Dolibarr required by module
|
||||
$this->need_dolibarr_version = array(19, -3); // Minimum version of Dolibarr required by module
|
||||
$this->need_javascript_ajax = 0;
|
||||
|
||||
// Messages at activation
|
||||
|
||||
@@ -1346,6 +1346,9 @@ select.flat.selectlimit {
|
||||
.marginrightonlyshort {
|
||||
margin-<?php echo $right; ?>: 4px !important;
|
||||
}
|
||||
.marginrightonlylarge {
|
||||
margin-<?php echo $right; ?>: 20px !important;
|
||||
}
|
||||
.margintoponly {
|
||||
margin-top: 10px !important;
|
||||
}
|
||||
|
||||
@@ -1572,6 +1572,9 @@ select.flat.selectlimit {
|
||||
.marginrightonlyshort {
|
||||
margin-<?php echo $right; ?>: 4px !important;
|
||||
}
|
||||
.marginrightonlylarge {
|
||||
margin-<?php echo $right; ?>: 20px !important;
|
||||
}
|
||||
.margintoponly {
|
||||
margin-top: 10px !important;
|
||||
}
|
||||
|
||||
@@ -1085,16 +1085,18 @@ class Website extends CommonObject
|
||||
$allaliases = $objectpageold->pageurl;
|
||||
$allaliases .= ($objectpageold->aliasalt ? ','.$objectpageold->aliasalt : '');
|
||||
|
||||
if (!getDolGlobalInt('WEBSITE_EXPORT_KEEP_FILES_OF_PAGES')) { // We don't need to keep the PHP files of pages and aliases (they are regenerated at import) so we remove them. You can ask to keep them in the export
|
||||
if (!getDolGlobalInt('WEBSITE_EXPORT_KEEP_FILES_OF_PAGES')) {
|
||||
// We don't need to keep the PHP files of pages and aliases (they are regenerated at import) so we remove them.
|
||||
// Delete the pageX.tpl.php page
|
||||
dol_delete_file($conf->website->dir_temp.'/'.$website->ref.'/containers/page'.$objectpageold->id.'.tpl.php', 0, 0, 0, null, false, 0);
|
||||
// Delete the alias page
|
||||
dol_delete_file($conf->website->dir_temp.'/'.$website->ref.'/containers/'.$objectpageold->pageurl.'.php', 0, 0, 0, null, false, 0);
|
||||
dol_delete_file($conf->website->dir_temp.'/'.$website->ref.'/containers/*/'.$objectpageold->pageurl.'.php', 0, 0, 0, null, false, 0);
|
||||
// Delete alternative alias pages
|
||||
foreach ($objectpageold->aliasalt as $tmpaliasalt) {
|
||||
dol_delete_file($conf->website->dir_temp.'/'.$website->ref.'/containers/'.$tmpaliasalt.'.php', 0, 0, 0, null, false, 0);
|
||||
dol_delete_file($conf->website->dir_temp.'/'.$website->ref.'/containers/*/'.$tmpaliasalt.'.php', 0, 0, 0, null, false, 0);
|
||||
$arrayofaliases = explode(',', $objectpageold->aliasalt);
|
||||
foreach ($arrayofaliases as $tmpaliasalt) {
|
||||
dol_delete_file($conf->website->dir_temp.'/'.$website->ref.'/containers/'.trim($tmpaliasalt).'.php', 0, 0, 0, null, false, 0);
|
||||
dol_delete_file($conf->website->dir_temp.'/'.$website->ref.'/containers/*/'.trim($tmpaliasalt).'.php', 0, 0, 0, null, false, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user