Beispiel #1
0
 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));
 }