public function checkPeriod($measuring_timestamp, $sensor_feature_id, $station_id, $key) { // todo $station = new Station(); $stationData = $station->findbypk($station_id); if ($stationData['timezone_id']) { TimezoneWork::set($stationData['timezone_id']); } $last = $this->prepared_pairs[$this->checkPeriodArray[$key]]; $criteria = new CDbCriteria(); $criteria->select = 'measuring_timestamp, sensor_feature_value, sensor_feature_normalized_value, period, measuring_timestamp, sensor_feature_id, station_id'; $criteria->addCondition('measuring_timestamp < "' . $measuring_timestamp . '"'); $criteria->addCondition('sensor_feature_id = "' . $sensor_feature_id . '"'); $criteria->addCondition('station_id = "' . $station_id . '"'); $criteria->order = 'measuring_timestamp DESC'; $criteria->limit = 1; $data = SensorData::model()->find($criteria); if (!is_null($data) and $data != false) { $value_norm = $last['normilized_value'] - $data['sensor_feature_normalized_value']; $getDate = getdate(strtotime($measuring_timestamp)); $getDatePrev = getdate(strtotime($data['measuring_timestamp'])); if ($getDate['yday'] != $getDatePrev['yday'] && ($getDate['hours'] != 0 || $getDate['minutes'] != 0 || $getDate['seconds'] != 0) || $getDate['yday'] == $getDatePrev['yday'] && $getDatePrev['hours'] == 0 && $getDatePrev['minutes'] == 0 && $getDatePrev['seconds'] == 0) { $this->prepared_pairs[$key]['period'] = $getDate['hours'] * 60 + $getDate['minutes']; $this->prepared_pairs[$key]['value'] = $last['value']; $this->prepared_pairs[$key]['normilized_value'] = $last['normilized_value']; } else { $this->prepared_pairs[$key]['period'] = round((strtotime($measuring_timestamp) - strtotime($data['measuring_timestamp'])) / 60); $this->prepared_pairs[$key]['value'] = $last['value'] - $data['sensor_feature_value']; $this->prepared_pairs[$key]['normilized_value'] = $value_norm; if ($this->prepared_pairs[$key]['value'] < 0) { $this->prepared_pairs[$key]['period'] = $getDate['hours'] * 60 + $getDate['minutes']; $this->prepared_pairs[$key]['value'] = $last['value']; $this->prepared_pairs[$key]['normilized_value'] = $last['normilized_value']; } if ($last['value'] == 0 && $this->prepared_pairs[$key]['value'] < 0) { $this->prepared_pairs[$key]['value'] = 0; $this->prepared_pairs[$key]['normilized_value'] = 0.0; } } $this->_logger->log(__METHOD__ . ' getDate: ' . $measuring_timestamp); $this->_logger->log(__METHOD__ . ' sensor_feature_id: ' . $sensor_feature_id); $this->_logger->log(__METHOD__ . ' station_id: ' . $station_id); $this->_logger->log(__METHOD__ . ' getDatePrev: ' . $data['measuring_timestamp']); } return $this->prepared_pairs[$key]; }