public function actionCommand($id) { //get Scene Devices by Scene ID $sceneDevices = SceneDevices::model()->findAll('tbl_scene_idtbl_scene=:sceneID', array(':sceneID' => $id)); foreach ($sceneDevices as $node) { //get node details and get device type $device = Devices::model()->find('idtbl_device=:deviceID', array(':deviceID' => $node["tbl_devices_idtbl_device"])); if ($_GET['state'] == "100") { $nodeLevel = $node["tbl_scene_device_level"]; } else { $nodeLevel = 0; } $nodeID = $device["tbl_device_nodeid"]; $nodeType = $device["tbl_device_type"]; $url = Yii::app()->params['serverurl'] . "/server.php?command=control&node=" . $nodeID . "&type=" . urlencode($nodeType) . "&level=" . $nodeLevel; echo $url; // create a new cURL resource $ch = curl_init(); // set URL and other appropriate options curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); // grab URL and pass it to the browser curl_exec($ch); // close cURL resource, and free up system resources curl_close($ch); } $this->redirect(array('index')); }
private function getEventDetails($id, $state) { $model = $this->loadModel($id); //$model = new Scheduler(); //get devices for the current scene $devices = SceneDevices::model()->findAll("tbl_scene_idtbl_scene=" . $model->tbl_scenes_idtbl_scene); $time = ""; if ($state == 'off') { $time = $model->tbl_schedule_time_off; } else { $time = $model->tbl_schedule_time_on; } $hr = intval(substr($time, 0, 2)); $min = intval(substr($time, 3, 2)); $day = ""; $month = ""; if ($model->tbl_schedule_date) { $date = explode('-', $model->tbl_schedule_date); $month = $date[1]; $day = $date[2]; } else { $month = 0; $day = 0; } //get day/s if (count($model->tbl_schedule_recurring)) { $recurring = true; } else { $recurring = false; } $jobs = array(); if ($recurring) { //generate crojob for every recurring day $recurringdays = explode(',', $model->tbl_schedule_recurring); foreach ($recurringdays as $dayofweek) { $dayofweek_map = array('Sun' => '0', 'Mon' => '1', 'Tue' => '2', 'Wed' => '3', 'Thu' => '4', 'Fri' => '5', 'Sat' => '6'); array_push($jobs, $this->generateCronJob($min, $hr, '*', '*', $dayofweek_map[$dayofweek], $devices, $state)); } } else { //generate one time event on a particular day $jobs = $this->generateCronJob($min, $hr, $day, $month, '*', $devices, $state); } return $jobs; }
/** * Returns the data model based on the primary key given in the GET variable. * If the data model is not found, an HTTP exception will be raised. * @param integer the ID of the model to be loaded */ public function loadModel($id) { $model = SceneDevices::model()->findByPk($id); if ($model === null) { throw new CHttpException(404, 'The requested page does not exist.'); } return $model; }