public function actionSetupSensor() { $handler_db = SensorDBHandler::model()->findByPk(isset($_REQUEST['handler_id']) ? intval($_REQUEST['handler_id']) : null); if (is_null($handler_db)) { $this->redirect($this->createUrl('admin/setupsensors')); } $handler = SensorHandler::create($handler_db->handler_id_code); $features = $handler->getFeatures(); $extraFeatures = $handler->getExtraFeatures(); if (is_array($extraFeatures)) { foreach ($extraFeatures as &$extraFeature) { $extraFeature['is_extra'] = 1; } } $handlerSensorFeatures = array_merge($features, $extraFeatures); $sensorFeatures = array(); if ($handlerSensorFeatures) { foreach ($handlerSensorFeatures as $key => $handlerSensorFeature) { $sensorFeature = SensorDBHandlerDefaultFeature::model()->find('handler_id = :handler_id AND feature_code = :feature_code', array(':handler_id' => $handler_db->handler_id, ':feature_code' => $handlerSensorFeature['feature_code'])); $metric = RefbookMeasurementType::model()->with('metricMain')->findByAttributes(array('code' => $handlerSensorFeature['measurement_type_code'])); if (!$sensorFeature) { $sensorFeature = new SensorDBHandlerDefaultFeature(); $sensorFeature->feature_constant_value = isset($handlerSensorFeature['default']) ? $handlerSensorFeature['default'] : null; } $sensorFeature->handler_id = $handler_db->handler_id; $sensorFeature->feature_code = $handlerSensorFeature['feature_code']; $sensorFeature->feature_display_name = $handlerSensorFeature['feature_name']; $sensorFeature->is_constant = isset($handlerSensorFeature['is_extra']) ? 1 : 0; $sensorFeature->comment = isset($handlerSensorFeature['comment']) ? $handlerSensorFeature['comment'] : null; $sensorFeature->measurement_type_code = $handlerSensorFeature['measurement_type_code']; $sensorFeature->is_cumulative = $handlerSensorFeature['is_cumulative']; $sensorFeature->has_filter_min = $handlerSensorFeature['has_filter_min']; $sensorFeature->has_filter_max = $handlerSensorFeature['has_filter_max']; $sensorFeature->has_filter_diff = $handlerSensorFeature['has_filter_diff']; $sensorFeature->metrics_list = $metric->metricMain->metric->html_code; $sensorFeature->metric_id = $metric->metricMain->metric->metric_id; $sensorFeature->aws_panel_show = isset($handlerSensorFeature['aws_panel_show']) ? 1 : 0; $sensorFeatures[] = $sensorFeature; } } $validated = true; if (Yii::app()->request->isPostRequest) { if (isset($_POST['SensorDBHandler'])) { $handler_db->setAttributes($_POST['SensorDBHandler']); $validated = $validated & $handler_db->save(); } foreach ($sensorFeatures as $key => $value) { $sensorFeatures[$key]->attributes = $_POST['SensorDBHandlerDefaultFeature'][$key]; $validated = $validated & $sensorFeatures[$key]->validate(); } if ($validated) { foreach ($sensorFeatures as $key => $value) { $sensorFeatures[$key]->save(false); StationSensorFeature::updateByDefault($handler_db, $sensorFeatures[$key]); } It::memStatus('admin_default_sensor_saved'); $this->redirect($this->createUrl('admin/setupsensors')); } } $arrh = array(); if (SensorDBHandler::checkHandlersFor24h($handler_db->default_prefix)) { $arrh[-1] = 'now'; for ($i = 0; $i < 24; $i++) { $arrh[$i] = ($i < 10 ? '0' . $i : $i) . ':00'; } } $this->render('setup_default_sensor', array('handler_db' => $handler_db, 'validated' => $validated, 'sensor_features' => $sensorFeatures, 'handler_description' => $handler->getSensorDescription(), 'arrh' => $arrh)); }