public function actionMsgGeneration() { ini_set('memory_limit', '-1'); $form = new GenerateMessageForm(); $messages = array(); $sensors = array(); if (Yii::app()->request->isPostRequest && (isset($_POST['generate']) || isset($_POST['import']))) { $form->attributes = $_POST['GenerateMessageForm']; if ($form->validate()) { $sensors = array(); if ($form->sensor_id) { $sql = "SELECT `t1`.`station_sensor_id`, `t1`.`sensor_id_code`, `t2`.`handler_id_code`, `t3`.`feature_code`, `t4`.`code` AS `metric_code` \n FROM `" . StationSensor::model()->tableName() . "` `t1`\n LEFT JOIN `" . SensorDBHandler::model()->tableName() . "` `t2` ON `t2`.`handler_id` = `t1`.`handler_id`\n LEFT JOIN `" . StationSensorFeature::model()->tableName() . "` `t3` ON `t3`.`sensor_id` = `t1`.`station_sensor_id`\n LEFT JOIN `" . RefbookMetric::model()->tableName() . "` `t4` ON `t4`.`metric_id` = `t3`.`metric_id`\n WHERE `t1`.`station_id` = '" . $form->station_id . "' AND `t1`.`station_sensor_id` IN (" . implode(',', $form->sensor_id) . ")"; $res = Yii::app()->db->createCommand($sql)->queryAll(); if ($res) { foreach ($res as $key => $value) { if (!isset($sensors[$value['station_sensor_id']])) { $sensors[$value['station_sensor_id']] = array('station_sensor_id' => $value['station_sensor_id'], 'sensor_id_code' => $value['sensor_id_code'], 'handler_id_code' => $value['handler_id_code']); } $sensors[$value['station_sensor_id']]['features'][$value['feature_code']] = $value['metric_code']; } } } $i = $form->start_timestamp; while ($i <= $form->end_timestamp) { $messages[$i]['timestamp'] = $i; $i = $i + $form->interval * 60; } foreach ($messages as $key => $value) { if ($form->choosed_station['station_type'] === 'rain') { $messages[$key]['parts'][] = 'D'; $messages[$key]['parts'][] = $form->choosed_station['station_id_code']; $messages[$key]['parts'][] = date('ymd', $key); $messages[$key]['parts'][] = date('Hi', $key); $messages[$key]['parts'][] = str_pad(rand(100, 135), 3, "0", STR_PAD_LEFT); $messages[$key]['parts'][] = '00'; } else { $messages[$key]['parts'][] = 'D'; $messages[$key]['parts'][] = $form->choosed_station['station_id_code']; $messages[$key]['parts'][] = date('ymd', $key); $messages[$key]['parts'][] = date('Hi', $key); $messages[$key]['parts'][] = '00'; } $sensors_values = array(); if ($sensors) { foreach ($sensors as $k1 => $v1) { $handler = SensorHandler::create($v1['handler_id_code']); $random_value = $handler->getRandomValue($v1['features']); $sensors_values[] = $v1['sensor_id_code'] . $random_value; } shuffle($sensors_values); foreach ($sensors_values as $k1 => $v1) { $messages[$key]['parts'][] = $v1; } } $crc = It::prepareCRC(implode('', $messages[$key]['parts'])); $messages[$key]['parts'][] = $crc; array_push($messages[$key]['parts'], '$'); array_unshift($messages[$key]['parts'], '@'); } } } $messages_display = array(); $messages_copy = array(); foreach ($messages as $key => $value) { $messages_display[] = implode(' ', $value['parts']); $messages_copy[] = implode('', $value['parts']); } $station_sensors = StationSensor::getList($form->station_id); if ($station_sensors) { foreach ($station_sensors as $key => $value) { $station_sensors[$key]['checked'] = 1; } } if (isset($_POST['GenerateMessageForm']['sensor_id'])) { if ($station_sensors) { foreach ($station_sensors as $key => $value) { $station_sensors[$key]['checked'] = in_array($value['station_sensor_id'], $_POST['GenerateMessageForm']['sensor_id']) ? 1 : 0; } } } $this->render('msg_generation', array('form' => $form, 'messages_display' => $messages_display, 'messages_copy' => $messages_copy, 'station_sensors' => $station_sensors)); }
public function actionLoadSensors() { $res = StationSensor::getList(isset($_REQUEST['id']) ? intval($_REQUEST['id']) : null); print json_encode($res); CApplication::end(); }