From 2f638d8091ce755f624d01eb63ff713658bccfd7 Mon Sep 17 00:00:00 2001 From: JonatanRek Date: Fri, 15 May 2020 22:49:35 +0200 Subject: [PATCH] Fix --- app/api/RoomsApi.php | 39 --- www/app/Bootstrap.php | 93 ------ www/app/Routes.php | 31 -- www/app/api/AuthApi.php | 25 -- www/app/api/DevicesApi.php | 17 -- www/app/api/ExampleApi.php | 24 -- www/app/api/GoogleHomeApi.php | 46 --- www/app/api/RoomsApi.php | 39 ++- www/app/controllers/ExampleController.php | 14 - www/app/controllers/automationController.php | 77 ----- www/app/controllers/loginController.php | 51 ---- www/app/controllers/settingController.php | 29 -- www/app/models/ChartJS.php | 194 ------------- www/app/models/ChartJS_Line.php | 21 -- www/app/models/GoogleHome.php | 268 ------------------ www/app/models/managers/AuthManager.php | 45 --- www/app/models/managers/AutomationManager.php | 175 ------------ www/app/models/managers/ChartManager.php | 129 --------- www/app/models/managers/DashboardManager.php | 41 --- www/app/models/managers/DeviceManager.php | 96 ------- www/app/models/managers/FallbackManager.php | 44 --- www/app/models/managers/LanguageManager.php | 60 ---- www/app/models/managers/LogManager.php | 57 ---- www/app/models/managers/NetworkManager.php | 18 -- .../models/managers/NotificationManager.php | 107 ------- www/app/models/managers/RecordManager.php | 106 ------- www/app/models/managers/RoomManager.php | 36 --- www/app/models/managers/SceneManager.php | 41 --- www/app/models/managers/SubDeviceManager.php | 97 ------- www/app/models/managers/UserManager.php | 210 -------------- www/app/models/managers/Utilities.php | 144 ---------- .../models/types/GoogleHomeDeviceTypes.php | 107 ------- www/app/models/types/WidgetTypes.php | 45 --- www/app/views/Ajax.php | 223 --------------- www/app/views/Automation.php | 66 ----- www/app/views/Log.php | 63 ---- www/app/views/Login.php | 22 -- www/app/views/Logout.php | 11 - www/app/views/Setting.php | 62 ---- www/app/views/layouts/default.phtml | 20 -- www/app/views/templates/automation.phtml | 66 ----- www/app/views/templates/example.phtml | 1 - www/app/views/templates/log.phtml | 70 ----- www/app/views/templates/login.phtml | 27 -- .../templates/part/automationButton.phtml | 70 ----- .../templates/part/automationCreate.phtml | 69 ----- .../part/automationCreateFinal.phtml | 44 --- .../views/templates/part/automationEdit.phtml | 85 ------ www/app/views/templates/part/footer.phtml | 5 - www/app/views/templates/part/head.phtml | 26 -- www/app/views/templates/part/loginForm.phtml | 20 -- www/app/views/templates/part/loginOta.phtml | 13 - www/app/views/templates/part/menu.phtml | 35 --- www/app/views/templates/part/test.phtml | 3 - www/app/views/templates/setting.phtml | 203 ------------- {config => www/config}/config_sample.php | 0 56 files changed, 26 insertions(+), 3704 deletions(-) delete mode 100644 app/api/RoomsApi.php delete mode 100644 www/app/Bootstrap.php delete mode 100644 www/app/Routes.php delete mode 100644 www/app/api/AuthApi.php delete mode 100644 www/app/api/DevicesApi.php delete mode 100644 www/app/api/ExampleApi.php delete mode 100644 www/app/api/GoogleHomeApi.php delete mode 100644 www/app/controllers/ExampleController.php delete mode 100644 www/app/controllers/automationController.php delete mode 100644 www/app/controllers/loginController.php delete mode 100644 www/app/controllers/settingController.php delete mode 100644 www/app/models/ChartJS.php delete mode 100644 www/app/models/ChartJS_Line.php delete mode 100644 www/app/models/GoogleHome.php delete mode 100644 www/app/models/managers/AuthManager.php delete mode 100644 www/app/models/managers/AutomationManager.php delete mode 100644 www/app/models/managers/ChartManager.php delete mode 100644 www/app/models/managers/DashboardManager.php delete mode 100644 www/app/models/managers/DeviceManager.php delete mode 100644 www/app/models/managers/FallbackManager.php delete mode 100644 www/app/models/managers/LanguageManager.php delete mode 100644 www/app/models/managers/LogManager.php delete mode 100644 www/app/models/managers/NetworkManager.php delete mode 100644 www/app/models/managers/NotificationManager.php delete mode 100644 www/app/models/managers/RecordManager.php delete mode 100644 www/app/models/managers/RoomManager.php delete mode 100644 www/app/models/managers/SceneManager.php delete mode 100644 www/app/models/managers/SubDeviceManager.php delete mode 100644 www/app/models/managers/UserManager.php delete mode 100644 www/app/models/managers/Utilities.php delete mode 100644 www/app/models/types/GoogleHomeDeviceTypes.php delete mode 100644 www/app/models/types/WidgetTypes.php delete mode 100644 www/app/views/Ajax.php delete mode 100644 www/app/views/Automation.php delete mode 100644 www/app/views/Log.php delete mode 100644 www/app/views/Login.php delete mode 100644 www/app/views/Logout.php delete mode 100644 www/app/views/Setting.php delete mode 100644 www/app/views/layouts/default.phtml delete mode 100644 www/app/views/templates/automation.phtml delete mode 100644 www/app/views/templates/example.phtml delete mode 100644 www/app/views/templates/log.phtml delete mode 100644 www/app/views/templates/login.phtml delete mode 100644 www/app/views/templates/part/automationButton.phtml delete mode 100644 www/app/views/templates/part/automationCreate.phtml delete mode 100644 www/app/views/templates/part/automationCreateFinal.phtml delete mode 100644 www/app/views/templates/part/automationEdit.phtml delete mode 100644 www/app/views/templates/part/footer.phtml delete mode 100644 www/app/views/templates/part/head.phtml delete mode 100644 www/app/views/templates/part/loginForm.phtml delete mode 100644 www/app/views/templates/part/loginOta.phtml delete mode 100644 www/app/views/templates/part/menu.phtml delete mode 100644 www/app/views/templates/part/test.phtml delete mode 100644 www/app/views/templates/setting.phtml rename {config => www/config}/config_sample.php (100%) diff --git a/app/api/RoomsApi.php b/app/api/RoomsApi.php deleted file mode 100644 index de417a1..0000000 --- a/app/api/RoomsApi.php +++ /dev/null @@ -1,39 +0,0 @@ -requireAuth(); - $rooms = []; - $roomsData = RoomManager::getAllRooms(); - foreach ($roomsData as $roomKey => $roomData) { - - $widgets = []; - $devicesData = DeviceManager::getAllDevicesInRoom($roomData['room_id']); - foreach ($devicesData as $deviceKey => $deviceData) { - - $subDevicesData = SubDeviceManager::getAllSubDevices($deviceData['device_id']); - foreach ($subDevicesData as $subDeviceKey => $subDeviceData) { - - $lastRecord = RecordManager::getLastRecord($subDeviceData['subdevice_id']); - $widgets[] = [ - 'subdevice_id' => $subDeviceData['subdevice_id'], - 'device_id' => $deviceData['device_id'], - 'name' => $deviceData['name'], - 'type' => $subDeviceData['type'], - 'icon' => $deviceData['icon'], - 'value' => $lastRecord['value'], - 'unit' => $subDeviceData['unit'], - ]; - } - } - - $rooms[] = [ - 'room_id' => $roomData['room_id'], - 'name' => $roomData['name'], - 'widgets' => $widgets, - ]; - } - $this->response($rooms); - } -} diff --git a/www/app/Bootstrap.php b/www/app/Bootstrap.php deleted file mode 100644 index 3c41b3d..0000000 --- a/www/app/Bootstrap.php +++ /dev/null @@ -1,93 +0,0 @@ -'; - //var_dump($directorys); - //echo ''; - - $files = new RecursiveIteratorIterator($directorys, RecursiveIteratorIterator::LEAVES_ONLY); - - $filename = $className . static::$extension; - - foreach ($files as $key => $file) { - if (strtolower($file->getFilename()) === strtolower($filename) && $file->isReadable()) { - include_once $file->getPathname(); - return; - } - } - } - - static function setRoot($rootPath){ - static::$root = $rootPath; - } -} - -spl_autoload_register("Autoloader::ClassLoader"); -Autoloader::setRoot('/var/www/dev.steelants.cz/vasek/home-update/'); - -class ErrorHandler { - static function exception($exception){ - error_log($exception); - http_response_code($exception->getCode()); - $message = [ - 'code' => $exception->getCode(), - 'message' => $exception->getMessage(), - ]; - echo json_encode($message); - - $apiLogManager = new LogManager('../logs/'. date("Y-m-d").'.log'); - $apiLogManager->write("[APACHE] ERROR\n" . json_encode($message, JSON_PRETTY_PRINT), LogRecordType::INFO); - } -} -set_exception_handler("ErrorHandler::exception"); - -$json = file_get_contents('php://input'); -$obj = json_decode($json, true); - -$apiLogManager = new LogManager('../logs/api/HA/'. date("Y-m-d").'.log'); - -$apiLogManager->write("[API] request body\n" . json_encode($obj, JSON_PRETTY_PRINT), LogRecordType::INFO); -$apiLogManager->write("[API] POST body\n" . json_encode($_POST, JSON_PRETTY_PRINT), LogRecordType::INFO); -$apiLogManager->write("[API] GET body\n" . json_encode($_GET, JSON_PRETTY_PRINT), LogRecordType::INFO); - -//Debug -error_reporting(E_ALL); -ini_set( 'display_errors','1'); - -//setup -ini_set ('session.cookie_httponly', '1'); -ini_set('session.cookie_domain', $_SERVER['HTTP_HOST']); -ini_set('session.cookie_path', str_replace("login", "", str_replace('https://' . $_SERVER['HTTP_HOST'], "", $_SERVER['REQUEST_URI']))); -ini_set('session.cookie_secure', '1'); -session_start (); -mb_internal_encoding ("UTF-8"); - -// import configs -require_once '../config/config.php'; - -// Logs -$logManager = new LogManager(); - -// Language -if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){ - $langTag = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); - $langMng = new LanguageManager($langTag); - $langMng->load(); -} - -//D B Conector -Db::connect (DBHOST, DBUSER, DBPASS, DBNAME); - -// TODO: Přesunout do Login Pohledu -$userManager = new UserManager(); - -// import routes -require_once '../app/Routes.php'; diff --git a/www/app/Routes.php b/www/app/Routes.php deleted file mode 100644 index f973faa..0000000 --- a/www/app/Routes.php +++ /dev/null @@ -1,31 +0,0 @@ -setDefault(function(){ - echo $_GET['url'].': 404'; -}); - -//Pages -$router->any('/', 'Log'); -$router->any('/login', 'Login'); -$router->any('/logout', 'Logout'); -$router->any('/automation', 'Automation'); -$router->any('/setting', 'Setting'); -$router->any('/ajax', 'Ajax'); - -$router->post('/api/login', 'AuthApi@login'); -$router->post('/api/logout', 'AuthApi@logout'); - -$router->get('/api/devices', 'DevicesApi@default'); -$router->get('/api/rooms', 'RoomsApi@default'); - -$router->get('/api/HA/auth', 'GoogleHomeApi@autorize'); -$router->any('/api/HA', 'GoogleHomeApi@response'); - -// examples -$router->any('/api/example', 'ExampleApi@example'); -$router->any('/example', 'ExampleController@index'); -$router->any('/example/subpage', 'ExampleController@subpage'); - -$router->run($_SERVER['REQUEST_METHOD'], '/'.(isset($_GET['url']) ? $_GET['url'] : '')); diff --git a/www/app/api/AuthApi.php b/www/app/api/AuthApi.php deleted file mode 100644 index a9d6101..0000000 --- a/www/app/api/AuthApi.php +++ /dev/null @@ -1,25 +0,0 @@ -getToken($this->input->username,$this->input->password); - if (!$token) { - throw new Exception("Auth failed", 401); - } - $this->response(['token' => $token]); - } - - public function logout(){ - $authenticationBearrer = $_SERVER['HTTP_AUTHORIZATION']; - if (!(new AuthManager)->deleteToken($authenticationBearrer)) { - throw new Exception("logout Failed", 401); - } - } - - public function registration(){ - - } - - public function restartPassword(){ - - } -} diff --git a/www/app/api/DevicesApi.php b/www/app/api/DevicesApi.php deleted file mode 100644 index daa8ece..0000000 --- a/www/app/api/DevicesApi.php +++ /dev/null @@ -1,17 +0,0 @@ -requireAuth(); - $response = []; - - // TODO: process the request - - $this->response($response); - } - - public function getDevicesByRoom($roomId){ - - } -} diff --git a/www/app/api/ExampleApi.php b/www/app/api/ExampleApi.php deleted file mode 100644 index 0fe5727..0000000 --- a/www/app/api/ExampleApi.php +++ /dev/null @@ -1,24 +0,0 @@ -requireAuth(); - // if user is logged in, next lines will be processed - // otherwise script get terminated with 401 UNAUTHORIZED - - - // input data are stored in $this->input - // in this example we just copy input to response - $response = $this->input; - - - // this method returns response as json - $this->response($response); - // you can specify returned http code by second optional parameter - // default value is 200 - // $this->response($response, $httpCode); - } - -} diff --git a/www/app/api/GoogleHomeApi.php b/www/app/api/GoogleHomeApi.php deleted file mode 100644 index 40f67cd..0000000 --- a/www/app/api/GoogleHomeApi.php +++ /dev/null @@ -1,46 +0,0 @@ -write("[Google Home] action.devices.SYNC", LogRecordType::INFO); - break; - - case 'action.devices.QUERY': - GoogleHome::query($obj['requestId'], $obj['inputs'][0]['payload']); - //$apiLogManager->write("[Google Home] action.devices.QUERY", LogRecordType::INFO); - break; - - case 'action.devices.EXECUTE': - GoogleHome::execute($obj['requestId'], $obj['inputs'][0]['payload']); - $apiLogManager->write("[Google Home] action.devices.EXECUTE", LogRecordType::INFO); - break; - } - } - - static function autorize(){ - $json = file_get_contents('php://input'); - $obj = json_decode($json, true); - - $apiLogManager = new LogManager('../logs/api/HA/'. date("Y-m-d").'.log'); - $apiLogManager->write("[API] request body\n" . json_encode($obj, JSON_PRETTY_PRINT), LogRecordType::INFO); - $apiLogManager->write("[API] GET body\n" . json_encode($_GET, JSON_PRETTY_PRINT), LogRecordType::INFO); - - $get = [ - "access_token"=>"2222255888", - "token_type"=>"Bearer", - "state"=>$_GET["state"], - ]; - - echo $_GET["redirect_uri"] . '#' . http_build_query($get) ; - echo 'FINISH'; - } -} diff --git a/www/app/api/RoomsApi.php b/www/app/api/RoomsApi.php index 340f09d..de417a1 100644 --- a/www/app/api/RoomsApi.php +++ b/www/app/api/RoomsApi.php @@ -4,23 +4,36 @@ class RoomsApi extends ApiController{ public function default(){ //$this->requireAuth(); - $response = []; - $roomIds = []; - $roomsData = RoomManager::getRoomsDefault(); - - foreach ($roomsData as $roomKey => $room) { - $roomIds[] = $room['room_id']; - } - - $subDevicesData = SubDeviceManager::getSubdevicesByRoomIds($roomIds); - + $rooms = []; + $roomsData = RoomManager::getAllRooms(); foreach ($roomsData as $roomKey => $roomData) { - $response[] = [ + + $widgets = []; + $devicesData = DeviceManager::getAllDevicesInRoom($roomData['room_id']); + foreach ($devicesData as $deviceKey => $deviceData) { + + $subDevicesData = SubDeviceManager::getAllSubDevices($deviceData['device_id']); + foreach ($subDevicesData as $subDeviceKey => $subDeviceData) { + + $lastRecord = RecordManager::getLastRecord($subDeviceData['subdevice_id']); + $widgets[] = [ + 'subdevice_id' => $subDeviceData['subdevice_id'], + 'device_id' => $deviceData['device_id'], + 'name' => $deviceData['name'], + 'type' => $subDeviceData['type'], + 'icon' => $deviceData['icon'], + 'value' => $lastRecord['value'], + 'unit' => $subDeviceData['unit'], + ]; + } + } + + $rooms[] = [ 'room_id' => $roomData['room_id'], 'name' => $roomData['name'], - 'widgets' => isset($subDevicesData[$roomData['room_id']]) ? $subDevicesData[$roomData['room_id']] : [], + 'widgets' => $widgets, ]; } - $this->response($response); + $this->response($rooms); } } diff --git a/www/app/controllers/ExampleController.php b/www/app/controllers/ExampleController.php deleted file mode 100644 index 45a6d8c..0000000 --- a/www/app/controllers/ExampleController.php +++ /dev/null @@ -1,14 +0,0 @@ -view->title = 'Example title'; - $this->view->render('example.phtml'); - } - - public function subpage(){ - echo 'subpage'; - } - -} diff --git a/www/app/controllers/automationController.php b/www/app/controllers/automationController.php deleted file mode 100644 index f7ae6fd..0000000 --- a/www/app/controllers/automationController.php +++ /dev/null @@ -1,77 +0,0 @@ - $_POST['atSelector'], - "value" => $value, - ], JSON_PRETTY_PRINT); - $onDays = $_POST['atDays']; - - //Debug - // if (DEBUGMOD == 1) { - // echo '
';
-		// 	echo $permissionsInJson;
-		// 	echo $deviceId;
-		// 	var_dump(json_decode ($permissionsInJson));
-		// 	echo '
'; - // echo 'CONTINUE'; - // die(); - // } - - AutomationManager::create($_POST['name'], $onDays, $doCode, $ifCode); - - header('Location: ' . BASEURL . strtolower(basename(__FILE__, '.php'))); - die(); - } else if (isset($_POST['modalFinal']) && $_POST['action'] == "edit") { - $doCode = json_encode($_POST['device'], JSON_PRETTY_PRINT); - - if (isset ($_POST['atDeviceValue'])) { - $subDeviceId = $_POST['atDeviceValue']; - $subDeviceValue = $_POST['atDeviceValueInt']; - $subDevice = SubDeviceManager::getSubDevice($subDeviceId); - $subDeviceMaster = SubDeviceManager::getSubDeviceMaster($subDeviceId,$subDevice['type']); - - $device = [ - 'deviceID' => $subDeviceMaster['device_id'], - 'type'=> $subDevice['type'], - 'value'=> $subDeviceValue, - ]; - } - - - $value = $_POST['atSelector']; - if (isset($_POST['atTime'])){ - $value = $_POST['atTime']; - } else if (isset($_POST['atDeviceValue'])) { - $value = $device; - } else if ($_POST['atSelector'] == 'inHome' || $_POST['atSelector'] == 'outHome') { - //TODO: opravit edit aby vkládal id původního uživatele - $value = UserManager::getUserData('user_id'); - } - - $value = (isset($_POST['atTime']) ? $_POST['atTime'] : (isset($_POST['atDeviceValue']) ? $device : $_POST['atSelector'])); - $ifCode = json_encode([ - "type" => $_POST['atSelector'], - "value" => $value, - ], JSON_PRETTY_PRINT); - $onDays = ($_POST['day'] != '' ? json_encode($_POST['day']) : ''); - - AutomationManager::create($_POST['name'], $onDays, $doCode, $ifCode, (isset ($_POST['automation_id']) ? $_POST['automation_id'] : "")); - - header('Location: ' . BASEURL . strtolower(basename(__FILE__, '.php'))); - die(); - } -} -?> diff --git a/www/app/controllers/loginController.php b/www/app/controllers/loginController.php deleted file mode 100644 index de4fed6..0000000 --- a/www/app/controllers/loginController.php +++ /dev/null @@ -1,51 +0,0 @@ -haveOtaEnabled($userName); - if ($ota == "") { - $landingPage = $userManager->login($userName, $userPassword, $rememberMe); - header('Location: ' . BASEURL . $landingPage); - die(); - } - - $_SESSION['USERNAME'] = $userName; - $_SESSION['PASSWORD'] = $userPassword; - $_SESSION['REMEMBER'] = $rememberMe; - $_SESSION['OTA'] = $ota; -} else if ( - isset($_POST['otaCode']) && - $_POST['otaCode'] != '' -) { - - $otaCode = $_POST['otaCode']; - $otaSecret = $_POST['otaSecret']; - - $ga = new PHPGangsta_GoogleAuthenticator(); - $ota = $_SESSION['OTA']; - $userName = $_SESSION['USERNAME']; - $userPassword = $_SESSION['PASSWORD']; - $rememberMe = $_SESSION['REMEMBER']; - unset($_SESSION['OTA']); - $checkResult = $ga->verifyCode($otaSecret, $otaCode, 2); // 2 = 2*30sec clock tolerance - if ($checkResult) { - $landingPage = $userManager->login($userName, $userPassword, $rememberMe); - header('Location: ' . BASEURL . '/'); - echo 'OK'; - } else { - echo 'FAILED'; - } - //TODO: upravi a ověřit jeslti ja zabezpečené - //TODO: - die(); -} diff --git a/www/app/controllers/settingController.php b/www/app/controllers/settingController.php deleted file mode 100644 index f31a8de..0000000 --- a/www/app/controllers/settingController.php +++ /dev/null @@ -1,29 +0,0 @@ -verifyCode($otaSecret, $otaCode, 2); // 2 = 2*30sec clock tolerance - if ($checkResult) { - UserManager::setOta($otaCode, $otaSecret); - } - header('Location: ' . BASEURL . 'setting'); - die(); - } -} diff --git a/www/app/models/ChartJS.php b/www/app/models/ChartJS.php deleted file mode 100644 index 5b0b8bc..0000000 --- a/www/app/models/ChartJS.php +++ /dev/null @@ -1,194 +0,0 @@ - 'rgba(220,220,220,0.2)', 'stroke' => 'rgba(220,220,220,1)', 'point' => 'rgba(220,220,220,1)', 'pointStroke' => '#fff'); - /** - * Add label(s) - * @param array $labels - * @param bool $reset - */ - public function addLabels(array $labels, $reset = false) - { - if ($reset) { - $this->_labels = array(); - } - $this->_labels = $this->_labels + $labels; - } - /** - * Add dataset - * @param $dataset - * @param $reset - */ - public function addDataset($dataset, $reset) - { - if ($reset) { - $this->_datasets = array(); - } - $this->_datasets += $dataset; - } - public function __construct($id = null, $width = '', $height = '', $otherAttributes = array()) - { - if (!$id) { - $id = uniqid('chartjs_', true); - } - $this->_id = $id; - $this->_width = $width; - $this->_height = $height; - // Always save otherAttributes as array - if ($otherAttributes && !is_array($otherAttributes)) { - $otherAttributes = array($otherAttributes); - } - $this->_attributes = $otherAttributes; - } - /** - * This method allows to echo ChartJS object and directly renders canvas (instead of using ChartJS->render()) - */ - public function __toString() - { - return $this->renderCanvas(); - } - public function renderCanvas() - { - $data = $this->_renderData(); - $options = $this->_renderOptions(); - $height = $this->_renderHeight(); - $width = $this->_renderWidth(); - $attributes = $this->_renderAttributes(); - $canvas = ''; - return $canvas; - } - /** - * Prepare canvas' attributes - * @return string - */ - protected function _renderAttributes() - { - $attributes = ''; - foreach ($this->_attributes as $attribute => $value) { - $attributes .= ' ' . $attribute . '="' . $value . '"'; - } - return $attributes; - } - /** - * Prepare width attribute for canvas - * @return string - */ - protected function _renderWidth() - { - $width = ''; - if ($this->_width) { - $width = ' width="' . $this->_width . '"'; - } - return $width; - } - /** - * Prepare height attribute for canvas - * @return string - */ - protected function _renderHeight() - { - $height = ''; - if ($this->_height) { - $height = ' height="' . $this->_height . '"'; - } - return $height; - } - /** - * Render custom options for the chart - * @return string - */ - protected function _renderOptions() - { - if (empty($this->_options)) { - return ''; - } - return ' data-options=\'' . json_encode($this->_options) . '\''; - } - /** - * Prepare data (labels and dataset) for the chart - * @return string - */ - protected function _renderData() - { - $array_data = array('labels' => array(), 'datasets' => array()); - $i = 0; - foreach ($this->_datasets as $line) { - $this->_completeColors($line['options'], $i); - $array_data['datasets'][] = $line['options'] + array('data' => $line['data']); - $i++; - } - $array_data['labels'] = $this->_labels; - return ' data-data=\'' . json_encode($array_data) . '\''; - } - /** - * Set default colors - * @param array $defaultColors - */ - public static function setDefaultColors(array $defaultColors) - { - self::$_defaultColors = $defaultColors; - } - /** - * @param array $color - */ - public static function addDefaultColor(array $color) - { - if (!empty($color['fill']) && !empty($color['stroke']) && !empty($color['point']) && !empty($color['pointStroke'])) { - self::$_defaultColors[] = $color; - } else { - trigger_error('Color is missing to add this theme (need fill, stroke, point and pointStroke) : color not added', E_USER_WARNING); - } - } - protected function _completeColors(&$options, &$i) - { - if (empty(static::$_defaultColors[$i])) { - $i = 0; - } - $colors = static::$_defaultColors[$i]; - foreach (static::$_colorsRequired as $name) { - if (empty($options[$name])) { - $shortName = str_replace('Color', '', $name); - if (empty($colors[$shortName])) { - $shortName = static::$_colorsReplacement[$shortName]; - } - $options[$name] = $colors[$shortName]; - } - } - } -} diff --git a/www/app/models/ChartJS_Line.php b/www/app/models/ChartJS_Line.php deleted file mode 100644 index 3fa3f5a..0000000 --- a/www/app/models/ChartJS_Line.php +++ /dev/null @@ -1,21 +0,0 @@ - 'point', 'pointHighlightStroke' => 'pointStroke'); - /** - * Add a set of data - * @param array $data - * @param array $options - * @param null $name Name cas be use to change data / options later - */ - public function addLine($data = array(), $options = array(), $name = null) - { - if (!$name) { - $name = count($this->_datasets) + 1; - } - $this->_datasets[$name]['data'] = $data; - $this->_datasets[$name]['options'] = $options; - } -} diff --git a/www/app/models/GoogleHome.php b/www/app/models/GoogleHome.php deleted file mode 100644 index 1f17d6c..0000000 --- a/www/app/models/GoogleHome.php +++ /dev/null @@ -1,268 +0,0 @@ - $roomData) { - $devicesData = DeviceManager::getAllDevicesInRoom($roomData['room_id']); - foreach ($devicesData as $deviceKey => $deviceData) { - $subDevicesData = SubDeviceManager::getAllSubDevices($deviceData['device_id']); - foreach ($subDevicesData as $subDeviceKey => $subDeviceData) { - if ($subDeviceData['type'] != "on/off" && $subDeviceData['type'] != "temp_cont") continue; - - //Google Compatibile Action Type - $actionType = GoogleHomeDeviceTypes::getAction($subDeviceData['type']); - - if ( - strpos($deviceData['name'], 'Světlo') !== false || - strpos($deviceData['name'], 'světlo') !== false - ) { - $actionType = 'action.devices.types.LIGHT'; - } - - $tempDevice = [ - 'id' => (string) $subDeviceData['subdevice_id'], - 'type' => $actionType, - 'name' => [ - 'name' => $deviceData['name'], - ], - 'willReportState' => false, - 'roomHint' => $roomData['name'] - ]; - - //traids & Attributes - $devices[] = GoogleHomeDeviceTypes::getSyncObj($tempDevice, $actionType); - } - } - } - - $response = [ - 'requestId' => $requestId, - 'payload' => [ - 'agentUserId'=>'651351531531', - 'devices' => $devices, - ], - ]; - $apiLogManager = new LogManager('../logs/api/HA/'. date("Y-m-d").'.log'); - $apiLogManager->write("[API][$requestId] request response\n" . json_encode($response, JSON_PRETTY_PRINT), LogRecordType::INFO); - echo json_encode($response); - } - - static function query($requestId, $payload){ - $devices = []; - foreach ($payload['devices'] as $deviceId) { - $subDeviceData = SubDeviceManager::getSubDevice($deviceId['id']); - if ($subDeviceData['type'] != "on/off" && $subDeviceData['type'] != "temp_cont") continue; - - $state = false; - if (RecordManager::getLastRecord($deviceId['id'])['value'] == 1){ - $state = true; - } - - $online = false; - $status = 'OFFLINE'; - - if (RecordManager::getLastRecord($deviceId['id'])['execuded'] == 1){ - $online = true; - $status = 'SUCCESS'; - } else { - $executed = 0; - $waiting = 0; - foreach (RecordManager::getLastRecord($deviceId['id'], 6) as $key => $value) { - if ($value['execuded'] == 1){ - $executed++; - } else { - $waiting++; - } - } - if ($waiting < $executed){ - $status = "PENDING"; - $online = true; - } - } - - $tempDevice = [ - $deviceId['id'] => [ - 'online' => $online, - 'status'=> $status, - ] - ]; - - if ($subDeviceData['type'] == "temp_cont"){ - $tempDevice[$deviceId['id']]['thermostatMode'] = 'off'; - if (RecordManager::getLastRecord($deviceId['id'])['value'] != 0) { - $tempDevice[$deviceId['id']]['thermostatMode'] = 'heat'; - $tempDevice[$deviceId['id']]['thermostatTemperatureAmbient'] = RecordManager::getLastRecord($deviceId['id'])['value']; - $tempDevice[$deviceId['id']]['thermostatTemperatureSetpoint'] = RecordManager::getLastRecord($deviceId['id'])['value']; - } - } else { - $tempDevice[$deviceId['id']]['on'] = $state; - } - $devices = $tempDevice; - if (count($devices)> 1){ - $devices[] = $tempDevice; - } - } - - $response = [ - 'requestId' => $requestId, - 'payload' => [ - 'devices' => $devices, - ], - ]; - - $apiLogManager = new LogManager('../logs/api/HA/'. date("Y-m-d").'.log'); - $apiLogManager->write("[API][$requestId] request response\n" . json_encode($response, JSON_PRETTY_PRINT), LogRecordType::INFO); - echo json_encode($response); - } - - static function execute($requestId, $payload){ - $commands = []; - - foreach ($payload['commands'] as $key => $command) { - foreach ($command['devices'] as $key => $device) { - $executionCommand = $command['execution'][0]; - if (isset($command['execution'][$key])) { - $executionCommand = $command['execution'][$key]; - } - - $subDeviceId = $device['id']; - - switch ($executionCommand['command']) { - case 'action.devices.commands.OnOff': - $commands[] = self::executeSwitch($subDeviceId, $executionCommand); - break; - - case 'action.devices.commands.ThermostatTemperatureSetpoint': - $commands[] = self::executeTermostatValue($subDeviceId, $executionCommand); - break; - - case 'action.devices.commands.ThermostatSetMode': - $commands[] = self::executeTermostatMode($subDeviceId, $executionCommand); - break; - } - } - } - - $response = [ - 'requestId' => $requestId, - 'payload' => [ - 'commands' => $commands, - ], - ]; - $apiLogManager = new LogManager('../logs/api/HA/'. date("Y-m-d").'.log'); - $apiLogManager->write("[API][EXECUTE][$requestId]\n" . json_encode($response, JSON_PRETTY_PRINT), LogRecordType::INFO); - - echo json_encode($response); - } - - static function executeSwitch($subDeviceId, $executionCommand){ - $value = 0; - $status = 'SUCCESS'; - if ($executionCommand['params']['on']) $value = 1; - - RecordManager::createWithSubId($subDeviceId, $value); - - $executed = 0; - $waiting = 0; - foreach (RecordManager::getLastRecord($subDeviceId, 4) as $key => $value) { - if ($value['execuded'] == 1){ - $executed++; - } else { - $waiting++; - } - } - if ($waiting < $executed){ - $status = "PENDING"; - } else { - $status = "OFFLINE"; - } - - $commandTemp = [ - 'ids' => [$subDeviceId], - 'status' => $status, - 'states' => [ - 'on' => $executionCommand['params']['on'], - ], - ]; - return $commandTemp; - } - - static function executeTermostatValue($subDeviceId, $executionCommand){ - $value = 0; - $status = 'SUCCESS'; - - if (isset($executionCommand['params']['thermostatTemperatureSetpoint'])) { - $value = $executionCommand['params']['thermostatTemperatureSetpoint']; - } - - RecordManager::createWithSubId($subDeviceId, $value); - - $executed = 0; - $waiting = 0; - foreach (RecordManager::getLastRecord($subDeviceId, 4) as $key => $lastValue) { - if ($lastValue['execuded'] == 1){ - $executed++; - } else { - $waiting++; - } - } - if ($waiting < $executed){ - $status = "PENDING"; - } else { - $status = "OFFLINE"; - } - - $commandTemp = [ - 'ids' => [$subDeviceId], - 'status' => $status, - 'states' => [ - 'thermostatMode' => 'heat', - 'thermostatTemperatureSetpoint' => $value, - 'thermostatTemperatureAmbient' => $value, - //ambient z dalšího zenzoru v roomu - ], - ]; - - if ($timeout >= 5){ - $commandTemp['status'] = "OFFLINE"; - } - return $commandTemp; - } - - static function executeTermostatMode($subDeviceId, $executionCommand){ - $mode = "off"; - $value = 0; - $status = "SUCCESS"; - - if (isset($executionCommand['params']['thermostatMode']) && $executionCommand['params']['thermostatMode'] != 'off') { - $mode = $executionCommand['params']['thermostatMode']; - $value = RecordManager::getLastRecordNotNull($subDeviceId)['value']; - } - - RecordManager::createWithSubId($subDeviceId, $value); - - $executed = 0; - $waiting = 0; - foreach (RecordManager::getLastRecord($deviceId['id'], 4) as $key => $value) { - if ($value['execuded'] == 1){ - $executed++; - } else { - $waiting++; - } - } - if ($waiting < $executed){ - $status = "PENDING"; - } - - $commandTemp = [ - 'ids' => [$subDeviceId], - 'status' => $status, - 'states' => [ - 'thermostatMode' => $mode - ], - ]; - - return $commandTemp; - } -} diff --git a/www/app/models/managers/AuthManager.php b/www/app/models/managers/AuthManager.php deleted file mode 100644 index 88c96a6..0000000 --- a/www/app/models/managers/AuthManager.php +++ /dev/null @@ -1,45 +0,0 @@ -loginNew($username, $password); - - if ($userLogedIn != false){ - // Create token header as a JSON string - $header = json_encode(['typ' => 'JWT', 'alg' => 'HS256']); - // Create token payload as a JSON string - $payload = json_encode(['user_id' => $userLogedIn]); - // Encode Header to Base64Url String - $base64UrlHeader = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($header)); - // Encode Payload to Base64Url String - $base64UrlPayload = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($payload)); - // Create Signature Hash - $signature = hash_hmac('sha256', $base64UrlHeader . "." . $base64UrlPayload, 'abC123!', true); - // Encode Signature to Base64Url String - $base64UrlSignature = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($signature)); - // Create JWT - $jwt = $base64UrlHeader . "." . $base64UrlPayload . "." . $base64UrlSignature; - - return $jwt; - } - } - return false; - } - - public function deleteToken($token){ - Db::command ('DELETE FROM tokens WHERE token=?', array ($token)); - return true; - } - - public function validateToken($token){ - $tokens = Db::loadAll('SELECT * FROM tokens WHERE token = ? AND expire >= CURRENT_TIMESTAMP AND blocked = 0;', array($token)); - if (count($tokens) == 1) { - return true; - } else if (count($tokens) == 0) { - return false; - }; - return false; - } -} diff --git a/www/app/models/managers/AutomationManager.php b/www/app/models/managers/AutomationManager.php deleted file mode 100644 index aacf6f7..0000000 --- a/www/app/models/managers/AutomationManager.php +++ /dev/null @@ -1,175 +0,0 @@ - $name, - 'owner_id' => $userId, - 'on_days' => $onDays, - 'if_something' => $ifCode, - 'do_something' => $doCode, - ); - try { - if ($automationId == "") { - Db::add ('automation', $scene); - } else { - Db::edit ('automation', $scene, 'WHERE automation_id = ?', array ($automationId)); - } - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - public static function getAll(){ - return Db::loadAll ("SELECT * FROM automation"); - - } - - public static function executeAll(){ - global $logManager; - - $automations = Db::loadAll ("SELECT * FROM automation"); - $dayNameNow = strtolower (date('D', time())); - - foreach ($automations as $automation) { - $onValue = json_decode($automation['if_something'], true); - $sceneDoJson = $automation['do_something']; - $actionDays = json_decode($automation['on_days'], true); - $value = time(); - $run = false; - $restart = false; - - if ($automation['active'] == 1 && $automation['locked'] != 1){ - Db::edit('automation', array('locked' => 1), 'WHERE automation_id = ?', array($automation['automation_id'])); - if (in_array($dayNameNow, $actionDays)){ - if (in_array($onValue['type'], ['sunSet', 'sunRise', 'time','now'])) { - if ($onValue['type'] == 'sunSet') { - $value = date_sunset($value, SUNFUNCS_RET_TIMESTAMP, 50.0755381 , 14.4378005, 90); - } else if ($onValue['type'] == 'sunRise') { - $value = date_sunrise($value, SUNFUNCS_RET_TIMESTAMP, 50.0755381 , 14.4378005, 90); - } else if ($onValue['type'] == 'time') { - $onValue = explode(':',$onValue['value']); - $today = date_create('now'); - $onValue = $today->setTime($onValue[0], $onValue[1]); - $value = $today->getTimestamp(); - } - - if (time() > $value && $automation['executed'] == 0){ - $run = true; - } else if (time() < $value && $automation['executed'] == 1) { //recovery realowing of automation - $restart = true; - } - - } else if ($onValue['type'] == 'outHome') { - //TODO: Add Ovner to automation - $userHomeStatus = UserManager::getUserData('at_home', $onValue['value']); - if ($userHomeStatus == 'false' && $automation['executed'] == 0) { - $run = true; - } else if ($userHomeStatus == 'true' && $automation['executed'] == 1) { - $restart = true; - } - } else if ($onValue['type'] == 'inHome') { - //TODO: Add Ovner to automation - $userHomeStatus = UserManager::getUserData('at_home', $onValue['value']); - if ($userHomeStatus == 'true' && $automation['executed'] == 0) { - $run = true; - } else if ($userHomeStatus == 'false' && $automation['executed'] == 1) { - $restart = true; - } - } else if ($onValue['type'] == 'noOneHome') { - $users = UserManager::getUsers(); - $membersHome = 0; - foreach ($users as $key => $user) { - if ($user['at_home'] == 'true'){ - $membersHome++; - } - } - if ($membersHome == 0 && $automation['executed'] == 0) { - $run = true; - } else if ($membersHome > 0 && $automation['executed'] == 1){ - $restart = true; - } - } else if ($onValue['type'] == 'someOneHome') { - $users = UserManager::getUsers(); - $membersHome = 0; - foreach ($users as $key => $user) { - if ($user['at_home'] == 'true'){ - $membersHome++; - } - } - if ($membersHome == 0 && $automation['executed'] == 1) { - $restart = true; - } else if ($membersHome > 0 && $automation['executed'] == 0){ - $run = true; - } - } else if ($onValue['type'] == 'atDeviceValue') { - - $subDeviceId = SubDeviceManager::getSubDeviceByMaster($onValue['value']['deviceID'], $onValue['value']['type'])["subdevice_id"]; - $lastValue = RecordManager::getLastRecord($subDeviceId); - - if ($lastValue['value'] == $onValue['value']['value'] && $automation['executed'] == 0) { - $run = true; - - } else if ($lastValue['value'] != $onValue['value']['value'] && $automation['executed'] == 1){ - $restart = true; - - } - } - - //finalization - if ($run) { - $body = ''; - - $sceneDoArray = json_decode($sceneDoJson); - foreach ($sceneDoArray as $deviceId => $deviceState) { - RecordManager::create($deviceId, 'on/off', $deviceState); - } - - $subscribers = NotificationManager::getSubscription(); - $i = 0; - - $notificationMng = new NotificationManager; - $notificationData = [ - 'title' => 'Automatization', - 'body' => 'Automatization '.$automation['name']." was just executed", - 'icon' => BASEDIR . '/app/templates/images/icon-192x192.png', - ]; - - if ($notificationData != []) { - $subscribers = $notificationMng::getSubscription(); - foreach ($subscribers as $key => $subscriber) { - $logManager->write("[NOTIFICATION/AUTOOMATION] SENDING TO" . $subscriber['id'] . " "); - $notificationMng::sendSimpleNotification(SERVERKEY, $subscriber['token'], $notificationData); - } - } - - $logManager->write("[AUTOMATIONS] automation id ". $automation['automation_id'] . " was executed"); - Db::edit('automation', array('executed' => 1, 'execution_time' => date("Y-m-d H:i:s")), 'WHERE automation_id = ?', array($automation['automation_id'])); - } else if ($restart) { - $logManager->write("[AUTOMATIONS] automation id ". $automation['automation_id'] . " was restarted"); - Db::edit('automation', array('executed' => 0), 'WHERE automation_id = ?', array($automation['automation_id'])); - } - Db::edit('automation', array('locked' => 0), 'WHERE automation_id = ?', array($automation['automation_id'])); - } - } - } - } -} diff --git a/www/app/models/managers/ChartManager.php b/www/app/models/managers/ChartManager.php deleted file mode 100644 index d26757c..0000000 --- a/www/app/models/managers/ChartManager.php +++ /dev/null @@ -1,129 +0,0 @@ -Aktuální Hodnota: '.$data[0]['value']; - echo ""; - echo '
'; - echo '
'; - for ($valuesRow = 0; $valuesRow < count($data); $valuesRow++) { - $row = $data[$valuesRow]; - - echo '
'; - } - echo '
'; - echo '
'; - echo ''; - echo 'Poslední Update: '; - - echo ' - '; - } - - function generateChartData(int $subDeviceId, string $periode, string $groupBy) { - $chartData = []; - - $subDevice = SubDeviceManager::getSubDevice($subDeviceId); - $records = RecordManager::getAllRecordForGraph($subDeviceId, $periode, $groupBy); - - $array = array_column($records, 'value'); - $arrayTime = array_column($records, 'time'); - $output = []; - - foreach ($array as $key => $value) { - $output[$key]['y'] = $value; - if ($subDevice['type'] == 'light'){ - if ($value > 810){ - $output[$key]['y'] = 1; - } else { - $output[$key]['y'] = 0; - } - } - - $timeStamp = new DateTime($arrayTime[$key]); - $output[$key]['t'] = $timeStamp->format("Y-m-d") . 'T' . $timeStamp->format("H:i:s") . 'Z'; - } - - $data = json_encode($output); - $data = $output; - $arrayTimeStamps = array_column($records, 'time'); - foreach ($arrayTimeStamps as $key => $value) { - $arrayTimeStamps[$key] = (new DateTime($value))->format(TIMEFORMAT); - } - - $chartData['graphRange'] = RANGES[$subDevice['type']]; - $chartData['graphType'] = RANGES[$subDevice['type']]['graph']; - $chartData['graphData'] = $data; - - return $chartData; - } -} -?> diff --git a/www/app/models/managers/DashboardManager.php b/www/app/models/managers/DashboardManager.php deleted file mode 100644 index b241a35..0000000 --- a/www/app/models/managers/DashboardManager.php +++ /dev/null @@ -1,41 +0,0 @@ - UserManager::getUserData('user_id'), - 'subdevice_id' => $subDeviceId, - ); - try { - Db::add ('dashboard', $dashboardItem); - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - } - - static function Remove ($subDeviceId){ - $userId = UserManager::getUserData('user_id'); - Db::command ('DELETE FROM dashboard WHERE subdevice_id=? AND user_id = ?', array ($subDeviceId, $userId)); - } -} diff --git a/www/app/models/managers/DeviceManager.php b/www/app/models/managers/DeviceManager.php deleted file mode 100644 index 53255f8..0000000 --- a/www/app/models/managers/DeviceManager.php +++ /dev/null @@ -1,96 +0,0 @@ - $name, - 'token' => $token, - 'room_id' => $defaultRoom, - ); - try { - Db::add ('devices', $device); - return Db::loadOne("SELECT device_id FROM devices WHERE token = ?", array($token))['device_id']; - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - public static function edit ($deviceId, $values = []) { - try { - Db::edit ('devices', $values, 'WHERE device_id = ?', array($deviceId)); - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - public static function editByToken ($token, $values = []) { - try { - Db::edit ('devices', $values, 'WHERE token = ?', array($token)); - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - /** - * [assignRoom Přiřazení zařízení do třídy] - * @param [type] $roomId [číslo místnosti do kter se má zařízení přiřadit] - * @param [type] $deviceId [Číslo zařízení které chcete přiřadit do místnosti] - */ - public static function assignRoom ($roomId, $deviceId) { - $device = array ( - 'room_id' => $roomId, - ); - try { - Db::edit ('devices', $device, 'WHERE device_id = ?', array($deviceId)); - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - /** - * [delete Smazání zařízení] - * @param [type] $deviceId [Id zařízení ke smazání] - */ - public static function delete ($deviceId) { - Db::command ('DELETE FROM devices WHERE device_id=?', array ($deviceId)); - } - - public static function registeret ($deviceToken) { - return (count(Db::loadAll ("SELECT * FROM devices WHERE token=?", array($deviceToken))) == 1 ? true : false); - } - - public static function approved ($deviceToken) { - return (count(Db::loadAll ("SELECT * FROM devices WHERE token=? AND approved = ?", array($deviceToken, 1))) == 1 ? true : false); - } -} -?> diff --git a/www/app/models/managers/FallbackManager.php b/www/app/models/managers/FallbackManager.php deleted file mode 100644 index cb3fb79..0000000 --- a/www/app/models/managers/FallbackManager.php +++ /dev/null @@ -1,44 +0,0 @@ -deviceDefinitions = $deviceDefinition; - } - - function check(){ - //TODO: FIX IT - $allDevicesData = DeviceManager::getAllDevices(); - foreach ($allDevicesData as $deviceKey => $deviceValue) { - $allSubDevicesData = SubDeviceManager::getAllSubDevices($deviceValue['device_id']); - foreach ($allSubDevicesData as $subDeviceKey => $subDeviceValue) { - if (!isset($this->deviceDefinitions[$subDeviceValue['type']]["fallBack"])) { - continue; - } - - if (!isset($this->deviceDefinitions[$subDeviceValue['type']]["fallBackTime"])) { - continue; - } - - $lastRecord = RecordManager::getLastRecord($subDeviceValue['subdevice_id']); - if ($lastRecord["value"] == $this->deviceDefinitions[$subDeviceValue['type']]["fallBack"]) { - continue; - } - - $minutes = (time() - strtotime($lastRecord['time'])) / 60; - - if ( $minutes > $this->deviceDefinitions[$subDeviceValue['type']]["fallBackTime"]){ - RecordManager::create($deviceValue['device_id'], $subDeviceValue['type'], $this->deviceDefinitions[$subDeviceValue['type']]["fallBack"]); - } - } - } - } -} diff --git a/www/app/models/managers/LanguageManager.php b/www/app/models/managers/LanguageManager.php deleted file mode 100644 index 507bd88..0000000 --- a/www/app/models/managers/LanguageManager.php +++ /dev/null @@ -1,60 +0,0 @@ -lngCode = $lngCode; - $this->debug = $debug; - } - - function load() - { - $file = '../lang/en.php'; - if (!file_exists($file)){ - echo 'ERROR: en.php not found'; - die(); - //TODO add lng EXEPTIONS - } - $arrayFirst = include($file); - $file = '../lang/' . $this->lngCode . '.php'; - $arraySecond = []; - if (file_exists($file)){ - $arraySecond = include($file); - } - $this->lngDatabase = array_merge($arrayFirst, $arraySecond); - return true; - } - - function get(string $stringKey) - { - if ($this->debug) { - return $stringKey; - } - if (isset($this->lngDatabase[$stringKey])) { - return $this->lngDatabase[$stringKey]; - } - return $stringKey; - } - - function echo(string $stringKey) - { - if ($this->debug) { - echo $stringKey; - return; - } - if (isset($this->lngDatabase[$stringKey])) { - echo $this->lngDatabase[$stringKey]; - return; - } - echo $stringKey; - return; - } -} diff --git a/www/app/models/managers/LogManager.php b/www/app/models/managers/LogManager.php deleted file mode 100644 index dde1c14..0000000 --- a/www/app/models/managers/LogManager.php +++ /dev/null @@ -1,57 +0,0 @@ - $file) { - if (in_array($file,array(".","..", ".gitkeep", $todayFileName))) - { - continue; - } - if (filemtime($file) > $seconds) { - unlink('../logs/'.$file); - } - } - } -} - -class LogManager -{ - - private $logFile; - function __construct($fileName = "") - { - if ($fileName == ""){ - $fileName = '../logs/'. date("Y-m-d").'.log'; - } - if(!is_dir("../logs/")) - { - mkdir("../logs/"); - } - $this->logFile = fopen($fileName, "a") or die("Unable to open file!"); - } - - function write($value, $type = LogRecordType::ERROR){ - $record = "[".date("H:m:s")."][".$type."]" . $value . "\n"; - fwrite($this->logFile, $record); - } - - function __destruct(){ - if (isset($this->logFile)) { - fclose($this->logFile); - } - } -} diff --git a/www/app/models/managers/NetworkManager.php b/www/app/models/managers/NetworkManager.php deleted file mode 100644 index 247e0df..0000000 --- a/www/app/models/managers/NetworkManager.php +++ /dev/null @@ -1,18 +0,0 @@ - $userID, - 'token' => $token, - ); - Db::add ('notifications', $notification); - } - } - - function getSubscription () { - return Db::loadAll ("SELECT * FROM notifications"); - } - - function sendSimpleNotification(string $serverKey, string $to, array $data, bool $timeStamp = false){ - $dataTemplate = [ - 'title' => '', - 'body' => '', - 'icon' => '', - ]; - - if (array_diff_key ($dataTemplate , $data)){ - return; - } - - if ($timeStamp) { - $data['title'] = $data['title'] . date(); - } - - $notification = new Notification($serverKey); - $notification->to($to); - $notification->notification($data['title'], $data['body'], $data['icon'], ''); - $answer = $notification->send(); - $notification = null; - - return $answer; - } -} - -class Notification -{ - public $server_key = ''; - public $jsonPayload = [ - "to" => '', - "data" => [ - "notification" => [ - "body" => '', - "title" => '', - "icon" => '', - "click_action" => '', - ] - ] - ]; - - function __construct($serverKey = '') - { - $this->server_key = $serverKey; - } - - function to($to = ''){ - $this->jsonPayload["to"] = $to; - } - - function notification($title = '', $body = '', $icon = '', $action = '', bool $timeStamp = false) - { - if ($timeStamp) { - $data['title'] = $data['title'] . date(); - } - - $this->jsonPayload["data"]["notification"]["title"] = $title; - $this->jsonPayload["data"]["notification"]["body"] = $body; - $this->jsonPayload["data"]["notification"]["icon"] = $icon; - $this->jsonPayload["data"]["notification"]["click_action"] = $action; - } - - function send(){ - $data = json_encode($this->jsonPayload); - $url = 'https://fcm.googleapis.com/fcm/send'; - $headers = array( - 'Content-Type:application/json', - 'Authorization:key='.$this->server_key, - ); - - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($ch, CURLOPT_POSTFIELDS, $data); - $result = curl_exec($ch); - if ($result === FALSE) { - die('Oops! FCM Send Error: ' . curl_error($ch)); - } - curl_close($ch); - return $result; - } -} diff --git a/www/app/models/managers/RecordManager.php b/www/app/models/managers/RecordManager.php deleted file mode 100644 index 143b6a2..0000000 --- a/www/app/models/managers/RecordManager.php +++ /dev/null @@ -1,106 +0,0 @@ - 1, - ]; - Db::edit ('records', $record, 'WHERE subdevice_id = ?', array ($subDeviceId)); - $record = array ( - 'subdevice_id' => $subDeviceId, - 'value' => $value, - ); - return Db::add ('records', $record); - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - public static function create ($deviceId, $type, $value) { - $subDeviceId = Db::loadOne('SELECT * FROM subdevices WHERE device_id = ? AND type = ?;', array($deviceId, $type))['subdevice_id']; - if ($subDeviceId == '') { - return false; - }; - try { - $record = [ - 'execuded' => 1, - ]; - Db::edit ('records', $record, 'WHERE subdevice_id = ?', array ($subDeviceId)); - $record = array ( - 'subdevice_id' => $subDeviceId, - 'value' => $value, - ); - return Db::add ('records', $record); - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - - public static function setExecuted($recordId) { - try { - Db::edit ('records', ['execuded' => 1], 'WHERE record_id = ?', array($recordId)); - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - public static function getRecordById($recordId) { - return Db::loadOne('SELECT * FROM records WHERE record_id = ?;', array($recordId)); - } - - public static function getLastInsertedRecordId() { - return Db::insertId(); - } - - public static function getLastRecord($subDeviceId, $num = 1) { - if ($num == 1) - return Db::loadOne('SELECT * FROM records WHERE subdevice_id = ? AND value != ? ORDER BY time DESC;', array($subDeviceId, 999)); - return Db::loadAll('SELECT * FROM records WHERE subdevice_id = ? AND value != ? ORDER BY time DESC LIMIT ?;', array($subDeviceId, 999, $num)); - } - - public static function getLastRecordNotNull($subDeviceId) { - return Db::loadOne('SELECT * FROM records WHERE subdevice_id = ? AND value != ? ORDER BY time DESC;', array($subDeviceId, 0)); - } - - public static function getAllRecord($subDeviceId, $timeFrom, $timeTo) { - return Db::loadAll('SELECT * FROM records WHERE subdevice_id = ? AND time >= ? AND time <= ? AND value != ? ORDER BY time;', array($subDeviceId, $timeFrom, $timeTo, 999)); - } - - public static function getAllRecordForGraph($subDeviceId, $period = "day", $groupBy = "hour") { - $periodLocal = '- 1 ' . strtoupper($period); - $dateTime = new DateTime(); - $dateTime = $dateTime->modify($periodLocal); - $dateTime = $dateTime->format('Y-m-d'); - $groupBy = strtoupper($groupBy).'(time)'; - $sql = 'SELECT value, time FROM records - WHERE - subdevice_id = ? - AND - value != 999 - AND - time > ? - GROUP BY '.$groupBy.' - ORDER BY time ASC'; - //TODO: Prasárna Opravit - return Db::loadAll($sql, array($subDeviceId, $dateTime)); - } - - public static function clean ($day) { - if (isset($day)) { - Db::command ('DELETE FROM records WHERE `time` < ADDDATE(NOW(), INTERVAL -? DAY);', array($day)); - } - } - - - //TODO: zkontrolovat jestli neco nezbilo po smazaní - public static function cleanSubdeviceRecords ($subDeviceId) { - Db::command ('DELETE FROM records WHERE subdevice_id = ?);', array($subDeviceId)); - } -} -?> diff --git a/www/app/models/managers/RoomManager.php b/www/app/models/managers/RoomManager.php deleted file mode 100644 index 795ee79..0000000 --- a/www/app/models/managers/RoomManager.php +++ /dev/null @@ -1,36 +0,0 @@ - $name, - ); - try { - Db::add ('rooms', $room); - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - public static function delete ($roomId) { - Db::command ('DELETE FROM rooms WHERE room_id=?', array ($roomId)); - } -} -?> diff --git a/www/app/models/managers/SceneManager.php b/www/app/models/managers/SceneManager.php deleted file mode 100644 index 2cd7fb8..0000000 --- a/www/app/models/managers/SceneManager.php +++ /dev/null @@ -1,41 +0,0 @@ - $icon, - 'name' => $name, - 'do_something' => $doCode, - ); - try { - Db::add ('scenes', $scene); - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - public static function getAllScenes () { - return Db::loadAll ("SELECT * FROM scenes"); - } - - public static function getScene ($sceneId) { - return Db::loadOne("SELECT * FROM scenes WHERE scene_id = ?", array($sceneId)); - } - - public static 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 static function delete($sceneId){ - Db::command ('DELETE FROM scenes WHERE scene_id=?', array ($sceneId)); - } -} -?> diff --git a/www/app/models/managers/SubDeviceManager.php b/www/app/models/managers/SubDeviceManager.php deleted file mode 100644 index 712db1d..0000000 --- a/www/app/models/managers/SubDeviceManager.php +++ /dev/null @@ -1,97 +0,0 @@ - $type) { - $parsedTypes[$orderNum] = $type['type']; - } - return $parsedTypes; - } - - //check if dubdevice exist - - public static function create($deviceId, $type, $unit) - { - $record = array( - 'device_id' => $deviceId, - 'type' => $type, - 'unit' => $unit, - ); - try { - Db::add('subdevices', $record); - } catch (PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - public static function remove($subDeviceId) - { - RecordManager::cleanSubdeviceRecords($subDeviceId); - return Db::loadAll("DELETE FROM subdevices WHERE subdevice_id = ?", array($subDeviceId)); - } - - public static function getSubdevicesByRoomIds($roomIds = NULL) { - if(empty($roomIds)) return NULL; - - $rows = Db::loadAll(" - SELECT d.room_id, sd.subdevice_id, sd.device_id, d.name, sd.type, sd.unit, r.value FROM subdevices sd - JOIN devices d ON sd.device_id = d.device_id - JOIN records r ON r.subdevice_id = sd.subdevice_id - WHERE d.room_id IN (".str_repeat("?,", count($roomIds)-1)."?) - AND r.record_id IN ( - SELECT MAX(record_id) - FROM records - GROUP BY subdevice_id - ) - ", $roomIds); - - $ret = []; - foreach($rows as $row){ - $ret[$row['room_id']][] = $row; - } - - return $ret; - } -} diff --git a/www/app/models/managers/UserManager.php b/www/app/models/managers/UserManager.php deleted file mode 100644 index 05fd3ef..0000000 --- a/www/app/models/managers/UserManager.php +++ /dev/null @@ -1,210 +0,0 @@ -getMessage(); - die(); - } - } - - public static function getUser ($userName) { - try { - $user = Db::loadOne ("SELECT * FROM users WHERE username = ?", [$userName]); - return $user; - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - public static function getUserId ($userId) { - try { - $user = Db::loadOne ("SELECT * FROM users WHERE user_id = ?", [$userId]); - return $user; - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - public static function getAvatarUrl($userId = null){ - $email = self::getUserData('email'); - if ($userId != null){ - $email = self::getUserData('email',$userId); - } - return 'https://secure.gravatar.com/avatar/' . md5( strtolower( trim( $email ) ) ); - } - - public static function login ($username, $password, $rememberMe) { - try { - if ($user = Db::loadOne ('SELECT * FROM users WHERE LOWER(username)=LOWER(?)', array ($username))) { - if ($user['password'] == UserManager::getHashPassword($password)) { - if (isset($rememberMe) && $rememberMe == 'true') { - setcookie ("rememberMe", self::setEncryptedCookie($user['username']), time () + (30 * 24 * 60 * 60 * 1000), BASEDIR, $_SERVER['HTTP_HOST'], 1); - } - $_SESSION['user']['id'] = $user['user_id']; - $page = ""; - if ($user["startPage"] == 1) { - $page = "dashboard"; - } - unset($_POST['login']); - return $page; - } else { - throw new PDOException("Heslo není správné!"); - } - } else { - throw new PDOException("Uživatel s tím to jménem neexistuje!"); - } - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - public static function loginNew ($username, $password) { - try { - if ($user = Db::loadOne ('SELECT * FROM users WHERE LOWER(username)=LOWER(?)', array ($username))) { - if ($user['password'] == UserManager::getHashPassword($password)) { - echo "user loged in"; - return $user['user_id']; - } else { - return false; - } - } else { - return false; - } - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - public static function isLogin () { - if (isset ($_SESSION['user']) && isset($_SESSION['user']['id'])) { - return true; - } else { - if (isset ($_COOKIE['rememberMe'])){ - if ($user = Db::loadOne ('SELECT * FROM users WHERE LOWER(username)=LOWER(?)', array (self::getDecryptedCookie($_COOKIE['rememberMe'])))) { - $_SESSION['user']['id'] = $user['user_id']; - return true; - } - } - } - return false; - } - - public static function logout () { - unset($_SESSION['user']); - session_destroy(); - if (isset($_COOKIE['rememberMe'])){ - unset($_COOKIE['rememberMe']); - setcookie("rememberMe", 'false', time(), BASEDIR, $_SERVER['HTTP_HOST']); - } - } - - public static function setEncryptedCookie($value){ - $first_key = base64_decode(FIRSTKEY); - $second_key = base64_decode(SECONDKEY); - - $method = "aes-256-cbc"; - $ivlen = openssl_cipher_iv_length($method); - $iv = openssl_random_pseudo_bytes($ivlen); - $newvalue_raw = openssl_encrypt($value, $method, $first_key, OPENSSL_RAW_DATA, $iv); - $hmac = hash_hmac('sha256', $newvalue_raw, $second_key, TRUE); - $newvalue = base64_encode ($iv.$hmac.$newvalue_raw); - return $newvalue; - } - - public static function getDecryptedCookie($value){ - $first_key = base64_decode(FIRSTKEY); - $second_key = base64_decode(SECONDKEY); - - $c = base64_decode($value); - $method = "aes-256-cbc"; - $ivlen = openssl_cipher_iv_length($method); - $iv = substr($c, 0, $ivlen); - $hmac = substr($c, $ivlen, 32); - $newValue_raw = substr($c, $ivlen+32); - $newValue = openssl_decrypt($newValue_raw, $method, $first_key, OPENSSL_RAW_DATA, $iv); - $calcmac = hash_hmac('sha256', $newValue_raw, $second_key, TRUE); - if (hash_equals ($hmac, $calcmac)) { - return $newValue; - } - return false; - } - - public static function getUserData ($type, $userId = '') { - if ($userId == '') { - $userId = $_SESSION['user']['id']; - } - $user = Db::loadOne ('SELECT ' . $type . ' FROM users WHERE user_id=?', array ($userId)); - return $user[$type]; - } - - public static function setUserData ($type, $value) { - if (isset ($_SESSION['user']['id'])) { - Db::command ('UPDATE users SET ' . $type . '=? WHERE user_id=?', array ($value, $_SESSION['user']['id'])); - } - } - - public static function getHashPassword ($password) { - $salt = "s0mRIdlKvI"; - $hashPassword = hash('sha512', ($password . $salt)); - return $hashPassword; - } - - public static function atHome($userId, $atHome){ - try { - Db::edit ('users', ['at_home' => $atHome], 'WHERE user_id = ?', array($userId)); - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - public static function changePassword($oldPassword, $newPassword, $newPassword2){ - if ($newPassword == $newPassword2) { - //Password Criteria - $oldPasswordSaved = self::getUserData('password'); - if (self::getHashPassword($oldPassword) == $oldPasswordSaved) { - self::setUserData('password', self::getHashPassword($newPassword)); - } else { - throw new Exception ("old password did not match"); - } - } else { - throw new Exception ("new password arent same"); - } - } - - public static function createUser($userName, $password){ - $userId = Db::loadOne('SELECT * FROM users WHERE username = ?;', array($userName))['user_id']; - if ($userId != null) { - return false; - }; - try { - $user = [ - 'username' => $userName, - 'password' => self::getHashPassword($password), - ]; - return Db::add ('users', $user); - } catch(PDOException $error) { - echo $error->getMessage(); - die(); - } - } - - public static function haveOtaEnabled($userName){ - $ota = self::getUser($userName)['ota']; - - if ($ota != ''){ - return ($ota != '' ? $ota : false); - } else { - return false; - } - } -} -?> diff --git a/www/app/models/managers/Utilities.php b/www/app/models/managers/Utilities.php deleted file mode 100644 index 32b66af..0000000 --- a/www/app/models/managers/Utilities.php +++ /dev/null @@ -1,144 +0,0 @@ - 'a', - '/[ÁÀÂÃÄ]/u' => 'A', - '/[ÍÌÎÏ]/u' => 'I', - '/[íìîï]/u' => 'i', - '/[ěéèêë]/u' => 'e', - '/[ĚÉÈÊË]/u' => 'E', - '/[óòôõºö]/u' => 'o', - '/[ÓÒÔÕÖ]/u' => 'O', - '/[úùûü]/u' => 'u', - '/[ÚÙÛÜ]/u' => 'U', - '/Š/' => 'S', - '/š/' => 's', - '/Č/' => 'C', - '/č/' => 'c', - '/ř/' => 'r', - '/Ř/' => 'R', - '/Ý/' => 'Y', - '/ý/' => 'y', - '/ç/' => 'c', - '/Ç/' => 'C', - '/ñ/' => 'n', - '/Ñ/' => 'N', - '/–/' => '-', // UTF-8 hyphen to "normal" hyphen - '/[’‘‹›‚]/u' => ' ', // Literally a single quote - '/[“”«»„]/u' => ' ', // Double quote - '/ /' => ' ', // nonbreaking space (equiv. to 0x160) - ); - return preg_replace(array_keys($utf8), array_values($utf8), $text); - } - - static function stringInsert($str,$insertstr,$pos) - { - $str = substr($str, 0, $pos) . $insertstr . substr($str, $pos); - return $str; - } - - /** - * [generateGraphJson description] - * @param string $type [line/bar] - * @param array $data [description] - * @param array $options [description] - * @return [type] [description] - */ - - static function generateGraphJson(string $type = 'line', array $data = [], array $options = []){ - $array = [ - 'type' => $type, - 'data' => [ - 'datasets' => [ - [ - 'data' => $data, - 'borderColor' => "#d4def7", - 'backgroundColor' => "#d4def7" - ] - ] - ], - 'options' => [ - 'scales' => [ - 'xAxes' => [ - [ - 'type' => 'time', - 'distribution' => 'linear', - ] - ], - 'yAxes' => [ - [ - 'ticks' => [ - 'min' => $options['min'], - 'max' => $options['max'], - 'steps' => $options['scale'] - ] - ] - ] - ], - 'legend' => [ - 'display' => false - ], - 'tooltips' => [ - 'enabled' => true - ], - 'hover' => [ - 'mode' => true - ] - ] - ]; - return json_encode($array, JSON_PRETTY_PRINT); - } - - static function ago( $datetime ) - { - $interval = date_create('now')->diff( $datetime ); - $suffix = ( $interval->invert ? ' ago' : '' ); - if ( $v = $interval->y >= 1 ) return self::pluralize( $interval->m, 'month' ) . $suffix; - if ( $v = $interval->d >= 1 ) return self::pluralize( $interval->d, 'day' ) . $suffix; - if ( $v = $interval->h >= 1 ) return self::pluralize( $interval->h, 'hour' ) . $suffix; - if ( $v = $interval->i >= 1 ) return self::pluralize( $interval->i, 'minute' ) . $suffix; - return self::pluralize( $interval->s, 'second' ) . $suffix; - } - - static function pluralize( $count, $text ) - { - return $count . ( ( $count == 1 ) ? ( " $text" ) : ( " ${text}s" ) ); - } - - static function checkOperator($value1, $operator, $value2) { - switch ($operator) { - case '<': // Less than - return $value1 < $value2; - case '<=': // Less than or equal to - return $value1 <= $value2; - case '>': // Greater than - return $value1 > $value2; - case '>=': // Greater than or equal to - return $value1 >= $value2; - case '==': // Equal - return ($value1 == $value2); - case '===': // Identical - return $value1 === $value2; - case '!==': // Not Identical - return $value1 !== $value2; - case '!=': // Not equal - case '<>': // Not equal - return $value1 != $value2; - case '||': // Or - case 'or': // Or - return $value1 || $value2; - case '&&': // And - case 'and': // And - return $value1 && $value2; - case 'xor': // Or - return $value1 xor $value2; - default: - return FALSE; - } // end switch - } -} diff --git a/www/app/models/types/GoogleHomeDeviceTypes.php b/www/app/models/types/GoogleHomeDeviceTypes.php deleted file mode 100644 index 6f142b7..0000000 --- a/www/app/models/types/GoogleHomeDeviceTypes.php +++ /dev/null @@ -1,107 +0,0 @@ - 'action.devices.types.OUTLET', - 'temp_cont' => 'action.devices.types.THERMOSTAT', - ]; - - static function getAction($deviceType){ - return self::$actionWordBook[$deviceType]; - } - - static function getSyncObj($deviceBaseObj, $deviceType){ - switch ($deviceType) { - case 'action.devices.types.LIGHT': - case 'action.devices.types.OUTLET': - $deviceBaseObj['traits'] = [ - 'action.devices.traits.OnOff' - ]; - break; - case 'action.devices.types.THERMOSTAT': - $deviceBaseObj['traits'] = [ - 'action.devices.traits.TemperatureSetting', - ]; - $deviceBaseObj['attributes'] = [ - "availableThermostatModes" => "off,heat", - "thermostatTemperatureUnit" => "C", - ]; - break; - } - return $deviceBaseObj; - } - - static function getQueryJson($deviceType, $type){ - return self::$wordBook[$type]; - } -} diff --git a/www/app/models/types/WidgetTypes.php b/www/app/models/types/WidgetTypes.php deleted file mode 100644 index 7e0dd7d..0000000 --- a/www/app/models/types/WidgetTypes.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - 'name' => 'value', - 'active' => false - ], - self::ICON => [ - 'name' => 'icon', - 'active' => false - ], - self::BUTTON => [ - 'name' => 'button', - 'active' => true - ], - self::SWITH => [ - 'name' => 'switch', - 'active' => true - ], - self::RANGE => [ - 'name' => 'range', - 'active' => true - ], - self::CUSTOM => [ - 'name' => 'custom', - 'active' => true - ], - ]; - - public static function getName($type){ - return self::$types[$type]; - } - - public static function isActive($type){ - return isset(self::$types[$type]) && self::$types[$type]['active']; - } -} diff --git a/www/app/views/Ajax.php b/www/app/views/Ajax.php deleted file mode 100644 index 96554a3..0000000 --- a/www/app/views/Ajax.php +++ /dev/null @@ -1,223 +0,0 @@ -isLogin()){ - header('Location: ' . BASEURL); - } - - $is_ajax = 'XMLHttpRequest' == ( $_SERVER['HTTP_X_REQUESTED_WITH'] ?? '' ); - if (!$is_ajax){ - header('Location: ' . BASEURL); - } - - if ( - isset($_POST['automation_id']) && - $_POST['automation_id'] != '' && - isset($_POST['action']) && - $_POST['action'] != '' - ) { - $automationId = $_POST['automation_id']; - //Automation Editation of Automations from Buttons/Details - switch ($_POST['action']) { - case 'delete': - AutomationManager::remove($automationId); - die(); - break; - - case 'deactive': - AutomationManager::deactive($automationId); - die(); - break; - - case 'restart': - AutomationManager::restart($automationId); - die(); - break; - - default: - echo 'no action detected'; - break; - } - } else if ( - isset($_POST['subDevice_id']) && - $_POST['subDevice_id'] != '' && - isset($_POST['action']) && - $_POST['action'] != '' - ) { - $subDeviceId = $_POST['subDevice_id']; - switch ($_POST['action']) { - case 'chart': - $period = $_POST['period']; - $groupBy = $_POST['group']; - header('Content-Type: application/json'); - $graphData = ChartManager::generateChartData($subDeviceId, $period, $groupBy); - echo Utilities::generateGraphJson($graphData['graphType'], $graphData['graphData'], $graphData['graphRange']); - die(); - break; - - //Change On/Off Device State of Device Button - case 'change': - $subDeviceData = SubDeviceManager::getSubDevice($subDeviceId); - $deviceId = SubDeviceManager::getSubDeviceMaster($subDeviceId)['device_id']; - if ($subDeviceData['type'] == 'on/off'){ - $lastValue = RecordManager::getLastRecord($subDeviceData['subdevice_id'])['value']; - RecordManager::create($deviceId, 'on/off', !$lastValue); - echo (!$lastValue ? 'ON' : 'OFF'); - } - die(); - break; - - //Waitin for execution of Changet walue for Device Button - case 'executed': - echo RecordManager::getLastRecord($subDeviceId)['execuded']; - die(); - break; - - case 'set': - $value = $_POST['value']; - $subDevice = SubDeviceManager::getSubDevice($subDeviceId); - RecordManager::create($subDevice['device_id'], $subDevice['type'], $value); - echo 'test id' . $subDevice['device_id'] .$subDevice['type'] . $value ; - die(); - break; - - default: - echo 'no action detected'; - break; - } - } else if ( - isset($_POST['scene_id']) && - $_POST['scene_id'] != '' && - isset($_POST['action']) && - $_POST['action'] != '' - ) { - $sceneId = $_POST['scene_id']; - switch ($_POST['action']) { - case 'delete': - SceneManager::delete($sceneId); - die(); - break; - - case 'execute': - echo SceneManager::execScene($sceneId); - die(); - break; - - default: - echo 'no action detected'; - break; - } - } else if ( - isset($_POST['notification']) && - $_POST['notification'] != '' && - isset($_POST['action']) && - $_POST['action'] != '' - ) { - switch ($_POST['action']) { - //add suscription to database - case 'subscribe': - $subscriptionToken = $_POST['token']; - NotificationManager::addSubscriber($_SESSION['user']['id'], $subscriptionToken); - die(); - break; - - case 'sendTest': - $notificationData = [ - 'title' => 'Alert', - 'body' => 'test notification', - 'icon' => BASEDIR . '/app/templates/images/icon-192x192.png', - ]; - $notificationMng = new NotificationManager; - $subscribers = $notificationMng::getSubscription(); - foreach ($subscribers as $key => $subscriber) { - echo $subscriber['user_id']; - if ($subscriber['user_id'] != $_SESSION['user']['id']) continue; - echo $notificationMng::sendSimpleNotification(SERVERKEY, $subscriber['token'], $notificationData); - } - die(); - break; - - default: - echo 'no action detected'; - break; - } - } else if ( - isset($_POST['action']) && - $_POST['action'] != '' - ) { - $updateData = []; - $allDevicesData = DeviceManager::getAllDevices(); - foreach ($allDevicesData as $deviceKey => $deviceValue) { - $allSubDevices = SubDeviceManager::getAllSubDevices($deviceValue['device_id']); - foreach ($allSubDevices as $key => $subDevicesData) { - - $lastRecord = RecordManager::getLastRecord($subDevicesData['subdevice_id']); - $parsedValue = $lastRecord['value'] . $subDevicesData['unit']; - - //TODO: udělat parser a ten použít jak v houmu tak zde - switch ($subDevicesData['type']) { - case 'on/off': - $replacementTrue = 'On'; - $replacementFalse = 'Off'; - $operator = '=='; - $breakValue = 1; - break; - - case 'door': - $replacementTrue = 'Closed'; - $replacementFalse = 'Open'; - $operator = '=='; - $breakValue = 1; - break; - - case 'light': - $replacementTrue = 'Light'; - $replacementFalse = 'Dark'; - $operator = '=='; - $breakValue = 1; - if ($lastRecord['value'] != 1 && $lastRecord['value'] != 0) { //Digital Light Senzor - $operator = '<'; - $breakValue = 810; - } - break; - - case 'water': - $replacementTrue = 'Wet'; - $replacementFalse = 'Dry'; - $operator = '=='; - $breakValue = 1; - break; - - default: - $replacementTrue = ''; - $replacementFalse = ''; - break; - } - - if ($replacementTrue != '' && $replacementFalse != '') { - //parsing last values - $parsedValue = $replacementFalse; - - if (Utilities::checkOperator($lastRecord['value'], $operator, $breakValue)) { - $parsedValue = $replacementTrue; - } - } - - $updateData[$subDevicesData['subdevice_id']] = [ - 'time' => $lastRecord['time'], - 'value' => $parsedValue, - ]; - } - } - - //TODO: PRO JS VRACET DATA - echo json_encode($updateData, JSON_PRETTY_PRINT); - } - } -} diff --git a/www/app/views/Automation.php b/www/app/views/Automation.php deleted file mode 100644 index 8bd7263..0000000 --- a/www/app/views/Automation.php +++ /dev/null @@ -1,66 +0,0 @@ -isLogin()){ - header('Location: ' . BASEURL . 'login'); - } - - $automations = []; - $automationsData = AutomationManager::getAll(); - foreach ($automationsData as $automationKey => $automationData) { - $doSomething = []; - foreach (json_decode($automationData['do_something']) as $deviceId => $subDeviceState) { - $subDeviceMasterDeviceData = DeviceManager::getDeviceById($deviceId); - $doSomething[$deviceId] = [ - 'name' => $subDeviceMasterDeviceData['name'], - 'state' => $subDeviceState, - ]; - } - //TODO: Transaltion add - $executionTime = 'never'; - if ($automationData['execution_time'] != '0000-00-00 00:00:00') { - $executionTime = date(DATEFORMAT,strtotime($automationData['execution_time'])); - } - $automations[$automationData['automation_id']] = [ - 'name' => $automationData['name'], - 'owner_name' => $userManager->getUserId($automationData['owner_id'])['username'], - 'onDays' => json_decode($automationData['on_days']), - 'ifSomething' => $automationData['if_something'], - 'doSomething' => $doSomething, - 'active' => $automationData['active'], - 'execution_time' => $executionTime, - ]; - } - - $approvedSubDevices = []; - $allDevicesData = DeviceManager::getAllDevices(); - foreach ($allDevicesData as $deviceKey => $deviceValue) { - if (!$deviceValue['approved']) continue; - $allSubDevicesData = SubDeviceManager::getAllSubDevices($deviceValue['device_id']); - foreach ($allSubDevicesData as $subDeviceKey => $subDeviceValue) { - $approvedSubDevices[$subDeviceValue['subdevice_id']] = [ - 'name' => $allDevicesData[$deviceKey]['name'], - 'type' => $subDeviceValue['type'], - 'masterDevice' => $subDeviceValue['device_id'], - ]; - } - } - - $template = new Template('automation'); - $template->prepare('baseDir', BASEDIR); - $template->prepare('debugMod', DEBUGMOD); - $template->prepare('title', 'Automation'); - $template->prepare('langMng', $langMng); - $template->prepare('userManager', $userManager); - - $template->prepare('automations', $automations); - $template->prepare('subDevices', $approvedSubDevices); - - $template->render(); - } -} diff --git a/www/app/views/Log.php b/www/app/views/Log.php deleted file mode 100644 index 81fedd6..0000000 --- a/www/app/views/Log.php +++ /dev/null @@ -1,63 +0,0 @@ -isLogin()){ - header('Location: ' . BASEURL . 'login'); - } - - $template = new Template('log'); - $template->prepare('title', 'Log'); - - $result = array(); - $cdir = scandir('../logs/'); - foreach ($cdir as $key => $value) - { - if (!in_array($value,array(".","..", ".gitkeep"))) - { - $result[$value] = $value; - } - } - - $template->prepare('baseDir', BASEDIR); - $template->prepare('debugMod', DEBUGMOD); - $template->prepare('logToLiveTime', LOGTIMOUT); - $template->prepare('title', 'Logy'); - $template->prepare('logsFiles', $result); - $template->prepare('langMng', $langMng); - $template->prepare('CPU', sys_getloadavg()[0]); - $template->prepare('UPTIME', shell_exec('uptime -p')); - $template->prepare('ramFree', $this->getSystemMemInfo()["MemFree"]); - $template->prepare('ramTotal', $this->getSystemMemInfo()["MemTotal"]); - $template->prepare('diskTotal', disk_total_space("/")); - $template->prepare('serverTime', date('m. d. Y H:i:s - e')); - - - - - - - - $template->render(); - - } -} diff --git a/www/app/views/Login.php b/www/app/views/Login.php deleted file mode 100644 index d905d03..0000000 --- a/www/app/views/Login.php +++ /dev/null @@ -1,22 +0,0 @@ -isLogin()){ - header('Location: ' . BASEURL); - } - - $template = new Template('login'); - $template->prepare('baseDir', BASEDIR); - $template->prepare('title', 'Home'); - $template->prepare('lang', $lang); - - - - $template->render(); - } -} diff --git a/www/app/views/Logout.php b/www/app/views/Logout.php deleted file mode 100644 index e0cf627..0000000 --- a/www/app/views/Logout.php +++ /dev/null @@ -1,11 +0,0 @@ -logout(); - header('Location: ' . BASEURL . 'login'); - die(); - } -} diff --git a/www/app/views/Setting.php b/www/app/views/Setting.php deleted file mode 100644 index d89c28d..0000000 --- a/www/app/views/Setting.php +++ /dev/null @@ -1,62 +0,0 @@ -isLogin()){ - header('Location: ' . BASEURL . 'login'); - } - - $automations = []; - $automationsData = AutomationManager::getAll(); - foreach ($automationsData as $automationKey => $automationData) { - $automations[$automationData['automation_id']] = [ - 'name' => '', - 'onDays' => $automationData['on_days'], - 'ifSomething' => $automationData['if_something'], - 'doSomething' => $automationData['do_something'], - ]; - } - - $template = new Template('setting'); - $template->prepare('baseDir', BASEDIR); - $template->prepare('debugMod', DEBUGMOD); - $template->prepare('title', 'Automation'); - $template->prepare('langMng', $langMng); - $template->prepare('automations', $automations); - - $users = $userManager->getUsers(); - foreach ($users as $key => $value) { - $users[$key]['gavatar_url'] = $userManager->getAvatarUrl($value['user_id']); - } - $template->prepare('users', $users); - - $template->prepare('userName', $userManager->getUserData('username')); - $template->prepare('userEmail', $userManager->getUserData('email')); - $template->prepare('userAvatarUrl', $userManager->getAvatarUrl()); - - if ($userManager->getUserData('ota') == ''){ - $ga = new PHPGangsta_GoogleAuthenticator(); - $otaSecret = $ga->createSecret(); - $qrCodeUrl = $ga->getQRCodeGoogleUrl('Smart Home', $otaSecret); - $oneCode = $ga->getCode($otaSecret); - $template->prepare('qrUrl', $qrCodeUrl); - $template->prepare('otaSecret', $otaSecret); - $template->prepare('otaCode', $oneCode); - - // echo "Secret is: ".$secret."\n\n"; - // echo "Google Charts URL for the QR-Code: ".$qrCodeUrl."\n\n"; - // echo "Checking Code '$oneCode' and Secret '$otaSecret':\n"; - } - - $rooms = RoomManager::getAllRooms(); - $template->prepare('rooms', $rooms); - - - $template->render(); - } -} diff --git a/www/app/views/layouts/default.phtml b/www/app/views/layouts/default.phtml deleted file mode 100644 index 6479b79..0000000 --- a/www/app/views/layouts/default.phtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - <?php echo $this->title ?> - - - -
- {HEADER} -
- - content(); ?> - - - - diff --git a/www/app/views/templates/automation.phtml b/www/app/views/templates/automation.phtml deleted file mode 100644 index 84cd043..0000000 --- a/www/app/views/templates/automation.phtml +++ /dev/null @@ -1,66 +0,0 @@ - - - - prepare('baseDir', $BASEDIR); - $partial->render(); - ?> - <?php echo $TITLE ?> - - -
-
- -
- echo('t_createAutomation'); ?> -
- $automationData) { - //BUTTON - $partial = new Partial('automationButton'); - $partial->prepare('langMng',$LANGMNG); - $partial->prepare('automationId',$automationId); - $partial->prepare('automationData',$automationData); - $partial->render(); - - //EDIT - $partial = new Partial('automationEdit'); - $partial->prepare('langMng',$LANGMNG); - $partial->prepare('userManager',$USERMANAGER); - $partial->prepare('automationId',$automationId); - $partial->prepare('automation',$automationData); - $partial->prepare('subDevices',$SUBDEVICES); - $partial->render(); - } ?> -
-
-
- prepare('langMng',$LANGMNG); - $partial->prepare('userManager',$USERMANAGER); - $partial->prepare('subDevices',$SUBDEVICES); - $partial->render(); - } else { - $partial = new Partial('automationCreate'); - $partial->prepare('langMng',$LANGMNG); - - $partial->prepare('subDevices',$SUBDEVICES); - $partial->render(); - }?> - - render(); - ?> - - diff --git a/www/app/views/templates/example.phtml b/www/app/views/templates/example.phtml deleted file mode 100644 index b5d2471..0000000 --- a/www/app/views/templates/example.phtml +++ /dev/null @@ -1 +0,0 @@ -Example template diff --git a/www/app/views/templates/log.phtml b/www/app/views/templates/log.phtml deleted file mode 100644 index 08bb04f..0000000 --- a/www/app/views/templates/log.phtml +++ /dev/null @@ -1,70 +0,0 @@ - - - - prepare('baseDir', $BASEDIR); - $partial->render(); - ?> - <?php echo $TITLE ?> - - -
-
- -
-
-
- -
-
-
-
-
- " max="">
- -
-
- - - -
-
- -
-
- -
-
- '; - foreach ($file_lines as $line) { - echo $line; - } - echo ''; - } - ?> -
-
- - render(); - //TODO js do main.js - ?> - - diff --git a/www/app/views/templates/login.phtml b/www/app/views/templates/login.phtml deleted file mode 100644 index ae0636b..0000000 --- a/www/app/views/templates/login.phtml +++ /dev/null @@ -1,27 +0,0 @@ - - - - render(); - ?> - <?php echo $TITLE ?> - - - prepare('ota',$ota); - $partial->render(); - } else { - $partial = new Partial('loginForm'); - $partial->render(); - } - ?> - - render(); - ?> - - diff --git a/www/app/views/templates/part/automationButton.phtml b/www/app/views/templates/part/automationButton.phtml deleted file mode 100644 index 002aaab..0000000 --- a/www/app/views/templates/part/automationButton.phtml +++ /dev/null @@ -1,70 +0,0 @@ -
-
-
-
-
-
- type) { - case 'sunSet': - echo''; - break; - - case 'sunRise': - echo' '; - break; - - case 'inHome': - echo''; - break; - - case 'outHome': - echo''; - break; - - case 'outDevice': - echo''; - break; - - default: - echo''; - break; - } - ?> -
-
-
-
- -
-
-
-
-
- -
-
- -
-
- -
-
- -
-
-
diff --git a/www/app/views/templates/part/automationCreate.phtml b/www/app/views/templates/part/automationCreate.phtml deleted file mode 100644 index 44a731a..0000000 --- a/www/app/views/templates/part/automationCreate.phtml +++ /dev/null @@ -1,69 +0,0 @@ - diff --git a/www/app/views/templates/part/automationCreateFinal.phtml b/www/app/views/templates/part/automationCreateFinal.phtml deleted file mode 100644 index 0eb48c3..0000000 --- a/www/app/views/templates/part/automationCreateFinal.phtml +++ /dev/null @@ -1,44 +0,0 @@ - diff --git a/www/app/views/templates/part/automationEdit.phtml b/www/app/views/templates/part/automationEdit.phtml deleted file mode 100644 index 6411388..0000000 --- a/www/app/views/templates/part/automationEdit.phtml +++ /dev/null @@ -1,85 +0,0 @@ - diff --git a/www/app/views/templates/part/footer.phtml b/www/app/views/templates/part/footer.phtml deleted file mode 100644 index 0fcb4bf..0000000 --- a/www/app/views/templates/part/footer.phtml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/www/app/views/templates/part/head.phtml b/www/app/views/templates/part/head.phtml deleted file mode 100644 index 1555607..0000000 --- a/www/app/views/templates/part/head.phtml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/www/app/views/templates/part/loginForm.phtml b/www/app/views/templates/part/loginForm.phtml deleted file mode 100644 index c06b535..0000000 --- a/www/app/views/templates/part/loginForm.phtml +++ /dev/null @@ -1,20 +0,0 @@ - diff --git a/www/app/views/templates/part/loginOta.phtml b/www/app/views/templates/part/loginOta.phtml deleted file mode 100644 index 3e8d294..0000000 --- a/www/app/views/templates/part/loginOta.phtml +++ /dev/null @@ -1,13 +0,0 @@ - diff --git a/www/app/views/templates/part/menu.phtml b/www/app/views/templates/part/menu.phtml deleted file mode 100644 index 79c3fa4..0000000 --- a/www/app/views/templates/part/menu.phtml +++ /dev/null @@ -1,35 +0,0 @@ - diff --git a/www/app/views/templates/part/test.phtml b/www/app/views/templates/part/test.phtml deleted file mode 100644 index 002c703..0000000 --- a/www/app/views/templates/part/test.phtml +++ /dev/null @@ -1,3 +0,0 @@ -

