42 lines
		
	
	
		
			962 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			962 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
class SceneManager{
 | 
						|
	public static $scenes;
 | 
						|
 | 
						|
	public function create ($icon, $name, $doCode) {
 | 
						|
		$scene = array (
 | 
						|
			'icon' => $icon,
 | 
						|
			'name' => $name,
 | 
						|
			'do_something' => $doCode,
 | 
						|
		);
 | 
						|
		try {
 | 
						|
			Db::add ('scenes', $scene);
 | 
						|
		} catch(PDOException $error) {
 | 
						|
			echo $error->getMessage();
 | 
						|
			die();
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	public function getAllScenes () {
 | 
						|
		return Db::loadAll ("SELECT * FROM scenes");
 | 
						|
	}
 | 
						|
 | 
						|
	public function getScene ($sceneId) {
 | 
						|
		return Db::loadOne("SELECT * FROM scenes WHERE scene_id = ?", array($sceneId));
 | 
						|
	}
 | 
						|
 | 
						|
	public function execScene ($sceneId) {
 | 
						|
		$sceneData = SceneManager::getScene($sceneId);
 | 
						|
		$sceneDoJson = $sceneData['do_something'];
 | 
						|
		$sceneDoArray = json_decode($sceneDoJson);
 | 
						|
		foreach ($sceneDoArray as $deviceId => $deviceState) {
 | 
						|
			RecordManager::create($deviceId, 'on/off', $deviceState);
 | 
						|
		}
 | 
						|
		return true;
 | 
						|
	}
 | 
						|
 | 
						|
	public function delete($sceneId){
 | 
						|
		Db::command ('DELETE FROM scenes WHERE scene_id=?', array ($sceneId));
 | 
						|
	}
 | 
						|
}
 | 
						|
?>
 |