8 require_once(
'../inc/header.inc.php' );
9 require_once( CH_DIRECTORY_PATH_INC .
'db.inc.php' );
10 require_once( CH_DIRECTORY_PATH_INC .
'design.inc.php' );
11 require_once( CH_DIRECTORY_PATH_CLASSES .
'ChWsbPFM.php' );
19 header(
'Content-Type:text/javascript' );
26 $aObject =
$GLOBALS[
'MySQL']->getRow(
"SELECT * FROM `sys_objects_charts` WHERE `object` = ? AND `active` = ?", [$sObject, 1]);
28 return json_encode(array(
'error' =>
_t(
'_Error Occured')));
33 return json_encode(array(
'error' =>
_t(
'_Error Occured')));
37 return json_encode(array(
'error' =>
_t(
'_Empty')));
40 'title' =>
_t($aObject[
'title']),
42 'hide_date_range' => $aObject[
'field_date_dt'] || $aObject[
'field_date_ts'] ?
false :
true,
43 'column_date' => $aObject[
'column_date'] >= 0 ? $aObject[
'column_date'] :
false,
44 'column_count' => $aObject[
'column_count'] >= 0 ? $aObject[
'column_count'] :
false,
45 'type' => $aObject[
'type'] ? $aObject[
'type'] :
'AreaChart',
46 'options' => $aObject[
'options'] ? unserialize($aObject[
'options']) :
false,
49 return json_encode($aRet);
54 $a = explode(
'-',
$s);
55 if (!$a ||
empty($a[0]) ||
empty($a[1]) ||
empty($a[2]) || !(
int)$a[0] || !(
int)$a[1] || !(
int)$a[2])
56 return $isNowIfError ?
time() :
false;
57 return mktime(0, 0, 0, $a[1], $a[2], $a[0]);
62 return date(
'Y-m-d', $iTs);
68 $sQuery = $aObject[
'query'] ? $aObject[
'query'] :
"SELECT {field_date_formatted} AS `period`, COUNT(*) AS {object} FROM {table} WHERE {field_date} >= '{from}' AND {field_date} <= '{to}' GROUP BY `period` ORDER BY {field_date} ASC";
70 'field_date_formatted' =>
"DATE_FORMAT(" . ($aObject[
'field_date_dt'] ?
"`{$aObject['field_date_dt']}`" :
"FROM_UNIXTIME(`{$aObject['field_date_ts']}`)") .
", '%Y-%m-%d')",
71 'object' => $aObject[
'object'],
72 'table' =>
"`{$aObject['table']}`",
73 'field_date' =>
"`" . ($aObject[
'field_date_dt'] ? $aObject[
'field_date_dt'] : $aObject[
'field_date_ts']) .
"`",
77 foreach ($a
as $k => $v)
78 $sQuery = str_replace(
'{'.$k.
'}', $v, $sQuery);
81 if ($aObject[
'column_date'] >= 0)
82 $aData =
$GLOBALS[
'MySQL']->getAllWithKey($sQuery, $aObject[
'column_date'], [], PDO::FETCH_NUM);
84 $aData =
$GLOBALS[
'MySQL']->getAll($sQuery, [], PDO::FETCH_NUM);
89 if ($aObject[
'column_date'] >= 0) {
90 $iColumnsNum = count(array_pop(array_slice($aData, 0, 1)));
91 for ($i = $iFrom ; $i <= ($iTo + 24*3600 - 1); $i += 24*60*60) {
92 $sDate = date(
'Y-m-d', $i);
94 for ($j = 0 ; $j < $iColumnsNum ; ++$j) {
95 $v = isset($aData[$sDate]) ? (int)$aData[$sDate][$j] : 0;
96 $aRow[$j] = ($j == $aObject[
'column_date'] ? $sDate : $v);
98 $aData[$sDate] = $aRow;
102 foreach ($aData
as $k => $v)
103 foreach ($aData[$k]
as $kk => $vv)
105 $aData[$k][$kk] = (int)$aData[$k][$kk];
110 return array_values($aData);