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