FIX resolve conflicts
This commit is contained in:
commit
ba1a607afc
15
ChangeLog
15
ChangeLog
@ -4,9 +4,20 @@ English Dolibarr ChangeLog
|
|||||||
|
|
||||||
***** ChangeLog for 17.0.0 compared to 16.0.0 *****
|
***** ChangeLog for 17.0.0 compared to 16.0.0 *****
|
||||||
|
|
||||||
|
For users:
|
||||||
|
---------------
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
For developers or integrators:
|
For developers or integrators:
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
WARNING:
|
||||||
|
|
||||||
Following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
|
Following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
|
||||||
* The signature of method getNomUrl() of class ProductFournisseur has been modified to match the signature of method Product
|
* The signature of method getNomUrl() of class ProductFournisseur has been modified to match the signature of method Product
|
||||||
|
|
||||||
@ -192,6 +203,8 @@ NEW: Add hooks select product list and select thirdparty list function
|
|||||||
NEW: Add hook to getSellPrice function
|
NEW: Add hook to getSellPrice function
|
||||||
|
|
||||||
|
|
||||||
|
WARNING:
|
||||||
|
|
||||||
Following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
|
Following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
|
||||||
* There is a new specific permission to be allowed to enter timesheets. If you use timesheet, don't forget to give the new permission (disable and
|
* There is a new specific permission to be allowed to enter timesheets. If you use timesheet, don't forget to give the new permission (disable and
|
||||||
enable the module project if it is not visible).
|
enable the module project if it is not visible).
|
||||||
@ -490,6 +503,8 @@ NEW: make it easier to set the `keyword`, `keywords` and `description` attribute
|
|||||||
NEW: Experimental feature to manage user sessions in database
|
NEW: Experimental feature to manage user sessions in database
|
||||||
|
|
||||||
|
|
||||||
|
WARNING:
|
||||||
|
|
||||||
Following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
|
Following changes may create regressions for some external modules, but were necessary to make Dolibarr better:
|
||||||
* ALL EXTERNAL MODULES THAT WERE NOT CORRECTLY DEVELOPPED WILL NOT WORK ON V15 (All modules that forgot to manage the security token field
|
* ALL EXTERNAL MODULES THAT WERE NOT CORRECTLY DEVELOPPED WILL NOT WORK ON V15 (All modules that forgot to manage the security token field
|
||||||
into forms will be broken. The security token field is expected since Dolibarr v9 but a lot of external modules did not implement it).
|
into forms will be broken. The security token field is expected since Dolibarr v9 but a lot of external modules did not implement it).
|
||||||
|
|||||||
@ -63,6 +63,7 @@ $search_email = GETPOST("search_email", 'alpha');
|
|||||||
$search_categ = GETPOST("search_categ", 'int');
|
$search_categ = GETPOST("search_categ", 'int');
|
||||||
$search_filter = GETPOST("search_filter", 'alpha');
|
$search_filter = GETPOST("search_filter", 'alpha');
|
||||||
$search_status = GETPOST("search_status", 'intcomma');
|
$search_status = GETPOST("search_status", 'intcomma');
|
||||||
|
$search_morphy = GETPOST("search_morphy", 'alpha');
|
||||||
$search_import_key = trim(GETPOST("search_import_key", "alpha"));
|
$search_import_key = trim(GETPOST("search_import_key", "alpha"));
|
||||||
$catid = GETPOST("catid", 'int');
|
$catid = GETPOST("catid", 'int');
|
||||||
$optioncss = GETPOST('optioncss', 'alpha');
|
$optioncss = GETPOST('optioncss', 'alpha');
|
||||||
@ -382,6 +383,9 @@ if ($search_status != '') {
|
|||||||
// Peut valoir un nombre ou liste de nombre separes par virgules
|
// Peut valoir un nombre ou liste de nombre separes par virgules
|
||||||
$sql .= " AND d.statut in (".$db->sanitize($db->escape($search_status)).")";
|
$sql .= " AND d.statut in (".$db->sanitize($db->escape($search_status)).")";
|
||||||
}
|
}
|
||||||
|
if ($search_morphy != '') {
|
||||||
|
$sql .= natural_search("d.morphy", $search_morphy);
|
||||||
|
}
|
||||||
if ($search_ref) {
|
if ($search_ref) {
|
||||||
$sql .= natural_search("d.ref", $search_ref);
|
$sql .= natural_search("d.ref", $search_ref);
|
||||||
}
|
}
|
||||||
@ -731,6 +735,11 @@ if (!empty($arrayfields['d.login']['checked'])) {
|
|||||||
}
|
}
|
||||||
if (!empty($arrayfields['d.morphy']['checked'])) {
|
if (!empty($arrayfields['d.morphy']['checked'])) {
|
||||||
print '<td class="liste_titre left">';
|
print '<td class="liste_titre left">';
|
||||||
|
$arraymorphy = array('mor'=>$langs->trans("Moral"), 'phy'=>$langs->trans("Physical"));
|
||||||
|
print $form->selectarray('search_morphy', $arraymorphy, $search_morphy, 1);
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
if (!empty($arrayfields['t.libelle']['checked'])) {
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
if (!empty($arrayfields['t.libelle']['checked'])) {
|
if (!empty($arrayfields['t.libelle']['checked'])) {
|
||||||
|
|||||||
@ -47,8 +47,9 @@ if (!in_array('clicktodial', $conf->modules)) {
|
|||||||
if ($action == 'setvalue' && $user->admin) {
|
if ($action == 'setvalue' && $user->admin) {
|
||||||
$result1 = dolibarr_set_const($db, "CLICKTODIAL_USE_TEL_LINK_ON_PHONE_NUMBERS", GETPOST("CLICKTODIAL_USE_TEL_LINK_ON_PHONE_NUMBERS"), 'chaine', 0, '', $conf->entity);
|
$result1 = dolibarr_set_const($db, "CLICKTODIAL_USE_TEL_LINK_ON_PHONE_NUMBERS", GETPOST("CLICKTODIAL_USE_TEL_LINK_ON_PHONE_NUMBERS"), 'chaine', 0, '', $conf->entity);
|
||||||
$result2 = dolibarr_set_const($db, "CLICKTODIAL_URL", GETPOST("CLICKTODIAL_URL"), 'chaine', 0, '', $conf->entity);
|
$result2 = dolibarr_set_const($db, "CLICKTODIAL_URL", GETPOST("CLICKTODIAL_URL"), 'chaine', 0, '', $conf->entity);
|
||||||
|
$result3 = dolibarr_set_const($db, "CLICKTODIAL_KEY_FOR_CIDLOOKUP", GETPOST("CLICKTODIAL_KEY_FOR_CIDLOOKUP"), 'chaine', 0, '', $conf->entity);
|
||||||
|
|
||||||
if ($result1 >= 0 && $result2 >= 0) {
|
if ($result1 >= 0 && $result2 >= 0 && $result3 >= 0) {
|
||||||
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
|
||||||
} else {
|
} else {
|
||||||
setEventMessages($langs->trans("Error"), null, 'errors');
|
setEventMessages($langs->trans("Error"), null, 'errors');
|
||||||
@ -80,7 +81,7 @@ print '<input type="hidden" name="action" value="setvalue">';
|
|||||||
print '<div class="div-table-responsive-no-min">';
|
print '<div class="div-table-responsive-no-min">';
|
||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td>'.$langs->trans("Name").'</td>';
|
print '<td class="minwidth200">'.$langs->trans("Name").'</td>';
|
||||||
print '<td>'.$langs->trans("Value").'</td>';
|
print '<td>'.$langs->trans("Value").'</td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
@ -89,21 +90,21 @@ print '<tr class="oddeven"><td>';
|
|||||||
print $langs->trans("ClickToDialUseTelLink").'</td><td>';
|
print $langs->trans("ClickToDialUseTelLink").'</td><td>';
|
||||||
print $form->selectyesno("CLICKTODIAL_USE_TEL_LINK_ON_PHONE_NUMBERS", $conf->global->CLICKTODIAL_USE_TEL_LINK_ON_PHONE_NUMBERS, 1).'<br>';
|
print $form->selectyesno("CLICKTODIAL_USE_TEL_LINK_ON_PHONE_NUMBERS", $conf->global->CLICKTODIAL_USE_TEL_LINK_ON_PHONE_NUMBERS, 1).'<br>';
|
||||||
print '<br>';
|
print '<br>';
|
||||||
print $langs->trans("ClickToDialUseTelLinkDesc");
|
print '<span class="opacitymedium small">'.$langs->trans("ClickToDialUseTelLinkDesc").'</span>';
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
|
|
||||||
print '<tr class="oddeven"><td>';
|
print '<tr class="oddeven"><td>';
|
||||||
print $langs->trans("DefaultLink").'</td><td>';
|
print $langs->trans("DefaultLink").'</td><td>';
|
||||||
print '<input class="quatrevingtpercent" type="text" id="CLICKTODIAL_URL" name="CLICKTODIAL_URL"'.($conf->global->CLICKTODIAL_USE_TEL_LINK_ON_PHONE_NUMBERS ? ' disabled="disabled"' : '').' value="'.$conf->global->CLICKTODIAL_URL.'"><br>';
|
print '<input class="quatrevingtpercent" type="text" id="CLICKTODIAL_URL" name="CLICKTODIAL_URL"'.(getDolGlobalString('CLICKTODIAL_USE_TEL_LINK_ON_PHONE_NUMBERS') ? ' disabled="disabled"' : '').' value="'.getDolGlobalString('CLICKTODIAL_URL').'"><br>';
|
||||||
print ajax_autoselect('CLICKTODIAL_URL');
|
print ajax_autoselect('CLICKTODIAL_URL');
|
||||||
print '<br>';
|
print '<br>';
|
||||||
print $langs->trans("ClickToDialUrlDesc").'<br>';
|
print $langs->trans("ClickToDialUrlDesc").'<br>';
|
||||||
print '<br>';
|
print '<br>';
|
||||||
print '<span class="opacitymedium">';
|
print '<span class="opacitymedium">';
|
||||||
print $langs->trans("Examples").':<br>';
|
print $langs->trans("Examples").':<br>';
|
||||||
print 'https://myphoneserver/mypage?login=__LOGIN__&password=__PASS__&caller=__PHONEFROM__&called=__PHONETO__<br>';
|
print '* https://myphoneserver/phoneurl?login=__LOGIN__&password=__PASS__&caller=__PHONEFROM__&called=__PHONETO__<br>';
|
||||||
print 'sip:__PHONETO__@my.sip.server';
|
print '* sip:__PHONETO__@my.sip.server';
|
||||||
print '</span>';
|
print '</span>';
|
||||||
|
|
||||||
//if (! empty($user->clicktodial_url))
|
//if (! empty($user->clicktodial_url))
|
||||||
@ -114,6 +115,37 @@ print '</span>';
|
|||||||
|
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '<tr class="oddeven">';
|
||||||
|
print '<td>'.$langs->trans("SecurityKey").'</td>';
|
||||||
|
print '<td>';
|
||||||
|
|
||||||
|
global $dolibarr_main_url_root;
|
||||||
|
|
||||||
|
// Define $urlwithroot
|
||||||
|
$urlwithouturlroot = preg_replace('/'.preg_quote(DOL_URL_ROOT, '/').'$/i', '', trim($dolibarr_main_url_root));
|
||||||
|
$urlwithroot = $urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file
|
||||||
|
//$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current
|
||||||
|
|
||||||
|
// Url for CIDLookup
|
||||||
|
//print '<div class="div-table-responsive-no-min">';
|
||||||
|
//print $langs->trans("URLToLaunchCronJobs").':<br>';
|
||||||
|
$url = $urlwithroot.'/public/clicktodial/cidlookup.php?securitykey='.getDolGlobalString('CLICKTODIAL_KEY_FOR_CIDLOOKUP', 'ValueToDefine').'&phone=...';
|
||||||
|
//print img_picto('', 'globe').' <a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url."</a><br>\n";
|
||||||
|
//print '</div>';
|
||||||
|
//print '<br>';
|
||||||
|
|
||||||
|
|
||||||
|
print '<span class="opacitymedium">'.$langs->trans("CIDLookupURL").'</span>';
|
||||||
|
print '<br>'.$url;
|
||||||
|
print '<br>';
|
||||||
|
print '<br>';
|
||||||
|
print '<input type="text" class="flat minwidth300" id="CLICKTODIAL_KEY_FOR_CIDLOOKUP" name="CLICKTODIAL_KEY_FOR_CIDLOOKUP" value="'.(GETPOST('CLICKTODIAL_KEY_FOR_CIDLOOKUP') ? GETPOST('CLICKTODIAL_KEY_FOR_CIDLOOKUP') : (!empty($conf->global->CLICKTODIAL_KEY_FOR_CIDLOOKUP) ? $conf->global->CLICKTODIAL_KEY_FOR_CIDLOOKUP : '')).'">';
|
||||||
|
if (!empty($conf->use_javascript_ajax)) {
|
||||||
|
print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token" class="linkobject"');
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
print '</table>';
|
print '</table>';
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
@ -156,6 +188,23 @@ if (!empty($conf->global->CLICKTODIAL_URL)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($conf->use_javascript_ajax)) {
|
||||||
|
print "\n".'<script type="text/javascript">';
|
||||||
|
print '$(document).ready(function () {
|
||||||
|
$("#generate_token").click(function() {
|
||||||
|
console.log("Click done");
|
||||||
|
$.get( "'.DOL_URL_ROOT.'/core/ajax/security.php", {
|
||||||
|
action: \'getrandompassword\',
|
||||||
|
generic: true
|
||||||
|
},
|
||||||
|
function(token) {
|
||||||
|
$("#CLICKTODIAL_KEY_FOR_CIDLOOKUP").val(token);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});';
|
||||||
|
print '</script>';
|
||||||
|
}
|
||||||
|
|
||||||
// End of page
|
// End of page
|
||||||
llxFooter();
|
llxFooter();
|
||||||
$db->close();
|
$db->close();
|
||||||
|
|||||||
@ -2090,6 +2090,8 @@ if ($id > 0) {
|
|||||||
$valuetoshow = $langs->trans($obj->{$value});
|
$valuetoshow = $langs->trans($obj->{$value});
|
||||||
} elseif ($value == 'block_if_negative') {
|
} elseif ($value == 'block_if_negative') {
|
||||||
$valuetoshow = yn($obj->{$value});
|
$valuetoshow = yn($obj->{$value});
|
||||||
|
} elseif ($value == 'icon') {
|
||||||
|
$valuetoshow = $obj->{$value}." ".img_picto("", $obj->{$value});
|
||||||
} elseif ($value == 'type_duration') {
|
} elseif ($value == 'type_duration') {
|
||||||
$TDurationTypes = array('y'=>$langs->trans('Years'), 'm'=>$langs->trans('Month'), 'w'=>$langs->trans('Weeks'), 'd'=>$langs->trans('Days'), 'h'=>$langs->trans('Hours'), 'i'=>$langs->trans('Minutes'));
|
$TDurationTypes = array('y'=>$langs->trans('Years'), 'm'=>$langs->trans('Month'), 'w'=>$langs->trans('Weeks'), 'd'=>$langs->trans('Days'), 'h'=>$langs->trans('Hours'), 'i'=>$langs->trans('Minutes'));
|
||||||
$valuetoshow =$TDurationTypes[$obj->{$value}];
|
$valuetoshow =$TDurationTypes[$obj->{$value}];
|
||||||
|
|||||||
@ -427,11 +427,15 @@ if ($action == 'edit') {
|
|||||||
|
|
||||||
// Method
|
// Method
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SENDMODE").'</td><td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SENDMODE").'</td><td>';
|
||||||
$text = $listofmethods[$conf->global->MAIN_MAIL_SENDMODE_EMAILING];
|
$text = $listofmethods[getDolGlobalString('MAIN_MAIL_SENDMODE_EMAILING')];
|
||||||
if (empty($text)) {
|
if (empty($text)) {
|
||||||
$text = $langs->trans("Undefined").img_warning();
|
$text = $langs->trans("Undefined").img_warning();
|
||||||
}
|
}
|
||||||
print $text;
|
if (getDolGlobalString('MAIN_MAIL_SENDMODE_EMAILING') == 'default') {
|
||||||
|
print '<span class="opacitymedium">'.$text.'</span>';
|
||||||
|
} else {
|
||||||
|
print $text;
|
||||||
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
if (!empty($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && $conf->global->MAIN_MAIL_SENDMODE_EMAILING != 'default') {
|
if (!empty($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && $conf->global->MAIN_MAIL_SENDMODE_EMAILING != 'default') {
|
||||||
|
|||||||
@ -394,11 +394,15 @@ if ($action == 'edit') {
|
|||||||
|
|
||||||
// Method
|
// Method
|
||||||
print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SENDMODE").'</td><td>';
|
print '<tr class="oddeven"><td>'.$langs->trans("MAIN_MAIL_SENDMODE").'</td><td>';
|
||||||
$text = $listofmethods[$conf->global->MAIN_MAIL_SENDMODE_TICKET];
|
$text = $listofmethods[getDolGlobalString('MAIN_MAIL_SENDMODE_TICKET')];
|
||||||
if (empty($text)) {
|
if (empty($text)) {
|
||||||
$text = $langs->trans("Undefined").img_warning();
|
$text = $langs->trans("Undefined").img_warning();
|
||||||
}
|
}
|
||||||
print $text;
|
if (getDolGlobalString('MAIN_MAIL_SENDMODE_TICKET') == 'default') {
|
||||||
|
print '<span class="opacitymedium">'.$text.'</span>';
|
||||||
|
} else {
|
||||||
|
print $text;
|
||||||
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
if (!empty($conf->global->MAIN_MAIL_SENDMODE_TICKET) && $conf->global->MAIN_MAIL_SENDMODE_TICKET != 'default') {
|
if (!empty($conf->global->MAIN_MAIL_SENDMODE_TICKET) && $conf->global->MAIN_MAIL_SENDMODE_TICKET != 'default') {
|
||||||
|
|||||||
@ -89,6 +89,7 @@ $configfileparameters = array(
|
|||||||
'separator',
|
'separator',
|
||||||
'?dolibarr_mailing_limit_sendbyweb',
|
'?dolibarr_mailing_limit_sendbyweb',
|
||||||
'?dolibarr_mailing_limit_sendbycli',
|
'?dolibarr_mailing_limit_sendbycli',
|
||||||
|
'?dolibarr_mailing_limit_sendbyday',
|
||||||
'?dolibarr_strict_mode'
|
'?dolibarr_strict_mode'
|
||||||
);
|
);
|
||||||
$configfilelib = array(
|
$configfilelib = array(
|
||||||
|
|||||||
@ -360,6 +360,7 @@ $configfileparameters = array(
|
|||||||
'dolibarr_main_restrict_ip' => 'Restrict access to some IPs only',
|
'dolibarr_main_restrict_ip' => 'Restrict access to some IPs only',
|
||||||
'?dolibarr_mailing_limit_sendbyweb' => 'Limit nb of email sent by page',
|
'?dolibarr_mailing_limit_sendbyweb' => 'Limit nb of email sent by page',
|
||||||
'?dolibarr_mailing_limit_sendbycli' => 'Limit nb of email sent by cli',
|
'?dolibarr_mailing_limit_sendbycli' => 'Limit nb of email sent by cli',
|
||||||
|
'?dolibarr_mailing_limit_sendbyday' => 'Limit nb of email sent per day',
|
||||||
'?dolibarr_strict_mode' => 'Strict mode is on/off',
|
'?dolibarr_strict_mode' => 'Strict mode is on/off',
|
||||||
'?dolibarr_nocsrfcheck' => 'Disable CSRF security checks'
|
'?dolibarr_nocsrfcheck' => 'Disable CSRF security checks'
|
||||||
);
|
);
|
||||||
|
|||||||
@ -257,6 +257,8 @@ if (!empty($reg[1]) && $reg[1] == 'explorer' && ($reg[2] == '/swagger.json' || $
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//dol_syslog("We scan to search api file with into ".$dir_part.$file_searched);
|
||||||
|
|
||||||
$regapi = array();
|
$regapi = array();
|
||||||
if (is_readable($dir_part.$file_searched) && preg_match("/^api_(.*)\.class\.php$/i", $file_searched, $regapi)) {
|
if (is_readable($dir_part.$file_searched) && preg_match("/^api_(.*)\.class\.php$/i", $file_searched, $regapi)) {
|
||||||
$classname = ucwords($regapi[1]);
|
$classname = ucwords($regapi[1]);
|
||||||
|
|||||||
@ -801,13 +801,20 @@ if ($action == 'create') {
|
|||||||
// MAILING_NO_USING_PHPMAIL may be defined or not.
|
// MAILING_NO_USING_PHPMAIL may be defined or not.
|
||||||
// MAILING_LIMIT_SENDBYWEB is always defined to something != 0 (-1=forbidden).
|
// MAILING_LIMIT_SENDBYWEB is always defined to something != 0 (-1=forbidden).
|
||||||
// MAILING_LIMIT_SENDBYCLI may be defined ot not (-1=forbidden, 0 or undefined=no limit).
|
// MAILING_LIMIT_SENDBYCLI may be defined ot not (-1=forbidden, 0 or undefined=no limit).
|
||||||
|
// MAILING_LIMIT_SENDBYDAY may be defined ot not (0 or undefined=no limit).
|
||||||
if (!empty($conf->global->MAILING_NO_USING_PHPMAIL) && $sendingmode == 'mail') {
|
if (!empty($conf->global->MAILING_NO_USING_PHPMAIL) && $sendingmode == 'mail') {
|
||||||
// EMailing feature may be a spam problem, so when you host several users/instance, having this option may force each user to use their own SMTP agent.
|
// EMailing feature may be a spam problem, so when you host several users/instance, having this option may force each user to use their own SMTP agent.
|
||||||
// You ensure that every user is using its own SMTP server when using the mass emailing module.
|
// You ensure that every user is using its own SMTP server when using the mass emailing module.
|
||||||
$linktoadminemailbefore = '<a href="'.DOL_URL_ROOT.'/admin/mails_emailing.php">';
|
$linktoadminemailbefore = '<a href="'.DOL_URL_ROOT.'/admin/mails_emailing.php">';
|
||||||
$linktoadminemailend = '</a>';
|
$linktoadminemailend = '</a>';
|
||||||
setEventMessages($langs->trans("MailSendSetupIs", $listofmethods[$sendingmode]), null, 'warnings');
|
setEventMessages($langs->trans("MailSendSetupIs", $listofmethods[$sendingmode]), null, 'warnings');
|
||||||
setEventMessages($langs->trans("MailSendSetupIs2", $linktoadminemailbefore, $linktoadminemailend, $langs->transnoentitiesnoconv("MAIN_MAIL_SENDMODE"), $listofmethods['smtps']), null, 'warnings');
|
$messagetoshow = $langs->trans("MailSendSetupIs2", '{s1}', '{s2}', '{s3}', '{s4}');
|
||||||
|
$messagetoshow = str_replace('{s1}', $linktoadminemailbefore, $messagetoshow);
|
||||||
|
$messagetoshow = str_replace('{s2}', $linktoadminemailend, $messagetoshow);
|
||||||
|
$messagetoshow = str_replace('{s3}', $langs->transnoentitiesnoconv("MAIN_MAIL_SENDMODE"), $messagetoshow);
|
||||||
|
$messagetoshow = str_replace('{s4}', $listofmethods['smtps'], $messagetoshow);
|
||||||
|
setEventMessages($messagetoshow, null, 'warnings');
|
||||||
|
|
||||||
if (!empty($conf->global->MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS)) {
|
if (!empty($conf->global->MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS)) {
|
||||||
setEventMessages($langs->trans("MailSendSetupIs3", $conf->global->MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS), null, 'warnings');
|
setEventMessages($langs->trans("MailSendSetupIs3", $conf->global->MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS), null, 'warnings');
|
||||||
}
|
}
|
||||||
@ -836,14 +843,21 @@ if ($action == 'create') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$text = '';
|
$text = '';
|
||||||
if (!isset($conf->global->MAILING_LIMIT_SENDBYCLI) || $conf->global->MAILING_LIMIT_SENDBYCLI >= 0) {
|
|
||||||
$text .= $langs->trans("MailingNeedCommand");
|
if (isset($conf->global->MAILING_LIMIT_SENDBYDAY) && $conf->global->MAILING_LIMIT_SENDBYDAY >= 0) {
|
||||||
$text .= '<br><textarea cols="60" rows="'.ROWS_2.'" wrap="soft">php ./scripts/emailings/mailing-send.php '.$object->id.' '.$user->login.'</textarea>';
|
$text .= $langs->trans('WarningLimitSendByDay', $conf->global->MAILING_LIMIT_SENDBYDAY);
|
||||||
$text .= '<br><br>';
|
$text .= '<br><br>';
|
||||||
}
|
}
|
||||||
$text .= $langs->trans('ConfirmSendingEmailing').'<br>';
|
$text .= $langs->trans('ConfirmSendingEmailing').'<br>';
|
||||||
$text .= $langs->trans('LimitSendingEmailing', $conf->global->MAILING_LIMIT_SENDBYWEB);
|
$text .= $langs->trans('LimitSendingEmailing', $conf->global->MAILING_LIMIT_SENDBYWEB);
|
||||||
print $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id, $langs->trans('SendMailing'), $text, 'sendallconfirmed', '', '', 1, 330, 600);
|
|
||||||
|
if (!isset($conf->global->MAILING_LIMIT_SENDBYCLI) || $conf->global->MAILING_LIMIT_SENDBYCLI >= 0) {
|
||||||
|
$text .= '<br><br>';
|
||||||
|
$text .= $langs->trans("MailingNeedCommand");
|
||||||
|
$text .= '<br><textarea cols="60" rows="'.ROWS_2.'" wrap="soft" disabled>php ./scripts/emailings/mailing-send.php '.$object->id.' '.$user->login.'</textarea>';
|
||||||
|
}
|
||||||
|
|
||||||
|
print $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id, $langs->trans('SendMailing'), $text, 'sendallconfirmed', '', '', 1, 330, 600, 0, $langs->trans("Confirm"), $langs->trans("Cancel"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1301,11 +1301,10 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
$action = 'presend';
|
$action = 'presend';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// View mode
|
||||||
if (!empty($id) && $action != 'edit' && $action != 'create') {
|
if (!empty($id) && $action != 'edit' && $action != 'create') {
|
||||||
$objsoc = new Societe($db);
|
$objsoc = new Societe($db);
|
||||||
|
|
||||||
// View mode
|
|
||||||
|
|
||||||
// Show errors
|
// Show errors
|
||||||
dol_htmloutput_errors(is_numeric($error) ? '' : $error, $errors);
|
dol_htmloutput_errors(is_numeric($error) ? '' : $error, $errors);
|
||||||
|
|
||||||
@ -1530,9 +1529,12 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
if ($object->user_id) {
|
if ($object->user_id) {
|
||||||
$dolibarr_user = new User($db);
|
$dolibarr_user = new User($db);
|
||||||
$result = $dolibarr_user->fetch($object->user_id);
|
$result = $dolibarr_user->fetch($object->user_id);
|
||||||
print $dolibarr_user->getLoginUrl(1);
|
print $dolibarr_user->getLoginUrl(-1);
|
||||||
} else {
|
} else {
|
||||||
print $langs->trans("NoDolibarrAccess");
|
//print '<span class="opacitymedium">'.$langs->trans("NoDolibarrAccess").'</span>';
|
||||||
|
if (!$object->user_id && $user->rights->user->user->creer) {
|
||||||
|
print '<a class="aaa" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=create_user&token='.newToken().'">'.img_picto($langs->trans("CreateDolibarrLogin"), 'add').' '.$langs->trans("CreateDolibarrLogin").'</a>';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
@ -1565,10 +1567,6 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit&token='.newToken().'">'.$langs->trans('Modify').'</a>';
|
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit&token='.newToken().'">'.$langs->trans('Modify').'</a>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$object->user_id && $user->rights->user->user->creer) {
|
|
||||||
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=create_user&token='.newToken().'">'.$langs->trans("CreateDolibarrLogin").'</a>';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Activer
|
// Activer
|
||||||
if ($object->statut == 0 && $user->rights->societe->contact->creer) {
|
if ($object->statut == 0 && $user->rights->societe->contact->creer) {
|
||||||
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=enable&token='.newToken().'">'.$langs->trans("Reactivate").'</a>';
|
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=enable&token='.newToken().'">'.$langs->trans("Reactivate").'</a>';
|
||||||
|
|||||||
@ -668,7 +668,7 @@ class Contrat extends CommonObject
|
|||||||
if (!$id) {
|
if (!$id) {
|
||||||
$sql .= " WHERE entity IN (".getEntity('contract').")";
|
$sql .= " WHERE entity IN (".getEntity('contract').")";
|
||||||
} else {
|
} else {
|
||||||
$sql .= " WHERE rowid=".(int) $id;
|
$sql .= " WHERE rowid = ".(int) $id;
|
||||||
}
|
}
|
||||||
if ($ref_customer) {
|
if ($ref_customer) {
|
||||||
$sql .= " AND ref_customer = '".$this->db->escape($ref_customer)."'";
|
$sql .= " AND ref_customer = '".$this->db->escape($ref_customer)."'";
|
||||||
@ -677,7 +677,7 @@ class Contrat extends CommonObject
|
|||||||
$sql .= " AND ref_supplier = '".$this->db->escape($ref_supplier)."'";
|
$sql .= " AND ref_supplier = '".$this->db->escape($ref_supplier)."'";
|
||||||
}
|
}
|
||||||
if ($ref) {
|
if ($ref) {
|
||||||
$sql .= " AND ref='".$this->db->escape($ref)."'";
|
$sql .= " AND ref = '".$this->db->escape($ref)."'";
|
||||||
}
|
}
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::fetch", LOG_DEBUG);
|
dol_syslog(get_class($this)."::fetch", LOG_DEBUG);
|
||||||
@ -724,10 +724,13 @@ class Contrat extends CommonObject
|
|||||||
|
|
||||||
// Retrieve all extrafields
|
// Retrieve all extrafields
|
||||||
// fetch optionals attributes and labels
|
// fetch optionals attributes and labels
|
||||||
$this->fetch_optionals();
|
$result = $this->fetch_optionals();
|
||||||
|
|
||||||
// Lines
|
// Lines
|
||||||
$result = $this->fetch_lines();
|
if ($result >= 0 && !empty($this->table_element_line)) {
|
||||||
|
$result = $this->fetch_lines();
|
||||||
|
}
|
||||||
|
|
||||||
if ($result < 0) {
|
if ($result < 0) {
|
||||||
$this->error = $this->db->lasterror();
|
$this->error = $this->db->lasterror();
|
||||||
return -3;
|
return -3;
|
||||||
|
|||||||
@ -7633,16 +7633,24 @@ abstract class CommonObject
|
|||||||
}
|
}
|
||||||
if ($result > 0) {
|
if ($result > 0) {
|
||||||
if ($object->element === 'product') {
|
if ($object->element === 'product') {
|
||||||
$getnomurlparam3 = (!isset($InfoFieldList[5]) ? 0 : $InfoFieldList[5]);
|
$get_name_url_param_arr = array($getnomurlparam, $getnomurlparam2, 0, -1, 0, '', 0);
|
||||||
$getnomurlparam4 = (!isset($InfoFieldList[6]) ? -1 : $InfoFieldList[6]);
|
if (isset($val['get_name_url_params'])) {
|
||||||
$getnomurlparam5 = (!isset($InfoFieldList[7]) ? 0 : $InfoFieldList[7]);
|
$get_name_url_params = explode(':', $val['get_name_url_params']);
|
||||||
$getnomurlparam6 = (!isset($InfoFieldList[8]) ? '' : $InfoFieldList[8]);
|
if (!empty($get_name_url_params)) {
|
||||||
$getnomurlparam7 = (!isset($InfoFieldList[9]) ? 0 : $InfoFieldList[9]);
|
$param_num_max = count($get_name_url_param_arr) - 1;
|
||||||
|
foreach ($get_name_url_params as $param_num => $param_value) {
|
||||||
|
if ($param_num > $param_num_max) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$get_name_url_param_arr[$param_num] = $param_value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Product $object
|
* @var Product $object
|
||||||
*/
|
*/
|
||||||
$value = $object->getNomUrl($getnomurlparam, $getnomurlparam2, $getnomurlparam3, $getnomurlparam4, $getnomurlparam5, $getnomurlparam6, $getnomurlparam7);
|
$value = $object->getNomUrl($get_name_url_param_arr[0], $get_name_url_param_arr[1], $get_name_url_param_arr[2], $get_name_url_param_arr[3], $get_name_url_param_arr[4], $get_name_url_param_arr[5], $get_name_url_param_arr[6]);
|
||||||
} else {
|
} else {
|
||||||
$value = $object->getNomUrl($getnomurlparam, $getnomurlparam2);
|
$value = $object->getNomUrl($getnomurlparam, $getnomurlparam2);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1038,12 +1038,15 @@ class Conf
|
|||||||
if (!empty($this->file->mailing_limit_sendbyweb)) {
|
if (!empty($this->file->mailing_limit_sendbyweb)) {
|
||||||
$this->global->MAILING_LIMIT_SENDBYWEB = $this->file->mailing_limit_sendbyweb;
|
$this->global->MAILING_LIMIT_SENDBYWEB = $this->file->mailing_limit_sendbyweb;
|
||||||
}
|
}
|
||||||
if (empty($this->global->MAILING_LIMIT_SENDBYWEB)) {
|
if (empty($this->global->MAILING_LIMIT_SENDBYWEB)) { // Limit by web can't be 0
|
||||||
$this->global->MAILING_LIMIT_SENDBYWEB = 25;
|
$this->global->MAILING_LIMIT_SENDBYWEB = 25;
|
||||||
}
|
}
|
||||||
if (!empty($this->file->mailing_limit_sendbycli)) {
|
if (!empty($this->file->mailing_limit_sendbycli)) {
|
||||||
$this->global->MAILING_LIMIT_SENDBYCLI = $this->file->mailing_limit_sendbycli;
|
$this->global->MAILING_LIMIT_SENDBYCLI = $this->file->mailing_limit_sendbycli;
|
||||||
}
|
}
|
||||||
|
if (!empty($this->file->mailing_limit_sendbyday)) {
|
||||||
|
$this->global->MAILING_LIMIT_SENDBYDAY = $this->file->mailing_limit_sendbyday;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1316,7 +1316,7 @@ class DolGraph
|
|||||||
if (empty($showlegend)) {
|
if (empty($showlegend)) {
|
||||||
$this->stringtoshow .= 'legend: { display: false }, '."\n";
|
$this->stringtoshow .= 'legend: { display: false }, '."\n";
|
||||||
} else {
|
} else {
|
||||||
$this->stringtoshow .= 'legend: { maxWidth: '.round($this->width / 2).', labels: { boxWidth: 15 }, position: \'' . ($showlegend == 2 ? 'right' : 'top') . '\' },'."\n";
|
$this->stringtoshow .= 'legend: { maxWidth: '.round(intVal($this->width) / 2).', labels: { boxWidth: 15 }, position: \'' . (($showlegend && $showlegend == 2) ? 'right' : 'top') . '\' },'."\n";
|
||||||
}
|
}
|
||||||
$this->stringtoshow .= "}, \n";
|
$this->stringtoshow .= "}, \n";
|
||||||
|
|
||||||
|
|||||||
@ -908,7 +908,7 @@ class ExtraFields
|
|||||||
$this->attributes[$tab->elementtype]['param'][$tab->name] = ($tab->param ? jsonOrUnserialize($tab->param) : '');
|
$this->attributes[$tab->elementtype]['param'][$tab->name] = ($tab->param ? jsonOrUnserialize($tab->param) : '');
|
||||||
$this->attributes[$tab->elementtype]['pos'][$tab->name] = $tab->pos;
|
$this->attributes[$tab->elementtype]['pos'][$tab->name] = $tab->pos;
|
||||||
$this->attributes[$tab->elementtype]['alwayseditable'][$tab->name] = $tab->alwayseditable;
|
$this->attributes[$tab->elementtype]['alwayseditable'][$tab->name] = $tab->alwayseditable;
|
||||||
$this->attributes[$tab->elementtype]['perms'][$tab->name] = (strlen($tab->perms) == 0 ? 1 : $tab->perms);
|
$this->attributes[$tab->elementtype]['perms'][$tab->name] = ((is_null($tab->perms) || strlen($tab->perms) == 0) ? 1 : $tab->perms);
|
||||||
$this->attributes[$tab->elementtype]['langfile'][$tab->name] = $tab->langs;
|
$this->attributes[$tab->elementtype]['langfile'][$tab->name] = $tab->langs;
|
||||||
$this->attributes[$tab->elementtype]['list'][$tab->name] = $tab->list;
|
$this->attributes[$tab->elementtype]['list'][$tab->name] = $tab->list;
|
||||||
$this->attributes[$tab->elementtype]['printable'][$tab->name] = $tab->printable;
|
$this->attributes[$tab->elementtype]['printable'][$tab->name] = $tab->printable;
|
||||||
|
|||||||
@ -3342,7 +3342,6 @@ class Form
|
|||||||
}
|
}
|
||||||
|
|
||||||
$outref = $objp->ref;
|
$outref = $objp->ref;
|
||||||
$outval = '';
|
|
||||||
$outbarcode = $objp->barcode;
|
$outbarcode = $objp->barcode;
|
||||||
$outqty = 1;
|
$outqty = 1;
|
||||||
$outdiscount = 0;
|
$outdiscount = 0;
|
||||||
@ -3523,48 +3522,52 @@ class Form
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$opt = '<option value="'.$outkey.'"';
|
$optstart = '<option value="'.$outkey.'"';
|
||||||
if ($selected && $selected == $objp->idprodfournprice) {
|
if ($selected && $selected == $objp->idprodfournprice) {
|
||||||
$opt .= ' selected';
|
$optstart .= ' selected';
|
||||||
}
|
}
|
||||||
if (empty($objp->idprodfournprice) && empty($alsoproductwithnosupplierprice)) {
|
if (empty($objp->idprodfournprice) && empty($alsoproductwithnosupplierprice)) {
|
||||||
$opt .= ' disabled';
|
$optstart .= ' disabled';
|
||||||
}
|
}
|
||||||
if (!empty($objp->idprodfournprice) && $objp->idprodfournprice > 0) {
|
if (!empty($objp->idprodfournprice) && $objp->idprodfournprice > 0) {
|
||||||
$opt .= ' data-product-id="'.$objp->rowid.'" data-price-id="'.$objp->idprodfournprice.'" data-qty="'.$objp->quantity.'" data-up="'.$objp->unitprice.'" data-discount="'.$outdiscount.'" data-tvatx="'.$objp->tva_tx.'"';
|
$optstart .= ' data-product-id="'.$objp->rowid.'" data-price-id="'.$objp->idprodfournprice.'" data-qty="'.$objp->quantity.'" data-up="'.$objp->unitprice.'" data-discount="'.$outdiscount.'" data-tvatx="'.$objp->tva_tx.'"';
|
||||||
}
|
}
|
||||||
$opt .= ' data-description="'.dol_escape_htmltag($objp->description, 0, 1).'"';
|
$optstart .= ' data-description="'.dol_escape_htmltag($objp->description, 0, 1).'"';
|
||||||
$opt .= ' data-html="'.dol_escape_htmltag($optlabel).'"';
|
|
||||||
$opt .= '>';
|
|
||||||
|
|
||||||
$opt .= $optlabel;
|
$outarrayentry = array(
|
||||||
$outval .= $outvallabel;
|
'key' => $outkey,
|
||||||
|
'value' => $outref,
|
||||||
|
'label' => $outvallabel,
|
||||||
|
'qty' => $outqty,
|
||||||
|
'price_qty_ht' => price2num($objp->fprice, 'MU'), // Keep higher resolution for price for the min qty
|
||||||
|
'price_unit_ht' => price2num($objp->unitprice, 'MU'), // This is used to fill the Unit Price
|
||||||
|
'price_ht' => price2num($objp->unitprice, 'MU'), // This is used to fill the Unit Price (for compatibility)
|
||||||
|
'tva_tx' => $objp->tva_tx,
|
||||||
|
'default_vat_code' => $objp->default_vat_code,
|
||||||
|
'discount' => $outdiscount,
|
||||||
|
'type' => $outtype,
|
||||||
|
'duration_value' => $outdurationvalue,
|
||||||
|
'duration_unit' => $outdurationunit,
|
||||||
|
'disabled' => (empty($objp->idprodfournprice) ? true : false),
|
||||||
|
'description' => $objp->description
|
||||||
|
);
|
||||||
|
|
||||||
|
$parameters = array(
|
||||||
|
'objp' => &$objp,
|
||||||
|
'optstart' => &$optstart,
|
||||||
|
'optlabel' => &$optlabel,
|
||||||
|
'outvallabel' => &$outvallabel,
|
||||||
|
'outarrayentry' => &$outarrayentry
|
||||||
|
);
|
||||||
|
$reshook = $hookmanager->executeHooks('selectProduitsFournisseurListOption', $parameters, $this);
|
||||||
|
|
||||||
$opt .= "</option>\n";
|
|
||||||
|
|
||||||
// Add new entry
|
// Add new entry
|
||||||
// "key" value of json key array is used by jQuery automatically as selected value. Example: 'type' = product or service, 'price_ht' = unit price without tax
|
// "key" value of json key array is used by jQuery automatically as selected value. Example: 'type' = product or service, 'price_ht' = unit price without tax
|
||||||
// "label" value of json key array is used by jQuery automatically as text for combo box
|
// "label" value of json key array is used by jQuery automatically as text for combo box
|
||||||
$out .= $opt;
|
$out .= $optstart . ' data-html="'.dol_escape_htmltag($optlabel).'">' . $optlabel . "</option>\n";;
|
||||||
array_push(
|
array_push($outarray, $outarrayentry);
|
||||||
$outarray,
|
|
||||||
array('key'=>$outkey,
|
|
||||||
'value'=>$outref,
|
|
||||||
'label'=>$outval,
|
|
||||||
'qty'=>$outqty,
|
|
||||||
'price_qty_ht'=>price2num($objp->fprice, 'MU'), // Keep higher resolution for price for the min qty
|
|
||||||
'price_unit_ht'=>price2num($objp->unitprice, 'MU'), // This is used to fill the Unit Price
|
|
||||||
'price_ht'=>price2num($objp->unitprice, 'MU'), // This is used to fill the Unit Price (for compatibility)
|
|
||||||
'tva_tx'=>$objp->tva_tx,
|
|
||||||
'default_vat_code'=>$objp->default_vat_code,
|
|
||||||
'discount'=>$outdiscount,
|
|
||||||
'type'=>$outtype,
|
|
||||||
'duration_value'=>$outdurationvalue,
|
|
||||||
'duration_unit'=>$outdurationunit,
|
|
||||||
'disabled'=>(empty($objp->idprodfournprice) ? true : false),
|
|
||||||
'description'=>$objp->description
|
|
||||||
)
|
|
||||||
);
|
|
||||||
// Exemple of var_dump $outarray
|
// Exemple of var_dump $outarray
|
||||||
// array(1) {[0]=>array(6) {[key"]=>string(1) "2" ["value"]=>string(3) "ppp"
|
// array(1) {[0]=>array(6) {[key"]=>string(1) "2" ["value"]=>string(3) "ppp"
|
||||||
// ["label"]=>string(76) "ppp (<strong>f</strong>ff2) - ppp - 20,00 Euros/1unité (20,00 Euros/unité)"
|
// ["label"]=>string(76) "ppp (<strong>f</strong>ff2) - ppp - 20,00 Euros/1unité (20,00 Euros/unité)"
|
||||||
|
|||||||
@ -825,13 +825,14 @@ class FormCompany extends Form
|
|||||||
/**
|
/**
|
||||||
* showContactRoles on view and edit mode
|
* showContactRoles on view and edit mode
|
||||||
*
|
*
|
||||||
* @param string $htmlname Html component name and id
|
* @param string $htmlname Html component name and id
|
||||||
* @param Contact $contact Contact Obejct
|
* @param Contact $contact Contact Obejct
|
||||||
* @param string $rendermode view, edit
|
* @param string $rendermode view, edit
|
||||||
* @param array $selected $key=>$val $val is selected Roles for input mode
|
* @param array $selected $key=>$val $val is selected Roles for input mode
|
||||||
* @return string String with contacts roles
|
* @param string $morecss More css
|
||||||
|
* @return string String with contacts roles
|
||||||
*/
|
*/
|
||||||
public function showRoles($htmlname, Contact $contact, $rendermode = 'view', $selected = array())
|
public function showRoles($htmlname, Contact $contact, $rendermode = 'view', $selected = array(), $morecss = 'minwidth500')
|
||||||
{
|
{
|
||||||
if ($rendermode === 'view') {
|
if ($rendermode === 'view') {
|
||||||
$toprint = array();
|
$toprint = array();
|
||||||
@ -856,7 +857,7 @@ class FormCompany extends Form
|
|||||||
$selected = $newselected;
|
$selected = $newselected;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $this->multiselectarray($htmlname, $contactType, $selected, 0, 0, 'minwidth500');
|
return $this->multiselectarray($htmlname, $contactType, $selected, 0, 0, $morecss);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 'ErrorBadValueForParameterRenderMode'; // Should not happened
|
return 'ErrorBadValueForParameterRenderMode'; // Should not happened
|
||||||
|
|||||||
@ -954,7 +954,7 @@ class FormMail extends Form
|
|||||||
$out .= '<input type="hidden" id="message" name="message" value="'.$defaultmessage.'" />';
|
$out .= '<input type="hidden" id="message" name="message" value="'.$defaultmessage.'" />';
|
||||||
} else {
|
} else {
|
||||||
if (!isset($this->ckeditortoolbar)) {
|
if (!isset($this->ckeditortoolbar)) {
|
||||||
$this->ckeditortoolbar = 'dolibarr_notes';
|
$this->ckeditortoolbar = 'dolibarr_mailings';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Editor wysiwyg
|
// Editor wysiwyg
|
||||||
|
|||||||
@ -1513,9 +1513,10 @@ class FormOther
|
|||||||
* @param array $search_xaxis Array of preselected fields
|
* @param array $search_xaxis Array of preselected fields
|
||||||
* @param array $arrayofxaxis Array of groupby to fill
|
* @param array $arrayofxaxis Array of groupby to fill
|
||||||
* @param string $showempty '1' or 'text'
|
* @param string $showempty '1' or 'text'
|
||||||
|
* @param string $morecss More css
|
||||||
* @return string HTML string component
|
* @return string HTML string component
|
||||||
*/
|
*/
|
||||||
public function selectXAxisField($object, $search_xaxis, &$arrayofxaxis, $showempty = '1')
|
public function selectXAxisField($object, $search_xaxis, &$arrayofxaxis, $showempty = '1', $morecss = 'minwidth250 maxwidth500')
|
||||||
{
|
{
|
||||||
global $form;
|
global $form;
|
||||||
|
|
||||||
@ -1523,7 +1524,7 @@ class FormOther
|
|||||||
foreach ($arrayofxaxis as $key => $val) {
|
foreach ($arrayofxaxis as $key => $val) {
|
||||||
$arrayofxaxislabel[$key] = $val['label'];
|
$arrayofxaxislabel[$key] = $val['label'];
|
||||||
}
|
}
|
||||||
$result = $form->selectarray('search_xaxis', $arrayofxaxislabel, $search_xaxis, $showempty, 0, 0, '', 0, 0, 0, '', 'minwidth250 maxwidth500', 1);
|
$result = $form->selectarray('search_xaxis', $arrayofxaxislabel, $search_xaxis, $showempty, 0, 0, '', 0, 0, 0, '', $morecss, 1);
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -217,7 +217,7 @@ foreach ($arrayoftype as $key => $val) {
|
|||||||
if (dol_eval($val['enabled'], 1, 1, '1')) {
|
if (dol_eval($val['enabled'], 1, 1, '1')) {
|
||||||
$newarrayoftype[$key] = $arrayoftype[$key];
|
$newarrayoftype[$key] = $arrayoftype[$key];
|
||||||
}
|
}
|
||||||
if ($val['langs']) {
|
if (!empty($val['langs'])) {
|
||||||
$langs->load($val['langs']);
|
$langs->load($val['langs']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -450,7 +450,7 @@ $simplearrayofmesures = array();
|
|||||||
foreach ($arrayofmesures as $key => $val) {
|
foreach ($arrayofmesures as $key => $val) {
|
||||||
$simplearrayofmesures[$key] = $arrayofmesures[$key]['label'];
|
$simplearrayofmesures[$key] = $arrayofmesures[$key]['label'];
|
||||||
}
|
}
|
||||||
print $form->multiselectarray('search_measures', $simplearrayofmesures, $search_measures, 0, 0, 'minwidth400', 1, 0, '', '', $langs->trans("Measures")); // Fill the array $arrayofmeasures with possible fields
|
print $form->multiselectarray('search_measures', $simplearrayofmesures, $search_measures, 0, 0, 'minwidth300', 1, 0, '', '', $langs->trans("Measures")); // Fill the array $arrayofmeasures with possible fields
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
// XAxis
|
// XAxis
|
||||||
@ -458,7 +458,7 @@ $count = 0;
|
|||||||
print '<div class="divadvancedsearchfield">';
|
print '<div class="divadvancedsearchfield">';
|
||||||
print '<div class="inline-block"><span class="fas fa-ruler-combined paddingright pictofixedwidth" title="'.dol_escape_htmltag($langs->trans("XAxis")).'"></span><span class="fas fa-caret-down caretdownaxis" title="'.dol_escape_htmltag($langs->trans("XAxis")).'"></span></div>';
|
print '<div class="inline-block"><span class="fas fa-ruler-combined paddingright pictofixedwidth" title="'.dol_escape_htmltag($langs->trans("XAxis")).'"></span><span class="fas fa-caret-down caretdownaxis" title="'.dol_escape_htmltag($langs->trans("XAxis")).'"></span></div>';
|
||||||
//var_dump($arrayofxaxis);
|
//var_dump($arrayofxaxis);
|
||||||
print $formother->selectXAxisField($object, $search_xaxis, $arrayofxaxis, $langs->trans("XAxis")); // Fill the array $arrayofxaxis with possible fields
|
print $formother->selectXAxisField($object, $search_xaxis, $arrayofxaxis, $langs->trans("XAxis"), 'minwidth300 maxwidth400'); // Fill the array $arrayofxaxis with possible fields
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
// Group by
|
// Group by
|
||||||
@ -970,31 +970,31 @@ function fillArrayOfMeasures($object, $tablealias, $labelofobject, &$arrayofmesu
|
|||||||
// Add main fields of object
|
// Add main fields of object
|
||||||
foreach ($object->fields as $key => $val) {
|
foreach ($object->fields as $key => $val) {
|
||||||
if (!empty($val['isameasure']) && (!isset($val['enabled']) || dol_eval($val['enabled'], 1, 1, '1'))) {
|
if (!empty($val['isameasure']) && (!isset($val['enabled']) || dol_eval($val['enabled'], 1, 1, '1'))) {
|
||||||
$position = (!empty($val['position']) ? $val['position'] : 0);
|
$position = (empty($val['position']) ? 0 : intVal($val['position']));
|
||||||
$arrayofmesures[$tablealias.'.'.$key.'-sum'] = array(
|
$arrayofmesures[$tablealias.'.'.$key.'-sum'] = array(
|
||||||
'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$langs->trans("Sum").')</span>',
|
'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$langs->trans("Sum").')</span>',
|
||||||
'position' => ($position+($count * 100000)).'.1',
|
'position' => ($position + ($count * 100000)).'.1',
|
||||||
'table' => $object->table_element
|
'table' => $object->table_element
|
||||||
);
|
);
|
||||||
$arrayofmesures[$tablealias.'.'.$key.'-average'] = array(
|
$arrayofmesures[$tablealias.'.'.$key.'-average'] = array(
|
||||||
'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$langs->trans("Average").')</span>',
|
'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$langs->trans("Average").')</span>',
|
||||||
'position' => ($position+($count * 100000)).'.2',
|
'position' => ($position + ($count * 100000)).'.2',
|
||||||
'table' => $object->table_element
|
'table' => $object->table_element
|
||||||
);
|
);
|
||||||
$arrayofmesures[$tablealias.'.'.$key.'-min'] = array(
|
$arrayofmesures[$tablealias.'.'.$key.'-min'] = array(
|
||||||
'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$langs->trans("Minimum").')</span>',
|
'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$langs->trans("Minimum").')</span>',
|
||||||
'position' => ($position+($count * 100000)).'.3',
|
'position' => ($position + ($count * 100000)).'.3',
|
||||||
'table' => $object->table_element
|
'table' => $object->table_element
|
||||||
);
|
);
|
||||||
$arrayofmesures[$tablealias.'.'.$key.'-max'] = array(
|
$arrayofmesures[$tablealias.'.'.$key.'-max'] = array(
|
||||||
'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$langs->trans("Maximum").')</span>',
|
'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$langs->trans("Maximum").')</span>',
|
||||||
'position' => ($position+($count * 100000)).'.4',
|
'position' => ($position + ($count * 100000)).'.4',
|
||||||
'table' => $object->table_element
|
'table' => $object->table_element
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Add extrafields to Measures
|
// Add extrafields to Measures
|
||||||
if ($object->isextrafieldmanaged) {
|
if (!empty($object->isextrafieldmanaged)) {
|
||||||
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
||||||
if (!empty($extrafields->attributes[$object->table_element]['totalizable'][$key]) && (!isset($extrafields->attributes[$object->table_element]['enabled'][$key]) || dol_eval($extrafields->attributes[$object->table_element]['enabled'][$key], 1, 1, '1'))) {
|
if (!empty($extrafields->attributes[$object->table_element]['totalizable'][$key]) && (!isset($extrafields->attributes[$object->table_element]['enabled'][$key]) || dol_eval($extrafields->attributes[$object->table_element]['enabled'][$key], 1, 1, '1'))) {
|
||||||
$position = (!empty($val['position']) ? $val['position'] : 0);
|
$position = (!empty($val['position']) ? $val['position'] : 0);
|
||||||
@ -1098,26 +1098,27 @@ function fillArrayOfXAxis($object, $tablealias, $labelofobject, &$arrayofxaxis,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (in_array($val['type'], array('timestamp', 'date', 'datetime'))) {
|
if (in_array($val['type'], array('timestamp', 'date', 'datetime'))) {
|
||||||
$position = (!empty($val['position']) ? $val['position'] : 0);
|
$position = (empty($val['position']) ? 0 : intVal($val['position']));
|
||||||
$arrayofxaxis[$tablealias.'.'.$key.'-year'] = array(
|
$arrayofxaxis[$tablealias.'.'.$key.'-year'] = array(
|
||||||
'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.')</span>',
|
'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.')</span>',
|
||||||
'position' => ($position+($count * 100000)).'.1',
|
'position' => ($position + ($count * 100000)).'.1',
|
||||||
'table' => $object->table_element
|
'table' => $object->table_element
|
||||||
);
|
);
|
||||||
$arrayofxaxis[$tablealias.'.'.$key.'-month'] = array(
|
$arrayofxaxis[$tablealias.'.'.$key.'-month'] = array(
|
||||||
'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.'-'.$MM.')</span>',
|
'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.'-'.$MM.')</span>',
|
||||||
'position' => ($position+($count * 100000)).'.2',
|
'position' => ($position + ($count * 100000)).'.2',
|
||||||
'table' => $object->table_element
|
'table' => $object->table_element
|
||||||
);
|
);
|
||||||
$arrayofxaxis[$tablealias.'.'.$key.'-day'] = array(
|
$arrayofxaxis[$tablealias.'.'.$key.'-day'] = array(
|
||||||
'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.'-'.$MM.'-'.$DD.')</span>',
|
'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.'-'.$MM.'-'.$DD.')</span>',
|
||||||
'position' => ($position+($count * 100000)).'.3',
|
'position' => ($position + ($count * 100000)).'.3',
|
||||||
'table' => $object->table_element
|
'table' => $object->table_element
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
$position = (empty($val['position']) ? 0 : intVal($val['position']));
|
||||||
$arrayofxaxis[$tablealias.'.'.$key] = array(
|
$arrayofxaxis[$tablealias.'.'.$key] = array(
|
||||||
'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']),
|
'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']),
|
||||||
'position' => ($position+($count * 100000)),
|
'position' => ($position + ($count * 100000)),
|
||||||
'table' => $object->table_element
|
'table' => $object->table_element
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -1125,7 +1126,7 @@ function fillArrayOfXAxis($object, $tablealias, $labelofobject, &$arrayofxaxis,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add extrafields to X-Axis
|
// Add extrafields to X-Axis
|
||||||
if ($object->isextrafieldmanaged) {
|
if (!empty($object->isextrafieldmanaged)) {
|
||||||
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
||||||
if ($extrafields->attributes[$object->table_element]['type'][$key] == 'separate') {
|
if ($extrafields->attributes[$object->table_element]['type'][$key] == 'separate') {
|
||||||
continue;
|
continue;
|
||||||
@ -1196,7 +1197,7 @@ function fillArrayOfGroupBy($object, $tablealias, $labelofobject, &$arrayofgroup
|
|||||||
|
|
||||||
// Add main fields of object
|
// Add main fields of object
|
||||||
foreach ($object->fields as $key => $val) {
|
foreach ($object->fields as $key => $val) {
|
||||||
if (!$val['isameasure']) {
|
if (empty($val['isameasure'])) {
|
||||||
if (in_array($key, array(
|
if (in_array($key, array(
|
||||||
'id', 'ref_int', 'ref_ext', 'rowid', 'entity', 'last_main_doc', 'logo', 'logo_squarred', 'extraparams',
|
'id', 'ref_int', 'ref_ext', 'rowid', 'entity', 'last_main_doc', 'logo', 'logo_squarred', 'extraparams',
|
||||||
'parent', 'photo', 'socialnetworks', 'webservices_url', 'webservices_key'))) {
|
'parent', 'photo', 'socialnetworks', 'webservices_url', 'webservices_key'))) {
|
||||||
@ -1218,26 +1219,27 @@ function fillArrayOfGroupBy($object, $tablealias, $labelofobject, &$arrayofgroup
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (in_array($val['type'], array('timestamp', 'date', 'datetime'))) {
|
if (in_array($val['type'], array('timestamp', 'date', 'datetime'))) {
|
||||||
$position = (!empty($val['position']) ? $val['position'] : 0);
|
$position = (empty($val['position']) ? 0 : intVal($val['position']));
|
||||||
$arrayofgroupby[$tablealias.'.'.$key.'-year'] = array(
|
$arrayofgroupby[$tablealias.'.'.$key.'-year'] = array(
|
||||||
'label' => img_picto('', $object->picto,
|
'label' => img_picto('', $object->picto,
|
||||||
'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.')</span>', 'position' => ($position+($count * 100000)).'.1',
|
'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.')</span>', 'position' => ($position + ($count * 100000)).'.1',
|
||||||
'table' => $object->table_element
|
'table' => $object->table_element
|
||||||
);
|
);
|
||||||
$arrayofgroupby[$tablealias.'.'.$key.'-month'] = array(
|
$arrayofgroupby[$tablealias.'.'.$key.'-month'] = array(
|
||||||
'label' => img_picto('', $object->picto,
|
'label' => img_picto('', $object->picto,
|
||||||
'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.'-'.$MM.')</span>', 'position' => ($position+($count * 100000)).'.2',
|
'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.'-'.$MM.')</span>', 'position' => ($position + ($count * 100000)).'.2',
|
||||||
'table' => $object->table_element
|
'table' => $object->table_element
|
||||||
);
|
);
|
||||||
$arrayofgroupby[$tablealias.'.'.$key.'-day'] = array(
|
$arrayofgroupby[$tablealias.'.'.$key.'-day'] = array(
|
||||||
'label' => img_picto('', $object->picto,
|
'label' => img_picto('', $object->picto,
|
||||||
'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.'-'.$MM.'-'.$DD.')</span>', 'position' => ($position+($count * 100000)).'.3',
|
'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.'-'.$MM.'-'.$DD.')</span>', 'position' => ($position + ($count * 100000)).'.3',
|
||||||
'table' => $object->table_element
|
'table' => $object->table_element
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
$position = (empty($val['position']) ? 0 : intVal($val['position']));
|
||||||
$arrayofgroupby[$tablealias.'.'.$key] = array(
|
$arrayofgroupby[$tablealias.'.'.$key] = array(
|
||||||
'label' => img_picto('', $object->picto,
|
'label' => img_picto('', $object->picto,
|
||||||
'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']), 'position' => ($position+($count * 100000)),
|
'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']), 'position' => ($position + ($count * 100000)),
|
||||||
'table' => $object->table_element
|
'table' => $object->table_element
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -1245,7 +1247,7 @@ function fillArrayOfGroupBy($object, $tablealias, $labelofobject, &$arrayofgroup
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add extrafields to Group by
|
// Add extrafields to Group by
|
||||||
if ($object->isextrafieldmanaged) {
|
if (! empty($object->isextrafieldmanaged)) {
|
||||||
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
||||||
if ($extrafields->attributes[$object->table_element]['type'][$key] == 'separate') {
|
if ($extrafields->attributes[$object->table_element]['type'][$key] == 'separate') {
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@ -777,7 +777,7 @@ function isInEEC($object)
|
|||||||
*/
|
*/
|
||||||
function show_projects($conf, $langs, $db, $object, $backtopage = '', $nocreatelink = 0, $morehtmlright = '')
|
function show_projects($conf, $langs, $db, $object, $backtopage = '', $nocreatelink = 0, $morehtmlright = '')
|
||||||
{
|
{
|
||||||
global $user;
|
global $user, $action, $hookmanager;
|
||||||
|
|
||||||
$i = -1;
|
$i = -1;
|
||||||
|
|
||||||
@ -791,8 +791,9 @@ function show_projects($conf, $langs, $db, $object, $backtopage = '', $nocreatel
|
|||||||
|
|
||||||
print "\n";
|
print "\n";
|
||||||
print load_fiche_titre($langs->trans("ProjectsDedicatedToThisThirdParty"), $newcardbutton.$morehtmlright, '');
|
print load_fiche_titre($langs->trans("ProjectsDedicatedToThisThirdParty"), $newcardbutton.$morehtmlright, '');
|
||||||
print '<div class="div-table-responsive">';
|
|
||||||
print "\n".'<table class="noborder" width=100%>';
|
print '<div class="div-table-responsive">'."\n";
|
||||||
|
print '<table class="noborder centpercent">';
|
||||||
|
|
||||||
$sql = "SELECT p.rowid as id, p.entity, p.title, p.ref, p.public, p.dateo as do, p.datee as de, p.fk_statut as status, p.fk_opp_status, p.opp_amount, p.opp_percent, p.tms as date_update, p.budget_amount";
|
$sql = "SELECT p.rowid as id, p.entity, p.title, p.ref, p.public, p.dateo as do, p.datee as de, p.fk_statut as status, p.fk_opp_status, p.opp_amount, p.opp_percent, p.tms as date_update, p.budget_amount";
|
||||||
$sql .= ", cls.code as opp_status_code";
|
$sql .= ", cls.code as opp_status_code";
|
||||||
@ -877,6 +878,11 @@ function show_projects($conf, $langs, $db, $object, $backtopage = '', $nocreatel
|
|||||||
} else {
|
} else {
|
||||||
dol_print_error($db);
|
dol_print_error($db);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$parameters = array('sql'=>$sql, 'function'=>'show_projects');
|
||||||
|
$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object, $action); // Note that $action and $object may have been modified by hook
|
||||||
|
print $hookmanager->resPrint;
|
||||||
|
|
||||||
print "</table>";
|
print "</table>";
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
@ -890,14 +896,15 @@ function show_projects($conf, $langs, $db, $object, $backtopage = '', $nocreatel
|
|||||||
/**
|
/**
|
||||||
* Show html area for list of contacts
|
* Show html area for list of contacts
|
||||||
*
|
*
|
||||||
* @param Conf $conf Object conf
|
* @param Conf $conf Object conf
|
||||||
* @param Translate $langs Object langs
|
* @param Translate $langs Object langs
|
||||||
* @param DoliDB $db Database handler
|
* @param DoliDB $db Database handler
|
||||||
* @param Societe $object Third party object
|
* @param Societe $object Third party object
|
||||||
* @param string $backtopage Url to go once contact is created
|
* @param string $backtopage Url to go once contact is created
|
||||||
|
* @param int $showuserlogin 1=Show also user login if it exists
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
function show_contacts($conf, $langs, $db, $object, $backtopage = '')
|
function show_contacts($conf, $langs, $db, $object, $backtopage = '', $showuserlogin = 0)
|
||||||
{
|
{
|
||||||
global $user, $conf, $extrafields, $hookmanager;
|
global $user, $conf, $extrafields, $hookmanager;
|
||||||
global $contextpage;
|
global $contextpage;
|
||||||
@ -1131,13 +1138,16 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '')
|
|||||||
if (in_array($key, array('statut'))) {
|
if (in_array($key, array('statut'))) {
|
||||||
print $form->selectarray('search_status', array('-1'=>'', '0'=>$contactstatic->LibStatut(0, 1), '1'=>$contactstatic->LibStatut(1, 1)), $search_status);
|
print $form->selectarray('search_status', array('-1'=>'', '0'=>$contactstatic->LibStatut(0, 1), '1'=>$contactstatic->LibStatut(1, 1)), $search_status);
|
||||||
} elseif (in_array($key, array('role'))) {
|
} elseif (in_array($key, array('role'))) {
|
||||||
print $formcompany->showRoles("search_roles", $contactstatic, 'edit', $search_roles);
|
print $formcompany->showRoles("search_roles", $contactstatic, 'edit', $search_roles, 'minwidth200 maxwidth300');
|
||||||
} else {
|
} else {
|
||||||
print '<input type="text" class="flat maxwidth75" name="search_'.$key.'" value="'.(!empty($search[$key]) ? dol_escape_htmltag($search[$key]) : '').'">';
|
print '<input type="text" class="flat maxwidth75" name="search_'.$key.'" value="'.(!empty($search[$key]) ? dol_escape_htmltag($search[$key]) : '').'">';
|
||||||
}
|
}
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($showuserlogin) {
|
||||||
|
print '<td></td>';
|
||||||
|
}
|
||||||
// Extra fields
|
// Extra fields
|
||||||
$extrafieldsobjectkey = $contactstatic->table_element;
|
$extrafieldsobjectkey = $contactstatic->table_element;
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php';
|
||||||
@ -1177,6 +1187,9 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '')
|
|||||||
print getTitleFieldOfList($arrayfields['sc.'.$key]['label'], 0, $_SERVER['PHP_SELF'], '', '', $param, ($align ? 'class="'.$align.'"' : ''), $sortfield, $sortorder, $align.' ')."\n";
|
print getTitleFieldOfList($arrayfields['sc.'.$key]['label'], 0, $_SERVER['PHP_SELF'], '', '', $param, ($align ? 'class="'.$align.'"' : ''), $sortfield, $sortorder, $align.' ')."\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($showuserlogin) {
|
||||||
|
print '<td>'.$langs->trans("DolibarrLogin").'</td>';
|
||||||
|
}
|
||||||
// Extra fields
|
// Extra fields
|
||||||
$extrafieldsobjectkey = $contactstatic->table_element;
|
$extrafieldsobjectkey = $contactstatic->table_element;
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php';
|
||||||
@ -1275,6 +1288,16 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '')
|
|||||||
print '<td class="center">'.$contactstatic->getLibStatut(5).'</td>';
|
print '<td class="center">'.$contactstatic->getLibStatut(5).'</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($showuserlogin) {
|
||||||
|
print '<td>';
|
||||||
|
$tmpuser= new User($db);
|
||||||
|
$resfetch = $tmpuser->fetch(0, '', '', 0, -1, '', $contactstatic->id);
|
||||||
|
if ($resfetch > 0) {
|
||||||
|
print $tmpuser->getNomUrl(1, '', 0, 0, 24, 1);
|
||||||
|
}
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
// Extra fields
|
// Extra fields
|
||||||
$extrafieldsobjectkey = $contactstatic->table_element;
|
$extrafieldsobjectkey = $contactstatic->table_element;
|
||||||
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
|
include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php';
|
||||||
|
|||||||
@ -3887,15 +3887,18 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
|||||||
|
|
||||||
if (strpos($pictowithouttext, 'fontawesome_') !== false || preg_match('/^fa-/', $pictowithouttext)) {
|
if (strpos($pictowithouttext, 'fontawesome_') !== false || preg_match('/^fa-/', $pictowithouttext)) {
|
||||||
// This is a font awesome image 'fonwtawesome_xxx' or 'fa-xxx'
|
// This is a font awesome image 'fonwtawesome_xxx' or 'fa-xxx'
|
||||||
|
$pictowithouttext = str_replace('fontawesome_', '', $pictowithouttext);
|
||||||
$pictowithouttext = str_replace('fa-', '', $pictowithouttext);
|
$pictowithouttext = str_replace('fa-', '', $pictowithouttext);
|
||||||
|
|
||||||
$pictowithouttextarray = explode('_', $pictowithouttext);
|
$pictowithouttextarray = explode('_', $pictowithouttext);
|
||||||
$marginleftonlyshort = 0;
|
$marginleftonlyshort = 0;
|
||||||
|
|
||||||
if (!empty($pictowithouttextarray[1])) {
|
if (!empty($pictowithouttextarray[1])) {
|
||||||
$fakey = 'fa-'.$pictowithouttextarray[1];
|
// Syntax is 'fontawesome_fakey_faprefix_facolor_fasize' or 'fa-fakey_faprefix_facolor_fasize'
|
||||||
$fa = empty($pictowithouttextarray[2]) ? 'fa' : $pictowithouttextarray[2];
|
$fakey = 'fa-'.$pictowithouttextarray[0];
|
||||||
$facolor = empty($pictowithouttextarray[3]) ? '' : $pictowithouttextarray[3];
|
$fa = empty($pictowithouttextarray[1]) ? 'fa' : $pictowithouttextarray[1];
|
||||||
$fasize = empty($pictowithouttextarray[4]) ? '' : $pictowithouttextarray[4];
|
$facolor = empty($pictowithouttextarray[2]) ? '' : $pictowithouttextarray[2];
|
||||||
|
$fasize = empty($pictowithouttextarray[3]) ? '' : $pictowithouttextarray[3];
|
||||||
} else {
|
} else {
|
||||||
$fakey = 'fa-'.$pictowithouttext;
|
$fakey = 'fa-'.$pictowithouttext;
|
||||||
$fa = 'fa';
|
$fa = 'fa';
|
||||||
|
|||||||
@ -30,7 +30,7 @@
|
|||||||
* @param string $objectname Name of object
|
* @param string $objectname Name of object
|
||||||
* @param string $newmask New mask
|
* @param string $newmask New mask
|
||||||
* @param string $readdir Directory source (use $destdir when not defined)
|
* @param string $readdir Directory source (use $destdir when not defined)
|
||||||
* @param string $addfieldentry Array of the field entry to add array('key'=>,'type'=>,''label'=>,'visible'=>,'enabled'=>,'position'=>,'notnull'=>','index'=>,'searchall'=>,'comment'=>,'help'=>,'isameasure')
|
* @param string $addfieldentry Array of 1 field entry to add array('key'=>,'type'=>,''label'=>,'visible'=>,'enabled'=>,'position'=>,'notnull'=>','index'=>,'searchall'=>,'comment'=>,'help'=>,'isameasure')
|
||||||
* @param string $delfieldentry Id of field to remove
|
* @param string $delfieldentry Id of field to remove
|
||||||
* @return int|object <=0 if KO, Object if OK
|
* @return int|object <=0 if KO, Object if OK
|
||||||
* @see rebuildObjectSql()
|
* @see rebuildObjectSql()
|
||||||
@ -40,7 +40,7 @@ function rebuildObjectClass($destdir, $module, $objectname, $newmask, $readdir =
|
|||||||
global $db, $langs;
|
global $db, $langs;
|
||||||
|
|
||||||
if (empty($objectname)) {
|
if (empty($objectname)) {
|
||||||
return -1;
|
return -6;
|
||||||
}
|
}
|
||||||
if (empty($readdir)) {
|
if (empty($readdir)) {
|
||||||
$readdir = $destdir;
|
$readdir = $destdir;
|
||||||
@ -48,9 +48,11 @@ function rebuildObjectClass($destdir, $module, $objectname, $newmask, $readdir =
|
|||||||
|
|
||||||
if (!empty($addfieldentry['arrayofkeyval']) && !is_array($addfieldentry['arrayofkeyval'])) {
|
if (!empty($addfieldentry['arrayofkeyval']) && !is_array($addfieldentry['arrayofkeyval'])) {
|
||||||
dol_print_error('', 'Bad parameter addfieldentry with a property arrayofkeyval defined but that is not an array.');
|
dol_print_error('', 'Bad parameter addfieldentry with a property arrayofkeyval defined but that is not an array.');
|
||||||
return -1;
|
return -7;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$error = 0;
|
||||||
|
|
||||||
// Check parameters
|
// Check parameters
|
||||||
if (is_array($addfieldentry) && count($addfieldentry) > 0) {
|
if (is_array($addfieldentry) && count($addfieldentry) > 0) {
|
||||||
if (empty($addfieldentry['name'])) {
|
if (empty($addfieldentry['name'])) {
|
||||||
@ -62,8 +64,8 @@ function rebuildObjectClass($destdir, $module, $objectname, $newmask, $readdir =
|
|||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
if (!preg_match('/^(integer|price|sellist|varchar|double|text|html|duration)/', $addfieldentry['type'])
|
if (!preg_match('/^(integer|price|sellist|varchar|double|text|html|duration)/', $addfieldentry['type'])
|
||||||
&& !preg_match('/^(boolean|real|date|datetime|timestamp)$/', $addfieldentry['type'])) {
|
&& !preg_match('/^(boolean|smallint|real|date|datetime|timestamp|phone|mail|url|ip|password)$/', $addfieldentry['type'])) {
|
||||||
setEventMessages($langs->trans('BadValueForType', $objectname), null, 'errors');
|
setEventMessages($langs->trans('BadValueForType', $addfieldentry['type']), null, 'errors');
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -217,10 +219,14 @@ function rebuildObjectClass($destdir, $module, $objectname, $newmask, $readdir =
|
|||||||
dol_mkdir(dirname($pathoffiletoedittarget));
|
dol_mkdir(dirname($pathoffiletoedittarget));
|
||||||
|
|
||||||
//file_put_contents($pathoffiletoedittmp, $contentclass);
|
//file_put_contents($pathoffiletoedittmp, $contentclass);
|
||||||
file_put_contents(dol_osencode($pathoffiletoedittarget), $contentclass);
|
$result = file_put_contents(dol_osencode($pathoffiletoedittarget), $contentclass);
|
||||||
@chmod($pathoffiletoedittarget, octdec($newmask));
|
if ($result) {
|
||||||
|
@chmod($pathoffiletoedittarget, octdec($newmask));
|
||||||
|
} else {
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
|
||||||
return $object;
|
return $error ? -1 : $object;
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
print $e->getMessage();
|
print $e->getMessage();
|
||||||
return -5;
|
return -5;
|
||||||
@ -257,13 +263,33 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir = '
|
|||||||
|
|
||||||
// Edit .sql file
|
// Edit .sql file
|
||||||
if ($moduletype == 'internal') {
|
if ($moduletype == 'internal') {
|
||||||
$pathoffiletoeditsrc = $readdir.'/../install/mysql/tables/llx_'.strtolower($module).'_'.strtolower($objectname).'.sql';
|
$pathoffiletoeditsrc = '/../install/mysql/tables/llx_'.strtolower($module).'_'.strtolower($objectname).'.sql';
|
||||||
$pathoffiletoedittarget = $destdir.'/../install/mysql/tables/llx_'.strtolower($module).'_'.strtolower($objectname).'.sql'.($readdir != $destdir ? '.new' : '');
|
if (! dol_is_file($readdir.$pathoffiletoeditsrc)) {
|
||||||
|
$pathoffiletoeditsrc = '/../install/mysql/tables/llx_'.strtolower($module).'_'.strtolower($objectname).'-'.strtolower($module).'.sql';
|
||||||
|
if (! dol_is_file($readdir.$pathoffiletoeditsrc)) {
|
||||||
|
$pathoffiletoeditsrc = '/../install/mysql/tables/llx_'.strtolower($module).'-'.strtolower($module).'.sql';
|
||||||
|
if (! dol_is_file($readdir.$pathoffiletoeditsrc)) {
|
||||||
|
$pathoffiletoeditsrc = '/../install/mysql/tables/llx_'.strtolower($module).'.sql';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$pathoffiletoeditsrc = $readdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.sql';
|
$pathoffiletoeditsrc = '/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.sql';
|
||||||
$pathoffiletoedittarget = $destdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.sql'.($readdir != $destdir ? '.new' : '');
|
if (! dol_is_file($readdir.$pathoffiletoeditsrc)) {
|
||||||
|
$pathoffiletoeditsrc = '/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'-'.strtolower($module).'.sql';
|
||||||
|
if (! dol_is_file($readdir.$pathoffiletoeditsrc)) {
|
||||||
|
$pathoffiletoeditsrc = '/sql/llx_'.strtolower($module).'-'.strtolower($module).'.sql';
|
||||||
|
if (! dol_is_file($readdir.$pathoffiletoeditsrc)) {
|
||||||
|
$pathoffiletoeditsrc = '/sql/llx_'.strtolower($module).'.sql';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Complete path to be full path
|
||||||
|
$pathoffiletoedittarget = $destdir.$pathoffiletoeditsrc.($readdir != $destdir ? '.new' : '');
|
||||||
|
$pathoffiletoeditsrc = $readdir.$pathoffiletoeditsrc;
|
||||||
|
|
||||||
if (!dol_is_file($pathoffiletoeditsrc)) {
|
if (!dol_is_file($pathoffiletoeditsrc)) {
|
||||||
$langs->load("errors");
|
$langs->load("errors");
|
||||||
setEventMessages($langs->trans("ErrorFileNotFound", $pathoffiletoeditsrc), null, 'errors');
|
setEventMessages($langs->trans("ErrorFileNotFound", $pathoffiletoeditsrc), null, 'errors');
|
||||||
@ -340,16 +366,13 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir = '
|
|||||||
@chmod($pathoffiletoedittarget, octdec($newmask));
|
@chmod($pathoffiletoedittarget, octdec($newmask));
|
||||||
} else {
|
} else {
|
||||||
$error++;
|
$error++;
|
||||||
|
setEventMessages($langs->trans("ErrorFailToCreateFile", $pathoffiletoedittarget), null, 'errors');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Edit .key.sql file
|
// Edit .key.sql file
|
||||||
if ($moduletype == 'internal') {
|
$pathoffiletoeditsrc = preg_replace('/\.sql$/', '.key.sql', $pathoffiletoeditsrc);
|
||||||
$pathoffiletoeditsrc = $readdir.'/../install/mysql/tables/llx_'.strtolower($module).'_'.strtolower($objectname).'.key.sql';
|
$pathoffiletoedittarget = preg_replace('/\.sql$/', '.key.sql', $pathoffiletoedittarget);
|
||||||
$pathoffiletoedittarget = $destdir.'/../install/mysql/tables/llx_'.strtolower($module).'_'.strtolower($objectname).'.key.sql'.($readdir != $destdir ? '.new' : '');
|
$pathoffiletoedittarget = preg_replace('/\.sql.new$/', '.key.sql.new', $pathoffiletoedittarget);
|
||||||
} else {
|
|
||||||
$pathoffiletoeditsrc = $destdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.key.sql';
|
|
||||||
$pathoffiletoedittarget = $destdir.'/sql/llx_'.strtolower($module).'_'.strtolower($objectname).'.key.sql'.($readdir != $destdir ? '.new' : '');
|
|
||||||
}
|
|
||||||
|
|
||||||
$contentsql = file_get_contents(dol_osencode($pathoffiletoeditsrc), 'r');
|
$contentsql = file_get_contents(dol_osencode($pathoffiletoeditsrc), 'r');
|
||||||
|
|
||||||
@ -378,10 +401,11 @@ function rebuildObjectSql($destdir, $module, $objectname, $newmask, $readdir = '
|
|||||||
dol_mkdir(dirname($pathoffiletoedittarget));
|
dol_mkdir(dirname($pathoffiletoedittarget));
|
||||||
|
|
||||||
$result2 = file_put_contents($pathoffiletoedittarget, $contentsql);
|
$result2 = file_put_contents($pathoffiletoedittarget, $contentsql);
|
||||||
if ($result) {
|
if ($result2) {
|
||||||
@chmod($pathoffiletoedittarget, octdec($newmask));
|
@chmod($pathoffiletoedittarget, octdec($newmask));
|
||||||
} else {
|
} else {
|
||||||
$error++;
|
$error++;
|
||||||
|
setEventMessages($langs->trans("ErrorFailToCreateFile", $pathoffiletoedittarget), null, 'errors');
|
||||||
}
|
}
|
||||||
|
|
||||||
return $error ? -1 : 1;
|
return $error ? -1 : 1;
|
||||||
|
|||||||
@ -90,7 +90,7 @@ class InterfaceNotification extends DolibarrTriggers
|
|||||||
*/
|
*/
|
||||||
public function getListOfManagedEvents()
|
public function getListOfManagedEvents()
|
||||||
{
|
{
|
||||||
global $conf;
|
global $conf, $action;
|
||||||
global $hookmanager;
|
global $hookmanager;
|
||||||
|
|
||||||
|
|
||||||
@ -100,6 +100,8 @@ class InterfaceNotification extends DolibarrTriggers
|
|||||||
}
|
}
|
||||||
$hookmanager->initHooks(array('notification'));
|
$hookmanager->initHooks(array('notification'));
|
||||||
|
|
||||||
|
$parameters = array();
|
||||||
|
$object = new stdClass();
|
||||||
$reshook = $hookmanager->executeHooks('notifsupported', $parameters, $object, $action);
|
$reshook = $hookmanager->executeHooks('notifsupported', $parameters, $object, $action);
|
||||||
if (empty($reshook)) {
|
if (empty($reshook)) {
|
||||||
if (!empty($hookmanager->resArray['arrayofnotifsupported'])) {
|
if (!empty($hookmanager->resArray['arrayofnotifsupported'])) {
|
||||||
|
|||||||
@ -133,15 +133,16 @@ if (!empty($conf->use_javascript_ajax)) {
|
|||||||
print "\n".'<script type="text/javascript">';
|
print "\n".'<script type="text/javascript">';
|
||||||
print '$(document).ready(function () {
|
print '$(document).ready(function () {
|
||||||
$("#generate_token").click(function() {
|
$("#generate_token").click(function() {
|
||||||
$.get( "'.DOL_URL_ROOT.'/core/ajax/security.php", {
|
console.log("Click done");
|
||||||
action: \'getrandompassword\',
|
$.get( "'.DOL_URL_ROOT.'/core/ajax/security.php", {
|
||||||
generic: true
|
action: \'getrandompassword\',
|
||||||
},
|
generic: true
|
||||||
function(token) {
|
},
|
||||||
$("#CRON_KEY").val(token);
|
function(token) {
|
||||||
});
|
$("#CRON_KEY").val(token);
|
||||||
});
|
});
|
||||||
});';
|
});
|
||||||
|
});';
|
||||||
print '</script>';
|
print '</script>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -417,17 +417,19 @@ class ActionsDatapolicy
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (GETPOST('socid')) {
|
if (GETPOST('socid')) {
|
||||||
|
/* Removed due to awful harcoded values
|
||||||
require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
||||||
$societe = new Societe($this->db);
|
$societe = new Societe($this->db);
|
||||||
$societe->fetch(GETPOST('socid'));
|
$societe->fetch(GETPOST('socid'));
|
||||||
|
|
||||||
if (!in_array($object->forme_juridique_code, array(11, 12, 13, 15, 17, 18, 19, 35, 60, 200, 311, 312, 316, 401, 600, 700, 1005)) && $societe->typent_id != 8) {
|
if (!empty($object->forme_juridique_code) && !in_array($object->forme_juridique_code, array(11, 12, 13, 15, 17, 18, 19, 35, 60, 200, 311, 312, 316, 401, 600, 700, 1005)) && $societe->typent_id != 8) {
|
||||||
require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
|
require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php';
|
||||||
$jsscript .= '<script>';
|
$jsscript .= '<script>';
|
||||||
$jsscript .= "var elementToHide = 'td.societe_extras_datapolicy_opposition_traitement, td.societe_extras_datapolicy_opposition_prospection, td.societe_extras_datapolicy_consentement';".PHP_EOL;
|
$jsscript .= "var elementToHide = 'td.societe_extras_datapolicy_opposition_traitement, td.societe_extras_datapolicy_opposition_prospection, td.societe_extras_datapolicy_consentement';".PHP_EOL;
|
||||||
$jsscript .= "$(elementToHide).parent('tr').hide();".PHP_EOL;
|
$jsscript .= "$(elementToHide).parent('tr').hide();".PHP_EOL;
|
||||||
$jsscript .= '</script>';
|
$jsscript .= '</script>';
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
} elseif ($parameters['currentcontext'] == 'contactcard') {
|
} elseif ($parameters['currentcontext'] == 'contactcard') {
|
||||||
if (GETPOST('action') == 'create' || GETPOST('action') == 'edit') {
|
if (GETPOST('action') == 'create' || GETPOST('action') == 'edit') {
|
||||||
|
|||||||
@ -84,7 +84,7 @@ class DolibarrCollector extends DataCollector implements Renderable, AssetProvid
|
|||||||
protected function getMailInfo()
|
protected function getMailInfo()
|
||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
global $dolibarr_mailing_limit_sendbyweb;
|
global $dolibarr_mailing_limit_sendbyweb, $dolibarr_mailing_limit_sendbycli, $dolibarr_mailing_limit_sendbyday;
|
||||||
|
|
||||||
$info = $langs->trans('Method').': <strong>'.getDolGlobalString("MAIN_MAIL_SENDMODE").'</strong><br>';
|
$info = $langs->trans('Method').': <strong>'.getDolGlobalString("MAIN_MAIL_SENDMODE").'</strong><br>';
|
||||||
$info .= $langs->trans('Server').': <strong>'.getDolGlobalString("MAIN_MAIL_SMTP_SERVER").'</strong><br>';
|
$info .= $langs->trans('Server').': <strong>'.getDolGlobalString("MAIN_MAIL_SMTP_SERVER").'</strong><br>';
|
||||||
@ -94,6 +94,8 @@ class DolibarrCollector extends DataCollector implements Renderable, AssetProvid
|
|||||||
$info .= $langs->trans('TLS/STARTTLS').': <strong>'.getDolGlobalString("MAIN_MAIL_EMAIL_TLS").'</strong> / <strong>'.getDolGlobalString("MAIN_MAIL_EMAIL_STARTTLS").'</strong><br>';
|
$info .= $langs->trans('TLS/STARTTLS').': <strong>'.getDolGlobalString("MAIN_MAIL_EMAIL_TLS").'</strong> / <strong>'.getDolGlobalString("MAIN_MAIL_EMAIL_STARTTLS").'</strong><br>';
|
||||||
$info .= $langs->trans('MAIN_DISABLE_ALL_MAILS').': <strong>'.(empty($conf->global->MAIN_DISABLE_ALL_MAILS) ? $langs->trans('No') : $langs->trans('Yes')).'</strong><br>';
|
$info .= $langs->trans('MAIN_DISABLE_ALL_MAILS').': <strong>'.(empty($conf->global->MAIN_DISABLE_ALL_MAILS) ? $langs->trans('No') : $langs->trans('Yes')).'</strong><br>';
|
||||||
$info .= 'dolibarr_mailing_limit_sendbyweb = <strong>'.$dolibarr_mailing_limit_sendbyweb.'</strong><br>';
|
$info .= 'dolibarr_mailing_limit_sendbyweb = <strong>'.$dolibarr_mailing_limit_sendbyweb.'</strong><br>';
|
||||||
|
$info .= 'dolibarr_mailing_limit_sendbycli = <strong>'.$dolibarr_mailing_limit_sendbycli.'</strong><br>';
|
||||||
|
$info .= 'dolibarr_mailing_limit_sendbyday = <strong>'.$dolibarr_mailing_limit_sendbyday.'</strong><br>';
|
||||||
|
|
||||||
return $info;
|
return $info;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -179,6 +179,9 @@ if (empty($dolibarr_mailing_limit_sendbyweb)) {
|
|||||||
if (empty($dolibarr_mailing_limit_sendbycli)) {
|
if (empty($dolibarr_mailing_limit_sendbycli)) {
|
||||||
$dolibarr_mailing_limit_sendbycli = 0;
|
$dolibarr_mailing_limit_sendbycli = 0;
|
||||||
}
|
}
|
||||||
|
if (empty($dolibarr_mailing_limit_sendbyday)) {
|
||||||
|
$dolibarr_mailing_limit_sendbyday = 0;
|
||||||
|
}
|
||||||
if (empty($dolibarr_strict_mode)) {
|
if (empty($dolibarr_strict_mode)) {
|
||||||
$dolibarr_strict_mode = 0; // For debug in php strict mode
|
$dolibarr_strict_mode = 0; // For debug in php strict mode
|
||||||
}
|
}
|
||||||
|
|||||||
@ -510,6 +510,7 @@ if (!function_exists('ftp_connect')) {
|
|||||||
$nboflines = count($contents);
|
$nboflines = count($contents);
|
||||||
$rawlisthasfailed = false;
|
$rawlisthasfailed = false;
|
||||||
$i = 0;
|
$i = 0;
|
||||||
|
$nbofentries = 0;
|
||||||
while ($i < $nboflines && $i < 1000) {
|
while ($i < $nboflines && $i < 1000) {
|
||||||
$vals = preg_split('@ +@', utf8_encode($buff[$i]), 9);
|
$vals = preg_split('@ +@', utf8_encode($buff[$i]), 9);
|
||||||
//$vals=preg_split('@ +@','drwxr-xr-x 2 root root 4096 Aug 30 2008 backup_apollon1',9);
|
//$vals=preg_split('@ +@','drwxr-xr-x 2 root root 4096 Aug 30 2008 backup_apollon1',9);
|
||||||
@ -527,6 +528,7 @@ if (!function_exists('ftp_connect')) {
|
|||||||
|
|
||||||
// Is it a directory ?
|
// Is it a directory ?
|
||||||
$is_directory = 0;
|
$is_directory = 0;
|
||||||
|
$is_link = 0;
|
||||||
if ($file == '..') {
|
if ($file == '..') {
|
||||||
$is_directory = 1;
|
$is_directory = 1;
|
||||||
} elseif (!$rawlisthasfailed) {
|
} elseif (!$rawlisthasfailed) {
|
||||||
@ -695,6 +697,7 @@ function dol_ftp_connect($ftp_server, $ftp_port, $ftp_user, $ftp_password, $sect
|
|||||||
|
|
||||||
$ok = 1;
|
$ok = 1;
|
||||||
$conn_id = null;
|
$conn_id = null;
|
||||||
|
$mesg="";
|
||||||
|
|
||||||
if (!is_numeric($ftp_port)) {
|
if (!is_numeric($ftp_port)) {
|
||||||
$mesg = $langs->transnoentitiesnoconv("FailedToConnectToFTPServer", $ftp_server, $ftp_port);
|
$mesg = $langs->transnoentitiesnoconv("FailedToConnectToFTPServer", $ftp_server, $ftp_port);
|
||||||
|
|||||||
@ -80,8 +80,8 @@ if (!empty($useragent)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Check PHP version
|
// Check PHP version min
|
||||||
$arrayphpminversionerror = array(5, 5, 0);
|
$arrayphpminversionerror = array(5, 6, 0);
|
||||||
$arrayphpminversionwarning = array(5, 6, 0);
|
$arrayphpminversionwarning = array(5, 6, 0);
|
||||||
if (versioncompare(versionphparray(), $arrayphpminversionerror) < 0) { // Minimum to use (error if lower)
|
if (versioncompare(versionphparray(), $arrayphpminversionerror) < 0) { // Minimum to use (error if lower)
|
||||||
print '<img src="../theme/eldy/img/error.png" alt="Error" class="valignmiddle"> '.$langs->trans("ErrorPHPVersionTooLow", versiontostring($arrayphpminversionerror));
|
print '<img src="../theme/eldy/img/error.png" alt="Error" class="valignmiddle"> '.$langs->trans("ErrorPHPVersionTooLow", versiontostring($arrayphpminversionerror));
|
||||||
@ -97,6 +97,14 @@ if (empty($force_install_nophpinfo)) {
|
|||||||
}
|
}
|
||||||
print "<br>\n";
|
print "<br>\n";
|
||||||
|
|
||||||
|
// Check PHP version max
|
||||||
|
$arrayphpmaxversionwarning = array(8, 1, 0);
|
||||||
|
if (versioncompare(versionphparray(), $arrayphpmaxversionwarning) > 0 && versioncompare(versionphparray(), $arrayphpmaxversionwarning) < 3) { // Maximum to use (warning if higher)
|
||||||
|
print '<img src="../theme/eldy/img/error.png" alt="Error" class="valignmiddle"> '.$langs->trans("ErrorPHPVersionTooHigh", versiontostring($arrayphpmaxversionwarning));
|
||||||
|
$checksok = 1; // 0=error, 1=warning
|
||||||
|
print "<br>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Check PHP support for $_GET and $_POST
|
// Check PHP support for $_GET and $_POST
|
||||||
if (!isset($_GET["testget"]) && !isset($_POST["testpost"])) { // We must keep $_GET and $_POST here
|
if (!isset($_GET["testget"]) && !isset($_POST["testpost"])) { // We must keep $_GET and $_POST here
|
||||||
|
|||||||
@ -129,6 +129,10 @@ a.button.runupgrade {
|
|||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tr.title.tablesupport-title {
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
/* Force values for small screen 570 */
|
/* Force values for small screen 570 */
|
||||||
@media only screen and (max-width: 570px)
|
@media only screen and (max-width: 570px)
|
||||||
{
|
{
|
||||||
@ -464,7 +468,7 @@ table.login.tablesupport .title {
|
|||||||
}
|
}
|
||||||
|
|
||||||
table.tablesupport {
|
table.tablesupport {
|
||||||
min-height: 250px;
|
min-height: 300px;
|
||||||
border: 1px solid #E0E0E0;
|
border: 1px solid #E0E0E0;
|
||||||
background: #FFF;
|
background: #FFF;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -195,6 +195,10 @@ if (preg_match('/install\.lock/i', $_SERVER["SCRIPT_FILENAME"])) {
|
|||||||
$langs->setDefaultLang('auto');
|
$langs->setDefaultLang('auto');
|
||||||
}
|
}
|
||||||
$langs->load("install");
|
$langs->load("install");
|
||||||
|
|
||||||
|
header("X-Content-Type-Options: nosniff");
|
||||||
|
header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks)
|
||||||
|
|
||||||
print $langs->trans("YouTryInstallDisabledByDirLock");
|
print $langs->trans("YouTryInstallDisabledByDirLock");
|
||||||
if (!empty($dolibarr_main_url_root)) {
|
if (!empty($dolibarr_main_url_root)) {
|
||||||
print 'Click on following link, <a href="'.$dolibarr_main_url_root.'/admin/index.php?mainmenu=home&leftmenu=setup'.(GETPOSTISSET("login") ? '&username='.urlencode(GETPOST("login")) : '').'">';
|
print 'Click on following link, <a href="'.$dolibarr_main_url_root.'/admin/index.php?mainmenu=home&leftmenu=setup'.(GETPOSTISSET("login") ? '&username='.urlencode(GETPOST("login")) : '').'">';
|
||||||
@ -216,6 +220,10 @@ if (@file_exists($lockfile)) {
|
|||||||
$langs->setDefaultLang('auto');
|
$langs->setDefaultLang('auto');
|
||||||
}
|
}
|
||||||
$langs->load("install");
|
$langs->load("install");
|
||||||
|
|
||||||
|
header("X-Content-Type-Options: nosniff");
|
||||||
|
header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks)
|
||||||
|
|
||||||
print $langs->trans("YouTryInstallDisabledByFileLock");
|
print $langs->trans("YouTryInstallDisabledByFileLock");
|
||||||
if (!empty($dolibarr_main_url_root)) {
|
if (!empty($dolibarr_main_url_root)) {
|
||||||
print $langs->trans("ClickOnLinkOrRemoveManualy").'<br>';
|
print $langs->trans("ClickOnLinkOrRemoveManualy").'<br>';
|
||||||
@ -419,6 +427,7 @@ function pHeader($subtitle, $next, $action = 'set', $param = '', $forcejqueryurl
|
|||||||
// We force the content charset
|
// We force the content charset
|
||||||
header("Content-type: text/html; charset=".$conf->file->character_set_client);
|
header("Content-type: text/html; charset=".$conf->file->character_set_client);
|
||||||
header("X-Content-Type-Options: nosniff");
|
header("X-Content-Type-Options: nosniff");
|
||||||
|
header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks)
|
||||||
|
|
||||||
print '<!DOCTYPE HTML>'."\n";
|
print '<!DOCTYPE HTML>'."\n";
|
||||||
print '<html>'."\n";
|
print '<html>'."\n";
|
||||||
|
|||||||
@ -37,7 +37,7 @@ INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES
|
|||||||
INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'gifycat', 'Gificat', '{socialid}', '', 0);
|
INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'gifycat', 'Gificat', '{socialid}', '', 0);
|
||||||
INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'giphy', 'Giphy', '{socialid}', '', 0);
|
INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'giphy', 'Giphy', '{socialid}', '', 0);
|
||||||
INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'github', 'GitHub', 'https://www.github.com/{socialid}', '', 0);
|
INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'github', 'GitHub', 'https://www.github.com/{socialid}', '', 0);
|
||||||
INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'googleplus', 'GooglePlus', 'https://www.googleplus.com/{socialid}', 'fa-google-plus-g', 0);
|
INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'googleplus', 'GooglePlus', 'https://www.googleplus.com/{socialid}', 'fa-google-plus', 0);
|
||||||
INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'instagram', 'Instagram', 'https://www.instagram.com/{socialid}', 'fa-instagram', 1);
|
INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'instagram', 'Instagram', 'https://www.instagram.com/{socialid}', 'fa-instagram', 1);
|
||||||
INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'linkedin', 'LinkedIn', 'https://www.linkedin.com/{socialid}', 'fa-linkedin', 1);
|
INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'linkedin', 'LinkedIn', 'https://www.linkedin.com/{socialid}', 'fa-linkedin', 1);
|
||||||
INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'mastodon', 'Mastodon', '{socialid}', '', 0);
|
INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'mastodon', 'Mastodon', '{socialid}', '', 0);
|
||||||
|
|||||||
@ -16,6 +16,7 @@
|
|||||||
-- You should have received a copy of the GNU General Public License
|
-- You should have received a copy of the GNU General Public License
|
||||||
-- along with this program. If not, see <https://www.gnu.org/licenses/>.
|
-- along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
--
|
--
|
||||||
|
-- See also its child table llx_product_batch that contains details per lot
|
||||||
-- ============================================================================
|
-- ============================================================================
|
||||||
|
|
||||||
create table llx_product_stock
|
create table llx_product_stock
|
||||||
|
|||||||
@ -911,6 +911,8 @@ function write_conf_file($conffile)
|
|||||||
|
|
||||||
fputs($fp, '$dolibarr_mailing_limit_sendbyweb=\'0\';');
|
fputs($fp, '$dolibarr_mailing_limit_sendbyweb=\'0\';');
|
||||||
fputs($fp, "\n");
|
fputs($fp, "\n");
|
||||||
|
fputs($fp, '$dolibarr_mailing_limit_sendbycli=\'0\';');
|
||||||
|
fputs($fp, "\n");
|
||||||
|
|
||||||
// Write params to overwrites default lib path
|
// Write params to overwrites default lib path
|
||||||
fputs($fp, "\n");
|
fputs($fp, "\n");
|
||||||
|
|||||||
@ -2288,3 +2288,4 @@ DoesNotWorkWithAllThemes=Will not work with all themes
|
|||||||
NoName=No name
|
NoName=No name
|
||||||
ShowAdvancedOptions= Show advanced options
|
ShowAdvancedOptions= Show advanced options
|
||||||
HideAdvancedoptions= Hide advanced options
|
HideAdvancedoptions= Hide advanced options
|
||||||
|
CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is:
|
||||||
|
|||||||
@ -24,7 +24,8 @@ ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'.
|
|||||||
ErrorFailedToCreateDatabase=Failed to create database '%s'.
|
ErrorFailedToCreateDatabase=Failed to create database '%s'.
|
||||||
ErrorFailedToConnectToDatabase=Failed to connect to database '%s'.
|
ErrorFailedToConnectToDatabase=Failed to connect to database '%s'.
|
||||||
ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required.
|
ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required.
|
||||||
ErrorPHPVersionTooLow=PHP version too old. Version %s is required.
|
ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required.
|
||||||
|
ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required.
|
||||||
ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found.
|
ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found.
|
||||||
ErrorDatabaseAlreadyExists=Database '%s' already exists.
|
ErrorDatabaseAlreadyExists=Database '%s' already exists.
|
||||||
ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions
|
ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions
|
||||||
|
|||||||
@ -178,3 +178,4 @@ IsAnAnswer=Is an answer of an initial email
|
|||||||
RecordCreatedByEmailCollector=Record created by the Email Collector %s from email %s
|
RecordCreatedByEmailCollector=Record created by the Email Collector %s from email %s
|
||||||
DefaultBlacklistMailingStatus=Default value for field '%s' when creating a new contact
|
DefaultBlacklistMailingStatus=Default value for field '%s' when creating a new contact
|
||||||
DefaultStatusEmptyMandatory=Empty but mandatory
|
DefaultStatusEmptyMandatory=Empty but mandatory
|
||||||
|
WarningLimitSendByDay=WARNING: The setup or contract of your instance limits your number of emails per day to <b>%s</b>. Trying to send more may result in having your instance slow down or suspended. Please contact your support if you need a higher quota.
|
||||||
|
|||||||
@ -155,3 +155,4 @@ LinkToParentMenu=Parent menu (fk_xxxxmenu)
|
|||||||
ListOfTabsEntries=List of tab entries
|
ListOfTabsEntries=List of tab entries
|
||||||
TabsDefDesc=Define here the tabs provided by your module
|
TabsDefDesc=Define here the tabs provided by your module
|
||||||
TabsDefDescTooltip=The tabs provided by your module/application are defined into the array <strong>$this->tabs</strong> into the module descriptor file. You can edit manually this file or use the embedded editor.
|
TabsDefDescTooltip=The tabs provided by your module/application are defined into the array <strong>$this->tabs</strong> into the module descriptor file. You can edit manually this file or use the embedded editor.
|
||||||
|
BadValueForType=Bad value for type %s
|
||||||
@ -212,7 +212,7 @@ print '<input type="hidden" name="action" value="remises">';
|
|||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>'.$langs->trans("MARGIN_METHODE_FOR_DISCOUNT").'</td>';
|
print '<td>'.$langs->trans("MARGIN_METHODE_FOR_DISCOUNT").'</td>';
|
||||||
print '<td class="left">';
|
print '<td class="left">';
|
||||||
print Form::selectarray('MARGIN_METHODE_FOR_DISCOUNT', $methods, $conf->global->MARGIN_METHODE_FOR_DISCOUNT);
|
print Form::selectarray('MARGIN_METHODE_FOR_DISCOUNT', $methods, getDolGlobalString('MARGIN_METHODE_FOR_DISCOUNT'));
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="submit" class="button button-edit" value="'.$langs->trans("Modify").'">';
|
print '<input type="submit" class="button button-edit" value="'.$langs->trans("Modify").'">';
|
||||||
@ -230,7 +230,7 @@ print '<td>'.$langs->trans("AgentContactType").'</td>';
|
|||||||
print '<td class="left">';
|
print '<td class="left">';
|
||||||
$formcompany = new FormCompany($db);
|
$formcompany = new FormCompany($db);
|
||||||
$facture = new Facture($db);
|
$facture = new Facture($db);
|
||||||
print $formcompany->selectTypeContact($facture, $conf->global->AGENT_CONTACT_TYPE, "AGENT_CONTACT_TYPE", "internal", "code", 1, "maxwidth250");
|
print $formcompany->selectTypeContact($facture, getDolGlobalString('AGENT_CONTACT_TYPE'), "AGENT_CONTACT_TYPE", "internal", "code", 1, "maxwidth250");
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="submit" class="button button-edit" value="'.$langs->trans("Modify").'">';
|
print '<input type="submit" class="button button-edit" value="'.$langs->trans("Modify").'">';
|
||||||
|
|||||||
@ -75,8 +75,9 @@ if (defined('TEST_DB_FORCE_TYPE')) {
|
|||||||
|
|
||||||
// Set properties specific to conf file
|
// Set properties specific to conf file
|
||||||
$conf->file->main_limit_users = $dolibarr_main_limit_users;
|
$conf->file->main_limit_users = $dolibarr_main_limit_users;
|
||||||
$conf->file->mailing_limit_sendbyweb = $dolibarr_mailing_limit_sendbyweb;
|
$conf->file->mailing_limit_sendbyweb = empty($dolibarr_mailing_limit_sendbyweb) ? 0 : $dolibarr_mailing_limit_sendbyweb;
|
||||||
$conf->file->mailing_limit_sendbycli = $dolibarr_mailing_limit_sendbycli;
|
$conf->file->mailing_limit_sendbycli = empty($dolibarr_mailing_limit_sendbycli) ? 0 : $dolibarr_mailing_limit_sendbycli;
|
||||||
|
$conf->file->mailing_limit_sendbyday = empty($dolibarr_mailing_limit_sendbyday) ? 0 : $dolibarr_mailing_limit_sendbyday;
|
||||||
$conf->file->main_authentication = empty($dolibarr_main_authentication) ? '' : $dolibarr_main_authentication; // Identification mode
|
$conf->file->main_authentication = empty($dolibarr_main_authentication) ? '' : $dolibarr_main_authentication; // Identification mode
|
||||||
$conf->file->main_force_https = empty($dolibarr_main_force_https) ? '' : $dolibarr_main_force_https; // Force https
|
$conf->file->main_force_https = empty($dolibarr_main_force_https) ? '' : $dolibarr_main_force_https; // Force https
|
||||||
$conf->file->strict_mode = empty($dolibarr_strict_mode) ? '' : $dolibarr_strict_mode; // Force php strict mode (for debug)
|
$conf->file->strict_mode = empty($dolibarr_strict_mode) ? '' : $dolibarr_strict_mode; // Force php strict mode (for debug)
|
||||||
|
|||||||
@ -111,7 +111,7 @@ print '<br>';
|
|||||||
print '<table class="noborder centpercent">';
|
print '<table class="noborder centpercent">';
|
||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td style="width: 30%">'.$langs->trans("Key").'</td>';
|
print '<td>'.$langs->trans("Parameter").'</td>';
|
||||||
print '<td>'.$langs->trans("Value").'</td>';
|
print '<td>'.$langs->trans("Value").'</td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|
||||||
@ -134,35 +134,35 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2) {
|
|||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td class="tdtop">'.$langs->trans("UseSpecificEditorName").'</td>';
|
print '<td>'.$langs->trans("UseSpecificEditorName").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="text" name="MODULEBUILDER_SPECIFIC_EDITOR_NAME" value="'.$conf->global->MODULEBUILDER_SPECIFIC_EDITOR_NAME.'">';
|
print '<input type="text" name="MODULEBUILDER_SPECIFIC_EDITOR_NAME" value="'.$conf->global->MODULEBUILDER_SPECIFIC_EDITOR_NAME.'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td class="tdtop">'.$langs->trans("UseSpecificEditorURL").'</td>';
|
print '<td>'.$langs->trans("UseSpecificEditorURL").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="text" name="MODULEBUILDER_SPECIFIC_EDITOR_URL" value="'.$conf->global->MODULEBUILDER_SPECIFIC_EDITOR_URL.'">';
|
print '<input type="text" name="MODULEBUILDER_SPECIFIC_EDITOR_URL" value="'.$conf->global->MODULEBUILDER_SPECIFIC_EDITOR_URL.'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td class="tdtop">'.$langs->trans("UseSpecificFamily").'</td>';
|
print '<td>'.$langs->trans("UseSpecificFamily").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="text" name="MODULEBUILDER_SPECIFIC_FAMILY" value="'.$conf->global->MODULEBUILDER_SPECIFIC_FAMILY.'">';
|
print '<input type="text" name="MODULEBUILDER_SPECIFIC_FAMILY" value="'.$conf->global->MODULEBUILDER_SPECIFIC_FAMILY.'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td class="tdtop">'.$langs->trans("UseSpecificAuthor").'</td>';
|
print '<td>'.$langs->trans("UseSpecificAuthor").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="text" name="MODULEBUILDER_SPECIFIC_AUTHOR" value="'.$conf->global->MODULEBUILDER_SPECIFIC_AUTHOR.'">';
|
print '<input type="text" name="MODULEBUILDER_SPECIFIC_AUTHOR" value="'.$conf->global->MODULEBUILDER_SPECIFIC_AUTHOR.'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td class="tdtop">'.$langs->trans("UseSpecificVersion").'</td>';
|
print '<td>'.$langs->trans("UseSpecificVersion").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="text" name="MODULEBUILDER_SPECIFIC_VERSION" value="'.$conf->global->MODULEBUILDER_SPECIFIC_VERSION.'">';
|
print '<input type="text" name="MODULEBUILDER_SPECIFIC_VERSION" value="'.$conf->global->MODULEBUILDER_SPECIFIC_VERSION.'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -170,14 +170,14 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td class="tdtop">'.$langs->trans("UseSpecificReadme").'</td>';
|
print '<td>'.$langs->trans("UseSpecificReadme").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<textarea class="centpercent" rows="20" name="MODULEBUILDER_SPECIFIC_README">'.$conf->global->MODULEBUILDER_SPECIFIC_README.'</textarea>';
|
print '<textarea class="centpercent" rows="20" name="MODULEBUILDER_SPECIFIC_README">'.$conf->global->MODULEBUILDER_SPECIFIC_README.'</textarea>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td class="tdtop">'.$langs->trans("AsciiToHtmlConverter").'</td>';
|
print '<td>'.$langs->trans("AsciiToHtmlConverter").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="text" name="MODULEBUILDER_ASCIIDOCTOR" value="'.$conf->global->MODULEBUILDER_ASCIIDOCTOR.'">';
|
print '<input type="text" name="MODULEBUILDER_ASCIIDOCTOR" value="'.$conf->global->MODULEBUILDER_ASCIIDOCTOR.'">';
|
||||||
print ' '.$langs->trans("Example").': asciidoc, asciidoctor';
|
print ' '.$langs->trans("Example").': asciidoc, asciidoctor';
|
||||||
@ -185,7 +185,7 @@ print '</td>';
|
|||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td class="tdtop">'.$langs->trans("AsciiToPdfConverter").'</td>';
|
print '<td>'.$langs->trans("AsciiToPdfConverter").'</td>';
|
||||||
print '<td>';
|
print '<td>';
|
||||||
print '<input type="text" name="MODULEBUILDER_ASCIIDOCTORPDF" value="'.$conf->global->MODULEBUILDER_ASCIIDOCTORPDF.'">';
|
print '<input type="text" name="MODULEBUILDER_ASCIIDOCTORPDF" value="'.$conf->global->MODULEBUILDER_ASCIIDOCTORPDF.'">';
|
||||||
print ' '.$langs->trans("Example").': asciidoctor-pdf';
|
print ' '.$langs->trans("Example").': asciidoctor-pdf';
|
||||||
|
|||||||
@ -343,10 +343,10 @@ if ($dirins && $action == 'initmodule' && $modulename) {
|
|||||||
'---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : ''),
|
'---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : ''),
|
||||||
'Editor name'=>$editorname,
|
'Editor name'=>$editorname,
|
||||||
'https://www.example.com'=>$editorurl,
|
'https://www.example.com'=>$editorurl,
|
||||||
'1.0'=>$version,
|
'$this->version = \'1.0\''=>'$this->version = \''.$version.'\'',
|
||||||
'idpicto'=>(empty($picto)) ? 'generic' : $picto,
|
'$this->picto = \'generic\';'=>(empty($picto)) ? '$this->picto = \'generic\'' : '$this->picto = \''.$picto.'\';',
|
||||||
"modulefamily" =>$family,
|
"modulefamily" =>$family,
|
||||||
500000=>$idmodule
|
'500000'=>$idmodule
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!empty($conf->global->MODULEBUILDER_SPECIFIC_EDITOR_NAME)) {
|
if (!empty($conf->global->MODULEBUILDER_SPECIFIC_EDITOR_NAME)) {
|
||||||
@ -382,7 +382,6 @@ if ($dirins && $action == 'initmodule' && $modulename) {
|
|||||||
if (!$error) {
|
if (!$error) {
|
||||||
setEventMessages('ModuleInitialized', null);
|
setEventMessages('ModuleInitialized', null);
|
||||||
$module = $modulename;
|
$module = $modulename;
|
||||||
$modulename = '';
|
|
||||||
|
|
||||||
clearstatcache(true);
|
clearstatcache(true);
|
||||||
if (function_exists('opcache_invalidate')) {
|
if (function_exists('opcache_invalidate')) {
|
||||||
@ -1519,9 +1518,10 @@ if ($dirins && $action == 'addproperty' && empty($cancel) && !empty($module) &&
|
|||||||
$error++;
|
$error++;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
$moduletype = $listofmodules[strtolower($module)]['moduletype'];
|
||||||
|
|
||||||
// Edit the class file to write properties
|
// Edit the class file to write properties
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
$moduletype = 'external';
|
|
||||||
$object = rebuildObjectClass($destdir, $module, $objectname, $newmask, $srcdir, $addfieldentry, $moduletype);
|
$object = rebuildObjectClass($destdir, $module, $objectname, $newmask, $srcdir, $addfieldentry, $moduletype);
|
||||||
|
|
||||||
if (is_numeric($object) && $object <= 0) {
|
if (is_numeric($object) && $object <= 0) {
|
||||||
@ -1531,21 +1531,20 @@ if ($dirins && $action == 'addproperty' && empty($cancel) && !empty($module) &&
|
|||||||
|
|
||||||
// Edit sql with new properties
|
// Edit sql with new properties
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
$moduletype = 'external';
|
|
||||||
|
|
||||||
$result = rebuildObjectSql($destdir, $module, $objectname, $newmask, $srcdir, $object, $moduletype);
|
$result = rebuildObjectSql($destdir, $module, $objectname, $newmask, $srcdir, $object, $moduletype);
|
||||||
|
|
||||||
if ($result <= 0) {
|
if ($result <= 0) {
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
|
clearstatcache(true);
|
||||||
|
|
||||||
setEventMessages($langs->trans('FilesForObjectUpdated', $objectname), null);
|
setEventMessages($langs->trans('FilesForObjectUpdated', $objectname), null);
|
||||||
|
|
||||||
setEventMessages($langs->trans('WarningDatabaseIsNotUpdated'), null);
|
setEventMessages($langs->trans('WarningDatabaseIsNotUpdated'), null);
|
||||||
|
|
||||||
clearstatcache(true);
|
|
||||||
|
|
||||||
// Make a redirect to reload all data
|
// Make a redirect to reload all data
|
||||||
header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=objects&module='.$module.($forceddirread ? '@'.$dirread : '').'&tabobj='.$objectname.'&nocache='.time());
|
header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=objects&module='.$module.($forceddirread ? '@'.$dirread : '').'&tabobj='.$objectname.'&nocache='.time());
|
||||||
|
|
||||||
@ -2115,8 +2114,8 @@ if ($module == 'initmodule') {
|
|||||||
print '<option value="other" selected="">'.$langs->trans("ModuleFamilyOther").'</option>';
|
print '<option value="other" selected="">'.$langs->trans("ModuleFamilyOther").'</option>';
|
||||||
print '</select><br>';
|
print '</select><br>';
|
||||||
print ajax_combobox("family");
|
print ajax_combobox("family");
|
||||||
print '<span class="opacitymedium">'.$langs->trans("Picto").'</span> <input type="text" name="idpicto" value="generic" placeholder="'.dol_escape_htmltag($langs->trans("Picto")).'">';
|
print '<span class="opacitymedium">'.$langs->trans("Picto").'</span> <input type="text" name="idpicto" value="fa-generic" placeholder="'.dol_escape_htmltag($langs->trans("Picto")).'">';
|
||||||
print $form->textwithpicto('', $langs->trans("Example").': generic, globe, ... any font awesome code');
|
print $form->textwithpicto('', $langs->trans("Example").': fa-generic, fa-globe, ... any font awesome code.<br>Advanced syntax is fa-fakey[_faprefix[_facolor[_fasize]]]');
|
||||||
print '<br>';
|
print '<br>';
|
||||||
print '<span class="opacitymedium">'.$langs->trans("Description").'</span> <input type="text" name="description" value="" class="minwidth500"><br>';
|
print '<span class="opacitymedium">'.$langs->trans("Description").'</span> <input type="text" name="description" value="" class="minwidth500"><br>';
|
||||||
|
|
||||||
@ -2269,7 +2268,7 @@ if ($module == 'initmodule') {
|
|||||||
print '</table>';
|
print '</table>';
|
||||||
print '<br>';
|
print '<br>';
|
||||||
|
|
||||||
print load_fiche_titre($langs->trans("DescriptorFile"), '', '');
|
print load_fiche_titre($form->textwithpicto($langs->trans("DescriptorFile"), $pathtofile), '', '');
|
||||||
|
|
||||||
if (!empty($moduleobj)) {
|
if (!empty($moduleobj)) {
|
||||||
print '<div class="underbanner clearboth"></div>';
|
print '<div class="underbanner clearboth"></div>';
|
||||||
@ -2347,7 +2346,7 @@ if ($module == 'initmodule') {
|
|||||||
print '<br><br>';
|
print '<br><br>';
|
||||||
|
|
||||||
// Readme file
|
// Readme file
|
||||||
print load_fiche_titre($langs->trans("ReadmeFile"), '', '');
|
print load_fiche_titre($form->textwithpicto($langs->trans("ReadmeFile"), $pathtofilereadme), '', '');
|
||||||
|
|
||||||
print '<!-- readme file -->';
|
print '<!-- readme file -->';
|
||||||
if (dol_is_file($dirread.'/'.$pathtofilereadme)) {
|
if (dol_is_file($dirread.'/'.$pathtofilereadme)) {
|
||||||
@ -2359,7 +2358,7 @@ if ($module == 'initmodule') {
|
|||||||
print '<br><br>';
|
print '<br><br>';
|
||||||
|
|
||||||
// ChangeLog
|
// ChangeLog
|
||||||
print load_fiche_titre($langs->trans("ChangeLog"), '', '');
|
print load_fiche_titre($form->textwithpicto($langs->trans("ChangeLog"), $pathtochangelog), '', '');
|
||||||
|
|
||||||
print '<!-- changelog file -->';
|
print '<!-- changelog file -->';
|
||||||
if (dol_is_file($dirread.'/'.$pathtochangelog)) {
|
if (dol_is_file($dirread.'/'.$pathtochangelog)) {
|
||||||
@ -2608,10 +2607,63 @@ if ($module == 'initmodule') {
|
|||||||
$pathtonote = strtolower($module).'/'.strtolower($tabobj).'_note.php';
|
$pathtonote = strtolower($module).'/'.strtolower($tabobj).'_note.php';
|
||||||
$pathtocontact = strtolower($module).'/'.strtolower($tabobj).'_contact.php';
|
$pathtocontact = strtolower($module).'/'.strtolower($tabobj).'_contact.php';
|
||||||
$pathtophpunit = strtolower($module).'/test/phpunit/'.strtolower($tabobj).'Test.php';
|
$pathtophpunit = strtolower($module).'/test/phpunit/'.strtolower($tabobj).'Test.php';
|
||||||
$pathtosql = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'.sql';
|
|
||||||
$pathtosqlextra = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'_extrafields.sql';
|
// Try to load object class file
|
||||||
$pathtosqlkey = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'.key.sql';
|
clearstatcache(true);
|
||||||
$pathtosqlextrakey = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'_extrafields.key.sql';
|
if (function_exists('opcache_invalidate')) {
|
||||||
|
opcache_invalidate($dirread.'/'.$pathtoclass, true); // remove the include cache hell !
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($forceddirread) && empty($dirread)) {
|
||||||
|
$result = dol_include_once($pathtoclass);
|
||||||
|
$stringofinclude = "dol_include_once(".$pathtoclass.")";
|
||||||
|
} else {
|
||||||
|
$result = @include_once $dirread.'/'.$pathtoclass;
|
||||||
|
$stringofinclude = "@include_once ".$dirread.'/'.$pathtoclass;
|
||||||
|
}
|
||||||
|
if (class_exists($tabobj)) {
|
||||||
|
try {
|
||||||
|
$tmpobjet = @new $tabobj($db);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
dol_syslog('Failed to load Constructor of class: '.$e->getMessage(), LOG_WARNING);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print '<span class="warning">'.$langs->trans('Failed to find the class '.$tabobj.' despite the '.$stringofinclude).'</span><br><br>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Define path for sql file
|
||||||
|
$pathtosql = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'-'.strtolower($module).'.sql';
|
||||||
|
$result = dol_buildpath($pathtosql);
|
||||||
|
if (! dol_is_file($result)) {
|
||||||
|
$pathtosql = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'.sql';
|
||||||
|
$result = dol_buildpath($pathtosql);
|
||||||
|
if (! dol_is_file($result)) {
|
||||||
|
$pathtosql = 'install/mysql/tables/llx_'.strtolower($module).'_'.strtolower($tabobj).'-'.strtolower($module).'.sql';
|
||||||
|
$result = dol_buildpath($pathtosql);
|
||||||
|
if (! dol_is_file($result)) {
|
||||||
|
$pathtosql = 'install/mysql/tables/llx_'.strtolower($module).'-'.strtolower($module).'.sql';
|
||||||
|
$result = dol_buildpath($pathtosql);
|
||||||
|
if (! dol_is_file($result)) {
|
||||||
|
$pathtosql = 'install/mysql/tables/llx_'.strtolower($module).'.sql';
|
||||||
|
$pathtosqlextra = 'install/mysql/tables/llx_'.strtolower($module).'_extrafields.sql';
|
||||||
|
$result = dol_buildpath($pathtosql);
|
||||||
|
} else {
|
||||||
|
$pathtosqlextra = 'install/mysql/tables/llx_'.strtolower($module).'_extrafields-'.strtolower($module).'.sql';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$pathtosqlextra = 'install/mysql/tables/llx_'.strtolower($module).'_'.strtolower($tabobj).'_extrafields-'.strtolower($module).'.sql';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$pathtosqlextra = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'_extrafields.sql';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$pathtosqlextra = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'_extrafields-'.strtolower($module).'.sql';
|
||||||
|
}
|
||||||
|
$pathtosqlroot = preg_replace('/\/llx_.*$/', '', $pathtosql);
|
||||||
|
|
||||||
|
$pathtosqlkey = preg_replace('/\.sql$/', '.key.sql', $pathtosql);
|
||||||
|
$pathtosqlextrakey = preg_replace('/\.sql$/', '.key.sql', $pathtosqlextra);
|
||||||
|
|
||||||
$pathtolib = strtolower($module).'/lib/'.strtolower($module).'.lib.php';
|
$pathtolib = strtolower($module).'/lib/'.strtolower($module).'.lib.php';
|
||||||
$pathtoobjlib = strtolower($module).'/lib/'.strtolower($module).'_'.strtolower($tabobj).'.lib.php';
|
$pathtoobjlib = strtolower($module).'/lib/'.strtolower($module).'_'.strtolower($tabobj).'.lib.php';
|
||||||
$pathtopicto = strtolower($module).'/img/object_'.strtolower($tabobj).'.png';
|
$pathtopicto = strtolower($module).'/img/object_'.strtolower($tabobj).'.png';
|
||||||
@ -2643,6 +2695,10 @@ if ($module == 'initmodule') {
|
|||||||
$urloflist = dol_buildpath('/'.$pathtolist, 1);
|
$urloflist = dol_buildpath('/'.$pathtolist, 1);
|
||||||
$urlofcard = dol_buildpath('/'.$pathtocard, 1);
|
$urlofcard = dol_buildpath('/'.$pathtocard, 1);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
print '<div class="fichehalfleft smallxxx">';
|
print '<div class="fichehalfleft smallxxx">';
|
||||||
// Main DAO class file
|
// Main DAO class file
|
||||||
print '<span class="fa fa-file-o"></span> '.$langs->trans("ClassFile").' : <strong>'.(dol_is_file($realpathtoclass) ? '' : '<strike>').preg_replace('/^'.strtolower($module).'\//', '', $pathtoclass).(dol_is_file($realpathtoclass) ? '' : '</strike>').'</strong>';
|
print '<span class="fa fa-file-o"></span> '.$langs->trans("ClassFile").' : <strong>'.(dol_is_file($realpathtoclass) ? '' : '<strike>').preg_replace('/^'.strtolower($module).'\//', '', $pathtoclass).(dol_is_file($realpathtoclass) ? '' : '</strike>').'</strong>';
|
||||||
@ -2773,24 +2829,6 @@ if ($module == 'initmodule') {
|
|||||||
|
|
||||||
print '<br><br><br>';
|
print '<br><br><br>';
|
||||||
|
|
||||||
clearstatcache(true);
|
|
||||||
if (function_exists('opcache_invalidate')) {
|
|
||||||
opcache_invalidate($dirread.'/'.$pathtoclass, true); // remove the include cache hell !
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($forceddirread) && empty($dirread)) {
|
|
||||||
$result = dol_include_once($pathtoclass);
|
|
||||||
} else {
|
|
||||||
$result = @include_once $dirread.'/'.$pathtoclass;
|
|
||||||
}
|
|
||||||
if (class_exists($tabobj)) {
|
|
||||||
try {
|
|
||||||
$tmpobjet = @new $tabobj($db);
|
|
||||||
} catch (Exception $e) {
|
|
||||||
dol_syslog('Failed to load Constructor of class: '.$e->getMessage(), LOG_WARNING);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty($tmpobjet)) {
|
if (!empty($tmpobjet)) {
|
||||||
$reflector = new ReflectionClass($tabobj);
|
$reflector = new ReflectionClass($tabobj);
|
||||||
$reflectorproperties = $reflector->getProperties(); // Can also use get_object_vars
|
$reflectorproperties = $reflector->getProperties(); // Can also use get_object_vars
|
||||||
@ -2802,6 +2840,7 @@ if ($module == 'initmodule') {
|
|||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
print '<input type="hidden" name="action" value="addproperty">';
|
print '<input type="hidden" name="action" value="addproperty">';
|
||||||
print '<input type="hidden" name="tab" value="objects">';
|
print '<input type="hidden" name="tab" value="objects">';
|
||||||
|
print '<input type="hidden" name="page_y" value="">';
|
||||||
print '<input type="hidden" name="module" value="'.dol_escape_htmltag($module.($forceddirread ? '@'.$dirread : '')).'">';
|
print '<input type="hidden" name="module" value="'.dol_escape_htmltag($module.($forceddirread ? '@'.$dirread : '')).'">';
|
||||||
print '<input type="hidden" name="tabobj" value="'.dol_escape_htmltag($tabobj).'">';
|
print '<input type="hidden" name="tabobj" value="'.dol_escape_htmltag($tabobj).'">';
|
||||||
|
|
||||||
@ -2990,8 +3029,8 @@ if ($module == 'initmodule') {
|
|||||||
print '<input class="maxwidth100" name="propcomment" value="'.dol_escape_htmltag($propcomment).'">';
|
print '<input class="maxwidth100" name="propcomment" value="'.dol_escape_htmltag($propcomment).'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '<td class="center tdstickyright tdstickyghostwhite">';
|
print '<td class="center tdstickyright tdstickyghostwhite">';
|
||||||
print '<input class="button smallpaddingimp" type="submit" name="edit" value="'.$langs->trans("Save").'">';
|
print '<input class="reposition button smallpaddingimp" type="submit" name="edit" value="'.$langs->trans("Save").'">';
|
||||||
print '<input class="button button-cancel smallpaddingimp" type="submit" name="cancel" value="'.$langs->trans("Cancel").'">';
|
print '<input class="reposition button button-cancel smallpaddingimp" type="submit" name="cancel" value="'.$langs->trans("Cancel").'">';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
} else {
|
} else {
|
||||||
print '<td class="tdoverflowmax200">';
|
print '<td class="tdoverflowmax200">';
|
||||||
@ -3123,7 +3162,7 @@ if ($module == 'initmodule') {
|
|||||||
|
|
||||||
print '</form>';
|
print '</form>';
|
||||||
} else {
|
} else {
|
||||||
print '<tr><td><span class="warning">'.$langs->trans('Failed to init the object with the new.').'</warning></td></tr>';
|
print '<span class="warning">'.$langs->trans('Failed to init the object with the new '.$tabobj.'($db)').'</warning>';
|
||||||
}
|
}
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
print $e->getMessage();
|
print $e->getMessage();
|
||||||
|
|||||||
@ -44,6 +44,7 @@ MyModuleAboutPage = MyModule about page
|
|||||||
#
|
#
|
||||||
# Sample page
|
# Sample page
|
||||||
#
|
#
|
||||||
|
MyModuleArea = Home MyModule
|
||||||
MyPageName = My page name
|
MyPageName = My page name
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|||||||
394
htdocs/partnership/class/api_partnership.class.php
Normal file
394
htdocs/partnership/class/api_partnership.class.php
Normal file
@ -0,0 +1,394 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||||
|
* Copyright (C) 2022 Alice Adminson <aadminson@example.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
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Luracast\Restler\RestException;
|
||||||
|
|
||||||
|
dol_include_once('/partnership/class/partnership.class.php');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file partnership/class/api_partnership.class.php
|
||||||
|
* \ingroup partnership
|
||||||
|
* \brief File for API management of partnership.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* API class for partnership partnership
|
||||||
|
*
|
||||||
|
* @access protected
|
||||||
|
* @class DolibarrApiAccess {@requires user,external}
|
||||||
|
*/
|
||||||
|
class PartnershipApi extends DolibarrApi
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var Partnership $partnership {@type Partnership}
|
||||||
|
*/
|
||||||
|
public $partnership;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @url GET /
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
$this->db = $db;
|
||||||
|
$this->partnership = new Partnership($this->db);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get properties of a partnership object
|
||||||
|
*
|
||||||
|
* Return an array with partnership informations
|
||||||
|
*
|
||||||
|
* @param int $id ID of partnership
|
||||||
|
* @return array|mixed data without useless information
|
||||||
|
*
|
||||||
|
* @url GET partnerships/{id}
|
||||||
|
*
|
||||||
|
* @throws RestException 401 Not allowed
|
||||||
|
* @throws RestException 404 Not found
|
||||||
|
*/
|
||||||
|
public function get($id)
|
||||||
|
{
|
||||||
|
if (!DolibarrApiAccess::$user->rights->partnership->read) {
|
||||||
|
throw new RestException(401);
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $this->partnership->fetch($id);
|
||||||
|
if (!$result) {
|
||||||
|
throw new RestException(404, 'Partnership not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!DolibarrApi::_checkAccessToResource('partnership', $this->partnership->id, 'partnership')) {
|
||||||
|
throw new RestException(401, 'Access to instance id='.$this->partnership->id.' of object not allowed for login '.DolibarrApiAccess::$user->login);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->_cleanObjectDatas($this->partnership);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List partnerships
|
||||||
|
*
|
||||||
|
* Get a list of partnerships
|
||||||
|
*
|
||||||
|
* @param string $sortfield Sort field
|
||||||
|
* @param string $sortorder Sort order
|
||||||
|
* @param int $limit Limit for list
|
||||||
|
* @param int $page Page number
|
||||||
|
* @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')"
|
||||||
|
* @return array Array of order objects
|
||||||
|
*
|
||||||
|
* @throws RestException
|
||||||
|
*
|
||||||
|
* @url GET /partnerships/
|
||||||
|
*/
|
||||||
|
public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $sqlfilters = '')
|
||||||
|
{
|
||||||
|
global $db, $conf;
|
||||||
|
|
||||||
|
$obj_ret = array();
|
||||||
|
$tmpobject = new Partnership($this->db);
|
||||||
|
|
||||||
|
if (!DolibarrApiAccess::$user->rights->partnership->read) {
|
||||||
|
throw new RestException(401);
|
||||||
|
}
|
||||||
|
|
||||||
|
$socid = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : '';
|
||||||
|
|
||||||
|
$restrictonsocid = 0; // Set to 1 if there is a field socid in table of object
|
||||||
|
|
||||||
|
// If the internal user must only see his customers, force searching by him
|
||||||
|
$search_sale = 0;
|
||||||
|
if ($restrictonsocid && !DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) {
|
||||||
|
$search_sale = DolibarrApiAccess::$user->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql = "SELECT t.rowid";
|
||||||
|
if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) {
|
||||||
|
$sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects)
|
||||||
|
}
|
||||||
|
$sql .= " FROM ".MAIN_DB_PREFIX.$tmpobject->table_element." as t";
|
||||||
|
|
||||||
|
if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) {
|
||||||
|
$sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale
|
||||||
|
}
|
||||||
|
$sql .= " WHERE 1 = 1";
|
||||||
|
|
||||||
|
// Example of use $mode
|
||||||
|
//if ($mode == 1) $sql.= " AND s.client IN (1, 3)";
|
||||||
|
//if ($mode == 2) $sql.= " AND s.client IN (2, 3)";
|
||||||
|
|
||||||
|
if ($tmpobject->ismultientitymanaged) {
|
||||||
|
$sql .= ' AND t.entity IN ('.getEntity($tmpobject->element).')';
|
||||||
|
}
|
||||||
|
if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) {
|
||||||
|
$sql .= " AND t.fk_soc = sc.fk_soc";
|
||||||
|
}
|
||||||
|
if ($restrictonsocid && $socid) {
|
||||||
|
$sql .= " AND t.fk_soc = ".((int) $socid);
|
||||||
|
}
|
||||||
|
if ($restrictonsocid && $search_sale > 0) {
|
||||||
|
$sql .= " AND t.rowid = sc.fk_soc"; // Join for the needed table to filter by sale
|
||||||
|
}
|
||||||
|
// Insert sale filter
|
||||||
|
if ($restrictonsocid && $search_sale > 0) {
|
||||||
|
$sql .= " AND sc.fk_user = ".((int) $search_sale);
|
||||||
|
}
|
||||||
|
if ($sqlfilters) {
|
||||||
|
$errormessage = '';
|
||||||
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
|
}
|
||||||
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
}
|
||||||
|
|
||||||
|
$sql .= $this->db->order($sortfield, $sortorder);
|
||||||
|
if ($limit) {
|
||||||
|
if ($page < 0) {
|
||||||
|
$page = 0;
|
||||||
|
}
|
||||||
|
$offset = $limit * $page;
|
||||||
|
|
||||||
|
$sql .= $this->db->plimit($limit + 1, $offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $this->db->query($sql);
|
||||||
|
$i = 0;
|
||||||
|
if ($result) {
|
||||||
|
$num = $this->db->num_rows($result);
|
||||||
|
while ($i < $num) {
|
||||||
|
$obj = $this->db->fetch_object($result);
|
||||||
|
$tmp_object = new Partnership($this->db);
|
||||||
|
if ($tmp_object->fetch($obj->rowid)) {
|
||||||
|
$obj_ret[] = $this->_cleanObjectDatas($tmp_object);
|
||||||
|
}
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new RestException(503, 'Error when retrieving partnership list: '.$this->db->lasterror());
|
||||||
|
}
|
||||||
|
if (!count($obj_ret)) {
|
||||||
|
throw new RestException(404, 'No partnership found');
|
||||||
|
}
|
||||||
|
return $obj_ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create partnership object
|
||||||
|
*
|
||||||
|
* @param array $request_data Request datas
|
||||||
|
* @return int ID of partnership
|
||||||
|
*
|
||||||
|
* @throws RestException
|
||||||
|
*
|
||||||
|
* @url POST partnerships/
|
||||||
|
*/
|
||||||
|
public function post($request_data = null)
|
||||||
|
{
|
||||||
|
if (!DolibarrApiAccess::$user->rights->partnership->write) {
|
||||||
|
throw new RestException(401);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check mandatory fields
|
||||||
|
$result = $this->_validate($request_data);
|
||||||
|
|
||||||
|
foreach ($request_data as $field => $value) {
|
||||||
|
$this->partnership->$field = $this->_checkValForAPI($field, $value, $this->partnership);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clean data
|
||||||
|
// $this->partnership->abc = sanitizeVal($this->partnership->abc, 'alphanohtml');
|
||||||
|
|
||||||
|
if ($this->partnership->create(DolibarrApiAccess::$user)<0) {
|
||||||
|
throw new RestException(500, "Error creating Partnership", array_merge(array($this->partnership->error), $this->partnership->errors));
|
||||||
|
}
|
||||||
|
return $this->partnership->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update partnership
|
||||||
|
*
|
||||||
|
* @param int $id Id of partnership to update
|
||||||
|
* @param array $request_data Datas
|
||||||
|
* @return int
|
||||||
|
*
|
||||||
|
* @throws RestException
|
||||||
|
*
|
||||||
|
* @url PUT partnerships/{id}
|
||||||
|
*/
|
||||||
|
public function put($id, $request_data = null)
|
||||||
|
{
|
||||||
|
if (!DolibarrApiAccess::$user->rights->partnership->write) {
|
||||||
|
throw new RestException(401);
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $this->partnership->fetch($id);
|
||||||
|
if (!$result) {
|
||||||
|
throw new RestException(404, 'Partnership not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!DolibarrApi::_checkAccessToResource('partnership', $this->partnership->id, 'partnership')) {
|
||||||
|
throw new RestException(401, 'Access to instance id='.$this->partnership->id.' of object not allowed for login '.DolibarrApiAccess::$user->login);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($request_data as $field => $value) {
|
||||||
|
if ($field == 'id') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$this->partnership->$field = $this->_checkValForAPI($field, $value, $this->partnership);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clean data
|
||||||
|
// $this->partnership->abc = sanitizeVal($this->partnership->abc, 'alphanohtml');
|
||||||
|
|
||||||
|
if ($this->partnership->update(DolibarrApiAccess::$user, false) > 0) {
|
||||||
|
return $this->get($id);
|
||||||
|
} else {
|
||||||
|
throw new RestException(500, $this->partnership->error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete partnership
|
||||||
|
*
|
||||||
|
* @param int $id Partnership ID
|
||||||
|
* @return array
|
||||||
|
*
|
||||||
|
* @throws RestException
|
||||||
|
*
|
||||||
|
* @url DELETE partnerships/{id}
|
||||||
|
*/
|
||||||
|
public function delete($id)
|
||||||
|
{
|
||||||
|
if (!DolibarrApiAccess::$user->rights->partnership->delete) {
|
||||||
|
throw new RestException(401);
|
||||||
|
}
|
||||||
|
$result = $this->partnership->fetch($id);
|
||||||
|
if (!$result) {
|
||||||
|
throw new RestException(404, 'Partnership not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!DolibarrApi::_checkAccessToResource('partnership', $this->partnership->id, 'partnership')) {
|
||||||
|
throw new RestException(401, 'Access to instance id='.$this->partnership->id.' of object not allowed for login '.DolibarrApiAccess::$user->login);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$this->partnership->delete(DolibarrApiAccess::$user)) {
|
||||||
|
throw new RestException(500, 'Error when deleting Partnership : '.$this->partnership->error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'success' => array(
|
||||||
|
'code' => 200,
|
||||||
|
'message' => 'Partnership deleted'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
|
||||||
|
/**
|
||||||
|
* Clean sensible object datas
|
||||||
|
*
|
||||||
|
* @param Object $object Object to clean
|
||||||
|
* @return Object Object with cleaned properties
|
||||||
|
*/
|
||||||
|
protected function _cleanObjectDatas($object)
|
||||||
|
{
|
||||||
|
// phpcs:enable
|
||||||
|
$object = parent::_cleanObjectDatas($object);
|
||||||
|
|
||||||
|
unset($object->rowid);
|
||||||
|
unset($object->canvas);
|
||||||
|
|
||||||
|
/*unset($object->name);
|
||||||
|
unset($object->lastname);
|
||||||
|
unset($object->firstname);
|
||||||
|
unset($object->civility_id);
|
||||||
|
unset($object->statut);
|
||||||
|
unset($object->state);
|
||||||
|
unset($object->state_id);
|
||||||
|
unset($object->state_code);
|
||||||
|
unset($object->region);
|
||||||
|
unset($object->region_code);
|
||||||
|
unset($object->country);
|
||||||
|
unset($object->country_id);
|
||||||
|
unset($object->country_code);
|
||||||
|
unset($object->barcode_type);
|
||||||
|
unset($object->barcode_type_code);
|
||||||
|
unset($object->barcode_type_label);
|
||||||
|
unset($object->barcode_type_coder);
|
||||||
|
unset($object->total_ht);
|
||||||
|
unset($object->total_tva);
|
||||||
|
unset($object->total_localtax1);
|
||||||
|
unset($object->total_localtax2);
|
||||||
|
unset($object->total_ttc);
|
||||||
|
unset($object->fk_account);
|
||||||
|
unset($object->comments);
|
||||||
|
unset($object->note);
|
||||||
|
unset($object->mode_reglement_id);
|
||||||
|
unset($object->cond_reglement_id);
|
||||||
|
unset($object->cond_reglement);
|
||||||
|
unset($object->shipping_method_id);
|
||||||
|
unset($object->fk_incoterms);
|
||||||
|
unset($object->label_incoterms);
|
||||||
|
unset($object->location_incoterms);
|
||||||
|
*/
|
||||||
|
|
||||||
|
// If object has lines, remove $db property
|
||||||
|
if (isset($object->lines) && is_array($object->lines) && count($object->lines) > 0) {
|
||||||
|
$nboflines = count($object->lines);
|
||||||
|
for ($i = 0; $i < $nboflines; $i++) {
|
||||||
|
$this->_cleanObjectDatas($object->lines[$i]);
|
||||||
|
|
||||||
|
unset($object->lines[$i]->lines);
|
||||||
|
unset($object->lines[$i]->note);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $object;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate fields before create or update object
|
||||||
|
*
|
||||||
|
* @param array $data Array of data to validate
|
||||||
|
* @return array
|
||||||
|
*
|
||||||
|
* @throws RestException
|
||||||
|
*/
|
||||||
|
private function _validate($data)
|
||||||
|
{
|
||||||
|
$partnership = array();
|
||||||
|
foreach ($this->partnership->fields as $field => $propfield) {
|
||||||
|
if (in_array($field, array('rowid', 'entity', 'date_creation', 'tms', 'fk_user_creat')) || $propfield['notnull'] != 1) {
|
||||||
|
continue; // Not a mandatory field
|
||||||
|
}
|
||||||
|
if (!isset($data[$field])) {
|
||||||
|
throw new RestException(400, "$field field missing");
|
||||||
|
}
|
||||||
|
$partnership[$field] = $data[$field];
|
||||||
|
}
|
||||||
|
return $partnership;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -105,8 +105,8 @@ class Partnership extends CommonObject
|
|||||||
public $fields=array(
|
public $fields=array(
|
||||||
'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"),
|
'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"),
|
||||||
'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>'1', 'position'=>10, 'notnull'=>1, 'visible'=>4, 'noteditable'=>'1', 'default'=>'(PROV)', 'index'=>1, 'searchall'=>1, 'showoncombobox'=>'1', 'comment'=>"Reference of object"),
|
'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>'1', 'position'=>10, 'notnull'=>1, 'visible'=>4, 'noteditable'=>'1', 'default'=>'(PROV)', 'index'=>1, 'searchall'=>1, 'showoncombobox'=>'1', 'comment'=>"Reference of object"),
|
||||||
'entity' => array('type' => 'integer', 'label' => 'Entity', 'default' => 1, 'enabled' => 1, 'visible' => -2, 'notnull' => 1, 'position' => 15, 'index' => 1),
|
'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>'1', 'position'=>15, 'notnull'=>1, 'visible'=>-2, 'default'=>'1', 'index'=>1,),
|
||||||
'fk_type' => array('type' => 'integer:PartnershipType:partnership/class/partnership_type.class.php:0:active=1', 'label' => 'Type', 'notnull'=>1, 'enabled' => 1, 'visible' => 1, 'position' => 20),
|
'fk_type' => array('type'=>'integer:PartnershipType:partnership/class/partnership_type.class.php:0:active=1', 'label'=>'Type', 'enabled'=>'1', 'position'=>20, 'notnull'=>1, 'visible'=>1,),
|
||||||
'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>'1', 'position'=>61, 'notnull'=>0, 'visible'=>0,),
|
'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>'1', 'position'=>61, 'notnull'=>0, 'visible'=>0,),
|
||||||
'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>'1', 'position'=>62, 'notnull'=>0, 'visible'=>0,),
|
'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>'1', 'position'=>62, 'notnull'=>0, 'visible'=>0,),
|
||||||
'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>'1', 'position'=>500, 'notnull'=>1, 'visible'=>-2,),
|
'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>'1', 'position'=>500, 'notnull'=>1, 'visible'=>-2,),
|
||||||
@ -118,38 +118,34 @@ class Partnership extends CommonObject
|
|||||||
'model_pdf' => array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>'1', 'position'=>1010, 'notnull'=>-1, 'visible'=>0,),
|
'model_pdf' => array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>'1', 'position'=>1010, 'notnull'=>-1, 'visible'=>0,),
|
||||||
'date_partnership_start' => array('type'=>'date', 'label'=>'DatePartnershipStart', 'enabled'=>'1', 'position'=>52, 'notnull'=>1, 'visible'=>1,),
|
'date_partnership_start' => array('type'=>'date', 'label'=>'DatePartnershipStart', 'enabled'=>'1', 'position'=>52, 'notnull'=>1, 'visible'=>1,),
|
||||||
'date_partnership_end' => array('type'=>'date', 'label'=>'DatePartnershipEnd', 'enabled'=>'1', 'position'=>53, 'notnull'=>0, 'visible'=>1,),
|
'date_partnership_end' => array('type'=>'date', 'label'=>'DatePartnershipEnd', 'enabled'=>'1', 'position'=>53, 'notnull'=>0, 'visible'=>1,),
|
||||||
'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>'1', 'position'=>54, 'notnull'=>0, 'visible'=>2, 'index'=>1, 'arrayofkeyval'=>array('-1'=>'','0'=>'Draft', '1'=>'Accepted', '2'=>'Refused', '9'=>'Terminated'),),
|
'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>'1', 'position'=>54, 'notnull'=>0, 'visible'=>2, 'index'=>1, 'arrayofkeyval'=>array('-1'=>'', '0'=>'Draft', '1'=>'Accepted', '2'=>'Refused', '8'=>'Suspended', '9'=>'Terminated'),),
|
||||||
'url_to_check' => array('type'=>'varchar(255)', 'label'=>'UrlToCheck', 'enabled'=>'1', 'position'=>70, 'notnull'=>0, 'visible'=>-1),
|
'url_to_check' => array('type'=>'varchar(255)', 'label'=>'UrlToCheck', 'enabled'=>'1', 'position'=>70, 'notnull'=>0, 'visible'=>-1,),
|
||||||
'count_last_url_check_error' => array('type'=>'integer', 'label'=>'CountLastUrlCheckError', 'enabled'=>'1', 'position'=>71, 'notnull'=>0, 'visible'=>-2, 'default'=>'0',),
|
'count_last_url_check_error' => array('type'=>'integer', 'label'=>'CountLastUrlCheckError', 'enabled'=>'1', 'position'=>71, 'notnull'=>0, 'visible'=>-2, 'default'=>'0',),
|
||||||
'last_check_backlink' => array('type'=>'datetime', 'label'=>'LastCheckBacklink', 'enabled'=>'1', 'position'=>72, 'notnull'=>0, 'visible'=>-2,),
|
'last_check_backlink' => array('type'=>'datetime', 'label'=>'LastCheckBacklink', 'enabled'=>'1', 'position'=>72, 'notnull'=>0, 'visible'=>-2,),
|
||||||
'reason_decline_or_cancel' => array('type'=>'text', 'label'=>'ReasonDeclineOrCancel', 'enabled'=>'1', 'position'=>73, 'notnull'=>0, 'visible'=>-2,),
|
'reason_decline_or_cancel' => array('type'=>'text', 'label'=>'ReasonDeclineOrCancel', 'enabled'=>'1', 'position'=>73, 'notnull'=>0, 'visible'=>-2,),
|
||||||
// fk_member and fk_soc are added into constructor
|
'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'picto'=>'company', 'enabled'=>'1', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax150',),
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
|
||||||
* @var int rowid
|
|
||||||
* @deprecated
|
|
||||||
* @see $id
|
|
||||||
*/
|
|
||||||
public $rowid;
|
public $rowid;
|
||||||
|
public $ref;
|
||||||
public $fk_soc; // Link to thirdparty
|
public $entity;
|
||||||
public $fk_member; // Link to member
|
public $fk_type;
|
||||||
|
public $note_public;
|
||||||
|
public $note_private;
|
||||||
|
public $date_creation;
|
||||||
public $tms;
|
public $tms;
|
||||||
public $fk_user_creat;
|
public $fk_user_creat;
|
||||||
public $fk_user_modif;
|
public $fk_user_modif;
|
||||||
|
public $last_main_doc;
|
||||||
public $status;
|
public $import_key;
|
||||||
|
public $model_pdf;
|
||||||
public $date_partnership_start;
|
public $date_partnership_start;
|
||||||
public $date_partnership_end;
|
public $date_partnership_end;
|
||||||
|
public $status;
|
||||||
|
public $url_to_check;
|
||||||
public $count_last_url_check_error;
|
public $count_last_url_check_error;
|
||||||
public $last_check_backlink;
|
public $last_check_backlink;
|
||||||
|
|
||||||
/**
|
|
||||||
* @var string reason_decline_or_cancel
|
|
||||||
*/
|
|
||||||
public $reason_decline_or_cancel;
|
public $reason_decline_or_cancel;
|
||||||
|
public $fk_soc;
|
||||||
// END MODULEBUILDER PROPERTIES
|
// END MODULEBUILDER PROPERTIES
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -83,8 +83,8 @@ $managedfor = getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR', 'thirdparty');
|
|||||||
|
|
||||||
if (empty($conf->partnership->enabled)) accessforbidden();
|
if (empty($conf->partnership->enabled)) accessforbidden();
|
||||||
if (empty($permissiontoread)) accessforbidden();
|
if (empty($permissiontoread)) accessforbidden();
|
||||||
if ($object->id > 0 && $object->fk_member > 0 && $managedfor != 'member') accessforbidden();
|
if ($object->id > 0 && !($object->fk_member > 0) && $managedfor == 'member') accessforbidden();
|
||||||
if ($object->id > 0 && $object->fk_soc > 0 && $managedfor != 'thirdparty') accessforbidden();
|
if ($object->id > 0 && !($object->fk_soc > 0) && $managedfor == 'thirdparty') accessforbidden();
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@ -101,7 +101,7 @@ class Inventory extends CommonObject
|
|||||||
'entity' => array('type'=>'integer', 'label'=>'Entity', 'visible'=>0, 'enabled'=>1, 'position'=>20, 'notnull'=>1, 'index'=>1,),
|
'entity' => array('type'=>'integer', 'label'=>'Entity', 'visible'=>0, 'enabled'=>1, 'position'=>20, 'notnull'=>1, 'index'=>1,),
|
||||||
'title' => array('type'=>'varchar(255)', 'label'=>'Label', 'visible'=>1, 'enabled'=>1, 'position'=>25, 'css'=>'minwidth300', 'csslist'=>'tdoverflowmax200'),
|
'title' => array('type'=>'varchar(255)', 'label'=>'Label', 'visible'=>1, 'enabled'=>1, 'position'=>25, 'css'=>'minwidth300', 'csslist'=>'tdoverflowmax200'),
|
||||||
'fk_warehouse' => array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php', 'label'=>'Warehouse', 'visible'=>1, 'enabled'=>1, 'position'=>30, 'index'=>1, 'help'=>'InventoryForASpecificWarehouse', 'picto'=>'stock', 'css'=>'minwidth300 maxwidth500 widthcentpercentminusx', 'csslist'=>'tdoverflowmax200'),
|
'fk_warehouse' => array('type'=>'integer:Entrepot:product/stock/class/entrepot.class.php', 'label'=>'Warehouse', 'visible'=>1, 'enabled'=>1, 'position'=>30, 'index'=>1, 'help'=>'InventoryForASpecificWarehouse', 'picto'=>'stock', 'css'=>'minwidth300 maxwidth500 widthcentpercentminusx', 'csslist'=>'tdoverflowmax200'),
|
||||||
'fk_product' => array('type'=>'integer:Product:product/class/product.class.php::::0:-1:0::1', 'label'=>'Product', 'visible'=>1, 'enabled'=>1, 'position'=>32, 'index'=>1, 'help'=>'InventoryForASpecificProduct', 'picto'=>'product', 'css'=>'minwidth300 maxwidth500 widthcentpercentminusx', 'csslist'=>'tdoverflowmax200'),
|
'fk_product' => array('type'=>'integer:Product:product/class/product.class.php', 'label'=>'Product', 'get_name_url_params' => '0::0:-1:0::1', 'visible'=>1, 'enabled'=>1, 'position'=>32, 'index'=>1, 'help'=>'InventoryForASpecificProduct', 'picto'=>'product', 'css'=>'minwidth300 maxwidth500 widthcentpercentminusx', 'csslist'=>'tdoverflowmax200'),
|
||||||
'date_inventory' => array('type'=>'date', 'label'=>'DateValue', 'visible'=>1, 'enabled'=>'$conf->global->STOCK_INVENTORY_ADD_A_VALUE_DATE', 'position'=>35), // This date is not used so disabled by default.
|
'date_inventory' => array('type'=>'date', 'label'=>'DateValue', 'visible'=>1, 'enabled'=>'$conf->global->STOCK_INVENTORY_ADD_A_VALUE_DATE', 'position'=>35), // This date is not used so disabled by default.
|
||||||
'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>500),
|
'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>500),
|
||||||
'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>501),
|
'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'position'=>501),
|
||||||
|
|||||||
@ -515,6 +515,7 @@ if ($action == 'create' && $user->rights->projet->creer) {
|
|||||||
print '<input type="hidden" name="action" value="add">';
|
print '<input type="hidden" name="action" value="add">';
|
||||||
print '<input type="hidden" name="token" value="'.newToken().'">';
|
print '<input type="hidden" name="token" value="'.newToken().'">';
|
||||||
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
|
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
|
||||||
|
print '<input type="hidden" name="backtopageforcancel" value="'.$backtopageforcancel.'">';
|
||||||
print '<input type="hidden" name="backtopagejsfields" value="'.$backtopagejsfields.'">';
|
print '<input type="hidden" name="backtopagejsfields" value="'.$backtopagejsfields.'">';
|
||||||
|
|
||||||
print dol_get_fiche_head();
|
print dol_get_fiche_head();
|
||||||
|
|||||||
@ -128,6 +128,28 @@ if ($action == 'update' && !GETPOST("cancel") && $user->rights->projet->creer) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($action == 'confirm_clone' && $confirm == 'yes') {
|
||||||
|
//$clone_contacts = GETPOST('clone_contacts') ? 1 : 0;
|
||||||
|
$clone_prog = GETPOST('clone_prog') ? 1 : 0;
|
||||||
|
$clone_time = GETPOST('clone_time') ? 1 : 0;
|
||||||
|
$clone_affectation = GETPOST('clone_affectation') ? 1 : 0;
|
||||||
|
$clone_change_dt = GETPOST('clone_change_dt') ? 1 : 0;
|
||||||
|
$clone_notes = GETPOST('clone_notes') ? 1 : 0;
|
||||||
|
$clone_file = GETPOST('clone_file') ? 1 : 0;
|
||||||
|
$result = $object->createFromClone($user, $object->id, $object->fk_project, $object->fk_task_parent, $clone_change_dt, $clone_affectation, $clone_time, $clone_file, $clone_notes, $clone_prog);
|
||||||
|
if ($result <= 0) {
|
||||||
|
setEventMessages($object->error, $object->errors, 'errors');
|
||||||
|
} else {
|
||||||
|
// Load new object
|
||||||
|
$newobject = new Task($db);
|
||||||
|
$newobject->fetch($result);
|
||||||
|
$newobject->fetch_optionals();
|
||||||
|
$newobject->fetch_thirdparty(); // Load new object
|
||||||
|
$object = $newobject;
|
||||||
|
$action = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($action == 'confirm_delete' && $confirm == "yes" && $user->rights->projet->supprimer) {
|
if ($action == 'confirm_delete' && $confirm == "yes" && $user->rights->projet->supprimer) {
|
||||||
$result = $projectstatic->fetch($object->fk_project);
|
$result = $projectstatic->fetch($object->fk_project);
|
||||||
$projectstatic->fetch_thirdparty();
|
$projectstatic->fetch_thirdparty();
|
||||||
@ -205,6 +227,7 @@ $help_url = '';
|
|||||||
|
|
||||||
llxHeader('', $title, $help_url);
|
llxHeader('', $title, $help_url);
|
||||||
|
|
||||||
|
|
||||||
if ($id > 0 || !empty($ref)) {
|
if ($id > 0 || !empty($ref)) {
|
||||||
$res = $object->fetch_optionals();
|
$res = $object->fetch_optionals();
|
||||||
if (!empty($conf->global->PROJECT_ALLOW_COMMENT_ON_TASK) && method_exists($object, 'fetchComments') && empty($object->comments)) {
|
if (!empty($conf->global->PROJECT_ALLOW_COMMENT_ON_TASK) && method_exists($object, 'fetchComments') && empty($object->comments)) {
|
||||||
@ -385,6 +408,22 @@ if ($id > 0 || !empty($ref)) {
|
|||||||
//$userAccess = $projectstatic->restrictedProjectArea($user); // We allow task affected to user even if a not allowed project
|
//$userAccess = $projectstatic->restrictedProjectArea($user); // We allow task affected to user even if a not allowed project
|
||||||
//$arrayofuseridoftask=$object->getListContactId('internal');
|
//$arrayofuseridoftask=$object->getListContactId('internal');
|
||||||
|
|
||||||
|
if ($action == 'clone') {
|
||||||
|
$formquestion = array(
|
||||||
|
'text' => $langs->trans("ConfirmClone"),
|
||||||
|
//array('type' => 'checkbox', 'name' => 'clone_contacts', 'label' => $langs->trans("CloneContacts"), 'value' => true),
|
||||||
|
array('type' => 'checkbox', 'name' => 'clone_change_dt', 'label' => $langs->trans("CloneChanges"), 'value' => true),
|
||||||
|
array('type' => 'checkbox', 'name' => 'clone_affectation', 'label' => $langs->trans("CloneAffectation"), 'value' => true),
|
||||||
|
array('type' => 'checkbox', 'name' => 'clone_prog', 'label' => $langs->trans("CloneProgression"), 'value' => true),
|
||||||
|
array('type' => 'checkbox', 'name' => 'clone_time', 'label' => $langs->trans("CloneTimes"), 'value' => true),
|
||||||
|
array('type' => 'checkbox', 'name' => 'clone_file', 'label' => $langs->trans("CloneFile"), 'value' => true),
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
print $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$object->id, $langs->trans("ToClone"), $langs->trans("ConfirmCloneTask"), "confirm_clone", $formquestion, '', 1, 300, 590);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$head = task_prepare_head($object);
|
$head = task_prepare_head($object);
|
||||||
|
|
||||||
if ($action == 'edit' && $user->rights->projet->creer) {
|
if ($action == 'edit' && $user->rights->projet->creer) {
|
||||||
@ -628,6 +667,7 @@ if ($id > 0 || !empty($ref)) {
|
|||||||
// Modify
|
// Modify
|
||||||
if ($user->rights->projet->creer) {
|
if ($user->rights->projet->creer) {
|
||||||
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit&token='.newToken().'&withproject='.((int) $withproject).'">'.$langs->trans('Modify').'</a>';
|
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=edit&token='.newToken().'&withproject='.((int) $withproject).'">'.$langs->trans('Modify').'</a>';
|
||||||
|
print '<a class="butAction" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=clone&token='.newToken().'&withproject='.((int) $withproject).'">'.$langs->trans('Clone').'</a>';
|
||||||
} else {
|
} else {
|
||||||
print '<a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans("NotAllowed").'">'.$langs->trans('Modify').'</a>';
|
print '<a class="butActionRefused classfortooltip" href="#" title="'.$langs->trans("NotAllowed").'">'.$langs->trans('Modify').'</a>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,20 +16,45 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file htdocs/asterisk/cidlookup.php
|
* \file htdocs/public/clicktodial/cidlookup.php
|
||||||
* \brief Script to search companies names based on incoming calls, from caller phone number
|
* \brief Script to search companies names based on incoming calls, from caller phone number
|
||||||
* \remarks To use this script, your Asterisk must be compiled with CURL,
|
* \remarks To use this script, your Asterisk must be compiled with CURL, and your dialplan must be something like this:
|
||||||
* and your dialplan must be something like this:
|
|
||||||
*
|
*
|
||||||
* exten => s,1,Set(CALLERID(name)=${CURL(http://IP-DOLIBARR:80/asterisk/cidlookup.php?phone=${CALLERID(num)})})
|
* exten => s,1,Set(CALLERID(name)=${CURL(http://IP-DOLIBARR:80/asterisk/cidlookup.php?phone=${CALLERID(num)}&securitykey=SECURITYKEY)})
|
||||||
*
|
*
|
||||||
* Change IP-DOLIBARR to the IP address of your dolibarr server
|
* Change IP-DOLIBARR to the IP address of your dolibarr server
|
||||||
|
* Change SECURITYKEY to the value defined into your setup of module ClickToDial
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
if (!defined('NOTOKENRENEWAL')) {
|
||||||
|
define('NOTOKENRENEWAL', '1'); // Disables token renewal
|
||||||
|
}
|
||||||
|
if (!defined('NOREQUIREMENU')) {
|
||||||
|
define('NOREQUIREMENU', '1');
|
||||||
|
}
|
||||||
|
if (!defined('NOREQUIREHTML')) {
|
||||||
|
define('NOREQUIREHTML', '1');
|
||||||
|
}
|
||||||
|
if (!defined('NOREQUIREAJAX')) {
|
||||||
|
define('NOREQUIREAJAX', '1');
|
||||||
|
}
|
||||||
|
if (!defined('NOLOGIN')) {
|
||||||
|
define('NOLOGIN', '1');
|
||||||
|
}
|
||||||
|
if (!defined('NOIPCHECK')) {
|
||||||
|
define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip
|
||||||
|
}
|
||||||
|
|
||||||
include '../master.inc.php';
|
// So log file will have a suffix
|
||||||
|
if (!defined('USESUFFIXINLOG')) {
|
||||||
|
define('USESUFFIXINLOG', '_cidlookup');
|
||||||
|
}
|
||||||
|
|
||||||
|
include '../../main.inc.php';
|
||||||
|
|
||||||
$phone = GETPOST('phone');
|
$phone = GETPOST('phone');
|
||||||
|
$securitykey = GETPOST('securitykey');
|
||||||
|
|
||||||
$notfound = $langs->trans("Unknown");
|
$notfound = $langs->trans("Unknown");
|
||||||
|
|
||||||
// Security check
|
// Security check
|
||||||
@ -38,12 +63,27 @@ if (empty($conf->clicktodial->enabled)) {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* View
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (empty($securitykey)) {
|
||||||
|
echo 'Securitykey is required. Check setup of clicktodial module.';
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
if ($securitykey != getDolGlobalString('CLICKTODIAL_KEY_FOR_CIDLOOKUP')) {
|
||||||
|
echo 'Securitykey is wrong.';
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
// Check parameters
|
// Check parameters
|
||||||
if (empty($phone)) {
|
if (empty($phone)) {
|
||||||
print "Error: Url must be called with parameter phone=phone to search\n";
|
print "Error: Url must be called with parameter phone=phone to search\n";
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
$sql = "SELECT s.nom as name FROM ".MAIN_DB_PREFIX."societe as s";
|
$sql = "SELECT s.nom as name FROM ".MAIN_DB_PREFIX."societe as s";
|
||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople as sp ON sp.fk_soc = s.rowid";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople as sp ON sp.fk_soc = s.rowid";
|
||||||
$sql .= " WHERE s.entity IN (".getEntity('societe').")";
|
$sql .= " WHERE s.entity IN (".getEntity('societe').")";
|
||||||
@ -93,7 +93,7 @@ if (empty($key)) {
|
|||||||
echo 'Securitykey is required. Check setup of cron jobs module.';
|
echo 'Securitykey is required. Check setup of cron jobs module.';
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
if ($key != $conf->global->CRON_KEY) {
|
if ($key != getDolGlobalString('CRON_KEY')) {
|
||||||
echo 'Securitykey is wrong.';
|
echo 'Securitykey is wrong.';
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -127,7 +127,7 @@ class RecruitmentCandidature extends CommonObject
|
|||||||
//'fk_recruitment_origin' => array('type'=>'integer:CRecruitmentOrigin:recruitment/class/crecruitmentorigin.class.php', 'label'=>'Origin', 'enabled'=>'1', 'position'=>45, 'visible'=>1, 'index'=>1),
|
//'fk_recruitment_origin' => array('type'=>'integer:CRecruitmentOrigin:recruitment/class/crecruitmentorigin.class.php', 'label'=>'Origin', 'enabled'=>'1', 'position'=>45, 'visible'=>1, 'index'=>1),
|
||||||
'remuneration_requested' => array('type'=>'integer', 'label'=>'RequestedRemuneration', 'enabled'=>'1', 'position'=>80, 'notnull'=>0, 'visible'=>-1,),
|
'remuneration_requested' => array('type'=>'integer', 'label'=>'RequestedRemuneration', 'enabled'=>'1', 'position'=>80, 'notnull'=>0, 'visible'=>-1,),
|
||||||
'remuneration_proposed' => array('type'=>'integer', 'label'=>'ProposedRemuneration', 'enabled'=>'1', 'position'=>81, 'notnull'=>0, 'visible'=>-1,),
|
'remuneration_proposed' => array('type'=>'integer', 'label'=>'ProposedRemuneration', 'enabled'=>'1', 'position'=>81, 'notnull'=>0, 'visible'=>-1,),
|
||||||
'description' => array('type'=>'html', 'label'=>'Description', 'enabled'=>'1', 'position'=>500, 'notnull'=>0, 'visible'=>3,),
|
'description' => array('type'=>'html', 'label'=>'Description', 'enabled'=>'1', 'position'=>500, 'notnull'=>0, 'visible'=>3, 'cssview'=>'wordbreak'),
|
||||||
'import_key' => array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>'1', 'position'=>1000, 'notnull'=>-1, 'visible'=>-2,),
|
'import_key' => array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>'1', 'position'=>1000, 'notnull'=>-1, 'visible'=>-2,),
|
||||||
'model_pdf' => array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>'1', 'position'=>1010, 'notnull'=>-1, 'visible'=>0,),
|
'model_pdf' => array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>'1', 'position'=>1010, 'notnull'=>-1, 'visible'=>0,),
|
||||||
'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>'1', 'position'=>1000, 'notnull'=>1, 'visible'=>1, 'index'=>1, 'default'=>0, 'arrayofkeyval'=>array('0'=>'Draft', '1'=>'Received', '3'=>'ContractProposed', '5'=>'ContractSigned', '8'=>'Refused', '9'=>'Canceled')),
|
'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>'1', 'position'=>1000, 'notnull'=>1, 'visible'=>1, 'index'=>1, 'default'=>0, 'arrayofkeyval'=>array('0'=>'Draft', '1'=>'Received', '3'=>'ContractProposed', '5'=>'ContractSigned', '8'=>'Refused', '9'=>'Canceled')),
|
||||||
|
|||||||
@ -3035,6 +3035,22 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) {
|
|||||||
print "</td></tr>\n";
|
print "</td></tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Link user (you must create a contact to get a user)
|
||||||
|
/*
|
||||||
|
print '<tr><td>'.$langs->trans("DolibarrLogin").'</td><td colspan="3">';
|
||||||
|
if ($object->user_id) {
|
||||||
|
$dolibarr_user = new User($db);
|
||||||
|
$result = $dolibarr_user->fetch($object->user_id);
|
||||||
|
print $dolibarr_user->getLoginUrl(-1);
|
||||||
|
} else {
|
||||||
|
//print '<span class="opacitymedium">'.$langs->trans("NoDolibarrAccess").'</span>';
|
||||||
|
if (!$object->user_id && $user->rights->user->user->creer) {
|
||||||
|
print '<a class="aaa" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&action=create_user&token='.newToken().'">'.img_picto($langs->trans("CreateDolibarrLogin"), 'add').' '.$langs->trans("CreateDolibarrLogin").'</a>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print '</td></tr>';
|
||||||
|
*/
|
||||||
|
|
||||||
// Webservices url/key
|
// Webservices url/key
|
||||||
if (!empty($conf->syncsupplierwebservices->enabled)) {
|
if (!empty($conf->syncsupplierwebservices->enabled)) {
|
||||||
print '<tr><td>'.$langs->trans("WebServiceURL").'</td><td>'.dol_print_url($object->webservices_url).'</td>';
|
print '<tr><td>'.$langs->trans("WebServiceURL").'</td><td>'.dol_print_url($object->webservices_url).'</td>';
|
||||||
|
|||||||
@ -173,7 +173,7 @@ print '<br>';
|
|||||||
if ($action != 'presend') {
|
if ($action != 'presend') {
|
||||||
// Contacts list
|
// Contacts list
|
||||||
if (empty($conf->global->SOCIETE_DISABLE_CONTACTS)) {
|
if (empty($conf->global->SOCIETE_DISABLE_CONTACTS)) {
|
||||||
$result = show_contacts($conf, $langs, $db, $object, $_SERVER["PHP_SELF"].'?socid='.$object->id);
|
$result = show_contacts($conf, $langs, $db, $object, $_SERVER["PHP_SELF"].'?socid='.$object->id, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -682,6 +682,7 @@ $title = $langs->trans("ThirdParty");
|
|||||||
if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/', $conf->global->MAIN_HTML_TITLE) && $object->name) {
|
if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/', $conf->global->MAIN_HTML_TITLE) && $object->name) {
|
||||||
$title = $object->name." - ".$langs->trans('PaymentInformation');
|
$title = $object->name." - ".$langs->trans('PaymentInformation');
|
||||||
}
|
}
|
||||||
|
$help_url = '';
|
||||||
|
|
||||||
llxHeader('', $title, $help_url);
|
llxHeader('', $title, $help_url);
|
||||||
|
|
||||||
|
|||||||
@ -128,17 +128,10 @@ $contactstatic = new Contact($db);
|
|||||||
$userstatic = new User($db);
|
$userstatic = new User($db);
|
||||||
|
|
||||||
|
|
||||||
/* *************************************************************************** */
|
// View and edit
|
||||||
/* */
|
|
||||||
/* Mode vue et edition */
|
|
||||||
/* */
|
|
||||||
/* *************************************************************************** */
|
|
||||||
|
|
||||||
if ($id > 0 || !empty($ref)) {
|
if ($id > 0 || !empty($ref)) {
|
||||||
if ($object->fetch($id, $ref) > 0) {
|
if ($object->fetch($id, $ref) > 0) {
|
||||||
$soc = new Societe($db);
|
|
||||||
$soc->fetch($object->socid);
|
|
||||||
|
|
||||||
$head = societe_prepare_head($object);
|
$head = societe_prepare_head($object);
|
||||||
print dol_get_fiche_head($head, 'contact', $langs->trans("ThirdParty"), -1, 'company');
|
print dol_get_fiche_head($head, 'contact', $langs->trans("ThirdParty"), -1, 'company');
|
||||||
|
|
||||||
|
|||||||
@ -115,7 +115,7 @@ class Stripe extends CommonObject
|
|||||||
$tokenstring = $obj->tokenstring;
|
$tokenstring = $obj->tokenstring;
|
||||||
|
|
||||||
$tmparray = json_decode($tokenstring);
|
$tmparray = json_decode($tokenstring);
|
||||||
$key = $tmparray->stripe_user_id;
|
$key = empty($tmparray->stripe_user_id) ? '' : $tmparray->stripe_user_id;
|
||||||
} else {
|
} else {
|
||||||
$tokenstring = '';
|
$tokenstring = '';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -236,6 +236,7 @@ function pHeader($soutitre, $next, $action = 'none')
|
|||||||
// On force contenu dans format sortie
|
// On force contenu dans format sortie
|
||||||
header("Content-type: text/html; charset=".$conf->file->character_set_client);
|
header("Content-type: text/html; charset=".$conf->file->character_set_client);
|
||||||
header("X-Content-Type-Options: nosniff");
|
header("X-Content-Type-Options: nosniff");
|
||||||
|
header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks)
|
||||||
|
|
||||||
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'."\n";
|
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'."\n";
|
||||||
print '<head>'."\n";
|
print '<head>'."\n";
|
||||||
|
|||||||
@ -77,17 +77,22 @@ print '<div style="width: 100%; text-align: center"><div class="inline-block blo
|
|||||||
print "\n";
|
print "\n";
|
||||||
|
|
||||||
// Forum/wiki support
|
// Forum/wiki support
|
||||||
print '<table class="login tablesupport" width="100%">';
|
print '<table class="login tablesupport" width="100%" style="margin-top: 20px">';
|
||||||
print '<tr class="title" valign="top">';
|
print '<tr class="title tablesupport-title" valign="top">';
|
||||||
print '<td width="100%" align="left" valign="middle">';
|
print '<td width="100%" align="left" valign="middle">';
|
||||||
|
|
||||||
print '<table summary="who"><tr><td>'.img_picto('', 'who.png', 'class="valignmiddle"', 1).'</td><td>';
|
print '<table summary="who"><tr><td>'.img_picto('', 'who.png', 'class="valignmiddle paddingright"', 1).'</td><td>';
|
||||||
|
|
||||||
print '<span style="'.$style1.'">'.$langs->trans("CommunitySupport").'</span>';
|
print '<span style="'.$style1.'">'.$langs->trans("CommunitySupport").'</span>';
|
||||||
print '<span class="small">';
|
print '<span class="small">';
|
||||||
print '<br><span class="opacitymedium">'.$langs->trans("TypeOfSupport").':</span> <span style="'.$style2.'">'.$langs->trans("TypeSupportCommunauty").'</span>';
|
print '<br><span class="opacitymedium">'.$langs->trans("TypeOfSupport").':</span> ';
|
||||||
print '<br><span class="opacitymedium">'.$langs->trans("TypeOfHelp").'/'.$langs->trans("Efficiency").'/'.$langs->trans("Price").':</span> ';
|
print '<span style="'.$style2.'">'.$langs->trans("TypeSupportCommunauty").'</span>';
|
||||||
print $langs->trans("TypeHelpDev").'/'.img_picto_common('', 'redstar', 'class="valignmiddle"', 1).img_picto_common('', 'redstar', 'class="valignmiddle"', 1).'/'.img_picto_common('', 'star', 'class="valignmiddle"', 1).img_picto_common('', 'star', 'class="valignmiddle"', 1).img_picto_common('', 'star', 'class="valignmiddle"', 1).img_picto_common('', 'star', 'class="valignmiddle"', 1);
|
print '<br><span class="opacitymedium">'.$langs->trans("TypeOfHelp").':</span> ';
|
||||||
|
print $langs->trans("TypeHelpDev");
|
||||||
|
print '<br><span class="opacitymedium">'.$langs->trans("Efficiency").':</span> ';
|
||||||
|
print img_picto_common('', 'redstar', 'class="valignmiddle"', 1).img_picto_common('', 'redstar', 'class="valignmiddle"', 1);
|
||||||
|
print '<br><span class="opacitymedium">'.$langs->trans("Price").':</span> ';
|
||||||
|
print img_picto_common('', 'star', 'class="valignmiddle"', 1).img_picto_common('', 'star', 'class="valignmiddle"', 1).img_picto_common('', 'star', 'class="valignmiddle"', 1).img_picto_common('', 'star', 'class="valignmiddle"', 1).img_picto_common('', 'star', 'class="valignmiddle"', 1);
|
||||||
print '</span>';
|
print '</span>';
|
||||||
|
|
||||||
print '</td></tr></table>';
|
print '</td></tr></table>';
|
||||||
@ -109,6 +114,7 @@ if (preg_match('/es/i', $langs->defaultlang)) {
|
|||||||
if (preg_match('/de/i', $langs->defaultlang)) {
|
if (preg_match('/de/i', $langs->defaultlang)) {
|
||||||
$urlwiki = 'https://wiki.dolibarr.org/index.php/Hauptseite';
|
$urlwiki = 'https://wiki.dolibarr.org/index.php/Hauptseite';
|
||||||
}
|
}
|
||||||
|
print '<div class="wordbreak">';
|
||||||
print '<br>'.$langs->trans("ForDocumentationSeeWiki", $urlwiki, $urlwiki);
|
print '<br>'.$langs->trans("ForDocumentationSeeWiki", $urlwiki, $urlwiki);
|
||||||
print '<br>';
|
print '<br>';
|
||||||
$urlforum = 'https://www.dolibarr.org/forum/';
|
$urlforum = 'https://www.dolibarr.org/forum/';
|
||||||
@ -132,6 +138,7 @@ print '<br>'.$langs->trans("ForAnswersSeeForum", $urlforumlocal, $urlforumlocal)
|
|||||||
if ($urlforumlocal != $urlforum) {
|
if ($urlforumlocal != $urlforum) {
|
||||||
print '<b><a href="'.$urlforum.'">'.$urlforum.'</a></b>';
|
print '<b><a href="'.$urlforum.'">'.$urlforum.'</a></b>';
|
||||||
}
|
}
|
||||||
|
print '</div>';
|
||||||
print '</td></tr></table>';
|
print '</td></tr></table>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
@ -141,17 +148,22 @@ print "\n";
|
|||||||
print '</div><div class="inline-block blocksupport">';
|
print '</div><div class="inline-block blocksupport">';
|
||||||
|
|
||||||
// EMail support
|
// EMail support
|
||||||
print '<table class="login tablesupport" width="100%">';
|
print '<table class="login tablesupport" width="100%" style="margin-top: 20px">';
|
||||||
print '<tr class="title" valign="top">';
|
print '<tr class="title tablesupport-title" valign="top">';
|
||||||
print '<td width="100%" align="left" valign="middle">';
|
print '<td width="100%" align="left" valign="middle">';
|
||||||
|
|
||||||
print '<table summary="mail"><tr><td>'.img_picto('', 'mail.png', 'class="valignmiddle"', 1).'</td><td>';
|
print '<table summary="mail"><tr><td>'.img_picto('', 'mail.png', 'class="valignmiddle paddingright"', 1).'</td><td>';
|
||||||
|
|
||||||
print '<span style="'.$style1.'">'.$langs->trans("EMailSupport").'</span>';
|
print '<span style="'.$style1.'">'.$langs->trans("EMailSupport").'</span>';
|
||||||
print '<span class="small">';
|
print '<span class="small">';
|
||||||
print '<br><span class="opacitymedium">'.$langs->trans("TypeOfSupport").':</span> <span style="'.$style2.'">'.$langs->trans("TypeSupportCommercial").'</span>';
|
print '<br><span class="opacitymedium">'.$langs->trans("TypeOfSupport").':</span> ';
|
||||||
print '<br><span class="opacitymedium">'.$langs->trans("TypeOfHelp").'/'.$langs->trans("Efficiency").'/'.$langs->trans("Price").':</span> ';
|
print '<span style="'.$style2.'">'.$langs->trans("TypeSupportCommercial").'</span>';
|
||||||
print $langs->trans("TypeHelpOnly").'/'.img_picto_common('', 'redstar', 'class="valignmiddle"', 1).img_picto_common('', 'redstar', 'class="valignmiddle"', 1).img_picto_common('', 'redstar', 'class="valignmiddle"', 1).'/'.img_picto_common('', 'star', 'class="valignmiddle"', 1).img_picto_common('', 'star', 'class="valignmiddle"', 1);
|
print '<br><span class="opacitymedium">'.$langs->trans("TypeOfHelp").':</span>';
|
||||||
|
print $langs->trans("TypeHelpOnly");
|
||||||
|
print '<br><span class="opacitymedium">'.$langs->trans("Efficiency").':</span>';
|
||||||
|
print img_picto_common('', 'redstar', 'class="valignmiddle"', 1).img_picto_common('', 'redstar', 'class="valignmiddle"', 1).img_picto_common('', 'redstar', 'class="valignmiddle"', 1);
|
||||||
|
print '<br><span class="opacitymedium">'.$langs->trans("Price").':</span> ';
|
||||||
|
print img_picto_common('', 'star', 'class="valignmiddle"', 1).img_picto_common('', 'star', 'class="valignmiddle"', 1);
|
||||||
print '</span>';
|
print '</span>';
|
||||||
|
|
||||||
print '</td></tr></table>';
|
print '</td></tr></table>';
|
||||||
@ -163,8 +175,9 @@ print '<td align="center" valign="top">';
|
|||||||
print '<table class="nocellnopadd">';
|
print '<table class="nocellnopadd">';
|
||||||
print '<tr><td align="center">';
|
print '<tr><td align="center">';
|
||||||
print '<br><span class="opacitymedium">'.$langs->trans("ToSeeListOfAvailableRessources").'</span><br>';
|
print '<br><span class="opacitymedium">'.$langs->trans("ToSeeListOfAvailableRessources").'</span><br>';
|
||||||
|
print '<br>';
|
||||||
print '<b><a href="'.$urlwiki.'">'.$langs->trans("ClickHere").'</a></b><br>';
|
print '<b><a href="'.$urlwiki.'">'.$langs->trans("ClickHere").'</a></b><br>';
|
||||||
print '<br><br>';
|
print '<br>';
|
||||||
print '<br><br>';
|
print '<br><br>';
|
||||||
print '</td></tr></table>';
|
print '</td></tr></table>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
@ -176,18 +189,22 @@ print '</div><div class="inline-block blocksupport">';
|
|||||||
|
|
||||||
|
|
||||||
// Other support
|
// Other support
|
||||||
print '<table class="login tablesupport" width="100%">';
|
print '<table class="login tablesupport" width="100%" style="margin-top: 20px">';
|
||||||
print '<tr class="title">';
|
print '<tr class="title tablesupport-title">';
|
||||||
print '<td width="100%" align="left" valign="middle">';
|
print '<td width="100%" align="left" valign="middle">';
|
||||||
|
|
||||||
print '<table summary="special"><tr><td>'.img_picto('', 'pagemaster.png', 'class="valignmiddle"', 1).'</td><td>';
|
print '<table summary="special"><tr><td>'.img_picto('', 'pagemaster.png', 'class="valignmiddle paddingright"', 1).'</td><td>';
|
||||||
|
|
||||||
print '<span style="'.$style1.'">'.$langs->trans("OtherSupport").'</span>';
|
print '<span style="'.$style1.'">'.$langs->trans("OtherSupport").'</span>';
|
||||||
print '<span class="small">';
|
print '<span class="small">';
|
||||||
print '<br><span class="opacitymedium">'.$langs->trans("TypeOfSupport").':</span> <span style="'.$style2.'">'.$langs->trans("TypeSupportCommercial").'</span>';
|
print '<br><span class="opacitymedium">'.$langs->trans("TypeOfSupport").':</span> ';
|
||||||
//print '<br>'.$langs->trans("Efficiency").'/'.$langs->trans("Price").': '.img_picto_common('','redstar').img_picto_common('','redstar').img_picto_common('','redstar').' / '.img_picto_common('','star');
|
print '<span style="'.$style2.'">'.$langs->trans("TypeSupportCommercial").'</span>';
|
||||||
print '<br><span class="opacitymedium">'.$langs->trans("TypeOfHelp").'/'.$langs->trans("Efficiency").'/'.$langs->trans("Price").':</span> ';
|
print '<br><span class="opacitymedium wordbreak">'.$langs->trans("TypeOfHelp").':</span>';
|
||||||
print $langs->trans("TypeHelpDevForm").'/?/?';
|
print $langs->trans("TypeHelpDevForm");
|
||||||
|
print '<br><span class="opacitymedium">'.$langs->trans("Efficiency").':</span>';
|
||||||
|
print img_picto_common('', 'redstar', 'class="valignmiddle"', 1).img_picto_common('', 'redstar', 'class="valignmiddle"', 1).img_picto_common('', 'redstar', 'class="valignmiddle"', 1).img_picto_common('', 'redstar', 'class="valignmiddle"', 1).img_picto_common('', 'redstar', 'class="valignmiddle"', 1);
|
||||||
|
print '<br><span class="opacitymedium">'.$langs->trans("Price").':</span> ';
|
||||||
|
print img_picto_common('', 'star', 'class="valignmiddle"', 1);
|
||||||
print '</span>';
|
print '</span>';
|
||||||
|
|
||||||
print '</td></tr></table>';
|
print '</td></tr></table>';
|
||||||
@ -199,8 +216,9 @@ print '<td align="center" valign="top">';
|
|||||||
print '<table class="nocellnopadd">';
|
print '<table class="nocellnopadd">';
|
||||||
print '<tr><td align="center">';
|
print '<tr><td align="center">';
|
||||||
print '<br><span class="opacitymedium">'.$langs->trans("ToSeeListOfAvailableRessources").'</span><br>';
|
print '<br><span class="opacitymedium">'.$langs->trans("ToSeeListOfAvailableRessources").'</span><br>';
|
||||||
|
print '<br>';
|
||||||
print '<b><a href="'.$urlwiki.'">'.$langs->trans("ClickHere").'</a></b><br>';
|
print '<b><a href="'.$urlwiki.'">'.$langs->trans("ClickHere").'</a></b><br>';
|
||||||
print '<br><br>';
|
print '<br>';
|
||||||
print '<br><br>';
|
print '<br><br>';
|
||||||
print '</td></tr></table>';
|
print '</td></tr></table>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|||||||
@ -416,9 +416,10 @@ class User extends CommonObject
|
|||||||
* @param int $loadpersonalconf 1=also load personal conf of user (in $user->conf->xxx), 0=do not load personal conf.
|
* @param int $loadpersonalconf 1=also load personal conf of user (in $user->conf->xxx), 0=do not load personal conf.
|
||||||
* @param int $entity If a value is >= 0, we force the search on a specific entity. If -1, means search depens on default setup.
|
* @param int $entity If a value is >= 0, we force the search on a specific entity. If -1, means search depens on default setup.
|
||||||
* @param int $email If defined, email to used for search
|
* @param int $email If defined, email to used for search
|
||||||
|
* @param int $fk_socpeople If defined, id of contact for search
|
||||||
* @return int <0 if KO, 0 not found, >0 if OK
|
* @return int <0 if KO, 0 not found, >0 if OK
|
||||||
*/
|
*/
|
||||||
public function fetch($id = '', $login = '', $sid = '', $loadpersonalconf = 0, $entity = -1, $email = '')
|
public function fetch($id = '', $login = '', $sid = '', $loadpersonalconf = 0, $entity = -1, $email = '', $fk_socpeople = 0)
|
||||||
{
|
{
|
||||||
global $conf, $user;
|
global $conf, $user;
|
||||||
|
|
||||||
@ -486,6 +487,8 @@ class User extends CommonObject
|
|||||||
$sql .= " AND u.login = '".$this->db->escape($login)."'";
|
$sql .= " AND u.login = '".$this->db->escape($login)."'";
|
||||||
} elseif ($email) {
|
} elseif ($email) {
|
||||||
$sql .= " AND u.email = '".$this->db->escape($email)."'";
|
$sql .= " AND u.email = '".$this->db->escape($email)."'";
|
||||||
|
} elseif ($fk_socpeople > 0) {
|
||||||
|
$sql .= " AND u.fk_socpeople = ".((int) $fk_socpeople);
|
||||||
} else {
|
} else {
|
||||||
$sql .= " AND u.rowid = ".((int) $id);
|
$sql .= " AND u.rowid = ".((int) $id);
|
||||||
}
|
}
|
||||||
@ -2755,10 +2758,10 @@ class User extends CommonObject
|
|||||||
if (empty($hidethirdpartylogo)) {
|
if (empty($hidethirdpartylogo)) {
|
||||||
$companylink = ' '.$thirdpartystatic->getNomUrl(2, (($option == 'nolink') ? 'nolink' : '')); // picto only of company
|
$companylink = ' '.$thirdpartystatic->getNomUrl(2, (($option == 'nolink') ? 'nolink' : '')); // picto only of company
|
||||||
}
|
}
|
||||||
$company = ' ('.$langs->trans("Company").': '.dol_string_nohtmltag($thirdpartystatic->name).')';
|
$company = ' ('.$langs->trans("Company").': '.img_picto('', 'company').' '.dol_string_nohtmltag($thirdpartystatic->name).')';
|
||||||
}
|
}
|
||||||
$type = ($this->socid ? $langs->trans("External").$company : $langs->trans("Internal"));
|
$type = ($this->socid ? $langs->trans("ExternalUser").$company : $langs->trans("InternalUser"));
|
||||||
$label .= '<br><b>'.$langs->trans("Type").':</b> '.dol_string_nohtmltag($type);
|
$label .= '<br><b>'.$langs->trans("Type").':</b> '.$type;
|
||||||
$label .= '</div>';
|
$label .= '</div>';
|
||||||
if ($infologin > 0) {
|
if ($infologin > 0) {
|
||||||
$label .= '<br>';
|
$label .= '<br>';
|
||||||
|
|||||||
@ -164,7 +164,7 @@ if ($resql) {
|
|||||||
$companystatic->canvas = $obj->canvas;
|
$companystatic->canvas = $obj->canvas;
|
||||||
|
|
||||||
$lastcreatedbox .= '<tr class="oddeven">';
|
$lastcreatedbox .= '<tr class="oddeven">';
|
||||||
$lastcreatedbox .= '<td class="nowraponall">';
|
$lastcreatedbox .= '<td class="nowraponall tdoverflowmax150">';
|
||||||
$lastcreatedbox .= $fuserstatic->getNomUrl(-1);
|
$lastcreatedbox .= $fuserstatic->getNomUrl(-1);
|
||||||
if (!empty($conf->multicompany->enabled) && $obj->admin && !$obj->entity) {
|
if (!empty($conf->multicompany->enabled) && $obj->admin && !$obj->entity) {
|
||||||
$lastcreatedbox .= img_picto($langs->trans("SuperAdministrator"), 'redstar');
|
$lastcreatedbox .= img_picto($langs->trans("SuperAdministrator"), 'redstar');
|
||||||
@ -172,17 +172,16 @@ if ($resql) {
|
|||||||
$lastcreatedbox .= img_picto($langs->trans("Administrator"), 'star');
|
$lastcreatedbox .= img_picto($langs->trans("Administrator"), 'star');
|
||||||
}
|
}
|
||||||
$lastcreatedbox .= "</td>";
|
$lastcreatedbox .= "</td>";
|
||||||
$lastcreatedbox .= '<td>'.$obj->login.'</td>';
|
$lastcreatedbox .= '<td class="tdoverflowmax150" title="'.dol_escape_htmltag($obj->login).'">'.dol_escape_htmltag($obj->login).'</td>';
|
||||||
$lastcreatedbox .= "<td>";
|
$texttoshow = '';
|
||||||
if ($obj->fk_soc) {
|
if ($obj->fk_soc) {
|
||||||
$lastcreatedbox .= $companystatic->getNomUrl(1);
|
$texttoshow .= $companystatic->getNomUrl(1);
|
||||||
} else {
|
} else {
|
||||||
$lastcreatedbox .= $langs->trans("InternalUser");
|
$texttoshow .= '<span class="opacitymedium">'.$langs->trans("InternalUser").'</span>';
|
||||||
}
|
}
|
||||||
if ($obj->ldap_sid) {
|
if ($obj->ldap_sid) {
|
||||||
$lastcreatedbox .= ' ('.$langs->trans("DomainUser").')';
|
$texttoshow .= ' <span class="opacitymedium">('.$langs->trans("DomainUser").')</span>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$entity = $obj->entity;
|
$entity = $obj->entity;
|
||||||
$entitystring = '';
|
$entitystring = '';
|
||||||
// TODO Set of entitystring should be done with a hook
|
// TODO Set of entitystring should be done with a hook
|
||||||
@ -194,8 +193,9 @@ if ($resql) {
|
|||||||
$entitystring = $mc->label;
|
$entitystring = $mc->label;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$lastcreatedbox .= ($entitystring ? ' ('.$entitystring.')' : '');
|
$texttoshow .= ($entitystring ? ' <span class="opacitymedium">('.$entitystring.')</span>' : '');
|
||||||
|
$lastcreatedbox .= '<td class="tdoverflowmax150" title="'.dol_escape_htmltag(dol_string_nohtmltag($texttoshow)).'">';
|
||||||
|
$lastcreatedbox .= $texttoshow;
|
||||||
$lastcreatedbox .= '</td>';
|
$lastcreatedbox .= '</td>';
|
||||||
$lastcreatedbox .= '<td class="center nowrap">'.dol_print_date($db->jdate($obj->datec), 'dayhour').'</td>';
|
$lastcreatedbox .= '<td class="center nowrap">'.dol_print_date($db->jdate($obj->datec), 'dayhour').'</td>';
|
||||||
$lastcreatedbox .= '<td class="right">';
|
$lastcreatedbox .= '<td class="right">';
|
||||||
|
|||||||
@ -532,7 +532,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Clone
|
// Clone
|
||||||
print dolGetButtonAction($langs->trans('ToClone'), '', 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.(!empty($object->socid)?'&socid='.$object->socid:'').'&action=clone&token='.newToken(), '', $permissiontoadd);
|
print dolGetButtonAction($langs->trans('ToClone'), '', 'default', $_SERVER['PHP_SELF'].'?id='.$object->id.'&action=clone&token='.newToken(), '', $permissiontoadd);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if ($permissiontoadd) {
|
if ($permissiontoadd) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user