private function replaceStatistics() { if (sizeof($this->dataArray) > 0 && is_array($this->dataArray)) { // initialise associative statistics array $statistics = array('current' => $this->sensors, 'mean' => $this->sensors, 'maximum' => $this->sensors, 'minimum' => $this->sensors); // initialise default values for maximum, minimum, mean and the size of the data array foreach ($this->sensors as $sensor) { $statistics['maximum'][$sensor] = 0; $statistics['minimum'][$sensor] = null; $statistics['mean'][$sensor] = 0; $size[$sensor] = 0; } // iterate the data array ... foreach ($this->dataArray as $time => $sensors) { // ... and the sensors foreach ($sensors as $sensor => $value) { // if there is a value, increment the data array size for this sensor if (floatval($this->dataArray[$time][$sensor]) != 0.0) { $size[$sensor]++; } // if value is bigger than current maximum, value is used as the new maximum if ($value > $statistics['maximum'][$sensor]) { $statistics['maximum'][$sensor] = $value; } // if minimum is initialised as null or the value is less than current minimum, value is used as the new minimum if ($statistics['minimum'][$sensor] == null || floatval($value) < $statistics['minimum'][$sensor] && floatval($value) != 0.0) { $statistics['minimum'][$sensor] = $value; } // cumulate mean value $statistics['mean'][$sensor] += $value; } } // connect to the database to get the current value for each sensor $mysqlConnection = new MySQLConnection(); $aqDatabase = new AirQualityDatabase($this->feedId, $this->timeframe); $data = $aqDatabase->getCurrentValues(); foreach ($this->sensors as $sensor) { // calculate mean by dividing the cumulated value by the determined data size if ($size[$sensor] != 0) { $statistics['mean'][$sensor] /= $size[$sensor]; } $statistics['mean'][$sensor] = round($statistics['mean'][$sensor], 2); $statistics['current'][$sensor] = $data['current_value'][$sensor]; // replace values in the content template $this->contentTemplate->tplReplace($sensor . '_current', $statistics['current'][$sensor]); $this->contentTemplate->tplReplace($sensor . '_mean', $statistics['mean'][$sensor]); $this->contentTemplate->tplReplace($sensor . '_minimum', $statistics['minimum'][$sensor]); $this->contentTemplate->tplReplace($sensor . '_maximum', $statistics['maximum'][$sensor]); } } // if the was no data found, replace values by - foreach ($this->sensors as $sensor) { $this->contentTemplate->tplReplace($sensor . '_current', '-'); $this->contentTemplate->tplReplace($sensor . '_mean', '-'); $this->contentTemplate->tplReplace($sensor . '_minimum', '-'); $this->contentTemplate->tplReplace($sensor . '_maximum', '-'); } }
// get AQEs from the database $query = mysql_query('SELECT `feed_id`, `lat`, `lon` FROM `egg`'); if (mysql_num_rows($query) == 0) { $this->contentTemplate->cleanCode('Egg'); } else { // handle each AQE individually while ($row = mysql_fetch_object($query)) { // set egg parameters for position in the map $this->contentTemplate->copyCode('Egg'); $this->contentTemplate->tplReplaceOnce('egg_lat', $row->lat); $this->contentTemplate->tplReplaceOnce('egg_lon', $row->lon); $this->contentTemplate->tplReplaceOnce('egg_fid', $row->feed_id); // set default for egg value $class = 'noval'; // get current values of the AQE $aqDatabase = new AirQualityDatabase($row->feed_id, '6h'); $dataArray = $aqDatabase->getCurrentValues(); if (is_array($dataArray) && isset($dataArray['current_value'])) { if (isset($classify)) { // get class of the AQE $class = classifier($dataArray['current_value'][$classify], $min, $max, 'class'); } // set current value to 0 if it is not defined if (!isset($dataArray['current_value']['co'])) { $dataArray['current_value']['co'] = 0; } if (!isset($dataArray['current_value']['no2'])) { $dataArray['current_value']['no2'] = 0; } if (!isset($dataArray['current_value']['temperature'])) { $dataArray['current_value']['temperature'] = 0;
private function getData() { $timeframe = $this->determineTimeframe(); if ($this->parameter['request'] == 'getObservation') { $mysqlConnection = new MySQLConnection(); $aqDatabase = new AirQualityDatabase($this->feedId, $timeframe); $this->dataArray = $aqDatabase->getValuesInTimeframe($this->startTime, $this->endTime); if (is_array($this->dataArray)) { foreach ($this->metadata as $mdata) { if (isset($this->dataArray[$mdata])) { unset($this->dataArray[$mdata]); } } } else { die('<error>' . translate($this->dataArray) . '</error>'); } } else { if ($this->parameter['request'] == 'describeSensor') { $mysqlConnection = new MySQLConnection(); $aqDatabase = new AirQualityDatabase($this->feedId, $timeframe); $this->dataArray = $aqDatabase->getCurrentValues(); } } }