diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl
index 906601d94d4..34b7b97e593 100755
--- a/build/makepack-dolibarr.pl
+++ b/build/makepack-dolibarr.pl
@@ -614,7 +614,6 @@ if ($nboftargetok) {
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nnnick/chartjs/scripts`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nnnick/chartjs/src`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nnnick/chartjs/test`;
- $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/lib/Mail`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/samples`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/php-iban/docs`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/sabre/sabre/*/tests`;
diff --git a/htdocs/accountancy/class/accountancyexport.class.php b/htdocs/accountancy/class/accountancyexport.class.php
index ec24af642fd..73035c55d5d 100644
--- a/htdocs/accountancy/class/accountancyexport.class.php
+++ b/htdocs/accountancy/class/accountancyexport.class.php
@@ -657,9 +657,12 @@ class AccountancyExport
/**
* Export format : WinFic - eWinfic - WinSis Compta
+ * Last review for this format : 2022-11-01 Alexandre Spangaro (aspangaro@open-dsi.fr)
*
+ * Help : https://wiki.gestan.fr/lib/exe/fetch.php?media=wiki:v15:compta:accountancy-format_winfic-ewinfic-winsiscompta.pdf
*
* @param array $TData data
+ *
* @return void
*/
public function exportWinfic(&$TData)
@@ -667,10 +670,14 @@ class AccountancyExport
global $conf;
$end_line = "\r\n";
+ $index = 1;
//We should use dol_now function not time however this is wrong date to transfert in accounting
//$date_ecriture = dol_print_date(dol_now(), $conf->global->ACCOUNTING_EXPORT_DATE); // format must be ddmmyy
//$date_ecriture = dol_print_date(time(), $conf->global->ACCOUNTING_EXPORT_DATE); // format must be ddmmyy
+
+ // Warning ! When truncation is necessary, no dot because 3 dots = three characters. The columns are shifted
+
foreach ($TData as $data) {
$code_compta = $data->numero_compte;
if (!empty($data->subledger_account)) {
@@ -679,7 +686,7 @@ class AccountancyExport
$Tab = array();
//$Tab['type_ligne'] = 'M';
- $Tab['code_journal'] = str_pad(self::trunc($data->code_journal, 2), 2);
+ $Tab['code_journal'] = str_pad(dol_trunc($data->code_journal, 2, 'right', 'UTF-8', 1), 2);
//We use invoice date $data->doc_date not $date_ecriture which is the transfert date
//maybe we should set an option for customer who prefer to keep in accounting software the tranfert date instead of invoice date ?
@@ -688,11 +695,11 @@ class AccountancyExport
$Tab['folio'] = ' 1';
- $Tab['num_ecriture'] = str_pad(self::trunc($data->piece_num, 6), 6, ' ', STR_PAD_LEFT);
+ $Tab['num_ecriture'] = str_pad(dol_trunc($index, 6, 'right', 'UTF-8', 1), 6, ' ', STR_PAD_LEFT);
$Tab['jour_ecriture'] = dol_print_date($data->doc_date, '%d%m%y');
- $Tab['num_compte'] = str_pad(self::trunc($code_compta, 6), 6, '0');
+ $Tab['num_compte'] = str_pad(dol_trunc($code_compta, 6, 'right', 'UTF-8', 1), 6, '0');
if ($data->sens == 'D') {
$Tab['montant_debit'] = str_pad(number_format($data->debit, 2, ',', ''), 13, ' ', STR_PAD_LEFT);
@@ -704,11 +711,11 @@ class AccountancyExport
$Tab['montant_crebit'] = str_pad(number_format($data->credit, 2, ',', ''), 13, ' ', STR_PAD_LEFT);
}
- $Tab['libelle_ecriture'] = str_pad(self::trunc(dol_string_unaccent($data->doc_ref).' '.dol_string_unaccent($data->label_operation), 30), 30);
+ $Tab['libelle_ecriture'] = str_pad(dol_trunc(dol_string_unaccent($data->doc_ref).' '.dol_string_unaccent($data->label_operation), 30, 'right', 'UTF-8', 1), 30);
- $Tab['lettrage'] = str_repeat(' ', 2);
+ $Tab['lettrage'] = str_repeat(dol_trunc($data->lettering_code, 2, 'left', 'UTF-8', 1), 2);
- $Tab['code_piece'] = str_repeat(' ', 5);
+ $Tab['code_piece'] = str_pad(dol_trunc($data->piece_num, 5, 'left', 'UTF-8', 1), 5, ' ', STR_PAD_LEFT);
$Tab['code_stat'] = str_repeat(' ', 4);
@@ -732,6 +739,8 @@ class AccountancyExport
$Tab['end_line'] = $end_line;
print implode('|', $Tab);
+
+ $index++;
}
}
diff --git a/htdocs/asset/admin/assets_extrafields.php b/htdocs/asset/admin/assets_extrafields.php
index 9a68f99fe06..0c9267a6550 100644
--- a/htdocs/asset/admin/assets_extrafields.php
+++ b/htdocs/asset/admin/assets_extrafields.php
@@ -41,7 +41,7 @@ foreach ($tmptype2label as $key => $val) {
$action = GETPOST('action', 'aZ09');
$attrname = GETPOST('attrname', 'alpha');
-$elementtype = 'don'; //Must be the $table_element of the class that manage extrafield
+$elementtype = 'asset'; //Must be the $table_element of the class that manage extrafield
if (!$user->admin) {
accessforbidden();
diff --git a/htdocs/comm/mailing/card.php b/htdocs/comm/mailing/card.php
index b91bc866d9a..b8bd18f56c2 100644
--- a/htdocs/comm/mailing/card.php
+++ b/htdocs/comm/mailing/card.php
@@ -508,9 +508,10 @@ if (empty($reshook)) {
exit;
}
$mesgs[] = $object->error;
+ $mesgs = array_merge($mesgs, $object->errors);
}
- setEventMessages(null, $mesgs, 'errors');
+ setEventMessages('', $mesgs, 'errors');
$action = "create";
}
@@ -595,9 +596,10 @@ if (empty($reshook)) {
exit;
}
$mesgs[] = $object->error;
+ $mesgs = array_merge($mesgs, $object->errors);
}
- setEventMessages($mesg, $mesgs, 'errors');
+ setEventMessages('', $mesgs, 'errors');
$action = "edit";
} else {
$action = "edit";
diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php
index c737ea63ebe..da4c756705f 100644
--- a/htdocs/comm/propal/card.php
+++ b/htdocs/comm/propal/card.php
@@ -1635,13 +1635,13 @@ if ($action == 'create') {
// Terms of payment
print '
| '.$langs->trans('PaymentConditionsShort').' | ';
print img_picto('', 'paiment');
- $form->select_conditions_paiements((GETPOSTISSET('cond_reglement_id') ? GETPOST('cond_reglement_id', 'int') : $soc->cond_reglement_id), 'cond_reglement_id', -1, 1);
+ $form->select_conditions_paiements(((GETPOSTISSET('cond_reglement_id') && GETPOST('cond_reglement_id', 'int') > 0) ? GETPOST('cond_reglement_id', 'int') : $soc->cond_reglement_id), 'cond_reglement_id', -1, 1);
print ' |
';
// Mode of payment
print '| '.$langs->trans('PaymentMode').' | ';
print img_picto('', 'bank').' ';
- $form->select_types_paiements((GETPOSTISSET('mode_reglement_id') ? GETPOST('mode_reglement_id', 'int') : $soc->mode_reglement_id), 'mode_reglement_id', 'CRDT', 0, 1, 0, 0, 1, 'maxwidth200 widthcentpercentminusx');
+ $form->select_types_paiements(((GETPOSTISSET('mode_reglement_id') && GETPOST('mode_reglement_id', 'int') > 0) ? GETPOST('mode_reglement_id', 'int') : $soc->mode_reglement_id), 'mode_reglement_id', 'CRDT', 0, 1, 0, 0, 1, 'maxwidth200 widthcentpercentminusx');
print ' |
';
// Bank Account
diff --git a/htdocs/core/ajax/check_notifications.php b/htdocs/core/ajax/check_notifications.php
index 35d10af49b6..4f5290b8826 100644
--- a/htdocs/core/ajax/check_notifications.php
+++ b/htdocs/core/ajax/check_notifications.php
@@ -152,7 +152,7 @@ if (empty($_SESSION['auto_check_events_not_before']) || $time >= $_SESSION['auto
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'actioncomm_reminder as ar ON a.id = ar.fk_actioncomm AND ar.fk_user = '.$user->id;
$sql .= ' WHERE a.code <> "AC_OTH_AUTO"';
$sql .= ' AND (';
- $sql .= " (ar.typeremind = 'browser' AND ar.dateremind < '".$db->idate(dol_now())."' AND ar.status = 0 AND ar.entity = ".$conf->entity;
+ $sql .= " ar.typeremind = 'browser' AND ar.dateremind < '".$db->idate(dol_now())."' AND ar.status = 0 AND ar.entity = ".$conf->entity;
$sql .= ' )';
} else {
$sql .= ' JOIN '.MAIN_DB_PREFIX.'actioncomm_reminder as ar ON a.id = ar.fk_actioncomm AND ar.fk_user = '.$user->id;
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index a3a72d4894a..27b00377411 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -2072,7 +2072,7 @@ abstract class CommonObject
$sql .= " AND te.entity IS NOT NULL"; // Show all users
} else {
$sql .= " AND ug.fk_user = te.rowid";
- $sql .= " AND ug.entity IN (".getEntity($this->element).")";
+ $sql .= " AND ug.entity IN (".getEntity('usergroup').")";
}
} else {
$sql .= ' AND te.entity IN ('.getEntity($this->element).')';
@@ -2142,7 +2142,7 @@ abstract class CommonObject
$sql .= " AND te.entity IS NOT NULL"; // Show all users
} else {
$sql .= " AND ug.fk_user = te.rowid";
- $sql .= " AND ug.entity IN (".getEntity($this->element).")";
+ $sql .= " AND ug.entity IN (".getEntity('usergroup').")";
}
} else {
$sql .= ' AND te.entity IN ('.getEntity($this->element).')';
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index 479b8b30977..9f63a420430 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -8133,7 +8133,7 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1)
}
// We block using of php exec or php file functions
- $forbiddenphpstrings = array("exec(", "passthru(", "shell_exec(", "system(", "proc_open(", "popen(", "eval(", "dol_eval(", "executeCLI(");
+ $forbiddenphpstrings = array("exec(", "passthru(", "shell_exec(", "system(", "proc_open(", "popen(", "eval(", "dol_eval(", "executeCLI(", "base64_decode(");
$forbiddenphpstrings = array_merge($forbiddenphpstrings, array("fopen(", "file_put_contents(", "fputs(", "fputscsv(", "fwrite(", "fpassthru(", "unlink(", "mkdir(", "rmdir(", "symlink(", "touch(", "umask("));
$forbiddenphpstrings = array_merge($forbiddenphpstrings, array('function(', '$$', 'call_user_func('));
$forbiddenphpstrings = array_merge($forbiddenphpstrings, array('_ENV', '_SESSION', '_COOKIE', '_GET', '_POST', '_REQUEST'));
diff --git a/htdocs/includes/ckeditor/ckeditor/adapters/jquery.js b/htdocs/includes/ckeditor/ckeditor/adapters/jquery.js
deleted file mode 100644
index ba745105ecf..00000000000
--- a/htdocs/includes/ckeditor/ckeditor/adapters/jquery.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
- Copyright (c) 2003-2019, CKSource - Frederico Knabben. All rights reserved.
- For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
-*/
-(function(a){if("undefined"==typeof a)throw Error("jQuery should be loaded before CKEditor jQuery adapter.");if("undefined"==typeof CKEDITOR)throw Error("CKEditor should be loaded before CKEditor jQuery adapter.");CKEDITOR.config.jqueryOverrideVal="undefined"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data("ckeditorInstance");if(!a)throw"CKEditor is not initialized yet, use ckeditor() with a callback.";return a},
-ckeditor:function(g,e){if(!CKEDITOR.env.isCompatible)throw Error("The environment is incompatible.");if(!a.isFunction(g)){var m=e;e=g;g=m}var k=[];e=e||{};this.each(function(){var b=a(this),c=b.data("ckeditorInstance"),f=b.data("_ckeditorInstanceLock"),h=this,l=new a.Deferred;k.push(l.promise());if(c&&!f)g&&g.apply(c,[this]),l.resolve();else if(f)c.once("instanceReady",function(){setTimeout(function d(){c.element?(c.element.$==h&&g&&g.apply(c,[h]),l.resolve()):setTimeout(d,100)},0)},null,null,9999);
-else{if(e.autoUpdateElement||"undefined"==typeof e.autoUpdateElement&&CKEDITOR.config.autoUpdateElement)e.autoUpdateElementJquery=!0;e.autoUpdateElement=!1;b.data("_ckeditorInstanceLock",!0);c=a(this).is("textarea")?CKEDITOR.replace(h,e):CKEDITOR.inline(h,e);b.data("ckeditorInstance",c);c.on("instanceReady",function(e){var d=e.editor;setTimeout(function n(){if(d.element){e.removeListener();d.on("dataReady",function(){b.trigger("dataReady.ckeditor",[d])});d.on("setData",function(a){b.trigger("setData.ckeditor",
-[d,a.data])});d.on("getData",function(a){b.trigger("getData.ckeditor",[d,a.data])},999);d.on("destroy",function(){b.trigger("destroy.ckeditor",[d])});d.on("save",function(){a(h.form).submit();return!1},null,null,20);if(d.config.autoUpdateElementJquery&&b.is("textarea")&&a(h.form).length){var c=function(){b.ckeditor(function(){d.updateElement()})};a(h.form).submit(c);a(h.form).bind("form-pre-serialize",c);b.bind("destroy.ckeditor",function(){a(h.form).unbind("submit",c);a(h.form).unbind("form-pre-serialize",
-c)})}d.on("destroy",function(){b.removeData("ckeditorInstance")});b.removeData("_ckeditorInstanceLock");b.trigger("instanceReady.ckeditor",[d]);g&&g.apply(d,[h]);l.resolve()}else setTimeout(n,100)},0)},null,null,9999)}});var f=new a.Deferred;this.promise=f.promise();a.when.apply(this,k).then(function(){f.resolve()});this.editor=this.eq(0).data("ckeditorInstance");return this}});CKEDITOR.config.jqueryOverrideVal&&(a.fn.val=CKEDITOR.tools.override(a.fn.val,function(g){return function(e){if(arguments.length){var m=
-this,k=[],f=this.each(function(){var b=a(this),c=b.data("ckeditorInstance");if(b.is("textarea")&&c){var f=new a.Deferred;c.setData(e,function(){f.resolve()});k.push(f.promise());return!0}return g.call(b,e)});if(k.length){var b=new a.Deferred;a.when.apply(this,k).done(function(){b.resolveWith(m)});return b.promise()}return f}var f=a(this).eq(0),c=f.data("ckeditorInstance");return f.is("textarea")&&c?c.getData():g.call(f)}}))})(window.jQuery);
\ No newline at end of file
diff --git a/htdocs/install/step5.php b/htdocs/install/step5.php
index b841edb12ac..27bce2d8e57 100644
--- a/htdocs/install/step5.php
+++ b/htdocs/install/step5.php
@@ -220,9 +220,9 @@ if ($action == "set" || empty($action) || preg_match('/upgrade/i', $action)) {
print $langs->trans("AdminLoginCreatedSuccessfuly", $login)."
";
$success = 1;
} else {
- if ($newuser->error == 'ErrorLoginAlreadyExists') {
+ if ($result == -6) { //login or email already exists
dolibarr_install_syslog('step5: AdminLoginAlreadyExists', LOG_WARNING);
- print '
'.$langs->trans("AdminLoginAlreadyExists", $login)."
";
+ print '
'.$newuser->error."
";
$success = 1;
} else {
dolibarr_install_syslog('step5: FailedToCreateAdminLogin '.$newuser->error, LOG_ERR);
@@ -357,48 +357,50 @@ if ($action == "set" || empty($action) || preg_match('/upgrade/i', $action)) {
// Create lock file
// If first install
-if ($action == "set" && $success) {
- if (empty($conf->global->MAIN_VERSION_LAST_UPGRADE) || ($conf->global->MAIN_VERSION_LAST_UPGRADE == DOL_VERSION)) {
- // Install is finished
- print $langs->trans("SystemIsInstalled")."
";
+if ($action == "set") {
+ if ($success) {
+ if (empty($conf->global->MAIN_VERSION_LAST_UPGRADE) || ($conf->global->MAIN_VERSION_LAST_UPGRADE == DOL_VERSION)) {
+ // Install is finished
+ print $langs->trans("SystemIsInstalled")."
";
- $createlock = 0;
+ $createlock = 0;
- if (!empty($force_install_lockinstall) || !empty($conf->global->MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE)) {
- // Install is finished, we create the lock file
- $lockfile = DOL_DATA_ROOT.'/install.lock';
- $fp = @fopen($lockfile, "w");
- if ($fp) {
- if (empty($force_install_lockinstall) || $force_install_lockinstall == 1) {
- $force_install_lockinstall = 444; // For backward compatibility
+ if (!empty($force_install_lockinstall) || !empty($conf->global->MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE)) {
+ // Install is finished, we create the lock file
+ $lockfile = DOL_DATA_ROOT.'/install.lock';
+ $fp = @fopen($lockfile, "w");
+ if ($fp) {
+ if (empty($force_install_lockinstall) || $force_install_lockinstall == 1) {
+ $force_install_lockinstall = 444; // For backward compatibility
+ }
+ fwrite($fp, "This is a lock file to prevent use of install pages (set with permission ".$force_install_lockinstall.")");
+ fclose($fp);
+ @chmod($lockfile, octdec($force_install_lockinstall));
+ $createlock = 1;
}
- fwrite($fp, "This is a lock file to prevent use of install pages (set with permission ".$force_install_lockinstall.")");
- fclose($fp);
- @chmod($lockfile, octdec($force_install_lockinstall));
- $createlock = 1;
}
+ if (empty($createlock)) {
+ print ''.$langs->trans("WarningRemoveInstallDir")."
";
+ }
+
+ print "
";
+
+ print $langs->trans("YouNeedToPersonalizeSetup")."
";
+
+ print '';
+ } else {
+ // If here MAIN_VERSION_LAST_UPGRADE is not empty
+ print $langs->trans("VersionLastUpgrade").': '.$conf->global->MAIN_VERSION_LAST_UPGRADE.'
';
+ print $langs->trans("VersionProgram").': '.DOL_VERSION.'
';
+ print $langs->trans("MigrationNotFinished").'
';
+ print "
";
+
+ print '';
}
- if (empty($createlock)) {
- print ''.$langs->trans("WarningRemoveInstallDir")."
";
- }
-
- print "
";
-
- print $langs->trans("YouNeedToPersonalizeSetup")."
";
-
- print '';
- } else {
- // If here MAIN_VERSION_LAST_UPGRADE is not empty
- print $langs->trans("VersionLastUpgrade").': '.$conf->global->MAIN_VERSION_LAST_UPGRADE.'
';
- print $langs->trans("VersionProgram").': '.DOL_VERSION.'
';
- print $langs->trans("MigrationNotFinished").'
';
- print "
";
-
- print '';
}
} elseif (empty($action) || preg_match('/upgrade/i', $action)) {
// If upgrade
@@ -443,7 +445,7 @@ if ($action == "set" && $success) {
$morehtml .= '';
}
} else {
- dol_print_error('', 'step5.php: unknown choice of action');
+ dol_print_error('', 'step5.php: unknown choice of action='.$action.' in create lock file seaction');
}
// Clear cache files
diff --git a/htdocs/product/reassort.php b/htdocs/product/reassort.php
index a711c630414..79498562210 100644
--- a/htdocs/product/reassort.php
+++ b/htdocs/product/reassort.php
@@ -141,7 +141,7 @@ $reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters); // N
$sql .= $hookmanager->resPrint;
$sql .= ' FROM '.MAIN_DB_PREFIX.'product as p';
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product_stock as s ON p.rowid = s.fk_product';
-$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'entrepot as e ON s.fk_entrepot = e.rowid AND e.entity IN ('.getEntity('entrepot').')';
+$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'entrepot as e ON s.fk_entrepot = e.rowid AND e.entity IN ('.getEntity('stock').')';
if (!empty($conf->global->PRODUCT_USE_UNITS)) {
$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_units as u on p.fk_unit = u.rowid';
}
diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php
index b127d3aa686..2e6bdd8cec0 100644
--- a/htdocs/projet/class/project.class.php
+++ b/htdocs/projet/class/project.class.php
@@ -838,7 +838,7 @@ class Project extends CommonObject
}
// Fetch tasks
- $this->getLinesArray($user);
+ $this->getLinesArray($user, 0);
// Delete tasks
$ret = $this->deleteTasks($user);
@@ -2204,14 +2204,15 @@ class Project extends CommonObject
/**
* Create an array of tasks of current project
*
- * @param User $user Object user we want project allowed to
- * @return int >0 if OK, <0 if KO
+ * @param User $user Object user we want project allowed to
+ * @param int $loadRoleMode 1= will test Roles on task; 0 used in delete project action
+ * @return int >0 if OK, <0 if KO
*/
- public function getLinesArray($user)
+ public function getLinesArray($user, $loadRoleMode = 1)
{
require_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php';
$taskstatic = new Task($this->db);
- $this->lines = $taskstatic->getTasksArray(0, $user, $this->id, 0, 0);
+ $this->lines = $taskstatic->getTasksArray(0, $user, $this->id, 0, 0, '', '-1', '', 0, 0, array(), 0, array(), 0, $loadRoleMode);
}
}
diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php
index cda8494682b..2663053b549 100644
--- a/htdocs/projet/class/task.class.php
+++ b/htdocs/projet/class/task.class.php
@@ -772,9 +772,10 @@ class Task extends CommonObject
* @param array $extrafields Show additional column from project or task
* @param int $includebilltime Calculate also the time to bill and billed
* @param array $search_array_options Array of search
+ * @param int $loadRoleMode 1= will test Roles on task; 0 used in delete project action
* @return array Array of tasks
*/
- public function getTasksArray($usert = null, $userp = null, $projectid = 0, $socid = 0, $mode = 0, $filteronproj = '', $filteronprojstatus = '-1', $morewherefilter = '', $filteronprojuser = 0, $filterontaskuser = 0, $extrafields = array(), $includebilltime = 0, $search_array_options = array())
+ public function getTasksArray($usert = null, $userp = null, $projectid = 0, $socid = 0, $mode = 0, $filteronproj = '', $filteronprojstatus = '-1', $morewherefilter = '', $filteronprojuser = 0, $filterontaskuser = 0, $extrafields = array(), $includebilltime = 0, $search_array_options = array(), $loadRoleMode = 1)
{
global $conf, $hookmanager;
@@ -925,18 +926,18 @@ class Task extends CommonObject
$error = 0;
$obj = $this->db->fetch_object($resql);
-
- if ((!$obj->public) && (is_object($userp))) { // If not public project and we ask a filter on project owned by a user
- if (!$this->getUserRolesForProjectsOrTasks($userp, 0, $obj->projectid, 0)) {
- $error++;
+ if ($loadRoleMode) {
+ if ((!$obj->public) && (is_object($userp))) { // If not public project and we ask a filter on project owned by a user
+ if (!$this->getUserRolesForProjectsOrTasks($userp, 0, $obj->projectid, 0)) {
+ $error++;
+ }
+ }
+ if (is_object($usert)) { // If we ask a filter on a user affected to a task
+ if (!$this->getUserRolesForProjectsOrTasks(0, $usert, $obj->projectid, $obj->taskid)) {
+ $error++;
+ }
}
}
- if (is_object($usert)) { // If we ask a filter on a user affected to a task
- if (!$this->getUserRolesForProjectsOrTasks(0, $usert, $obj->projectid, $obj->taskid)) {
- $error++;
- }
- }
-
if (!$error) {
$tasks[$i] = new Task($this->db);
$tasks[$i]->id = $obj->taskid;
diff --git a/htdocs/public/members/new.php b/htdocs/public/members/new.php
index d29d80cf5d4..da53e3a13f2 100644
--- a/htdocs/public/members/new.php
+++ b/htdocs/public/members/new.php
@@ -287,177 +287,179 @@ if (empty($reshook) && $action == 'add') {
$error++;
}
- $result = $adh->create($user);
- if ($result > 0) {
- require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
- $object = $adh;
+ if (!$error) {
+ $result = $adh->create($user);
+ if ($result > 0) {
+ require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php';
+ $object = $adh;
- $adht = new AdherentType($db);
- $adht->fetch($object->typeid);
+ $adht = new AdherentType($db);
+ $adht->fetch($object->typeid);
- if ($object->email) {
- $subject = '';
- $msg = '';
+ if ($object->email) {
+ $subject = '';
+ $msg = '';
- // Send subscription email
- include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
- $formmail = new FormMail($db);
- // Set output language
- $outputlangs = new Translate('', $conf);
- $outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang);
- // Load traductions files required by page
- $outputlangs->loadLangs(array("main", "members"));
- // Get email content from template
- $arraydefaultmessage = null;
- $labeltouse = $conf->global->ADHERENT_EMAIL_TEMPLATE_AUTOREGISTER;
+ // Send subscription email
+ include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php';
+ $formmail = new FormMail($db);
+ // Set output language
+ $outputlangs = new Translate('', $conf);
+ $outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang);
+ // Load traductions files required by page
+ $outputlangs->loadLangs(array("main", "members"));
+ // Get email content from template
+ $arraydefaultmessage = null;
+ $labeltouse = $conf->global->ADHERENT_EMAIL_TEMPLATE_AUTOREGISTER;
- if (!empty($labeltouse)) {
- $arraydefaultmessage = $formmail->getEMailTemplate($db, 'member', $user, $outputlangs, 0, 1, $labeltouse);
+ if (!empty($labeltouse)) {
+ $arraydefaultmessage = $formmail->getEMailTemplate($db, 'member', $user, $outputlangs, 0, 1, $labeltouse);
+ }
+
+ if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
+ $subject = $arraydefaultmessage->topic;
+ $msg = $arraydefaultmessage->content;
+ }
+
+ $substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $object);
+ complete_substitutions_array($substitutionarray, $outputlangs, $object);
+ $subjecttosend = make_substitutions($subject, $substitutionarray, $outputlangs);
+ $texttosend = make_substitutions(dol_concatdesc($msg, $adht->getMailOnValid()), $substitutionarray, $outputlangs);
+
+ if ($subjecttosend && $texttosend) {
+ $moreinheader = 'X-Dolibarr-Info: send_an_email by public/members/new.php'."\r\n";
+
+ $result = $object->send_an_email($texttosend, $subjecttosend, array(), array(), array(), "", "", 0, -1, '', $moreinheader);
+ }
+ /*if ($result < 0) {
+ $error++;
+ setEventMessages($object->error, $object->errors, 'errors');
+ }*/
}
- if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) {
- $subject = $arraydefaultmessage->topic;
- $msg = $arraydefaultmessage->content;
- }
-
- $substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $object);
- complete_substitutions_array($substitutionarray, $outputlangs, $object);
- $subjecttosend = make_substitutions($subject, $substitutionarray, $outputlangs);
- $texttosend = make_substitutions(dol_concatdesc($msg, $adht->getMailOnValid()), $substitutionarray, $outputlangs);
-
- if ($subjecttosend && $texttosend) {
- $moreinheader = 'X-Dolibarr-Info: send_an_email by public/members/new.php'."\r\n";
-
- $result = $object->send_an_email($texttosend, $subjecttosend, array(), array(), array(), "", "", 0, -1, '', $moreinheader);
- }
- /*if ($result < 0) {
- $error++;
- setEventMessages($object->error, $object->errors, 'errors');
- }*/
- }
-
- // Send email to the foundation to say a new member subscribed with autosubscribe form
- if (!empty($conf->global->MAIN_INFO_SOCIETE_MAIL) && !empty($conf->global->ADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT) &&
- !empty($conf->global->ADHERENT_AUTOREGISTER_NOTIF_MAIL)) {
- // Define link to login card
- $appli = constant('DOL_APPLICATION_TITLE');
- if (!empty($conf->global->MAIN_APPLICATION_TITLE)) {
- $appli = $conf->global->MAIN_APPLICATION_TITLE;
- if (preg_match('/\d\.\d/', $appli)) {
- if (!preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) {
- $appli .= " (".DOL_VERSION.")"; // If new title contains a version that is different than core
+ // Send email to the foundation to say a new member subscribed with autosubscribe form
+ if (!empty($conf->global->MAIN_INFO_SOCIETE_MAIL) && !empty($conf->global->ADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT) &&
+ !empty($conf->global->ADHERENT_AUTOREGISTER_NOTIF_MAIL)) {
+ // Define link to login card
+ $appli = constant('DOL_APPLICATION_TITLE');
+ if (!empty($conf->global->MAIN_APPLICATION_TITLE)) {
+ $appli = $conf->global->MAIN_APPLICATION_TITLE;
+ if (preg_match('/\d\.\d/', $appli)) {
+ if (!preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) {
+ $appli .= " (".DOL_VERSION.")"; // If new title contains a version that is different than core
+ }
+ } else {
+ $appli .= " ".DOL_VERSION;
}
} else {
$appli .= " ".DOL_VERSION;
}
+
+ $to = $adh->makeSubstitution($conf->global->MAIN_INFO_SOCIETE_MAIL);
+ $from = $conf->global->ADHERENT_MAIL_FROM;
+ $mailfile = new CMailFile(
+ '['.$appli.'] '.$conf->global->ADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT,
+ $to,
+ $from,
+ $adh->makeSubstitution($conf->global->ADHERENT_AUTOREGISTER_NOTIF_MAIL),
+ array(),
+ array(),
+ array(),
+ "",
+ "",
+ 0,
+ -1
+ );
+
+ if (!$mailfile->sendfile()) {
+ dol_syslog($langs->trans("ErrorFailedToSendMail", $from, $to), LOG_ERR);
+ }
+ }
+
+ if (!empty($backtopage)) {
+ $urlback = $backtopage;
+ } elseif (!empty($conf->global->MEMBER_URL_REDIRECT_SUBSCRIPTION)) {
+ $urlback = $conf->global->MEMBER_URL_REDIRECT_SUBSCRIPTION;
+ // TODO Make replacement of __AMOUNT__, etc...
} else {
- $appli .= " ".DOL_VERSION;
+ $urlback = $_SERVER["PHP_SELF"]."?action=added";
}
- $to = $adh->makeSubstitution($conf->global->MAIN_INFO_SOCIETE_MAIL);
- $from = $conf->global->ADHERENT_MAIL_FROM;
- $mailfile = new CMailFile(
- '['.$appli.'] '.$conf->global->ADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT,
- $to,
- $from,
- $adh->makeSubstitution($conf->global->ADHERENT_AUTOREGISTER_NOTIF_MAIL),
- array(),
- array(),
- array(),
- "",
- "",
- 0,
- -1
- );
-
- if (!$mailfile->sendfile()) {
- dol_syslog($langs->trans("ErrorFailedToSendMail", $from, $to), LOG_ERR);
+ if (!empty($conf->global->MEMBER_NEWFORM_PAYONLINE) && $conf->global->MEMBER_NEWFORM_PAYONLINE != '-1') {
+ if ($conf->global->MEMBER_NEWFORM_PAYONLINE == 'all') {
+ $urlback = DOL_MAIN_URL_ROOT.'/public/payment/newpayment.php?from=membernewform&source=membersubscription&ref='.urlencode($adh->ref);
+ if (price2num(GETPOST('amount', 'alpha'))) {
+ $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha'));
+ }
+ if (GETPOST('email')) {
+ $urlback .= '&email='.urlencode(GETPOST('email'));
+ }
+ if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) {
+ if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) {
+ $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$adh->ref, 2));
+ } else {
+ $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN);
+ }
+ }
+ } elseif ($conf->global->MEMBER_NEWFORM_PAYONLINE == 'paybox') {
+ $urlback = DOL_MAIN_URL_ROOT.'/public/paybox/newpayment.php?from=membernewform&source=membersubscription&ref='.urlencode($adh->ref);
+ if (price2num(GETPOST('amount', 'alpha'))) {
+ $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha'));
+ }
+ if (GETPOST('email')) {
+ $urlback .= '&email='.urlencode(GETPOST('email'));
+ }
+ if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) {
+ if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) {
+ $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$adh->ref, 2));
+ } else {
+ $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN);
+ }
+ }
+ } elseif ($conf->global->MEMBER_NEWFORM_PAYONLINE == 'paypal') {
+ $urlback = DOL_MAIN_URL_ROOT.'/public/paypal/newpayment.php?from=membernewform&source=membersubscription&ref='.urlencode($adh->ref);
+ if (price2num(GETPOST('amount', 'alpha'))) {
+ $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha'));
+ }
+ if (GETPOST('email')) {
+ $urlback .= '&email='.urlencode(GETPOST('email'));
+ }
+ if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) {
+ if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) {
+ $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$adh->ref, 2));
+ } else {
+ $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN);
+ }
+ }
+ } elseif ($conf->global->MEMBER_NEWFORM_PAYONLINE == 'stripe') {
+ $urlback = DOL_MAIN_URL_ROOT.'/public/stripe/newpayment.php?from=membernewform&source=membersubscription&ref='.$adh->ref;
+ if (price2num(GETPOST('amount', 'alpha'))) {
+ $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha'));
+ }
+ if (GETPOST('email')) {
+ $urlback .= '&email='.urlencode(GETPOST('email'));
+ }
+ if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) {
+ if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) {
+ $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$adh->ref, 2));
+ } else {
+ $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN);
+ }
+ }
+ } else {
+ dol_print_error('', "Autosubscribe form is setup to ask an online payment for a not managed online payment");
+ exit;
+ }
}
- }
- if (!empty($backtopage)) {
- $urlback = $backtopage;
- } elseif (!empty($conf->global->MEMBER_URL_REDIRECT_SUBSCRIPTION)) {
- $urlback = $conf->global->MEMBER_URL_REDIRECT_SUBSCRIPTION;
- // TODO Make replacement of __AMOUNT__, etc...
+ if (!empty($entity)) {
+ $urlback .= '&entity='.$entity;
+ }
+ dol_syslog("member ".$adh->ref." was created, we redirect to ".$urlback);
} else {
- $urlback = $_SERVER["PHP_SELF"]."?action=added";
+ $error++;
+ $errmsg .= join('
', $adh->errors);
}
-
- if (!empty($conf->global->MEMBER_NEWFORM_PAYONLINE) && $conf->global->MEMBER_NEWFORM_PAYONLINE != '-1') {
- if ($conf->global->MEMBER_NEWFORM_PAYONLINE == 'all') {
- $urlback = DOL_MAIN_URL_ROOT.'/public/payment/newpayment.php?from=membernewform&source=membersubscription&ref='.urlencode($adh->ref);
- if (price2num(GETPOST('amount', 'alpha'))) {
- $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha'));
- }
- if (GETPOST('email')) {
- $urlback .= '&email='.urlencode(GETPOST('email'));
- }
- if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) {
- if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) {
- $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$adh->ref, 2));
- } else {
- $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN);
- }
- }
- } elseif ($conf->global->MEMBER_NEWFORM_PAYONLINE == 'paybox') {
- $urlback = DOL_MAIN_URL_ROOT.'/public/paybox/newpayment.php?from=membernewform&source=membersubscription&ref='.urlencode($adh->ref);
- if (price2num(GETPOST('amount', 'alpha'))) {
- $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha'));
- }
- if (GETPOST('email')) {
- $urlback .= '&email='.urlencode(GETPOST('email'));
- }
- if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) {
- if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) {
- $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$adh->ref, 2));
- } else {
- $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN);
- }
- }
- } elseif ($conf->global->MEMBER_NEWFORM_PAYONLINE == 'paypal') {
- $urlback = DOL_MAIN_URL_ROOT.'/public/paypal/newpayment.php?from=membernewform&source=membersubscription&ref='.urlencode($adh->ref);
- if (price2num(GETPOST('amount', 'alpha'))) {
- $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha'));
- }
- if (GETPOST('email')) {
- $urlback .= '&email='.urlencode(GETPOST('email'));
- }
- if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) {
- if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) {
- $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$adh->ref, 2));
- } else {
- $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN);
- }
- }
- } elseif ($conf->global->MEMBER_NEWFORM_PAYONLINE == 'stripe') {
- $urlback = DOL_MAIN_URL_ROOT.'/public/stripe/newpayment.php?from=membernewform&source=membersubscription&ref='.$adh->ref;
- if (price2num(GETPOST('amount', 'alpha'))) {
- $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha'));
- }
- if (GETPOST('email')) {
- $urlback .= '&email='.urlencode(GETPOST('email'));
- }
- if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) {
- if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) {
- $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$adh->ref, 2));
- } else {
- $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN);
- }
- }
- } else {
- dol_print_error('', "Autosubscribe form is setup to ask an online payment for a not managed online payment");
- exit;
- }
- }
-
- if (!empty($entity)) {
- $urlback .= '&entity='.$entity;
- }
- dol_syslog("member ".$adh->ref." was created, we redirect to ".$urlback);
- } else {
- $error++;
- $errmsg .= join('
', $adh->errors);
}
}
diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php
index 6b76cf23af6..78fc1c7fd15 100644
--- a/htdocs/supplier_proposal/class/supplier_proposal.class.php
+++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php
@@ -3035,7 +3035,7 @@ class SupplierProposalLine extends CommonObjectLine
$sql .= " ".price2num($this->localtax2_tx).",";
$sql .= " '".$this->db->escape($this->localtax1_type)."',";
$sql .= " '".$this->db->escape($this->localtax2_type)."',";
- $sql .= " ".(!empty($this->subprice) ?price2num($this->subprice) : "null").",";
+ $sql .= " ".(!empty($this->subprice) ?price2num($this->subprice) : 0).",";
$sql .= " ".price2num($this->remise_percent).",";
$sql .= " ".(isset($this->info_bits) ? "'".$this->db->escape($this->info_bits)."'" : "null").",";
$sql .= " ".price2num($this->total_ht).",";
diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php
index 04eebd6b6c9..1543d579839 100644
--- a/htdocs/user/class/user.class.php
+++ b/htdocs/user/class/user.class.php
@@ -3490,7 +3490,7 @@ class User extends CommonObject
} else {
$sql .= ",".MAIN_DB_PREFIX."usergroup_user as ug";
$sql .= " WHERE ((ug.fk_user = t.rowid";
- $sql .= " AND ug.entity IN (".getEntity('user')."))";
+ $sql .= " AND ug.entity IN (".getEntity('usergroup')."))";
$sql .= " OR t.entity = 0)"; // Show always superadmin
}
} else {