public static function execute($id) { $model = RuleValue::one($id); echo 'RuleValue $id: ' . $id . '<br/>' . PHP_EOL; echo '<pre>'; print_r($model); echo '</pre>'; //exit(); if (!$model) { return HelperData::dataExplode($id); } return HelperData::dataExplode($model->value); }
public static function IamReallyAthome() { $ip_addressen = Setting::find()->select('data')->where(['name' => 'i_am_really_at_home_ip_addressen'])->one(); $ip_addressen = HelperData::dataExplode($ip_addressen->data); $iamathome = false; foreach ($ip_addressen as $ip_adres) { $command = 'sudo ping ' . $ip_adres . ' -c 2'; // -c 2 (two time on linux machine exec(escapeshellcmd($command), $output, $return_var); if (0 == $return_var) { $iamathome = true; } } return HelperData::dataExplode($iamathome); }
/** * Updates an existing Setting model. * If update is successful, the browser will be redirected to the 'view' page. * @param string $id * @return mixed */ public function actionUpdate($id) { $model = $this->findModel($id); $model->name = Setting::encodeName($model->name); if ($model->load(Yii::$app->request->post())) { $model->name = Setting::encodeName($model->name); if ($model->validate()) { $model->data = HelperData::dataRemoveDoubleReturnsAndTrim($model->data); $model->save(false); //return $this->redirect(['view', 'id' => $model->id]); return $this->redirect(['index']); } } $model->data = HelperData::dataExplodeReturn($model->data); return $this->render('update', ['model' => $model]); }
public static function execute($id) { echo '$id: ' . $id . '<br/>' . PHP_EOL; Yii::info('execute id: ' . $id, 'rule'); $model = Rule::findOne($id); // Rule Condition Yii::info('condition', 'rule'); $modelsRuleCondition = RuleCondition::findAll(['rule_id' => $id]); /*echo('$modelsRuleCondition: <pre>'); print_r($modelsRuleCondition); echo('</pre>');*/ // condition foreach ($modelsRuleCondition as $modelRuleCondition) { Yii::info('$modelRuleCondition->id: ' . $modelRuleCondition->id, 'rule'); Yii::info('$modelRuleCondition->condition: ' . $modelRuleCondition->condition, 'rule'); Yii::info('$modelRuleCondition->condition_value: ' . $modelRuleCondition->condition_value, 'rule'); Yii::info('$modelRuleCondition->equation: ' . $modelRuleCondition->equation, 'rule'); Yii::info('$modelRuleCondition->value: ' . $modelRuleCondition->value, 'rule'); Yii::info('$modelRuleCondition->value_value: ' . $modelRuleCondition->value_value, 'rule'); echo '$modelRuleCondition->id: ' . $modelRuleCondition->id . '<br/>' . PHP_EOL; echo '$modelRuleCondition->condition: ' . $modelRuleCondition->condition . '<br/>' . PHP_EOL; echo '$modelRuleCondition->condition_value: ' . $modelRuleCondition->condition_value . '<br/>' . PHP_EOL; echo '$modelRuleCondition->equation: ' . $modelRuleCondition->equation . '<br/>' . PHP_EOL; echo '$modelRuleCondition->value: ' . $modelRuleCondition->value . '<br/>' . PHP_EOL; echo '$modelRuleCondition->value_value: ' . $modelRuleCondition->value_value . '<br/>' . PHP_EOL; if (!class_exists('app\\models\\' . $modelRuleCondition->condition)) { Yii::info('!class_exists: ' . 'app\\models\\' . $modelRuleCondition->condition, 'rule'); return false; } if (!class_exists('app\\models\\' . $modelRuleCondition->value)) { Yii::info('!class_exists: ' . 'app\\models\\' . $modelRuleCondition->value, 'rule'); return false; } $conditions = call_user_func(array('app\\models\\' . ucfirst($modelRuleCondition->condition), 'ruleCondition'), $modelRuleCondition->condition_value); Yii::info('$conditions: ' . json_encode($conditions), 'rule'); echo '$conditions: <pre>'; print_r($conditions); echo '</pre>'; $conditions_values = call_user_func(array('app\\models\\' . ucfirst($modelRuleCondition->value), 'ruleCondition'), $modelRuleCondition->value_value); Yii::info('$conditions_values: ' . json_encode($conditions_values), 'rule'); echo '$conditions_values: <pre>'; print_r($conditions_values); echo '</pre>'; // if one of the $values is true relative to the $condition $equation = false; Yii::info('$equation: ' . json_encode($equation), 'rule'); // json_encode prints true or false foreach ($conditions_values as $value) { Yii::info('$value: ' . $value, 'rule'); foreach ($conditions as $condition) { echo '$value: ' . $value . '<br/>' . PHP_EOL; echo '$condition: ' . $condition . '<br/>' . PHP_EOL; // $equal = version_compare($condition, $value, $modelRuleCondition->equation); Yii::info('$equal: ' . json_encode($equal), 'rule'); // json_encode prints true or false if ($equal) { $equation = true; } } } echo '$equation: ' . $equation . '<br/>' . PHP_EOL; var_dump($equation); //exit(); if (!$equation) { Yii::info('!$equation', 'rule'); return false; } } echo 'condition is: ' . $equation . '<br/>' . PHP_EOL; // if nothing has returned something, the condition must be gone good Yii::info('action', 'rule'); $modelsRuleAction = RuleAction::findAll(['rule_id' => $id]); /*echo('$modelsRuleCondition: <pre>'); print_r($modelsRuleCondition); echo('</pre>');*/ foreach ($modelsRuleAction as $modelRuleAction) { Yii::info('$modelRuleAction->id: ' . $modelRuleAction->id, 'rule'); Yii::info('$modelRuleAction->action: ' . $modelRuleAction->action, 'rule'); Yii::info('$modelRuleAction->action_value: ' . $modelRuleAction->action_value, 'rule'); Yii::info('$modelRuleAction->value: ' . $modelRuleAction->value, 'rule'); Yii::info('$modelRuleAction->value_value: ' . $modelRuleAction->value_value, 'rule'); echo '$modelRuleAction->id: ' . $modelRuleAction->id . '<br/>' . PHP_EOL; echo '$modelRuleAction->action: ' . $modelRuleAction->action . '<br/>' . PHP_EOL; echo '$modelRuleAction->action_value: ' . $modelRuleAction->action_value . '<br/>' . PHP_EOL; echo '$modelRuleAction->value: ' . $modelRuleAction->value . '<br/>' . PHP_EOL; echo '$modelRuleAction->value_value: ' . $modelRuleAction->value_value . '<br/>' . PHP_EOL; //exit(); if (!class_exists('app\\models\\' . $modelRuleAction->action)) { Yii::info('!class_exists: ' . 'app\\models\\' . $modelRuleAction->action, 'rule'); return false; } // only retrieve a value if the action is setting $value = ''; if ('setting' == $modelRuleAction->action) { if (!class_exists('app\\models\\' . $modelRuleAction->value)) { Yii::info('!class_exists: ' . 'app\\models\\' . $modelRuleAction->value, 'rule'); return false; } // get the value $values = call_user_func(array('app\\models\\' . ucfirst($modelRuleAction->value), 'ruleCondition'), $modelRuleAction->value_value); Yii::info('$value: ' . $value, 'rule'); echo '$values: <pre>'; print_r($values); echo '</pre>'; $value = HelperData::dataImplode($values); echo '$value: ' . $value . '<br/>' . PHP_EOL; } // use the value $return = call_user_func(array('app\\models\\' . ucfirst($modelRuleAction->action), 'ruleAction'), $modelRuleAction->action_value, $value); Yii::info('$return: ' . json_encode($return), 'rule'); //exit(); if (!$return) { return false; } } return true; }
/** * Updates an existing Action model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id * @return mixed */ public function actionUpdate($id) { $model = $this->findModel($id); if ($model->load(Yii::$app->request->post()) && $model->validate()) { $model->data_structure = HelperData::dataTrim($model->data_structure); $model->data_structure = HelperData::dataImplodeReturn($model->data_structure); $model->save(false); //return $this->redirect(['view', 'id' => $model->id]); return $this->redirect(['index']); } else { $model->data_structure = HelperData::dataExplodeReturn($model->data_structure); // add device_ids to the model, that are joined to the action, it // set automaticly the default values of the device_ids $model->device_ids = $model->getDeviceActions(); return $this->render('update', ['model' => $model]); } }
public static function ruleExecute($id) { $model = TaskDefined::findOne($id); $data = Task::execute($model->from_device_id, $model->to_device_id, $model->action_id); return HelperData::dataExplode($data); }
public static function ruleCondition($id) { $model = Setting::findOne($id); echo '$model->data: <pre>'; print_r($model->data); echo '</pre>'; return HelperData::dataExplode($model->data); }
public static function dataRemoveDoubleReturnsAndTrim($data) { // replace returns with , $data = HelperData::dataImplodeReturn($data); // trim all the spaces between the , like , , , ,, to ,, $data = HelperData::dataTrim($data); // replace all the ,, for one , do { $done = strpos($data, ',,'); $data = str_replace(',,', ',', $data); } while ($done); return $data; }