function main_stats($eventData) { global $gPage_title, $gPage_content, $gLocale; $stats_ok = false; require_once 'innomatic/locale/LocaleCountry.php'; $locale_country = new LocaleCountry(\Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getCurrentUser()->getCountry()); if (isset($eventData['statsfrom']) and isset($eventData['statsto'])) { //$stats_ok = true; $from_date = $locale_country->GetDateArrayFromShortDateStamp($eventData['statsfrom']); $from_ts = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getCurrentDomain()->getDataAccess()->GetTimestampFromDateArray($from_date); $from_secs = mktime(0, 0, 0, $from_date['mon'], $from_date['mday'], $from_date['year']); $to_date = $locale_country->GetDateArrayFromShortDateStamp($eventData['statsto']); $to_date['hours'] = 23; $to_date['minutes'] = 59; $to_date['seconds'] = 59; $to_ts = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getCurrentDomain()->getDataAccess()->GetTimestampFromDateArray($to_date); $to_secs = mktime(23, 59, 59, $to_date['mon'], $to_date['mday'], $to_date['year']); $stats_query = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getCurrentDomain()->getDataAccess()->execute('SELECT * ' . 'FROM innowork_core_itemslog ' . 'WHERE eventtime>=' . \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getCurrentDomain()->getDataAccess()->formatText($from_ts) . ' ' . 'AND eventtime<=' . \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getCurrentDomain()->getDataAccess()->formatText($to_ts)); $users_stats_query = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getCurrentDomain()->getDataAccess()->execute('SELECT username,count(username) AS count ' . 'FROM innowork_core_itemslog ' . 'WHERE eventtime>=' . \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getCurrentDomain()->getDataAccess()->formatText($from_ts) . ' ' . 'AND eventtime<=' . \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getCurrentDomain()->getDataAccess()->formatText($to_ts) . ' ' . 'GROUP BY username'); $stats_data = $_stats_data = array(); while (!$stats_query->eof) { $tmp_date = \Innomatic\Core\InnomaticContainer::instance('\\Innomatic\\Core\\InnomaticContainer')->getCurrentDomain()->getDataAccess()->GetDateArrayFromTimestamp($stats_query->getFields('eventtime')); if (!isset($_stats_data[$tmp_date['year'] . $tmp_date['mon'] . $tmp_date['mday']])) { $_stats_data[$tmp_date['year'] . $tmp_date['mon'] . $tmp_date['mday']]['changes'] = 1; } else { $_stats_data[$tmp_date['year'] . $tmp_date['mon'] . $tmp_date['mday']]['changes']++; } $_stats_data[$tmp_date['year'] . $tmp_date['mon'] . $tmp_date['mday']]['day'] = $tmp_date['mday']; $stats_query->MoveNext(); } for ($i = $from_secs; $i <= $to_secs; $i += 60 * 60 * 24) { $tmp_date_array = $locale_country->GetDateArrayFromUnixTimestamp($i); if (!isset($_stats_data[$tmp_date_array['year'] . $tmp_date_array['mon'] . $tmp_date_array['mday']])) { $_stats_data[$tmp_date_array['year'] . $tmp_date_array['mon'] . $tmp_date_array['mday']]['changes'] = 0; $_stats_data[$tmp_date_array['year'] . $tmp_date_array['mon'] . $tmp_date_array['mday']]['day'] = $tmp_date_array['mday']; } } ksort($_stats_data); $x_array = $y_array = array(); $cont = 1; foreach ($_stats_data as $id => $value) { $x_array[] = $cont++; $y_array[] = $value['changes']; } reset($_stats_data); require_once 'phplot/PHPlot.php'; $regression_data = phplot_regression($x_array, $y_array); $cont = 0; foreach ($_stats_data as $value) { $stats_data[] = array($value['day'], $value['changes'], $regression_data[$cont++][2]); } $users_stats_data = array(); while (!$users_stats_query->eof) { if (strpos($users_stats_query->getFields('username'), '@')) { $username = substr($users_stats_query->getFields('username'), 0, strpos($users_stats_query->getFields('username'), '@')); } else { $username = $users_stats_query->getFields('username'); } $users_stats_data[] = array(ucfirst($username), $users_stats_query->getFields('count')); $users_stats_query->MoveNext(); } $stats_ok = true; } else { $from_date = $locale_country->getDateArrayFromSafeTimestamp($locale_country->SafeFormatTimestamp(time() - 60 * 60 * 24 * 30)); $to_date = $locale_country->getDateArrayFromSafeTimestamp($locale_country->SafeFormatTimestamp()); } require_once 'innomatic/wui/dispatch/WuiEventsCall.php'; $xml_def = ' <vertgroup> <children> <form><name>stats</name> <args> <action type="encoded">' . urlencode(WuiEventsCall::buildEventsCallString('', array(array('view', 'stats')))) . '</action> </args> <children> <horizgroup> <args> <align>middle</align> </args> <children> <label> <args> <label type="encoded">' . urlencode($gLocale->getStr('stats_from.label')) . '</label> </args> </label> <date><name>statsfrom</name> <args> <disp>view</disp> <value type="array">' . WuiXml::encode($from_date) . '</value> </args> </date> <label> <args> <label type="encoded">' . urlencode($gLocale->getStr('stats_to.label')) . '</label> </args> </label> <date><name>statsto</name> <args> <disp>view</disp> <value type="array">' . WuiXml::encode($to_date) . '</value> </args> </date> <button> <args> <themeimage>buttonok</themeimage> <horiz>true</horiz> <label type="encoded">' . urlencode($gLocale->getStr('get_stats.button')) . '</label> <formsubmit>stats</formsubmit> <action type="encoded">' . urlencode(WuiEventsCall::buildEventsCallString('', array(array('view', 'stats')))) . '</action> </args> </button> </children> </horizgroup> </children> </form>'; if ($stats_ok) { $legend = array($gLocale->getStr('activites_legend.label'), $gLocale->getStr('trend_legend.label')); $xml_def .= '<horizbar/> <phplot> <args> <data type="array">' . WuiXml::encode($stats_data) . '</data> <width>600</width> <height>350</height> <title type="encoded">' . urlencode($gLocale->getStr('statistics.title')) . '</title> <legend type="array">' . WuiXml::encode($legend) . '</legend> <pointsize>1</pointsize> </args> </phplot> <phplot> <args> <data type="array">' . WuiXml::encode($users_stats_data) . '</data> <width>600</width> <height>350</height> <title type="encoded">' . urlencode($gLocale->getStr('statistics_users.title')) . '</title> <plottype>bars</plottype> <pointsize>1</pointsize> </args> </phplot>'; } $xml_def .= ' </children> </vertgroup>'; $gPage_content = new WuiXml('page', array('definition' => $xml_def)); $gPage_title = $gLocale->getStr('statistics.title'); }
function main_default($eventData) { global $gEnv, $gXml_def, $gLocale, $gPage_title; $main = new AmpolirosMaintenanceHandler(); $main_time = $main->GetLastMaintenanceTime(); $tasks = $main->GetTasksList(); $tabs[0]['label'] = $gLocale->GetStr('general_status.tab'); $tabs[1]['label'] = $gLocale->GetStr('general_report.tab'); $tabs[2]['label'] = $gLocale->GetStr('general_tasks.tab'); $country = new LocaleCountry($GLOBALS['gEnv']['root']['locale']['country']); $date_array = $country->GetDateArrayFromUnixTimestamp($main_time); $row = 0; $gXml_def = '<vertgroup> <children> <tab><name>general</name> <args> <tabs type="array">' . huixml_encode($tabs) . '</tabs> <tabactionfunction>general_tab_builder</tabactionfunction> <activetab>' . (isset($eventData['tab']) ? $eventData['tab'] : '') . '</activetab> </args> <children> <vertgroup> <children> <label><name>status</name> <args> <label type="encoded">' . urlencode($gLocale->GetStr('status.label')) . '</label> <bold>true</bold> </args> </label> <horizgroup> <children> <label> <args> <label type="encoded">' . urlencode($gLocale->GetStr('last_maintenance.label')) . '</label> </args> </label> <date> <args> <readonly>true</readonly> <type>date</type> <value type="array">' . huixml_encode($date_array) . '</value> </args> </date> <date> <args> <readonly>true</readonly> <type>time</type> <value type="array">' . huixml_encode($date_array) . '</value> </args> </date> </children> </horizgroup> <horizbar/>'; if (isset($GLOBALS['gEnv']['runtime']['maintenance']['result'])) { $row = 0; $gXml_def .= ' <label> <args> <label type="encoded">' . urlencode($gLocale->GetStr('report.label')) . '</label> <bold>true</bold> </args> </label> <grid><children>'; foreach ($GLOBALS['gEnv']['runtime']['maintenance']['result'] as $task => $result) { $gXml_def .= '<label row="' . $row . '" col="0"> <args> <nowrap>true</nowrap> <label type="encoded">' . urlencode($tasks[$task]['description']) . '</label> </args> </label> <button row="' . $row . '" col="1"> <args> <themeimage>' . ($result ? 'button_ok' : 'button_cancel') . '</themeimage> <disabled>true</disabled> </args> </button>'; $row++; } $gXml_def .= '</children></grid><horizbar/>'; } $gXml_def .= ' <button> <args> <themeimage>button_ok</themeimage> <label type="encoded">' . urlencode($gLocale->GetStr('run_maintenance.button')) . '</label> <horiz>true</horiz> <frame>false</frame> <action type="encoded">' . urlencode(build_events_call_string('', array(array('main', 'default'), array('action', 'run_maintenance')))) . '</action> </args> </button> </children> </vertgroup> <vertgroup> <children> <label> <args> <label type="encoded">' . urlencode($gLocale->GetStr('report.label')) . '</label> <bold>true</bold> </args> </label> <form><name>report</name> <args> <action type="encoded">' . urlencode(build_events_call_string('', array(array('main', 'default'), array('action', 'set_report')))) . '</action> </args> <children> <grid> <children> <label row="0" col="0"> <args> <label type="encoded">' . urlencode($gLocale->GetStr('report_enabled.label')) . '</label> </args> </label> <checkbox row="0" col="1"><name>reportenabled</name> <args> <disp>action</disp> <checked>' . ($main->GetReportsEnableStatus() ? 'true' : 'false') . '</checked> </args> </checkbox> <label row="1" col="0"> <args> <label type="encoded">' . urlencode($gLocale->GetStr('report_email.label')) . '</label> </args> </label> <string row="1" col="1"><name>reportemail</name> <args> <disp>action</disp> <value type="encoded">' . urlencode($main->GetReportsEmail()) . '</value> <size>25</size> </args> </string> </children> </grid> </children> </form> <horizbar/> <button> <args> <themeimage>button_ok</themeimage> <label type="encoded">' . urlencode($gLocale->GetStr('apply.button')) . '</label> <horiz>true</horiz> <frame>false</frame> <formsubmit>report</formsubmit> <action type="encoded">' . urlencode(build_events_call_string('', array(array('main', 'default'), array('action', 'set_report')))) . '</action> </args> </button> </children> </vertgroup> <vertgroup> <children> <label> <args> <label type="encoded">' . urlencode($gLocale->GetStr('scheduled_tasks.label')) . '</label> <bold>true</bold> </args> </label> <form><name>settings</name> <args> <action type="encoded">' . urlencode(build_events_call_string('', array(array('main', 'default'), array('action', 'set_general')))) . '</action> </args> <children> <grid> <children>'; reset($tasks); foreach ($tasks as $task) { $gXml_def .= '<checkbox row="' . $row . '" col="0"><name type="encoded">' . urlencode($task['name'] . '_task') . '</name> <args> <disp>action</disp> <checked>' . ($task['enabled'] ? 'true' : 'false') . '</checked> </args> </checkbox> <label row="' . $row . '" col="1"> <args> <label type="encoded">' . urlencode($task['description']) . '</label> <nowrap>false</nowrap> </args> </label>'; $row++; } $gXml_def .= ' </children> </grid> </children> </form> <horizbar/> <button> <args> <themeimage>button_ok</themeimage> <label type="encoded">' . urlencode($gLocale->GetStr('apply.button')) . '</label> <horiz>true</horiz> <frame>false</frame> <formsubmit>settings</formsubmit> <action type="encoded">' . urlencode(build_events_call_string('', array(array('main', 'default'), array('action', 'set_general')))) . '</action> </args> </button> </children> </vertgroup> </children> </tab> </children> </vertgroup>'; $gPage_title .= ' - ' . $gLocale->GetStr('general.title'); }