FTP -> GIT (SYNC)
This commit is contained in:
		
							
								
								
									
										131
									
								
								app/class/AutomationManager.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										131
									
								
								app/class/AutomationManager.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,131 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
class AutomationManager{
 | 
			
		||||
	public static $automation;
 | 
			
		||||
 | 
			
		||||
	public function remove($automationId) {
 | 
			
		||||
		return Db::command ('DELETE FROM automation WHERE automation_id=?', array ($automationId));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function deactive($automationId) {
 | 
			
		||||
		$automation = Db::loadOne ("SELECT * FROM automation WHERE automation_id=?" , array ($automationId));
 | 
			
		||||
		$flipedValue = ($automation['active'] == 1 ? 0 : 1);
 | 
			
		||||
		return Db::command ('UPDATE automation SET active = ? WHERE automation_id=?', array ($flipedValue,$automationId));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function create ($name, $onDays, $doCode, $ifCode) {
 | 
			
		||||
		$scene = array (
 | 
			
		||||
			'name' => $name,
 | 
			
		||||
			'on_days' => $onDays,
 | 
			
		||||
			'if_something' => $ifCode,
 | 
			
		||||
			'do_something' => $doCode,
 | 
			
		||||
		);
 | 
			
		||||
		try {
 | 
			
		||||
			Db::add ('automation', $scene);
 | 
			
		||||
		} catch(PDOException $error) {
 | 
			
		||||
			echo $error->getMessage();
 | 
			
		||||
			die();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function getAll(){
 | 
			
		||||
		return Db::loadAll ("SELECT * FROM automation");
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public 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'] != 0){
 | 
			
		||||
				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();
 | 
			
		||||
						}
 | 
			
		||||
 | 
			
		||||
						/*
 | 
			
		||||
						Echo "Spouštění Automatizace";
 | 
			
		||||
						echo "Aktual" . date( "HH:mm", strtotime(time()));
 | 
			
		||||
						echo "Run At" . date( "HH:mm", strtotime($value));
 | 
			
		||||
						*/
 | 
			
		||||
 | 
			
		||||
						if (time() > $value){
 | 
			
		||||
							if ($automation['executed'] == 0){
 | 
			
		||||
								$run = true;
 | 
			
		||||
							} else if (time() < $value && $automation['executed'] = 1) { //recovery realowing of automation
 | 
			
		||||
								$restart = true;
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					} else if ($onValue['type'] == 'outHome') {
 | 
			
		||||
 | 
			
		||||
					} else if ($onValue['type'] == 'inHome') {
 | 
			
		||||
 | 
			
		||||
					} 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;
 | 
			
		||||
						}
 | 
			
		||||
						/*echo "Someone Home". '<br>';
 | 
			
		||||
						echo "at home" . $membersHome. '<br>';
 | 
			
		||||
						echo "run" . $run. '<br>';
 | 
			
		||||
						echo "restart" . $restart. '<br>';*/
 | 
			
		||||
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					//finalization
 | 
			
		||||
					if ($run) {
 | 
			
		||||
						$sceneDoArray = json_decode($sceneDoJson);
 | 
			
		||||
						foreach ($sceneDoArray as $deviceId => $deviceState) {
 | 
			
		||||
							RecordManager::create($deviceId, 'on/off', $deviceState);
 | 
			
		||||
						}
 | 
			
		||||
						$logManager->write("[AUTOMATIONS] automation id ". $automation['automation_id'] . " was executed");
 | 
			
		||||
						Db::edit('automation', array('executed' => 1), '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']));
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										194
									
								
								app/class/ChartJS.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										194
									
								
								app/class/ChartJS.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,194 @@
 | 
			
		||||
<?php
 | 
			
		||||
abstract class ChartJS
 | 
			
		||||
{
 | 
			
		||||
	/**
 | 
			
		||||
	* @var array chart data
 | 
			
		||||
	*/
 | 
			
		||||
	protected $_datasets = array();
 | 
			
		||||
	/**
 | 
			
		||||
	* @var array chart labels
 | 
			
		||||
	*/
 | 
			
		||||
	protected $_labels = array();
 | 
			
		||||
	/**
 | 
			
		||||
	* The chart type
 | 
			
		||||
	* @var string
 | 
			
		||||
	*/
 | 
			
		||||
	protected $_type = '';
 | 
			
		||||
	/**
 | 
			
		||||
	* @var array Specific options for chart
 | 
			
		||||
	*/
 | 
			
		||||
	protected $_options = array();
 | 
			
		||||
	/**
 | 
			
		||||
	* @var string Chartjs canvas' ID
 | 
			
		||||
	*/
 | 
			
		||||
	protected $_id;
 | 
			
		||||
	/**
 | 
			
		||||
	* @var string Canvas width
 | 
			
		||||
	*/
 | 
			
		||||
	protected $_width;
 | 
			
		||||
	/**
 | 
			
		||||
	* @var string Canvas height
 | 
			
		||||
	*/
 | 
			
		||||
	protected $_height;
 | 
			
		||||
	/**
 | 
			
		||||
	* @var array Canvas attributes (class,
 | 
			
		||||
	*/
 | 
			
		||||
	protected $_attributes = array();
 | 
			
		||||
	/**
 | 
			
		||||
	* @var array Default colors
 | 
			
		||||
	*/
 | 
			
		||||
	protected static $_defaultColors = array('fill' => '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 = '<canvas id="' . $this->_id . '" data-chartjs="' . $this->_type . '"' . $height . $width . $attributes . $data . $options . '></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];
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								app/class/ChartJS_Line.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								app/class/ChartJS_Line.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
<?php
 | 
			
		||||
class ChartJS_Line extends ChartJS
 | 
			
		||||
{
 | 
			
		||||
	protected $_type = 'Line';
 | 
			
		||||
	protected static $_colorsRequired = array('fillColor', 'strokeColor', 'pointColor', 'pointStrokeColor', 'pointHighlightFill', 'pointHighlightStroke');
 | 
			
		||||
	protected static  $_colorsReplacement = array('pointHighlightFill' => '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;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										86
									
								
								app/class/ChartManager.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								app/class/ChartManager.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,86 @@
 | 
			
		||||
<?php
 | 
			
		||||
class ChartManager{
 | 
			
		||||
	function generateChart($data, $min = 0, $max = 100)
 | 
			
		||||
	{
 | 
			
		||||
 | 
			
		||||
		echo '<br>Aktuální Hodnota: '.$data[0]['value'];
 | 
			
		||||
		echo "<style>
 | 
			
		||||
		.sloupec {
 | 
			
		||||
			border-top: solid 2px red;
 | 
			
		||||
		}
 | 
			
		||||
		</style>";
 | 
			
		||||
		echo '<div class=graph>';
 | 
			
		||||
		echo '<div class="posuv " graf-max="'.$max.'" graf-min='.$min.'>';
 | 
			
		||||
		for ($valuesRow = 0; $valuesRow < count($data); $valuesRow++) {
 | 
			
		||||
			$row = $data[$valuesRow];
 | 
			
		||||
 | 
			
		||||
			echo '<div class="sloupec " name="sloupec" value="' . $row['value'] . '" data-toggle="tooltip" title=""></div>';
 | 
			
		||||
		}
 | 
			
		||||
		echo '</div>';
 | 
			
		||||
		echo '</div>';
 | 
			
		||||
		echo '<script src="./include/js/chartDrwer.js"></script>';
 | 
			
		||||
		echo 'Poslední Update: ';
 | 
			
		||||
 | 
			
		||||
		echo '<style>
 | 
			
		||||
		.graph {
 | 
			
		||||
			width: 100%;
 | 
			
		||||
			overflow: hidden;
 | 
			
		||||
 | 
			
		||||
			margin-top: auto;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		.posuv {
 | 
			
		||||
			display: flex;
 | 
			
		||||
			height: 200px;
 | 
			
		||||
			background-image: url(./img/graph.png);
 | 
			
		||||
			padding: 20px;
 | 
			
		||||
			background-repeat: repeat;
 | 
			
		||||
			border-bottom: 1px solid black;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		.sloupec {
 | 
			
		||||
			border-top: solid 2px blue;
 | 
			
		||||
			background-color: grey;
 | 
			
		||||
			float: left;
 | 
			
		||||
			margin: auto 0 0;
 | 
			
		||||
			display: inline-block;
 | 
			
		||||
			width: 1%;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		</style>
 | 
			
		||||
		<script>
 | 
			
		||||
		var posuvList = document.getElementsByClassName("posuv");
 | 
			
		||||
		var maxHeight = posuvList[0].clientHeight;
 | 
			
		||||
		for (i = 0; i < posuvList.length; i++) {
 | 
			
		||||
			var maxPx = 0;
 | 
			
		||||
			var grafMax = Number(posuvList[i].getAttribute("graf-max")); //100%
 | 
			
		||||
			var grafMin = Number(posuvList[i].getAttribute("graf-min")); //0%
 | 
			
		||||
			if (grafMin == 0 && grafMax == 100) {
 | 
			
		||||
				var onePercent = 1;
 | 
			
		||||
			} else {
 | 
			
		||||
				var stepsBetWene = grafMax;
 | 
			
		||||
				if (grafMin !== 0) {
 | 
			
		||||
					if (grafMin < 0) {
 | 
			
		||||
						stepsBetWene = grafMax + Math.abs(grafMin);
 | 
			
		||||
					}
 | 
			
		||||
					if (grafMin > 0) {
 | 
			
		||||
						stepsBetWene = grafMax - grafMin;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				var onePercent = stepsBetWene / 100;
 | 
			
		||||
			}
 | 
			
		||||
			var sloupceList = posuvList[i].querySelectorAll(".sloupec");
 | 
			
		||||
			for (ai = 0; ai < sloupceList.length; ai++) {
 | 
			
		||||
				var onePxPercent = maxHeight / 100;
 | 
			
		||||
				var heightInPercent =
 | 
			
		||||
				Math.abs(sloupceList[ai].getAttribute("value")) / onePercent;
 | 
			
		||||
				var outputPx = onePxPercent * heightInPercent;
 | 
			
		||||
 | 
			
		||||
				sloupceList[ai].style.height = outputPx + "px";
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		</script>';
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										100
									
								
								app/class/DB.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										100
									
								
								app/class/DB.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,100 @@
 | 
			
		||||
<?php
 | 
			
		||||
class Db{
 | 
			
		||||
	private static $join;
 | 
			
		||||
	private static $commandDatabase = array (
 | 
			
		||||
		PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
 | 
			
		||||
		PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
 | 
			
		||||
		PDO::ATTR_EMULATE_PREPARES => false
 | 
			
		||||
	);
 | 
			
		||||
 | 
			
		||||
	public static function connect ($host, $user, $password, $database) {
 | 
			
		||||
		if (!isset (self::$join)) {
 | 
			
		||||
			self::$join = @new PDO(
 | 
			
		||||
				"mysql:host=$host;dbname=$database;charset=utf8",
 | 
			
		||||
				$user,
 | 
			
		||||
				$password,
 | 
			
		||||
				self::$commandDatabase
 | 
			
		||||
			);
 | 
			
		||||
			self::$join->exec ("set names utf8");
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static function disconect(){
 | 
			
		||||
		self::$join = null;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static function loadOne ($sql, $values = array (), $numberKey = false) {
 | 
			
		||||
		$answer = self::$join->prepare ($sql);
 | 
			
		||||
		$answer->execute ($values);
 | 
			
		||||
		if (!$numberKey) {
 | 
			
		||||
			return $answer->fetch (PDO::FETCH_ASSOC);
 | 
			
		||||
		} else {
 | 
			
		||||
			return $answer->fetch (PDO::FETCH_NUM);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static function command ($sql, $values = array()) {
 | 
			
		||||
		$answer = self::$join->prepare ($sql);
 | 
			
		||||
		return $answer->execute ($values);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static function loadAll ($sql, $values = array(), $numberKey = false) {
 | 
			
		||||
		$answer = self::$join->prepare ($sql);
 | 
			
		||||
		$answer->execute ($values);
 | 
			
		||||
		if (!$numberKey) {
 | 
			
		||||
			return $answer->fetchALL (PDO::FETCH_ASSOC);
 | 
			
		||||
		} else {
 | 
			
		||||
			return $answer->fetchALL (PDO::FETCH_NUM);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static function loadAlone ($sql, $values = array()) {
 | 
			
		||||
		$answer = self::$join->prepare ($sql);
 | 
			
		||||
		$answer->execute ($values);
 | 
			
		||||
		return $answer->fetch (PDO::FETCH_NUM)[0];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static function add ($table, $values = array()) {
 | 
			
		||||
		return self::command (
 | 
			
		||||
			"INSERT INTO `$table` (`" .
 | 
			
		||||
				implode('`, `', array_keys($values)) .
 | 
			
		||||
				"`) VALUES (" .
 | 
			
		||||
					str_repeat('?,', (count($values) > 0 ? count($values)-1 : 0)) .
 | 
			
		||||
					"?)"
 | 
			
		||||
					, array_values ($values));
 | 
			
		||||
				}
 | 
			
		||||
				// TODO: pokud vlozim prazdne pole tak chyba ??
 | 
			
		||||
				public static function addAll ($table, $values = array ()) {
 | 
			
		||||
					try {
 | 
			
		||||
						foreach ($values as $value) {
 | 
			
		||||
							self::add ($table, $value);
 | 
			
		||||
						}
 | 
			
		||||
					} catch (PDOException $ex) {
 | 
			
		||||
						throw new PDOException ($ex->getMessage());
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				public static function edit (
 | 
			
		||||
					$table,
 | 
			
		||||
					$values = array(),
 | 
			
		||||
					$conditions,
 | 
			
		||||
					$values2 = array()
 | 
			
		||||
				) {
 | 
			
		||||
					return self::command (
 | 
			
		||||
						"UPDATE `$table` SET `" .
 | 
			
		||||
						implode('` =?, `', array_keys($values)) .
 | 
			
		||||
						"` =? " .
 | 
			
		||||
						$conditions
 | 
			
		||||
						, array_merge (array_values ($values), $values2));
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					public static function insertId () {
 | 
			
		||||
						return self::$join->lastInsertId ();
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					public static function addId ($lastTable, $lastIdName) {
 | 
			
		||||
						$answer = self::$join->prepare ("SELECT `$lastIdName` FROM `$lastTable` ORDER BY `$lastIdName` DESC");
 | 
			
		||||
						$answer->execute ();
 | 
			
		||||
						return $answer->fetch (PDO::FETCH_NUM)[0];
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
							
								
								
									
										41
									
								
								app/class/DashboardManager.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								app/class/DashboardManager.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
<?php
 | 
			
		||||
class DashboardManager{
 | 
			
		||||
	public static $devices;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	function getAllDashboards ($userId) {
 | 
			
		||||
		return Db::loadAll ("SELECT * FROM dashboard WHERE user_id=?", array($userId));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function getAllSubDevices ($userId) {
 | 
			
		||||
		return Db::loadAll ("SELECT * FROM subdevices WHERE subdevice_id IN (SELECT subdevice_id FROM dashboard WHERE user_id=?)", array($userId));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function getSubDevice ($userId, $subDeviceId) {
 | 
			
		||||
		return Db::loadOne ("SELECT * FROM subdevices WHERE subdevice_id = (SELECT subdevice_id FROM dashboard WHERE user_id=? AND subdevice_id = ? )", array($userId, $subDeviceId));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function Add ($subDeviceId) {
 | 
			
		||||
		if (self::getSubDevice(UserManager::getUserData('user_id'), $subDeviceId) == null){
 | 
			
		||||
 | 
			
		||||
			// to do: pokud existuje nepridej
 | 
			
		||||
			//
 | 
			
		||||
			//
 | 
			
		||||
			$dashboardItem = array (
 | 
			
		||||
				'user_id' => UserManager::getUserData('user_id'),
 | 
			
		||||
				'subdevice_id' => $subDeviceId,
 | 
			
		||||
			);
 | 
			
		||||
			try {
 | 
			
		||||
				Db::add ('dashboard', $dashboardItem);
 | 
			
		||||
			} catch(PDOException $error) {
 | 
			
		||||
				echo $error->getMessage();
 | 
			
		||||
				die();
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function Remove ($subDeviceId){
 | 
			
		||||
		$userId = UserManager::getUserData('user_id');
 | 
			
		||||
		Db::command ('DELETE FROM dashboard WHERE subdevice_id=? AND user_id = ?', array ($subDeviceId, $userId));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										80
									
								
								app/class/DeviceManager.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								app/class/DeviceManager.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
			
		||||
<?php
 | 
			
		||||
class DeviceManager{
 | 
			
		||||
	public static $devices;
 | 
			
		||||
 | 
			
		||||
	function getAllDevices () {
 | 
			
		||||
		return Db::loadAll ("SELECT * FROM devices WHERE approved != ?", Array(2));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function getAllDevicesInRoom ($roomId = "") {
 | 
			
		||||
		return Db::loadAll ("SELECT * FROM devices WHERE room_id = ? AND approved != ?", Array($roomId, 2));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function getOtherDevices(){
 | 
			
		||||
		return Db::loadAll ("SELECT * FROM devices WHERE room_id IS NULL ");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function getDeviceByToken($deviceToken) {
 | 
			
		||||
		return Db::loadOne("SELECT * FROM devices WHERE token = ?", array($deviceToken));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function getDeviceById($deviceId) {
 | 
			
		||||
		return Db::loadOne("SELECT * FROM devices WHERE device_id = ?", array($deviceId));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function create ($name, $token) {
 | 
			
		||||
		$device = array (
 | 
			
		||||
			'name' => $name,
 | 
			
		||||
			'token' => $token,
 | 
			
		||||
		);
 | 
			
		||||
		try {
 | 
			
		||||
			Db::add ('devices', $device);
 | 
			
		||||
		} catch(PDOException $error) {
 | 
			
		||||
			echo $error->getMessage();
 | 
			
		||||
			die();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function edit ($deviceId, $values = []) {
 | 
			
		||||
		try {
 | 
			
		||||
			Db::edit ('devices', $values, 'WHERE device_id = ?', array($deviceId));
 | 
			
		||||
		} 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 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 function delete ($deviceId) {
 | 
			
		||||
		Db::command ('DELETE FROM devices WHERE device_id=?', array ($deviceId));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function registeret ($deviceToken) {
 | 
			
		||||
		return (count(Db::loadAll ("SELECT * FROM devices WHERE token=?", array($deviceToken))) == 1 ? true : false);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function approved ($deviceToken) {
 | 
			
		||||
		return (count(Db::loadAll ("SELECT * FROM devices WHERE token=? AND approved = ?", array($deviceToken, 1))) == 1 ? true : false);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										121
									
								
								app/class/Form.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										121
									
								
								app/class/Form.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,121 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
* [InputTypes datatype for input types]
 | 
			
		||||
*/
 | 
			
		||||
class InputTypes
 | 
			
		||||
{
 | 
			
		||||
	const TEXT = 'text';
 | 
			
		||||
	const NUMBER = 'number';
 | 
			
		||||
	const COLOR = 'color';
 | 
			
		||||
	const CHECK = 'checkbox';
 | 
			
		||||
	const BUTTON = 'button';
 | 
			
		||||
	const DATE = 'date';
 | 
			
		||||
	const DATETIME = 'datetime';
 | 
			
		||||
	const SUBMIT = 'submit';
 | 
			
		||||
	const HIDEN = 'hidden';
 | 
			
		||||
	const EMAIL = 'email';
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
* [Form Form Generator Class]
 | 
			
		||||
*/
 | 
			
		||||
class Form {
 | 
			
		||||
 | 
			
		||||
	public $formContent = "";
 | 
			
		||||
	private $formName;
 | 
			
		||||
	private $formId;
 | 
			
		||||
	private $method;
 | 
			
		||||
	private $action;
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * [__construct description]
 | 
			
		||||
	 * @param String $name   [description]
 | 
			
		||||
	 * @param String $id     [description]
 | 
			
		||||
	 * @param String $method [description]
 | 
			
		||||
	 * @param String $action [description]
 | 
			
		||||
	 */
 | 
			
		||||
	function __construct(String $name, String $id, String $method, String $action) {
 | 
			
		||||
		if ($name != "") {
 | 
			
		||||
			$this->formName = 'name="'.$name.'"';
 | 
			
		||||
		}
 | 
			
		||||
		if ($id != "") {
 | 
			
		||||
			$this->formId = 'id="'.$id.'"';
 | 
			
		||||
		}
 | 
			
		||||
		if ($method != "") {
 | 
			
		||||
			$this->method = 'method="'.$method.'"';
 | 
			
		||||
		}
 | 
			
		||||
		if ($action != "") {
 | 
			
		||||
			$this->$action = 'action="'.$action.'"';
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	/**
 | 
			
		||||
	 * [addInput description]
 | 
			
		||||
	 * @param String     $type    Type of input element (text, number, color,checkbox, button, date, datetime, submit)
 | 
			
		||||
	 * @param String     $name    name of element
 | 
			
		||||
	 * @param String     $id      id of element
 | 
			
		||||
	 * @param String     $label   label of element
 | 
			
		||||
	 * @param String     $value   value of element
 | 
			
		||||
	 * @param boolean    $require require selector toggle
 | 
			
		||||
	 * @param boolean    $enabled enable selector toggle
 | 
			
		||||
	 */
 | 
			
		||||
	function addInput(String $type, String $name, String $id, String $label, String $value, Bool $require = false, Bool $enabled = true){
 | 
			
		||||
		$this->formContent .= '<div class="field">';
 | 
			
		||||
		if ($label != "") {
 | 
			
		||||
			$this->formContent .= '<div class="label">'.$label.'</div>';
 | 
			
		||||
		}
 | 
			
		||||
		$this->formContent .= '<input class="input" type="'.$type.'" name="'.$name.'" value="'.$value.'" ' . ($enabled ? '' : 'disabled')  . ($require ? '' : 'required') .'>';
 | 
			
		||||
		$this->formContent .= '</div>';
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	//TODO: add Group support
 | 
			
		||||
	/**
 | 
			
		||||
	 * [addSelect description]
 | 
			
		||||
	 * @param String  $name     name of element
 | 
			
		||||
	 * @param String  $id       id of element
 | 
			
		||||
	 * @param String  $label    label of element
 | 
			
		||||
	 * @param Array   $data     array of options [value => valueName]
 | 
			
		||||
	 * @param boolean $multiple multiple selector toggle
 | 
			
		||||
	 * @param boolean $enabled  enable selector toggle
 | 
			
		||||
	 */
 | 
			
		||||
	function addSelect(String $name, String $id, String $label, Array $data, Bool $multiple = false, Bool $require = false, Bool $enabled = true){
 | 
			
		||||
		$this->formContent .= '<div class="field">';
 | 
			
		||||
		if ($label != "") {
 | 
			
		||||
			$this->formContent .= '<div class="label">'.$label.'</div>';
 | 
			
		||||
		}
 | 
			
		||||
		$this->formContent .= '<select class="input"' . ($multiple ? '' : 'multiple') . ($enabled ? '' : 'disabled') . ($require ? '' : 'required') .'>';
 | 
			
		||||
		foreach ($data as $value => $text) {
 | 
			
		||||
			$this->formContent .= '<option value="' . $value . '">' . $text . '</option>';
 | 
			
		||||
		}
 | 
			
		||||
		$this->formContent .= '</select>';
 | 
			
		||||
		$this->formContent .= '</div>';
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * [addTextarea description]
 | 
			
		||||
	 * @param String     $name     name of element
 | 
			
		||||
	 * @param String     $id       id of element
 | 
			
		||||
	 * @param String     $label    label of element
 | 
			
		||||
	 * @param String     $value   value of element
 | 
			
		||||
	 * @param boolean    $enabled enable selector toggle
 | 
			
		||||
	 */
 | 
			
		||||
	function addTextarea(String $name, String $id, String $label, Array $value, Bool $require = false, Bool $enabled = true){
 | 
			
		||||
		$this->formContent .= '<div class="field">';
 | 
			
		||||
		if ($label != "") {
 | 
			
		||||
			$this->formContent .= '<div class="label">'.$label.'</div>';
 | 
			
		||||
		}
 | 
			
		||||
		$this->formContent .= '<textarea class="input"'  . ($enabled ? '' : 'disabled')  . ($require ? '' : 'required') .'>';
 | 
			
		||||
		$this->formContent .= $value;
 | 
			
		||||
		$this->formContent .= '</textarea>';
 | 
			
		||||
		$this->formContent .= '</div>';
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * [render function whitch dysplay generated form]
 | 
			
		||||
	 */
 | 
			
		||||
	function render(){
 | 
			
		||||
		self::addInput(InputTypes::SUBMIT, 'formSubmit', '', 'Submit', 'Submit');
 | 
			
		||||
		$form = '<form '.$this->formName.$this->formId.$this->method.$this->action.'">';
 | 
			
		||||
		$form .= $this->formContent;
 | 
			
		||||
		$form .= '</form>';
 | 
			
		||||
		echo 	$form;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										39
									
								
								app/class/LogManager.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								app/class/LogManager.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
*
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
class LogRecordType{
 | 
			
		||||
	const WARNING = 'warning';
 | 
			
		||||
	const ERROR = 'error';
 | 
			
		||||
	const INFO = 'info';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class LogManager
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
	private $logFile;
 | 
			
		||||
	function __construct($fileName = "")
 | 
			
		||||
	{
 | 
			
		||||
		if ($fileName == ""){
 | 
			
		||||
			$fileName = './app/logs/'. date("Y-m-d").'.log';
 | 
			
		||||
		}
 | 
			
		||||
		if(!is_dir("./app/logs/"))
 | 
			
		||||
		{
 | 
			
		||||
			mkdir("./app/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";
 | 
			
		||||
		$record = Utilities::stringInsert($record,"\n",65);
 | 
			
		||||
		fwrite($this->logFile, $record);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function __destruct(){
 | 
			
		||||
		if (isset($this->logFile)) {
 | 
			
		||||
			fclose($this->logFile);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								app/class/Partial.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								app/class/Partial.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
<?php
 | 
			
		||||
class Partial{
 | 
			
		||||
	var $assignedValues = [];
 | 
			
		||||
	var $partBuffer;
 | 
			
		||||
	var $path;
 | 
			
		||||
	var $debug;
 | 
			
		||||
 | 
			
		||||
	function __construct($path = "", $debug = false) {
 | 
			
		||||
		$this->debug = $debug;
 | 
			
		||||
		if (!empty('app/templates/part/' . $path . '.phtml') && file_exists('app/templates/part/' . $path . '.phtml')) {
 | 
			
		||||
			$this->path = $path;
 | 
			
		||||
		} else {
 | 
			
		||||
			echo '<pre>';
 | 
			
		||||
			echo 'PHTML: Parial File ' . $path . ' not found';
 | 
			
		||||
			echo '</pre>';
 | 
			
		||||
			die();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function prepare($searchS, $repleaceS) {
 | 
			
		||||
		if (!empty($searchS)) {
 | 
			
		||||
			$this->assignedValues[strtoupper($searchS)] = $repleaceS;
 | 
			
		||||
		}
 | 
			
		||||
		echo ($this->debug == true ? var_dump($this->assignedValues) : '');
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function render() {
 | 
			
		||||
		if (!empty($this->assignedValues)){
 | 
			
		||||
			extract($this->assignedValues);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		require('app/templates/part/' . $this->path . '.phtml');
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										80
									
								
								app/class/RecordManager.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								app/class/RecordManager.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
			
		||||
<?php
 | 
			
		||||
class RecordManager{
 | 
			
		||||
	public static $records;
 | 
			
		||||
 | 
			
		||||
	public 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;
 | 
			
		||||
		};
 | 
			
		||||
		$record = array (
 | 
			
		||||
			'subdevice_id' => $subDeviceId,
 | 
			
		||||
			'value' => $value,
 | 
			
		||||
		);
 | 
			
		||||
		try {
 | 
			
		||||
			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 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));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										26
									
								
								app/class/RoomManager.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								app/class/RoomManager.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
<?php
 | 
			
		||||
class RoomManager{
 | 
			
		||||
	public static $rooms;
 | 
			
		||||
 | 
			
		||||
	function getAllRooms () {
 | 
			
		||||
		$allRoom = Db::loadAll ("SELECT rooms.*, COUNT(devices.device_id) as device_count FROM rooms LEFT JOIN devices ON (devices.room_id=rooms.room_id) GROUP BY rooms.room_id");
 | 
			
		||||
		return $allRoom;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function create ($name) {
 | 
			
		||||
		$room = array (
 | 
			
		||||
			'name' => $name,
 | 
			
		||||
		);
 | 
			
		||||
		try {
 | 
			
		||||
			Db::add ('rooms', $room);
 | 
			
		||||
		} catch(PDOException $error) {
 | 
			
		||||
			echo $error->getMessage();
 | 
			
		||||
			die();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function delete ($roomId) {
 | 
			
		||||
		Db::command ('DELETE FROM rooms WHERE room_id=?', array ($roomId));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										30
									
								
								app/class/Route.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								app/class/Route.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
<?php
 | 
			
		||||
class Route{
 | 
			
		||||
	private $urls = [];
 | 
			
		||||
	private $views = [];
 | 
			
		||||
 | 
			
		||||
	function __construct() {
 | 
			
		||||
		// code...
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function add($url, $view = "", $conrol = "") {
 | 
			
		||||
		$this->urls[] = '/'.trim($url, '/');
 | 
			
		||||
		if (!empty($view)) {
 | 
			
		||||
			$this->views[] = $view;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function submit(){
 | 
			
		||||
		$urlGetParam = isset($_GET['url']) ? '/' . $_GET['url'] : '/';
 | 
			
		||||
		foreach ($this->urls as $urlKey => $urlValue) {
 | 
			
		||||
			if ($urlValue === $urlGetParam) {
 | 
			
		||||
				$useView = $this->views[$urlKey];
 | 
			
		||||
				new $useView();
 | 
			
		||||
				die();
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		echo 'Not Fount 404';
 | 
			
		||||
		die();
 | 
			
		||||
		//TODO: 404 přidělat
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										41
									
								
								app/class/SceneManager.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								app/class/SceneManager.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
<?php
 | 
			
		||||
class SceneManager{
 | 
			
		||||
	public static $scenes;
 | 
			
		||||
 | 
			
		||||
	public function create ($icon, $name, $doCode) {
 | 
			
		||||
		$scene = array (
 | 
			
		||||
			'icon' => $icon,
 | 
			
		||||
			'name' => $name,
 | 
			
		||||
			'do_something' => $doCode,
 | 
			
		||||
		);
 | 
			
		||||
		try {
 | 
			
		||||
			Db::add ('scenes', $scene);
 | 
			
		||||
		} catch(PDOException $error) {
 | 
			
		||||
			echo $error->getMessage();
 | 
			
		||||
			die();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function getAllScenes () {
 | 
			
		||||
		return Db::loadAll ("SELECT * FROM scenes");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function getScene ($sceneId) {
 | 
			
		||||
		return Db::loadOne("SELECT * FROM scenes WHERE scene_id = ?", array($sceneId));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public 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 function delete($sceneId){
 | 
			
		||||
		Db::command ('DELETE FROM scenes WHERE scene_id=?', array ($sceneId));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
?>
 | 
			
		||||
							
								
								
									
										61
									
								
								app/class/SubDeviceManager.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								app/class/SubDeviceManager.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
			
		||||
<?php
 | 
			
		||||
class SubDeviceManager
 | 
			
		||||
{
 | 
			
		||||
	public static $devices;
 | 
			
		||||
 | 
			
		||||
	public function getAllSubDevices($deviceId)
 | 
			
		||||
	{
 | 
			
		||||
		return Db::loadAll("SELECT * FROM subdevices WHERE device_id = ?", array($deviceId));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function getSubDeviceMaster($subDeviceId)
 | 
			
		||||
	{
 | 
			
		||||
		return Db::loadOne("SELECT * FROM devices WHERE device_id = (SELECT device_id FROM subdevices WHERE subdevice_id = ?)", array($subDeviceId));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function getSubDeviceByMaster($deviceId, $subDeviceType = null)
 | 
			
		||||
	{
 | 
			
		||||
		if ($subDeviceType == null) {
 | 
			
		||||
			return Db::loadOne("SELECT * FROM subdevices WHERE device_id = ?;", array($deviceId));
 | 
			
		||||
		} else {
 | 
			
		||||
			return Db::loadOne("SELECT * FROM subdevices WHERE device_id = ? AND type = ?;", array($deviceId, $subDeviceType));
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function getSubDeviceByMasterAndType($deviceId, $subDeviceType = null)
 | 
			
		||||
	{
 | 
			
		||||
		if (!empty($subDeviceType)) {
 | 
			
		||||
			return Db::loadOne("SELECT * FROM subdevices WHERE device_id = ?;", array($deviceId));
 | 
			
		||||
		} else {
 | 
			
		||||
			return Db::loadOne("SELECT * FROM subdevices WHERE device_id = ? AND type = ?;", array($deviceId, $subDeviceType));
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function getSubDevice($subDeviceId)
 | 
			
		||||
	{
 | 
			
		||||
		return Db::loadOne("SELECT * FROM subdevices WHERE subdevice_id = ?;", array($subDeviceId));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	//check if dubdevice exist
 | 
			
		||||
 | 
			
		||||
	public 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 function remove($subDeviceId)
 | 
			
		||||
	{
 | 
			
		||||
		RecordManager::cleanSubdeviceRecords($subDeviceId);
 | 
			
		||||
		return Db::loadAll("DELETE FROM subdevices WHERE subdevice_id = ?", array($subDeviceId));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								app/class/Template.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								app/class/Template.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
<?php
 | 
			
		||||
class Template extends Partial{
 | 
			
		||||
	var $assignedValues = [];
 | 
			
		||||
	var $partBuffer;
 | 
			
		||||
	var $path;
 | 
			
		||||
	var $debug;
 | 
			
		||||
 | 
			
		||||
	function __construct($path = "", $debug = false) {
 | 
			
		||||
		$this->debug = $debug;
 | 
			
		||||
		if (!empty('app/templates/' . $path . '.phtml') && file_exists('app/templates/' . $path . '.phtml')) {
 | 
			
		||||
			$this->path = $path;
 | 
			
		||||
		} else {
 | 
			
		||||
			echo '<pre>';
 | 
			
		||||
			echo 'PHTML: Template File ' . $path . ' not found';
 | 
			
		||||
			echo '</pre>';
 | 
			
		||||
			die();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function prepare($searchS, $repleaceS) {
 | 
			
		||||
		if (!empty($searchS)) {
 | 
			
		||||
			$this->assignedValues[strtoupper($searchS)] = $repleaceS;
 | 
			
		||||
		}
 | 
			
		||||
		echo ($this->debug == true ? var_dump($this->assignedValues) : '');
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function render() {
 | 
			
		||||
		extract($this->assignedValues);
 | 
			
		||||
		if (!empty('app/controls/' . $this->path . '.php') && file_exists('app/controls/' . $this->path . '.php')) {
 | 
			
		||||
			require_once('app/controls/' . $this->path . '.php');
 | 
			
		||||
		}
 | 
			
		||||
		require_once('app/templates/' . $this->path . '.phtml');
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										180
									
								
								app/class/UserManager.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										180
									
								
								app/class/UserManager.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,180 @@
 | 
			
		||||
<?php
 | 
			
		||||
class UserManager
 | 
			
		||||
{
 | 
			
		||||
	public function getUsers () {
 | 
			
		||||
		try {
 | 
			
		||||
			$allRoom = Db::loadAll ("SELECT * FROM users");
 | 
			
		||||
			return $allRoom;
 | 
			
		||||
		} catch(PDOException $error) {
 | 
			
		||||
			echo $error->getMessage();
 | 
			
		||||
			die();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function getUser ($userName) {
 | 
			
		||||
		try {
 | 
			
		||||
			$user = Db::loadOne ("SELECT * FROM users WHERE username = ?", [$userName]);
 | 
			
		||||
			return $user;
 | 
			
		||||
		} catch(PDOException $error) {
 | 
			
		||||
			echo $error->getMessage();
 | 
			
		||||
			die();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public 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" . str_replace(".", "_", $_SERVER['HTTP_HOST']), $this->setEncryptedCookie($user['username']), time () + (30 * 24 * 60 * 60 * 1000), "/", $_SERVER['HTTP_HOST'], 1);
 | 
			
		||||
					}
 | 
			
		||||
					$_SESSION['user']['id'] = $user['user_id'];
 | 
			
		||||
					$page = "./index.php";
 | 
			
		||||
					if ($user["startPage"] == 1) {
 | 
			
		||||
						$page = "./dashboard.php";
 | 
			
		||||
					}
 | 
			
		||||
					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 function isLogin () {
 | 
			
		||||
		if (isset ($_SESSION['user']) && isset($_SESSION['user']['id'])) {
 | 
			
		||||
			return true;
 | 
			
		||||
		} else {
 | 
			
		||||
			if (isset ($_COOKIE['rememberMe' . str_replace(".", "_", $_SERVER['HTTP_HOST'])])){
 | 
			
		||||
				if ($user = Db::loadOne ('SELECT * FROM users WHERE LOWER(username)=LOWER(?)', array ($this->getDecryptedCookie($_COOKIE['rememberMe' . str_replace(".", "_", $_SERVER['HTTP_HOST'])])))) {
 | 
			
		||||
					$_SESSION['user']['id'] = $user['user_id'];
 | 
			
		||||
					return true;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		return false;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function logout () {
 | 
			
		||||
		setcookie ("rememberMe" . str_replace(".", "_", $_SERVER['HTTP_HOST']),"", time() - (30 * 24 * 60 * 60 * 1000), "/", $_SERVER['HTTP_HOST'], 1);
 | 
			
		||||
		unset($_SESSION['user']);
 | 
			
		||||
		session_destroy();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public 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 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) {
 | 
			
		||||
		if (isset($_SESSION['user']['id'])) {
 | 
			
		||||
			$user = Db::loadOne ('SELECT ' . $type . ' FROM users WHERE user_id=?', array ($_SESSION['user']['id']));
 | 
			
		||||
			return $user[$type];
 | 
			
		||||
		}
 | 
			
		||||
		return "";
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function setUserData ($type, $value) {
 | 
			
		||||
		if (isset ($_SESSION['user']['id'])) {
 | 
			
		||||
			Db::command ('UPDATE users SET ' . $type . '=? WHERE user_id=?', array ($value, $_SESSION['user']['id']));
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function getHashPassword ($password) {
 | 
			
		||||
		$salt = "s0mRIdlKvI";
 | 
			
		||||
		$hashPassword = hash('sha512', ($password . $salt));
 | 
			
		||||
		return $hashPassword;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function ulozitObrazek ($file, $path = "", $name = "") {
 | 
			
		||||
		if (!@is_array (getimagesize($file['tmp_name']))) {
 | 
			
		||||
			throw new ChybaUzivatele("Formát obrázku ". $file['name'] ." není podporován!");
 | 
			
		||||
		} else {
 | 
			
		||||
			$extension = strtolower(strrchr($file['name'], '.'));
 | 
			
		||||
			switch ($extension) {
 | 
			
		||||
				case '.jpg':
 | 
			
		||||
				case '.jpeg':
 | 
			
		||||
				$img = @imagecreatefromjpeg($file['tmp_name']);
 | 
			
		||||
				break;
 | 
			
		||||
				case '.gif':
 | 
			
		||||
					$img = @imagecreatefromgif($file['tmp_name']);
 | 
			
		||||
					break;
 | 
			
		||||
					case '.png':
 | 
			
		||||
					$img2 = @imagecreatefrompng($file['tmp_name']);
 | 
			
		||||
					break;
 | 
			
		||||
					case '.ico':
 | 
			
		||||
					$img3 = @$file['tmp_name'];
 | 
			
		||||
					break;
 | 
			
		||||
					default:
 | 
			
		||||
					$img = false;
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				if($name == ""){
 | 
			
		||||
					$nazev = substr($file['name'], 0, strpos($file['name'], ".")) ."_". round(microtime(true) * 1000);
 | 
			
		||||
				}else{
 | 
			
		||||
					$nazev = $name;
 | 
			
		||||
				}
 | 
			
		||||
				if(!file_exists($path)){
 | 
			
		||||
					mkdir($path, 0777, true);
 | 
			
		||||
				}
 | 
			
		||||
				if (@$img) {
 | 
			
		||||
					if (!imagejpeg ($img, $path . $nazev .".jpg", 95)) {
 | 
			
		||||
						throw new ChybaUzivatele ("Obrázek neuložen!");
 | 
			
		||||
					}
 | 
			
		||||
					imagedestroy ($img);
 | 
			
		||||
				} else if (@$img2) {
 | 
			
		||||
					if (!imagepng ($img2, $path . $nazev .".jpg")) {
 | 
			
		||||
						throw new ChybaUzivatele ("Obrázek neuložen!");
 | 
			
		||||
					}
 | 
			
		||||
					imagedestroy ($img2);
 | 
			
		||||
				} else if (@$img3) {
 | 
			
		||||
					if (!copy($img3, $path . $nazev .'.ico')) {
 | 
			
		||||
						throw new ChybaUzivatele ("Obrázek neuložen!");
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				return array('success' => true, 'url' => $path . $nazev .".jpg");
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public function atHome($userId, $atHome){
 | 
			
		||||
			try {
 | 
			
		||||
				Db::edit ('users', ['at_home' => $atHome], 'WHERE user_id = ?', array($userId));
 | 
			
		||||
			} catch(PDOException $error) {
 | 
			
		||||
				echo $error->getMessage();
 | 
			
		||||
				die();
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	?>
 | 
			
		||||
							
								
								
									
										44
									
								
								app/class/Utilities.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								app/class/Utilities.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
<?php
 | 
			
		||||
/**
 | 
			
		||||
*
 | 
			
		||||
*/
 | 
			
		||||
class Utilities
 | 
			
		||||
{
 | 
			
		||||
	function cleanString($text) {
 | 
			
		||||
		$utf8 = array(
 | 
			
		||||
			'/[áàâãªä]/u'   =>   '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);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	function stringInsert($str,$insertstr,$pos)
 | 
			
		||||
	{
 | 
			
		||||
		$str = substr($str, 0, $pos) . $insertstr . substr($str, $pos);
 | 
			
		||||
		return $str;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user