35require_once DOL_DOCUMENT_ROOT .
'/core/class/fieldinfos.class.php';
36require_once DOL_DOCUMENT_ROOT .
'/core/class/fields/commonfield.class.php';
57 public $errors = array();
62 public $validateFieldsErrors = array();
67 public $fieldsPath =
'/core/class/fields/';
72 public static $fieldClasses = array();
77 public static $fieldInfos = array();
82 public $expand_display = array();
132 $this->errors = array();
147 global $hookmanager, $langs;
151 if (!isset(self::$fieldClasses[$type])) {
159 $hookmanager->executeHooks(
'getFieldClass', $parameters, $this);
161 if (isset($field) && is_object($field)) {
162 self::$fieldClasses[$type] = $field;
164 $filename = strtolower($type) .
'field.class.php';
165 $classname = ucfirst($type) .
'Field';
169 if (!class_exists($classname)) {
170 @include_once DOL_DOCUMENT_ROOT .
'/core/class/fields/' . $filename;
173 if (class_exists($classname)) {
174 self::$fieldClasses[$type] =
new $classname($this->db);
176 $langs->load(
"errors");
177 $this->errors[] = $langs->trans(
'ErrorFieldClassNotFoundForClassName', $classname, $type);
183 $field = self::$fieldClasses[$type];
184 $field->clearErrors();
197 return self::$fieldClasses;
208 $this->errors = array();
219 return $this->error . (is_array($this->errors) ? (!empty($this->error) ? $separator :
'') . implode($separator, $this->errors) :
'');
231 unset($this->validateFieldsErrors[$fieldKey]);
245 $msg = $langs->trans(
"UnknownError");
248 $this->error = $this->validateFieldsErrors[$fieldKey] = $msg;
259 if (!empty($this->validateFieldsErrors[$fieldKey])) {
260 return $this->validateFieldsErrors[$fieldKey];
275 if (!empty($fieldValidationErrorMsg) && function_exists(
'getFieldErrorIcon')) {
293 public function getAllFieldsInfos(&
$object, &$extrafields =
null, $mode =
'view', $nbColumn = 2, $breakKeys = array(), $params = array())
295 global $hookmanager, $langs;
307 $fields = array_merge($fields, $fields2);
317 $hiddenFields = array();
318 $columns[$idxColumn] = array();
319 $nbVisibleFields = 0;
320 foreach ($fields as $field) {
321 if ($field->visible) {
325 $nbFieldsByColumn = ceil($nbVisibleFields / $nbColumn);
326 $breakKey = $breakKeys[$idxColumn] ??
'';
328 foreach ($fields as $key => $field) {
329 if ($idxColumn < $nbColumn && ((!empty($breakKey) && $key == $breakKey) || (empty($breakKey) && $idxField == $nbFieldsByColumn))) {
332 $columns[$idxColumn] = array();
335 if ($field->visible) {
336 if ($field->type !=
'separate') {
341 $columns[$idxColumn][$key] = $field;
343 $hiddenFields[$key] = $field;
348 for ($idxColumn = 1; $idxColumn <= $nbColumn; $idxColumn++) {
349 if (!isset($columns[$idxColumn])) {
350 $columns[$idxColumn] = array();
356 'extrafields' => &$extrafields,
358 'nbColumn' => $nbColumn,
359 'breakKeys' => $breakKeys,
361 'columns' => &$columns,
362 'hiddenFields' => &$hiddenFields,
365 $hookmanager->executeHooks(
'getFieldInfosFromObjectField', $parameters, $this);
368 'columns' => $columns,
369 'hiddenFields' => $hiddenFields,
389 $keyPrefix =
getDolGlobalInt(
'MAIN_FIELDS_NEW_OBJECT_KEY_PREFIX') ?
'object_' :
'';
390 foreach (
$object->fields as $key => $field) {
392 $fields[$keyPrefix . $key] = $fieldInfos;
400 'fields' => &$fields,
403 $hookmanager->executeHooks(
'getAllObjectFieldsInfos', $parameters, $this);
423 if (isset($extrafields->attributes[
$object->table_element]) && is_array($extrafields->attributes[
$object->table_element])) {
424 if (isset($extrafields->attributes[
$object->table_element][
'label']) && is_array($extrafields->attributes[
$object->table_element][
'label'])) {
425 $keyPrefix =
'options_';
426 foreach ($extrafields->attributes[
$object->table_element][
'label'] as $key => $label) {
428 $fields[$keyPrefix . $key] = $fieldInfos;
435 'extrafields' => &$extrafields,
438 'fields' => &$fields,
441 $hookmanager->executeHooks(
'getAllExtraFieldsInfos', $parameters, $this);
460 $patternObjectPrefix =
getDolGlobalInt(
'MAIN_FIELDS_NEW_OBJECT_KEY_PREFIX') ?
'object_' :
'';
462 if (preg_match(
'/^options_(.*)/i', $key, $matches)) {
463 $fieldKey = $matches[1];
465 } elseif (preg_match(
'/^' . $patternObjectPrefix .
'(.*)/i', $key, $matches)) {
466 $fieldKey = $matches[2];
486 if (!isset(
$object->fields[$key])) {
490 if (isset(self::$fieldInfos[
$object->element][$mode][
'object'][$key])) {
491 return self::$fieldInfos[
$object->element][$mode][
'object'][$key];
494 $attributes =
$object->fields[$key];
497 $fieldInfos->fieldType = FieldInfos::FIELD_TYPE_OBJECT;
498 $fieldInfos->originType = $attributes[
'type'] ??
'';
499 $fieldInfos->size = $attributes[
'length'] ??
'';
500 $fieldInfos->label = $attributes[
'label'] ??
'';
501 $fieldInfos->langFile = $attributes[
'langfile'] ??
'';
502 $fieldInfos->sqlAlias = $attributes[
'alias'] ??
null;
503 $fieldInfos->picto = $attributes[
'picto'] ??
'';
504 $fieldInfos->position = $attributes[
'position'] ?? 0;
505 $fieldInfos->required = ($attributes[
'notnull'] ?? 0) > 0;
506 $fieldInfos->alwaysEditable = !empty($attributes[
'alwayseditable']);
507 $fieldInfos->defaultValue = $attributes[
'default'] ??
'';
508 $fieldInfos->css = $attributes[
'css'] ??
'';
509 $fieldInfos->viewCss = $attributes[
'cssview'] ??
'';
510 $fieldInfos->listCss = $attributes[
'csslist'] ??
'';
511 $fieldInfos->inputPlaceholder = $attributes[
'placeholder'] ??
'';
512 $fieldInfos->help = $attributes[
'help'] ??
'';
513 $fieldInfos->listHelp = $attributes[
'helplist'] ??
'';
514 $fieldInfos->showOnComboBox = !empty($attributes[
'showoncombobox']);
515 $fieldInfos->inputDisabled = !empty($attributes[
'disabled']);
516 $fieldInfos->inputAutofocus = !empty($attributes[
'autofocusoncreate']) && $mode ==
'create';
517 $fieldInfos->comment = $attributes[
'comment'] ??
'';
518 $fieldInfos->listTotalizable = !empty($attributes[
'isameasure']) && $attributes[
'isameasure'] == 1;
519 $fieldInfos->validateField = !empty($attributes[
'validate']);
520 $fieldInfos->copyToClipboard = $attributes[
'copytoclipboard'] ?? 0;
521 $fieldInfos->tdCss = $attributes[
'tdcss'] ??
'';
522 $fieldInfos->multiInput = !empty($attributes[
'multiinput']);
523 $fieldInfos->nameInClass = $attributes[
'nameinclass'] ?? $key;
524 $fieldInfos->nameInTable = $attributes[
'nameintable'] ?? $key;
525 $fieldInfos->getNameUrlParams = $attributes[
'get_name_url_params'] ??
null;
526 $fieldInfos->showOnHeader = !empty($attributes[
'showonheader']);
529 if ($fieldInfos->nameInClass ==
'rowid') {
530 $fieldInfos->nameInClass =
'id';
533 $enabled = $attributes[
'enabled'] ??
'1';
534 $visibility = $attributes[
'visible'] ??
'1';
535 $perms = empty($attributes[
'noteditable']) ?
'1' :
'0';
540 if (!empty($attributes[
'arrayofkeyval']) && is_array($attributes[
'arrayofkeyval'])) {
541 $fieldInfos->options = $attributes[
'arrayofkeyval'];
543 if (!$fieldInfos->multiInput) {
544 $fieldInfos->type = (($fieldInfos->type ==
'checkbox') ? $fieldInfos->type :
'select');
552 'fieldInfos' => &$fieldInfos,
555 $hookmanager->executeHooks(
'getFieldInfosFromObjectField', $parameters, $this);
557 self::$fieldInfos[
$object->element][$mode][
'object'][$key] = $fieldInfos;
575 if (!isset($extrafields->attributes[
$object->table_element][
'label'][$key])) {
579 if (isset(self::$fieldInfos[
$object->element][$mode][
'extraField'][$key])) {
580 return self::$fieldInfos[
$object->element][$mode][
'extraField'][$key];
583 $attributes = $extrafields->attributes[
$object->table_element];
586 $fieldInfos->fieldType = FieldInfos::FIELD_TYPE_EXTRA_FIELD;
587 $fieldInfos->originType = $attributes[
'type'][$key] ??
'';
588 $fieldInfos->label = $attributes[
'label'][$key] ??
'';
589 $fieldInfos->position = $attributes[
'pos'][$key] ?? 0;
590 $fieldInfos->required = !empty($attributes[
'required'][$key]);
591 $fieldInfos->defaultValue = $attributes[
'default'][$key] ??
'';
592 $fieldInfos->css = $attributes[
'css'][$key] ??
'';
593 $fieldInfos->help = $attributes[
'help'][$key] ??
'';
594 $fieldInfos->size = $attributes[
'size'][$key] ??
'';
595 $fieldInfos->computed = $attributes[
'computed'][$key] ??
'';
596 $fieldInfos->unique = !empty($attributes[
'unique'][$key]);
597 $fieldInfos->alwaysEditable = !empty($attributes[
'alwayseditable'][$key]);
598 $fieldInfos->emptyOnClone = !empty($attributes[
'emptyonclone'][$key]);
599 $fieldInfos->langFile = $attributes[
'langfile'][$key] ??
'';
600 $fieldInfos->printable = !empty($attributes[
'printable'][$key]);
601 $fieldInfos->aiPrompt = $attributes[
'aiprompt'][$key] ??
'';
602 $fieldInfos->viewCss = $attributes[
'cssview'][$key] ??
'';
603 $fieldInfos->listCss = $attributes[
'csslist'][$key] ??
'';
604 $fieldInfos->listTotalizable = !empty($attributes[
'totalizable'][$key]);
605 $fieldInfos->options = array_diff_assoc($attributes[
'param'][$key][
'options'] ?? array(), array(
'' =>
null));
606 $fieldInfos->nameInClass = $key;
607 $fieldInfos->nameInTable = $key;
609 $enabled = $attributes[
'enabled'][$key] ??
'1';
610 $visibility = $attributes[
'list'][$key] ??
'1';
611 $perms = $attributes[
'perms'][$key] ??
null;
617 'extraFields' => &$extrafields,
620 'fieldInfos' => &$fieldInfos,
623 $hookmanager->executeHooks(
'getFieldInfosFromExtraField', $parameters, $this);
625 self::$fieldInfos[
$object->element][$mode][
'extraField'][$key] = $fieldInfos;
643 public function setCommonFieldInfos(&$fieldInfos, &
$object, &$extrafields, $key, $mode =
'view', $enabled =
'1', $visibility =
'', $perms =
null, $params = array())
647 $fieldInfos->object = &
$object;
648 $fieldInfos->mode = preg_replace(
'/[^a-z0-9_]/i',
'', $mode);
649 $fieldInfos->type = $fieldInfos->originType;
650 $fieldInfos->key = $key;
651 $fieldInfos->otherParams = $params;
653 if (preg_match(
'/^(integer|link):(.*):(.*):(.*):(.*)/i', $fieldInfos->originType, $reg)) {
654 $fieldInfos->options = array($reg[2] .
':' . $reg[3] .
':' . $reg[4] .
':' . $reg[5] =>
'N');
655 $fieldInfos->type =
'link';
656 } elseif (preg_match(
'/^(integer|link):(.*):(.*):(.*)/i', $fieldInfos->originType, $reg)) {
657 $fieldInfos->options = array($reg[2] .
':' . $reg[3] .
':' . $reg[4] =>
'N');
658 $fieldInfos->type =
'link';
659 } elseif (preg_match(
'/^(integer|link):(.*):(.*)/i', $fieldInfos->originType, $reg)) {
660 $fieldInfos->options = array($reg[2] .
':' . $reg[3] . ($reg[1] ==
'User' ?
':#getnomurlparam1=-1' :
'') =>
'N');
661 $fieldInfos->type =
'link';
662 } elseif (preg_match(
'/^(sellist):(.*):(.*):(.*):(.*)/i', $fieldInfos->originType, $reg)) {
663 $fieldInfos->options = array($reg[2] .
':' . $reg[3] .
':' . $reg[4] .
':' . $reg[5] =>
'N');
664 $fieldInfos->type =
'sellist';
665 } elseif (preg_match(
'/^(sellist):(.*):(.*):(.*)/i', $fieldInfos->originType, $reg)) {
666 $fieldInfos->options = array($reg[2] .
':' . $reg[3] .
':' . $reg[4] =>
'N');
667 $fieldInfos->type =
'sellist';
668 } elseif (preg_match(
'/^(sellist):(.*):(.*)/i', $fieldInfos->originType, $reg)) {
669 $fieldInfos->options = array($reg[2] .
':' . $reg[3] =>
'N');
670 $fieldInfos->type =
'sellist';
671 } elseif (preg_match(
'/^chkbxlst:(.*)/i', $fieldInfos->originType, $reg)) {
672 $fieldInfos->options = array($reg[1] =>
'N');
673 $fieldInfos->type =
'chkbxlst';
674 } elseif (preg_match(
'/varchar\((\d+)\)/', $fieldInfos->originType, $reg)) {
675 $fieldInfos->options = array();
676 $fieldInfos->type =
'varchar';
677 $fieldInfos->size = $reg[1];
678 $fieldInfos->maxLength = (int) $reg[1];
679 } elseif (preg_match(
'/varchar/', $fieldInfos->originType)) {
680 $fieldInfos->options = array();
681 $fieldInfos->type =
'varchar';
682 } elseif (preg_match(
'/stars\((\d+)\)/', $fieldInfos->originType, $reg)) {
683 $fieldInfos->options = array();
684 $fieldInfos->type =
'stars';
685 $fieldInfos->size = $reg[1];
686 } elseif (preg_match(
'/integer/', $fieldInfos->originType)) {
687 $fieldInfos->type =
'int';
688 } elseif ($fieldInfos->originType ==
'mail') {
689 $fieldInfos->type =
'email';
690 } elseif (preg_match(
'/^(text):(.*)/i', $fieldInfos->originType, $reg)) {
691 $fieldInfos->type =
'text';
692 $fieldInfos->getPostCheck = $reg[2];
693 } elseif (preg_match(
'/^(html):(.*)/i', $fieldInfos->originType, $reg)) {
694 $fieldInfos->type =
'html';
695 $fieldInfos->getPostCheck = $reg[2];
696 } elseif (preg_match(
'/^double\(([0-9]+,[0-9]+)\)/', $fieldInfos->originType, $reg)) {
697 $fieldInfos->type =
'double';
698 $fieldInfos->size = $reg[1];
702 $visibility = (int)
dol_eval((
string) $visibility, 1, 1,
'2');
703 $absVisibility = abs($visibility);
704 $enabled = (int)
dol_eval((
string) $enabled, 1, 1,
'2');
705 $fieldInfos->visible =
true;
706 if (empty($visibility) ||
708 ($mode ==
'create' && !in_array($absVisibility, array(1, 3, 6))) ||
709 ($mode ==
'edit' && !in_array($absVisibility, array(1, 3, 4))) ||
710 ($mode ==
'view' && (!in_array($absVisibility, array(1, 3, 4, 5)) || $fieldInfos->showOnHeader)) ||
711 ($mode ==
'list' && $absVisibility == 3)
713 $fieldInfos->visible =
false;
718 $perms = (int)
dol_eval((
string) $perms, 1, 1,
'2');
721 $mappingKeyForPerm = array(
722 'fichinter' =>
'ficheinter',
723 'product' =>
'produit',
724 'project' =>
'projet',
725 'order_supplier' =>
'supplier_order',
726 'invoice_supplier' =>
'supplier_invoice',
727 'shipping' =>
'expedition',
728 'productlot' =>
'stock',
729 'facturerec' =>
'facture',
731 'salary' =>
'salaries',
732 'member' =>
'adherent',
734 $keyForPerm = $mappingKeyForPerm[
$object->element] ??
$object->element;
737 if (isset($user->rights->$keyForPerm)) {
738 $perms = $user->hasRight($keyForPerm,
'creer') || $user->hasRight($keyForPerm,
'create') || $user->hasRight($keyForPerm,
'write');
741 $perms = $user->hasRight(
'fournisseur',
'commande',
'creer');
743 $perms = $user->hasRight(
'fournisseur',
'facture',
'creer');
744 } elseif (
$object->element ==
'delivery') {
745 $perms = $user->hasRight(
'expedition',
'delivery',
'creer');
746 } elseif (
$object->element ==
'contact') {
747 $perms = $user->hasRight(
'societe',
'contact',
'creer');
752 if ($mode ==
'view' && !$isDraft && !$fieldInfos->alwaysEditable) {
756 if ($mode ==
'view' && $absVisibility == 5) {
760 if (!empty($fieldInfos->computed)) {
763 $fieldInfos->editable = !empty($perms);
766 $fieldInfos->listChecked = $mode ==
'list' && $visibility > 0;
785 return $result > 0 && $result2 > 0 ? 1 : -1;
803 foreach ($fields as $fieldKey => $fieldInfos) {
805 $key = $fieldInfos->nameInClass ?? $fieldInfos->key;
806 if ($fieldInfos->visible) {
812 if (!$fieldInfos->visible) {
820 return $error ? -1 : 1;
839 foreach ($fields as $fieldKey => $fieldInfos) {
841 $key =
'options_' . ($fieldInfos->nameInClass ?? $fieldInfos->key);
842 if ($fieldInfos->visible) {
848 if (!$fieldInfos->visible) {
856 return $error ? -1 : 1;
875 'fieldInfos' => &$fieldInfos,
877 'keyPrefix' => $keyPrefix,
878 'keySuffix' => $keySuffix,
881 $reshook = $hookmanager->executeHooks(
'verifyPostFieldValue', $parameters, $this);
883 return (
bool) $hookmanager->resPrint;
890 $result = $field->verifyPostFieldValue($fieldInfos, $key, $keyPrefix, $keySuffix);
915 'fieldInfos' => &$fieldInfos,
920 $reshook = $hookmanager->executeHooks(
'verifyFieldValue', $parameters, $this);
922 return (
bool) $hookmanager->resPrint;
929 $result = $field->verifyFieldValue($fieldInfos, $key, $value);
949 public function getPostFieldValue($fieldInfos, $key, $defaultValue =
null, $keyPrefix =
'', $keySuffix =
'')
955 'fieldInfos' => &$fieldInfos,
958 'keyPrefix' => $keyPrefix,
959 'keySuffix' => $keySuffix,
962 $reshook = $hookmanager->executeHooks(
'getPostFieldValue', $parameters, $this);
970 $value = $field->getPostFieldValue($fieldInfos, $key, $defaultValue, $keyPrefix, $keySuffix);
972 $value = $defaultValue;
994 'fieldInfos' => &$fieldInfos,
997 'keyPrefix' => $keyPrefix,
998 'keySuffix' => $keySuffix,
1001 $reshook = $hookmanager->executeHooks(
'getPostSearchFieldValue', $parameters, $this);
1008 if (isset($field)) {
1009 $value = $field->getPostSearchFieldValue($fieldInfos, $key, $defaultValue, $keyPrefix, $keySuffix);
1011 $value = $defaultValue;
1030 public function printInputSearchField($fieldInfos, $key, $value, $keyPrefix =
'', $keySuffix =
'', $moreCss =
'', $moreAttrib =
'', $noNewButton = 0)
1032 global $hookmanager;
1034 $overwrite_before =
'';
1035 $overwrite_content =
'';
1036 $overwrite_after =
'';
1038 $parameters = array(
1039 'fieldInfos' => &$fieldInfos,
1042 'keyPrefix' => $keyPrefix,
1043 'keySuffix' => $keySuffix,
1044 'moreCss' => $moreCss,
1045 'moreAttrib' => $moreAttrib,
1046 'noNewButton' => $noNewButton,
1047 'overwrite_before' => &$overwrite_before,
1048 'overwrite_content' => &$overwrite_content,
1049 'overwrite_after' => &$overwrite_after,
1052 $hookmanager->executeHooks(
'printInputSearchField', $parameters, $this);
1054 if (!empty($fieldInfos->computed)) {
1058 $out = $overwrite_before;
1059 if (empty($overwrite_content)) {
1062 if (isset($field)) {
1063 $moreCss = $field->getInputCss($fieldInfos, $moreCss);
1065 $out .= $field->printInputSearchField($fieldInfos, $key, $value, $keyPrefix, $keySuffix, $moreCss, $moreAttrib);
1070 $out .= $overwrite_content;
1072 $out .= $overwrite_after;
1090 public function printInputField($fieldInfos, $key, $value, $keyPrefix =
'', $keySuffix =
'', $moreCss =
'', $moreAttrib =
'', $noNewButton = 0)
1092 global $hookmanager, $langs;
1094 $overwrite_before =
'';
1095 $overwrite_content =
'';
1096 $overwrite_after =
'';
1098 $parameters = array(
1099 'fieldInfos' => &$fieldInfos,
1102 'keyPrefix' => $keyPrefix,
1103 'keySuffix' => $keySuffix,
1104 'moreCss' => $moreCss,
1105 'moreAttrib' => $moreAttrib,
1106 'noNewButton' => $noNewButton,
1107 'overwrite_before' => &$overwrite_before,
1108 'overwrite_content' => &$overwrite_content,
1109 'overwrite_after' => &$overwrite_after,
1112 $hookmanager->executeHooks(
'printInputField', $parameters, $this);
1114 if (!empty($fieldInfos->computed)) {
1115 return '<span class="opacitymedium">' . $langs->trans(
"AutomaticallyCalculated") .
'</span>';
1118 if (!$fieldInfos->editable) {
1119 return $this->
printOutputField($fieldInfos, $key, $value, $keyPrefix, $keySuffix, $moreCss, $moreAttrib);
1125 $out = $overwrite_before;
1126 if (empty($overwrite_content)) {
1129 if (isset($field)) {
1130 $moreCss = $field->getInputCss($fieldInfos, $moreCss);
1133 if (!empty($fieldValidationErrorMsg)) {
1134 $moreCss .=
' --error';
1136 $moreCss .=
' --success';
1139 $out .= $field->printInputField($fieldInfos, $key, $value, $keyPrefix, $keySuffix, $moreCss, $moreAttrib);
1144 $out .= $overwrite_content;
1146 if (empty($overwrite_after)) {
1150 $out .= $overwrite_after;
1168 public function printOutputField($fieldInfos, $key, $value, $keyPrefix =
'', $keySuffix =
'', $moreCss =
'', $moreAttrib =
'')
1170 global $hookmanager;
1172 $overwrite_before =
'';
1173 $overwrite_content =
'';
1174 $overwrite_after =
'';
1176 $parameters = array(
1177 'fieldInfos' => &$fieldInfos,
1180 'keyPrefix' => $keyPrefix,
1181 'keySuffix' => $keySuffix,
1182 'moreCss' => $moreCss,
1183 'moreAttrib' => $moreAttrib,
1184 'overwrite_before' => &$overwrite_before,
1185 'overwrite_content' => &$overwrite_content,
1186 'overwrite_after' => &$overwrite_after,
1189 $hookmanager->executeHooks(
'printOutputField', $parameters, $this);
1191 $out = $overwrite_before;
1192 if (empty($overwrite_content)) {
1195 if (isset($field)) {
1196 $moreCss = $field->getInputCss($fieldInfos, $moreCss);
1198 $out .= $field->printOutputField($fieldInfos, $key, $value, $keyPrefix, $keySuffix, $moreCss, $moreAttrib);
1203 $out .= $overwrite_content;
1205 $out .= $overwrite_after;
1222 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.