mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-02-20 13:46:52 +01:00
Work on generic reporting tool.
This commit is contained in:
parent
97ed94fbda
commit
9dfdce03aa
|
|
@ -2591,7 +2591,6 @@ class ContratLigne extends CommonObjectLine
|
|||
*/
|
||||
public $table_element = 'contratdet';
|
||||
|
||||
|
||||
/**
|
||||
* @var string Name to use for 'features' parameter to check module permissions with restrictedArea()
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -45,6 +45,11 @@ abstract class CommonObjectLine extends CommonObject
|
|||
*/
|
||||
public $rowid;
|
||||
|
||||
/**
|
||||
* @var string String with name of icon for myobject. Must be the part after the 'object_' into object_myobject.png
|
||||
*/
|
||||
public $picto = 'line';
|
||||
|
||||
/**
|
||||
* Product/service unit code ('km', 'm', 'p', ...)
|
||||
* @var string
|
||||
|
|
|
|||
|
|
@ -1486,58 +1486,6 @@ class FormOther
|
|||
{
|
||||
global $langs, $extrafields, $form;
|
||||
|
||||
$YYYY = substr($langs->trans("Year"), 0, 1).substr($langs->trans("Year"), 0, 1).substr($langs->trans("Year"), 0, 1).substr($langs->trans("Year"), 0, 1);
|
||||
$MM = substr($langs->trans("Month"), 0, 1).substr($langs->trans("Month"), 0, 1);
|
||||
$DD = substr($langs->trans("Day"), 0, 1).substr($langs->trans("Day"), 0, 1);
|
||||
$HH = substr($langs->trans("Hour"), 0, 1).substr($langs->trans("Hour"), 0, 1);
|
||||
$MI = substr($langs->trans("Minute"), 0, 1).substr($langs->trans("Minute"), 0, 1);
|
||||
$SS = substr($langs->trans("Second"), 0, 1).substr($langs->trans("Second"), 0, 1);
|
||||
|
||||
foreach ($object->fields as $key => $val) {
|
||||
if (!$val['isameasure']) {
|
||||
if (in_array($key, array(
|
||||
'id', 'ref_int', 'ref_ext', 'rowid', 'entity', 'last_main_doc', 'logo', 'logo_squarred', 'extraparams',
|
||||
'parent', 'photo', 'socialnetworks', 'webservices_url', 'webservices_key'))) {
|
||||
continue;
|
||||
}
|
||||
if (isset($val['enabled']) && !dol_eval($val['enabled'], 1)) {
|
||||
continue;
|
||||
}
|
||||
if (isset($val['visible']) && !dol_eval($val['visible'], 1)) {
|
||||
continue;
|
||||
}
|
||||
if (preg_match('/^fk_/', $key) && !preg_match('/^fk_statu/', $key)) {
|
||||
continue;
|
||||
}
|
||||
if (preg_match('/^pass/', $key)) {
|
||||
continue;
|
||||
}
|
||||
if (in_array($val['type'], array('html', 'text'))) {
|
||||
continue;
|
||||
}
|
||||
if (in_array($val['type'], array('timestamp', 'date', 'datetime'))) {
|
||||
$arrayofgroupby['t.'.$key.'-year'] = array('label' => $langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.')</span>', 'position' => $val['position'].'-y');
|
||||
$arrayofgroupby['t.'.$key.'-month'] = array('label' => $langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.'-'.$MM.')</span>', 'position' => $val['position'].'-m');
|
||||
$arrayofgroupby['t.'.$key.'-day'] = array('label' => $langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.'-'.$MM.'-'.$DD.')</span>', 'position' => $val['position'].'-d');
|
||||
} else {
|
||||
$arrayofgroupby['t.'.$key] = array('label' => $langs->trans($val['label']), 'position' => (int) $val['position']);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Add extrafields to Group by
|
||||
if ($object->isextrafieldmanaged) {
|
||||
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
||||
if ($extrafields->attributes[$object->table_element]['type'][$key] == 'separate') {
|
||||
continue;
|
||||
}
|
||||
if (!empty($extrafields->attributes[$object->table_element]['totalizable'][$key])) {
|
||||
continue;
|
||||
}
|
||||
$arrayofgroupby['te.'.$key] = array('label' => $langs->trans($extrafields->attributes[$object->table_element]['label'][$key]), 'position' => 1000 + (int) $extrafields->attributes[$object->table_element]['pos'][$key]);
|
||||
}
|
||||
}
|
||||
|
||||
$arrayofgroupby = dol_sort_array($arrayofgroupby, 'position', 'asc', 0, 0, 1);
|
||||
$arrayofgroupbylabel = array();
|
||||
foreach ($arrayofgroupby as $key => $val) {
|
||||
$arrayofgroupbylabel[$key] = $val['label'];
|
||||
|
|
@ -1558,68 +1506,13 @@ class FormOther
|
|||
*/
|
||||
public function selectXAxisField($object, $search_xaxis, &$arrayofxaxis, $showempty = '1')
|
||||
{
|
||||
global $langs, $extrafields, $form;
|
||||
|
||||
$YYYY = substr($langs->trans("Year"), 0, 1).substr($langs->trans("Year"), 0, 1).substr($langs->trans("Year"), 0, 1).substr($langs->trans("Year"), 0, 1);
|
||||
$MM = substr($langs->trans("Month"), 0, 1).substr($langs->trans("Month"), 0, 1);
|
||||
$DD = substr($langs->trans("Day"), 0, 1).substr($langs->trans("Day"), 0, 1);
|
||||
$HH = substr($langs->trans("Hour"), 0, 1).substr($langs->trans("Hour"), 0, 1);
|
||||
$MI = substr($langs->trans("Minute"), 0, 1).substr($langs->trans("Minute"), 0, 1);
|
||||
$SS = substr($langs->trans("Second"), 0, 1).substr($langs->trans("Second"), 0, 1);
|
||||
|
||||
|
||||
foreach ($object->fields as $key => $val) {
|
||||
if (!$val['measure']) {
|
||||
if (in_array($key, array(
|
||||
'id', 'ref_int', 'ref_ext', 'rowid', 'entity', 'last_main_doc', 'logo', 'logo_squarred', 'extraparams',
|
||||
'parent', 'photo', 'socialnetworks', 'webservices_url', 'webservices_key'))) {
|
||||
continue;
|
||||
}
|
||||
if (isset($val['enabled']) && !dol_eval($val['enabled'], 1)) {
|
||||
continue;
|
||||
}
|
||||
if (isset($val['visible']) && !dol_eval($val['visible'], 1)) {
|
||||
continue;
|
||||
}
|
||||
if (preg_match('/^fk_/', $key) && !preg_match('/^fk_statu/', $key)) {
|
||||
continue;
|
||||
}
|
||||
if (preg_match('/^pass/', $key)) {
|
||||
continue;
|
||||
}
|
||||
if (in_array($val['type'], array('html', 'text'))) {
|
||||
continue;
|
||||
}
|
||||
if (in_array($val['type'], array('timestamp', 'date', 'datetime'))) {
|
||||
$arrayofxaxis['t.'.$key.'-year'] = array('label' => $langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.')</span>', 'position' => $val['position'].'-y');
|
||||
$arrayofxaxis['t.'.$key.'-month'] = array('label' => $langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.'-'.$MM.')</span>', 'position' => $val['position'].'-m');
|
||||
$arrayofxaxis['t.'.$key.'-day'] = array('label' => $langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.'-'.$MM.'-'.$DD.')</span>', 'position' => $val['position'].'-d');
|
||||
} else {
|
||||
$arrayofxaxis['t.'.$key] = array('label' => $langs->trans($val['label']), 'position' => (int) $val['position']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add extrafields to X-Axis
|
||||
if ($object->isextrafieldmanaged) {
|
||||
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
||||
if ($extrafields->attributes[$object->table_element]['type'][$key] == 'separate') {
|
||||
continue;
|
||||
}
|
||||
if (!empty($extrafields->attributes[$object->table_element]['totalizable'][$key])) {
|
||||
continue;
|
||||
}
|
||||
$arrayofxaxis['te.'.$key] = array('label' => $langs->trans($extrafields->attributes[$object->table_element]['label'][$key]), 'position' => 1000 + (int) $extrafields->attributes[$object->table_element]['pos'][$key]);
|
||||
}
|
||||
}
|
||||
|
||||
$arrayofxaxis = dol_sort_array($arrayofxaxis, 'position', 'asc', 0, 0, 1);
|
||||
global $form;
|
||||
|
||||
$arrayofxaxislabel = array();
|
||||
foreach ($arrayofxaxis as $key => $val) {
|
||||
$arrayofxaxislabel[$key] = $val['label'];
|
||||
}
|
||||
$result = $form->selectarray('search_xaxis', $arrayofxaxislabel, $search_xaxis, $showempty, 0, 0, '', 0, 0, 0, '', 'minwidth250', 1);
|
||||
$result = $form->selectarray('search_xaxis', $arrayofxaxislabel, $search_xaxis, $showempty, 0, 0, '', 0, 0, 0, '', 'minwidth250 maxwidth500', 1);
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -175,7 +175,7 @@ $HH = substr($langs->trans("Hour"), 0, 1).substr($langs->trans("Hour"), 0, 1);
|
|||
$MI = substr($langs->trans("Minute"), 0, 1).substr($langs->trans("Minute"), 0, 1);
|
||||
$SS = substr($langs->trans("Second"), 0, 1).substr($langs->trans("Second"), 0, 1);
|
||||
|
||||
$arrayofmesures = array('t.count'=>'Count');
|
||||
$arrayofmesures = array();
|
||||
$arrayofxaxis = array();
|
||||
$arrayofgroupby = array();
|
||||
$arrayofyaxis = array();
|
||||
|
|
@ -411,39 +411,28 @@ print $form->searchComponent(array($object->element => $object->fields), $search
|
|||
print '</div>';
|
||||
|
||||
// Add measures into array
|
||||
$count = 0;
|
||||
$arrayofmesures = fillArrayOfMeasures($object, 't', $langs->trans($newarrayoftype[$objecttype]['label']), $arrayofmesures, 0, $count);
|
||||
//var_dump($arrayofmesures);
|
||||
print '<div class="divadvancedsearchfield clearboth">';
|
||||
foreach ($object->fields as $key => $val) {
|
||||
if (!empty($val['isameasure']) && (!isset($val['enabled']) || dol_eval($val['enabled'], 1))) {
|
||||
$arrayofmesures['t.'.$key.'-sum'] = $langs->trans($val['label']).' <span class="opacitymedium">('.$langs->trans("Sum").')</span>';
|
||||
$arrayofmesures['t.'.$key.'-average'] = $langs->trans($val['label']).' <span class="opacitymedium">('.$langs->trans("Average").')</span>';
|
||||
$arrayofmesures['t.'.$key.'-min'] = $langs->trans($val['label']).' <span class="opacitymedium">('.$langs->trans("Minimum").')</span>';
|
||||
$arrayofmesures['t.'.$key.'-max'] = $langs->trans($val['label']).' <span class="opacitymedium">('.$langs->trans("Maximum").')</span>';
|
||||
}
|
||||
}
|
||||
// Add extrafields to Measures
|
||||
if ($object->isextrafieldmanaged) {
|
||||
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
||||
if (!empty($extrafields->attributes[$object->table_element]['totalizable'][$key]) && (!isset($extrafields->attributes[$object->table_element]['enabled'][$key]) || dol_eval($extrafields->attributes[$object->table_element]['enabled'][$key], 1))) {
|
||||
$arrayofmesures['te.'.$key.'-sum'] = $langs->trans($extrafields->attributes[$object->table_element]['label'][$key]).' <span class="opacitymedium">('.$langs->trans("Sum").')</span>';
|
||||
$arrayofmesures['te.'.$key.'-average'] = $langs->trans($extrafields->attributes[$object->table_element]['label'][$key]).' <span class="opacitymedium">('.$langs->trans("Average").')</span>';
|
||||
$arrayofmesures['te.'.$key.'-min'] = $langs->trans($extrafields->attributes[$object->table_element]['label'][$key]).' <span class="opacitymedium">('.$langs->trans("Minimum").')</span>';
|
||||
$arrayofmesures['te.'.$key.'-max'] = $langs->trans($extrafields->attributes[$object->table_element]['label'][$key]).' <span class="opacitymedium">('.$langs->trans("Maximum").')</span>';
|
||||
}
|
||||
}
|
||||
}
|
||||
print '<div class="inline-block"><span class="fas fa-ruler-combined paddingright pictofixedwidth" title="'.dol_escape_htmltag($langs->trans("Measures")).'"></span><span class="fas fa-caret-left caretleftaxis" title="'.dol_escape_htmltag($langs->trans("Measures")).'"></span></div>';
|
||||
print $form->multiselectarray('search_measures', $arrayofmesures, $search_measures, 0, 0, 'minwidth400', 1, 0, '', '', $langs->trans("Measures")); // Fill the array $arrayofmeasures with possible fields
|
||||
print '</div>';
|
||||
|
||||
|
||||
// XAxis
|
||||
$count = 0;
|
||||
$arrayofxaxis = fillArrayOfXAxis($object, 't', $langs->trans($newarrayoftype[$objecttype]['label']), $arrayofxaxis, 0, $count);
|
||||
$arrayofxaxis = dol_sort_array($arrayofxaxis, 'position', 'asc', 0, 0, 1);
|
||||
print '<div class="divadvancedsearchfield">';
|
||||
print '<div class="inline-block"><span class="fas fa-ruler-combined paddingright pictofixedwidth" title="'.dol_escape_htmltag($langs->trans("XAxis")).'"></span><span class="fas fa-caret-down caretdownaxis" title="'.dol_escape_htmltag($langs->trans("XAxis")).'"></span></div>';
|
||||
//var_dump($arrayofxaxis);
|
||||
print $formother->selectXAxisField($object, $search_xaxis, $arrayofxaxis, $langs->trans("XAxis")); // Fill the array $arrayofxaxis with possible fields
|
||||
print '</div>';
|
||||
|
||||
|
||||
// Group by
|
||||
$count = 0;
|
||||
$arrayofgroupby = fillArrayOfGroupBy($object, 't', $langs->trans($newarrayoftype[$objecttype]['label']), $arrayofgroupby, 0, $count);
|
||||
$arrayofgroupby = dol_sort_array($arrayofgroupby, 'position', 'asc', 0, 0, 1);
|
||||
print '<div class="divadvancedsearchfield">';
|
||||
print '<div class="inline-block opacitymedium"><span class="fas fa-ruler-horizontal paddingright pictofixedwidth" title="'.dol_escape_htmltag($langs->trans("GroupBy")).'"></span></div>';
|
||||
print $formother->selectGroupByField($object, $search_groupby, $arrayofgroupby, 'minwidth200 maxwidth250', $langs->trans("GroupBy")); // Fill the array $arrayofgroupby with possible fields
|
||||
|
|
@ -846,3 +835,276 @@ if (!defined('USE_CUSTOM_REPORT_AS_INCLUDE')) {
|
|||
llxFooter();
|
||||
|
||||
$db->close();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Fill arrayofmesures for an object
|
||||
*
|
||||
* @param mixed $object Any object
|
||||
* @param string $tablealias Alias of table
|
||||
* @param string $labelofobject Label of object
|
||||
* @param array $arrayofmesures Array of mesures already filled
|
||||
* @param int $level Level
|
||||
* @param int $count Count
|
||||
* @return array Array of mesures
|
||||
*/
|
||||
function fillArrayOfMeasures($object, $tablealias, $labelofobject, &$arrayofmesures, $level = 0, &$count = 0)
|
||||
{
|
||||
global $langs, $extrafields, $db;
|
||||
|
||||
if ($level > 10) { // Protection against infinite loop
|
||||
return $arrayofmesures;
|
||||
}
|
||||
|
||||
if ($level == 0) {
|
||||
// Add the count of record only for the main/first level object. Parents are necessarly unique for each record.
|
||||
$arrayofmesures[$tablealias.'.count'] = img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': Count';
|
||||
}
|
||||
|
||||
// Add main fields of object
|
||||
foreach ($object->fields as $key => $val) {
|
||||
if (!empty($val['isameasure']) && (!isset($val['enabled']) || dol_eval($val['enabled'], 1))) {
|
||||
$arrayofmesures[$tablealias.'.'.$key.'-sum'] = img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$langs->trans("Sum").')</span>';
|
||||
$arrayofmesures[$tablealias.'.'.$key.'-average'] = img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$langs->trans("Average").')</span>';
|
||||
$arrayofmesures[$tablealias.'.'.$key.'-min'] = img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$langs->trans("Minimum").')</span>';
|
||||
$arrayofmesures[$tablealias.'.'.$key.'-max'] = img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$langs->trans("Maximum").')</span>';
|
||||
}
|
||||
}
|
||||
// Add extrafields to Measures
|
||||
if ($object->isextrafieldmanaged) {
|
||||
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
||||
if (!empty($extrafields->attributes[$object->table_element]['totalizable'][$key]) && (!isset($extrafields->attributes[$object->table_element]['enabled'][$key]) || dol_eval($extrafields->attributes[$object->table_element]['enabled'][$key], 1))) {
|
||||
$arrayofmesures[$tablealias.'e.'.$key.'-sum'] = img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($extrafields->attributes[$object->table_element]['label'][$key]).' <span class="opacitymedium">('.$langs->trans("Sum").')</span>';
|
||||
$arrayofmesures[$tablealias.'e.'.$key.'-average'] = img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($extrafields->attributes[$object->table_element]['label'][$key]).' <span class="opacitymedium">('.$langs->trans("Average").')</span>';
|
||||
$arrayofmesures[$tablealias.'e.'.$key.'-min'] = img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($extrafields->attributes[$object->table_element]['label'][$key]).' <span class="opacitymedium">('.$langs->trans("Minimum").')</span>';
|
||||
$arrayofmesures[$tablealias.'e.'.$key.'-max'] = img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($extrafields->attributes[$object->table_element]['label'][$key]).' <span class="opacitymedium">('.$langs->trans("Maximum").')</span>';
|
||||
}
|
||||
}
|
||||
}
|
||||
// Add fields for parent objects
|
||||
foreach ($object->fields as $key => $val) {
|
||||
if (preg_match('/^[^:]+:[^:]+:/', $val['type'])) {
|
||||
$tmptype = explode(':', $val['type'], 4);
|
||||
if ($tmptype[0] = 'integer' && $tmptype[1] && $tmptype[2]) {
|
||||
$newobject = $tmptype[1];
|
||||
dol_include_once($tmptype[2]);
|
||||
if (class_exists($newobject)) {
|
||||
$tmpobject = new $newobject($db);
|
||||
/*var_dump($val['label']);
|
||||
var_dump($tmptype);
|
||||
var_dump($arrayofmesures);
|
||||
var_dump('t-'.$key);*/
|
||||
$count++;
|
||||
$arrayofmesures = fillArrayOfMeasures($tmpobject, $tablealias.'__'.$key, $langs->trans($val['label']), $arrayofmesures, $level + 1, $count);
|
||||
} else {
|
||||
print 'Failed to find '.$newobject.' class for field '.$key.' of object '.$object->element."\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $arrayofmesures;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Fill arrayofmesures for an object
|
||||
*
|
||||
* @param mixed $object Any object
|
||||
* @param string $tablealias Alias of table
|
||||
* @param string $labelofobject Label of object
|
||||
* @param array $arrayofxaxis Array of xaxis already filled
|
||||
* @param int $level Level
|
||||
* @param int $count Count
|
||||
* @return array Array of xaxis
|
||||
*/
|
||||
function fillArrayOfXAxis($object, $tablealias, $labelofobject, &$arrayofxaxis, $level = 0, &$count = 0)
|
||||
{
|
||||
global $langs, $extrafields, $db;
|
||||
|
||||
if ($level > 10) { // Protection against infinite loop
|
||||
return $arrayofxaxis;
|
||||
}
|
||||
|
||||
if ($level >= 2) {
|
||||
return $arrayofxaxis;
|
||||
}
|
||||
|
||||
$YYYY = substr($langs->trans("Year"), 0, 1).substr($langs->trans("Year"), 0, 1).substr($langs->trans("Year"), 0, 1).substr($langs->trans("Year"), 0, 1);
|
||||
$MM = substr($langs->trans("Month"), 0, 1).substr($langs->trans("Month"), 0, 1);
|
||||
$DD = substr($langs->trans("Day"), 0, 1).substr($langs->trans("Day"), 0, 1);
|
||||
$HH = substr($langs->trans("Hour"), 0, 1).substr($langs->trans("Hour"), 0, 1);
|
||||
$MI = substr($langs->trans("Minute"), 0, 1).substr($langs->trans("Minute"), 0, 1);
|
||||
$SS = substr($langs->trans("Second"), 0, 1).substr($langs->trans("Second"), 0, 1);
|
||||
|
||||
// Add main fields of object
|
||||
foreach ($object->fields as $key => $val) {
|
||||
if (empty($val['measure'])) {
|
||||
if (in_array($key, array(
|
||||
'id', 'ref_int', 'ref_ext', 'rowid', 'entity', 'last_main_doc', 'logo', 'logo_squarred', 'extraparams',
|
||||
'parent', 'photo', 'socialnetworks', 'webservices_url', 'webservices_key'))) {
|
||||
continue;
|
||||
}
|
||||
if (isset($val['enabled']) && !dol_eval($val['enabled'], 1)) {
|
||||
continue;
|
||||
}
|
||||
if (isset($val['visible']) && !dol_eval($val['visible'], 1)) {
|
||||
continue;
|
||||
}
|
||||
if (preg_match('/^fk_/', $key) && !preg_match('/^fk_statu/', $key)) {
|
||||
continue;
|
||||
}
|
||||
if (preg_match('/^pass/', $key)) {
|
||||
continue;
|
||||
}
|
||||
if (in_array($val['type'], array('html', 'text'))) {
|
||||
continue;
|
||||
}
|
||||
if (in_array($val['type'], array('timestamp', 'date', 'datetime'))) {
|
||||
$arrayofxaxis[$tablealias.'.'.$key.'-year'] = array('label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.')</span>', 'position' => ($val['position']+($count * 100000)).'.1');
|
||||
$arrayofxaxis[$tablealias.'.'.$key.'-month'] = array('label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.'-'.$MM.')</span>', 'position' => ($val['position']+($count * 100000)).'.2');
|
||||
$arrayofxaxis[$tablealias.'.'.$key.'-day'] = array('label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.'-'.$MM.'-'.$DD.')</span>', 'position' => ($val['position']+($count * 100000)).'.3');
|
||||
} else {
|
||||
$arrayofxaxis[$tablealias.'.'.$key] = array('label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']), 'position' => ($val['position']+($count * 100000)));
|
||||
}
|
||||
}
|
||||
}
|
||||
// Add extrafields to X-Axis
|
||||
if ($object->isextrafieldmanaged) {
|
||||
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
||||
if ($extrafields->attributes[$object->table_element]['type'][$key] == 'separate') {
|
||||
continue;
|
||||
}
|
||||
if (!empty($extrafields->attributes[$object->table_element]['totalizable'][$key])) {
|
||||
continue;
|
||||
}
|
||||
$arrayofxaxis[$tablealias.'e.'.$key] = array('label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($extrafields->attributes[$object->table_element]['label'][$key]), 'position' => 1000 + (int) $extrafields->attributes[$object->table_element]['pos'][$key] + ($count * 100000));
|
||||
}
|
||||
}
|
||||
// Add fields for parent objects
|
||||
foreach ($object->fields as $key => $val) {
|
||||
if (preg_match('/^[^:]+:[^:]+:/', $val['type'])) {
|
||||
$tmptype = explode(':', $val['type'], 4);
|
||||
if ($tmptype[0] = 'integer' && $tmptype[1] && $tmptype[2]) {
|
||||
$newobject = $tmptype[1];
|
||||
dol_include_once($tmptype[2]);
|
||||
if (class_exists($newobject)) {
|
||||
$tmpobject = new $newobject($db);
|
||||
/*var_dump($val['label']);
|
||||
var_dump($tmptype);
|
||||
var_dump($arrayofmesures);
|
||||
var_dump('t-'.$key);*/
|
||||
$count++;
|
||||
$arrayofxaxis = fillArrayOfXAxis($tmpobject, $tablealias.'__'.$key, $langs->trans($val['label']), $arrayofxaxis, $level + 1, $count);
|
||||
} else {
|
||||
print 'Failed to find '.$newobject.' class for field '.$key.' of object '.$object->element."\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $arrayofxaxis;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Fill arrayofgrupby for an object
|
||||
*
|
||||
* @param mixed $object Any object
|
||||
* @param string $tablealias Alias of table
|
||||
* @param string $labelofobject Label of object
|
||||
* @param array $arrayofgroupby Array of groupby already filled
|
||||
* @param int $level Level
|
||||
* @param int $count Count
|
||||
* @return array Array of groupby
|
||||
*/
|
||||
function fillArrayOfGroupBy($object, $tablealias, $labelofobject, &$arrayofgroupby, $level = 0, &$count = 0)
|
||||
{
|
||||
global $langs, $extrafields, $db;
|
||||
|
||||
if ($level > 10) { // Protection against infinite loop
|
||||
return $arrayofgroupby;
|
||||
}
|
||||
|
||||
if ($level >= 2) {
|
||||
return $arrayofgroupby;
|
||||
}
|
||||
|
||||
$YYYY = substr($langs->trans("Year"), 0, 1).substr($langs->trans("Year"), 0, 1).substr($langs->trans("Year"), 0, 1).substr($langs->trans("Year"), 0, 1);
|
||||
$MM = substr($langs->trans("Month"), 0, 1).substr($langs->trans("Month"), 0, 1);
|
||||
$DD = substr($langs->trans("Day"), 0, 1).substr($langs->trans("Day"), 0, 1);
|
||||
$HH = substr($langs->trans("Hour"), 0, 1).substr($langs->trans("Hour"), 0, 1);
|
||||
$MI = substr($langs->trans("Minute"), 0, 1).substr($langs->trans("Minute"), 0, 1);
|
||||
$SS = substr($langs->trans("Second"), 0, 1).substr($langs->trans("Second"), 0, 1);
|
||||
|
||||
// Add main fields of object
|
||||
foreach ($object->fields as $key => $val) {
|
||||
if (!$val['isameasure']) {
|
||||
if (in_array($key, array(
|
||||
'id', 'ref_int', 'ref_ext', 'rowid', 'entity', 'last_main_doc', 'logo', 'logo_squarred', 'extraparams',
|
||||
'parent', 'photo', 'socialnetworks', 'webservices_url', 'webservices_key'))) {
|
||||
continue;
|
||||
}
|
||||
if (isset($val['enabled']) && !dol_eval($val['enabled'], 1)) {
|
||||
continue;
|
||||
}
|
||||
if (isset($val['visible']) && !dol_eval($val['visible'], 1)) {
|
||||
continue;
|
||||
}
|
||||
if (preg_match('/^fk_/', $key) && !preg_match('/^fk_statu/', $key)) {
|
||||
continue;
|
||||
}
|
||||
if (preg_match('/^pass/', $key)) {
|
||||
continue;
|
||||
}
|
||||
if (in_array($val['type'], array('html', 'text'))) {
|
||||
continue;
|
||||
}
|
||||
if (in_array($val['type'], array('timestamp', 'date', 'datetime'))) {
|
||||
$arrayofgroupby[$tablealias.'.'.$key.'-year'] = array('label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.')</span>', 'position' => ($val['position']+($count * 100000)).'.1');
|
||||
$arrayofgroupby[$tablealias.'.'.$key.'-month'] = array('label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.'-'.$MM.')</span>', 'position' => ($val['position']+($count * 100000)).'.2');
|
||||
$arrayofgroupby[$tablealias.'.'.$key.'-day'] = array('label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' <span class="opacitymedium">('.$YYYY.'-'.$MM.'-'.$DD.')</span>', 'position' => ($val['position']+($count * 100000)).'.3');
|
||||
} else {
|
||||
$arrayofgroupby[$tablealias.'.'.$key] = array('label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']), 'position' => ($val['position']+($count * 100000)));
|
||||
}
|
||||
}
|
||||
}
|
||||
// Add extrafields to Group by
|
||||
if ($object->isextrafieldmanaged) {
|
||||
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
|
||||
if ($extrafields->attributes[$object->table_element]['type'][$key] == 'separate') {
|
||||
continue;
|
||||
}
|
||||
if (!empty($extrafields->attributes[$object->table_element]['totalizable'][$key])) {
|
||||
continue;
|
||||
}
|
||||
$arrayofgroupby[$tablealias.'e.'.$key] = array('label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($extrafields->attributes[$object->table_element]['label'][$key]), 'position' => 1000 + (int) $extrafields->attributes[$object->table_element]['pos'][$key] + ($count * 100000));
|
||||
}
|
||||
}
|
||||
// Add fields for parent objects
|
||||
foreach ($object->fields as $key => $val) {
|
||||
if (preg_match('/^[^:]+:[^:]+:/', $val['type'])) {
|
||||
$tmptype = explode(':', $val['type'], 4);
|
||||
if ($tmptype[0] = 'integer' && $tmptype[1] && $tmptype[2]) {
|
||||
$newobject = $tmptype[1];
|
||||
dol_include_once($tmptype[2]);
|
||||
if (class_exists($newobject)) {
|
||||
$tmpobject = new $newobject($db);
|
||||
/*var_dump($val['label']);
|
||||
var_dump($tmptype);
|
||||
var_dump($arrayofmesures);
|
||||
var_dump('t-'.$key);*/
|
||||
$count++;
|
||||
$arrayofgroupby = fillArrayOfGroupBy($tmpobject, $tablealias.'__'.$key, $langs->trans($val['label']), $arrayofgroupby, $level + 1, $count);
|
||||
} else {
|
||||
print 'Failed to find '.$newobject.' class for field '.$key.' of object '.$object->element."\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $arrayofgroupby;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3731,7 +3731,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
|||
'generate', 'globe', 'globe-americas', 'graph', 'grip', 'grip_title', 'group',
|
||||
'help', 'holiday',
|
||||
'images', 'incoterm', 'info', 'intervention', 'inventory', 'intracommreport', 'knowledgemanagement',
|
||||
'label', 'language', 'link', 'list', 'list-alt', 'listlight', 'loan', 'lot', 'long-arrow-alt-right',
|
||||
'label', 'language', 'line', 'link', 'list', 'list-alt', 'listlight', 'loan', 'lot', 'long-arrow-alt-right',
|
||||
'margin', 'map-marker-alt', 'member', 'meeting', 'money-bill-alt', 'movement', 'mrp', 'note', 'next',
|
||||
'off', 'on', 'order',
|
||||
'paiment', 'paragraph', 'play', 'pdf', 'phone', 'phoning', 'phoning_mobile', 'phoning_fax', 'playdisabled', 'previous', 'poll', 'pos', 'printer', 'product', 'propal', 'puce',
|
||||
|
|
@ -3776,7 +3776,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $
|
|||
'email'=>'at', 'establishment'=>'building', 'edit'=>'pencil-alt', 'entity'=>'globe',
|
||||
'graph'=>'chart-line', 'grip_title'=>'arrows-alt', 'grip'=>'arrows-alt', 'help'=>'question-circle',
|
||||
'generic'=>'file', 'holiday'=>'umbrella-beach',
|
||||
'info'=>'info-circle', 'inventory'=>'boxes', 'intracommreport'=>'globe-europe', 'knowledgemanagement'=>'ticket-alt', 'label'=>'layer-group', 'loan'=>'money-bill-alt',
|
||||
'info'=>'info-circle', 'inventory'=>'boxes', 'intracommreport'=>'globe-europe', 'knowledgemanagement'=>'ticket-alt', 'label'=>'layer-group', 'line'=>'bars', 'loan'=>'money-bill-alt',
|
||||
'member'=>'user-alt', 'meeting'=>'chalkboard-teacher', 'mrp'=>'cubes', 'next'=>'arrow-alt-circle-right',
|
||||
'trip'=>'wallet', 'expensereport'=>'wallet', 'group'=>'users', 'movement'=>'people-carry',
|
||||
'sign-out'=>'sign-out-alt',
|
||||
|
|
|
|||
|
|
@ -348,8 +348,8 @@ class User extends CommonObject
|
|||
|
||||
public $fields = array(
|
||||
'rowid'=>array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-2, 'notnull'=>1, 'index'=>1, 'position'=>1, 'comment'=>'Id'),
|
||||
'lastname'=>array('type'=>'varchar(50)', 'label'=>'Name', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>1, 'index'=>1, 'position'=>20, 'searchall'=>1),
|
||||
'firstname'=>array('type'=>'varchar(50)', 'label'=>'Name', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1),
|
||||
'lastname'=>array('type'=>'varchar(50)', 'label'=>'LastName', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>1, 'index'=>1, 'position'=>20, 'searchall'=>1),
|
||||
'firstname'=>array('type'=>'varchar(50)', 'label'=>'FirstName', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1),
|
||||
);
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user