Merge local branch to remastering
This commit is contained in:
		| @@ -15,12 +15,18 @@ if (!empty ($_POST)){ | ||||
| 	} | ||||
| 	if (isset ($_POST['deviceCommand'])  && !empty ($_POST['deviceId'])) { | ||||
| 		$deviceManager->edit ($_POST['deviceId'], array ('command' => $_POST['deviceCommand'])); | ||||
| 	}else if (!empty ($_POST['deviceCommand'])) { | ||||
| 	} else if (!empty ($_POST['deviceCommand'])) { | ||||
| 		$devices = $deviceManager->getAllDevices(); | ||||
| 		foreach ($devices as $key => $device) { | ||||
| 			$deviceManager->edit ($device['device_id'], array ('command' => $_POST['deviceCommand'])); | ||||
| 		} | ||||
| 	} | ||||
| 	if (!empty ($_POST['deviceRoomId'])  && !empty ($_POST['deviceId'])) { | ||||
| 		$deviceManager->edit ($_POST['deviceId'], array ('room_id' => $_POST['deviceRoomId'])); | ||||
| 	} | ||||
| 	if (!empty ($_POST['deviceName'])  && !empty ($_POST['deviceId'])) { | ||||
| 		$deviceManager->edit ($_POST['deviceId'], array ('name' => $_POST['deviceName'])); | ||||
| 	} | ||||
| 	header('Location: ./device'); | ||||
| 	die(); | ||||
| } | ||||
|   | ||||
| @@ -26,6 +26,10 @@ class DeviceManager{ | ||||
| 		return Db::loadOne("SELECT * FROM devices WHERE device_id = ?", array($deviceId)); | ||||
| 	} | ||||
|  | ||||
| 	static function getAllDevicesSorted ($sort, $sortType = "ASC") { | ||||
| 		return Db::loadAll ("SELECT devices.* FROM devices LEFT JOIN rooms ON devices.room_id = rooms.room_id WHERE devices.approved != ? ORDER BY $sort $sortType", Array(2)); | ||||
| 	} | ||||
|  | ||||
| 	public static function create ($name, $token) { | ||||
| 		$defaultRoom = RoomManager::getDefaultRoomId(); | ||||
| 		$device = array ( | ||||
|   | ||||
| @@ -16,7 +16,61 @@ class Device extends Template | ||||
| 		$template = new Template ('device'); | ||||
| 		$template->prepare ('title', $langMng->get ("m_devices")); | ||||
|  | ||||
| 		$devices = $deviceManager->getAllDevices (); | ||||
| 		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"; | ||||
| @@ -30,11 +84,20 @@ class Device extends Template | ||||
| 			} else { | ||||
| 				$devices[$key]['firmware_hash'] = "false"; | ||||
| 			} | ||||
| 			if (empty ($device['mac'])) { | ||||
| 				$devices[$key]['firmware_hash'] = ""; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 			$wifi = SubDeviceManager::getSubDeviceByMaster($device['device_id'], 'wifi'); | ||||
| 			if ($wifi) { | ||||
| 				$signalStrenght = RecordManager::getLastRecordNotNull($wifi['subdevice_id']); | ||||
| 				$devices[$key]['signal'] = (!$signalStrenght ? 0 : $signalStrenght['value']); | ||||
| 		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']; | ||||
| 				}); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| @@ -44,6 +107,7 @@ class Device extends Template | ||||
| 		$template->prepare ('debugMod', DEBUGMOD); | ||||
| 		$template->prepare ('logToLiveTime', LOGTIMOUT); | ||||
| 		$template->prepare ('rooms', $rooms); | ||||
| 		$template->prepare ('sortType', $sortType); | ||||
| 		$template->prepare ('devices', $devices); | ||||
| 		$template->prepare ('langMng', $langMng); | ||||
|  | ||||
|   | ||||
| @@ -22,41 +22,53 @@ | ||||
| 		</div> | ||||
| 		<div class="col-md-9 main-body"> | ||||
| 			<table class="table is-fluid"> | ||||
| 				<thead> | ||||
| 					<tr> | ||||
| 						<th>#</th> | ||||
| 						<th>Name</th> | ||||
| 						<th>Signal</th> | ||||
| 						<th>Room</th> | ||||
| 						<th>Firmware</th> | ||||
| 						<th>IP Address<br>(Mac)<br>Token</th> | ||||
| 						<th>Action | ||||
| 				<tr> | ||||
| 					<th><a href="device">#</a></th> | ||||
| 					<th><a href="device?sort=name&sortType=<?php echo $SORTTYPE; ?>">Name</a><i class="fa"><?php echo (!empty($SORTICON['name']) ? $SORTICON['name'] : ""); ?></i></th> | ||||
| 					<th><a href="device?sort=room&sortType=<?php echo $SORTTYPE; ?>">Room</a><i class="fa"><?php echo (!empty($SORTICON['room']) ? $SORTICON['room'] : ""); ?></i></th> | ||||
| 					<th><a href="device?sort=signal&sortType=<?php echo $SORTTYPE; ?>">Signal</a><i class="fa"><?php echo (!empty($SORTICON['signal']) ? $SORTICON['signal'] : ""); ?></i></th> | ||||
| 					 | ||||
| 					<th><a href="device?sort=firmware&sortType=<?php echo $SORTTYPE; ?>">Firmware</a><i class="fa"><?php echo (!empty($SORTICON['firmware']) ? $SORTICON['firmware'] : ""); ?></i></th> | ||||
| 					<th> | ||||
| 						<a href="device?sort=ip&sortType=<?php echo $SORTTYPE; ?>">IP Address</a><i class="fa"><?php echo (!empty($SORTICON['ip']) ? $SORTICON['ip'] : ""); ?></i><br> | ||||
| 						<a href="device?sort=mac&sortType=<?php echo $SORTTYPE; ?>">(Mac)</a><i class="fa"><?php echo (!empty($SORTICON['mac']) ? $SORTICON['mac'] : ""); ?></i><br> | ||||
| 						<a href="device?sort=token&sortType=<?php echo $SORTTYPE; ?>">Token</a><i class="fa"><?php echo (!empty($SORTICON['token']) ? $SORTICON['token'] : ""); ?></i> | ||||
| 					</th> | ||||
| 					<th>Action | ||||
| 						<form method="post" action=""> | ||||
| 							<button class="fa custom-file-input" type="submit" name="deviceCommand" value="reset" title="Reset All"><b></b></button> | ||||
| 							<div style="float: clear;"></div> | ||||
| 						</form> | ||||
| 					</th> | ||||
| 				</tr> | ||||
| 				<?php if (!empty($DEVICES)) : ?> | ||||
| 					<?php foreach ($DEVICES as $device) : ?> | ||||
| 						<tr> | ||||
| 							<td><i class="fa">&#x<?php echo (!empty($device['icon']) ? $device['icon'] : ""); ?></i></td> | ||||
| 							<td> | ||||
| 								<form method="post" action=""> | ||||
| 									<input type="hidden" name="deviceId" value="<?php echo (!empty($device['device_id']) ? $device['device_id'] : ""); ?>"> | ||||
| 									<input class="input" type="text" onchange="this.form.submit();" name="deviceName" value="<?php echo (!empty($device['name']) ? $device['name'] : ""); ?>"> | ||||
| 								</form> | ||||
| 							</td> | ||||
| 							<td><?php echo (!empty($device['signal']) ? $device['signal'] : ""); ?></td> | ||||
| 							<td> | ||||
| 							<form method="post" action=""> | ||||
| 								<button class="fa custom-file-input" type="submit" name="deviceCommand" value="reset" title="Reset All"><b></b></button> | ||||
| 								<div style="float: clear;"></div> | ||||
| 							</form> | ||||
| 						</th> | ||||
| 					</tr> | ||||
| 				</thead> | ||||
| 				<tbody> | ||||
| 					<?php if (!empty($DEVICES)) : ?> | ||||
| 						<?php foreach ($DEVICES as $device) : ?> | ||||
| 							<tr> | ||||
| 								<td><i class="fa">&#x<?php echo (!empty($device['icon']) ? $device['icon'] : ""); ?></i></td> | ||||
| 								<td><?php echo (!empty($device['name']) ? $device['name'] : ""); ?></td> | ||||
| 								<td><?php echo (!empty($device['signal']) ? $device['signal'] : ""); ?></td> | ||||
| 								<td> | ||||
| 								<select class="input" id="device-<?php echo $device['device_id']?>-roomId"> | ||||
| 								<input type="hidden" name="deviceId" value="<?php echo (!empty($device['device_id']) ? $device['device_id'] : ""); ?>"> | ||||
| 								<select class="input" name="deviceRoomId" onchange="this.form.submit();"> | ||||
| 								<?php | ||||
| 									foreach ($ROOMS as $key => $room) { | ||||
| 										echo '<option value="'.$room['room_id'].'" '.($device['room_id'] == $room['room_id'] ? 'selected' : '').'>'.$room['name'].'</option>'; | ||||
| 									if (!empty ($ROOMS)) { | ||||
| 										foreach ($ROOMS as $key => $room) { | ||||
| 											echo '<option value="' . $room['room_id'] . '" ' . ($device['room_id'] == $room['room_id'] ? 'selected' : '') . '>' . $room['name'] . '</option>'; | ||||
| 										} | ||||
| 									} | ||||
| 								?> | ||||
| 								</select> | ||||
| 								</td> | ||||
| 								<td> | ||||
| 									<?php if (!empty($device['mac'])) : ?> | ||||
| 										<?php  | ||||
| 							</form> | ||||
| 							</td> | ||||
| 							<td> | ||||
| 								<?php if (!empty($device['mac'])) : ?> | ||||
| 									<?php | ||||
| 										$icon = "fa-circle"; | ||||
| 										$color = "yellow"; | ||||
| 										if (!empty($device['firmware_hash'])) { | ||||
| @@ -64,41 +76,41 @@ | ||||
| 												$icon = "fa-check-circle"; | ||||
| 												$color = "green"; | ||||
| 											} else if ($device['firmware_hash'] == "need") { | ||||
| 												$icon = "arrow-circle-up"; | ||||
| 												$icon = "fa-arrow-circle-up"; | ||||
| 												$color = "#6495ED"; | ||||
| 											} else { | ||||
| 												$icon = "fa-times-circle"; | ||||
| 												$color = "red"; | ||||
| 											} | ||||
| 										} | ||||
| 										?> | ||||
| 									?> | ||||
|  | ||||
| 										<i class="fa <?php echo $icon; ?>" style="color: <?php echo $color; ?>"></i> | ||||
| 										<?php echo $device['firmware_hash'] ?> | ||||
| 										<button class="fa custom-file-input" type="button" onclick="document.getElementById('deviceFirmware-<?php echo $device['device_id']?>').click();"></button> | ||||
| 										<form style="display: none;" method="post" action="" enctype="multipart/form-data"> | ||||
| 											<input type="hidden" name="deviceId" value="<?php echo (!empty($device['device_id']) ? $device['device_id'] : ""); ?>"> | ||||
| 											<input type="file" onchange="this.form.submit();" name="deviceFirmware" id="deviceFirmware-<?php echo $device['device_id']?>" value=""> | ||||
| 										</form> | ||||
| 									<?php endif; ?> | ||||
| 									<div type="float: clear;"></div> | ||||
| 								</td> | ||||
| 								<td><?php echo (!empty($device['mac']) ? $device['mac'] : ""); ?><br> | ||||
| 								<?php echo (!empty($device['ip_address']) ? $device['ip_address'] : ""); ?><br> | ||||
| 								<?php echo (!empty($device['token']) ? $device['token'] : ""); ?></td> | ||||
| 								<td> | ||||
| 									<?php if (!empty($device['mac'])) : ?> | ||||
| 										<form method="post" action=""> | ||||
| 											<input type="hidden" name="deviceId" value="<?php echo (!empty($device['device_id']) ? $device['device_id'] : ""); ?>"> | ||||
| 											<button class="fa custom-file-input" <?php echo (!empty($device['command']) && $device['command'] == "reset" ? "style=\"color:red;\"" : ""); ?> type="submit" name="deviceCommand" value="reset" title="Reset"></button> | ||||
| 											<button class="fa custom-file-input" <?php echo (!empty($device['command']) && $device['command'] == "config" ? "style=\"color:red;\"" : ""); ?> type="submit" name="deviceCommand" value="config" title="Config"></button> | ||||
| 											<div style="float: clear;"></div> | ||||
| 										</form> | ||||
| 									<?php endif; ?> | ||||
| 								</td> | ||||
| 							</tr> | ||||
| 						<?php endforeach; ?> | ||||
| 					<?php endif; ?> | ||||
| 				<tbody> | ||||
| 									<i class="fa <?php echo $icon; ?>" style="color: <?php echo $color; ?>;"></i> | ||||
| 									<?php echo $device['firmware_hash'] ?> | ||||
| 									<button class="fa custom-file-input" type="button" onclick="document.getElementById('deviceFirmware-<?php echo $device['device_id']?>').click();"></button> | ||||
| 									<form style="display: none;" method="post" action="" enctype="multipart/form-data"> | ||||
| 										<input type="hidden" name="deviceId" value="<?php echo (!empty($device['device_id']) ? $device['device_id'] : ""); ?>"> | ||||
| 										<input type="file" onchange="this.form.submit();" name="deviceFirmware" id="deviceFirmware-<?php echo $device['device_id']?>" value=""> | ||||
| 									</form> | ||||
| 								<?php endif; ?> | ||||
| 								<div type="float: clear;"></div> | ||||
| 							</td> | ||||
| 							<td><?php echo (!empty($device['mac']) ? $device['mac'] : ""); ?><br> | ||||
| 							<?php echo (!empty($device['ip_address']) ? $device['ip_address'] : ""); ?><br> | ||||
| 							<?php echo (!empty($device['token']) ? $device['token'] : ""); ?></td> | ||||
| 							<td> | ||||
| 								<?php if (!empty($device['mac'])) : ?> | ||||
| 									<form method="post" action=""> | ||||
| 										<input type="hidden" name="deviceId" value="<?php echo (!empty($device['device_id']) ? $device['device_id'] : ""); ?>"> | ||||
| 										<button class="fa custom-file-input" <?php echo (!empty($device['command']) && $device['command'] == "reset" ? "style=\"color:red;\"" : ""); ?> type="submit" name="deviceCommand" value="reset" title="Reset"></button> | ||||
| 										<button class="fa custom-file-input" <?php echo (!empty($device['command']) && $device['command'] == "config" ? "style=\"color:red;\"" : ""); ?> type="submit" name="deviceCommand" value="config" title="Config"></button> | ||||
| 										<div style="float: clear;"></div> | ||||
| 									</form> | ||||
| 								<?php endif; ?> | ||||
| 							</td> | ||||
| 						</tr> | ||||
| 					<?php endforeach; ?> | ||||
| 				<?php endif; ?> | ||||
| 			</table> | ||||
| 		</div> | ||||
|  | ||||
| @@ -108,6 +120,12 @@ | ||||
| 		$partial->render(); | ||||
| 		//TODO js do main.js | ||||
| 		?> | ||||
| 		<script> | ||||
| 			$( function() { | ||||
| 			    $( "#sortable" ).sortable(); | ||||
| 			    $( "#sortable" ).disableSelection(); | ||||
| 			  } ); | ||||
| 		</script> | ||||
| </body> | ||||
|  | ||||
| </html> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user