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;
 }