1
0
moha/class/db.php

76 lines
2.0 KiB
PHP

<?php
logger(DEBUG,"Including db.php");
class db extends mysqli
{
public $mysqlServer = "localhost"; // "127.0.0.1";
public $username = "moha";
public $passwd = "MysqlMoha";
public $database = "moha";
public $result;
function __construct()
{
if ($this->connect($this->mysqlServer, $this->username, $this->passwd, $this->database) === false)
{
logger(ERROR,"Connection to sql server error :" . $this->connect_error);
return 2;
}
$result = new mysqli_result($this);
}
function protect($string)
{
return $this->real_escape_string($string);
}
function logProperty($device, $propertyTree, $value, $oldValue = 0)
{
global $mohaDB, $properties2log, $testMode;
$precision = 0;
//echo "############## logProperty ################\nproperty => " . $propertyTree .EOL;
if (array_key_exists($propertyTree, $properties2log))
{
//echo "logging in database";
$ieeeAddress = $device->ieeeAddress;
//print_r($ieeeAddress);
$query = "INSERT INTO logs (device, property, value) VALUES('" . $this->protect($ieeeAddress) . "', '" . $this->protect($propertyTree) . "', '" . $this->protect($value) . "')";
if (is_numeric($value) and !empty($properties2log[$propertyTree]))
{
// calculate a min/max value for storing data
$var = $properties2log[$propertyTree];
if (!is_numeric($var))
{
$minMax = (float)$value * (float)$var / 100;
}else
{
$minMax = $var;
}
echo "minMax = " .$minMax . EOL;
//echo "oldValue = " . $oldValue . EOL;
//echo "Value = " . $value . EOL;
if ($value >= $oldValue - $minMax and $value <= $oldValue + $minMax)
{
//echo "========>>>>>>>>>not changed" . EOL;
return 0;
}
}
if ($testMode)
{
logger(INFO, _("Test mode on: not storing in DB "));
}else
{
if(!$this->result = $this->query($query))
{
logger(ERROR, _("mysql query errror: ") . $this->error);
}
}
logger(INFO, sprintf(_("New value of property: '%s' of device: %s stored in database"), $propertyTree, $device->friendlyName, $value));
}
}
}
$mohaDB = new db();
?>