117 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| 
 | |
| class Device extends Template
 | |
| {
 | |
| 	function __construct () {
 | |
| 		$userManager = new UserManager ();
 | |
| 		$deviceManager = new DeviceManager ();
 | |
| 		$roomManager = new RoomManager ();
 | |
| 		$langMng = new LanguageManager ('en');
 | |
| 
 | |
| 		if (!$userManager->isLogin ()) {
 | |
| 			header ('Location: ' . BASEURL . 'device');
 | |
| 		}
 | |
| 
 | |
| 		$template = new Template ('device');
 | |
| 		$template->prepare ('title', $langMng->get ("m_devices"));
 | |
| 
 | |
| 		if (!empty ($_GET['sort']) && !empty ($_SESSION['sort']) && $_SESSION['sort'] != $_GET['sort']) {
 | |
| 			unset($_SESSION['sort']);
 | |
| 			header('Location: device?sort=' . $_GET["sort"] . "&sortType=ASC");
 | |
| 			die();
 | |
| 		}
 | |
| 
 | |
| 		if (isset ($_GET['sortType'])) {
 | |
| 			switch ($_GET['sortType']) {
 | |
| 				case "DESC":
 | |
| 				$sortType = "";
 | |
| 				$sortIcon = "";
 | |
| 				break;
 | |
| 				case "ASC":
 | |
| 				$sortType = "DESC";
 | |
| 				$sortIcon = "";
 | |
| 				break;
 | |
| 				case "":
 | |
| 				unset($_GET["sort"]);
 | |
| 				unset($_GET["sortType"]);
 | |
| 				header('Location: device');
 | |
| 				die();
 | |
| 				break;
 | |
| 			}
 | |
| 		} else {
 | |
| 			$sortType = "ASC";
 | |
| 		}
 | |
| 
 | |
| 		if (!empty ($_GET['sort']) && !empty ($_GET['sortType'])) {
 | |
| 			$template->prepare ('sortIcon', array ($_GET['sort'] => $sortIcon));
 | |
| 			$actualSort = "devices.device_id";
 | |
| 			switch ($_GET['sort']) {
 | |
| 				case "name":
 | |
| 				$actualSort = "devices.name";
 | |
| 				break;
 | |
| 				case "room":
 | |
| 				$actualSort = "rooms.name";
 | |
| 				break;
 | |
| 				case "ip":
 | |
| 				$actualSort = "devices.ip_address";
 | |
| 				break;
 | |
| 				case "mac":
 | |
| 				$actualSort = "devices.mac";
 | |
| 				break;
 | |
| 				case "token":
 | |
| 				$actualSort = "devices.token";
 | |
| 				break;
 | |
| 			}
 | |
| 			$devices = $deviceManager->getAllDevicesSorted ($actualSort, $_GET['sortType']);
 | |
| 		} else {
 | |
| 			$devices = $deviceManager->getAllDevices ();
 | |
| 		}
 | |
| 
 | |
| 		if (!empty ($_GET['sort'])) {
 | |
| 			$_SESSION['sort'] = $_GET['sort'];
 | |
| 		}
 | |
| 
 | |
| 		foreach ($devices as $key => $device) {
 | |
| 			$localBinary = "../updater/" . str_replace (':', '', $device['mac']) . ".bin";
 | |
| 			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";
 | |
| 			}
 | |
| 			if (empty ($device['mac'])) {
 | |
| 				$devices[$key]['firmware_hash'] = "";
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		if (!empty ($_GET['sort']) && !empty ($_GET['sortType']) && $_GET['sort'] == "firmware") {
 | |
| 			if ($_GET['sortType'] == "DESC") {
 | |
| 				usort($devices, function($a, $b) {
 | |
| 					return $a['firmware_hash'] <=> $b['firmware_hash'];
 | |
| 				});
 | |
| 			} else if ($_GET['sortType'] == "ASC") {
 | |
| 				usort($devices, function($a, $b) {
 | |
| 					return $b['firmware_hash'] <=> $a['firmware_hash'];
 | |
| 				});
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		$rooms = $roomManager->getAllRooms();
 | |
| 
 | |
| 		$template->prepare ('baseDir', BASEDIR);
 | |
| 		$template->prepare ('debugMod', DEBUGMOD);
 | |
| 		$template->prepare ('logToLiveTime', LOGTIMOUT);
 | |
| 		$template->prepare ('rooms', $rooms);
 | |
| 		$template->prepare ('sortType', $sortType);
 | |
| 		$template->prepare ('devices', $devices);
 | |
| 		$template->prepare ('langMng', $langMng);
 | |
| 
 | |
| 		$template->render ();
 | |
| 	}
 | |
| }
 |