diff --git a/COPYRIGHT b/COPYRIGHT
index 10b06b86811..4f4bc3dff6d 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -29,7 +29,7 @@ PHPoAuthLib 0.8.2 MIT License Yes
PHPPrintIPP 1.3 GPL-2+ Yes Library to send print IPP requests
PSR/Logs 1.0 Library for logs (used by DebugBar)
PSR/simple-cache ? Library for cache (used by PHPSpreadSheet)
-Restler 3.0.0RC6 LGPL-3+ Yes Library to develop REST Web services (+ swagger-ui js lib into dir explorer)
+Restler 3.1.1 LGPL-3+ Yes Library to develop REST Web services (+ swagger-ui js lib into dir explorer)
Sabre 3.2.2 BSD Yes DAV support
Swift Mailer 5.4.2-DEV MIT license Yes Comprehensive mailing tools for PHP
Stripe 6.43.1 MIT licence Yes Library for Stripe module
diff --git a/dev/dolibarr_changes.txt b/dev/dolibarr_changes.txt
index 98a6d2176aa..5648381ff49 100644
--- a/dev/dolibarr_changes.txt
+++ b/dev/dolibarr_changes.txt
@@ -229,11 +229,21 @@ Change content of file htdocs/includes/restler/framework/Luracast/Restler/explor
public static function getShortName($className)
{
// @CHANGE LDR
- if (! is_string($className)) return;
+ if (!is_string($className)) return;
//var_dump($className);
-
-
+* Add line into Data/Text.php to complete function
+
+ public static function endsWith($haystack, $needle)
+ {
+ $length = strlen($needle);
+ if ($length == 0) {
+ return true;
+ }
+ // @CHANGE LDR
+ if (!is_string($haystack)) return false;
+
+
PARSEDOWN
---------
diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php
index c9aaa856d22..9c9df8e25b5 100644
--- a/htdocs/adherents/list.php
+++ b/htdocs/adherents/list.php
@@ -146,12 +146,7 @@ $arrayfields = array(
'd.statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000)
);
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) {
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
/*
diff --git a/htdocs/api/class/api_documents.class.php b/htdocs/api/class/api_documents.class.php
index bdf86a5c2c9..2d6a598398c 100644
--- a/htdocs/api/class/api_documents.class.php
+++ b/htdocs/api/class/api_documents.class.php
@@ -707,7 +707,7 @@ class Documents extends DolibarrApi
if (!empty($createdirifnotexists)) {
if (dol_mkdir($upload_dir) < 0) { // needed by products
- throw new RestException(500, 'Error while trying to create directory.');
+ throw new RestException(500, 'Error while trying to create directory '.$upload_dir);
}
}
diff --git a/htdocs/api/class/api_login.class.php b/htdocs/api/class/api_login.class.php
index cb2fdd54d66..25765e7f7e5 100644
--- a/htdocs/api/class/api_login.class.php
+++ b/htdocs/api/class/api_login.class.php
@@ -109,7 +109,7 @@ class Login
}
// Generate token for user
- $token = dol_hash($login.uniqid().$conf->global->MAIN_API_KEY, 1);
+ $token = dol_hash($login.uniqid().(empty($conf->global->MAIN_API_KEY)?'':$conf->global->MAIN_API_KEY), 1);
// We store API token into database
$sql = "UPDATE ".MAIN_DB_PREFIX."user";
@@ -132,7 +132,7 @@ class Login
'code' => 200,
'token' => $token,
'entity' => $tmpuser->entity,
- 'message' => 'Welcome '.$login.($reset ? ' - Token is new' : ' - This is your token (generated by a previous call). You can use it to make any REST API call, or enter it into the DOLAPIKEY field to use the Dolibarr API explorer.')
+ 'message' => 'Welcome '.$login.($reset ? ' - Token is new' : ' - This is your token (recorded for your user). You can use it to make any REST API call, or enter it into the DOLAPIKEY field to use the Dolibarr API explorer.')
)
);
}
diff --git a/htdocs/comm/action/list.php b/htdocs/comm/action/list.php
index 510fa67dcdb..2fe47ab39f1 100644
--- a/htdocs/comm/action/list.php
+++ b/htdocs/comm/action/list.php
@@ -141,14 +141,8 @@ $arrayfields = array(
'a.tms'=>array('label'=>'DateModification', 'checked'=>0)
);
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/compta/bank/bankentries_list.php b/htdocs/compta/bank/bankentries_list.php
index d57e2cf5591..63021eb3b07 100644
--- a/htdocs/compta/bank/bankentries_list.php
+++ b/htdocs/compta/bank/bankentries_list.php
@@ -155,14 +155,8 @@ $arrayfields = array(
'b.conciliated'=>array('label'=>$langs->trans("Conciliated"), 'enabled'=> $object->rappro, 'checked'=>($action == 'reconcile' ? 1 : 0), 'position'=>1020),
);
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/compta/bank/class/paymentvarious.class.php b/htdocs/compta/bank/class/paymentvarious.class.php
index 5c8031f2702..6c2e12ba500 100644
--- a/htdocs/compta/bank/class/paymentvarious.class.php
+++ b/htdocs/compta/bank/class/paymentvarious.class.php
@@ -93,7 +93,18 @@ class PaymentVarious extends CommonObject
public $fk_project;
/**
- * @var int ID
+ * @var int Bank account ID
+ */
+ public $fk_account;
+
+ /**
+ * @var int Bank account ID
+ * @deprecated See fk_account
+ */
+ public $accountid;
+
+ /**
+ * @var int ID record into llx_bank
*/
public $fk_bank;
@@ -102,11 +113,6 @@ class PaymentVarious extends CommonObject
*/
public $categorie_transaction;
- /**
- * @var int Account ID
- */
- public $accountid;
-
/**
* @var int ID
*/
@@ -397,6 +403,10 @@ class PaymentVarious extends CommonObject
$this->fk_bank = (int) $this->fk_bank;
$this->fk_user_author = (int) $this->fk_user_author;
$this->fk_user_modif = (int) $this->fk_user_modif;
+ $this->fk_account = (int) $this->fk_account;
+ if (empty($this->fk_account) && isset($this->accountid)) { // For compatibility
+ $this->fk_account = $this->accountid;
+ }
// Check parameters
if (!$this->label)
@@ -409,9 +419,9 @@ class PaymentVarious extends CommonObject
$this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Amount"));
return -5;
}
- if (!empty($conf->banque->enabled) && (empty($this->accountid) || $this->accountid <= 0))
+ if (!empty($conf->banque->enabled) && (empty($this->fk_account) || $this->fk_account <= 0))
{
- $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Account"));
+ $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("BankAccount"));
return -6;
}
if (!empty($conf->banque->enabled) && (empty($this->type_payment) || $this->type_payment <= 0))
@@ -454,7 +464,7 @@ class PaymentVarious extends CommonObject
$sql .= ", ".($this->fk_project > 0 ? $this->fk_project : 0);
$sql .= ", ".$user->id;
$sql .= ", '".$this->db->idate($now)."'";
- $sql .= ", NULL";
+ $sql .= ", NULL"; // Filled later
$sql .= ", ".$conf->entity;
$sql .= ")";
@@ -473,7 +483,7 @@ class PaymentVarious extends CommonObject
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
$acc = new Account($this->db);
- $result = $acc->fetch($this->accountid);
+ $result = $acc->fetch($this->fk_account);
if ($result <= 0) dol_print_error($this->db);
// Insert payment into llx_bank
@@ -495,7 +505,7 @@ class PaymentVarious extends CommonObject
$this->datev
);
- // Update fk_bank into llx_paiement.
+ // Update fk_bank into llx_payment_various
// So we know the payment which has generate the banking ecriture
if ($bank_line_id > 0) {
$this->update_fk_bank($bank_line_id);
diff --git a/htdocs/compta/bank/list.php b/htdocs/compta/bank/list.php
index 87c8380ebda..f3efea15235 100644
--- a/htdocs/compta/bank/list.php
+++ b/htdocs/compta/bank/list.php
@@ -106,14 +106,8 @@ $arrayfields = array(
'balance'=>array('label'=>$langs->trans("Balance"), 'checked'=>1, 'position'=>1010),
);
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/compta/bank/various_payment/card.php b/htdocs/compta/bank/various_payment/card.php
index db539e060d2..dfdad0b589b 100644
--- a/htdocs/compta/bank/various_payment/card.php
+++ b/htdocs/compta/bank/various_payment/card.php
@@ -491,7 +491,7 @@ if ($id)
);
$formquestion[] = array('type' => 'date', 'tdclass'=>'fieldrequired', 'name' => 'clone_date_payment', 'label' => $langs->trans("DatePayment"), 'value' => -1);
$formquestion[] = array('type' => 'date', 'name' => 'clone_date_value', 'label' => $langs->trans("DateValue"), 'value' => -1);
- $formquestion[] = array('type' => 'other', 'tdclass'=>'fieldrequired', 'name' => 'accountid', 'label' => $langs->trans("BankAccount"), 'value' => $form->select_comptes($accountid, "accountid", 0, '', 1));
+ $formquestion[] = array('type' => 'other', 'tdclass'=>'fieldrequired', 'name' => 'accountid', 'label' => $langs->trans("BankAccount"), 'value' => $form->select_comptes($accountid, "accountid", 0, '', 1, '', 0, 'minwidth200', 1));
print $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ToClone'), $langs->trans('ConfirmCloneVariousPayment', $object->ref), 'confirm_clone', $formquestion, 'yes', 1, 300);
}
diff --git a/htdocs/compta/cashcontrol/cashcontrol_list.php b/htdocs/compta/cashcontrol/cashcontrol_list.php
index fdc3e57bdba..c6431143a98 100644
--- a/htdocs/compta/cashcontrol/cashcontrol_list.php
+++ b/htdocs/compta/cashcontrol/cashcontrol_list.php
@@ -120,14 +120,8 @@ foreach ($object->fields as $key => $val)
if (!empty($val['visible'])) $arrayfields['t.'.$key] = array('label'=>$val['label'], 'checked'=>(($val['visible'] < 0) ? 0 : 1), 'enabled'=>$val['enabled'], 'position'=>$val['position']);
}
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/compta/facture/invoicetemplate_list.php b/htdocs/compta/facture/invoicetemplate_list.php
index c0abc5a6028..6beb5caa1e2 100644
--- a/htdocs/compta/facture/invoicetemplate_list.php
+++ b/htdocs/compta/facture/invoicetemplate_list.php
@@ -135,14 +135,8 @@ $arrayfields = array(
'f.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500),
);
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/compta/facture/prelevement.php b/htdocs/compta/facture/prelevement.php
index 7e852846d5c..d50813cbea4 100644
--- a/htdocs/compta/facture/prelevement.php
+++ b/htdocs/compta/facture/prelevement.php
@@ -213,7 +213,7 @@ if ($object->id > 0)
$head = facture_prepare_head($object);
}
- print dol_get_fiche_head($head, 'standingorders', $title, -1, 'bill');
+ print dol_get_fiche_head($head, 'standingorders', $title, -1, ($type == 'bank-transfer' ? 'supplier_invoice' : 'bill'));
// Invoice content
if ($type == 'bank-transfer') {
diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php
index 8a1655cdefb..3072dcdee2b 100644
--- a/htdocs/compta/resultat/clientfourn.php
+++ b/htdocs/compta/resultat/clientfourn.php
@@ -229,6 +229,8 @@ if ($modecompta == 'BOOKKEEPING')
print "\n";
+$total_ht_outcome = $total_ttc_outcome = $total_ht_income = $total_ttc_income = 0;
+
if ($modecompta == 'BOOKKEEPING')
{
@@ -438,16 +440,97 @@ if ($modecompta == 'BOOKKEEPING')
if ($total_ttc == 0)
{
print '
| | ';
- print ''.$langs->trans("None").' | ';
+ print ''.$langs->trans("None").' | ';
print '
';
}
+ $total_ht_income += $total_ht;
+ $total_ttc_income += $total_ttc;
print '';
if ($modecompta == 'CREANCES-DETTES')
print '| '.price($total_ht).' | ';
print ''.price($total_ttc).' | ';
print '
';
+ /*
+ * Donations
+ */
+
+ if (!empty($conf->don->enabled))
+ {
+ print '| '.$langs->trans("Donations").' |
';
+
+ if ($modecompta == 'CREANCES-DETTES' || $modecompta == 'RECETTES-DEPENSES')
+ {
+ if ($modecompta == 'CREANCES-DETTES')
+ {
+ $sql = "SELECT p.societe as name, p.firstname, p.lastname, date_format(p.datedon,'%Y-%m') as dm, sum(p.amount) as amount";
+ $sql .= " FROM ".MAIN_DB_PREFIX."don as p";
+ $sql .= " WHERE p.entity IN (".getEntity('donation').")";
+ $sql .= " AND fk_statut in (1,2)";
+ } else {
+ $sql = "SELECT p.societe as nom, p.firstname, p.lastname, date_format(p.datedon,'%Y-%m') as dm, sum(p.amount) as amount";
+ $sql .= " FROM ".MAIN_DB_PREFIX."don as p";
+ $sql .= " INNER JOIN ".MAIN_DB_PREFIX."payment_donation as pe ON pe.fk_donation = p.rowid";
+ $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as c ON pe.fk_typepayment = c.id";
+ $sql .= " WHERE p.entity IN (".getEntity('donation').")";
+ $sql .= " AND fk_statut >= 2";
+ }
+ if (!empty($date_start) && !empty($date_end))
+ $sql .= " AND p.datedon >= '".$db->idate($date_start)."' AND p.datedon <= '".$db->idate($date_end)."'";
+ }
+ $sql .= " GROUP BY p.societe, p.firstname, p.lastname, dm";
+ $newsortfield = $sortfield;
+ if ($newsortfield == 's.nom, s.rowid') $newsortfield = 'p.societe, p.firstname, p.lastname, dm';
+ if ($newsortfield == 'amount_ht') $newsortfield = 'amount';
+ if ($newsortfield == 'amount_ttc') $newsortfield = 'amount';
+ $sql .= $db->order($newsortfield, $sortorder);
+
+ dol_syslog("get dunning");
+ $result = $db->query($sql);
+ $subtotal_ht = 0;
+ $subtotal_ttc = 0;
+ if ($result)
+ {
+ $num = $db->num_rows($result);
+ $i = 0;
+ if ($num)
+ {
+ while ($i < $num)
+ {
+ $obj = $db->fetch_object($result);
+
+ $total_ht += $obj->amount;
+ $total_ttc += $obj->amount;
+ $subtotal_ht += $obj->amount;
+ $subtotal_ttc += $obj->amount;
+
+ print '| | ';
+
+ print "".$langs->trans("Donation")." name."&search_name=".$obj->firstname." ".$obj->lastname."\">".$obj->name." ".$obj->firstname." ".$obj->lastname." | \n";
+
+ if ($modecompta == 'CREANCES-DETTES') print ''.price($obj->amount).' | ';
+ print ''.price($obj->amount).' | ';
+ print '
';
+ $i++;
+ }
+ } else {
+ print '| | ';
+ print ''.$langs->trans("None").' | ';
+ print '
';
+ }
+ } else {
+ dol_print_error($db);
+ }
+
+ $total_ht_income += $subtotal_ht;
+ $total_ttc_income += $subtotal_ttc;
+ print '';
+ if ($modecompta == 'CREANCES-DETTES')
+ print '| '.price($subtotal_ht).' | ';
+ print ''.price($subtotal_ttc).' | ';
+ print '
';
+ }
/*
* Suppliers invoices
@@ -515,7 +598,7 @@ if ($modecompta == 'BOOKKEEPING')
}
} else {
print '| | ';
- print ''.$langs->trans("None").' | ';
+ print ''.$langs->trans("None").' | ';
print '
';
}
@@ -523,6 +606,9 @@ if ($modecompta == 'BOOKKEEPING')
} else {
dol_print_error($db);
}
+
+ $total_ht_outcome += $subtotal_ht;
+ $total_ttc_outcome += $subtotal_ttc;
print '';
if ($modecompta == 'CREANCES-DETTES')
print '| '.price(-$subtotal_ht).' | ';
@@ -530,7 +616,6 @@ if ($modecompta == 'BOOKKEEPING')
print '
';
-
/*
* Charges sociales non deductibles
*/
@@ -592,12 +677,15 @@ if ($modecompta == 'BOOKKEEPING')
}
} else {
print '| | ';
- print ''.$langs->trans("None").' | ';
+ print ''.$langs->trans("None").' | ';
print '
';
}
} else {
dol_print_error($db);
}
+
+ $total_ht_outcome += $subtotal_ht;
+ $total_ttc_outcome += $subtotal_ttc;
print '';
if ($modecompta == 'CREANCES-DETTES')
print '| '.price(-$subtotal_ht).' | ';
@@ -667,36 +755,21 @@ if ($modecompta == 'BOOKKEEPING')
}
} else {
print '
| | ';
- print ''.$langs->trans("None").' | ';
+ print ''.$langs->trans("None").' | ';
print '
';
}
} else {
dol_print_error($db);
}
+
+ $total_ht_outcome += $subtotal_ht;
+ $total_ttc_outcome += $subtotal_ttc;
print '';
if ($modecompta == 'CREANCES-DETTES')
print '| '.price(-$subtotal_ht).' | ';
print ''.price(-$subtotal_ttc).' | ';
print '
';
- if ($mysoc->tva_assuj == 'franchise') // Non assujetti
- {
- // Total
- print '';
- print '| | ';
- print '
';
-
- print '| '.$langs->trans("Profit").' | ';
- if ($modecompta == 'CREANCES-DETTES')
- print ''.price($total_ht).' | ';
- print ''.price($total_ttc).' | ';
- print '
';
-
- print '';
- print '| | ';
- print '
';
- }
-
/*
* Salaries
@@ -759,12 +832,15 @@ if ($modecompta == 'BOOKKEEPING')
}
} else {
print '| | ';
- print ''.$langs->trans("None").' | ';
+ print ''.$langs->trans("None").' | ';
print '
';
}
} else {
dol_print_error($db);
}
+
+ $total_ht_outcome += $subtotal_ht;
+ $total_ttc_outcome += $subtotal_ttc;
print '';
if ($modecompta == 'CREANCES-DETTES')
print '| '.price(-$subtotal_ht).' | ';
@@ -841,98 +917,26 @@ if ($modecompta == 'BOOKKEEPING')
}
} else {
print '
| | ';
- print ''.$langs->trans("None").' | ';
+ print ''.$langs->trans("None").' | ';
print '
';
}
} else {
dol_print_error($db);
}
+
+ $total_ht_outcome += $subtotal_ht;
+ $total_ttc_outcome += $subtotal_ttc;
print '';
if ($modecompta == 'CREANCES-DETTES') print '| '.price(-$subtotal_ht).' | ';
print ''.price(-$subtotal_ttc).' | ';
print '
';
}
- /*
- * Donations
- */
-
- if (!empty($conf->don->enabled))
- {
- print '| '.$langs->trans("Donations").' |
';
-
- if ($modecompta == 'CREANCES-DETTES' || $modecompta == 'RECETTES-DEPENSES')
- {
- if ($modecompta == 'CREANCES-DETTES')
- {
- $sql = "SELECT p.societe as name, p.firstname, p.lastname, date_format(p.datedon,'%Y-%m') as dm, sum(p.amount) as amount";
- $sql .= " FROM ".MAIN_DB_PREFIX."don as p";
- $sql .= " WHERE p.entity IN (".getEntity('donation').")";
- $sql .= " AND fk_statut in (1,2)";
- } else {
- $sql = "SELECT p.societe as nom, p.firstname, p.lastname, date_format(p.datedon,'%Y-%m') as dm, sum(p.amount) as amount";
- $sql .= " FROM ".MAIN_DB_PREFIX."don as p";
- $sql .= " INNER JOIN ".MAIN_DB_PREFIX."payment_donation as pe ON pe.fk_donation = p.rowid";
- $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as c ON pe.fk_typepayment = c.id";
- $sql .= " WHERE p.entity IN (".getEntity('donation').")";
- $sql .= " AND fk_statut >= 2";
- }
- if (!empty($date_start) && !empty($date_end))
- $sql .= " AND p.datedon >= '".$db->idate($date_start)."' AND p.datedon <= '".$db->idate($date_end)."'";
- }
- $sql .= " GROUP BY p.societe, p.firstname, p.lastname, dm";
- $newsortfield = $sortfield;
- if ($newsortfield == 's.nom, s.rowid') $newsortfield = 'p.societe, p.firstname, p.lastname, dm';
- if ($newsortfield == 'amount_ht') $newsortfield = 'amount';
- if ($newsortfield == 'amount_ttc') $newsortfield = 'amount';
- $sql .= $db->order($newsortfield, $sortorder);
-
- dol_syslog("get dunning");
- $result = $db->query($sql);
- $subtotal_ht = 0;
- $subtotal_ttc = 0;
- if ($result)
- {
- $num = $db->num_rows($result);
- $i = 0;
- if ($num)
- {
- while ($i < $num)
- {
- $obj = $db->fetch_object($result);
-
- $total_ht += $obj->amount;
- $total_ttc += $obj->amount;
- $subtotal_ht += $obj->amount;
- $subtotal_ttc += $obj->amount;
-
- print '| | ';
-
- print "".$langs->trans("Donation")." name."&search_name=".$obj->firstname." ".$obj->lastname."\">".$obj->name." ".$obj->firstname." ".$obj->lastname." | \n";
-
- if ($modecompta == 'CREANCES-DETTES') print ''.price($obj->amount).' | ';
- print ''.price($obj->amount).' | ';
- print '
';
- $i++;
- }
- } else {
- print '| | ';
- print ''.$langs->trans("None").' | ';
- print '
';
- }
- } else {
- dol_print_error($db);
- }
- print '';
- if ($modecompta == 'CREANCES-DETTES')
- print '| '.price($subtotal_ht).' | ';
- print ''.price($subtotal_ttc).' | ';
- print '
';
- }
/*
* Various Payments
*/
+ //$conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY = 1;
if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && !empty($conf->banque->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecompta == "RECETTES-DEPENSES"))
{
@@ -953,12 +957,14 @@ if ($modecompta == 'BOOKKEEPING')
$result = $db->query($sql);
if ($result)
{
- // Debit
+ // Debit (payment of suppliers for example)
$obj = $db->fetch_object($result);
if (isset($obj->amount))
{
$subtotal_ht += -$obj->amount;
$subtotal_ttc += -$obj->amount;
+ $total_ht_outcome += $obj->amount;
+ $total_ttc_outcome += $obj->amount;
}
print '| | ';
print "".$langs->trans("Debit")." | \n";
@@ -966,12 +972,14 @@ if ($modecompta == 'BOOKKEEPING')
print ''.price(-$obj->amount)." | \n";
print "
\n";
- // Credit
+ // Credit (payment received from customer for example)
$obj = $db->fetch_object($result);
if (isset($obj->amount))
{
$subtotal_ht += $obj->amount;
$subtotal_ttc += $obj->amount;
+ $total_ht_income += $obj->amount;
+ $total_ttc_income += $obj->amount;
}
print '| | ';
print "".$langs->trans("Credit")." | \n";
@@ -1030,6 +1038,8 @@ if ($modecompta == 'BOOKKEEPING')
}
$total_ht += $subtotal_ht;
$total_ttc += $subtotal_ttc;
+ $total_ht_income += $subtotal_ht;
+ $total_ttc_income += $subtotal_ttc;
print '
';
if ($modecompta == 'CREANCES-DETTES')
print '| '.price($subtotal_ht).' | ';
@@ -1050,7 +1060,7 @@ if ($modecompta == 'BOOKKEEPING')
{
if ($modecompta == 'CREANCES-DETTES')
{
- // TVA a payer
+ // VAT to pay
$amount = 0;
$sql = "SELECT date_format(f.datef,'%Y-%m') as dm, sum(f.tva) as amount";
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
@@ -1091,13 +1101,15 @@ if ($modecompta == 'BOOKKEEPING')
} else {
dol_print_error($db);
}
+ $total_ht_outcome -= 0;
+ $total_ttc_outcome -= $amount;
print '
| | ';
print "".$langs->trans("VATToPay")." | \n";
print ' | '."\n";
print ''.price($amount)." | \n";
print "
\n";
- // TVA a recuperer
+ // VAT to retreive
$amount = 0;
$sql = "SELECT date_format(f.datef,'%Y-%m') as dm, sum(f.total_tva) as amount";
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
@@ -1139,6 +1151,9 @@ if ($modecompta == 'BOOKKEEPING')
} else {
dol_print_error($db);
}
+ $total_ht_income += 0;
+ $total_ttc_income += $amount;
+
print '| | ';
print ''.$langs->trans("VATToCollect")." | \n";
print ' | '."\n";
@@ -1182,10 +1197,12 @@ if ($modecompta == 'BOOKKEEPING')
} else {
dol_print_error($db);
}
+ $total_ht_outcome -= 0;
+ $total_ttc_outcome -= $amount;
print '
| | ';
print "".$langs->trans("VATPaid")." | \n";
if ($modecompta == 'CREANCES-DETTES')
- print ''.price($amount)." | \n";
+ print ' | '."\n";
print ''.price($amount)." | \n";
print "
\n";
@@ -1226,16 +1243,18 @@ if ($modecompta == 'BOOKKEEPING')
} else {
dol_print_error($db);
}
+ $total_ht_income += 0;
+ $total_ttc_income += $amount;
print '| | ';
print "".$langs->trans("VATCollected")." | \n";
if ($modecompta == 'CREANCES-DETTES')
- print ''.price($amount)." | \n";
+ print ' | '."\n";
print ''.price($amount)." | \n";
print "
\n";
}
}
- if ($mysoc->tva_assuj != 'franchise') // Assujetti
+ if ($mysoc->tva_assuj != '0') // Assujetti
{
print '';
if ($modecompta == 'CREANCES-DETTES')
@@ -1250,25 +1269,31 @@ $object = array(&$total_ht, &$total_ttc);
$parameters["mode"] = $modecompta;
$parameters["date_start"] = $date_start;
$parameters["date_end"] = $date_end;
-$parameters["bc"] = $bc;
// Initialize technical object to manage hooks of expenses. Note that conf->hooks_modules contains array array
$hookmanager->initHooks(array('externalbalance'));
$reshook = $hookmanager->executeHooks('addBalanceLine', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
print $hookmanager->resPrint;
-if ($mysoc->tva_assuj != 'franchise') // Assujetti
-{
- // Total
- print '
';
- print '| | ';
- print '
';
+// Total
+print '';
+print '| | ';
+print '
';
- print '| '.$langs->trans("Profit").' | ';
- if ($modecompta == 'CREANCES-DETTES')
- print ''.price(price2num($total_ht, 'MT')).' | ';
- print ''.price(price2num($total_ttc, 'MT')).' | ';
- print '
';
-}
+print '| '.$langs->trans("Outcome").' | ';
+if ($modecompta == 'CREANCES-DETTES')
+ print ''.price(price2num(-$total_ht_outcome, 'MT')).' | ';
+print ''.price(price2num(-$total_ttc_outcome, 'MT')).' | ';
+print '
';
+print '| '.$langs->trans("Income").' | ';
+if ($modecompta == 'CREANCES-DETTES')
+ print ''.price(price2num($total_ht_income, 'MT')).' | ';
+print ''.price(price2num($total_ttc_income, 'MT')).' | ';
+print '
';
+print '| '.$langs->trans("Profit").' | ';
+if ($modecompta == 'CREANCES-DETTES')
+ print ''.price(price2num($total_ht, 'MT')).' | ';
+print ''.price(price2num($total_ttc, 'MT')).' | ';
+print '
';
print "";
print '
';
diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php
index ca8ccb9bd7d..d273dd7cdf7 100644
--- a/htdocs/contrat/list.php
+++ b/htdocs/contrat/list.php
@@ -131,14 +131,8 @@ $arrayfields = array(
'status'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000),
);
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/contrat/services_list.php b/htdocs/contrat/services_list.php
index 67b605d657f..4de651a24f9 100644
--- a/htdocs/contrat/services_list.php
+++ b/htdocs/contrat/services_list.php
@@ -130,14 +130,8 @@ $arrayfields = array(
'cd.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500)
);
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index f97f583fc87..01ed58e84ac 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -355,7 +355,7 @@ abstract class CommonObject
public $last_main_doc;
/**
- * @var int Bank account ID
+ * @var int Bank account ID sometimes, ID of record into llx_bank sometimes
* @deprecated
* @see $fk_account
*/
diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php
index 09f2b0a44ae..a1800e03980 100644
--- a/htdocs/core/class/conf.class.php
+++ b/htdocs/core/class/conf.class.php
@@ -52,9 +52,11 @@ class Conf
public $disable_compute;
//! Used to store current currency (ISO code like 'USD', 'EUR', ...)
public $currency;
+
//! Used to store current css (from theme)
public $theme; // Contains current theme ("eldy", "auguria", ...)
public $css; // Contains full path of css page ("/theme/eldy/style.css.php", ...)
+
//! Used to store current menu handler
public $standard_menu;
// List of activated modules
@@ -98,6 +100,8 @@ class Conf
public $dol_no_mouse_hover; // Set if we force param dol_no_mouse_hover into login url or if browser is smartphone
public $dol_use_jmobile; // Set if we force param dol_use_jmobile into login url
+ public $liste_limit;
+
/**
* Constructor
diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php
index d041aba45f4..2daf4c835e9 100644
--- a/htdocs/core/class/extrafields.class.php
+++ b/htdocs/core/class/extrafields.class.php
@@ -991,32 +991,23 @@ class ExtraFields
else return '';
}
- if (empty($morecss))
- {
- if ($type == 'date')
- {
+ if (empty($morecss)) {
+ if ($type == 'date') {
$morecss = 'minwidth100imp';
- } elseif ($type == 'datetime' || $type == 'link')
- {
+ } elseif ($type == 'datetime' || $type == 'link') {
$morecss = 'minwidth200imp';
- } elseif (in_array($type, array('int', 'integer', 'double', 'price')))
- {
+ } elseif (in_array($type, array('int', 'integer', 'double', 'price'))) {
$morecss = 'maxwidth75';
- } elseif ($type == 'password')
- {
+ } elseif ($type == 'password') {
$morecss = 'maxwidth100';
- } elseif ($type == 'url')
- {
+ } elseif ($type == 'url') {
$morecss = 'minwidth400';
- } elseif ($type == 'boolean')
- {
+ } elseif ($type == 'boolean') {
$morecss = '';
} else {
- if (round($size) < 12)
- {
+ if (empty($size) || round($size) < 12) {
$morecss = 'minwidth100';
- } elseif (round($size) <= 48)
- {
+ } elseif (round($size) <= 48) {
$morecss = 'minwidth200';
} else {
$morecss = 'minwidth400';
@@ -1024,8 +1015,7 @@ class ExtraFields
}
}
- if (in_array($type, array('date', 'datetime')))
- {
+ if (in_array($type, array('date', 'datetime'))) {
$tmp = explode(',', $size);
$newsize = $tmp[0];
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 14bbf007542..492a4899376 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -3939,13 +3939,16 @@ class Form
* @param string $moreattrib To add more attribute on select
* @param int $showcurrency Show currency in label
* @param string $morecss More CSS
+ * @param int $nooutput 1=Return string, do not send to output
* @return int <0 if error, Num of bank account found if OK (0, 1, 2, ...)
*/
- public function select_comptes($selected = '', $htmlname = 'accountid', $status = 0, $filtre = '', $useempty = 0, $moreattrib = '', $showcurrency = 0, $morecss = '')
+ public function select_comptes($selected = '', $htmlname = 'accountid', $status = 0, $filtre = '', $useempty = 0, $moreattrib = '', $showcurrency = 0, $morecss = '', $nooutput = 0)
{
// phpcs:enable
global $langs, $conf;
+ $out = '';
+
$langs->load("admin");
$num = 0;
@@ -3964,10 +3967,10 @@ class Form
$i = 0;
if ($num)
{
- print '";
+ $out .= ajax_combobox('select'.$htmlname);
} else {
- if ($status == 0) print ''.$langs->trans("NoActiveBankAccountDefined").'';
- else print ''.$langs->trans("NoBankAccountFound").'';
+ if ($status == 0) $out .= ''.$langs->trans("NoActiveBankAccountDefined").'';
+ else $out .= ''.$langs->trans("NoBankAccountFound").'';
}
} else {
dol_print_error($this->db);
}
+ // Output or return
+ if (empty($nooutput)) print $out;
+ else return $out;
+
return $num;
}
diff --git a/htdocs/core/lib/files.lib.php b/htdocs/core/lib/files.lib.php
index c43a7eb890c..6a590b44368 100644
--- a/htdocs/core/lib/files.lib.php
+++ b/htdocs/core/lib/files.lib.php
@@ -2647,7 +2647,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity,
}
$original_file = $conf->accounting->dir_output.'/'.$original_file;
} // Wrapping pour les expedition
- elseif ($modulepart == 'expedition' && !empty($conf->expedition->dir_output))
+ elseif (($modulepart == 'expedition' || $modulepart == 'shipment') && !empty($conf->expedition->dir_output))
{
if ($fuser->rights->expedition->{$lire} || preg_match('/^specimen/i', $original_file))
{
@@ -2655,7 +2655,7 @@ function dol_check_secure_access_document($modulepart, $original_file, $entity,
}
$original_file = $conf->expedition->dir_output."/sending/".$original_file;
} // Delivery Note Wrapping
- elseif ($modulepart == 'delivery' && !empty($conf->expedition->dir_output))
+ elseif (($modulepart == 'livraison' || $modulepart == 'delivery') && !empty($conf->expedition->dir_output))
{
if ($fuser->rights->expedition->delivery->{$lire} || preg_match('/^specimen/i', $original_file))
{
diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php
index 92114b7c094..dd80c660e71 100644
--- a/htdocs/core/lib/functions.lib.php
+++ b/htdocs/core/lib/functions.lib.php
@@ -4877,7 +4877,7 @@ function price2num($amount, $rounding = '', $option = 0)
elseif ($rounding == 'CR') $nbofdectoround = 8;
elseif (is_numeric($rounding)) $nbofdectoround = $rounding;
//print "RR".$amount.' - '.$nbofdectoround.'
';
- if (dol_strlen($nbofdectoround)) $amount = round($amount, $nbofdectoround); // $nbofdectoround can be 0.
+ if (dol_strlen($nbofdectoround)) $amount = round(is_string($amount) ? (float) $amount : $amount, $nbofdectoround); // $nbofdectoround can be 0.
else return 'ErrorBadParameterProvidedToFunction';
//print 'SS'.$amount.' - '.$nbofdec.' - '.$dec.' - '.$thousand.' - '.$nbofdectoround.'
';
diff --git a/htdocs/core/modules/modStock.class.php b/htdocs/core/modules/modStock.class.php
index da18f2faf11..c15f041d21d 100644
--- a/htdocs/core/modules/modStock.class.php
+++ b/htdocs/core/modules/modStock.class.php
@@ -294,12 +294,15 @@ class modStock extends DolibarrModules
include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php';
$this->export_sql_start[$r] = 'SELECT DISTINCT ';
- $this->export_sql_end[$r] = ' FROM ('.MAIN_DB_PREFIX.'product as p, '.MAIN_DB_PREFIX.'product_stock as ps, '.MAIN_DB_PREFIX.'product_batch as pb)';
+ $this->export_sql_end[$r] = ' FROM '.MAIN_DB_PREFIX.'product_batch as pb';
+ $this->export_sql_end[$r] .= ' INNER JOIN '.MAIN_DB_PREFIX.'product_stock as ps ON ps.rowid = pb.fk_product_stock';
+ $this->export_sql_end[$r] .= ' INNER JOIN '.MAIN_DB_PREFIX.'product as p ON p.rowid = ps.fk_product';
$this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product_lot as pl ON pl.fk_product = p.rowid AND pl.batch = pb.batch';
$this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product_lot_extrafields as extra ON extra.fk_object = pl.rowid,';
$this->export_sql_end[$r] .= ' '.MAIN_DB_PREFIX.'entrepot as e';
- $this->export_sql_end[$r] .= ' WHERE p.rowid = ps.fk_product AND ps.fk_entrepot = e.rowid AND ps.rowid = pb.fk_product_stock';
- $this->export_sql_end[$r] .= ' AND e.entity IN ('.getEntity('stock').')'; }
+ $this->export_sql_end[$r] .= ' WHERE ps.fk_entrepot = e.rowid';
+ $this->export_sql_end[$r] .= ' AND e.entity IN ('.getEntity('stock').')';
+ }
// Export of stock movements
$r++;
diff --git a/htdocs/core/tpl/extrafields_list_array_fields.tpl.php b/htdocs/core/tpl/extrafields_list_array_fields.tpl.php
index 6e68dd94bea..d2d77cf3b5c 100644
--- a/htdocs/core/tpl/extrafields_list_array_fields.tpl.php
+++ b/htdocs/core/tpl/extrafields_list_array_fields.tpl.php
@@ -23,7 +23,7 @@ if (!empty($extrafieldsobjectkey)) // $extrafieldsobject is the $object->table_e
'label' => $extrafields->attributes[$extrafieldsobjectkey]['label'][$key],
'checked' => (($extrafields->attributes[$extrafieldsobjectkey]['list'][$key] < 0) ? 0 : 1),
'position' => $extrafields->attributes[$extrafieldsobjectkey]['pos'][$key],
- 'enabled' => (abs($extrafields->attributes[$extrafieldsobjectkey]['list'][$key]) != 3 && $extrafields->attributes[$extrafieldsobjectkey]['perms'][$key]),
+ 'enabled' => (abs((int) $extrafields->attributes[$extrafieldsobjectkey]['list'][$key]) != 3 && $extrafields->attributes[$extrafieldsobjectkey]['perms'][$key]),
'langfile' => $extrafields->attributes[$extrafieldsobjectkey]['langfile'][$key],
'help' => $extrafields->attributes[$extrafieldsobjectkey]['help'][$key],
);
diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php
index 440fc4524a6..7afb464e4f4 100644
--- a/htdocs/expensereport/list.php
+++ b/htdocs/expensereport/list.php
@@ -140,14 +140,7 @@ $arrayfields = array(
'd.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000),
);
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
$canedituser = (!empty($user->admin) || $user->rights->user->user->creer);
diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php
index bdf60e121e7..d054f5e5bcc 100644
--- a/htdocs/fichinter/list.php
+++ b/htdocs/fichinter/list.php
@@ -117,14 +117,8 @@ $arrayfields = array(
'fd.duree'=>array('label'=>'DurationOfLine', 'checked'=>1, 'enabled'=>empty($conf->global->FICHINTER_DISABLE_DETAILS) ? 1 : 0),
);
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php
index 12d3352205b..e680e55868a 100644
--- a/htdocs/fourn/commande/list.php
+++ b/htdocs/fourn/commande/list.php
@@ -168,14 +168,8 @@ $arrayfields = array(
'cf.billed'=>array('label'=>$langs->trans("Billed"), 'checked'=>1, 'position'=>1000, 'enabled'=>1)
);
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php
index b439e5cad45..c615817e36f 100644
--- a/htdocs/fourn/facture/card.php
+++ b/htdocs/fourn/facture/card.php
@@ -115,6 +115,8 @@ $permissiondellink = $usercancreate; // Used by the include of actions_dellink.i
$permissiontoedit = $usercancreate; // Used by the include of actions_lineupdown.inc.php
$permissiontoadd = $usercancreate; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
+$error = 0;
+
/*
* Actions
@@ -183,8 +185,7 @@ if (empty($reshook))
}
// Check parameters
- if (!empty($conf->stock->enabled) && !empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_BILL) && $qualified_for_stock_change)
- {
+ if (!empty($conf->stock->enabled) && !empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_BILL) && $qualified_for_stock_change) {
$langs->load("stocks");
if (!$idwarehouse || $idwarehouse == -1)
{
@@ -194,11 +195,9 @@ if (empty($reshook))
}
}
- if (!$error)
- {
+ if (!$error) {
$result = $object->validate($user, '', $idwarehouse);
- if ($result < 0)
- {
+ if ($result < 0) {
setEventMessages($object->error, $object->errors, 'errors');
} else {
// Define output language
@@ -220,8 +219,7 @@ if (empty($reshook))
}
}
}
- } elseif ($action == 'confirm_delete' && $confirm == 'yes')
- {
+ } elseif ($action == 'confirm_delete' && $confirm == 'yes') {
$object->fetch($id);
$object->fetch_thirdparty();
@@ -280,15 +278,13 @@ if (empty($reshook))
} elseif ($action == 'confirm_paid' && $confirm == 'yes' && $usercancreate) {
$object->fetch($id);
$result = $object->set_paid($user);
- if ($result < 0)
- {
+ if ($result < 0) {
setEventMessages($object->error, $object->errors, 'errors');
}
}
// Set supplier ref
- if ($action == 'setref_supplier' && $usercancreate)
- {
+ if ($action == 'setref_supplier' && $usercancreate) {
$object->ref_supplier = GETPOST('ref_supplier', 'alpha');
if ($object->update($user) < 0) {
@@ -315,8 +311,7 @@ if (empty($reshook))
}
// payments conditions
- if ($action == 'setconditions' && $usercancreate)
- {
+ if ($action == 'setconditions' && $usercancreate) {
$object->fetch($id);
$object->cond_reglement_code = 0; // To clean property
$object->cond_reglement_id = 0; // To clean property
@@ -1680,20 +1675,17 @@ if ($action == 'create')
$currency_code = $conf->currency;
$societe = '';
- if (GETPOST('socid') > 0)
- {
+ if (GETPOST('socid') > 0) {
$societe = new Societe($db);
$societe->fetch(GETPOST('socid', 'int'));
if (!empty($conf->multicurrency->enabled) && !empty($societe->multicurrency_code)) $currency_code = $societe->multicurrency_code;
}
- if (!empty($origin) && !empty($originid))
- {
+ if (!empty($origin) && !empty($originid)) {
// Parse element/subelement (ex: project_task)
$element = $subelement = $origin;
- if ($element == 'project')
- {
+ if ($element == 'project') {
$projectid = $originid;
$element = 'projet';
}
@@ -2204,8 +2196,7 @@ if ($action == 'create')
// Show origin lines
- if (is_object($objectsrc))
- {
+ if (is_object($objectsrc)) {
print '
';
$title = $langs->trans('ProductsAndServices');
@@ -2218,8 +2209,7 @@ if ($action == 'create')
print '';
}
} else {
- if ($id > 0 || !empty($ref))
- {
+ if ($id > 0 || !empty($ref)) {
/* *************************************************************************** */
/* */
/* Fiche en mode visu ou edition */
@@ -2275,7 +2265,7 @@ if ($action == 'create')
$head = facturefourn_prepare_head($object);
$titre = $langs->trans('SupplierInvoice');
- print dol_get_fiche_head($head, 'card', $titre, -1, 'bill');
+ print dol_get_fiche_head($head, 'card', $titre, -1, 'supplier_invoice');
$formconfirm = '';
diff --git a/htdocs/fourn/facture/contact.php b/htdocs/fourn/facture/contact.php
index 99010c977dc..357abd029fa 100644
--- a/htdocs/fourn/facture/contact.php
+++ b/htdocs/fourn/facture/contact.php
@@ -134,7 +134,7 @@ if ($id > 0 || !empty($ref))
$head = facturefourn_prepare_head($object);
- print dol_get_fiche_head($head, 'contact', $langs->trans('SupplierInvoice'), -1, 'bill');
+ print dol_get_fiche_head($head, 'contact', $langs->trans('SupplierInvoice'), -1, 'supplier_invoice');
$linkback = ''.$langs->trans("BackToList").'';
diff --git a/htdocs/fourn/facture/document.php b/htdocs/fourn/facture/document.php
index d57abc67644..36f5a45b25e 100644
--- a/htdocs/fourn/facture/document.php
+++ b/htdocs/fourn/facture/document.php
@@ -90,7 +90,7 @@ llxHeader('', $title, $helpurl);
if ($object->id > 0)
{
$head = facturefourn_prepare_head($object);
- print dol_get_fiche_head($head, 'documents', $langs->trans('SupplierInvoice'), -1, 'bill');
+ print dol_get_fiche_head($head, 'documents', $langs->trans('SupplierInvoice'), -1, 'supplier_invoice');
$totalpaye = $object->getSommePaiement();
diff --git a/htdocs/fourn/facture/index.php b/htdocs/fourn/facture/index.php
index 494f5d2aa03..131b34bbe39 100644
--- a/htdocs/fourn/facture/index.php
+++ b/htdocs/fourn/facture/index.php
@@ -51,7 +51,7 @@ $maxOpenCount = empty($conf->global->MAIN_MAXLIST_OVERLOAD) ? 500 : $conf->globa
llxHeader("", $langs->trans("SupplierInvoicesArea"), 'EN:Suppliers_Invoices|FR:FactureFournisseur|ES:Facturas_de_proveedores');
-print load_fiche_titre($langs->trans("SupplierInvoicesArea"), '', 'bill');
+print load_fiche_titre($langs->trans("SupplierInvoicesArea"), '', 'supplier_invoice');
print '';
diff --git a/htdocs/fourn/facture/info.php b/htdocs/fourn/facture/info.php
index f8522722e64..656cd3c5553 100644
--- a/htdocs/fourn/facture/info.php
+++ b/htdocs/fourn/facture/info.php
@@ -65,7 +65,7 @@ $alreadypaid = $object->getSommePaiement();
$head = facturefourn_prepare_head($object);
$titre = $langs->trans('SupplierInvoice');
-print dol_get_fiche_head($head, 'info', $langs->trans('SupplierInvoice'), -1, 'bill');
+print dol_get_fiche_head($head, 'info', $langs->trans('SupplierInvoice'), -1, 'supplier_invoice');
$linkback = '
'.$langs->trans("BackToList").'';
diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php
index d0dce03c87f..b0c58572955 100644
--- a/htdocs/fourn/facture/list.php
+++ b/htdocs/fourn/facture/list.php
@@ -189,14 +189,8 @@ $arrayfields = array(
'f.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000),
);
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/fourn/facture/note.php b/htdocs/fourn/facture/note.php
index c72e7b72710..c98ad3ba1d8 100644
--- a/htdocs/fourn/facture/note.php
+++ b/htdocs/fourn/facture/note.php
@@ -82,7 +82,7 @@ if ($object->id > 0)
$head = facturefourn_prepare_head($object);
$titre = $langs->trans('SupplierInvoice');
- print dol_get_fiche_head($head, 'note', $titre, -1, 'bill');
+ print dol_get_fiche_head($head, 'note', $titre, -1, 'supplier_invoice');
// Supplier invoice card
diff --git a/htdocs/holiday/list.php b/htdocs/holiday/list.php
index 41ae8a6956f..cbd9b76e45e 100644
--- a/htdocs/holiday/list.php
+++ b/htdocs/holiday/list.php
@@ -143,14 +143,7 @@ $arrayfields = array(
'cp.statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000),
);
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
if (empty($conf->holiday->enabled))
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/ApcCache.php b/htdocs/includes/restler/framework/Luracast/Restler/ApcCache.php
index b8cdd95b373..a2ddc83c44f 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/ApcCache.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/ApcCache.php
@@ -13,7 +13,7 @@ use Luracast\Restler\iCache;
* @copyright 2013 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class ApcCache implements iCache
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/AutoLoader.php b/htdocs/includes/restler/framework/Luracast/Restler/AutoLoader.php
index d8445fdc70c..5ed160a070a 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/AutoLoader.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/AutoLoader.php
@@ -12,7 +12,7 @@ namespace Luracast\Restler {
* @subpackage helper
* @author Nick Lombard
* @copyright 2012 Luracast
- * @version 3.0.0rc6
+ *
*/
class AutoLoader
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/CommentParser.php b/htdocs/includes/restler/framework/Luracast/Restler/CommentParser.php
index 2815f1f6c70..6b8b9178f6b 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/CommentParser.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/CommentParser.php
@@ -1,4 +1,5 @@
true,
- 'select' => true,
+ 'choice' => true,
+ 'select' => true,
'properties' => true,
);
@@ -220,7 +221,7 @@ class CommentParser
*/
private function parseParam($param, array $value, array $embedded)
{
- $data = & $this->_data;
+ $data = &$this->_data;
$allowMultiple = false;
switch ($param) {
case 'param' :
@@ -237,7 +238,7 @@ class CommentParser
$value = $this->formatReturn($value);
break;
case 'class' :
- $data = & $data[$param];
+ $data = &$data[$param];
list ($param, $value) = $this->formatClass($value);
break;
case 'access' :
@@ -294,7 +295,7 @@ class CommentParser
+= $data[$param][self::$embeddedDataName];
}
if (!is_array($data[$param])) {
- $data[$param] = array('description' => (string) $data[$param]);
+ $data[$param] = array('description' => (string)$data[$param]);
}
if (is_array($value)) {
$data[$param] = $value + $data[$param];
@@ -320,19 +321,24 @@ class CommentParser
$data['pattern'] = $matches[2];
}
while (preg_match('/{@(\w+)\s?([^}]*)}/ms', $subject, $matches)) {
+ $name = $matches[1];
+ $value = $matches[2];
$subject = str_replace($matches[0], '', $subject);
- if ($matches[1] == 'pattern') {
+ if ($name == 'pattern') {
throw new Exception('Inline pattern tag should follow {@pattern /REGEX_PATTERN_HERE/} format and can optionally include PCRE modifiers following the ending `/`');
- } elseif (isset(static::$allowsArrayValue[$matches[1]])) {
- $matches[2] = explode(static::$arrayDelimiter, $matches[2]);
- } elseif ($matches[2] == 'true' || $matches[2] == 'false') {
- $matches[2] = $matches[2] == 'true';
- } elseif ($matches[2] == '') {
- $matches[2] = true;
- } elseif ($matches[1] == 'required') {
- $matches[2] = explode(static::$arrayDelimiter, $matches[2]);
+ } elseif (isset(static::$allowsArrayValue[$name])) {
+ $value = explode(static::$arrayDelimiter, $value);
+ } elseif ($value == 'true' || $value == 'false') {
+ $value = $value == 'true';
+ } elseif ($value == '') {
+ $value = true;
+ } elseif ($name == 'required') {
+ $value = explode(static::$arrayDelimiter, $value);
}
- $data[$matches[1]] = $matches[2];
+ if (defined('Luracast\\Restler\\UI\\HtmlForm::'.$name)) {
+ $value = constant($value);
+ }
+ $data[$name] = $value;
}
while (preg_match(self::$embeddedDataPattern, $subject, $matches)) {
@@ -340,9 +346,9 @@ class CommentParser
$str = $matches[self::$embeddedDataIndex];
if (isset ($this->restler)
&& self::$embeddedDataIndex > 1
- && !empty ($matches[1])
+ && !empty ($name)
) {
- $extension = $matches[1];
+ $extension = $name;
$formatMap = $this->restler->getFormatMap();
if (isset ($formatMap[$extension])) {
/**
@@ -397,15 +403,15 @@ class CommentParser
{
$code = 500;
$exception = 'Exception';
- if(count($value)>1){
+ if (count($value) > 1) {
$v1 = $value[0];
$v2 = $value[1];
- if(is_numeric($v1)){
+ if (is_numeric($v1)) {
$code = $v1;
$exception = $v2;
array_shift($value);
array_shift($value);
- } elseif(is_numeric($v2)){
+ } elseif (is_numeric($v2)) {
$code = $v2;
$exception = $v1;
array_shift($value);
@@ -414,17 +420,17 @@ class CommentParser
$exception = $v1;
array_shift($value);
}
- } elseif(count($value) && is_numeric($value[0])) {
+ } elseif (count($value) && is_numeric($value[0])) {
$code = $value[0];
array_shift($value);
}
$message = implode(' ', $value);
- if(!isset(RestException::$codes[$code])){
+ if (!isset(RestException::$codes[$code])) {
$code = 500;
- } elseif(empty($message)){
+ } elseif (empty($message)) {
$message = RestException::$codes[$code];
}
- return compact('code','message','exception');
+ return compact('code', 'message', 'exception');
}
private function formatClass(array $value)
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Compose.php b/htdocs/includes/restler/framework/Luracast/Restler/Compose.php
index 594e5902004..141aa8bcb2f 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Compose.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Compose.php
@@ -11,7 +11,7 @@ namespace Luracast\Restler;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class Compose implements iCompose
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/ApiMethodInfo.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/ApiMethodInfo.php
index 4d0fa4bfd48..f4dea84df97 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Data/ApiMethodInfo.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/ApiMethodInfo.php
@@ -11,7 +11,7 @@ namespace Luracast\Restler\Data;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class ApiMethodInfo extends ValueObject
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/Arr.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/Arr.php
index 6e98a4132ea..8ae18c7003d 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Data/Arr.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/Arr.php
@@ -10,7 +10,7 @@ namespace Luracast\Restler\Data;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class Arr
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/Invalid.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/Invalid.php
index 6b06d266f13..832dd30850e 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Data/Invalid.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/Invalid.php
@@ -12,7 +12,7 @@ use Exception;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class Invalid extends Exception
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/Obj.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/Obj.php
index 003f1df8794..8fe2a79ab63 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Data/Obj.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/Obj.php
@@ -11,7 +11,7 @@ namespace Luracast\Restler\Data;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class Obj
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/Text.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/Text.php
index 506ea25fb20..d0b39896c8e 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Data/Text.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/Text.php
@@ -10,87 +10,91 @@ namespace Luracast\Restler\Data;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class Text
{
- /**
- * Given haystack contains the needle or not?
- *
- * @param string $haystack
- * @param string $needle
- * @param bool $caseSensitive
- *
- * @return bool
- */
- public static function contains($haystack, $needle, $caseSensitive = true)
- {
- if (empty($needle))
- return true;
- return $caseSensitive
- ? strpos($haystack, $needle) !== false
- : stripos($haystack, $needle) !== false;
- }
-
- /**
- * Given haystack begins with the needle or not?
- *
- * @param string $haystack
- * @param string $needle
- *
- * @return bool
- */
- public static function beginsWith($haystack, $needle)
- {
- $length = strlen($needle);
- return (substr($haystack, 0, $length) === $needle);
- }
-
- /**
- * Given haystack ends with the needle or not?
- *
- * @param string $haystack
- * @param string $needle
- *
- * @return bool
- */
- public static function endsWith($haystack, $needle)
- {
- $length = strlen($needle);
- if ($length == 0) {
- return true;
- }
- return (substr($haystack, -$length) === $needle);
- }
-
-
- /**
- * Convert camelCased or underscored string in to a title
- *
- * @param string $name
- *
- * @return string
- */
- public static function title($name)
- {
- return
- ucwords(
- preg_replace(
- array('/(?<=[^A-Z])([A-Z])/', '/(?<=[^0-9])([0-9])/', '/([_-])/', '/[^a-zA-Z0-9\s]|\s\s+/'),
- array(' $0', ' $0', ' ', ' '),
- $name
- )
- );
- }
-
- /**
- * Convert given string to be used as a slug or css class
- *
- * @param string $name
- * @return string
- */
- public static function slug($name)
- {
- return preg_replace('/[^a-zA-Z]+/', '-', strtolower(strip_tags($name)));
- }
+ /**
+ * Given haystack contains the needle or not?
+ *
+ * @param string $haystack
+ * @param string $needle
+ * @param bool $caseSensitive
+ *
+ * @return bool
+ */
+ public static function contains($haystack, $needle, $caseSensitive = true)
+ {
+ if (empty($needle))
+ return true;
+ return $caseSensitive
+ ? strpos($haystack, $needle) !== false
+ : stripos($haystack, $needle) !== false;
+ }
+
+ /**
+ * Given haystack begins with the needle or not?
+ *
+ * @param string $haystack
+ * @param string $needle
+ *
+ * @return bool
+ */
+ public static function beginsWith($haystack, $needle)
+ {
+ $length = strlen($needle);
+ return (substr($haystack, 0, $length) === $needle);
+ }
+
+ /**
+ * Given haystack ends with the needle or not?
+ *
+ * @param string $haystack
+ * @param string $needle
+ *
+ * @return bool
+ */
+ public static function endsWith($haystack, $needle)
+ {
+ $length = strlen($needle);
+ if ($length == 0) {
+ return true;
+ }
+
+ // @CHANGE LDR
+ if (!is_string($haystack)) return false;
+
+ return (substr($haystack, -$length) === $needle);
+ }
+
+
+ /**
+ * Convert camelCased or underscored string in to a title
+ *
+ * @param string $name
+ *
+ * @return string
+ */
+ public static function title($name)
+ {
+ return
+ ucwords(
+ preg_replace(
+ array('/(?<=[^A-Z])([A-Z])/', '/(?<=[^0-9])([0-9])/', '/([_-])/', '/[^a-zA-Z0-9\s]|\s\s+/'),
+ array(' $0', ' $0', ' ', ' '),
+ $name
+ )
+ );
+ }
+
+ /**
+ * Convert given string to be used as a slug or css class
+ *
+ * @param string $name
+ * @return string
+ */
+ public static function slug($name)
+ {
+ return preg_replace('/[^a-zA-Z]+/', '-', strtolower(strip_tags($name)));
+ }
}
\ No newline at end of file
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/ValidationInfo.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/ValidationInfo.php
index 298b72ec125..fc05c5386df 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Data/ValidationInfo.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/ValidationInfo.php
@@ -15,7 +15,7 @@ use Luracast\Restler\Util;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class ValidationInfo implements iValueObject
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/Validator.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/Validator.php
index c98a17a62d6..023fc7c4d1e 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Data/Validator.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/Validator.php
@@ -18,7 +18,7 @@ use Luracast\Restler\Util;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class Validator implements iValidate
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/ValueObject.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/ValueObject.php
index 46857b45329..5a2b001e841 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Data/ValueObject.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/ValueObject.php
@@ -11,7 +11,7 @@ namespace Luracast\Restler\Data;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class ValueObject implements iValueObject
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/iValidate.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/iValidate.php
index 66688b066ba..923fc79b1ce 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Data/iValidate.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/iValidate.php
@@ -10,7 +10,7 @@ namespace Luracast\Restler\Data;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
interface iValidate {
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Data/iValueObject.php b/htdocs/includes/restler/framework/Luracast/Restler/Data/iValueObject.php
index dbf36cb744c..dcce824a655 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Data/iValueObject.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Data/iValueObject.php
@@ -11,7 +11,7 @@ namespace Luracast\Restler\Data;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
interface iValueObject
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Defaults.php b/htdocs/includes/restler/framework/Luracast/Restler/Defaults.php
index 8913db316b5..803c8b3177a 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Defaults.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Defaults.php
@@ -15,7 +15,7 @@ use Luracast\Restler\Data\Validator;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class Defaults
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/EventDispatcher.php b/htdocs/includes/restler/framework/Luracast/Restler/EventDispatcher.php
index f8cd883af46..0c5d0fa676c 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/EventDispatcher.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/EventDispatcher.php
@@ -9,7 +9,7 @@ namespace Luracast\Restler;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
use Closure;
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Filter/RateLimit.php b/htdocs/includes/restler/framework/Luracast/Restler/Filter/RateLimit.php
index 5dce8591bba..e5705136fce 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Filter/RateLimit.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Filter/RateLimit.php
@@ -15,7 +15,7 @@ use Luracast\Restler\RestException;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class RateLimit implements iFilter, iUseAuthentication
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Flash.php b/htdocs/includes/restler/framework/Luracast/Restler/Flash.php
index 3ab04aa745e..41d097f312d 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Flash.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Flash.php
@@ -15,7 +15,7 @@ use ArrayAccess;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class Flash implements ArrayAccess
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/AmfFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/AmfFormat.php
index 3d146fbcfac..181d95bea46 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Format/AmfFormat.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/AmfFormat.php
@@ -17,7 +17,7 @@ use ZendAmf\Parser\OutputStream;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class AmfFormat extends DependentFormat
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/CsvFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/CsvFormat.php
index 4bed88251c8..c33557f8463 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Format/CsvFormat.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/CsvFormat.php
@@ -15,7 +15,7 @@ use Luracast\Restler\RestException;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class CsvFormat extends Format implements iDecodeStream
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/Format.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/Format.php
index 10b2c5834e6..edc2cbde719 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Format/Format.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/Format.php
@@ -10,7 +10,7 @@ namespace Luracast\Restler\Format;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
abstract class Format implements iFormat
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/HtmlFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/HtmlFormat.php
index e871186c446..493e3e44061 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Format/HtmlFormat.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/HtmlFormat.php
@@ -1,4 +1,5 @@
'illuminate/view:4.2.*',
- 'Twig_Environment' => 'twig/twig:v1.13.*',
- 'Mustache_Engine' => 'mustache/mustache:dev-master',
+ self::BLADE => 'illuminate/view:^8',
+ self::TWIG => 'twig/twig:^3',
+ self::MUSTACHE => 'mustache/mustache:dev-master',
);
}
@@ -101,7 +111,7 @@ class HtmlFormat extends DependentFormat
$resolver->register('blade', function () use ($engine) {
return $engine;
});
- $phpEngine = new PhpEngine();
+ $phpEngine = new PhpEngine($files);
$resolver->register('php', function () use ($phpEngine) {
return $phpEngine;
});
@@ -128,32 +138,43 @@ class HtmlFormat extends DependentFormat
return $view->render();
}
- public static function twig(array $data, $debug = true)
+ /**
+ * @param array|object $data
+ * @param bool $debug
+ *
+ * @return string
+ * @throws \Twig\Error\LoaderError
+ * @throws \Twig\Error\RuntimeError
+ * @throws \Twig\Error\SyntaxError
+ */
+ public static function twig($data, $debug = true)
{
- $loader = new \Twig_Loader_Filesystem(static::$viewPath);
- $twig = new \Twig_Environment($loader, array(
- 'cache' => static::$cacheDirectory,
- 'debug' => $debug,
+ $loader = new FilesystemLoader(static::$viewPath);
+ $twig = new Environment($loader, array(
+ 'cache' => is_string(static::$cacheDirectory)
+ ? static::$cacheDirectory : false,
+ 'debug' => $debug,
'use_strict_variables' => $debug,
));
- if ($debug)
- $twig->addExtension(new \Twig_Extension_Debug());
+ if ($debug) {
+ $twig->addExtension(new DebugExtension());
+ }
$twig->addFunction(
- new \Twig_SimpleFunction(
+ new TwigFunction(
'form',
'Luracast\Restler\UI\Forms::get',
array('is_safe' => array('html'))
)
);
$twig->addFunction(
- new \Twig_SimpleFunction(
+ new TwigFunction(
'form_key',
'Luracast\Restler\UI\Forms::key'
)
);
$twig->addFunction(
- new \Twig_SimpleFunction(
+ new TwigFunction(
'nav',
'Luracast\Restler\UI\Nav::get'
)
@@ -164,7 +185,7 @@ class HtmlFormat extends DependentFormat
isset(HtmlFormat::$data[$name]) &&
is_callable(HtmlFormat::$data[$name])
) {
- return new \Twig_SimpleFunction(
+ return new TwigFunction(
$name,
HtmlFormat::$data[$name]
);
@@ -172,21 +193,35 @@ class HtmlFormat extends DependentFormat
return false;
});
- $template = $twig->loadTemplate(static::getViewFile());
- return $template->render($data);
+ $template = $twig->load(static::getViewFile());
+ return $template->render((array)$data);
}
- public static function handlebar(array $data, $debug = true)
+ /**
+ * @param array|object $data
+ * @param bool $debug
+ *
+ * @return string
+ */
+ public static function handlebar($data, $debug = true)
{
return static::mustache($data, $debug);
}
- public static function mustache(array $data, $debug = true)
+ /**
+ * @param array|object $data
+ * @param bool $debug
+ *
+ * @return string
+ */
+ public static function mustache($data, $debug = true)
{
- if (!isset($data['nav']))
+ $data = (array)$data;
+ if (!isset($data['nav'])) {
$data['nav'] = array_values(Nav::get());
+ }
$options = array(
- 'loader' => new \Mustache_Loader_FilesystemLoader(
+ 'loader' => new \Mustache_Loader_FilesystemLoader(
static::$viewPath,
array('extension' => static::getViewExtension())
),
@@ -200,16 +235,25 @@ class HtmlFormat extends DependentFormat
},
)
);
- if (!$debug)
+ if (!$debug) {
$options['cache'] = static::$cacheDirectory;
+ }
$m = new \Mustache_Engine($options);
return $m->render(static::getViewFile(), $data);
}
- public static function php(array $data, $debug = true)
+ /**
+ * @param array|object $data
+ * @param bool $debug
+ *
+ * @return string
+ * @throws RestException
+ */
+ public static function php($data, $debug = true)
{
- if (static::$view == 'debug')
+ if (static::$view == 'debug') {
static::$viewPath = dirname(__DIR__) . '/views';
+ }
$view = static::getViewFile(true);
if (!is_readable($view)) {
@@ -222,22 +266,26 @@ class HtmlFormat extends DependentFormat
$path = static::$viewPath . DIRECTORY_SEPARATOR;
$template = function ($view) use ($data, $path) {
+ $data = (array)$data;
$form = function () {
return call_user_func_array(
'Luracast\Restler\UI\Forms::get',
func_get_args()
);
};
- if (!isset($data['form']))
+ if (!isset($data['form'])) {
$data['form'] = $form;
+ }
$nav = function () {
return call_user_func_array(
'Luracast\Restler\UI\Nav::get',
func_get_args()
);
};
- if (!isset($data['nav']))
+ if (!isset($data['nav'])) {
$data['nav'] = $nav;
+ }
+
$_ = function () use ($data, $path) {
extract($data);
@@ -254,7 +302,7 @@ class HtmlFormat extends DependentFormat
) {
$str = '';
foreach ($arrays as $arr) {
- extract($arr);
+ extract((array)$arr);
$str .= include $file;
}
return $str;
@@ -264,15 +312,18 @@ class HtmlFormat extends DependentFormat
}
break;
case 'if':
- if (count($args) < 2)
+ if (count($args) < 2) {
$args[1] = '';
- if (count($args) < 3)
+ }
+ if (count($args) < 3) {
$args[2] = '';
+ }
return $args[0] ? $args[1] : $args[2];
break;
default:
- if (isset($data[$task]) && is_callable($data[$task]))
+ if (isset($data[$task]) && is_callable($data[$task])) {
return call_user_func_array($data[$task], $args);
+ }
}
return '';
};
@@ -280,8 +331,9 @@ class HtmlFormat extends DependentFormat
return @include $view;
};
$value = $template($view);
- if (is_string($value))
+ if (is_string($value)) {
return $value;
+ }
}
/**
@@ -294,8 +346,8 @@ class HtmlFormat extends DependentFormat
* Formatter has to make the encoded
* output more human readable
*
- * @throws \Exception
* @return string encoded string
+ * @throws \Exception
*/
public function encode($data, $humanReadable = false)
{
@@ -317,9 +369,9 @@ class HtmlFormat extends DependentFormat
'response' => static::$convertResponseToArray
? Obj::toArray($data)
: $data,
- 'stages' => $this->restler->getEvents(),
- 'success' => $success,
- 'error' => $error
+ 'stages' => $this->restler->getEvents(),
+ 'success' => $success,
+ 'error' => $error
);
$info = $data['api'] = $this->restler->apiMethodInfo;
$metadata = Util::nestedValue(
@@ -358,7 +410,9 @@ class HtmlFormat extends DependentFormat
if ($value) {
$data = Util::nestedValue($data, explode('.', $value));
}
- $data += static::$data;
+ if (is_array($data)) {
+ $data += static::$data;
+ }
if (false === ($i = strrpos(self::$view, '.'))) {
$template = self::$template;
} else {
@@ -369,17 +423,18 @@ class HtmlFormat extends DependentFormat
static::$cacheDirectory = Defaults::$cacheDirectory . DIRECTORY_SEPARATOR . $template;
if (!file_exists(static::$cacheDirectory)) {
if (!mkdir(static::$cacheDirectory, 0770, true)) {
- throw new RestException(500, 'Unable to create cache directory `' . static::$cacheDirectory . '`');
+ throw new RestException(500,
+ 'Unable to create cache directory `' . static::$cacheDirectory . '`');
}
}
}
if (method_exists($class = get_called_class(), $template)) {
if ($template == 'blade') {
- $this->checkDependency('Illuminate\View\View');
+ $this->checkDependency(self::BLADE);
} elseif ($template == 'twig') {
- $this->checkDependency('Twig_Environment');
+ $this->checkDependency(self::TWIG);
} elseif ($template == 'mustache' || $template == 'handlebar') {
- $this->checkDependency('Mustache_Engine');
+ $this->checkDependency(self::MUSTACHE);
}
return call_user_func("$class::$template", $data, $humanReadable);
}
@@ -416,8 +471,9 @@ class HtmlFormat extends DependentFormat
{
$v = $fullPath ? static::$viewPath . '/' : '';
$v .= static::$view;
- if ($includeExtension)
+ if ($includeExtension) {
$v .= '.' . static::getViewExtension();
+ }
return $v;
}
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/JsFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/JsFormat.php
index 0f04b7f0ee5..913dc272e19 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Format/JsFormat.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/JsFormat.php
@@ -11,7 +11,7 @@ namespace Luracast\Restler\Format;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class JsFormat extends JsonFormat
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/JsonFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/JsonFormat.php
index 00c763e8ff5..170676c071b 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Format/JsonFormat.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/JsonFormat.php
@@ -15,7 +15,7 @@ use Luracast\Restler\RestException;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class JsonFormat extends Format
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/MultiFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/MultiFormat.php
index 18fdd54b842..64afa3b3ea4 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Format/MultiFormat.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/MultiFormat.php
@@ -9,7 +9,7 @@ namespace Luracast\Restler\Format;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
abstract class MultiFormat implements iFormat
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/PlistFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/PlistFormat.php
index cc07066a33c..f1eca01933d 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Format/PlistFormat.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/PlistFormat.php
@@ -18,7 +18,7 @@ use CFPropertyList\CFPropertyList;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class PlistFormat extends DependentMultiFormat
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/TsvFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/TsvFormat.php
index 502b02d2758..4eb3006f363 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Format/TsvFormat.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/TsvFormat.php
@@ -11,7 +11,7 @@ namespace Luracast\Restler\Format;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class TsvFormat extends CsvFormat
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/UploadFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/UploadFormat.php
index de41bf98c71..b58b0f02b49 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Format/UploadFormat.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/UploadFormat.php
@@ -13,7 +13,7 @@ use Luracast\Restler\RestException;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class UploadFormat extends Format
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/UrlEncodedFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/UrlEncodedFormat.php
index 12d5a410333..6d141230d82 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Format/UrlEncodedFormat.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/UrlEncodedFormat.php
@@ -11,7 +11,7 @@ namespace Luracast\Restler\Format;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class UrlEncodedFormat extends Format
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/XmlFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/XmlFormat.php
index ceec32e4cb5..6f8606eb111 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Format/XmlFormat.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/XmlFormat.php
@@ -16,7 +16,7 @@ use XMLWriter;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class XmlFormat extends Format
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/YamlFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/YamlFormat.php
index 07baae88b6f..4ff643de65f 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Format/YamlFormat.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/YamlFormat.php
@@ -14,7 +14,7 @@ use Luracast\Restler\Data\Obj;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class YamlFormat extends DependentFormat
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/iDecodeStream.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/iDecodeStream.php
index 080e3da506c..ec29330ed1f 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Format/iDecodeStream.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/iDecodeStream.php
@@ -11,7 +11,7 @@ namespace Luracast\Restler\Format;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
interface iDecodeStream
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Format/iFormat.php b/htdocs/includes/restler/framework/Luracast/Restler/Format/iFormat.php
index d70d2019a94..0f4173d5b74 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Format/iFormat.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Format/iFormat.php
@@ -11,7 +11,7 @@ namespace Luracast\Restler\Format;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
interface iFormat
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/HumanReadableCache.php b/htdocs/includes/restler/framework/Luracast/Restler/HumanReadableCache.php
index 6e1c22b432c..2546e30a4ee 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/HumanReadableCache.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/HumanReadableCache.php
@@ -10,7 +10,7 @@ namespace Luracast\Restler;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class HumanReadableCache implements iCache
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/InvalidAuthCredentials.php b/htdocs/includes/restler/framework/Luracast/Restler/InvalidAuthCredentials.php
index 233e543e0aa..1b402238bf3 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/InvalidAuthCredentials.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/InvalidAuthCredentials.php
@@ -12,7 +12,7 @@ namespace Luracast\Restler;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/PassThrough.php b/htdocs/includes/restler/framework/Luracast/Restler/PassThrough.php
index a77e533b722..2d265fb0fba 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/PassThrough.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/PassThrough.php
@@ -10,7 +10,7 @@ namespace Luracast\Restler;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class PassThrough
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Redirect.php b/htdocs/includes/restler/framework/Luracast/Restler/Redirect.php
index 63319106759..8203b8eb18d 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Redirect.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Redirect.php
@@ -12,7 +12,7 @@ use Luracast\Restler\Format\JsonFormat;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class Redirect
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Resources.php b/htdocs/includes/restler/framework/Luracast/Restler/Resources.php
index 2986968a990..dfb547d287b 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Resources.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Resources.php
@@ -15,7 +15,7 @@ use stdClass;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class Resources implements iUseAuthentication, iProvideMultiVersionApi
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/RestException.php b/htdocs/includes/restler/framework/Luracast/Restler/RestException.php
index b2e51f8b122..4291381661c 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/RestException.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/RestException.php
@@ -14,7 +14,7 @@ use Exception;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class RestException extends Exception
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Restler.php b/htdocs/includes/restler/framework/Luracast/Restler/Restler.php
index fcb5388726c..0c8f44a3864 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Restler.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Restler.php
@@ -15,13 +15,14 @@ use Luracast\Restler\Format\UrlEncodedFormat;
* inspired by the RestServer code from
*
*
+ *
* @category Framework
* @package Restler
* @author R.Arul Kumaran
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*
* @method static void onGet() onGet(Callable $function) fired before reading the request details
* @method static void onRoute() onRoute(Callable $function) fired before finding the api method
@@ -48,10 +49,13 @@ use Luracast\Restler\Format\UrlEncodedFormat;
* @method void onRespond() onRespond(Callable $function) fired before sending response
* @method void onComplete() onComplete(Callable $function) fired after sending response
* @method void onMessage() onMessage(Callable $function) fired before composing error response
+ *
+ * @property bool|null _authenticated
+ * @property bool _authVerified
*/
class Restler extends EventDispatcher
{
- const VERSION = '3.0.0rc6';
+ const VERSION = '3.1.0';
// ==================================================================
//
@@ -693,6 +697,8 @@ class Restler extends EventDispatcher
* - media type
* - charset
* - language
+ *
+ * @throws RestException
*/
protected function negotiate()
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Routes.php b/htdocs/includes/restler/framework/Luracast/Restler/Routes.php
index 999094dec4c..d59b27d4418 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Routes.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Routes.php
@@ -17,7 +17,7 @@ use Exception;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class Routes
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Scope.php b/htdocs/includes/restler/framework/Luracast/Restler/Scope.php
index 16ccdd33561..6f7b49daf40 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Scope.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Scope.php
@@ -1,4 +1,6 @@
'Luracast\Restler\Resources',
'Explorer' => 'Luracast\Restler\Explorer\v2\Explorer',
- 'Explorer1' => 'Luracast\Restler\Explorer\v1\Explorer',
- 'Explorer2' => 'Luracast\Restler\Explorer\v2\Explorer',
+ 'Explorer1' => 'Luracast\Restler\Explorer\v1\Explorer',
+ 'Explorer2' => 'Luracast\Restler\Explorer\v2\Explorer',
//Cache classes
'HumanReadableCache' => 'Luracast\Restler\HumanReadableCache',
@@ -120,6 +122,7 @@ class Scope
$r = new $fullName();
static::$instances[$name] = (object)array('instance' => $r);
if ($name != 'Restler') {
+ /** @var Restler restler */
$r->restler = static::get('Restler');
$m = Util::nestedValue($r->restler, 'apiMethodInfo', 'metadata');
if ($m) {
@@ -138,15 +141,14 @@ class Scope
}
if (
$r instanceof iUseAuthentication &&
- static::get('Restler')->_authVerified &&
+ $r->restler && $r->restler->_authVerified &&
!isset(static::$instances[$name]->authVerified)
) {
static::$instances[$name]->authVerified = true;
- $r->__setAuthenticationStatus
- (static::get('Restler')->_authenticated);
+ $r->__setAuthenticationStatus($r->restler->_authenticated);
}
if (isset(static::$instances[$name]->initPending)) {
- $m = Util::nestedValue(static::get('Restler'), 'apiMethodInfo', 'metadata');
+ $m = Util::nestedValue($r->restler, 'apiMethodInfo', 'metadata');
$fullName = $name;
if (class_exists($name)) {
$shortName = Util::getShortName($name);
@@ -194,15 +196,15 @@ class Scope
*/
public static function resolve($className, array $scope)
{
- if (empty($className) || !is_string($className))
+ if (empty($className) || !is_string($className)) {
return false;
+ }
if (self::isPrimitiveDataType($className)) {
return false;
}
$divider = '\\';
- $qualified = false;
if ($className[0] == $divider) {
$qualified = trim($className, $divider);
} elseif (array_key_exists($className, $scope)) {
@@ -210,18 +212,21 @@ class Scope
} else {
$qualified = $scope['*'] . $className;
}
- if (class_exists($qualified))
+ if (class_exists($qualified)) {
return $qualified;
+ }
if (isset(static::$classAliases[$className])) {
$qualified = static::$classAliases[$className];
- if (class_exists($qualified))
+ if (class_exists($qualified)) {
return $qualified;
+ }
}
return false;
}
/**
* @param string $stringName
+ *
* @return boolean
*/
private static function isPrimitiveDataType($stringName)
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/UI/Emmet.php b/htdocs/includes/restler/framework/Luracast/Restler/UI/Emmet.php
index 435804b4469..66090568a47 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/UI/Emmet.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/UI/Emmet.php
@@ -8,7 +8,7 @@ use Luracast\Restler\Util;
* Class Emmet
* @package Luracast\Restler\UI
*
- * @version 3.0.0rc6
+ * @version 3.1.0
*/
class Emmet
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/UI/Forms.php b/htdocs/includes/restler/framework/Luracast/Restler/UI/Forms.php
index 7073bfcf837..20749a2e691 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/UI/Forms.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/UI/Forms.php
@@ -1,4 +1,5 @@
url;
+ }
$info = $restler->url == $action
&& Util::getRequestMethod() == $method
@@ -126,23 +134,25 @@ class Forms implements iFilter
//echo $e->getErrorMessage();
$info = false;
}
- if (!$info)
+ if (!$info) {
throw new RestException(500, 'invalid action path for form `' . $method . ' ' . $action . '`');
+ }
static::$info = $info;
$m = $info->metadata;
$r = static::fields($dataOnly);
if ($method != 'GET' && $method != 'POST') {
- if (empty(Defaults::$httpMethodOverrideProperty))
+ if (empty(Defaults::$httpMethodOverrideProperty)) {
throw new RestException(
500,
'Forms require `Defaults::\$httpMethodOverrideProperty`' .
"for supporting HTTP $method"
);
+ }
if ($dataOnly) {
$r[] = array(
- 'tag' => 'input',
- 'name' => Defaults::$httpMethodOverrideProperty,
- 'type' => 'hidden',
+ 'tag' => 'input',
+ 'name' => Defaults::$httpMethodOverrideProperty,
+ 'type' => 'hidden',
'value' => 'method',
);
} else {
@@ -158,9 +168,9 @@ class Forms implements iFilter
$form_key = static::key($method, $action);
if ($dataOnly) {
$r[] = array(
- 'tag' => 'input',
- 'name' => static::FORM_KEY,
- 'type' => 'hidden',
+ 'tag' => 'input',
+ 'name' => static::FORM_KEY,
+ 'type' => 'hidden',
'value' => 'hidden',
);
} else {
@@ -173,15 +183,16 @@ class Forms implements iFilter
}
$s = array(
- 'tag' => 'button',
- 'type' => 'submit',
+ 'tag' => 'button',
+ 'type' => 'submit',
'label' =>
Util::nestedValue($m, 'return', CommentParser::$embeddedDataName, 'label')
- ? : 'Submit'
+ ?: 'Submit'
);
- if (!$dataOnly)
+ if (!$dataOnly) {
$s = Emmet::make(static::style('submit', $m), $s);
+ }
$r[] = $s;
$t = array(
'action' => $restler->getBaseUrl() . '/' . rtrim($action, '/'),
@@ -207,15 +218,18 @@ class Forms implements iFilter
public static function style($name, array $metadata, $type = '')
{
- return isset($metadata[CommentParser::$embeddedDataName][$name])
- ? $metadata[CommentParser::$embeddedDataName][$name]
- : (!empty($type) && isset(static::$style["$name-$type"])
- ? static::$style["$name-$type"]
- : (isset(static::$style[$name])
- ? static::$style[$name]
- : null
- )
- );
+ if (isset($metadata[CommentParser::$embeddedDataName][$name])) {
+ return $metadata[CommentParser::$embeddedDataName][$name];
+ }
+ $style = static::$style . '::' . $name;
+ $typedStyle = $style . '_' . $type;
+ if (defined($typedStyle)) {
+ return constant($typedStyle);
+ }
+ if (defined($style)) {
+ return constant($style);
+ }
+ return null;
}
public static function fields($dataOnly = false)
@@ -230,11 +244,13 @@ class Forms implements iFilter
is_scalar($value) ||
($p['type'] == 'array' && is_array($value) && $value == array_values($value)) ||
is_object($value) && $p['type'] == get_class($value)
- )
+ ) {
$p['value'] = $value;
+ }
static::$validationInfo = $v = new ValidationInfo($p);
- if ($v->from == 'path')
+ if ($v->from == 'path') {
continue;
+ }
if (!empty($v->children)) {
$t = Emmet::make(static::style('fieldset', $m), array('label' => $v->label));
foreach ($v->children as $n => $c) {
@@ -243,11 +259,13 @@ class Forms implements iFilter
is_scalar($value) ||
($c['type'] == 'array' && is_array($value) && $value == array_values($value)) ||
is_object($value) && $c['type'] == get_class($value)
- )
+ ) {
$c['value'] = $value;
+ }
static::$validationInfo = $vc = new ValidationInfo($c);
- if ($vc->from == 'path')
+ if ($vc->from == 'path') {
continue;
+ }
$vc->name = $v->name . '[' . $vc->name . ']';
$t [] = static::field($vc, $dataOnly);
}
@@ -275,7 +293,7 @@ class Forms implements iFilter
//prevent XSS attacks
$p->value = htmlspecialchars($p->value, ENT_QUOTES | ENT_HTML401, 'UTF-8');
}
- $type = $p->field ? : static::guessFieldType($p);
+ $type = $p->field ?: static::guessFieldType($p);
$tag = in_array($type, static::$inputTypes)
? 'input' : $type;
$options = array();
@@ -291,25 +309,33 @@ class Forms implements iFilter
$option['text'] = isset($p->rules['select'][$i])
? $p->rules['select'][$i]
: $choice;
- if ($choice == $p->value)
+ if ($choice == $p->value) {
$option['selected'] = true;
+ }
$options[] = $option;
}
} elseif ($p->type == 'boolean' || $p->type == 'bool') {
if (Text::beginsWith($type, 'radio') || Text::beginsWith($type, 'select')) {
- $options[] = array('name' => $p->name, 'text' => ' Yes ',
- 'value' => 'true');
- $options[] = array('name' => $p->name, 'text' => ' No ',
- 'value' => 'false');
- if ($p->value || $p->default)
+ $options[] = array(
+ 'name' => $p->name,
+ 'text' => ' Yes ',
+ 'value' => 'true'
+ );
+ $options[] = array(
+ 'name' => $p->name,
+ 'text' => ' No ',
+ 'value' => 'false'
+ );
+ if ($p->value || $p->default) {
$options[0]['selected'] = true;
+ }
} else { //checkbox
$r = array(
- 'tag' => $tag,
- 'name' => $name,
- 'type' => $type,
- 'label' => $p->label,
- 'value' => 'true',
+ 'tag' => $tag,
+ 'name' => $name,
+ 'type' => $type,
+ 'label' => $p->label,
+ 'value' => 'true',
'default' => $p->default,
);
$r['text'] = 'Yes';
@@ -323,13 +349,13 @@ class Forms implements iFilter
}
if (empty($r)) {
$r = array(
- 'tag' => $tag,
- 'name' => $name,
- 'type' => $type,
- 'label' => $p->label,
- 'value' => $p->value,
- 'default' => $p->default,
- 'options' => & $options,
+ 'tag' => $tag,
+ 'name' => $name,
+ 'type' => $type,
+ 'label' => $p->label,
+ 'value' => $p->value,
+ 'default' => $p->default,
+ 'options' => & $options,
'multiple' => $multiple,
);
if (isset($p->rules)) {
@@ -347,30 +373,36 @@ class Forms implements iFilter
$r['message'] = Validator::$exceptions[$p->name]->getMessage();
}
- if (true === $p->required)
+ if (true === $p->required) {
$r['required'] = 'required';
- if (isset($p->rules['autofocus']))
+ }
+ if (isset($p->rules['autofocus'])) {
$r['autofocus'] = 'autofocus';
+ }
/*
echo "";
print_r($r);
echo "";
*/
- if ($dataOnly)
+ if ($dataOnly) {
return $r;
- if (isset($p->rules['form']))
+ }
+ if (isset($p->rules['form'])) {
return Emmet::make($p->rules['form'], $r);
+ }
$m = static::$info->metadata;
- $t = Emmet::make(static::style($type, $m, $p->type) ? : static::style($tag, $m, $p->type), $r);
+ $t = Emmet::make(static::style($type, $m, $p->type) ?: static::style($tag, $m, $p->type), $r);
return $t;
}
protected static function guessFieldType(ValidationInfo $p, $type = 'type')
{
- if (in_array($p->$type, static::$inputTypes))
+ if (in_array($p->$type, static::$inputTypes)) {
return $p->$type;
- if ($p->choice)
+ }
+ if ($p->choice) {
return $p->type == 'array' ? 'checkbox' : 'select';
+ }
switch ($p->$type) {
case 'boolean':
return 'radio';
@@ -381,8 +413,9 @@ class Forms implements iFilter
case 'array':
return static::guessFieldType($p, 'contentType');
}
- if ($p->name == 'password')
+ if ($p->name == 'password') {
return 'password';
+ }
return 'text';
}
@@ -397,11 +430,13 @@ class Forms implements iFilter
*/
public static function key($method = 'POST', $action = null)
{
- if (is_null($action))
+ if (is_null($action)) {
$action = Scope::get('Restler')->url;
+ }
$target = "$method $action";
- if (empty(static::$key[$target]))
+ if (empty(static::$key[$target])) {
static::$key[$target] = md5($target . User::getIpAddress() . uniqid(mt_rand()));
+ }
$_SESSION[static::FORM_KEY] = static::$key;
return static::$key[$target];
}
@@ -425,8 +460,9 @@ class Forms implements iFilter
$url = $restler->url;
foreach (static::$excludedPaths as $exclude) {
if (empty($exclude)) {
- if ($url == $exclude)
+ if ($url == $exclude) {
return true;
+ }
} elseif (Text::beginsWith($url, $exclude)) {
return true;
}
@@ -447,4 +483,4 @@ class Forms implements iFilter
}
return true;
}
-}
\ No newline at end of file
+}
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/UI/Nav.php b/htdocs/includes/restler/framework/Luracast/Restler/UI/Nav.php
index b74054a99c5..4a7445ccbe6 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/UI/Nav.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/UI/Nav.php
@@ -19,7 +19,7 @@ use Luracast\Restler\Util;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class Nav
{
@@ -130,7 +130,8 @@ class Nav
} else {
return $tree;
}
- return null;
+ $value = null;
+ return $value;
}
public static function addUrls(array $urls)
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/UI/Tags.php b/htdocs/includes/restler/framework/Luracast/Restler/UI/Tags.php
index 2c194cdbd1b..27e90bc89b5 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/UI/Tags.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/UI/Tags.php
@@ -14,7 +14,7 @@ use Luracast\Restler\Util;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*
* ============================ magic properties ==============================
* @property Tags parent parent tag
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/User.php b/htdocs/includes/restler/framework/Luracast/Restler/User.php
index 57465e26e46..463fd46867c 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/User.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/User.php
@@ -11,7 +11,7 @@ namespace Luracast\Restler;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
class User implements iIdentifyUser
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/Util.php b/htdocs/includes/restler/framework/Luracast/Restler/Util.php
index 9674550814f..a181a0e0da9 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/Util.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/Util.php
@@ -1,5 +1,7 @@
0)
+ }
+ if (strlen($resourcePath) > 0) {
$resourcePath .= '/';
+ }
return $prefix . $resourcePath;
}
@@ -114,8 +121,9 @@ class Util
*/
public static function removeCommonPath($fromPath, $usingPath, $char = '/')
{
- if (empty($fromPath))
+ if (empty($fromPath)) {
return '';
+ }
$fromPath = explode($char, $fromPath);
$usingPath = explode($char, $usingPath);
while (count($usingPath)) {
@@ -145,8 +153,9 @@ class Util
*/
public static function splitCommonPath($fromPath, $usingPath, $char = '/')
{
- if (empty($fromPath))
+ if (empty($fromPath)) {
return array('', '');
+ }
$fromPath = explode($char, $fromPath);
$usingPath = explode($char, $usingPath);
$commonPath = array();
@@ -213,11 +222,18 @@ class Util
$accepts = array($accepts);
}
foreach ($accepts as $pos => $accept) {
- $parts = explode(';q=', trim($accept));
- $type = array_shift($parts);
- $quality = count($parts) ?
- floatval(array_shift($parts)) :
- (1000 - $pos) / 1000;
+ $parts = explode(';', $accept);
+ $type = trim(array_shift($parts));
+ $parameters = [];
+ foreach ($parts as $part) {
+ $part = explode('=', $part);
+ if (2 !== count($part)) {
+ continue;
+ }
+ $key = strtolower(trim($part[0]));
+ $parameters[$key] = trim($part[1], ' "');
+ }
+ $quality = isset($parameters['q']) ? (float)$parameters['q'] : (1000 - $pos) / 1000;
$acceptList[$type] = $quality;
}
arsort($acceptList);
@@ -227,8 +243,7 @@ class Util
public static function getShortName($className)
{
// @CHANGE LDR
- if (! is_string($className)) return '';
- //var_dump($className);
+ if (!is_string($className)) return;
$className = explode('\\', $className);
return end($className);
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/iAuthenticate.php b/htdocs/includes/restler/framework/Luracast/Restler/iAuthenticate.php
index 6bacb8cec09..954055343e4 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/iAuthenticate.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/iAuthenticate.php
@@ -11,7 +11,7 @@ namespace Luracast\Restler;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
interface iAuthenticate extends iFilter
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/iCache.php b/htdocs/includes/restler/framework/Luracast/Restler/iCache.php
index 37d6aaea261..3b6504340b6 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/iCache.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/iCache.php
@@ -9,7 +9,7 @@ namespace Luracast\Restler;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
interface iCache
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/iCompose.php b/htdocs/includes/restler/framework/Luracast/Restler/iCompose.php
index b06b2c3bc6c..2bc0579befe 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/iCompose.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/iCompose.php
@@ -13,7 +13,7 @@ use Exception;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
interface iCompose {
/**
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/iFilter.php b/htdocs/includes/restler/framework/Luracast/Restler/iFilter.php
index 89b50ce9812..dc1b355db0f 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/iFilter.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/iFilter.php
@@ -12,7 +12,7 @@ namespace Luracast\Restler;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
interface iFilter
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/iIdentifyUser.php b/htdocs/includes/restler/framework/Luracast/Restler/iIdentifyUser.php
index d3dd4a5d8c5..834897668db 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/iIdentifyUser.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/iIdentifyUser.php
@@ -12,7 +12,7 @@ namespace Luracast\Restler;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
interface iIdentifyUser
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/iProvideMultiVersionApi.php b/htdocs/includes/restler/framework/Luracast/Restler/iProvideMultiVersionApi.php
index c7afe11fcb7..b57fc876f41 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/iProvideMultiVersionApi.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/iProvideMultiVersionApi.php
@@ -5,7 +5,7 @@ namespace Luracast\Restler;
* Interface iProvideMultiVersionApi
* @package Luracast\Restler
*
- * @version 3.0.0rc6
+ *
*/
interface iProvideMultiVersionApi
{
diff --git a/htdocs/includes/restler/framework/Luracast/Restler/iUseAuthentication.php b/htdocs/includes/restler/framework/Luracast/Restler/iUseAuthentication.php
index 611d909b305..ee3a9e0bcca 100644
--- a/htdocs/includes/restler/framework/Luracast/Restler/iUseAuthentication.php
+++ b/htdocs/includes/restler/framework/Luracast/Restler/iUseAuthentication.php
@@ -11,7 +11,7 @@ namespace Luracast\Restler;
* @copyright 2010 Luracast
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @link http://luracast.com/products/restler/
- * @version 3.0.0rc6
+ *
*/
interface iUseAuthentication
{
diff --git a/htdocs/intracommreport/list.php b/htdocs/intracommreport/list.php
index d3346e344f4..e43dc33e700 100644
--- a/htdocs/intracommreport/list.php
+++ b/htdocs/intracommreport/list.php
@@ -132,7 +132,7 @@ if (is_array($extrafields->attributes[$object->table_element]['label']) && count
foreach($extrafields->attributes[$object->table_element]['label'] as $key => $val)
{
if (! empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key]=array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key]<0)?0:1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key])!=3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
+ $arrayfields["ef.".$key]=array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key]<0)?0:1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs((int) $extrafields->attributes[$object->table_element]['list'][$key])!=3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
}
}
*/
diff --git a/htdocs/langs/en_US/compta.lang b/htdocs/langs/en_US/compta.lang
index 18ee01eb3bb..1afeb6e3727 100644
--- a/htdocs/langs/en_US/compta.lang
+++ b/htdocs/langs/en_US/compta.lang
@@ -140,7 +140,7 @@ ConfirmDeleteSocialContribution=Are you sure you want to delete this social/fisc
ExportDataset_tax_1=Social and fiscal taxes and payments
CalcModeVATDebt=Mode %sVAT on commitment accounting%s.
CalcModeVATEngagement=Mode %sVAT on incomes-expenses%s.
-CalcModeDebt=Analysis of known recorded invoices even if they are not yet accounted in ledger.
+CalcModeDebt=Analysis of known recorded documents even if they are not yet accounted in ledger.
CalcModeEngagement=Analysis of known recorded payments, even if they are not yet accounted in Ledger.
CalcModeBookkeeping=Analysis of data journalized in Bookkeeping Ledger table.
CalcModeLT1= Mode %sRE on customer invoices - suppliers invoices%s
@@ -154,9 +154,9 @@ AnnualSummaryInputOutputMode=Balance of income and expenses, annual summary
AnnualByCompanies=Balance of income and expenses, by predefined groups of account
AnnualByCompaniesDueDebtMode=Balance of income and expenses, detail by predefined groups, mode %sClaims-Debts%s said Commitment accounting.
AnnualByCompaniesInputOutputMode=Balance of income and expenses, detail by predefined groups, mode %sIncomes-Expenses%s said cash accounting.
-SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation on actual payments made even if they are not yet accounted in Ledger.
-SeeReportInDueDebtMode=See %sanalysis of invoices%s for a calculation based on known recorded invoices even if they are not yet accounted in Ledger.
-SeeReportInBookkeepingMode=See %sBookeeping report%s for a calculation on Bookkeeping Ledger table
+SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation based on recorded payments made even if they are not yet accounted in Ledger
+SeeReportInDueDebtMode=See %sanalysis of recorded documents%s for a calculation based on known recorded documents even if they are not yet accounted in Ledger
+SeeReportInBookkeepingMode=See %sanalysis of bookeeping ledger table%s for a report based on Bookkeeping Ledger table
RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included
RulesResultDue=- It includes outstanding invoices, expenses, VAT, donations whether they are paid or not. Is also includes paid salaries.
- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries defined with Salary module, the value date of payment is used.
RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries.
- It is based on the payment dates of the invoices, expenses, VAT and salaries. The donation date for donation.
diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php
index 14944619d6e..01e51e5e96f 100644
--- a/htdocs/main.inc.php
+++ b/htdocs/main.inc.php
@@ -2802,7 +2802,7 @@ if (!function_exists("llxFooter"))
if (!empty($contextpage)) $_SESSION['lastsearch_contextpage_tmp_'.$relativepathstring] = $contextpage;
if (!empty($page) && $page > 0) $_SESSION['lastsearch_page_tmp_'.$relativepathstring] = $page;
- if (!empty($limit) && $limit != $conf->limit) $_SESSION['lastsearch_limit_tmp_'.$relativepathstring] = $limit;
+ if (!empty($limit) && $limit != $conf->liste_limit) $_SESSION['lastsearch_limit_tmp_'.$relativepathstring] = $limit;
unset($_SESSION['lastsearch_contextpage_'.$relativepathstring]);
unset($_SESSION['lastsearch_page_'.$relativepathstring]);
diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php
index 2ed8e4577fa..7d09667bd22 100644
--- a/htdocs/modulebuilder/template/myobject_list.php
+++ b/htdocs/modulebuilder/template/myobject_list.php
@@ -129,7 +129,7 @@ $arrayfields = array();
foreach ($object->fields as $key => $val) {
// If $val['visible']==0, then we never show the field
if (!empty($val['visible'])) {
- $visible = dol_eval($val['visible'], 1);
+ $visible = (int) dol_eval($val['visible'], 1);
$arrayfields['t.'.$key] = array(
'label'=>$val['label'],
'checked'=>(($visible < 0) ? 0 : 1),
diff --git a/htdocs/product/list.php b/htdocs/product/list.php
index a6b164772ba..3830f0bdafb 100644
--- a/htdocs/product/list.php
+++ b/htdocs/product/list.php
@@ -261,6 +261,9 @@ $parameters = array();
$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
+$rightskey = 'produit';
+if ($type == Product::TYPE_SERVICE) $rightskey = 'service';
+
if (empty($reshook))
{
// Selection of new fields
@@ -299,8 +302,8 @@ if (empty($reshook))
if ((string) $search_type == '1') { $objectlabel = 'Services'; }
if ((string) $search_type == '0') { $objectlabel = 'Products'; }
- $permissiontoread = $user->rights->produit->lire;
- $permissiontodelete = $user->rights->produit->supprimer;
+ $permissiontoread = $user->rights->{$rightskey}->lire;
+ $permissiontodelete = $user->rights->{$rightskey}->supprimer;
$permissiontoadd = $user->rights->{$rightskey}->creer;
$uploaddir = $conf->product->dir_output;
include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php';
@@ -531,8 +534,6 @@ if ($resql)
//'builddoc'=>$langs->trans("PDFMerge"),
//'presend'=>$langs->trans("SendByMail"),
);
- $rightskey = 'produit';
- if ($type == Product::TYPE_SERVICE) $rightskey = 'service';
if ($user->rights->{$rightskey}->supprimer) $arrayofmassactions['predelete'] = "".$langs->trans("Delete");
if ($user->rights->{$rightskey}->creer) $arrayofmassactions['preaffecttag'] = ''.$langs->trans("AffectTag");
if (in_array($massaction, array('presend', 'predelete'))) $arrayofmassactions = array();
diff --git a/htdocs/projet/activity/perday.php b/htdocs/projet/activity/perday.php
index 9e15a580358..24ac982896e 100644
--- a/htdocs/projet/activity/perday.php
+++ b/htdocs/projet/activity/perday.php
@@ -129,7 +129,7 @@ if (is_array($extrafields->attributes[$object->table_element]['label']) && count
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
{
if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["efpt.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
+ $arrayfields["efpt.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs((int) $extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
}
}
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/projet/activity/perweek.php b/htdocs/projet/activity/perweek.php
index 8b49aa2e0c2..4f8fbb8d865 100644
--- a/htdocs/projet/activity/perweek.php
+++ b/htdocs/projet/activity/perweek.php
@@ -143,7 +143,7 @@ if (is_array($extrafields->attributes['projet_task']['label']) && count($extrafi
foreach ($extrafields->attributes['projet_task']['label'] as $key => $val)
{
if (!empty($extrafields->attributes['projet_task']['list'][$key]))
- $arrayfields["efpt.".$key] = array('label'=>$extrafields->attributes['projet_task']['label'][$key], 'checked'=>(($extrafields->attributes['projet_task']['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes['projet_task']['pos'][$key], 'enabled'=>(abs($extrafields->attributes['projet_task']['list'][$key]) != 3 && $extrafields->attributes['projet_task']['perms'][$key]));
+ $arrayfields["efpt.".$key] = array('label'=>$extrafields->attributes['projet_task']['label'][$key], 'checked'=>(($extrafields->attributes['projet_task']['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes['projet_task']['pos'][$key], 'enabled'=>(abs((int) $extrafields->attributes['projet_task']['list'][$key]) != 3 && $extrafields->attributes['projet_task']['perms'][$key]));
}
}
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php
index ba1840c4101..52e105c1443 100644
--- a/htdocs/projet/tasks.php
+++ b/htdocs/projet/tasks.php
@@ -119,14 +119,8 @@ if ($object->usage_bill_time) {
}
// Extra fields
-if (is_array($extrafields->attributes[$taskstatic->table_element]['label']) && count($extrafields->attributes[$taskstatic->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$taskstatic->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$taskstatic->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$taskstatic->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$taskstatic->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$taskstatic->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$taskstatic->table_element]['list'][$key]) != 3 && $extrafields->attributes[$taskstatic->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$arrayfields = dol_sort_array($arrayfields, 'position');
$varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage;
diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php
index b9d1a19c629..1951df8c0e1 100644
--- a/htdocs/projet/tasks/list.php
+++ b/htdocs/projet/tasks/list.php
@@ -136,14 +136,8 @@ $arrayfields = array(
//'t.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000),
);
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php
index c18ec6e4434..cb92be401c1 100644
--- a/htdocs/projet/tasks/time.php
+++ b/htdocs/projet/tasks/time.php
@@ -869,14 +869,8 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0)
$arrayfields['value'] = array('label'=>$langs->trans("Value"), 'checked'=>1, 'enabled'=>(empty($conf->salaries->enabled) ? 0 : 1));
$arrayfields['valuebilled'] = array('label'=>$langs->trans("Billed"), 'checked'=>1, 'enabled'=>(((!empty($conf->global->PROJECT_HIDE_TASKS) || empty($conf->global->PROJECT_BILL_TIME_SPENT)) ? 0 : 1) && $projectstatic->usage_bill_time));
// Extra fields
- if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
- {
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
- }
+ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$arrayfields = dol_sort_array($arrayfields, 'position');
$param = '';
diff --git a/htdocs/reception/list.php b/htdocs/reception/list.php
index e175437c0cc..ec08c7ba94a 100644
--- a/htdocs/reception/list.php
+++ b/htdocs/reception/list.php
@@ -110,15 +110,10 @@ $arrayfields = array(
'e.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000),
'e.billed'=>array('label'=>$langs->trans("Billed"), 'checked'=>1, 'position'=>1000, 'enabled'=>(!empty($conf->global->WORKFLOW_BILL_ON_RECEPTION)))
);
+
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/resource/list.php b/htdocs/resource/list.php
index ccf061b50b7..c1b67edaa0e 100644
--- a/htdocs/resource/list.php
+++ b/htdocs/resource/list.php
@@ -121,14 +121,8 @@ $arrayfields = array(
),
);
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/societe/website.php b/htdocs/societe/website.php
index 69e8efd02e1..ff3108d2427 100644
--- a/htdocs/societe/website.php
+++ b/htdocs/societe/website.php
@@ -99,14 +99,8 @@ foreach ($objectwebsiteaccount->fields as $key => $val)
}
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php
index 5fc27d63a8c..d74f2fbdec3 100644
--- a/htdocs/supplier_proposal/list.php
+++ b/htdocs/supplier_proposal/list.php
@@ -165,14 +165,8 @@ $arrayfields = array(
'sp.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000),
);
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0)
-{
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val)
- {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/htdocs/zapier/hook_list.php b/htdocs/zapier/hook_list.php
index 59432aea44b..93461517107 100644
--- a/htdocs/zapier/hook_list.php
+++ b/htdocs/zapier/hook_list.php
@@ -112,12 +112,8 @@ foreach ($object->fields as $key => $val) {
if (!empty($val['visible'])) $arrayfields['t.'.$key] = array('label'=>$val['label'], 'checked'=>(($val['visible'] < 0) ? 0 : 1), 'enabled'=>$val['enabled'], 'position'=>$val['position']);
}
// Extra fields
-if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label']) > 0) {
- foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
- if (!empty($extrafields->attributes[$object->table_element]['list'][$key]))
- $arrayfields["ef.".$key] = array('label'=>$extrafields->attributes[$object->table_element]['label'][$key], 'checked'=>(($extrafields->attributes[$object->table_element]['list'][$key] < 0) ? 0 : 1), 'position'=>$extrafields->attributes[$object->table_element]['pos'][$key], 'enabled'=>(abs($extrafields->attributes[$object->table_element]['list'][$key]) != 3 && $extrafields->attributes[$object->table_element]['perms'][$key]));
- }
-}
+include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
+
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
diff --git a/test/phpunit/RestAPIUserTest.php b/test/phpunit/RestAPIUserTest.php
index a937bdbd9f8..2bce51e2a05 100644
--- a/test/phpunit/RestAPIUserTest.php
+++ b/test/phpunit/RestAPIUserTest.php
@@ -130,7 +130,7 @@ class RestAPIUserTest extends PHPUnit\Framework\TestCase
print __METHOD__." curl_error_no: ".$result['curl_error_no']."\n";
$this->assertEquals($result['curl_error_no'], '');
$object=json_decode($result['content'], true);
- $this->assertNotNull($object, "Parsing of json result must no be null");
+ $this->assertNotNull($object, "Parsing of json result must not be null");
$this->assertEquals('200', $object['success']['code']);
$this->api_key = $object['success']['token'];