Ejemplo n.º 1
0
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');
}
Ejemplo n.º 2
0
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');
}