Merge branch 'develop' of github.com:Dolibarr/dolibarr into develop#1
This commit is contained in:
commit
733e411a67
@ -134,6 +134,7 @@ NEW: Use lang selector when using a field key 'lang' in modulebuilder
|
|||||||
NEW: we need to be able to put more filters on deleteByParentField() function
|
NEW: we need to be able to put more filters on deleteByParentField() function
|
||||||
NEW: make it easier to set the `keyword`, `keywords` and `description` attributes of an ecm file object
|
NEW: make it easier to set the `keyword`, `keywords` and `description` attributes of an ecm file object
|
||||||
NEW: Experimental feature to manage user sessions in database
|
NEW: Experimental feature to manage user sessions in database
|
||||||
|
NEW: Hidden option API_DISABLE_COMPRESSION is now visible in API setup page.
|
||||||
|
|
||||||
|
|
||||||
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:
|
||||||
|
|||||||
@ -915,7 +915,7 @@ class AccountancyExport
|
|||||||
print "Montantdevise".$separator;
|
print "Montantdevise".$separator;
|
||||||
print "Idevise".$separator;
|
print "Idevise".$separator;
|
||||||
print "DateLimitReglmt".$separator;
|
print "DateLimitReglmt".$separator;
|
||||||
print "NumFacture".$separator;
|
print "NumFacture";
|
||||||
print $end_line;
|
print $end_line;
|
||||||
|
|
||||||
foreach ($objectLines as $line) {
|
foreach ($objectLines as $line) {
|
||||||
@ -997,13 +997,13 @@ class AccountancyExport
|
|||||||
print $line->multicurrency_amount . $separator;
|
print $line->multicurrency_amount . $separator;
|
||||||
|
|
||||||
// FEC:Idevise
|
// FEC:Idevise
|
||||||
print $line->multicurrency_code.$separator;
|
print $line->multicurrency_code . $separator;
|
||||||
|
|
||||||
// FEC_suppl:DateLimitReglmt
|
// FEC_suppl:DateLimitReglmt
|
||||||
print $date_limit_payment;
|
print $date_limit_payment . $separator;
|
||||||
|
|
||||||
// FEC_suppl:NumFacture
|
// FEC_suppl:NumFacture
|
||||||
print dol_trunc(self::toAnsi($refInvoice), 17, 'right', 'UTF-8', 1) . $separator;
|
print dol_trunc(self::toAnsi($refInvoice), 17, 'right', 'UTF-8', 1);
|
||||||
|
|
||||||
print $end_line;
|
print $end_line;
|
||||||
}
|
}
|
||||||
@ -1042,7 +1042,7 @@ class AccountancyExport
|
|||||||
print "Montantdevise".$separator;
|
print "Montantdevise".$separator;
|
||||||
print "Idevise".$separator;
|
print "Idevise".$separator;
|
||||||
print "DateLimitReglmt".$separator;
|
print "DateLimitReglmt".$separator;
|
||||||
print "NumFacture".$separator;
|
print "NumFacture";
|
||||||
print $end_line;
|
print $end_line;
|
||||||
|
|
||||||
foreach ($objectLines as $line) {
|
foreach ($objectLines as $line) {
|
||||||
@ -1127,10 +1127,10 @@ class AccountancyExport
|
|||||||
print $line->multicurrency_code . $separator;
|
print $line->multicurrency_code . $separator;
|
||||||
|
|
||||||
// FEC_suppl:DateLimitReglmt
|
// FEC_suppl:DateLimitReglmt
|
||||||
print $date_limit_payment;
|
print $date_limit_payment . $separator;
|
||||||
|
|
||||||
// FEC_suppl:NumFacture
|
// FEC_suppl:NumFacture
|
||||||
print dol_trunc(self::toAnsi($refInvoice), 17, 'right', 'UTF-8', 1) . $separator;
|
print dol_trunc(self::toAnsi($refInvoice), 17, 'right', 'UTF-8', 1);
|
||||||
|
|
||||||
|
|
||||||
print $end_line;
|
print $end_line;
|
||||||
|
|||||||
@ -237,8 +237,9 @@ class Members extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -102,8 +102,9 @@ class MembersTypes extends DolibarrApi
|
|||||||
|
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -100,8 +100,9 @@ class Subscriptions extends DolibarrApi
|
|||||||
$sql .= ' WHERE 1 = 1';
|
$sql .= ' WHERE 1 = 1';
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -38,7 +38,7 @@ if (!$user->admin) {
|
|||||||
|
|
||||||
$action = GETPOST('action', 'aZ09');
|
$action = GETPOST('action', 'aZ09');
|
||||||
|
|
||||||
//Activate ProfId
|
// Activate Production mode
|
||||||
if ($action == 'setproductionmode') {
|
if ($action == 'setproductionmode') {
|
||||||
$status = GETPOST('status', 'alpha');
|
$status = GETPOST('status', 'alpha');
|
||||||
|
|
||||||
@ -69,6 +69,18 @@ if ($action == 'setproductionmode') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Disable compression mode
|
||||||
|
if ($action == 'setdisablecomprssion') {
|
||||||
|
$status = GETPOST('status', 'alpha');
|
||||||
|
|
||||||
|
if (dolibarr_set_const($db, 'API_DISABLE_COMPRESSION', $status, 'chaine', 0, '', 0) > 0) {
|
||||||
|
header("Location: ".$_SERVER["PHP_SELF"]);
|
||||||
|
exit;
|
||||||
|
} else {
|
||||||
|
dol_print_error($db);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($action == 'save') {
|
if ($action == 'save') {
|
||||||
dolibarr_set_const($db, 'API_RESTRICT_ON_IP', GETPOST('API_RESTRICT_ON_IP', 'alpha'));
|
dolibarr_set_const($db, 'API_RESTRICT_ON_IP', GETPOST('API_RESTRICT_ON_IP', 'alpha'));
|
||||||
}
|
}
|
||||||
@ -116,6 +128,21 @@ if ($production_mode) {
|
|||||||
print '<td> </td>';
|
print '<td> </td>';
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
|
print '<tr class="oddeven">';
|
||||||
|
print '<td>'.$langs->trans("API_DISABLE_COMPRESSION").'</td>';
|
||||||
|
$disable_compression = (empty($conf->global->API_DISABLE_COMPRESSION) ?false:true);
|
||||||
|
if ($disable_compression) {
|
||||||
|
print '<td><a class="reposition" href="'.$_SERVER['PHP_SELF'].'?action=setdisablecomprssion&token='.newToken().'&value='.($i + 1).'&status=0">';
|
||||||
|
print img_picto($langs->trans("Activated"), 'switch_on');
|
||||||
|
print '</a></td>';
|
||||||
|
} else {
|
||||||
|
print '<td><a class="reposition" href="'.$_SERVER['PHP_SELF'].'?action=setdisablecomprssion&token='.newToken().'&value='.($i + 1).'&status=1">';
|
||||||
|
print img_picto($langs->trans("Disabled"), 'switch_off');
|
||||||
|
print '</a></td>';
|
||||||
|
}
|
||||||
|
print '<td> </td>';
|
||||||
|
print '</tr>';
|
||||||
|
|
||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
print '<td>'.$langs->trans("RESTRICT_ON_IP");
|
print '<td>'.$langs->trans("RESTRICT_ON_IP");
|
||||||
print ' '.$langs->trans("Example").': '.$langs->trans("IPListExample");
|
print ' '.$langs->trans("Example").': '.$langs->trans("IPListExample");
|
||||||
|
|||||||
@ -294,17 +294,26 @@ class DolibarrApi
|
|||||||
/**
|
/**
|
||||||
* Return if a $sqlfilters parameter is valid
|
* Return if a $sqlfilters parameter is valid
|
||||||
*
|
*
|
||||||
* @param string $sqlfilters sqlfilter string
|
* @param string $sqlfilters sqlfilter string
|
||||||
* @return boolean True if valid, False if not valid
|
* @param string $error Error message
|
||||||
|
* @return boolean|string True if valid, False if not valid
|
||||||
*/
|
*/
|
||||||
protected function _checkFilters($sqlfilters)
|
protected function _checkFilters($sqlfilters, &$error = '')
|
||||||
{
|
{
|
||||||
// phpcs:enable
|
// phpcs:enable
|
||||||
|
|
||||||
//$regexstring='\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)';
|
//$regexstring='\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)';
|
||||||
//$tmp=preg_replace_all('/'.$regexstring.'/', '', $sqlfilters);
|
//$tmp=preg_replace_all('/'.$regexstring.'/', '', $sqlfilters);
|
||||||
$tmp = $sqlfilters;
|
$tmp = trim($sqlfilters);
|
||||||
$ok = 0;
|
|
||||||
$i = 0; $nb = strlen($tmp);
|
$i = 0; $nb = strlen($tmp);
|
||||||
|
|
||||||
|
if ($nb > 0 && $tmp[0] != '(') {
|
||||||
|
$error = "Bad sqlfilters (first and last characters must be open and closing parenthesis) = ".$sqlfilters;
|
||||||
|
dol_syslog($error, LOG_WARNING);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
$counter = 0;
|
$counter = 0;
|
||||||
while ($i < $nb) {
|
while ($i < $nb) {
|
||||||
if ($tmp[$i] == '(') {
|
if ($tmp[$i] == '(') {
|
||||||
|
|||||||
@ -76,8 +76,9 @@ class Setup extends DolibarrApi
|
|||||||
$sql .= " WHERE t.active = ".((int) $active);
|
$sql .= " WHERE t.active = ".((int) $active);
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(400, 'error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -139,8 +140,9 @@ class Setup extends DolibarrApi
|
|||||||
$sql .= " WHERE t.active = ".((int) $active);
|
$sql .= " WHERE t.active = ".((int) $active);
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(400, 'error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -203,8 +205,9 @@ class Setup extends DolibarrApi
|
|||||||
$sql .= " AND t.active = ".((int) $active);
|
$sql .= " AND t.active = ".((int) $active);
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(400, 'error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -267,8 +270,9 @@ class Setup extends DolibarrApi
|
|||||||
$sql .= " WHERE 1 = 1";
|
$sql .= " WHERE 1 = 1";
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -367,8 +371,9 @@ class Setup extends DolibarrApi
|
|||||||
$sql .= " WHERE 1 = 1";
|
$sql .= " WHERE 1 = 1";
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -542,10 +547,11 @@ class Setup extends DolibarrApi
|
|||||||
$sql .= " WHERE t.active = ".((int) $active);
|
$sql .= " WHERE t.active = ".((int) $active);
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(400, 'error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(400, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -657,8 +663,9 @@ class Setup extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -720,8 +727,9 @@ class Setup extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -787,8 +795,9 @@ class Setup extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -849,8 +858,9 @@ class Setup extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -921,8 +931,9 @@ class Setup extends DolibarrApi
|
|||||||
|
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -991,8 +1002,9 @@ class Setup extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -1064,8 +1076,9 @@ class Setup extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -1128,8 +1141,9 @@ class Setup extends DolibarrApi
|
|||||||
$sql .= " AND t.active = ".((int) $active);
|
$sql .= " AND t.active = ".((int) $active);
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(400, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(400, 'error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -1186,8 +1200,9 @@ class Setup extends DolibarrApi
|
|||||||
$sql .= " AND t.active = ".((int) $active);
|
$sql .= " AND t.active = ".((int) $active);
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(400, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(400, 'error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -1244,8 +1259,9 @@ class Setup extends DolibarrApi
|
|||||||
$sql .= " WHERE t.active = ".((int) $active);
|
$sql .= " WHERE t.active = ".((int) $active);
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -1306,8 +1322,9 @@ class Setup extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -1364,8 +1381,9 @@ class Setup extends DolibarrApi
|
|||||||
$sql .= " WHERE t.active = ".((int) $active);
|
$sql .= " WHERE t.active = ".((int) $active);
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -1429,8 +1447,9 @@ class Setup extends DolibarrApi
|
|||||||
$sql .= " AND t.active = ".((int) $active);
|
$sql .= " AND t.active = ".((int) $active);
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -1487,8 +1506,9 @@ class Setup extends DolibarrApi
|
|||||||
$sql .= " WHERE t.active = ".((int) $active);
|
$sql .= " WHERE t.active = ".((int) $active);
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -1545,8 +1565,9 @@ class Setup extends DolibarrApi
|
|||||||
$sql .= " WHERE t.active = ".((int) $active);
|
$sql .= " WHERE t.active = ".((int) $active);
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -1605,8 +1626,9 @@ class Setup extends DolibarrApi
|
|||||||
// if ($module) $sql .= " AND t.module LIKE '%".$this->db->escape($module)."%'";
|
// if ($module) $sql .= " AND t.module LIKE '%".$this->db->escape($module)."%'";
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -346,17 +346,19 @@ if (!empty($reg[1]) && ($reg[1] != 'explorer' || ($reg[2] != '/swagger.json' &&
|
|||||||
// If API_DISABLE_COMPRESSION is set, returnResponse is false => It use default handling so output result directly.
|
// If API_DISABLE_COMPRESSION is set, returnResponse is false => It use default handling so output result directly.
|
||||||
$usecompression = (empty($conf->global->API_DISABLE_COMPRESSION) && !empty($_SERVER['HTTP_ACCEPT_ENCODING']));
|
$usecompression = (empty($conf->global->API_DISABLE_COMPRESSION) && !empty($_SERVER['HTTP_ACCEPT_ENCODING']));
|
||||||
$foundonealgorithm = 0;
|
$foundonealgorithm = 0;
|
||||||
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'br') !== false && is_callable('brotli_compress')) {
|
if ($usecompression) {
|
||||||
$foundonealgorithm++;
|
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'br') !== false && is_callable('brotli_compress')) {
|
||||||
}
|
$foundonealgorithm++;
|
||||||
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'bz') !== false && is_callable('bzcompress')) {
|
}
|
||||||
$foundonealgorithm++;
|
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'bz') !== false && is_callable('bzcompress')) {
|
||||||
}
|
$foundonealgorithm++;
|
||||||
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false && is_callable('gzencode')) {
|
}
|
||||||
$foundonealgorithm++;
|
if (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false && is_callable('gzencode')) {
|
||||||
}
|
$foundonealgorithm++;
|
||||||
if (!$foundonealgorithm) {
|
}
|
||||||
$usecompression = false;
|
if (!$foundonealgorithm) {
|
||||||
|
$usecompression = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//dol_syslog('We found some compression algoithm: '.$foundonealgorithm.' -> usecompression='.$usecompression, LOG_DEBUG);
|
//dol_syslog('We found some compression algoithm: '.$foundonealgorithm.' -> usecompression='.$usecompression, LOG_DEBUG);
|
||||||
|
|||||||
@ -796,7 +796,7 @@ class BlockedLog
|
|||||||
{
|
{
|
||||||
|
|
||||||
$res = $this->db->query("UPDATE ".MAIN_DB_PREFIX."blockedlog SET certified=1 WHERE rowid=".((int) $this->id));
|
$res = $this->db->query("UPDATE ".MAIN_DB_PREFIX."blockedlog SET certified=1 WHERE rowid=".((int) $this->id));
|
||||||
if ($res === false) {
|
if (!$res) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -148,8 +148,9 @@ class Boms extends DolibarrApi
|
|||||||
$sql .= " AND sc.fk_user = ".((int) $search_sale);
|
$sql .= " AND sc.fk_user = ".((int) $search_sale);
|
||||||
}
|
}
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -66,7 +66,7 @@ function printDropdownBookmarksList()
|
|||||||
|
|
||||||
|
|
||||||
// Url to list bookmark
|
// Url to list bookmark
|
||||||
$listbtn = '<a class="top-menu-dropdown-link" title="'.$langs->trans('AddThisPageToBookmarks').'" href="'.DOL_URL_ROOT.'/bookmarks/list.php" >';
|
$listbtn = '<a class="top-menu-dropdown-link" title="'.$langs->trans('Bookmarks').'" href="'.DOL_URL_ROOT.'/bookmarks/list.php" >';
|
||||||
$listbtn .= img_picto('', 'bookmark', 'class="paddingright"').$langs->trans('Bookmarks').'</a>';
|
$listbtn .= img_picto('', 'bookmark', 'class="paddingright"').$langs->trans('Bookmarks').'</a>';
|
||||||
|
|
||||||
// Url to go on create new bookmark page
|
// Url to go on create new bookmark page
|
||||||
|
|||||||
@ -175,7 +175,7 @@ print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sort
|
|||||||
print '<div class="div-table-responsive">';
|
print '<div class="div-table-responsive">';
|
||||||
print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
|
print '<table class="tagtable liste'.($moreforfilter ? " listwithfilterbefore" : "").'">'."\n";
|
||||||
|
|
||||||
print "<tr class=\"liste_titre\">";
|
print '<tr class="liste_titre">';
|
||||||
//print "<td> </td>";
|
//print "<td> </td>";
|
||||||
print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "b.rowid", "", $param, 'align="left"', $sortfield, $sortorder);
|
print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "b.rowid", "", $param, 'align="left"', $sortfield, $sortorder);
|
||||||
print_liste_field_titre("Title", $_SERVER["PHP_SELF"], "b.title", "", $param, 'align="left"', $sortfield, $sortorder);
|
print_liste_field_titre("Title", $_SERVER["PHP_SELF"], "b.title", "", $param, 'align="left"', $sortfield, $sortorder);
|
||||||
@ -199,7 +199,7 @@ while ($i < min($num, $limit)) {
|
|||||||
print '<tr class="oddeven">';
|
print '<tr class="oddeven">';
|
||||||
|
|
||||||
// Id
|
// Id
|
||||||
print '<td class="left">';
|
print '<td class="nowraponall">';
|
||||||
print $object->getNomUrl(1);
|
print $object->getNomUrl(1);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
@ -268,14 +268,12 @@ while ($i < min($num, $limit)) {
|
|||||||
print '<td class="right">'.$obj->position."</td>";
|
print '<td class="right">'.$obj->position."</td>";
|
||||||
|
|
||||||
// Actions
|
// Actions
|
||||||
print '<td class="nowrap right">';
|
print '<td class="nowraponall right">';
|
||||||
if ($canedit) {
|
if ($canedit) {
|
||||||
print '<a class="editfielda" href="'.DOL_URL_ROOT.'/bookmarks/card.php?action=edit&token='.newToken().'&id='.$obj->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"]).'">'.img_edit()."</a>";
|
print '<a class="editfielda marginleftonly" href="'.DOL_URL_ROOT.'/bookmarks/card.php?action=edit&token='.newToken().'&id='.$obj->rowid.'&backtopage='.urlencode($_SERVER["PHP_SELF"]).'">'.img_edit()."</a>";
|
||||||
}
|
}
|
||||||
if ($candelete) {
|
if ($candelete) {
|
||||||
print '<a class="marginleftonly" href="'.$_SERVER["PHP_SELF"].'?action=delete&token='.newToken().'&id='.$obj->rowid.'">'.img_delete().'</a>';
|
print '<a class="marginleftonly" href="'.$_SERVER["PHP_SELF"].'?action=delete&token='.newToken().'&id='.$obj->rowid.'">'.img_delete().'</a>';
|
||||||
} else {
|
|
||||||
print " ";
|
|
||||||
}
|
}
|
||||||
print "</td>";
|
print "</td>";
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
|
|||||||
@ -145,8 +145,9 @@ class Categories extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -158,8 +158,9 @@ class AgendaEvents extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -196,8 +196,9 @@ class Proposals extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -199,8 +199,9 @@ class Orders extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -132,11 +132,19 @@ class Account extends CommonObject
|
|||||||
public $bic;
|
public $bic;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IBAN number (International Bank Account Number). Stored into iban_prefix field into database
|
* IBAN number (International Bank Account Number). Stored into iban_prefix field into database (TODO Rename field in database)
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public $iban;
|
public $iban;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IBAN number
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
* @deprecated see $iban
|
||||||
|
*/
|
||||||
|
public $iban_prefix;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Name of account holder
|
* Name of account holder
|
||||||
* @var string
|
* @var string
|
||||||
|
|||||||
@ -81,8 +81,9 @@ class BankAccounts extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -438,8 +439,9 @@ class BankAccounts extends DolibarrApi
|
|||||||
|
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -257,10 +257,14 @@ $form = new Form($db);
|
|||||||
|
|
||||||
llxHeader('', $langs->trans("BankTransaction"));
|
llxHeader('', $langs->trans("BankTransaction"));
|
||||||
|
|
||||||
|
$arrayselected = array();
|
||||||
|
|
||||||
$c = new Categorie($db);
|
$c = new Categorie($db);
|
||||||
$cats = $c->containing($rowid, Categorie::TYPE_BANK_LINE);
|
$cats = $c->containing($rowid, Categorie::TYPE_BANK_LINE);
|
||||||
foreach ($cats as $cat) {
|
if (is_array($cats)) {
|
||||||
$arrayselected[] = $cat->id;
|
foreach ($cats as $cat) {
|
||||||
|
$arrayselected[] = $cat->id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$head = bankline_prepare_head($rowid);
|
$head = bankline_prepare_head($rowid);
|
||||||
@ -570,11 +574,15 @@ if ($result) {
|
|||||||
// Bank line
|
// Bank line
|
||||||
print '<tr><td class="toptd">'.$form->editfieldkey('RubriquesTransactions', 'custcats', '', $object, 0).'</td><td>';
|
print '<tr><td class="toptd">'.$form->editfieldkey('RubriquesTransactions', 'custcats', '', $object, 0).'</td><td>';
|
||||||
$cate_arbo = $form->select_all_categories(Categorie::TYPE_BANK_LINE, null, 'parent', null, null, 1);
|
$cate_arbo = $form->select_all_categories(Categorie::TYPE_BANK_LINE, null, 'parent', null, null, 1);
|
||||||
|
|
||||||
$arrayselected = array();
|
$arrayselected = array();
|
||||||
|
|
||||||
$c = new Categorie($db);
|
$c = new Categorie($db);
|
||||||
$cats = $c->containing($bankline->id, Categorie::TYPE_BANK_LINE);
|
$cats = $c->containing($bankline->id, Categorie::TYPE_BANK_LINE);
|
||||||
foreach ($cats as $cat) {
|
if (is_array($cats)) {
|
||||||
$arrayselected[] = $cat->id;
|
foreach ($cats as $cat) {
|
||||||
|
$arrayselected[] = $cat->id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
print img_picto('', 'category', 'class="paddingright"').$form->multiselectarray('custcats', $cate_arbo, $arrayselected, null, null, null, null, "90%");
|
print img_picto('', 'category', 'class="paddingright"').$form->multiselectarray('custcats', $cate_arbo, $arrayselected, null, null, null, null, "90%");
|
||||||
print "</td></tr>";
|
print "</td></tr>";
|
||||||
|
|||||||
@ -221,8 +221,9 @@ class Invoices extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -1977,7 +1977,7 @@ class FactureLigneRec extends CommonInvoiceLine
|
|||||||
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.' WHERE rowid='.((int) $this->id);
|
$sql = 'DELETE FROM '.MAIN_DB_PREFIX.$this->table_element.' WHERE rowid='.((int) $this->id);
|
||||||
|
|
||||||
$res = $this->db->query($sql);
|
$res = $this->db->query($sql);
|
||||||
if ($res === false) {
|
if (!$res) {
|
||||||
$error++;
|
$error++;
|
||||||
$this->errors[] = $this->db->lasterror();
|
$this->errors[] = $this->db->lasterror();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -212,7 +212,7 @@ if ($result) {
|
|||||||
print '<td class="right"><span class="amount">'.price($obj->amount)."</span></td>\n";
|
print '<td class="right"><span class="amount">'.price($obj->amount)."</span></td>\n";
|
||||||
|
|
||||||
print '<td class="right">';
|
print '<td class="right">';
|
||||||
print $bon->LibStatut($obj->statut, 3);
|
print $bon->LibStatut($obj->statut, 5);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
print '<td class="right"></td>'."\n";
|
print '<td class="right"></td>'."\n";
|
||||||
|
|||||||
@ -147,8 +147,9 @@ class Contracts extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -111,12 +111,20 @@ if (empty($conf->bookmark->enabled)) {
|
|||||||
if ($i == 0) {
|
if ($i == 0) {
|
||||||
$bookmarkList .= '<br><span class="opacitymedium">'.$langs->trans("NoBookmarks").'</span>';
|
$bookmarkList .= '<br><span class="opacitymedium">'.$langs->trans("NoBookmarks").'</span>';
|
||||||
$bookmarkList .= '<br><br>';
|
$bookmarkList .= '<br><br>';
|
||||||
|
|
||||||
$newcardbutton = '';
|
|
||||||
$newcardbutton .= dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/bookmarks/card.php?action=create&backtopage='.urlencode(DOL_URL_ROOT.'/bookmarks/list.php'), '', !empty($user->rights->bookmark->creer));
|
|
||||||
|
|
||||||
$bookmarkList .= '<center>'.$newcardbutton.'</center>';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$newcardbutton = '';
|
||||||
|
$newcardbutton .= dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/bookmarks/card.php?action=create&backtopage='.urlencode(DOL_URL_ROOT.'/bookmarks/list.php'), '', !empty($user->rights->bookmark->creer));
|
||||||
|
|
||||||
|
// Url to list bookmark
|
||||||
|
$bookmarkList .= '<br>';
|
||||||
|
$bookmarkList .= '<a class="top-menu-dropdown-link" title="'.$langs->trans('Bookmarks').'" href="'.DOL_URL_ROOT.'/bookmarks/list.php" >';
|
||||||
|
$bookmarkList .= img_picto('', 'bookmark', 'class="paddingright"').$langs->trans('Bookmarks').'</a>';
|
||||||
|
$bookmarkList .= '<br>';
|
||||||
|
$bookmarkList .= '<br>';
|
||||||
|
|
||||||
|
$bookmarkList .= '<center>'.$newcardbutton.'</center>';
|
||||||
|
|
||||||
$bookmarkList .= '</div>';
|
$bookmarkList .= '</div>';
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1273,7 +1273,7 @@ abstract class CommonObject
|
|||||||
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople t on ec.fk_socpeople = t.rowid";
|
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople t on ec.fk_socpeople = t.rowid";
|
||||||
}
|
}
|
||||||
$sql .= " WHERE ec.element_id = ".((int) $this->id);
|
$sql .= " WHERE ec.element_id = ".((int) $this->id);
|
||||||
$sql .= " AND ec.fk_c_type_contact=tc.rowid";
|
$sql .= " AND ec.fk_c_type_contact = tc.rowid";
|
||||||
$sql .= " AND tc.element = '".$this->db->escape($this->element)."'";
|
$sql .= " AND tc.element = '".$this->db->escape($this->element)."'";
|
||||||
if ($code) {
|
if ($code) {
|
||||||
$sql .= " AND tc.code = '".$this->db->escape($code)."'";
|
$sql .= " AND tc.code = '".$this->db->escape($code)."'";
|
||||||
@ -1662,8 +1662,8 @@ abstract class CommonObject
|
|||||||
* Looks for an object with ref matching the wildcard provided
|
* Looks for an object with ref matching the wildcard provided
|
||||||
* It does only work when $this->table_ref_field is set
|
* It does only work when $this->table_ref_field is set
|
||||||
*
|
*
|
||||||
* @param string $ref Wildcard
|
* @param string $ref Wildcard
|
||||||
* @return int >1 = OK, 0 = Not found or table_ref_field not defined, <0 = KO
|
* @return int >1 = OK, 0 = Not found or table_ref_field not defined, <0 = KO
|
||||||
*/
|
*/
|
||||||
public function fetchOneLike($ref)
|
public function fetchOneLike($ref)
|
||||||
{
|
{
|
||||||
@ -8740,7 +8740,7 @@ abstract class CommonObject
|
|||||||
$sql .= " VALUES (".implode(", ", $values).")"; // $values can contains 'abc' or 123
|
$sql .= " VALUES (".implode(", ", $values).")"; // $values can contains 'abc' or 123
|
||||||
|
|
||||||
$res = $this->db->query($sql);
|
$res = $this->db->query($sql);
|
||||||
if ($res === false) {
|
if (!$res) {
|
||||||
$error++;
|
$error++;
|
||||||
if ($this->db->lasterrno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
|
if ($this->db->lasterrno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') {
|
||||||
$this->errors[] = "ErrorRefAlreadyExists";
|
$this->errors[] = "ErrorRefAlreadyExists";
|
||||||
@ -8992,7 +8992,7 @@ abstract class CommonObject
|
|||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
if (!$error) {
|
if (!$error) {
|
||||||
$res = $this->db->query($sql);
|
$res = $this->db->query($sql);
|
||||||
if ($res === false) {
|
if (!$res) {
|
||||||
$error++;
|
$error++;
|
||||||
$this->errors[] = $this->db->lasterror();
|
$this->errors[] = $this->db->lasterror();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -221,6 +221,7 @@ class dolReceiptPrinter extends Printer
|
|||||||
'dol_value_mysoc_idprof6' => 'ProfId6',
|
'dol_value_mysoc_idprof6' => 'ProfId6',
|
||||||
'dol_value_mysoc_tva_intra' => 'VATIntra',
|
'dol_value_mysoc_tva_intra' => 'VATIntra',
|
||||||
'dol_value_mysoc_capital' => 'Capital',
|
'dol_value_mysoc_capital' => 'Capital',
|
||||||
|
'dol_value_mysoc_url' => 'Web',
|
||||||
'dol_value_vendor_lastname' => 'VendorLastname',
|
'dol_value_vendor_lastname' => 'VendorLastname',
|
||||||
'dol_value_vendor_firstname' => 'VendorFirstname',
|
'dol_value_vendor_firstname' => 'VendorFirstname',
|
||||||
'dol_value_vendor_mail' => 'VendorEmail',
|
'dol_value_vendor_mail' => 'VendorEmail',
|
||||||
@ -607,6 +608,7 @@ class dolReceiptPrinter extends Printer
|
|||||||
$this->template = str_replace('{dol_value_mysoc_idprof6}', $mysoc->idprof6, $this->template);
|
$this->template = str_replace('{dol_value_mysoc_idprof6}', $mysoc->idprof6, $this->template);
|
||||||
$this->template = str_replace('{dol_value_mysoc_tva_intra}', $mysoc->tva_intra, $this->template);
|
$this->template = str_replace('{dol_value_mysoc_tva_intra}', $mysoc->tva_intra, $this->template);
|
||||||
$this->template = str_replace('{dol_value_mysoc_capital}', $mysoc->capital, $this->template);
|
$this->template = str_replace('{dol_value_mysoc_capital}', $mysoc->capital, $this->template);
|
||||||
|
$this->template = str_replace('{dol_value_mysoc_url}', $mysoc->url, $this->template);
|
||||||
|
|
||||||
$this->template = str_replace('{dol_value_vendor_firstname}', $user->firstname, $this->template);
|
$this->template = str_replace('{dol_value_vendor_firstname}', $user->firstname, $this->template);
|
||||||
$this->template = str_replace('{dol_value_vendor_lastname}', $user->lastname, $this->template);
|
$this->template = str_replace('{dol_value_vendor_lastname}', $user->lastname, $this->template);
|
||||||
@ -672,9 +674,9 @@ class dolReceiptPrinter extends Printer
|
|||||||
$vatarray[$line->tva_tx] += $line->total_tva;
|
$vatarray[$line->tva_tx] += $line->total_tva;
|
||||||
}
|
}
|
||||||
foreach ($vatarray as $vatkey => $vatvalue) {
|
foreach ($vatarray as $vatkey => $vatvalue) {
|
||||||
$spacestoadd = $nbcharactbyline - strlen($vatkey) - 12;
|
$spacestoadd = $nbcharactbyline - strlen($vatkey) - 12;
|
||||||
$spaces = str_repeat(' ', $spacestoadd > 0 ? $spacestoadd : 0);
|
$spaces = str_repeat(' ', $spacestoadd > 0 ? $spacestoadd : 0);
|
||||||
$this->printer->text($spaces.$vatkey.'% '.str_pad(price($vatvalue), 10, ' ', STR_PAD_LEFT)."\n");
|
$this->printer->text($spaces.$vatkey.'% '.str_pad(price($vatvalue), 10, ' ', STR_PAD_LEFT)."\n");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'DOL_PRINT_OBJECT_TAX1':
|
case 'DOL_PRINT_OBJECT_TAX1':
|
||||||
|
|||||||
@ -347,8 +347,7 @@ class EmailSenderProfile extends CommonObject
|
|||||||
*/
|
*/
|
||||||
public function info($id)
|
public function info($id)
|
||||||
{
|
{
|
||||||
$sql = 'SELECT rowid, date_creation as datec, tms as datem,';
|
$sql = 'SELECT rowid, date_creation as datec, tms as datem';
|
||||||
$sql .= ' fk_user_creat, fk_user_modif';
|
|
||||||
$sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t';
|
$sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t';
|
||||||
$sql .= ' WHERE t.rowid = '.((int) $id);
|
$sql .= ' WHERE t.rowid = '.((int) $id);
|
||||||
$result = $this->db->query($sql);
|
$result = $this->db->query($sql);
|
||||||
@ -356,27 +355,9 @@ class EmailSenderProfile extends CommonObject
|
|||||||
if ($this->db->num_rows($result)) {
|
if ($this->db->num_rows($result)) {
|
||||||
$obj = $this->db->fetch_object($result);
|
$obj = $this->db->fetch_object($result);
|
||||||
$this->id = $obj->rowid;
|
$this->id = $obj->rowid;
|
||||||
if ($obj->fk_user_author) {
|
|
||||||
$cuser = new User($this->db);
|
|
||||||
$cuser->fetch($obj->fk_user_author);
|
|
||||||
$this->user_creation = $cuser;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($obj->fk_user_valid) {
|
|
||||||
$vuser = new User($this->db);
|
|
||||||
$vuser->fetch($obj->fk_user_valid);
|
|
||||||
$this->user_validation = $vuser;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($obj->fk_user_cloture) {
|
|
||||||
$cluser = new User($this->db);
|
|
||||||
$cluser->fetch($obj->fk_user_cloture);
|
|
||||||
$this->user_cloture = $cluser;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->date_creation = $this->db->jdate($obj->datec);
|
$this->date_creation = $this->db->jdate($obj->datec);
|
||||||
$this->date_modification = $this->db->jdate($obj->datem);
|
$this->date_modification = $this->db->jdate($obj->datem);
|
||||||
$this->date_validation = $this->db->jdate($obj->datev);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->db->free($result);
|
$this->db->free($result);
|
||||||
|
|||||||
@ -925,6 +925,7 @@ class ExtraFields
|
|||||||
// Old usage
|
// Old usage
|
||||||
$label = $this->attribute_label[$key];
|
$label = $this->attribute_label[$key];
|
||||||
$type = $this->attribute_type[$key];
|
$type = $this->attribute_type[$key];
|
||||||
|
$list = $this->attribute_list[$key];
|
||||||
$hidden = (empty($list) ? 1 : 0); // If empty, we are sure it is hidden, otherwise we show. If it depends on mode (view/create/edit form or list, this must be filtered by caller)
|
$hidden = (empty($list) ? 1 : 0); // If empty, we are sure it is hidden, otherwise we show. If it depends on mode (view/create/edit form or list, this must be filtered by caller)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -75,7 +75,7 @@ class FormAdmin
|
|||||||
|
|
||||||
// If the language to select is not inside the list of available language and empty value is not available, we must find
|
// If the language to select is not inside the list of available language and empty value is not available, we must find
|
||||||
// an alternative as the language code to pre-select (to avoid to have first element in list pre-selected).
|
// an alternative as the language code to pre-select (to avoid to have first element in list pre-selected).
|
||||||
if ($selected && !isset($langs_available[$selected]) && empty($showempty)) {
|
if ($selected && !array_key_exists($selected, $langs_available) && empty($showempty)) {
|
||||||
$tmparray = explode('_', $selected);
|
$tmparray = explode('_', $selected);
|
||||||
if (!empty($tmparray[1])) {
|
if (!empty($tmparray[1])) {
|
||||||
$selected = getLanguageCodeFromCountryCode($tmparray[1]);
|
$selected = getLanguageCodeFromCountryCode($tmparray[1]);
|
||||||
|
|||||||
@ -1646,6 +1646,7 @@ class FormFile
|
|||||||
print '</tr>'."\n";
|
print '</tr>'."\n";
|
||||||
|
|
||||||
// To show ref or specific information according to view to show (defined by $module)
|
// To show ref or specific information according to view to show (defined by $module)
|
||||||
|
$object_instance = null;
|
||||||
if ($modulepart == 'company') {
|
if ($modulepart == 'company') {
|
||||||
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
|
||||||
$object_instance = new Societe($this->db);
|
$object_instance = new Societe($this->db);
|
||||||
@ -1813,21 +1814,26 @@ class FormFile
|
|||||||
if (!$id && !$ref) {
|
if (!$id && !$ref) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$found = 0;
|
$found = 0;
|
||||||
if (!empty($this->cache_objects[$modulepart.'_'.$id.'_'.$ref])) {
|
if (!empty($this->cache_objects[$modulepart.'_'.$id.'_'.$ref])) {
|
||||||
$found = 1;
|
$found = 1;
|
||||||
} else {
|
} else {
|
||||||
//print 'Fetch '.$id." - ".$ref.' class='.get_class($object_instance).'<br>';
|
//print 'Fetch '.$id." - ".$ref.' class='.get_class($object_instance).'<br>';
|
||||||
|
|
||||||
if ($id) {
|
$result = 0;
|
||||||
$result = $object_instance->fetch($id);
|
if (is_object($object_instance)) {
|
||||||
} else {
|
if ($id) {
|
||||||
//fetchOneLike looks for objects with wildcards in its reference.
|
$result = $object_instance->fetch($id);
|
||||||
//It is useful for those masks who get underscores instead of their actual symbols
|
} else {
|
||||||
//fetchOneLike requires some info in the object. If it doesn't have it, then 0 is returned
|
if (!($result = $object_instance->fetch('', $ref))) {
|
||||||
//that's why we look only into fetchOneLike when fetch returns 0
|
//fetchOneLike looks for objects with wildcards in its reference.
|
||||||
if (!$result = $object_instance->fetch('', $ref)) {
|
//It is useful for those masks who get underscores instead of their actual symbols (because the _ had replaced a forbiddn char)
|
||||||
$result = $object_instance->fetchOneLike($ref);
|
//fetchOneLike requires some info in the object. If it doesn't have it, then 0 is returned
|
||||||
|
//that's why we look only into fetchOneLike when fetch returns 0
|
||||||
|
// TODO Remove this part ?
|
||||||
|
$result = $object_instance->fetchOneLike($ref);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -105,8 +105,9 @@ class FormSetup
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate an attributes string form an input array
|
* Generate an attributes string form an input array
|
||||||
* @param array $attributes an array of attributes keys and values,
|
*
|
||||||
* @return string
|
* @param array $attributes an array of attributes keys and values,
|
||||||
|
* @return string attribute string
|
||||||
*/
|
*/
|
||||||
static public function generateAttributesStringFromArray($attributes)
|
static public function generateAttributesStringFromArray($attributes)
|
||||||
{
|
{
|
||||||
@ -125,8 +126,10 @@ class FormSetup
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param bool $editMode true will display output on edit mod
|
* generateOutput
|
||||||
* @return string
|
*
|
||||||
|
* @param bool $editMode true will display output on edit mod
|
||||||
|
* @return string html output
|
||||||
*/
|
*/
|
||||||
public function generateOutput($editMode = false)
|
public function generateOutput($editMode = false)
|
||||||
{
|
{
|
||||||
@ -188,8 +191,10 @@ class FormSetup
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param bool $editMode true will display output on edit mod
|
* generateTableOutput
|
||||||
* @return string
|
*
|
||||||
|
* @param bool $editMode true will display output on edit mod
|
||||||
|
* @return string html output
|
||||||
*/
|
*/
|
||||||
public function generateTableOutput($editMode = false)
|
public function generateTableOutput($editMode = false)
|
||||||
{
|
{
|
||||||
@ -230,12 +235,13 @@ class FormSetup
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param bool $noMessageInUpdate display event message on errors and success
|
* saveConfFromPost
|
||||||
* @return void|null
|
*
|
||||||
|
* @param bool $noMessageInUpdate display event message on errors and success
|
||||||
|
* @return void|null
|
||||||
*/
|
*/
|
||||||
public function saveConfFromPost($noMessageInUpdate = false)
|
public function saveConfFromPost($noMessageInUpdate = false)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (empty($this->items)) {
|
if (empty($this->items)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -266,9 +272,11 @@ class FormSetup
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param FormSetupItem $item the setup item
|
* generateLineOutput
|
||||||
* @param bool $editMode Display as edit mod
|
*
|
||||||
* @return string the html output for an setup item
|
* @param FormSetupItem $item the setup item
|
||||||
|
* @param bool $editMode Display as edit mod
|
||||||
|
* @return string the html output for an setup item
|
||||||
*/
|
*/
|
||||||
public function generateLineOutput($item, $editMode = false)
|
public function generateLineOutput($item, $editMode = false)
|
||||||
{
|
{
|
||||||
@ -306,8 +314,9 @@ class FormSetup
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $params an array of arrays of params from old modulBuilder params
|
* Method used to test module builder convertion to this form usage
|
||||||
* @deprecated was used to test module builder convertion to this form usage
|
*
|
||||||
|
* @param array $params an array of arrays of params from old modulBuilder params
|
||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
public function addItemsFromParamsArray($params)
|
public function addItemsFromParamsArray($params)
|
||||||
@ -321,10 +330,11 @@ class FormSetup
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* From old
|
* From old
|
||||||
* @param string $confKey the conf name to store
|
* Method was used to test module builder convertion to this form usage.
|
||||||
* @param array $params an array of params from old modulBuilder params
|
*
|
||||||
* @deprecated was used to test module builder convertion to this form usage
|
* @param string $confKey the conf name to store
|
||||||
* @return bool
|
* @param array $params an array of params from old modulBuilder params
|
||||||
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function addItemFromParams($confKey, $params)
|
public function addItemFromParams($confKey, $params)
|
||||||
{
|
{
|
||||||
@ -359,9 +369,10 @@ class FormSetup
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* used to export param array for /core/actions_setmoduleoptions.inc.php template
|
* Used to export param array for /core/actions_setmoduleoptions.inc.php template
|
||||||
|
* Method exists only for manage setup convertion
|
||||||
|
*
|
||||||
* @return array $arrayofparameters for /core/actions_setmoduleoptions.inc.php
|
* @return array $arrayofparameters for /core/actions_setmoduleoptions.inc.php
|
||||||
* @deprecated yes this method came deprecated because it exists only for manage setup convertion
|
|
||||||
*/
|
*/
|
||||||
public function exportItemsAsParamsArray()
|
public function exportItemsAsParamsArray()
|
||||||
{
|
{
|
||||||
@ -379,6 +390,7 @@ class FormSetup
|
|||||||
/**
|
/**
|
||||||
* Reload for each item default conf
|
* Reload for each item default conf
|
||||||
* note: this will override custom configuration
|
* note: this will override custom configuration
|
||||||
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function reloadConfs()
|
public function reloadConfs()
|
||||||
@ -396,9 +408,10 @@ class FormSetup
|
|||||||
/**
|
/**
|
||||||
* Create a new item
|
* Create a new item
|
||||||
* the tagret is useful with hooks : that allow externals modules to add setup items on good place
|
* the tagret is useful with hooks : that allow externals modules to add setup items on good place
|
||||||
* @param $confKey the conf key used in database
|
*
|
||||||
* @param string $targetItemKey target item used to place the new item beside
|
* @param string $confKey the conf key used in database
|
||||||
* @param bool $insertAfterTarget insert before or after target item ?
|
* @param string $targetItemKey target item used to place the new item beside
|
||||||
|
* @param bool $insertAfterTarget insert before or after target item ?
|
||||||
* @return FormSetupItem the new setup item created
|
* @return FormSetupItem the new setup item created
|
||||||
*/
|
*/
|
||||||
public function newItem($confKey, $targetItemKey = false, $insertAfterTarget = false)
|
public function newItem($confKey, $targetItemKey = false, $insertAfterTarget = false)
|
||||||
@ -436,6 +449,7 @@ class FormSetup
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Sort items according to rank
|
* Sort items according to rank
|
||||||
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function sortingItems()
|
public function sortingItems()
|
||||||
@ -445,6 +459,8 @@ class FormSetup
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* getCurentItemMaxRank
|
||||||
|
*
|
||||||
* @param bool $cache To use cache or not
|
* @param bool $cache To use cache or not
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
@ -469,8 +485,9 @@ class FormSetup
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* set new max rank if needed
|
* set new max rank if needed
|
||||||
* @param int $rank the item rank
|
*
|
||||||
* @return int|void
|
* @param int $rank the item rank
|
||||||
|
* @return int|void new max rank
|
||||||
*/
|
*/
|
||||||
public function setItemMaxRank($rank)
|
public function setItemMaxRank($rank)
|
||||||
{
|
{
|
||||||
@ -479,10 +496,10 @@ class FormSetup
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get item position rank from item key
|
* get item position rank from item key
|
||||||
*
|
*
|
||||||
* @param string $itemKey the item key
|
* @param string $itemKey the item key
|
||||||
* @return int rank on success and -1 on error
|
* @return int rank on success and -1 on error
|
||||||
*/
|
*/
|
||||||
public function getLineRank($itemKey)
|
public function getLineRank($itemKey)
|
||||||
{
|
{
|
||||||
@ -498,7 +515,7 @@ class FormSetup
|
|||||||
*
|
*
|
||||||
* @param FormSetupItem $a formSetup item
|
* @param FormSetupItem $a formSetup item
|
||||||
* @param FormSetupItem $b formSetup item
|
* @param FormSetupItem $b formSetup item
|
||||||
* @return int Return compare result
|
* @return int Return compare result
|
||||||
*/
|
*/
|
||||||
public function itemSort(FormSetupItem $a, FormSetupItem $b)
|
public function itemSort(FormSetupItem $a, FormSetupItem $b)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -227,7 +227,7 @@ interface Database
|
|||||||
* Note that with Mysql, this parameter is not used as Myssql can already commit a transaction even if one request is in error, without using savepoints.
|
* Note that with Mysql, this parameter is not used as Myssql can already commit a transaction even if one request is in error, without using savepoints.
|
||||||
* @param string $type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...)
|
* @param string $type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...)
|
||||||
* @param int $result_mode Result mode
|
* @param int $result_mode Result mode
|
||||||
* @return resource Resultset of answer
|
* @return bool|resource Resultset of answer or false
|
||||||
*/
|
*/
|
||||||
public function query($query, $usesavepoint = 0, $type = 'auto', $result_mode = 0);
|
public function query($query, $usesavepoint = 0, $type = 'auto', $result_mode = 0);
|
||||||
|
|
||||||
|
|||||||
@ -495,7 +495,7 @@ class DoliDBPgsql extends DoliDB
|
|||||||
* @param int $usesavepoint 0=Default mode, 1=Run a savepoint before and a rollback to savepoint if error (this allow to have some request with errors inside global transactions).
|
* @param int $usesavepoint 0=Default mode, 1=Run a savepoint before and a rollback to savepoint if error (this allow to have some request with errors inside global transactions).
|
||||||
* @param string $type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...)
|
* @param string $type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...)
|
||||||
* @param int $result_mode Result mode (not used with pgsql)
|
* @param int $result_mode Result mode (not used with pgsql)
|
||||||
* @return false|resource Resultset of answer
|
* @return bool|resource Resultset of answer
|
||||||
*/
|
*/
|
||||||
public function query($query, $usesavepoint = 0, $type = 'auto', $result_mode = 0)
|
public function query($query, $usesavepoint = 0, $type = 'auto', $result_mode = 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -394,7 +394,7 @@ class DoliDBSqlite3 extends DoliDB
|
|||||||
* Note that with Mysql, this parameter is not used as Myssql can already commit a transaction even if one request is in error, without using savepoints.
|
* Note that with Mysql, this parameter is not used as Myssql can already commit a transaction even if one request is in error, without using savepoints.
|
||||||
* @param string $type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...)
|
* @param string $type Type of SQL order ('ddl' for insert, update, select, delete or 'dml' for create, alter...)
|
||||||
* @param int $result_mode Result mode (not used with sqlite)
|
* @param int $result_mode Result mode (not used with sqlite)
|
||||||
* @return SQLite3Result Resultset of answer
|
* @return bool|SQLite3Result Resultset of answer
|
||||||
*/
|
*/
|
||||||
public function query($query, $usesavepoint = 0, $type = 'auto', $result_mode = 0)
|
public function query($query, $usesavepoint = 0, $type = 'auto', $result_mode = 0)
|
||||||
{
|
{
|
||||||
@ -407,6 +407,7 @@ class DoliDBSqlite3 extends DoliDB
|
|||||||
$this->error = '';
|
$this->error = '';
|
||||||
|
|
||||||
// Convert MySQL syntax to SQLite syntax
|
// Convert MySQL syntax to SQLite syntax
|
||||||
|
$reg = array();
|
||||||
if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+CONSTRAINT\s+(.*)\s*FOREIGN\s+KEY\s*\(([\w,\s]+)\)\s*REFERENCES\s+(\w+)\s*\(([\w,\s]+)\)/i', $query, $reg)) {
|
if (preg_match('/ALTER\s+TABLE\s*(.*)\s*ADD\s+CONSTRAINT\s+(.*)\s*FOREIGN\s+KEY\s*\(([\w,\s]+)\)\s*REFERENCES\s+(\w+)\s*\(([\w,\s]+)\)/i', $query, $reg)) {
|
||||||
// Ajout d'une clef étrangère à la table
|
// Ajout d'une clef étrangère à la table
|
||||||
// procédure de remplacement de la table pour ajouter la contrainte
|
// procédure de remplacement de la table pour ajouter la contrainte
|
||||||
|
|||||||
@ -269,9 +269,6 @@ function restrictedArea($user, $features, $objectid = 0, $tableandshare = '', $f
|
|||||||
if ($features == 'product') {
|
if ($features == 'product') {
|
||||||
$features = 'produit';
|
$features = 'produit';
|
||||||
}
|
}
|
||||||
if ($features == 'banque') {
|
|
||||||
$parentfortableentity = 'fk_account@bank_account';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Get more permissions checks from hooks
|
// Get more permissions checks from hooks
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
use Stripe\BankAccount;
|
||||||
|
|
||||||
/* Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2020 Josep Lluís Amador <joseplluis@lliuretic.cat>
|
* Copyright (C) 2020 Josep Lluís Amador <joseplluis@lliuretic.cat>
|
||||||
*
|
*
|
||||||
@ -236,8 +238,15 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
|||||||
$posY = $pdf->GetY();
|
$posY = $pdf->GetY();
|
||||||
$posY += 2;
|
$posY += 2;
|
||||||
$pdf->SetXY($this->marge_gauche, $posY);
|
$pdf->SetXY($this->marge_gauche, $posY);
|
||||||
|
|
||||||
$ics = '';
|
$ics = '';
|
||||||
if (!empty($conf->global->PRELEVEMENT_ICS)) {
|
$idbankfordirectdebit = getDolGlobalInt('PRELEVEMENT_ID_BANKACCOUNT');
|
||||||
|
if ($idbankfordirectdebit > 0) {
|
||||||
|
$tmpbankfordirectdebit = new Account($this->db);
|
||||||
|
$tmpbankfordirectdebit->fetch($idbankfordirectdebit);
|
||||||
|
$ics = $tmpbankfordirectdebit->ics; // ICS for direct debit
|
||||||
|
}
|
||||||
|
if (empty($ics) && !empty($conf->global->PRELEVEMENT_ICS)) {
|
||||||
$ics = $conf->global->PRELEVEMENT_ICS;
|
$ics = $conf->global->PRELEVEMENT_ICS;
|
||||||
}
|
}
|
||||||
$pdf->MultiCell($this->page_largeur - $this->marge_gauche - $this->marge_droite, 3, $outputlangs->transnoentitiesnoconv("CreditorIdentifier").' ('.$outputlangs->transnoentitiesnoconv("ICS").') : '.$ics, 0, 'L');
|
$pdf->MultiCell($this->page_largeur - $this->marge_gauche - $this->marge_droite, 3, $outputlangs->transnoentitiesnoconv("CreditorIdentifier").' ('.$outputlangs->transnoentitiesnoconv("ICS").') : '.$ics, 0, 'L');
|
||||||
@ -251,7 +260,7 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
|||||||
$posY += 1;
|
$posY += 1;
|
||||||
$pdf->SetXY($this->marge_gauche, $posY);
|
$pdf->SetXY($this->marge_gauche, $posY);
|
||||||
$pdf->MultiCell($this->page_largeur - $this->marge_gauche - $this->marge_droite, 3, $outputlangs->transnoentitiesnoconv("Address").' : ', 0, 'L');
|
$pdf->MultiCell($this->page_largeur - $this->marge_gauche - $this->marge_droite, 3, $outputlangs->transnoentitiesnoconv("Address").' : ', 0, 'L');
|
||||||
$pdf->MultiCell($this->page_largeur - $this->marge_gauche - $this->marge_droite, 3, $mysoc->getFullAddress(), 0, 'L');
|
$pdf->MultiCell($this->page_largeur - $this->marge_gauche - $this->marge_droite, 3, $mysoc->getFullAddress(1), 0, 'L');
|
||||||
|
|
||||||
$posY = $pdf->GetY();
|
$posY = $pdf->GetY();
|
||||||
$posY += 3;
|
$posY += 3;
|
||||||
@ -304,7 +313,10 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
|||||||
|
|
||||||
$address = '______________________________________________';
|
$address = '______________________________________________';
|
||||||
if ($thirdparty->id > 0) {
|
if ($thirdparty->id > 0) {
|
||||||
$address = $thirdparty->getFullAddress();
|
$tmpaddresswithoutcountry = $thirdparty->getFullAddress(); // we test on address without country
|
||||||
|
if ($tmpaddresswithoutcountry) {
|
||||||
|
$address = $thirdparty->getFullAddress(1); // full address
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$posY = $pdf->GetY();
|
$posY = $pdf->GetY();
|
||||||
$posY += 1;
|
$posY += 1;
|
||||||
@ -490,7 +502,7 @@ class pdf_sepamandate extends ModeleBankAccountDoc
|
|||||||
$pdf->SetXY($this->marge_gauche, $posy);
|
$pdf->SetXY($this->marge_gauche, $posy);
|
||||||
$pdf->SetFont('', '', $default_font_size - $diffsizetitle);
|
$pdf->SetFont('', '', $default_font_size - $diffsizetitle);
|
||||||
$pdf->MultiCell(100, 6, $mysoc->name, 0, 'L', 0);
|
$pdf->MultiCell(100, 6, $mysoc->name, 0, 'L', 0);
|
||||||
$pdf->MultiCell(100, 6, $outputlangs->convToOutputCharset($mysoc->getFullAddress()), 0, 'L', 0);
|
$pdf->MultiCell(100, 6, $outputlangs->convToOutputCharset($mysoc->getFullAddress(1)), 0, 'L', 0);
|
||||||
$posy = $pdf->GetY() + 2;
|
$posy = $pdf->GetY() + 2;
|
||||||
|
|
||||||
return $posy;
|
return $posy;
|
||||||
|
|||||||
@ -814,7 +814,7 @@ class pdf_standard extends ModelePDFSuppliersPayments
|
|||||||
$pdf->MultiCell($widthrecbox, 4, $carac_client, 0, 'L');
|
$pdf->MultiCell($widthrecbox, 4, $carac_client, 0, 'L');
|
||||||
|
|
||||||
// Show default IBAN account
|
// Show default IBAN account
|
||||||
$sql = "SELECT iban_prefix";
|
$sql = "SELECT iban_prefix as iban";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."societe_rib as rib";
|
$sql .= " FROM ".MAIN_DB_PREFIX."societe_rib as rib";
|
||||||
$sql .= " WHERE fk_soc = ".($object->thirdparty->id);
|
$sql .= " WHERE fk_soc = ".($object->thirdparty->id);
|
||||||
$sql .= " AND rib.default_rib = 1";
|
$sql .= " AND rib.default_rib = 1";
|
||||||
@ -823,7 +823,7 @@ class pdf_standard extends ModelePDFSuppliersPayments
|
|||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
$obj = $this->db->fetch_object($resql);
|
$obj = $this->db->fetch_object($resql);
|
||||||
$iban = $obj->iban_prefix;
|
$iban = $obj->iban;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($iban)) {
|
if (!empty($iban)) {
|
||||||
|
|||||||
@ -128,8 +128,9 @@ class Donations extends DolibarrApi
|
|||||||
|
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -144,8 +144,9 @@ class Shipments extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -2096,6 +2096,7 @@ if ($action == 'create') {
|
|||||||
|
|
||||||
$titlealt = '';
|
$titlealt = '';
|
||||||
if (!empty($conf->accounting->enabled)) {
|
if (!empty($conf->accounting->enabled)) {
|
||||||
|
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php';
|
||||||
$accountingaccount = new AccountingAccount($db);
|
$accountingaccount = new AccountingAccount($db);
|
||||||
$resaccountingaccount = $accountingaccount->fetch(0, $line->type_fees_accountancy_code, 1);
|
$resaccountingaccount = $accountingaccount->fetch(0, $line->type_fees_accountancy_code, 1);
|
||||||
//$titlealt .= '<span class="opacitymedium">';
|
//$titlealt .= '<span class="opacitymedium">';
|
||||||
|
|||||||
@ -117,8 +117,9 @@ class ExpenseReports extends DolibarrApi
|
|||||||
|
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -151,8 +151,9 @@ class Interventions extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -34,7 +34,7 @@ if (!defined('DOL_APPLICATION_TITLE')) {
|
|||||||
define('DOL_APPLICATION_TITLE', 'Dolibarr');
|
define('DOL_APPLICATION_TITLE', 'Dolibarr');
|
||||||
}
|
}
|
||||||
if (!defined('DOL_VERSION')) {
|
if (!defined('DOL_VERSION')) {
|
||||||
define('DOL_VERSION', '15.0.0-alpha'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c
|
define('DOL_VERSION', '15.0.0-beta'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!defined('EURO')) {
|
if (!defined('EURO')) {
|
||||||
|
|||||||
@ -159,8 +159,9 @@ class SupplierInvoices extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -175,8 +175,9 @@ class SupplierOrders extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -1,863 +0,0 @@
|
|||||||
2007-08-20 00:48 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_AlArabiya.sfd: Diagonal marks
|
|
||||||
|
|
||||||
2007-08-20 00:25 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* README: Added Release notes, preparing for 2.0 release.
|
|
||||||
|
|
||||||
2007-08-19 23:19 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_AlArabiya.sfd: Stack diacritics definition
|
|
||||||
|
|
||||||
2007-08-19 22:56 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Tholoth.sfd:
|
|
||||||
* Added 'rlg' lookup table and subtable and registered stacked
|
|
||||||
diacritic ligatures.
|
|
||||||
* kasrah and kasratan were too close to the base glyph, fixed.
|
|
||||||
|
|
||||||
2007-08-19 22:28 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_AlHor.sfd, ae_AlMateen-Bold.sfd, ae_AlMohanad.sfd,
|
|
||||||
ae_AlYarmook.sfd, ae_Arab.sfd, ae_Cortoba.sfd, ae_Furat.sfd,
|
|
||||||
ae_Graph.sfd, ae_Kayrawan.sfd, ae_Khalid.sfd, ae_Mashq-Bold.sfd,
|
|
||||||
ae_Mashq.sfd, ae_Metal.sfd, ae_Nada.sfd, ae_Nagham.sfd,
|
|
||||||
ae_Ostorah.sfd, ae_Ouhod-Bold.sfd, ae_Petra.sfd,
|
|
||||||
ae_Rasheeq-Bold.sfd, ae_Rehan.sfd, ae_Salem.sfd, ae_Shado.sfd,
|
|
||||||
ae_Sharjah.sfd, ae_Sindbad.sfd, ae_Tarablus.sfd: Scaled up
|
|
||||||
diacritic glyphs, this makes them more readable.
|
|
||||||
|
|
||||||
2007-08-19 22:03 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_AlArabiya.sfd: New sukun, removed wrong anchors from
|
|
||||||
kasrah
|
|
||||||
|
|
||||||
2007-08-19 20:26 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlMothnna-Bold.sfd: Added 'rlg' lookup table and subtable
|
|
||||||
and registered stacked diacritic ligatures.
|
|
||||||
|
|
||||||
2007-08-19 18:28 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_AlMothnna-Bold.sfd: Fixed shaddas
|
|
||||||
|
|
||||||
2007-08-19 18:01 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_AlMothnna-Bold.sfd: Stacked diacrititcs
|
|
||||||
|
|
||||||
2007-08-19 14:49 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlArabiya.sfd: Removed mark2mark anchors, now we use
|
|
||||||
ligature substitution for stacked diacritics instead of anchors.
|
|
||||||
Added 'rlg' lookup table and subtable and registered stacked
|
|
||||||
diacritic ligatures.
|
|
||||||
|
|
||||||
2007-08-19 02:30 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_AlArabiya.sfd: Stacked diacritics added
|
|
||||||
|
|
||||||
2007-08-19 01:53 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ArabicReesha.sfd:
|
|
||||||
* Added to new ligatures; <fathatan><alef isolated> and
|
|
||||||
<fathatan><alef final>.
|
|
||||||
* Small fixes to Jeem isolated width.
|
|
||||||
|
|
||||||
2007-08-18 21:30 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_AlMothnna-Bold.sfd: Diacritics fixed except allahisolated
|
|
||||||
ligature
|
|
||||||
|
|
||||||
2007-08-18 20:13 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlMothnna-Bold.sfd: Removed old, buggy, anchors and auto
|
|
||||||
added new ones, needs manual editing.
|
|
||||||
|
|
||||||
2007-08-18 19:11 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_AlMothnna-Bold.sfd: New shadda, modified sukun to meet the
|
|
||||||
other marks
|
|
||||||
|
|
||||||
2007-08-18 17:20 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_AlArabiya.sfd: New diacritics for ae_AlArabiya.sfd
|
|
||||||
|
|
||||||
2007-08-17 23:19 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Tholoth.sfd: ae_Tholoth.sfd: Added glyphs U+FC5E - U+FC62.
|
|
||||||
|
|
||||||
2007-08-16 14:56 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlMohanad.sfd: AlMohanad: Fixed U+FEDA (kaf final) to take
|
|
||||||
the shape of ordinary final kaf rather than the long variant.
|
|
||||||
|
|
||||||
2007-08-15 14:25 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ArabicReesha.sfd: ArabicReesha.sfd: Fixed a bug that caused
|
|
||||||
some isolated glyphs to have more space to the right.
|
|
||||||
|
|
||||||
2007-08-15 12:02 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_AlMateen-Bold.sfd, ae_AlMohanad.sfd, ae_AlYarmook.sfd,
|
|
||||||
ae_Electron.sfd, ae_Hani.sfd, ae_Haramain.sfd, ae_Khalid.sfd,
|
|
||||||
ae_Rasheeq-Bold.sfd, ae_Rehan.sfd, ae_Sharjah.sfd,
|
|
||||||
ae_Tarablus.sfd, ae_Tholoth.sfd: Add new 'liga' table without
|
|
||||||
"Ignore Combining Marks" flag, allahisolated ligature belong to that
|
|
||||||
table now, so when allahisolated has a tashkil on it, the ligature
|
|
||||||
will be ignored and will use normal glyphs instead.
|
|
||||||
|
|
||||||
2007-08-15 11:05 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Granada.sfd, ae_Graph.sfd, ae_Haramain.sfd,
|
|
||||||
ae_Nagham.sfd, ae_Nice.sfd, ae_Ostorah.sfd, ae_Sindbad.sfd,
|
|
||||||
ae_Tarablus.sfd: Added "Ignore Combining Marks flag" to 'liga'
|
|
||||||
table.
|
|
||||||
|
|
||||||
2007-08-15 10:35 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ArabicReesha.sfd: ArabicReesha: New font based on SIL's
|
|
||||||
Scheherazade, first version.
|
|
||||||
|
|
||||||
2007-08-15 00:23 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlArabiya.sfd: Shadda was missing mark2mark below anchor.
|
|
||||||
|
|
||||||
2007-08-14 23:28 Mohammed Adnene Trojette <adn@diwi.org>
|
|
||||||
|
|
||||||
* Makefile: GPL has been removed
|
|
||||||
|
|
||||||
2007-08-14 23:21 Mohammed Adnene Trojette <adn@diwi.org>
|
|
||||||
|
|
||||||
* COPYING, README: Copyright informations
|
|
||||||
|
|
||||||
2007-08-14 23:05 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* COPYING: Updated to refer to FreeFonts project.
|
|
||||||
|
|
||||||
2007-08-14 22:56 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Salem.sfd: Updated the copyright statement, to mention GPL
|
|
||||||
font exception and FreeFonts project, again
|
|
||||||
|
|
||||||
2007-08-14 22:43 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Salem.sfd: Revert to 1.7 and added Allah anchors(again).
|
|
||||||
|
|
||||||
2007-08-14 21:35 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Tholoth.sfd: Minor positioning fix
|
|
||||||
|
|
||||||
2007-08-14 21:12 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Tholoth.sfd: Added missed U+0647.
|
|
||||||
|
|
||||||
2007-08-14 18:37 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_AlArabiya.sfd, ae_AlBattar.sfd, ae_AlHor.sfd,
|
|
||||||
ae_AlManzomah.sfd, ae_AlMateen-Bold.sfd, ae_AlMohanad.sfd,
|
|
||||||
ae_AlMothnna-Bold.sfd, ae_AlYarmook.sfd, ae_Arab.sfd,
|
|
||||||
ae_Cortoba.sfd, ae_Dimnah.sfd, ae_Electron.sfd, ae_Furat.sfd,
|
|
||||||
ae_Granada.sfd, ae_Graph.sfd, ae_Hani.sfd, ae_Haramain.sfd,
|
|
||||||
ae_Hor.sfd, ae_Japan.sfd, ae_Jet.sfd, ae_Kayrawan.sfd,
|
|
||||||
ae_Khalid.sfd, ae_Mashq-Bold.sfd, ae_Mashq.sfd, ae_Metal.sfd,
|
|
||||||
ae_Nada.sfd, ae_Nagham.sfd, ae_Nice.sfd, ae_Ostorah.sfd,
|
|
||||||
ae_Ouhod-Bold.sfd, ae_Petra.sfd, ae_Rasheeq-Bold.sfd,
|
|
||||||
ae_Rehan.sfd, ae_Salem.sfd, ae_Shado.sfd, ae_Sharjah.sfd,
|
|
||||||
ae_Sindbad.sfd, ae_Tarablus.sfd, ae_Tholoth.sfd: Updated the
|
|
||||||
copyright statement, to mention GPL font exception and FreeFonts
|
|
||||||
project.
|
|
||||||
|
|
||||||
2007-08-13 22:18 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_AlArabiya.sfd, ae_AlBattar.sfd, ae_AlManzomah.sfd,
|
|
||||||
ae_AlMateen-Bold.sfd, ae_AlMohanad.sfd, ae_AlMothnna-Bold.sfd,
|
|
||||||
ae_Arab.sfd, ae_Cortoba.sfd, ae_Electron.sfd, ae_Furat.sfd,
|
|
||||||
ae_Granada.sfd, ae_Graph.sfd, ae_Hani.sfd, ae_Haramain.sfd,
|
|
||||||
ae_Hor.sfd, ae_Jet.sfd, ae_Kayrawan.sfd, ae_Mashq-Bold.sfd,
|
|
||||||
ae_Mashq.sfd, ae_Nada.sfd, ae_Nagham.sfd, ae_Nice.sfd,
|
|
||||||
ae_Ostorah.sfd, ae_Ouhod-Bold.sfd, ae_Petra.sfd,
|
|
||||||
ae_Rasheeq-Bold.sfd, ae_Rehan.sfd, ae_Salem.sfd, ae_Shado.sfd,
|
|
||||||
ae_Sharjah.sfd, ae_Sindbad.sfd, ae_Tarablus.sfd, ae_Tholoth.sfd:
|
|
||||||
* Add missed mark2mark anchors in the affected files, though we
|
|
||||||
aren't going to use this on the long run, but I'll leave that task
|
|
||||||
for 2.1 .
|
|
||||||
* Reencoded all files to unicode glyph map.
|
|
||||||
|
|
||||||
2007-08-13 14:47 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Petra.sfd, ae_Shado.sfd: ae_Petra.sfd, ae_Shado.sfd:
|
|
||||||
Full support for diacritics positioning by Osama Khalid.
|
|
||||||
|
|
||||||
2007-08-13 10:38 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Hor.sfd, ae_Sharjah.sfd:
|
|
||||||
* ae_Hor: Full support for diacritics positioning by Fahd.
|
|
||||||
* ae_Sharjah: Full support for diacritics positioning by Fahd.
|
|
||||||
|
|
||||||
2007-08-13 05:34 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/: ae_Nice.sfd, ae_Tarablus.sfd: Full diacritics supports,
|
|
||||||
needs a check
|
|
||||||
|
|
||||||
2007-08-13 05:24 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Nagham.sfd: Full diacritics supports, needs a check
|
|
||||||
|
|
||||||
2007-08-13 05:08 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Haramain.sfd: Full diacritics supports, needs a check
|
|
||||||
|
|
||||||
2007-08-13 04:42 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Graph.sfd: Full diacritics supports, needs a check
|
|
||||||
|
|
||||||
2007-08-13 04:38 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Granada.sfd: Full diacritics supports, needs a check
|
|
||||||
|
|
||||||
2007-08-13 03:28 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Ostorah.sfd: ae_Ostorah.sfd: Full support for diacritic
|
|
||||||
positioning.
|
|
||||||
|
|
||||||
2007-08-13 02:13 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Haramain.sfd: Done: replaced ugly marks, repositioned
|
|
||||||
below marks
|
|
||||||
|
|
||||||
2007-08-13 01:31 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Graph.sfd: Done, needs to be checked
|
|
||||||
|
|
||||||
2007-08-13 01:16 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Granada.sfd: Done, needs to be checked
|
|
||||||
|
|
||||||
2007-08-12 23:05 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/: ae_Tarablus.sfd: First steps
|
|
||||||
|
|
||||||
2007-08-12 18:24 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Electron.sfd: ae_Electron.sfd: Full support for diacritic
|
|
||||||
positioning.
|
|
||||||
|
|
||||||
2007-08-12 16:06 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Hani.sfd: ae_Hani.sfd: Full support for diacritic
|
|
||||||
positioning by Osama Khaled
|
|
||||||
|
|
||||||
2007-08-11 23:33 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Ouhod-Bold.sfd: ae_Ouhod-Bold.sfd: Full support for
|
|
||||||
diacritic positioning.
|
|
||||||
|
|
||||||
2007-08-11 21:28 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Rasheeq-Bold.sfd: ae_Rasheeq-Bold.sfd: Full diacritic
|
|
||||||
support.
|
|
||||||
|
|
||||||
2007-08-11 15:09 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Hor.sfd: some fixes
|
|
||||||
|
|
||||||
2007-08-11 14:55 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Electron.sfd, ae_Granada.sfd, ae_Graph.sfd,
|
|
||||||
ae_Haramain.sfd, ae_Nagham.sfd, ae_Nice.sfd, ae_Ostorah.sfd,
|
|
||||||
ae_Ouhod-Bold.sfd, ae_Rasheeq-Bold.sfd, ae_Shado.sfd,
|
|
||||||
ae_Sharjah.sfd, ae_Tarablus.sfd: More tweaking, it is ready for
|
|
||||||
manual editing now (I hope so).
|
|
||||||
|
|
||||||
2007-08-11 11:08 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Hor.sfd: Fahd: I updated the anchor points, please use
|
|
||||||
this instead of the old version.
|
|
||||||
|
|
||||||
2007-08-11 10:45 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Electron.sfd, ae_Granada.sfd, ae_Graph.sfd, ae_Hani.sfd,
|
|
||||||
ae_Haramain.sfd, ae_Nagham.sfd, ae_Nice.sfd, ae_Ostorah.sfd,
|
|
||||||
ae_Ouhod-Bold.sfd, ae_Petra.sfd, ae_Rasheeq-Bold.sfd,
|
|
||||||
ae_Shado.sfd, ae_Sharjah.sfd, ae_Tarablus.sfd: Replaced old
|
|
||||||
anchor points with new ones and better automatic positioning using
|
|
||||||
the improved addanchors.pe script. Please update your local copy
|
|
||||||
before doing any further work, this will make our life easier.
|
|
||||||
|
|
||||||
2007-08-11 10:25 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* tools/addanchors.pe: Now X and Y values are computed to produce a
|
|
||||||
far better result, the needed manual tweaking is very little now.
|
|
||||||
|
|
||||||
2007-08-10 01:27 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Nada.sfd: ae_Nada.sfd: Full support for diacritic
|
|
||||||
positioning by Fahd AlSaidi.
|
|
||||||
|
|
||||||
2007-08-07 23:47 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlYarmook.sfd:
|
|
||||||
* ae_AlYarmook.sfd: Changed font name and other related feilds from
|
|
||||||
AlYermook to AlYarmook
|
|
||||||
* ae_AlYarmook.sfd: Full support for diacritic positioning.
|
|
||||||
|
|
||||||
2007-08-07 00:22 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Mashq-Bold.sfd: sfd/ae_Mashq-Bold.sfd: Full support for
|
|
||||||
diacritic positioning.
|
|
||||||
|
|
||||||
2007-08-06 02:58 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Rehan.sfd: Mark to mark ligatures were too close, fixed.
|
|
||||||
|
|
||||||
2007-08-04 20:14 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Rehan.sfd: ae_Rehan.sfd: Full support for diacritic
|
|
||||||
positioning.
|
|
||||||
|
|
||||||
2007-08-04 01:22 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Mashq.sfd: ae_Mashq.sfd: Full support for diacritic
|
|
||||||
positioning.
|
|
||||||
|
|
||||||
2007-08-04 01:19 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Khalid.sfd: Reencoded the file to Unicode.
|
|
||||||
|
|
||||||
2007-08-04 01:16 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Kayrawan.sfd: Fixed ArabicMark2MarkBelow anchor point.
|
|
||||||
Reencoded the file to Unicode.
|
|
||||||
|
|
||||||
2007-08-03 06:12 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Kayrawan.sfd: Fixed two letters ligatures diacritics
|
|
||||||
|
|
||||||
2007-08-03 05:55 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Kayrawan.sfd: Added لله ligature diacritics
|
|
||||||
|
|
||||||
2007-08-03 05:01 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Kayrawan.sfd: Ignore combining marks set
|
|
||||||
|
|
||||||
2007-08-03 04:51 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Kayrawan.sfd: Full diacritics support -
|
|
||||||
ArabicMark2MarkBelow need to be checked
|
|
||||||
|
|
||||||
2007-08-03 02:40 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Salem.sfd: Added and positioned anchors for Allah glyph.
|
|
||||||
|
|
||||||
2007-08-03 02:32 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Dimnah.sfd: ae_Dimnah.sfd: Full support for diacritic
|
|
||||||
positioning.
|
|
||||||
|
|
||||||
2007-08-03 01:26 Youssef Chahibi <chahibi@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Kayrawan.sfd: First steps in font editing
|
|
||||||
|
|
||||||
2007-08-03 00:10 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Salem.sfd: ae_Salem.sfd: Full diacritic support.
|
|
||||||
|
|
||||||
2007-08-02 04:50 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Arab.sfd: Fixed ligatures anchor points.
|
|
||||||
|
|
||||||
2007-08-02 02:15 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Arab.sfd: Support for diacritic positioning by Osama
|
|
||||||
Khalid.
|
|
||||||
|
|
||||||
2007-08-01 23:09 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlManzomah.sfd: ae_AlManzomah.sfd: Full support for
|
|
||||||
diacritic positioning.
|
|
||||||
|
|
||||||
2007-08-01 01:56 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Khalid.sfd: ae_Khalid.sfd: Full support for diacritic
|
|
||||||
positioning.
|
|
||||||
|
|
||||||
2007-07-28 11:43 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlMateen-Bold.sfd: ae_AlMateen-Bold.sfd: Full support for
|
|
||||||
diacritic positioning.
|
|
||||||
|
|
||||||
2007-07-27 22:16 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* Makefile: New make targets as requested by KhaledHosney.
|
|
||||||
|
|
||||||
2007-07-27 21:04 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlHor.sfd: ae_AlHor.sfd: Full diacritic support
|
|
||||||
|
|
||||||
2007-07-26 10:14 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Jet.sfd: ./sfd/ae_Jet.sfd: Full diacritic support.
|
|
||||||
|
|
||||||
2007-07-26 01:38 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Japan.sfd: Aeif, you forgot the ligatures and letter beh
|
|
||||||
isolated, fixed
|
|
||||||
|
|
||||||
2007-07-25 14:41 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Metal.sfd: Add anchor points for لله ligature
|
|
||||||
|
|
||||||
2007-07-25 12:52 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Metal.sfd: ae_Metal: Full diacritic support.
|
|
||||||
|
|
||||||
2007-07-25 01:36 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Japan.sfd: ae_Japan: Full diacritic support.
|
|
||||||
|
|
||||||
2007-07-25 01:28 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Cortoba.sfd: minor fix
|
|
||||||
|
|
||||||
2007-07-25 00:24 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Cortoba.sfd:
|
|
||||||
|
|
||||||
----------------------------------------------------------------------ae_Cortoba.sfd: Full support for diacritic positioning.
|
|
||||||
|
|
||||||
2007-07-24 18:34 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* tools/generate.sh: not needed any more, use 'make' instead
|
|
||||||
|
|
||||||
2007-07-24 18:31 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Sindbad.sfd: Add anchor points for لله ligature
|
|
||||||
|
|
||||||
2007-07-24 18:04 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlArabiya.sfd: Fixed ligatures anchor points
|
|
||||||
|
|
||||||
2007-07-24 17:55 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Furat.sfd: Add anchor points for لله ligature
|
|
||||||
|
|
||||||
2007-07-23 23:16 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* README, README.cvs:
|
|
||||||
- new readme file to explain how to build ttf onts from our cvs
|
|
||||||
tree.
|
|
||||||
|
|
||||||
2007-07-23 23:01 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlBattar.sfd: few fixes in the diacritic positions
|
|
||||||
|
|
||||||
2007-07-23 13:56 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlBattar.sfd: ae_AlBattar.sfd, full support for diacritic
|
|
||||||
positioning.
|
|
||||||
|
|
||||||
2007-07-23 05:28 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* Makefile: Now doesn't rebuild untouched fonts, should save some
|
|
||||||
server cycles.
|
|
||||||
|
|
||||||
2007-07-23 04:00 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Sindbad.sfd: Unchecked 'compact' option
|
|
||||||
|
|
||||||
2007-07-23 00:16 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Sindbad.sfd:
|
|
||||||
- Add the missed "Ignore Combining Marks" feature to Arabic liga
|
|
||||||
lookuptable, Afief please remember this.
|
|
||||||
- Few changes in ArabicBelow anchor points placement.
|
|
||||||
|
|
||||||
2007-07-22 14:42 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlBattar.sfd: Diacritic support, for isolated glyphs only.
|
|
||||||
|
|
||||||
2007-07-22 00:43 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Sindbad.sfd: Full support for diacritic positioning.
|
|
||||||
|
|
||||||
2007-07-21 21:38 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* Makefile: fixed "clean" to remove the bzipped archive.
|
|
||||||
|
|
||||||
2007-07-21 21:34 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* Makefile:
|
|
||||||
- All files are under ae_fonts dir now.
|
|
||||||
- The archive is bzipped.
|
|
||||||
|
|
||||||
2007-07-21 20:05 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* Makefile: Commited the Makefile. Hope you like it.
|
|
||||||
|
|
||||||
2007-07-21 19:11 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* tools/generate.pe: Add a usage note.
|
|
||||||
|
|
||||||
2007-07-21 19:09 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* tools/generate.pe: Now accepts a 2nd argument for the .ttf file
|
|
||||||
name.
|
|
||||||
|
|
||||||
2007-07-21 18:52 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Tholoth.sfd: A few fixes in positioning.
|
|
||||||
|
|
||||||
2007-07-21 16:48 Afief Halumi <afief.h@gmail.com>
|
|
||||||
|
|
||||||
* sfd/ae_Tholoth.sfd: Finished work on ae_Tholoth.sfd; Added a few
|
|
||||||
better glyphs and full support for diacritic positioning.
|
|
||||||
|
|
||||||
2007-07-21 00:04 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Tholoth.sfd:
|
|
||||||
|
|
||||||
Diacritics work by afief
|
|
||||||
|
|
||||||
2007-07-19 23:49 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* tools/addanchors.pe: Add support for mark2glyph anchor points,
|
|
||||||
thanks George Williams for fixing fontforge's bug.
|
|
||||||
|
|
||||||
2007-07-19 23:16 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_AlBattar.sfd, ae_AlHor.sfd, ae_AlManzomah.sfd,
|
|
||||||
ae_AlMateen-Bold.sfd, ae_AlYarmook.sfd, ae_Arab.sfd,
|
|
||||||
ae_Cortoba.sfd, ae_Dimnah.sfd, ae_Electron.sfd, ae_Granada.sfd,
|
|
||||||
ae_Graph.sfd, ae_Hani.sfd, ae_Haramain.sfd, ae_Hor.sfd,
|
|
||||||
ae_Japan.sfd, ae_Jet.sfd, ae_Kayrawan.sfd, ae_Khalid.sfd,
|
|
||||||
ae_Mashq-Bold.sfd, ae_Mashq.sfd, ae_Metal.sfd, ae_Nada.sfd,
|
|
||||||
ae_Nagham.sfd, ae_Nice.sfd, ae_Ostorah.sfd, ae_Ouhod-Bold.sfd,
|
|
||||||
ae_Petra.sfd, ae_Rasheeq-Bold.sfd, ae_Rehan.sfd, ae_Salem.sfd,
|
|
||||||
ae_Shado.sfd, ae_Sharjah.sfd, ae_Sindbad.sfd, ae_Tarablus.sfd,
|
|
||||||
ae_Tholoth.sfd:
|
|
||||||
|
|
||||||
- Removed Cyrillic and Greek glyphs, this makes the font more
|
|
||||||
lighter.
|
|
||||||
- Add all needed anchor points, still needs to be manually adjusted.
|
|
||||||
|
|
||||||
2007-07-19 23:15 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_AlMohanad.sfd, ae_AlMothnna-Bold.sfd, ae_Furat.sfd:
|
|
||||||
Removed Cyrillic and Greek glyphs, this makes the font more lighter.
|
|
||||||
|
|
||||||
2007-07-19 23:12 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlArabiya.sfd: full support for diacritic positioning
|
|
||||||
|
|
||||||
2007-07-18 14:57 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlArabiya.sfd:
|
|
||||||
|
|
||||||
Full mark2base and mark2mark anchor points
|
|
||||||
|
|
||||||
2007-07-16 20:53 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Nada.sfd:
|
|
||||||
|
|
||||||
Removed obsolete reference to Btstream copyright, we don't include
|
|
||||||
any Bitstream copyrighted glyphs anymore.
|
|
||||||
|
|
||||||
2007-07-16 20:03 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* tools/: addanchors.pe, addlookups.pe, cp.pe, generate.pe:
|
|
||||||
|
|
||||||
use "#!/usr/bin/env fontforge" instead of "#!/usr/bin/fontforge"
|
|
||||||
|
|
||||||
2007-07-16 13:47 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlMohanad.sfd:
|
|
||||||
|
|
||||||
Full support for proper diacritics positioning
|
|
||||||
|
|
||||||
2007-07-16 00:16 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* tools/: addanchors.pe, addlookups.pe, cp.pe, generate.pe: Now the
|
|
||||||
scripts require Fotforge 20070501 or newer, older versions use older
|
|
||||||
SFD formate which we don't suport.
|
|
||||||
|
|
||||||
2007-07-16 00:09 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlArabiya.sfd: Add support for proper diacritic
|
|
||||||
positioning by Afief Halumi, still in progress
|
|
||||||
|
|
||||||
2007-07-15 23:48 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Furat.sfd: full support for diacritic positioning
|
|
||||||
|
|
||||||
2007-07-15 20:08 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_AlBattar.sfd, ae_AlHor.sfd, ae_AlManzomah.sfd,
|
|
||||||
ae_AlMateen-Bold.sfd, ae_AlMohanad.sfd, ae_AlYarmook.sfd,
|
|
||||||
ae_Arab.sfd, ae_Cortoba.sfd, ae_Dimnah.sfd, ae_Electron.sfd,
|
|
||||||
ae_Granada.sfd, ae_Graph.sfd, ae_Hani.sfd, ae_Haramain.sfd,
|
|
||||||
ae_Hor.sfd, ae_Japan.sfd, ae_Jet.sfd, ae_Kayrawan.sfd,
|
|
||||||
ae_Khalid.sfd, ae_Mashq-Bold.sfd, ae_Mashq.sfd, ae_Metal.sfd,
|
|
||||||
ae_Nada.sfd, ae_Nagham.sfd, ae_Nice.sfd, ae_Ostorah.sfd,
|
|
||||||
ae_Ouhod-Bold.sfd, ae_Petra.sfd, ae_Rasheeq-Bold.sfd,
|
|
||||||
ae_Rehan.sfd, ae_Salem.sfd, ae_Shado.sfd, ae_Sharjah.sfd,
|
|
||||||
ae_Sindbad.sfd, ae_Tarablus.sfd, ae_Tholoth.sfd: removed traces
|
|
||||||
of ae_ prefix
|
|
||||||
|
|
||||||
2007-07-15 19:44 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlArabiya.sfd: removed traces of ae_ prefix
|
|
||||||
|
|
||||||
2007-07-13 20:14 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlMothnna-Bold.sfd:
|
|
||||||
- Removed traces of ae_ prefix.
|
|
||||||
- Full support for proper Arabic diacritics positioning.
|
|
||||||
|
|
||||||
2007-07-13 19:38 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Furat.sfd:
|
|
||||||
- Removed traces of ae_ prefix.
|
|
||||||
- add anchor points for Arabic diacritics, needs manual tuning.
|
|
||||||
|
|
||||||
2007-07-13 19:09 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* tools/: addanchors.pe, addlookups.pe: scripts to assist adding
|
|
||||||
lookup tables and anchor points needed for proper diacritics
|
|
||||||
(harakat) support.
|
|
||||||
|
|
||||||
2007-07-01 03:31 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_AlArabiya.sfd, ae_AlBattar.sfd, ae_AlHor.sfd,
|
|
||||||
ae_AlManzomah.sfd, ae_AlMateen-Bold.sfd, ae_AlMohanad.sfd,
|
|
||||||
ae_AlMothnna-Bold.sfd, ae_AlYarmook.sfd, ae_Arab.sfd,
|
|
||||||
ae_Cortoba.sfd, ae_Dimnah.sfd, ae_Electron.sfd, ae_Furat.sfd,
|
|
||||||
ae_Granada.sfd, ae_Graph.sfd, ae_Hani.sfd, ae_Haramain.sfd,
|
|
||||||
ae_Hor.sfd, ae_Japan.sfd, ae_Jet.sfd, ae_Kayrawan.sfd,
|
|
||||||
ae_Khalid.sfd, ae_Mashq-Bold.sfd, ae_Mashq.sfd, ae_Metal.sfd,
|
|
||||||
ae_Nada.sfd, ae_Nagham.sfd, ae_Nice.sfd, ae_Ostorah.sfd,
|
|
||||||
ae_Ouhod-Bold.sfd, ae_Petra.sfd, ae_Rasheeq-Bold.sfd,
|
|
||||||
ae_Rehan.sfd, ae_Salem.sfd, ae_Shado.sfd, ae_Sharjah.sfd,
|
|
||||||
ae_Sindbad.sfd, ae_Tarablus.sfd, ae_Tholoth.sfd: Removed ae_
|
|
||||||
prefix from all fonts, see
|
|
||||||
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=361965
|
|
||||||
|
|
||||||
2007-06-30 22:02 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* README: Initial README file
|
|
||||||
|
|
||||||
2007-06-30 20:20 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* tools/: generate.pe, generate.sh: Scripts to generate TTF files
|
|
||||||
from SFD ones.
|
|
||||||
|
|
||||||
2007-06-30 19:58 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Tarablus.sfd: add the missed U+F6BE that caused bug in 'j'
|
|
||||||
glyph, CVS_SILENT
|
|
||||||
|
|
||||||
2007-06-30 19:48 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Sindbad.sfd:
|
|
||||||
add the missed U+F6BE that caused bug in 'j' glyph, CVS_SILENT
|
|
||||||
|
|
||||||
2007-06-23 22:29 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Shado.sfd, ae_Sharjah.sfd: add the missed U+F6BE that
|
|
||||||
caused bug in 'j' glyph
|
|
||||||
|
|
||||||
2007-06-23 22:26 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Rasheeq-Bold.sfd, ae_Rehan.sfd, ae_Salem.sfd: add the
|
|
||||||
missed U+F6BE that caused bug in 'j' glyph
|
|
||||||
|
|
||||||
2007-06-23 22:22 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Nice.sfd, ae_Ostorah.sfd, ae_Ouhod-Bold.sfd,
|
|
||||||
ae_Petra.sfd: add the missed U+F6BE that caused bug in 'j' glyph
|
|
||||||
|
|
||||||
2007-06-23 22:19 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Metal.sfd, ae_Nada.sfd, ae_Nagham.sfd: add the missed
|
|
||||||
U+F6BE that caused bug in 'j' glyph
|
|
||||||
|
|
||||||
2007-06-23 22:16 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Kayrawan.sfd, ae_Khalid.sfd, ae_Mashq-Bold.sfd,
|
|
||||||
ae_Mashq.sfd: add the missed U+F6BE that caused bug in 'j' glyph
|
|
||||||
|
|
||||||
2007-06-23 22:12 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Haramain.sfd, ae_Hor.sfd, ae_Japan.sfd, ae_Jet.sfd: add
|
|
||||||
the missed U+F6BE that caused bug in 'j' glyph
|
|
||||||
|
|
||||||
2007-06-23 22:09 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Granada.sfd, ae_Graph.sfd, ae_Hani.sfd: add the missed
|
|
||||||
U+F6BE that caused bug in 'j' glyph
|
|
||||||
|
|
||||||
2007-06-23 22:05 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Electron.sfd, ae_Furat.sfd: add the missed U+F6BE that
|
|
||||||
caused bug in 'j' glyph
|
|
||||||
|
|
||||||
2007-06-23 22:02 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Cortoba.sfd, ae_Dimnah.sfd: add the missed U+F6BE that
|
|
||||||
caused bug in 'j' glyph
|
|
||||||
|
|
||||||
2007-06-23 21:59 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_AlYarmook.sfd, ae_Arab.sfd: add the missed U+F6BE that
|
|
||||||
caused bug in 'j' glyph
|
|
||||||
|
|
||||||
2007-06-23 21:19 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_AlArabiya.sfd, ae_AlBattar.sfd, ae_AlHor.sfd,
|
|
||||||
ae_AlManzomah.sfd, ae_AlMateen-Bold.sfd, ae_AlMohanad.sfd,
|
|
||||||
ae_AlMothnna-Bold.sfd: Added the missed U+U+F6BE glyphs which
|
|
||||||
caused a bug in "j" glyph
|
|
||||||
|
|
||||||
2007-06-23 18:30 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* COPYING: -Moved GPL to a separate file. -Added GPL font
|
|
||||||
exception to COPYING.
|
|
||||||
|
|
||||||
2007-06-23 18:12 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_Tholoth.sfd:
|
|
||||||
- New glyphs (covering every thing outside Arabic block) based on
|
|
||||||
the GPL'd FreeFont project [http://www.nongnu.org/freefont/].
|
|
||||||
- Arabic diacritic marks (harakat) are set to have zero advance
|
|
||||||
width and OT class as 'mark' nstead of 'base glyph'
|
|
||||||
|
|
||||||
2007-06-23 18:07 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Shado.sfd, ae_Sharjah.sfd, ae_Sindbad.sfd,
|
|
||||||
ae_Tarablus.sfd:
|
|
||||||
- New glyphs (covering every thing outside Arabic block) based on
|
|
||||||
the GPL'd FreeFont project [http://www.nongnu.org/freefont/].
|
|
||||||
- Arabic diacritic marks (harakat) are set to have zero advance
|
|
||||||
width and OT class as 'mark' nstead of 'base glyph'
|
|
||||||
|
|
||||||
2007-06-23 18:04 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Petra.sfd, ae_Rasheeq-Bold.sfd, ae_Rehan.sfd,
|
|
||||||
ae_Salem.sfd:
|
|
||||||
- New glyphs (covering every thing outside Arabic block) based on
|
|
||||||
the GPL'd FreeFont project [http://www.nongnu.org/freefont/].
|
|
||||||
- Arabic diacritic marks (harakat) are set to have zero advance
|
|
||||||
width and OT class as 'mark' nstead of 'base glyph'
|
|
||||||
|
|
||||||
2007-06-23 18:01 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Nagham.sfd, ae_Nice.sfd, ae_Ostorah.sfd,
|
|
||||||
ae_Ouhod-Bold.sfd:
|
|
||||||
- New glyphs (covering every thing outside Arabic block) based on
|
|
||||||
the GPL'd FreeFont project [http://www.nongnu.org/freefont/].
|
|
||||||
- Arabic diacritic marks (harakat) are set to have zero advance
|
|
||||||
width and OT class as 'mark' nstead of 'base glyph'
|
|
||||||
|
|
||||||
2007-06-23 17:57 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Metal.sfd, ae_Nada.sfd:
|
|
||||||
- New glyphs (covering every thing outside Arabic block) based on
|
|
||||||
the GPL'd FreeFont project [http://www.nongnu.org/freefont/].
|
|
||||||
- Arabic diacritic marks (harakat) are set to have zero advance
|
|
||||||
width and OT class as 'mark' nstead of 'base glyph'
|
|
||||||
|
|
||||||
2007-06-23 17:54 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Kayrawan.sfd, ae_Khalid.sfd, ae_Mashq-Bold.sfd,
|
|
||||||
ae_Mashq.sfd:
|
|
||||||
- New glyphs (covering every thing outside Arabic block) based on
|
|
||||||
the GPL'd FreeFont project [http://www.nongnu.org/freefont/].
|
|
||||||
- Arabic diacritic marks (harakat) are set to have zero advance
|
|
||||||
width and OT class as 'mark' nstead of 'base glyph'
|
|
||||||
|
|
||||||
2007-06-23 17:51 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Haramain.sfd, ae_Hor.sfd, ae_Japan.sfd, ae_Jet.sfd:
|
|
||||||
- New glyphs (covering every thing outside Arabic block) based on
|
|
||||||
the GPL'd FreeFont project [http://www.nongnu.org/freefont/].
|
|
||||||
- Arabic diacritic marks (harakat) are set to have zero advance
|
|
||||||
width and OT class as 'mark' nstead of 'base glyph'
|
|
||||||
|
|
||||||
2007-06-23 17:47 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Furat.sfd, ae_Granada.sfd, ae_Graph.sfd, ae_Hani.sfd:
|
|
||||||
- New glyphs (covering every thing outside Arabic block) based on
|
|
||||||
the GPL'd FreeFont project [http://www.nongnu.org/freefont/].
|
|
||||||
- Arabic diacritic marks (harakat) are set to have zero advance
|
|
||||||
width and OT class as 'mark' nstead of 'base glyph'
|
|
||||||
|
|
||||||
2007-06-23 17:43 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_Arab.sfd, ae_Cortoba.sfd, ae_Dimnah.sfd,
|
|
||||||
ae_Electron.sfd:
|
|
||||||
- New glyphs (covering every thing outside Arabic block) based on
|
|
||||||
the GPL'd FreeFont project [http://www.nongnu.org/freefont/].
|
|
||||||
- Arabic diacritic marks (harakat) are set to have zero advance
|
|
||||||
width and OT class as 'mark' nstead of 'base glyph'
|
|
||||||
|
|
||||||
2007-06-23 17:40 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_AlMateen-Bold.sfd, ae_AlMohanad.sfd,
|
|
||||||
ae_AlMothnna-Bold.sfd, ae_AlYarmook.sfd:
|
|
||||||
- New glyphs (covering every thing outside Arabic block) based on
|
|
||||||
the GPL'd FreeFont project [http://www.nongnu.org/freefont/].
|
|
||||||
- Arabic diacritic marks (harakat) are set to have zero advance
|
|
||||||
width and OT class as 'mark' nstead of 'base glyph'
|
|
||||||
|
|
||||||
2007-06-23 17:37 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_AlArabiya.sfd, ae_AlBattar.sfd, ae_AlHor.sfd,
|
|
||||||
ae_AlManzomah.sfd:
|
|
||||||
- New glyphs (covering every thing outside Arabic block) based on
|
|
||||||
the GPL'd FreeFont project [http://www.nongnu.org/freefont/].
|
|
||||||
- Arabic diacritic marks (harakat) are set to have zero advance
|
|
||||||
width and OT class as 'mark' nstead of 'base glyph'
|
|
||||||
|
|
||||||
2007-06-21 05:57 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* tools/cp.pe: Simple ff script to copy a specific range of glyphs
|
|
||||||
from on font to another.
|
|
||||||
|
|
||||||
2007-06-16 01:54 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlMothnna-Bold.sfd:
|
|
||||||
- Identical glyphs (or parts of glyphs) are referenced to one common
|
|
||||||
glyph instead of copying the same shape each time.
|
|
||||||
- Add few missed Arabic glyphs, DOTLESS QAF, DOTLESS BEH, HAMZA
|
|
||||||
ABOVE, HAMZA BELOW and EXTENDED ARABIC-INDIC DIGIT ZERO, ONE, TWO,
|
|
||||||
THREE, SEVEN, EIGHT, NINE.
|
|
||||||
|
|
||||||
2007-06-15 07:10 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/: ae_AlArabiya.sfd, ae_AlBattar.sfd, ae_AlHor.sfd,
|
|
||||||
ae_AlManzomah.sfd, ae_AlMateen-Bold.sfd, ae_AlMohanad.sfd,
|
|
||||||
ae_AlMothnna-Bold.sfd, ae_AlYarmook.sfd, ae_Arab.sfd,
|
|
||||||
ae_Cortoba.sfd, ae_Dimnah.sfd, ae_Electron.sfd, ae_Furat.sfd,
|
|
||||||
ae_Granada.sfd, ae_Graph.sfd, ae_Hani.sfd, ae_Haramain.sfd,
|
|
||||||
ae_Hor.sfd, ae_Japan.sfd, ae_Jet.sfd, ae_Kayrawan.sfd,
|
|
||||||
ae_Khalid.sfd, ae_Mashq-Bold.sfd, ae_Mashq.sfd, ae_Metal.sfd,
|
|
||||||
ae_Nada.sfd, ae_Nagham.sfd, ae_Nice.sfd, ae_Ostorah.sfd,
|
|
||||||
ae_Ouhod-Bold.sfd, ae_Petra.sfd, ae_Rasheeq-Bold.sfd,
|
|
||||||
ae_Rehan.sfd, ae_Salem.sfd, ae_Shado.sfd, ae_Sharjah.sfd,
|
|
||||||
ae_Sindbad.sfd, ae_Tarablus.sfd, ae_Tholoth.sfd: Preparing to
|
|
||||||
work
|
|
||||||
|
|
||||||
2007-06-02 21:25 Khaled Hosny <khaledhosny@eglug.org>
|
|
||||||
|
|
||||||
* sfd/ae_AlMothnna-Bold.sfd:
|
|
||||||
- A modified version of "AlMothnna", partially fixes the vowel marks
|
|
||||||
issues.
|
|
||||||
- This is fontforg's sfd file.
|
|
||||||
|
|
||||||
2004-07-10 09:48 nadim
|
|
||||||
|
|
||||||
* COPYING: + Minor mods to the GPL license mention (their address
|
|
||||||
changed) + Added disclaimer + Renamed file from license.txt for
|
|
||||||
consistency
|
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -155,8 +155,9 @@ class KnowledgeManagement extends DolibarrApi
|
|||||||
$sql .= " AND sc.fk_user = ".((int) $search_sale);
|
$sql .= " AND sc.fk_user = ".((int) $search_sale);
|
||||||
}
|
}
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -116,7 +116,7 @@ class KnowledgeRecord 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,),
|
||||||
//'url' => array('type'=>'varchar(255)', 'label'=>'URL', 'enabled'=>'1', 'position'=>55, 'notnull'=>0, 'visible'=>-1, 'csslist'=>'tdoverflow200', 'help'=>'UrlForInfoPage'),
|
//'url' => array('type'=>'varchar(255)', 'label'=>'URL', 'enabled'=>'1', 'position'=>55, 'notnull'=>0, 'visible'=>-1, 'csslist'=>'tdoverflow200', 'help'=>'UrlForInfoPage'),
|
||||||
'fk_c_ticket_category' => array('type'=>'integer:CTicketCategory:ticket/class/cticketcategory.class.php:0::pos', 'label'=>'SuggestedForTicketsInGroup', 'enabled'=>'$conf->ticket->enabled', 'position'=>512, 'notnull'=>0, 'visible'=>-1, 'help'=>'YouCanLinkArticleToATicketCategory', 'csslist'=>'minwidth200 tdoverflowmax250'),
|
'fk_c_ticket_category' => array('type'=>'integer:CTicketCategory:ticket/class/cticketcategory.class.php:0::pos', 'label'=>'SuggestedForTicketsInGroup', 'enabled'=>'$conf->ticket->enabled', 'position'=>512, 'notnull'=>0, 'visible'=>-1, 'help'=>'YouCanLinkArticleToATicketCategory', 'csslist'=>'minwidth200 tdoverflowmax250'),
|
||||||
'status' => array('type'=>'integer', 'label'=>'Status', 'enabled'=>'1', 'position'=>1000, 'notnull'=>1, 'visible'=>1, 'default'=>0, 'index'=>1, 'arrayofkeyval'=>array('0'=>'Draft', '1'=>'Validated'),),
|
'status' => array('type'=>'integer', 'label'=>'Status', 'enabled'=>'1', 'position'=>1000, 'notnull'=>1, 'visible'=>5, 'default'=>0, 'index'=>1, 'arrayofkeyval'=>array('0'=>'Draft', '1'=>'Validated'),),
|
||||||
);
|
);
|
||||||
public $rowid;
|
public $rowid;
|
||||||
public $ref;
|
public $ref;
|
||||||
|
|||||||
@ -2216,3 +2216,4 @@ PDF_USE_1A=Generate PDF with PDF/A-1b format
|
|||||||
MissingTranslationForConfKey = Missing translation for %s
|
MissingTranslationForConfKey = Missing translation for %s
|
||||||
NativeModules=Native modules
|
NativeModules=Native modules
|
||||||
NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria
|
NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria
|
||||||
|
API_DISABLE_COMPRESSION=Disable compression of API responses
|
||||||
@ -88,7 +88,7 @@ FileWasNotUploaded=A file is selected for attachment but was not yet uploaded. C
|
|||||||
NbOfEntries=No. of entries
|
NbOfEntries=No. of entries
|
||||||
GoToWikiHelpPage=Read online help (Internet access needed)
|
GoToWikiHelpPage=Read online help (Internet access needed)
|
||||||
GoToHelpPage=Read help
|
GoToHelpPage=Read help
|
||||||
DedicatedPageAvailable=There is a dedicated help page related to your current screen
|
DedicatedPageAvailable=Dedicated help page related to your current screen
|
||||||
HomePage=Home Page
|
HomePage=Home Page
|
||||||
RecordSaved=Record saved
|
RecordSaved=Record saved
|
||||||
RecordDeleted=Record deleted
|
RecordDeleted=Record deleted
|
||||||
|
|||||||
@ -115,7 +115,7 @@ WithdrawRequestErrorNilAmount=Unable to create direct debit request for empty am
|
|||||||
SepaMandate=SEPA Direct Debit Mandate
|
SepaMandate=SEPA Direct Debit Mandate
|
||||||
SepaMandateShort=SEPA Mandate
|
SepaMandateShort=SEPA Mandate
|
||||||
PleaseReturnMandate=Please return this mandate form by email to %s or by mail to
|
PleaseReturnMandate=Please return this mandate form by email to %s or by mail to
|
||||||
SEPALegalText=By signing this mandate form, you authorize (A) %s to send instructions to your bank to debit your account and (B) your bank to debit your account in accordance with the instructions from %s. As part of your rights, you are entitled to a refund from your bank under the terms and conditions of your agreement with your bank. A refund must be claimed within 8 weeks starting from the date on which your account was debited. Your rights regarding the above mandate are explained in a statement that you can obtain from your bank.
|
SEPALegalText=By signing this mandate form, you authorize (A) %s to send instructions to your bank to debit your account and (B) your bank to debit your account in accordance with the instructions from %s. As part of your rights, you are entitled to a refund from your bank under the terms and conditions of your agreement with your bank. Your rights regarding the above mandate are explained in a statement that you can obtain from your bank.
|
||||||
CreditorIdentifier=Creditor Identifier
|
CreditorIdentifier=Creditor Identifier
|
||||||
CreditorName=Creditor Name
|
CreditorName=Creditor Name
|
||||||
SEPAFillForm=(B) Please complete all the fields marked *
|
SEPAFillForm=(B) Please complete all the fields marked *
|
||||||
|
|||||||
@ -1932,9 +1932,9 @@ function top_menu($head, $title = '', $target = '', $disablejs = 0, $disablehead
|
|||||||
// Link to help pages
|
// Link to help pages
|
||||||
if ($helpbaseurl && $helppage) {
|
if ($helpbaseurl && $helppage) {
|
||||||
$text = '';
|
$text = '';
|
||||||
$title = $langs->trans($mode == 'wiki' ? 'GoToWikiHelpPage' : 'GoToHelpPage').'...';
|
$title = $langs->trans($mode == 'wiki' ? 'GoToWikiHelpPage' : 'GoToHelpPage').', ';
|
||||||
if ($mode == 'wiki') {
|
if ($mode == 'wiki') {
|
||||||
$title .= '<br>'.$langs->trans("PageWiki").' '.dol_escape_htmltag('"'.strtr($helppage, '_', ' ').'"');
|
$title .= '<br>'.img_picto('', 'globe', 'class="pictofixedwidth"').$langs->trans("PageWiki").' '.dol_escape_htmltag('"'.strtr($helppage, '_', ' ').'"');
|
||||||
if ($helppresent) {
|
if ($helppresent) {
|
||||||
$title .= ' <span class="opacitymedium">('.$langs->trans("DedicatedPageAvailable").')</span>';
|
$title .= ' <span class="opacitymedium">('.$langs->trans("DedicatedPageAvailable").')</span>';
|
||||||
} else {
|
} else {
|
||||||
@ -1949,7 +1949,7 @@ function top_menu($head, $title = '', $target = '', $disablejs = 0, $disablehead
|
|||||||
}
|
}
|
||||||
$text .= '">';
|
$text .= '">';
|
||||||
$text .= '<span class="fa fa-question-circle atoplogin valignmiddle'.($helppresent ? ' '.$helppresent : '').'"></span>';
|
$text .= '<span class="fa fa-question-circle atoplogin valignmiddle'.($helppresent ? ' '.$helppresent : '').'"></span>';
|
||||||
$text .= '<span class="fa fa-circle helppresentcircle'.($helppresent ? '' : ' unvisible').'"></span>';
|
$text .= '<span class="fa fa-long-arrow-alt-up helppresentcircle'.($helppresent ? '' : ' unvisible').'"></span>';
|
||||||
$text .= '</a>';
|
$text .= '</a>';
|
||||||
$toprightmenu .= $form->textwithtooltip('', $title, 2, 1, $text, 'login_block_elem', 2);
|
$toprightmenu .= $form->textwithtooltip('', $title, 2, 1, $text, 'login_block_elem', 2);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -155,8 +155,9 @@ class MyModuleApi extends DolibarrApi
|
|||||||
$sql .= " AND sc.fk_user = ".((int) $search_sale);
|
$sql .= " AND sc.fk_user = ".((int) $search_sale);
|
||||||
}
|
}
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -147,8 +147,9 @@ class Mos extends DolibarrApi
|
|||||||
$sql .= " AND sc.fk_user = ".((int) $search_sale);
|
$sql .= " AND sc.fk_user = ".((int) $search_sale);
|
||||||
}
|
}
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -39,6 +39,13 @@ class ActionsCardService
|
|||||||
public $field_list = array();
|
public $field_list = array();
|
||||||
public $list_datas = array();
|
public $list_datas = array();
|
||||||
|
|
||||||
|
public $id;
|
||||||
|
public $ref;
|
||||||
|
public $description;
|
||||||
|
public $note;
|
||||||
|
public $price;
|
||||||
|
public $price_min;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
@ -196,6 +203,7 @@ class ActionsCardService
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Duration
|
// Duration
|
||||||
|
$dur = array();
|
||||||
if ($this->object->duration_value > 1) {
|
if ($this->object->duration_value > 1) {
|
||||||
$dur = array("h"=>$langs->trans("Hours"), "d"=>$langs->trans("Days"), "w"=>$langs->trans("Weeks"), "m"=>$langs->trans("Months"), "y"=>$langs->trans("Years"));
|
$dur = array("h"=>$langs->trans("Hours"), "d"=>$langs->trans("Days"), "w"=>$langs->trans("Weeks"), "m"=>$langs->trans("Months"), "y"=>$langs->trans("Years"));
|
||||||
} elseif ($this->object->duration_value > 0) {
|
} elseif ($this->object->duration_value > 0) {
|
||||||
@ -286,6 +294,7 @@ class ActionsCardService
|
|||||||
if ($search_categ) {
|
if ($search_categ) {
|
||||||
$sql .= ", ".MAIN_DB_PREFIX."categorie_product as cp";
|
$sql .= ", ".MAIN_DB_PREFIX."categorie_product as cp";
|
||||||
}
|
}
|
||||||
|
$fourn_id = 0;
|
||||||
if (GETPOST("fourn_id", 'int') > 0) {
|
if (GETPOST("fourn_id", 'int') > 0) {
|
||||||
$fourn_id = GETPOST("fourn_id", 'int');
|
$fourn_id = GETPOST("fourn_id", 'int');
|
||||||
$sql .= ", ".MAIN_DB_PREFIX."product_fournisseur_price as pfp";
|
$sql .= ", ".MAIN_DB_PREFIX."product_fournisseur_price as pfp";
|
||||||
|
|||||||
@ -219,8 +219,9 @@ class Products extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
//var_dump($sqlfilters);exit;
|
//var_dump($sqlfilters);exit;
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; // We must accept datc:<:2020-01-01 10:10:10
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; // We must accept datc:<:2020-01-01 10:10:10
|
||||||
@ -889,8 +890,9 @@ class Products extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -1016,8 +1018,9 @@ class Products extends DolibarrApi
|
|||||||
|
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -109,8 +109,9 @@ class StockMovements extends DolibarrApi
|
|||||||
$sql .= ' WHERE 1 = 1';
|
$sql .= ' WHERE 1 = 1';
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -116,8 +116,9 @@ class Warehouses extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -150,8 +150,9 @@ class Projects extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -150,8 +150,9 @@ class Tasks extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
* Copyright (C) 2006-2020 Laurent Destailleur <eldy@users.sourceforge.net>
|
* Copyright (C) 2006-2021 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
* Copyright (C) 2010-2012 Regis Houssin <regis.houssin@inodbox.com>
|
* Copyright (C) 2010-2012 Regis Houssin <regis.houssin@inodbox.com>
|
||||||
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
|
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) 2018 Ferran Marcet <fmarcet@2byte.es>
|
* Copyright (C) 2018 Ferran Marcet <fmarcet@2byte.es>
|
||||||
@ -108,11 +108,20 @@ $extrafields = new ExtraFields($db);
|
|||||||
$extrafields->fetch_name_optionals_label($projectstatic->table_element);
|
$extrafields->fetch_name_optionals_label($projectstatic->table_element);
|
||||||
$extrafields->fetch_name_optionals_label($object->table_element);
|
$extrafields->fetch_name_optionals_label($object->table_element);
|
||||||
|
|
||||||
|
// Load task
|
||||||
if ($id > 0 || $ref) {
|
if ($id > 0 || $ref) {
|
||||||
$object->fetch($id, $ref);
|
$object->fetch($id, $ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
restrictedArea($user, 'projet', $object->fk_project, 'projet&project');
|
if ($object->fk_project > 0) {
|
||||||
|
restrictedArea($user, 'projet', $object->fk_project, 'projet&project');
|
||||||
|
} else {
|
||||||
|
restrictedArea($user, 'projet', null, 'projet&project');
|
||||||
|
// We check user has permission to see all taks of all users
|
||||||
|
if (empty($projectid) && !$user->hasRight('projet', 'all', 'lire')) {
|
||||||
|
$search_user = $user->id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -335,6 +344,10 @@ if (GETPOST('projectid', 'int') > 0) {
|
|||||||
$object->fetch($id);
|
$object->fetch($id);
|
||||||
$result = $projectstatic->fetch($object->fk_project);
|
$result = $projectstatic->fetch($object->fk_project);
|
||||||
}
|
}
|
||||||
|
// If not task selected and no project selected
|
||||||
|
if ($id <= 0 && $projectidforalltimes == 0) {
|
||||||
|
$allprojectforuser = $user->id;
|
||||||
|
}
|
||||||
|
|
||||||
if ($action == 'confirm_generateinvoice') {
|
if ($action == 'confirm_generateinvoice') {
|
||||||
if (!empty($projectstatic->socid)) {
|
if (!empty($projectstatic->socid)) {
|
||||||
@ -678,7 +691,7 @@ $formother = new FormOther($db);
|
|||||||
$formproject = new FormProjets($db);
|
$formproject = new FormProjets($db);
|
||||||
$userstatic = new User($db);
|
$userstatic = new User($db);
|
||||||
|
|
||||||
if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) {
|
if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser > 0) {
|
||||||
/*
|
/*
|
||||||
* Fiche projet en mode visu
|
* Fiche projet en mode visu
|
||||||
*/
|
*/
|
||||||
@ -720,6 +733,15 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) {
|
|||||||
print dol_get_fiche_head($head, $tab, $langs->trans("Project"), -1, ($projectstatic->public ? 'projectpub' : 'project'));
|
print dol_get_fiche_head($head, $tab, $langs->trans("Project"), -1, ($projectstatic->public ? 'projectpub' : 'project'));
|
||||||
|
|
||||||
$param = ((!empty($mode) && $mode == 'mine') ? '&mode=mine' : '');
|
$param = ((!empty($mode) && $mode == 'mine') ? '&mode=mine' : '');
|
||||||
|
if ($search_user) {
|
||||||
|
$param .= '&search_user='.((int) $search_user);
|
||||||
|
}
|
||||||
|
if ($search_month) {
|
||||||
|
$param .= '&search_month='.((int) $search_month);
|
||||||
|
}
|
||||||
|
if ($search_year) {
|
||||||
|
$param .= '&search_year='.((int) $search_year);
|
||||||
|
}
|
||||||
|
|
||||||
// Project card
|
// Project card
|
||||||
|
|
||||||
@ -740,7 +762,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) {
|
|||||||
$projectstatic->next_prev_filter = " rowid IN (".$db->sanitize(count($objectsListId) ?join(',', array_keys($objectsListId)) : '0').")";
|
$projectstatic->next_prev_filter = " rowid IN (".$db->sanitize(count($objectsListId) ?join(',', array_keys($objectsListId)) : '0').")";
|
||||||
}
|
}
|
||||||
|
|
||||||
dol_banner_tab($projectstatic, 'project_ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
|
dol_banner_tab($projectstatic, 'project_ref', $linkback, 1, 'ref', 'ref', $morehtmlref, $param);
|
||||||
|
|
||||||
print '<div class="fichecenter">';
|
print '<div class="fichecenter">';
|
||||||
print '<div class="fichehalfleft">';
|
print '<div class="fichehalfleft">';
|
||||||
@ -888,7 +910,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) {
|
|||||||
$massactionbutton = $form->selectMassAction('', $arrayofmassactions);
|
$massactionbutton = $form->selectMassAction('', $arrayofmassactions);
|
||||||
|
|
||||||
// Show section with information of task. If id of task is not defined and project id defined, then $projectidforalltimes is not empty.
|
// Show section with information of task. If id of task is not defined and project id defined, then $projectidforalltimes is not empty.
|
||||||
if (empty($projectidforalltimes)) {
|
if (empty($projectidforalltimes) && empty($allprojectforuser)) {
|
||||||
$head = task_prepare_head($object);
|
$head = task_prepare_head($object);
|
||||||
print dol_get_fiche_head($head, 'task_time', $langs->trans("Task"), -1, 'projecttask', 0, '', 'reposition');
|
print dol_get_fiche_head($head, 'task_time', $langs->trans("Task"), -1, 'projecttask', 0, '', 'reposition');
|
||||||
|
|
||||||
@ -990,7 +1012,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if ($projectstatic->id > 0) {
|
if ($projectstatic->id > 0 || $allprojectforuser > 0) {
|
||||||
if ($action == 'deleteline' && !empty($projectidforalltimes)) {
|
if ($action == 'deleteline' && !empty($projectidforalltimes)) {
|
||||||
print $form->formconfirm($_SERVER["PHP_SELF"]."?".($object->id > 0 ? "id=".$object->id : 'projectid='.$projectstatic->id).'&lineid='.GETPOST('lineid', 'int').($withproject ? '&withproject=1' : ''), $langs->trans("DeleteATimeSpent"), $langs->trans("ConfirmDeleteATimeSpent"), "confirm_delete", '', '', 1);
|
print $form->formconfirm($_SERVER["PHP_SELF"]."?".($object->id > 0 ? "id=".$object->id : 'projectid='.$projectstatic->id).'&lineid='.GETPOST('lineid', 'int').($withproject ? '&withproject=1' : ''), $langs->trans("DeleteATimeSpent"), $langs->trans("ConfirmDeleteATimeSpent"), "confirm_delete", '', '', 1);
|
||||||
}
|
}
|
||||||
@ -1216,7 +1238,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) {
|
|||||||
$tasks = array();
|
$tasks = array();
|
||||||
|
|
||||||
$sql = "SELECT t.rowid, t.fk_task, t.task_date, t.task_datehour, t.task_date_withhour, t.task_duration, t.fk_user, t.note, t.thm,";
|
$sql = "SELECT t.rowid, t.fk_task, t.task_date, t.task_datehour, t.task_date_withhour, t.task_duration, t.fk_user, t.note, t.thm,";
|
||||||
$sql .= " pt.ref, pt.label,";
|
$sql .= " pt.ref, pt.label, pt.fk_projet,";
|
||||||
$sql .= " u.lastname, u.firstname, u.login, u.photo, u.statut as user_status,";
|
$sql .= " u.lastname, u.firstname, u.login, u.photo, u.statut as user_status,";
|
||||||
$sql .= " il.fk_facture as invoice_id, inv.fk_statut";
|
$sql .= " il.fk_facture as invoice_id, inv.fk_statut";
|
||||||
$sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t";
|
$sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t";
|
||||||
@ -1225,11 +1247,20 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) {
|
|||||||
$sql .= " ".MAIN_DB_PREFIX."projet_task as pt, ".MAIN_DB_PREFIX."user as u";
|
$sql .= " ".MAIN_DB_PREFIX."projet_task as pt, ".MAIN_DB_PREFIX."user as u";
|
||||||
$sql .= " WHERE t.fk_user = u.rowid AND t.fk_task = pt.rowid";
|
$sql .= " WHERE t.fk_user = u.rowid AND t.fk_task = pt.rowid";
|
||||||
|
|
||||||
if (empty($projectidforalltimes)) {
|
if (empty($projectidforalltimes) && empty($allprojectforuser)) {
|
||||||
|
// Limit on one task
|
||||||
$sql .= " AND t.fk_task =".((int) $object->id);
|
$sql .= " AND t.fk_task =".((int) $object->id);
|
||||||
} else {
|
} elseif (!empty($projectidforalltimes)) {
|
||||||
|
// Limit on one project
|
||||||
$sql .= " AND pt.fk_projet IN (".$db->sanitize($projectidforalltimes).")";
|
$sql .= " AND pt.fk_projet IN (".$db->sanitize($projectidforalltimes).")";
|
||||||
|
} elseif (!empty($allprojectforuser)) {
|
||||||
|
// Limit on on user
|
||||||
|
if (empty($search_user)) {
|
||||||
|
$search_user = $user->id;
|
||||||
|
}
|
||||||
|
$sql .= " AND t.fk_user = ".((int) $search_user);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($search_note) {
|
if ($search_note) {
|
||||||
$sql .= natural_search('t.note', $search_note);
|
$sql .= natural_search('t.note', $search_note);
|
||||||
}
|
}
|
||||||
@ -1290,7 +1321,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) {
|
|||||||
|
|
||||||
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'clock', 0, $linktocreatetime, '', $limit, 0, 0, 1);
|
print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'clock', 0, $linktocreatetime, '', $limit, 0, 0, 1);
|
||||||
} else {
|
} else {
|
||||||
print '<!-- List of time spent for project -->'."\n";
|
print '<!-- List of time spent -->'."\n";
|
||||||
|
|
||||||
$title = $langs->trans("ListTaskTimeForTask");
|
$title = $langs->trans("ListTaskTimeForTask");
|
||||||
|
|
||||||
@ -1322,6 +1353,9 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) {
|
|||||||
|
|
||||||
print '<tr class="liste_titre">';
|
print '<tr class="liste_titre">';
|
||||||
print '<td>'.$langs->trans("Date").'</td>';
|
print '<td>'.$langs->trans("Date").'</td>';
|
||||||
|
if (!empty($allprojectforuser)) {
|
||||||
|
print '<td>'.$langs->trans("Project").'</td>';
|
||||||
|
}
|
||||||
if (empty($id)) {
|
if (empty($id)) {
|
||||||
print '<td>'.$langs->trans("Task").'</td>';
|
print '<td>'.$langs->trans("Task").'</td>';
|
||||||
}
|
}
|
||||||
@ -1343,6 +1377,12 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) {
|
|||||||
print $form->selectDate($newdate, 'time', ($conf->browser->layout == 'phone' ? 2 : 1), 1, 2, "timespent_date", 1, 0);
|
print $form->selectDate($newdate, 'time', ($conf->browser->layout == 'phone' ? 2 : 1), 1, 2, "timespent_date", 1, 0);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
|
|
||||||
|
if (!empty($allprojectforuser)) {
|
||||||
|
print '<td>';
|
||||||
|
// Add project selector
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
|
||||||
// Task
|
// Task
|
||||||
$nboftasks = 0;
|
$nboftasks = 0;
|
||||||
if (empty($id)) {
|
if (empty($id)) {
|
||||||
@ -1445,6 +1485,10 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) {
|
|||||||
$formother->select_year($search_year, 'search_year', 1, 20, 5);
|
$formother->select_year($search_year, 'search_year', 1, 20, 5);
|
||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
if (!empty($allprojectforuser)) {
|
||||||
|
print '<td></td>';
|
||||||
|
}
|
||||||
|
// Task
|
||||||
if ((empty($id) && empty($ref)) || !empty($projectidforalltimes)) { // Not a dedicated task
|
if ((empty($id) && empty($ref)) || !empty($projectidforalltimes)) { // Not a dedicated task
|
||||||
if (!empty($arrayfields['t.task_ref']['checked'])) {
|
if (!empty($arrayfields['t.task_ref']['checked'])) {
|
||||||
print '<td class="liste_titre"><input type="text" class="flat maxwidth100" name="search_task_ref" value="'.dol_escape_htmltag($search_task_ref).'"></td>';
|
print '<td class="liste_titre"><input type="text" class="flat maxwidth100" name="search_task_ref" value="'.dol_escape_htmltag($search_task_ref).'"></td>';
|
||||||
@ -1493,6 +1537,9 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) {
|
|||||||
if (!empty($arrayfields['t.task_date']['checked'])) {
|
if (!empty($arrayfields['t.task_date']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['t.task_date']['label'], $_SERVER['PHP_SELF'], 't.task_date,t.task_datehour,t.rowid', '', $param, '', $sortfield, $sortorder);
|
print_liste_field_titre($arrayfields['t.task_date']['label'], $_SERVER['PHP_SELF'], 't.task_date,t.task_datehour,t.rowid', '', $param, '', $sortfield, $sortorder);
|
||||||
}
|
}
|
||||||
|
if (!empty($allprojectforuser)) {
|
||||||
|
print_liste_field_titre("Project", $_SERVER['PHP_SELF'], '', '', $param, '', $sortfield, $sortorder);
|
||||||
|
}
|
||||||
if ((empty($id) && empty($ref)) || !empty($projectidforalltimes)) { // Not a dedicated task
|
if ((empty($id) && empty($ref)) || !empty($projectidforalltimes)) { // Not a dedicated task
|
||||||
if (!empty($arrayfields['t.task_ref']['checked'])) {
|
if (!empty($arrayfields['t.task_ref']['checked'])) {
|
||||||
print_liste_field_titre($arrayfields['t.task_ref']['label'], $_SERVER['PHP_SELF'], 'pt.ref', '', $param, '', $sortfield, $sortorder);
|
print_liste_field_titre($arrayfields['t.task_ref']['label'], $_SERVER['PHP_SELF'], 'pt.ref', '', $param, '', $sortfield, $sortorder);
|
||||||
@ -1565,6 +1612,23 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Project ref
|
||||||
|
if (!empty($allprojectforuser)) {
|
||||||
|
print '<td class="nowraponall">';
|
||||||
|
if (empty($conf->cache['project'][$task_time->fk_projet])) {
|
||||||
|
$tmpproject = new Project($db);
|
||||||
|
$tmpproject->fetch($task_time->fk_projet);
|
||||||
|
$conf->cache['project'][$task_time->fk_projet] = $tmpproject;
|
||||||
|
} else {
|
||||||
|
$tmpproject = $conf->cache['project'][$task_time->fk_projet];
|
||||||
|
}
|
||||||
|
print $tmpproject->getNomUrl(1);
|
||||||
|
print '</td>';
|
||||||
|
if (!$i) {
|
||||||
|
$totalarray['nbfield']++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Task ref
|
// Task ref
|
||||||
if (!empty($arrayfields['t.task_ref']['checked'])) {
|
if (!empty($arrayfields['t.task_ref']['checked'])) {
|
||||||
if ((empty($id) && empty($ref)) || !empty($projectidforalltimes)) { // Not a dedicated task
|
if ((empty($id) && empty($ref)) || !empty($projectidforalltimes)) { // Not a dedicated task
|
||||||
@ -1788,6 +1852,14 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) {
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Project ref
|
||||||
|
if (!empty($allprojectforuser)) {
|
||||||
|
if ((empty($id) && empty($ref)) || !empty($projectidforalltimes)) { // Not a dedicated task
|
||||||
|
print '<td class="nowrap">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Task ref
|
// Task ref
|
||||||
if (!empty($arrayfields['t.task_ref']['checked'])) {
|
if (!empty($arrayfields['t.task_ref']['checked'])) {
|
||||||
if ((empty($id) && empty($ref)) || !empty($projectidforalltimes)) { // Not a dedicated task
|
if ((empty($id) && empty($ref)) || !empty($projectidforalltimes)) { // Not a dedicated task
|
||||||
@ -1916,6 +1988,14 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) {
|
|||||||
print '</td>';
|
print '</td>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Project ref
|
||||||
|
if (!empty($allprojectforuser)) {
|
||||||
|
if ((empty($id) && empty($ref)) || !empty($projectidforalltimes)) { // Not a dedicated task
|
||||||
|
print '<td class="nowrap">';
|
||||||
|
print '</td>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Task ref
|
// Task ref
|
||||||
if (!empty($arrayfields['t.task_ref']['checked'])) {
|
if (!empty($arrayfields['t.task_ref']['checked'])) {
|
||||||
if ((empty($id) && empty($ref)) || !empty($projectidforalltimes)) { // Not a dedicated task
|
if ((empty($id) && empty($ref)) || !empty($projectidforalltimes)) { // Not a dedicated task
|
||||||
|
|||||||
@ -116,9 +116,6 @@ if ($id > 0 || !empty($ref)) {
|
|||||||
|
|
||||||
|
|
||||||
$morehtmlref = '<div class="refidno">';
|
$morehtmlref = '<div class="refidno">';
|
||||||
// Ref customer
|
|
||||||
$morehtmlref .= $form->editfieldkey("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', 0, 1);
|
|
||||||
$morehtmlref .= $form->editfieldval("RefCustomer", 'ref_client', $object->ref_client, $object, 0, 'string', '', null, null, '', 1);
|
|
||||||
// Thirdparty
|
// Thirdparty
|
||||||
$morehtmlref .= '<br>'.$langs->trans('ThirdParty').' : '.$object->thirdparty->getNomUrl(1);
|
$morehtmlref .= '<br>'.$langs->trans('ThirdParty').' : '.$object->thirdparty->getNomUrl(1);
|
||||||
|
|
||||||
|
|||||||
@ -216,8 +216,9 @@ class Contacts extends DolibarrApi
|
|||||||
|
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -202,8 +202,9 @@ class Thirdparties extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -1228,7 +1228,7 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard'
|
|||||||
|
|
||||||
if ($nbremote == 0 && $nblocal == 0) {
|
if ($nbremote == 0 && $nblocal == 0) {
|
||||||
$colspan = (!empty($conf->global->STRIPE_ALLOW_LOCAL_CARD) ? 10 : 9);
|
$colspan = (!empty($conf->global->STRIPE_ALLOW_LOCAL_CARD) ? 10 : 9);
|
||||||
print '<tr><td colspan="'.$colspan.'"<span class="opacitymedium">>'.$langs->trans("None").'</span></td></tr>';
|
print '<tr><td colspan="'.$colspan.'"<span class="opacitymedium">'.$langs->trans("None").'</span></td></tr>';
|
||||||
}
|
}
|
||||||
print "</table>";
|
print "</table>";
|
||||||
print "</div>";
|
print "</div>";
|
||||||
|
|||||||
@ -139,8 +139,9 @@ class Supplierproposals extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -359,7 +359,7 @@ a.top-menu-dropdown-link {
|
|||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
text-align:center;
|
text-align:center;
|
||||||
text-decoration:none;
|
text-decoration:none;
|
||||||
margin-right: 5px;
|
margin-<?php echo $right; ?>: 5px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
content: "\f0da";
|
content: "\f0da";
|
||||||
/* color: rgba(0,0,0,0.3); */
|
/* color: rgba(0,0,0,0.3); */
|
||||||
|
|||||||
@ -1971,8 +1971,8 @@ div.vmenu, td.vmenu {
|
|||||||
|
|
||||||
|
|
||||||
div.fiche {
|
div.fiche {
|
||||||
margin-<?php print $left; ?>: <?php print (GETPOST('optioncss', 'aZ09') == 'print' ? 6 : (empty($conf->dol_optimize_smallscreen) ? '34' : '6')); ?>px;
|
margin-<?php print $left; ?>: <?php print (GETPOST('optioncss', 'aZ09') == 'print' ? 6 : (empty($conf->dol_optimize_smallscreen) ? '40' : '6')); ?>px;
|
||||||
margin-<?php print $right; ?>: <?php print (GETPOST('optioncss', 'aZ09') == 'print' ? 6 : (empty($conf->dol_optimize_smallscreen) ? '30' : '6')); ?>px;
|
margin-<?php print $right; ?>: <?php print (GETPOST('optioncss', 'aZ09') == 'print' ? 6 : (empty($conf->dol_optimize_smallscreen) ? '36' : '6')); ?>px;
|
||||||
<?php if (!empty($dol_hide_leftmenu)) {
|
<?php if (!empty($dol_hide_leftmenu)) {
|
||||||
print 'margin-bottom: 12px;'."\n";
|
print 'margin-bottom: 12px;'."\n";
|
||||||
} ?>
|
} ?>
|
||||||
@ -2932,14 +2932,17 @@ a.help:link, a.help:visited, a.help:hover, a.help:active, span.help {
|
|||||||
/* color: #f3e4ac !important; */
|
/* color: #f3e4ac !important; */
|
||||||
}
|
}
|
||||||
.helppresentcircle {
|
.helppresentcircle {
|
||||||
|
/*
|
||||||
color: var(--colorbackhmenu1);
|
color: var(--colorbackhmenu1);
|
||||||
filter: invert(0.8);
|
filter: invert(0.5);
|
||||||
margin-<?php echo $left ?>: -7px;
|
*/
|
||||||
|
color: var(--colortextbackhmenu);
|
||||||
|
margin-<?php echo $left ?>: -4px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-top: -10px;
|
|
||||||
font-size: x-small;
|
font-size: x-small;
|
||||||
vertical-align: super;
|
vertical-align: super;
|
||||||
opacity: 0.95;
|
opacity: 0.95;
|
||||||
|
transform: rotate(<?php echo ($left == 'left' ? '55deg' : '305deg'); ?>);
|
||||||
}
|
}
|
||||||
|
|
||||||
.vmenu div.blockvmenufirst, .vmenu div.blockvmenulogo, .vmenu div.blockvmenusearchphone, .vmenu div.blockvmenubookmarks
|
.vmenu div.blockvmenufirst, .vmenu div.blockvmenulogo, .vmenu div.blockvmenusearchphone, .vmenu div.blockvmenubookmarks
|
||||||
|
|||||||
@ -365,7 +365,7 @@ a.top-menu-dropdown-link {
|
|||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
text-align:center;
|
text-align:center;
|
||||||
text-decoration:none;
|
text-decoration:none;
|
||||||
margin-right: 5px;
|
margin-<?php echo $right; ?>: 5px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
content: "\f0da";
|
content: "\f0da";
|
||||||
color: rgba(0,0,0,0.3);
|
color: rgba(0,0,0,0.3);
|
||||||
|
|||||||
@ -1834,7 +1834,7 @@ td.showDragHandle {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
padding-bottom: 20px;
|
padding-bottom: 20px;
|
||||||
<?php if (GETPOST('optioncss', 'aZ09') != 'print') { ?>
|
<?php if (GETPOST('optioncss', 'aZ09') != 'print') { ?>
|
||||||
padding-left: 229px;
|
padding-<?php print $left; ?>: 229px;
|
||||||
padding-top: 16px;
|
padding-top: 16px;
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
}
|
}
|
||||||
@ -1860,13 +1860,13 @@ td.showDragHandle {
|
|||||||
display: none;
|
display: none;
|
||||||
<?php } else { ?>
|
<?php } else { ?>
|
||||||
background: var(--colorbackvmenu1);
|
background: var(--colorbackvmenu1);
|
||||||
border-right: 1px solid rgba(0,0,0,0.2);
|
border-<?php echo $right; ?>: 1px solid rgba(0,0,0,0.2);
|
||||||
box-shadow: 3px 0 6px -2px #eee;
|
box-shadow: 3px 0 6px -2px #eee;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
color: #333;
|
color: #333;
|
||||||
display: block;
|
display: block;
|
||||||
font-family: "RobotoDraft","Roboto",sans-serif;
|
font-family: "RobotoDraft","Roboto",sans-serif;
|
||||||
left: 0;
|
<?php echo $left; ?>: 0;
|
||||||
<?php
|
<?php
|
||||||
if (in_array($conf->browser->layout, array('phone', 'tablet')) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) {
|
if (in_array($conf->browser->layout, array('phone', 'tablet')) && empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) {
|
||||||
} else { ?>
|
} else { ?>
|
||||||
@ -1920,12 +1920,13 @@ td.showDragHandle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
body.sidebar-collapse .side-nav-vert, body.sidebar-collapse #id-right {
|
body.sidebar-collapse .side-nav-vert, body.sidebar-collapse #id-right {
|
||||||
margin-left: 0;padding-left:0
|
margin-left: 0;
|
||||||
|
padding-left:0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.side-nav-vert {
|
.side-nav-vert {
|
||||||
margin-left: 228px;
|
margin-<?php echo $left; ?>: 228px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* body.sidebar-collapse .side-nav, body.sidebar-collapse .login_block_other, body.sidebar-collapse #topmenu-login-dropdown */
|
/* body.sidebar-collapse .side-nav, body.sidebar-collapse .login_block_other, body.sidebar-collapse #topmenu-login-dropdown */
|
||||||
@ -1991,7 +1992,7 @@ div.backgroundsemitransparent {
|
|||||||
|
|
||||||
|
|
||||||
#id-right {
|
#id-right {
|
||||||
padding-left: 0 ! important;
|
padding-<?php print $left; ?>: 0 ! important;
|
||||||
}
|
}
|
||||||
#id-left {
|
#id-left {
|
||||||
z-index: 91;
|
z-index: 91;
|
||||||
@ -2941,7 +2942,7 @@ form[name="addtime"] img.userphoto {
|
|||||||
div.vmenu, td.vmenu {
|
div.vmenu, td.vmenu {
|
||||||
margin-<?php print $right; ?>: 2px;
|
margin-<?php print $right; ?>: 2px;
|
||||||
position: relative;
|
position: relative;
|
||||||
float: left;
|
float: <?php print $left; ?>;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
padding-bottom: 0px;
|
padding-bottom: 0px;
|
||||||
padding-top: 0px;
|
padding-top: 0px;
|
||||||
@ -2949,7 +2950,7 @@ div.vmenu, td.vmenu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.vmenu {
|
.vmenu {
|
||||||
margin-left: 4px;
|
margin-<?php print $left; ?>: 4px;
|
||||||
<?php if (GETPOST('optioncss', 'aZ09') == 'print') { ?>
|
<?php if (GETPOST('optioncss', 'aZ09') == 'print') { ?>
|
||||||
display: none;
|
display: none;
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
@ -2993,14 +2994,17 @@ a.help:link, a.help:visited, a.help:hover, a.help:active, span.help {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.helppresentcircle {
|
.helppresentcircle {
|
||||||
|
/*
|
||||||
color: var(--colorbackhmenu1);
|
color: var(--colorbackhmenu1);
|
||||||
filter: invert(0.5);
|
filter: invert(0.5);
|
||||||
margin-left: -7px;
|
*/
|
||||||
|
color: var(--colortextbackhmenu);
|
||||||
|
margin-left: -4px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-top: -10px;
|
|
||||||
font-size: x-small;
|
font-size: x-small;
|
||||||
vertical-align: super;
|
vertical-align: super;
|
||||||
opacity: 0.95;
|
opacity: 0.95;
|
||||||
|
transform: rotate(<?php echo ($left == 'left' ? '55deg' : '305deg'); ?>);
|
||||||
}
|
}
|
||||||
|
|
||||||
div.blockvmenulogo
|
div.blockvmenulogo
|
||||||
|
|||||||
@ -274,8 +274,9 @@ class Tickets extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -99,8 +99,9 @@ class Users extends DolibarrApi
|
|||||||
|
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
@ -542,8 +543,9 @@ class Users extends DolibarrApi
|
|||||||
}
|
}
|
||||||
// Add sql filters
|
// Add sql filters
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
@ -196,8 +196,9 @@ class ZapierApi extends DolibarrApi
|
|||||||
$sql .= " AND sc.fk_user = ".((int) $search_sale);
|
$sql .= " AND sc.fk_user = ".((int) $search_sale);
|
||||||
}
|
}
|
||||||
if ($sqlfilters) {
|
if ($sqlfilters) {
|
||||||
if (!DolibarrApi::_checkFilters($sqlfilters)) {
|
$errormessage = '';
|
||||||
throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters);
|
if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) {
|
||||||
|
throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage);
|
||||||
}
|
}
|
||||||
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)';
|
||||||
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
$sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")";
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user