36require_once DOL_DOCUMENT_ROOT .
'/core/class/fieldinfos.class.php';
37require_once DOL_DOCUMENT_ROOT .
'/core/class/fields/commonfield.class.php';
58 public $errors = array();
63 public $validateFieldsErrors = array();
68 public $fieldsPath =
'/core/class/fields/';
73 public static $fieldClasses = array();
78 public static $fieldInfos = array();
83 public $expand_display = array();
133 $this->errors = array();
148 global $hookmanager, $langs;
152 if (!isset(self::$fieldClasses[$type])) {
160 $hookmanager->executeHooks(
'getFieldClass', $parameters, $this);
162 if (isset($field) && is_object($field)) {
163 self::$fieldClasses[$type] = $field;
165 $filename = strtolower($type) .
'field.class.php';
166 $classname = ucfirst($type) .
'Field';
170 if (!class_exists($classname)) {
171 @include_once DOL_DOCUMENT_ROOT .
'/core/class/fields/' . $filename;
174 if (class_exists($classname)) {
175 self::$fieldClasses[$type] =
new $classname($this->db);
177 $langs->load(
"errors");
178 $this->errors[] = $langs->trans(
'ErrorFieldClassNotFoundForClassName', $classname, $type);
184 $field = self::$fieldClasses[$type];
185 $field->clearErrors();
198 return self::$fieldClasses;
209 $this->errors = array();
220 return $this->error . (is_array($this->errors) ? (!empty($this->error) ? $separator :
'') . implode($separator, $this->errors) :
'');
232 unset($this->validateFieldsErrors[$fieldKey]);
246 $msg = $langs->trans(
"UnknownError");
249 $this->error = $this->validateFieldsErrors[$fieldKey] = $msg;
260 if (!empty($this->validateFieldsErrors[$fieldKey])) {
261 return $this->validateFieldsErrors[$fieldKey];
276 if (!empty($fieldValidationErrorMsg) && function_exists(
'getFieldErrorIcon')) {
294 public function getAllFieldsInfos(&
$object, &$extrafields =
null, $mode =
'view', $nbColumn = 2, $breakKeys = array(), $params = array())
296 global $hookmanager, $langs;
308 $fields = array_merge($fields, $fields2);
318 $hiddenFields = array();
319 $columns[$idxColumn] = array();
320 $nbVisibleFields = 0;
321 foreach ($fields as $field) {
322 if ($field->visible) {
326 $nbFieldsByColumn = ceil($nbVisibleFields / $nbColumn);
327 $breakKey = $breakKeys[$idxColumn] ??
'';
329 foreach ($fields as $key => $field) {
330 if ($idxColumn < $nbColumn && ((!empty($breakKey) && $key == $breakKey) || (empty($breakKey) && $idxField == $nbFieldsByColumn))) {
333 $columns[$idxColumn] = array();
336 if ($field->visible) {
337 if ($field->type !=
'separate') {
342 $columns[$idxColumn][$key] = $field;
344 $hiddenFields[$key] = $field;
349 for ($idxColumn = 1; $idxColumn <= $nbColumn; $idxColumn++) {
350 if (!isset($columns[$idxColumn])) {
351 $columns[$idxColumn] = array();
357 'extrafields' => &$extrafields,
359 'nbColumn' => $nbColumn,
360 'breakKeys' => $breakKeys,
362 'columns' => &$columns,
363 'hiddenFields' => &$hiddenFields,
366 $hookmanager->executeHooks(
'getFieldInfosFromObjectField', $parameters, $this);
369 'columns' => $columns,
370 'hiddenFields' => $hiddenFields,
390 $keyPrefix =
getDolGlobalInt(
'MAIN_FIELDS_NEW_OBJECT_KEY_PREFIX') ?
'object_' :
'';
391 foreach (
$object->fields as $key => $field) {
393 $fields[$keyPrefix . $key] = $fieldInfos;
401 'fields' => &$fields,
404 $hookmanager->executeHooks(
'getAllObjectFieldsInfos', $parameters, $this);
424 if (isset($extrafields->attributes[
$object->table_element]) && is_array($extrafields->attributes[
$object->table_element])) {
425 if (isset($extrafields->attributes[
$object->table_element][
'label']) && is_array($extrafields->attributes[
$object->table_element][
'label'])) {
426 $keyPrefix =
'options_';
427 foreach ($extrafields->attributes[
$object->table_element][
'label'] as $key => $label) {
429 $fields[$keyPrefix . $key] = $fieldInfos;
436 'extrafields' => &$extrafields,
439 'fields' => &$fields,
442 $hookmanager->executeHooks(
'getAllExtraFieldsInfos', $parameters, $this);
461 $patternObjectPrefix =
getDolGlobalInt(
'MAIN_FIELDS_NEW_OBJECT_KEY_PREFIX') ?
'object_' :
'';
463 if (preg_match(
'/^options_(.*)/i', $key, $matches)) {
464 $fieldKey = $matches[1];
466 } elseif (preg_match(
'/^' . $patternObjectPrefix .
'(.*)/i', $key, $matches)) {
467 $fieldKey = $matches[2];
487 if (!isset(
$object->fields[$key])) {
491 if (isset(self::$fieldInfos[
$object->element][$mode][
'object'][$key])) {
492 return self::$fieldInfos[
$object->element][$mode][
'object'][$key];
495 $attributes =
$object->fields[$key];
498 $fieldInfos->fieldType = FieldInfos::FIELD_TYPE_OBJECT;
499 $fieldInfos->originType = $attributes[
'type'] ??
'';
500 $fieldInfos->size = $attributes[
'length'] ??
'';
501 $fieldInfos->label = $attributes[
'label'] ??
'';
502 $fieldInfos->langFile = $attributes[
'langfile'] ??
'';
503 $fieldInfos->sqlAlias = $attributes[
'alias'] ??
null;
504 $fieldInfos->picto = $attributes[
'picto'] ??
'';
505 $fieldInfos->position = $attributes[
'position'] ?? 0;
506 $fieldInfos->required = ($attributes[
'notnull'] ?? 0) > 0;
507 $fieldInfos->alwaysEditable = !empty($attributes[
'alwayseditable']);
508 $fieldInfos->defaultValue = $attributes[
'default'] ??
'';
509 $fieldInfos->css = $attributes[
'css'] ??
'';
510 $fieldInfos->viewCss = $attributes[
'cssview'] ??
'';
511 $fieldInfos->listCss = $attributes[
'csslist'] ??
'';
512 $fieldInfos->inputPlaceholder = $attributes[
'placeholder'] ??
'';
513 $fieldInfos->help = $attributes[
'help'] ??
'';
514 $fieldInfos->listHelp = $attributes[
'helplist'] ??
'';
515 $fieldInfos->showOnComboBox = !empty($attributes[
'showoncombobox']);
516 $fieldInfos->inputDisabled = !empty($attributes[
'disabled']);
517 $fieldInfos->inputAutofocus = !empty($attributes[
'autofocusoncreate']) && $mode ==
'create';
518 $fieldInfos->comment = $attributes[
'comment'] ??
'';
519 $fieldInfos->listTotalizable = !empty($attributes[
'isameasure']) && $attributes[
'isameasure'] == 1;
520 $fieldInfos->validateField = !empty($attributes[
'validate']);
521 $fieldInfos->copyToClipboard = $attributes[
'copytoclipboard'] ?? 0;
522 $fieldInfos->tdCss = $attributes[
'tdcss'] ??
'';
523 $fieldInfos->multiInput = !empty($attributes[
'multiinput']);
524 $fieldInfos->nameInClass = $attributes[
'nameinclass'] ?? $key;
525 $fieldInfos->nameInTable = $attributes[
'nameintable'] ?? $key;
526 $fieldInfos->getNameUrlParams = $attributes[
'get_name_url_params'] ??
null;
527 $fieldInfos->showOnHeader = !empty($attributes[
'showonheader']);
530 if ($fieldInfos->nameInClass ==
'rowid') {
531 $fieldInfos->nameInClass =
'id';
534 $enabled = $attributes[
'enabled'] ??
'1';
535 $visibility = $attributes[
'visible'] ??
'1';
536 $perms = empty($attributes[
'noteditable']) ?
'1' :
'0';
541 if (!empty($attributes[
'arrayofkeyval']) && is_array($attributes[
'arrayofkeyval'])) {
542 $fieldInfos->options = $attributes[
'arrayofkeyval'];
544 if (!$fieldInfos->multiInput) {
545 $fieldInfos->type = (($fieldInfos->type ==
'checkbox') ? $fieldInfos->type :
'select');
553 'fieldInfos' => &$fieldInfos,
556 $hookmanager->executeHooks(
'getFieldInfosFromObjectField', $parameters, $this);
558 self::$fieldInfos[
$object->element][$mode][
'object'][$key] = $fieldInfos;
576 if (!isset($extrafields->attributes[
$object->table_element][
'label'][$key])) {
580 if (isset(self::$fieldInfos[
$object->element][$mode][
'extraField'][$key])) {
581 return self::$fieldInfos[
$object->element][$mode][
'extraField'][$key];
584 $attributes = $extrafields->attributes[
$object->table_element];
587 $fieldInfos->fieldType = FieldInfos::FIELD_TYPE_EXTRA_FIELD;
588 $fieldInfos->originType = $attributes[
'type'][$key] ??
'';
589 $fieldInfos->label = $attributes[
'label'][$key] ??
'';
590 $fieldInfos->position = $attributes[
'pos'][$key] ?? 0;
591 $fieldInfos->required = !empty($attributes[
'required'][$key]);
592 $fieldInfos->defaultValue = $attributes[
'default'][$key] ??
'';
593 $fieldInfos->css = $attributes[
'css'][$key] ??
'';
594 $fieldInfos->help = $attributes[
'help'][$key] ??
'';
595 $fieldInfos->size = $attributes[
'size'][$key] ??
'';
596 $fieldInfos->computed = $attributes[
'computed'][$key] ??
'';
597 $fieldInfos->unique = !empty($attributes[
'unique'][$key]);
598 $fieldInfos->alwaysEditable = !empty($attributes[
'alwayseditable'][$key]);
599 $fieldInfos->emptyOnClone = !empty($attributes[
'emptyonclone'][$key]);
600 $fieldInfos->langFile = $attributes[
'langfile'][$key] ??
'';
601 $fieldInfos->printable = !empty($attributes[
'printable'][$key]);
602 $fieldInfos->showintooltip = !empty($attributes[
'showintooltip'][$key]);
603 $fieldInfos->aiPrompt = $attributes[
'aiprompt'][$key] ??
'';
604 $fieldInfos->viewCss = $attributes[
'cssview'][$key] ??
'';
605 $fieldInfos->listCss = $attributes[
'csslist'][$key] ??
'';
606 $fieldInfos->listTotalizable = !empty($attributes[
'totalizable'][$key]);
607 $fieldInfos->options = array_diff_assoc($attributes[
'param'][$key][
'options'] ?? array(), array(
'' =>
null));
608 $fieldInfos->nameInClass = $key;
609 $fieldInfos->nameInTable = $key;
611 $enabled = $attributes[
'enabled'][$key] ??
'1';
612 $visibility = $attributes[
'list'][$key] ??
'1';
613 $perms = $attributes[
'perms'][$key] ??
null;
619 'extraFields' => &$extrafields,
622 'fieldInfos' => &$fieldInfos,
625 $hookmanager->executeHooks(
'getFieldInfosFromExtraField', $parameters, $this);
627 self::$fieldInfos[
$object->element][$mode][
'extraField'][$key] = $fieldInfos;
645 public function setCommonFieldInfos(&$fieldInfos, &
$object, &$extrafields, $key, $mode =
'view', $enabled =
'1', $visibility =
'', $perms =
null, $params = array())
649 $fieldInfos->object = &
$object;
650 $fieldInfos->mode = preg_replace(
'/[^a-z0-9_]/i',
'', $mode);
651 $fieldInfos->type = $fieldInfos->originType;
652 $fieldInfos->key = $key;
653 $fieldInfos->otherParams = $params;
655 if (preg_match(
'/^(integer|link):(.*):(.*):(.*):(.*)/i', $fieldInfos->originType, $reg)) {
656 $fieldInfos->options = array($reg[2] .
':' . $reg[3] .
':' . $reg[4] .
':' . $reg[5] =>
'N');
657 $fieldInfos->type =
'link';
658 } elseif (preg_match(
'/^(integer|link):(.*):(.*):(.*)/i', $fieldInfos->originType, $reg)) {
659 $fieldInfos->options = array($reg[2] .
':' . $reg[3] .
':' . $reg[4] =>
'N');
660 $fieldInfos->type =
'link';
661 } elseif (preg_match(
'/^(integer|link):(.*):(.*)/i', $fieldInfos->originType, $reg)) {
662 $fieldInfos->options = array($reg[2] .
':' . $reg[3] . ($reg[1] ==
'User' ?
':#getnomurlparam1=-1' :
'') =>
'N');
663 $fieldInfos->type =
'link';
664 } elseif (preg_match(
'/^(sellist):(.*):(.*):(.*):(.*)/i', $fieldInfos->originType, $reg)) {
665 $fieldInfos->options = array($reg[2] .
':' . $reg[3] .
':' . $reg[4] .
':' . $reg[5] =>
'N');
666 $fieldInfos->type =
'sellist';
667 } elseif (preg_match(
'/^(sellist):(.*):(.*):(.*)/i', $fieldInfos->originType, $reg)) {
668 $fieldInfos->options = array($reg[2] .
':' . $reg[3] .
':' . $reg[4] =>
'N');
669 $fieldInfos->type =
'sellist';
670 } elseif (preg_match(
'/^(sellist):(.*):(.*)/i', $fieldInfos->originType, $reg)) {
671 $fieldInfos->options = array($reg[2] .
':' . $reg[3] =>
'N');
672 $fieldInfos->type =
'sellist';
673 } elseif (preg_match(
'/^chkbxlst:(.*)/i', $fieldInfos->originType, $reg)) {
674 $fieldInfos->options = array($reg[1] =>
'N');
675 $fieldInfos->type =
'chkbxlst';
676 } elseif (preg_match(
'/varchar\((\d+)\)/', $fieldInfos->originType, $reg)) {
677 $fieldInfos->options = array();
678 $fieldInfos->type =
'varchar';
679 $fieldInfos->size = $reg[1];
680 $fieldInfos->maxLength = (int) $reg[1];
681 } elseif (preg_match(
'/varchar/', $fieldInfos->originType)) {
682 $fieldInfos->options = array();
683 $fieldInfos->type =
'varchar';
684 } elseif (preg_match(
'/stars\((\d+)\)/', $fieldInfos->originType, $reg)) {
685 $fieldInfos->options = array();
686 $fieldInfos->type =
'stars';
687 $fieldInfos->size = $reg[1];
688 } elseif (preg_match(
'/integer/', $fieldInfos->originType)) {
689 $fieldInfos->type =
'int';
690 } elseif ($fieldInfos->originType ==
'mail') {
691 $fieldInfos->type =
'email';
692 } elseif (preg_match(
'/^(text):(.*)/i', $fieldInfos->originType, $reg)) {
693 $fieldInfos->type =
'text';
694 $fieldInfos->getPostCheck = $reg[2];
695 } elseif (preg_match(
'/^(html):(.*)/i', $fieldInfos->originType, $reg)) {
696 $fieldInfos->type =
'html';
697 $fieldInfos->getPostCheck = $reg[2];
698 } elseif (preg_match(
'/^double\(([0-9]+,[0-9]+)\)/', $fieldInfos->originType, $reg)) {
699 $fieldInfos->type =
'double';
700 $fieldInfos->size = $reg[1];
704 $visibility = (int)
dol_eval((
string) $visibility, 1, 1,
'2');
705 $absVisibility = abs($visibility);
706 $enabled = (int)
dol_eval((
string) $enabled, 1, 1,
'2');
707 $fieldInfos->visible =
true;
708 if (empty($visibility) ||
710 ($mode ==
'create' && !in_array($absVisibility, array(1, 3, 6))) ||
711 ($mode ==
'edit' && !in_array($absVisibility, array(1, 3, 4))) ||
712 ($mode ==
'view' && (!in_array($absVisibility, array(1, 3, 4, 5)) || $fieldInfos->showOnHeader)) ||
713 ($mode ==
'list' && $absVisibility == 3)
715 $fieldInfos->visible =
false;
720 $perms = (int)
dol_eval((
string) $perms, 1, 1,
'2');
723 $mappingKeyForPerm = array(
724 'fichinter' =>
'ficheinter',
725 'product' =>
'produit',
726 'project' =>
'projet',
727 'order_supplier' =>
'supplier_order',
728 'invoice_supplier' =>
'supplier_invoice',
729 'shipping' =>
'expedition',
730 'productlot' =>
'stock',
731 'facturerec' =>
'facture',
733 'salary' =>
'salaries',
734 'member' =>
'adherent',
736 $keyForPerm = $mappingKeyForPerm[
$object->element] ??
$object->element;
739 if (isset($user->rights->$keyForPerm)) {
740 $perms = $user->hasRight($keyForPerm,
'creer') || $user->hasRight($keyForPerm,
'create') || $user->hasRight($keyForPerm,
'write');
743 $perms = $user->hasRight(
'fournisseur',
'commande',
'creer');
745 $perms = $user->hasRight(
'fournisseur',
'facture',
'creer');
746 } elseif (
$object->element ==
'delivery') {
747 $perms = $user->hasRight(
'expedition',
'delivery',
'creer');
748 } elseif (
$object->element ==
'contact') {
749 $perms = $user->hasRight(
'societe',
'contact',
'creer');
754 if ($mode ==
'view' && !$isDraft && !$fieldInfos->alwaysEditable) {
758 if ($mode ==
'view' && $absVisibility == 5) {
762 if (!empty($fieldInfos->computed)) {
765 $fieldInfos->editable = !empty($perms);
768 $fieldInfos->listChecked = $mode ==
'list' && $visibility > 0;
787 return $result > 0 && $result2 > 0 ? 1 : -1;
805 foreach ($fields as $fieldKey => $fieldInfos) {
807 $key = $fieldInfos->nameInClass ?? $fieldInfos->key;
808 if ($fieldInfos->visible) {
814 if (!$fieldInfos->visible) {
822 return $error ? -1 : 1;
841 foreach ($fields as $fieldKey => $fieldInfos) {
843 $key =
'options_' . ($fieldInfos->nameInClass ?? $fieldInfos->key);
844 if ($fieldInfos->visible) {
850 if (!$fieldInfos->visible) {
858 return $error ? -1 : 1;
877 'fieldInfos' => &$fieldInfos,
879 'keyPrefix' => $keyPrefix,
880 'keySuffix' => $keySuffix,
883 $reshook = $hookmanager->executeHooks(
'verifyPostFieldValue', $parameters, $this);
885 return (
bool) $hookmanager->resPrint;
892 $result = $field->verifyPostFieldValue($fieldInfos, $key, $keyPrefix, $keySuffix);
917 'fieldInfos' => &$fieldInfos,
922 $reshook = $hookmanager->executeHooks(
'verifyFieldValue', $parameters, $this);
924 return (
bool) $hookmanager->resPrint;
931 $result = $field->verifyFieldValue($fieldInfos, $key, $value);
951 public function getPostFieldValue($fieldInfos, $key, $defaultValue =
null, $keyPrefix =
'', $keySuffix =
'')
957 'fieldInfos' => &$fieldInfos,
960 'keyPrefix' => $keyPrefix,
961 'keySuffix' => $keySuffix,
964 $reshook = $hookmanager->executeHooks(
'getPostFieldValue', $parameters, $this);
972 $value = $field->getPostFieldValue($fieldInfos, $key, $defaultValue, $keyPrefix, $keySuffix);
974 $value = $defaultValue;
996 'fieldInfos' => &$fieldInfos,
999 'keyPrefix' => $keyPrefix,
1000 'keySuffix' => $keySuffix,
1003 $reshook = $hookmanager->executeHooks(
'getPostSearchFieldValue', $parameters, $this);
1010 if (isset($field)) {
1011 $value = $field->getPostSearchFieldValue($fieldInfos, $key, $defaultValue, $keyPrefix, $keySuffix);
1013 $value = $defaultValue;
1032 public function printInputSearchField($fieldInfos, $key, $value, $keyPrefix =
'', $keySuffix =
'', $moreCss =
'', $moreAttrib =
'', $noNewButton = 0)
1034 global $hookmanager;
1036 $overwrite_before =
'';
1037 $overwrite_content =
'';
1038 $overwrite_after =
'';
1040 $parameters = array(
1041 'fieldInfos' => &$fieldInfos,
1044 'keyPrefix' => $keyPrefix,
1045 'keySuffix' => $keySuffix,
1046 'moreCss' => $moreCss,
1047 'moreAttrib' => $moreAttrib,
1048 'noNewButton' => $noNewButton,
1049 'overwrite_before' => &$overwrite_before,
1050 'overwrite_content' => &$overwrite_content,
1051 'overwrite_after' => &$overwrite_after,
1054 $hookmanager->executeHooks(
'printInputSearchField', $parameters, $this);
1056 if (!empty($fieldInfos->computed)) {
1060 $out = $overwrite_before;
1061 if (empty($overwrite_content)) {
1064 if (isset($field)) {
1065 $moreCss = $field->getInputCss($fieldInfos, $moreCss);
1067 $out .= $field->printInputSearchField($fieldInfos, $key, $value, $keyPrefix, $keySuffix, $moreCss, $moreAttrib);
1072 $out .= $overwrite_content;
1074 $out .= $overwrite_after;
1092 public function printInputField($fieldInfos, $key, $value, $keyPrefix =
'', $keySuffix =
'', $moreCss =
'', $moreAttrib =
'', $noNewButton = 0)
1094 global $hookmanager, $langs;
1096 $overwrite_before =
'';
1097 $overwrite_content =
'';
1098 $overwrite_after =
'';
1100 $parameters = array(
1101 'fieldInfos' => &$fieldInfos,
1104 'keyPrefix' => $keyPrefix,
1105 'keySuffix' => $keySuffix,
1106 'moreCss' => $moreCss,
1107 'moreAttrib' => $moreAttrib,
1108 'noNewButton' => $noNewButton,
1109 'overwrite_before' => &$overwrite_before,
1110 'overwrite_content' => &$overwrite_content,
1111 'overwrite_after' => &$overwrite_after,
1114 $hookmanager->executeHooks(
'printInputField', $parameters, $this);
1116 if (!empty($fieldInfos->computed)) {
1117 return '<span class="opacitymedium">' . $langs->trans(
"AutomaticallyCalculated") .
'</span>';
1120 if (!$fieldInfos->editable) {
1121 return $this->
printOutputField($fieldInfos, $key, $value, $keyPrefix, $keySuffix, $moreCss, $moreAttrib);
1127 $out = $overwrite_before;
1128 if (empty($overwrite_content)) {
1131 if (isset($field)) {
1132 $moreCss = $field->getInputCss($fieldInfos, $moreCss);
1135 if (!empty($fieldValidationErrorMsg)) {
1136 $moreCss .=
' --error';
1138 $moreCss .=
' --success';
1141 $out .= $field->printInputField($fieldInfos, $key, $value, $keyPrefix, $keySuffix, $moreCss, $moreAttrib);
1146 $out .= $overwrite_content;
1148 if (empty($overwrite_after)) {
1152 $out .= $overwrite_after;
1170 public function printOutputField($fieldInfos, $key, $value, $keyPrefix =
'', $keySuffix =
'', $moreCss =
'', $moreAttrib =
'')
1172 global $hookmanager;
1174 $overwrite_before =
'';
1175 $overwrite_content =
'';
1176 $overwrite_after =
'';
1178 $parameters = array(
1179 'fieldInfos' => &$fieldInfos,
1182 'keyPrefix' => $keyPrefix,
1183 'keySuffix' => $keySuffix,
1184 'moreCss' => $moreCss,
1185 'moreAttrib' => $moreAttrib,
1186 'overwrite_before' => &$overwrite_before,
1187 'overwrite_content' => &$overwrite_content,
1188 'overwrite_after' => &$overwrite_after,
1191 $hookmanager->executeHooks(
'printOutputField', $parameters, $this);
1193 $out = $overwrite_before;
1194 if (empty($overwrite_content)) {
1197 if (isset($field)) {
1198 $moreCss = $field->getInputCss($fieldInfos, $moreCss);
1200 $out .= $field->printOutputField($fieldInfos, $key, $value, $keyPrefix, $keySuffix, $moreCss, $moreAttrib);
1205 $out .= $overwrite_content;
1207 $out .= $overwrite_after;
1224 global
$conf, $langs;
if(! $sortfield) if(! $sortorder) $object
static setForm(&$form)
Set form used for print the field.
Class to stock field infos.
getAllFields()
Get all fields handler available.
getFieldsInfos($key, &$object, &$extrafields=null, $mode='view', $params=array())
Get list of fields infos for the provided mode into X columns.
setObjectFieldValuesFromPost(&$object, $keyPrefix='', $keySuffix='', $mode='view', $params=array())
Set all object values of the object from POST.
verifyPostFieldValue($fieldInfos, $key, $keyPrefix='', $keySuffix='')
Verify if the field value is valid.
getAllExtraFieldsInfos(&$object, &$extrafields=null, $mode='view', $params=array())
Get list of extra fields infos.
getAllFieldsInfos(&$object, &$extrafields=null, $mode='view', $nbColumn=2, $breakKeys=array(), $params=array())
Get list of fields infos for the provided mode into X columns.
getFieldInfosFromObjectField(&$object, $key, $mode='view', $params=array())
Get field infos from object field infos.
errorsToString($separator=', ')
Method to output saved errors.
getFieldClass($type)
Get field handler for the provided type.
getPostSearchFieldValue($fieldInfos, $key, $defaultValue=null, $keyPrefix='', $keySuffix='')
Get search field value from GET/POST.
setExtraFieldValuesFromPost(&$object, &$extrafields, $keyPrefix='', $keySuffix='', $mode='view', $params=array())
Set all extra field values of the object from POST.
getAllObjectFieldsInfos(&$object, $mode='view', $params=array())
Get list of object fields infos.
printOutputField($fieldInfos, $key, $value, $keyPrefix='', $keySuffix='', $moreCss='', $moreAttrib='')
Return HTML string to show a field into a page.
verifyFieldValue($fieldInfos, $key, $value)
Verify if the field value is valid.
getFieldInfosFromExtraField(&$object, &$extrafields, $key, $mode='view', $params=array())
Get field infos from extra field infos.
setFieldError($fieldKey, $msg='')
set validation error message a field
setCommonFieldInfos(&$fieldInfos, &$object, &$extrafields, $key, $mode='view', $enabled='1', $visibility='', $perms=null, $params=array())
Set common field infos.
setFieldValuesFromPost(&$object, &$extrafields, $keyPrefix='', $keySuffix='', $mode='view', $params=array())
Set all values of the object (with extra field) from POST.
clearErrors()
clear errors
printSeparator($key, &$object, $colspan=2, $display_type='card', $mode='view')
Return HTML string to print separator field.
getPostFieldValue($fieldInfos, $key, $defaultValue=null, $keyPrefix='', $keySuffix='')
Get field value from GET/POST.
getFieldErrorIcon($fieldValidationErrorMsg)
get field error icon
__construct($db, $form=null)
Constructor.
printInputField($fieldInfos, $key, $value, $keyPrefix='', $keySuffix='', $moreCss='', $moreAttrib='', $noNewButton=0)
Return HTML string to put an input field into a page.
clearFieldError($fieldKey)
clear validation message result for a field
printInputSearchField($fieldInfos, $key, $value, $keyPrefix='', $keySuffix='', $moreCss='', $moreAttrib='', $noNewButton=0)
Return HTML string to put an input search field into a page.
getFieldError($fieldKey)
get field error message
dol_eval($s, $returnvalue=1, $hideerrors=1, $onlysimplestring='1')
Replace eval function to add more security.
getDolGlobalInt($key, $default=0)
Return a Dolibarr global constant int value.
dol_sort_array(&$array, $index, $order='asc', $natsort=0, $case_sensitive=0, $keepindex=0)
Advanced sort array by the value of a given key, which produces ascending (default) or descending out...
if(!function_exists( 'dol_getprefix')) dol_include_once($relpath, $classname='')
Make an include_once using default root and alternate root if it fails.
getDolGlobalString($key, $default='')
Return a Dolibarr global constant string value.