121 строка
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			121 строка
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
 | 
						|
class Device extends Template
 | 
						|
{
 | 
						|
	function __construct($sortBy = null, $sortType = null)
 | 
						|
	{
 | 
						|
		// //Notification data setup
 | 
						|
		// $notificationMng = new NotificationManager;
 | 
						|
		// $notificationData = [
 | 
						|
		// 	'title' => 'Info',
 | 
						|
		// 	'body' => 'New device Detected Found',
 | 
						|
		// 	'icon' => 'http://dev.steelants.cz/projekty/simplehome-client/img/icons/favicon-16x16.png',
 | 
						|
		// ];
 | 
						|
		// //Notification for newly added Device
 | 
						|
		// if ($notificationData != []) {
 | 
						|
		// 	$subscribers = $notificationMng::getSubscription();
 | 
						|
		// 	foreach ($subscribers as $key => $subscriber) {
 | 
						|
		// 		$notificationMng::sendSimpleNotification(SERVERKEY, $subscriber['token'], $notificationData);
 | 
						|
		// 	}
 | 
						|
		// }
 | 
						|
 | 
						|
		$userManager = new UserManager();
 | 
						|
		$deviceManager = new DeviceManager();
 | 
						|
		$subDeviceManager = new SubDeviceManager();
 | 
						|
		$recordManager = new RecordManager();
 | 
						|
		$roomManager = new RoomManager();
 | 
						|
		$langMng = new LanguageManager('en');
 | 
						|
 | 
						|
		if (!$userManager->isLogin()) {
 | 
						|
			header('Location: ' . BASEURL . 'login');
 | 
						|
		}
 | 
						|
 | 
						|
		$template = new Template('device');
 | 
						|
		$template->prepare('title', $langMng->get("m_devices"));
 | 
						|
 | 
						|
		$sortWordBook = [
 | 
						|
			"id" => "device_id",
 | 
						|
			"name" => "name",
 | 
						|
			"room" => "room_id",
 | 
						|
			"ip" => "ip_address",
 | 
						|
			"mac" => "mac",
 | 
						|
			"token" => "token",
 | 
						|
			"signal" => "signal",
 | 
						|
			"firmware" => "firmware_hash",
 | 
						|
			"icon" => "icon",
 | 
						|
			"history" => "history",
 | 
						|
		];
 | 
						|
 | 
						|
		$sortIcons = [
 | 
						|
			"ASC" => "",
 | 
						|
			"DESC" => "",
 | 
						|
		];
 | 
						|
 | 
						|
		$nextSort = [
 | 
						|
			"ASC" => "DESC",
 | 
						|
			"DESC" => "ASC",
 | 
						|
		];
 | 
						|
 | 
						|
		$devices = $deviceManager->getAllDevices();
 | 
						|
 | 
						|
		if (empty($sortBy) && empty($sortType)) {
 | 
						|
			$sortBy = "id";
 | 
						|
			$sortType = "DESC";
 | 
						|
		}
 | 
						|
		$template->prepare('sortIcon', [$sortBy => $sortIcons[$sortType]]);
 | 
						|
 | 
						|
		foreach ($devices as $key => $device) {
 | 
						|
			//Signal Stenght
 | 
						|
			$subdevice = $subDeviceManager->getSubDeviceByMasterAndType($device['device_id'], "wifi");
 | 
						|
			$subdeviceLocal = $subDeviceManager->getSubDeviceByMaster($device['device_id']);
 | 
						|
			if (!empty($subdeviceLocal)) {
 | 
						|
				$devices[$key]['history'] = (!empty($subdeviceLocal['history']) ? $subdeviceLocal['history'] : 0);
 | 
						|
			} else {
 | 
						|
				$devices[$key]['history'] = "null";
 | 
						|
			}
 | 
						|
			$devices[$key]['signal'] = "";
 | 
						|
			if (!empty($subdevice['subdevice_id'])) {
 | 
						|
				$record = $recordManager->getLastRecord($subdevice['subdevice_id']);
 | 
						|
				if (!empty($record)) {
 | 
						|
					$devices[$key]['signal'] = $record['value'] . " " . $subdevice['unit'];
 | 
						|
				}
 | 
						|
			}
 | 
						|
 | 
						|
			//Firmware Status
 | 
						|
			if (empty($devices[$key]['mac'])) {
 | 
						|
				$devices[$key]['firmware_hash'] = "";
 | 
						|
				continue;
 | 
						|
			}
 | 
						|
			$localBinary = "../updater/" . str_replace(':', '', $device['mac']) . ".bin";
 | 
						|
			$devices[$key]['firmware_hash'] = "";
 | 
						|
			if (file_exists($localBinary)) {
 | 
						|
				$hash = md5_file($localBinary);
 | 
						|
				if ($hash == $device['firmware_hash']) {
 | 
						|
					$devices[$key]['firmware_hash'] = "true";
 | 
						|
				} else {
 | 
						|
					$devices[$key]['firmware_hash'] = "need";
 | 
						|
				}
 | 
						|
			} else {
 | 
						|
				$devices[$key]['firmware_hash'] = "false";
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		$devices = Utilities::sortArrayByKey($devices, $sortWordBook[$sortBy], strtolower($sortType));
 | 
						|
 | 
						|
		$rooms = $roomManager->getAllRooms();
 | 
						|
 | 
						|
		$template->prepare('baseUrl', BASEURL);
 | 
						|
		$template->prepare('baseDir', BASEDIR);
 | 
						|
 | 
						|
		$template->prepare('debugMod', DEBUGMOD);
 | 
						|
		$template->prepare('logToLiveTime', LOGTIMOUT);
 | 
						|
		$template->prepare('rooms', $rooms);
 | 
						|
		$template->prepare('sortType', $nextSort[$sortType]);
 | 
						|
		$template->prepare('devices', $devices);
 | 
						|
		$template->prepare('langMng', $langMng);
 | 
						|
 | 
						|
		$template->render();
 | 
						|
	}
 | 
						|
}
 |