dolibarr 20.0.0
extrafields_list_print_fields.tpl.php
1<?php
2
3// Protection to avoid direct call of template
4if (empty($conf) || !is_object($conf)) {
5 print "Error, template page can't be called as URL";
6 exit(1);
7}
8
9if (empty($extrafieldsobjectkey) && is_object($object)) {
10 $extrafieldsobjectkey = $object->table_element;
11}
12
13// Loop to show all columns of extrafields from $obj, $extrafields and $db
14if (!empty($extrafieldsobjectkey) && !empty($extrafields->attributes[$extrafieldsobjectkey])) { // $extrafieldsobject is the $object->table_element like 'societe', 'socpeople', ...
15 if (array_key_exists('label', $extrafields->attributes[$extrafieldsobjectkey]) && is_array($extrafields->attributes[$extrafieldsobjectkey]['label']) && count($extrafields->attributes[$extrafieldsobjectkey]['label'])) {
16 if (empty($extrafieldsobjectprefix)) {
17 $extrafieldsobjectprefix = 'ef.';
18 }
19
20 foreach ($extrafields->attributes[$extrafieldsobjectkey]['label'] as $key => $val) {
21 if (!empty($arrayfields[$extrafieldsobjectprefix.$key]['checked'])) {
22 if ($extrafields->attributes[$extrafieldsobjectkey]['type'][$key] == 'separate') {
23 continue;
24 }
25
26 $cssclass = $extrafields->getAlignFlag($key, $extrafieldsobjectkey);
27
28 $tmpkey = 'options_'.$key;
29
30 if (in_array($extrafields->attributes[$extrafieldsobjectkey]['type'][$key], array('date', 'datetime', 'timestamp')) && isset($obj->$tmpkey) && !is_numeric($obj->$tmpkey)) {
31 $datenotinstring = $obj->$tmpkey;
32 if (!is_numeric($obj->$tmpkey)) { // For backward compatibility
33 $datenotinstring = $db->jdate($datenotinstring);
34 }
35 $value = $datenotinstring;
36 } elseif (in_array($extrafields->attributes[$extrafieldsobjectkey]['type'][$key], array('int'))) {
37 $value = (!empty($obj->$tmpkey) || $obj->$tmpkey === '0' ? $obj->$tmpkey : '');
38 } else {
39 // The key may be in $obj->array_options if not in $obj
40 $value = (isset($obj->$tmpkey) ? $obj->$tmpkey :
41 (isset($obj->array_options[$tmpkey]) ? $obj->array_options[$tmpkey] : '') );
42 }
43 // If field is a computed field, we make computation to get value
44 if ($extrafields->attributes[$extrafieldsobjectkey]['computed'][$key]) {
45 $objectoffield = $object; //For compatibility with the computed formula
46 $value = dol_eval((string) $extrafields->attributes[$extrafieldsobjectkey]['computed'][$key], 1, 1, '2');
47 if (is_numeric(price2num($value)) && $extrafields->attributes[$extrafieldsobjectkey]['totalizable'][$key]) {
48 $obj->$tmpkey = price2num($value);
49 }
50 }
51
52 $valuetoshow = $extrafields->showOutputField($key, $value, '', $extrafieldsobjectkey);
53 $title = dol_string_nohtmltag($valuetoshow);
54
55 print '<td'.($cssclass ? ' class="'.$cssclass.'"' : ''); // TODO Add 'css' and 'cssview' and 'csslist' for extrafields and use here 'csslist'
56 print ' data-key="'.$extrafieldsobjectkey.'.'.$key.'"';
57 print($title ? ' title="'.dol_escape_htmltag($title).'"' : '');
58 print '>';
59 print $valuetoshow;
60 print '</td>';
61
62 if (!$i) {
63 if (empty($totalarray)) {
64 $totalarray['nbfield'] = 0;
65 }
66 $totalarray['nbfield']++;
67 }
68
69 if (!empty($extrafields->attributes[$extrafieldsobjectkey]['totalizable'][$key])) {
70 if (!$i) {
71 // we keep position for the first line
72 $totalarray['totalizable'][$key]['pos'] = $totalarray['nbfield'];
73 }
74 if (isset($obj->$tmpkey) && is_numeric($obj->$tmpkey)) {
75 if (!isset($totalarray['totalizable'][$key]['total'])) {
76 $totalarray['totalizable'][$key]['total'] = 0;
77 }
78 $totalarray['totalizable'][$key]['total'] += $obj->$tmpkey;
79 }
80 }
81 // The key 'totalizable' on extrafields, is the same as 'isameasure' into ->fields
82 if (!empty($extrafields->attributes[$extrafieldsobjectkey]['totalizable'][$key]) && $extrafields->attributes[$extrafieldsobjectkey]['totalizable'][$key] == 1) {
83 if (!$i) {
84 $totalarray['pos'][$totalarray['nbfield']] = $extrafieldsobjectprefix.$tmpkey;
85 }
86 if (!isset($totalarray['val'])) {
87 $totalarray['val'] = array();
88 }
89 if (!isset($totalarray['val'][$extrafieldsobjectprefix.$tmpkey])) {
90 $totalarray['val'][$extrafieldsobjectprefix.$tmpkey] = 0;
91 }
92 if (isset($obj->$tmpkey) && is_numeric($obj->$tmpkey)) {
93 if (!isset($totalarray['val'][$extrafieldsobjectprefix.$tmpkey])) {
94 $totalarray['val'][$extrafieldsobjectprefix.$tmpkey] = 0;
95 }
96 $totalarray['val'][$extrafieldsobjectprefix.$tmpkey] += $obj->$tmpkey;
97 }
98 }
99 }
100 }
101 }
102}
if( $user->socid > 0) if(! $user->hasRight('accounting', 'chartofaccount')) $object
Definition card.php:58
dol_string_nohtmltag($stringtoclean, $removelinefeed=1, $pagecodeto='UTF-8', $strip_tags=0, $removedoublespaces=1)
Clean a string from all HTML tags and entities.
price2num($amount, $rounding='', $option=0)
Function that return a number with universal decimal format (decimal separator is '.
dol_eval($s, $returnvalue=1, $hideerrors=1, $onlysimplestring='1')
Replace eval function to add more security.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $noescapetags='', $escapeonlyhtmltags=0, $cleanalsojavascript=0)
Returns text escaped for inclusion in HTML alt or title or value tags, or into values of HTML input f...