- TEST - TEST -

\ No newline at end of file diff --git a/www/app/views/templates/setting.phtml b/www/app/views/templates/setting.phtml deleted file mode 100644 index 18ac4f2..0000000 --- a/www/app/views/templates/setting.phtml +++ /dev/null @@ -1,203 +0,0 @@ - - - - prepare('baseDir', $BASEDIR); - $partial->render(); - ?> - <?php echo $TITLE ?> - - -
-
- -
-
-

- - echo('t_pageAfterLogIn') ?> -

-
-
-
- -
- -
-
- -
-

echo('t_profile') ?>

-
-
echo('l_userAvatar') ?>:
- -
* providet by Gavatar
-
-
-
echo('l_userName') ?>:
- -
-
-
echo('l_userEmail') ?>:
- -
- -
-
-

echo('t_notification') ?>

- -
echo('l_notificationStatus') ?>
- -
-
-

echo('t_experimental') ?>

- -
-
-

echo('t_changePassword') ?>

-
-
-
echo('l_oldPassword') ?>:
- -
-
-
echo('l_newPassword') ?>:
- -
-
-
echo('l_newPassword') ?>:
- -
-
- -
-
-
-
-

echo('t_ota') ?>

- - - -
-
-
echo('l_gooleAutenticatorOtaCode') ?>:
- - -
-
- -
-
- - - -
-
-

echo('t_listUsers') ?>

- - - - - - - - - - - $user) { ?> - - - - - - - - -
echo('t_avatar');?>echo('t_userName');?>echo('t_ota');?>echo('t_action');?>
' : ''); ?>
-
-
-

echo('t_createuser') ?>

-
-
-
echo('l_userName') ?>:
- -
-
-
echo('l_password') ?>:
- -
-
- -
-
-
- - -
-

echo('t_listRooms') ?>

- - - - - - - - - $room) { ?> - - - - - - -
echo('t_roomName');?>echo('t_action');?>
- - -
-
- - -
-

echo('t_createRoom') ?>

-
-
-
echo('l_roomName') ?>:
- -
-
- -
-
-
- - -
- - -
- render(); - ?> - - - - diff --git a/config/config_sample.php b/www/config/config_sample.php similarity index 100% rename from config/config_sample.php rename to www/config/config_sample.php