2202 lines
66 KiB
PHP
2202 lines
66 KiB
PHP
<?php
|
|
/** \file include\db_log.php
|
|
* \brief DI webinterface zkl-log functions
|
|
* \author Rob Schalken, Core|Vision
|
|
* \version $Revision: 26247 $
|
|
* \date $Date: 2016-02-29 10:40:22 +0100 (Mon, 29 Feb 2016) $
|
|
*
|
|
* This file contains the zkl-log database functions. This file is always included.
|
|
*/
|
|
|
|
/*
|
|
* Major/minor defintions
|
|
*/
|
|
define("MAJ_POWER_UP", 0);
|
|
define("MIN_POWER_UP", 0);
|
|
define("MAJ_MEAS_ON", 1);
|
|
define("MAJ_MEAS_OFF", 2);
|
|
define("MAJ_SHORTCIR_OK", 3);
|
|
define("MAJ_SHORTCIR_ALARM", 4);
|
|
define("MAJ_SHORTCIR_ERROR", 5);
|
|
define("MIN_SHORCIR_ERROR", 1);
|
|
define("MAJ_BATTERY", 6);
|
|
define("MIN_BATTERY_ALARM", 0);
|
|
define("MIN_BATTERY_EMPTY", 1);
|
|
define("MIN_BATTERY_OK", 2);
|
|
define("MIN_BATTERY_REMOVED", 3);
|
|
define("MIN_BATTERY_LOG", 16);
|
|
define("MAJ_CALIBRATION", 5);
|
|
define("MIN_CALIBRATION", 36);
|
|
define("MAJ_GPS", 13);
|
|
define("MIN_GPS", 48);
|
|
define("MAJ_RELAIS", 13);
|
|
define("MIN_RELAIS_ON", 24);
|
|
define("MIN_RELAIS_OFF", 25);
|
|
define("MAJ_SMS", 9);
|
|
define("MIN_SMS_SENT", 33);
|
|
define("MIN_SMS_ERROR", 34);
|
|
define("MIN_SMS_RECV", 48);
|
|
define("MAJ_TEMP", 13);
|
|
define("MIN_TEMP_ONBOARD", 64);
|
|
define("MIN_TEMP_EXT1", 65);
|
|
define("MAJ_SWITCH", 10);
|
|
define("MIN_SWITCH_STATE", 98);
|
|
define("MAJ_SWITCH3000", 7);
|
|
define("MIN_SWITCH3000_KEY_ON_OP", 0);
|
|
define("MIN_SWITCH3000_KEY_OP_ON", 1);
|
|
define("MIN_SWITCH3000_KEY_OFF_OP", 2);
|
|
define("MIN_SWITCH3000_KEY_OP_OFF", 3);
|
|
define("MIN_SWITCH3000_REBOOT", 9);
|
|
define("MIN_SWITCH3000_KEY_OFF", 112);
|
|
define("MIN_SWITCH3000_KEY_ON", 113);
|
|
define("MIN_SWITCH3000_MTINFO_OFF", 240);
|
|
define("MIN_SWITCH3000_MTINFO_ON", 241);
|
|
define("MIN_SWITCH3000_MASK", 0x70);
|
|
define("MAJ_PERIPHERALS", 10);
|
|
define("MIN_SWITCH3000_OFF", 104);
|
|
define("MIN_SWITCH3000_ON", 105);
|
|
|
|
/**
|
|
* Fetch user log project data which match log user database id
|
|
*
|
|
* Inputs:
|
|
* - log_user_id: log user id
|
|
*
|
|
* Return: Array containing user log user information
|
|
*/
|
|
function db_fetch_user_log_project($log_user_id) {
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
// Get user log zkl info
|
|
$row_log_user = db_fetch_data("SELECT project FROM log_gebruiker_project WHERE id='" . $log_user_id . "'", "log");
|
|
|
|
// Parse into result (NB: at most one result)
|
|
if (!empty($row_log_user)) {
|
|
foreach( $row_log_user as $project_id ) {
|
|
$project_info = db_fetch_data("SELECT * FROM project WHERE id=" . $project_id['project'], "default");
|
|
$project_info = $project_info[0];
|
|
|
|
// Check is project have a parent
|
|
if( !is_null($project_info['parent']) ){
|
|
$parentName = db_fetch_data("SELECT naam from project where id='".$project_info['parent']."'", "default");
|
|
$project_info['parent'] = $parentName[0]['naam'];
|
|
}
|
|
|
|
//check if the save button has been pressed
|
|
$change = db_fetch_data("SELECT id FROM log_gebruiker WHERE id='" . $log_user_id . "' AND formdata LIKE '%recall_but%'", "log");
|
|
if( $change ) {
|
|
$project_info['change']=TRUE;
|
|
}
|
|
else{
|
|
$project_info['change']=FALSE;
|
|
}
|
|
}
|
|
|
|
$result[] = $project_info;
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch user log user data which match log user database id
|
|
*
|
|
* Inputs:
|
|
* - log_user_id: log user id
|
|
*
|
|
* Return: Array containing user log user information
|
|
*/
|
|
function db_fetch_user_log_user($log_user_id) {
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
// Get user log zkl info
|
|
$row_log_user = db_fetch_data("SELECT gebruiker FROM log_gebruiker_gebruiker WHERE id='" . $log_user_id . "'", "log");
|
|
|
|
// Parse into result (NB: at most one result)
|
|
if (!empty($row_log_user)) {
|
|
foreach( $row_log_user as $user_id ) {
|
|
$user_info = $user_id; // only user id
|
|
|
|
//check if the save button has been pressed
|
|
$change = db_fetch_data("SELECT id FROM log_gebruiker WHERE id='" . $log_user_id . "' AND formdata LIKE '%recall_but%'", "log");
|
|
if( $change ) {
|
|
$user_info['change']=TRUE;
|
|
}
|
|
else{
|
|
$user_info['change']=FALSE;
|
|
}
|
|
}
|
|
|
|
$result[] = $user_info;
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch user log customer data which match log user database id
|
|
*
|
|
* Inputs:
|
|
* - log_user_id: log user id
|
|
*
|
|
* Return: Array containing user log customer information
|
|
*/
|
|
function db_fetch_user_log_customer($log_user_id) {
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
// Get user log customer info
|
|
$row_log_user = db_fetch_data("SELECT klant FROM log_gebruiker_klant WHERE id='" . $log_user_id . "'", "log");
|
|
|
|
// Parse into result
|
|
if (!empty($row_log_user)) {
|
|
foreach( $row_log_user as $cust_id ) {
|
|
$customer_info = db_fetch_data("SELECT * FROM klant WHERE id=" . $cust_id['klant'], "default");
|
|
$customer_info = $customer_info[0];
|
|
|
|
//check if the save button has been pressed
|
|
$change = db_fetch_data("SELECT id FROM log_gebruiker WHERE id='" . $log_user_id . "' AND formdata LIKE '%recall_but%'", "log");
|
|
if(!empty($change) && $change[0]['id'] == $log_user_id){
|
|
$customer_info['change']=TRUE;
|
|
}
|
|
else{
|
|
$customer_info['change']=FALSE;
|
|
}
|
|
|
|
$result[] = $customer_info;
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch user log zkl data which match log user database id
|
|
*
|
|
* Inputs:
|
|
* - log_user_id: log user id
|
|
*
|
|
* Return: Array containing user log zkl information
|
|
*/
|
|
function db_fetch_user_log_zkl($log_user_id) {
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
// Get user log zkl info
|
|
$row_log_user = db_fetch_data("SELECT zkl FROM log_gebruiker_zkl WHERE id='" . $log_user_id . "'", "log");
|
|
|
|
// Parse into result (NB: at most one result)
|
|
if (!empty($row_log_user)) {
|
|
foreach( $row_log_user as $lance_id ) {
|
|
$lance_info = db_fetch_data("SELECT * FROM zkl WHERE id=" . $lance_id['zkl'], "default");
|
|
$lance_info = $lance_info[0];
|
|
|
|
//check if the save button has been pressed
|
|
$change = db_fetch_data("SELECT id FROM log_gebruiker WHERE id='" . $log_user_id . "' AND formdata LIKE '%recall_but%'", "log");
|
|
if( $change ) {
|
|
$lance_info['change']=TRUE;
|
|
}
|
|
else{
|
|
$lance_info['change']=FALSE;
|
|
}
|
|
}
|
|
|
|
$result[] = $lance_info;
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch user log data which match user or log user database id
|
|
*
|
|
* Inputs:
|
|
* - log_user: user id
|
|
* - log_user_id: log user id
|
|
*
|
|
* Return: Array containing user log information
|
|
*/
|
|
function db_fetch_user_log($log_user = NULL, $log_user_id = NULL) {
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
// Fetch user log info
|
|
$query = "SELECT * FROM `log_gebruiker` ";
|
|
|
|
if (!is_null($log_user)) {
|
|
$query .= "WHERE `gebruiker`='" . $log_user . "' ";
|
|
}
|
|
else if (!is_null($log_user_id)) {
|
|
$query .= "WHERE `id`='" . $log_user_id . "' ";
|
|
}
|
|
|
|
// Order by id
|
|
$query .= "ORDER BY id ASC ";
|
|
|
|
// Execute query
|
|
$row_log_user = db_fetch_data($query, "log");
|
|
|
|
// Parse into result
|
|
if (!empty($row_log_user)) {
|
|
$result = $row_log_user;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Delete user log data which match user or log user database id
|
|
*
|
|
* Inputs:
|
|
* - log_user: user id
|
|
* - log_user_id: log user id
|
|
*
|
|
* Return: Array containing user log information
|
|
*/
|
|
function db_delete_user_log($log_user = NULL, $log_user_id = NULL) {
|
|
// Initial return value
|
|
$result = 0;
|
|
|
|
// Start transaction
|
|
db_start_transaction("log");
|
|
|
|
// Delete user log info
|
|
$query = "DELETE FROM `log_gebruiker` ";
|
|
|
|
if (!is_null($log_user)) {
|
|
$query .= "WHERE `gebruiker`='" . $log_user . "' ";
|
|
}
|
|
else if (!is_null($log_user_id)) {
|
|
$query .= "WHERE `id`='" . $log_user_id . "' ";
|
|
}
|
|
|
|
// Exectue query
|
|
db_store_data($query, "log");
|
|
|
|
// Commit transaction
|
|
if (db_commit_transaction("log")) {
|
|
$result = 1;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch last measurement status
|
|
*
|
|
* Return: Array containing last measurement status
|
|
* Fetch lance log info
|
|
*
|
|
* Inputs:
|
|
* - lance_id: lance database id
|
|
* - major: Major id
|
|
* - minor: Minor id
|
|
*
|
|
* Return: Array containing log info
|
|
*/
|
|
function db_fetch_lance_log_entry($entry_id, $table = "log_zkl")
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
// Fetch lance info
|
|
$log_info = db_fetch_data("SELECT * FROM " . $table . " WHERE id='" . $entry_id . "'", "log");
|
|
|
|
// Parse into result
|
|
if (!empty($log_info)) {
|
|
// Parse result
|
|
$result = $log_info;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch measurement status
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - last Retrieve last entry
|
|
* - event On(bit 1)/Off(bit 2)/Power Up(bit 3)?
|
|
* - begin Begin of report period
|
|
* - end End of report period
|
|
* - log_files array containing rpgmcount, sdcard, startup
|
|
*
|
|
* Return: Array containing measurement status (major and tijd)
|
|
*/
|
|
function db_fetch_lance_log_measurement_status($lance_id, $last = 1, $event = 3, $begin = "", $end = "", $log_files = "")
|
|
{
|
|
// Initial values
|
|
$result = "";
|
|
$event_set = 0;
|
|
|
|
// Query
|
|
$query = "SELECT log_zkl.* FROM log_zkl use index (log_zkl_logfile_event) WHERE log_zkl.zkl=" . $lance_id . " ";
|
|
|
|
// Catch also the measure on majors?
|
|
if ($event & 0x01) {
|
|
$query .= " AND (log_zkl.major=" . MAJ_MEAS_ON;
|
|
|
|
// Set event flag
|
|
$event_set = 1;
|
|
}
|
|
// Catch also the measure off majors?
|
|
if ($event & 0x02) {
|
|
if (!$event_set) {
|
|
$query .= " AND (";
|
|
}
|
|
else {
|
|
$query .= " OR ";
|
|
}
|
|
$query .= "log_zkl.major=" . MAJ_MEAS_OFF;
|
|
|
|
// Set event flag
|
|
$event_set = 1;
|
|
}
|
|
// Catch also the power up majors?
|
|
if ($event & 0x04) {
|
|
if (!$event_set) {
|
|
$query .= " AND (";
|
|
}
|
|
else {
|
|
$query .= " OR ";
|
|
}
|
|
$query .= "log_zkl.major=" . MAJ_POWER_UP . " AND log_zkl.minor=" . MIN_POWER_UP;
|
|
|
|
// Set event flag
|
|
$event_set = 1;
|
|
}
|
|
if ($event_set) {
|
|
$query .= ") ";
|
|
}
|
|
|
|
// Certain period?
|
|
$query .= query_period($begin, $end, "log_zkl", "t", null, null, !$last);
|
|
|
|
// Certain logfiles?
|
|
$query .= query_logfiles($log_files);
|
|
|
|
// Order
|
|
$query .= " ORDER BY log_zkl.id";
|
|
|
|
// Last?
|
|
if ($last) {
|
|
$query .= " DESC LIMIT 1";
|
|
}
|
|
else {
|
|
$query .= " ASC";
|
|
}
|
|
|
|
// Fetch data
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
// Parse into result
|
|
if (!empty($log_info)) {
|
|
// Parse result
|
|
$result = $log_info;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch log files in period
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - begin Begin of report period
|
|
* - end End of report period
|
|
*
|
|
* Return: Array containing log files
|
|
*/
|
|
function db_fetch_lance_log_files($lance_id, $begin = "", $end = "")
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
// Query
|
|
$query = "SELECT log_zkl.rpgmcount,log_zkl.startup,log_zkl.sdcard FROM log_zkl use index(log_zkl_logfile_id_tijd) WHERE log_zkl.zkl=" . $lance_id . "";
|
|
|
|
// Certain period?
|
|
$query .= query_period($begin, $end, "log_zkl", "t", $lance_id);
|
|
|
|
//// Certain period (log_tijd)
|
|
//if ((strlen($begin)) && (strlen($end))) {
|
|
// $query .= " OR log_tijd BETWEEN '" . $begin . "' AND '" . $end . "')";
|
|
//}
|
|
//else if (strlen($begin)) {
|
|
// $query .= " OR log_tijd >= '" . $begin . "')";
|
|
//}
|
|
//else if (strlen($end)) {
|
|
// $query .= " OR log_tijd <= '" . $end . "')";
|
|
//}
|
|
|
|
// Group
|
|
$query .= " GROUP BY log_zkl.startup, log_zkl.rpgmcount, log_zkl.sdcard";
|
|
|
|
// Fetch data
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
// Parse into result
|
|
if (!empty($log_info)) {
|
|
// Parse result
|
|
$result = $log_info;
|
|
|
|
// Detect tmin and tmax (skip error log)
|
|
if (is_array($result)) {
|
|
for ($i = 0; $i < sizeof($result); $i++) {
|
|
$query = "SELECT MIN(log_zkl.t) AS tmin,MAX(log_zkl.t) AS tmax FROM log_zkl USE INDEX(log_zkl_logfile) WHERE log_zkl.zkl=" . $lance_id . "";
|
|
$query .= " AND log_zkl.sdcard='" . $result[$i]['sdcard'] . "'";
|
|
$query .= " AND log_zkl.rpgmcount='" . $result[$i]['rpgmcount'] . "'";
|
|
$query .= " AND log_zkl.startup='" . $result[$i]['startup'] . "'";
|
|
|
|
// Removed because took too long
|
|
//$query .= " AND !(log_zkl.major='10' and log_zkl.minor<'48')";
|
|
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
if (is_array($log_info)) {
|
|
$result[$i]['tmin'] = $log_info[0]['tmin'];
|
|
$result[$i]['tmax'] = $log_info[0]['tmax'];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch last entry log file
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - log_file array containing sdcard, rpgmcount, startup
|
|
*
|
|
* Return: Array containing last log file entry
|
|
*/
|
|
function db_fetch_lance_log_file_last_entry($lance_id, $log_file = "", $table="log_zkl")
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
// Query
|
|
$query = "SELECT " . $table . ".* FROM " . $table . " WHERE " . $table . ".id=(select max(id) from " . $table . " ";
|
|
|
|
if (($table == "log_zkl") && (is_array($log_file))) {
|
|
// Skip error log (Removed because it took to long)
|
|
//$query .= "AND !(major='10' and minor<'48') ";
|
|
|
|
$query .= "use index (log_zkl_logfile) where zkl=" . $lance_id . " ";
|
|
|
|
$query .= query_logfiles(array($log_file));
|
|
}
|
|
else {
|
|
$query .= "where zkl=" . $lance_id . " ";
|
|
}
|
|
|
|
$query .= ") ";
|
|
|
|
// Fetch data
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
// Parse into result
|
|
if (!empty($log_info)) {
|
|
// Parse result
|
|
$result = $log_info[0];
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch short circuit status
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - last Retrieve last entry
|
|
* - begin Begin of report period
|
|
* - end End of report period
|
|
* - log_files array containing rpgmcount, sdcard, startup
|
|
*
|
|
* Return: Array containing short circuit status
|
|
*/
|
|
function db_fetch_lance_log_shortcircuit_status($lance_id, $last = 1, $begin = "", $end = "", $log_files = "")
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
$query = "SELECT * FROM log_zkl";
|
|
$query .= " WHERE zkl=" . $lance_id;
|
|
$query .= " AND (major=" . MAJ_SHORTCIR_ALARM;
|
|
$query .= " OR major=" . MAJ_SHORTCIR_OK;
|
|
$query .= " OR (major=" . MAJ_SHORTCIR_ERROR . " AND minor=" . MIN_SHORCIR_ERROR . ")";
|
|
$query .= " )";
|
|
|
|
// Certain period
|
|
$query .= query_period($begin, $end, "log_zkl", "t", null, null, !$last);
|
|
|
|
// Certain log files
|
|
$query .= query_logfiles($log_files);
|
|
|
|
// Order
|
|
$query .= " ORDER BY log_zkl.id";
|
|
|
|
// Last?
|
|
if ($last) {
|
|
$query .= " DESC LIMIT 1";
|
|
}
|
|
else {
|
|
$query .= " ASC";
|
|
}
|
|
|
|
// Fetch data
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
// Parse into result
|
|
if (!empty($log_info)) {
|
|
// Parse result
|
|
$result = $log_info;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch switch3000 status
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - last Retrieve last entry
|
|
* - begin Begin of report period
|
|
* - end End of report period
|
|
* - log_files array containing rpgmcount, sdcard, startup
|
|
*
|
|
* Return: Array containing relais status
|
|
*/
|
|
function db_fetch_lance_log_switch3000_status($lance_id, $last = 1, $begin = "", $end = "", $log_files = "")
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
$query = "SELECT * FROM log_zkl";
|
|
$query .= " WHERE zkl=" . $lance_id;
|
|
$query .= " AND major=" . MAJ_SWITCH3000;
|
|
$query .= " AND (minor=" . MIN_SWITCH3000_KEY_OFF;
|
|
$query .= " OR minor=" . MIN_SWITCH3000_KEY_ON ;
|
|
$query .= " OR minor=" . MIN_SWITCH3000_MTINFO_OFF;
|
|
$query .= " OR minor=" . MIN_SWITCH3000_MTINFO_ON;
|
|
$query .= " OR minor=" . MIN_SWITCH3000_REBOOT;
|
|
$query .= " )";
|
|
|
|
// Certain period
|
|
$query .= query_period($begin, $end, "log_zkl", "t", null, null, !$last);
|
|
|
|
// Certain log files
|
|
$query .= query_logfiles($log_files);
|
|
|
|
// Order
|
|
$query .= " ORDER BY log_zkl.id";
|
|
|
|
// Last?
|
|
if ($last) {
|
|
$query .= " DESC LIMIT 1";
|
|
}
|
|
else {
|
|
$query .= " ASC";
|
|
}
|
|
|
|
// Fetch data
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
// Parse into result
|
|
if (!empty($log_info)) {
|
|
// Parse result
|
|
$result = $log_info;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch keyswitch status
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - last Retrieve last entry
|
|
* - begin Begin of report period
|
|
* - end End of report period
|
|
* - log_files array containing rpgmcount, sdcard, startup
|
|
*
|
|
* Return: Array containing relais status
|
|
*/
|
|
function db_fetch_lance_log_keyswitch_status($lance_id, $last = 1, $begin = "", $end = "", $log_files = "")
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
$query = "SELECT * FROM log_zkl";
|
|
$query .= " WHERE zkl=" . $lance_id;
|
|
$query .= " AND major=" . MAJ_SWITCH3000;
|
|
$query .= " AND (minor=" . MIN_SWITCH3000_KEY_ON_OP;
|
|
$query .= " OR minor=" . MIN_SWITCH3000_KEY_OP_ON;
|
|
$query .= " OR minor=" . MIN_SWITCH3000_KEY_OFF_OP;
|
|
$query .= " OR minor=" . MIN_SWITCH3000_KEY_OP_OFF;
|
|
$query .= " )";
|
|
|
|
// Certain period
|
|
$query .= query_period($begin, $end, "log_zkl", "t", null, null, !$last);
|
|
|
|
// Certain log files
|
|
$query .= query_logfiles($log_files);
|
|
|
|
// Order
|
|
$query .= " ORDER BY log_zkl.id";
|
|
|
|
// Last?
|
|
if ($last) {
|
|
$query .= " DESC LIMIT 1";
|
|
}
|
|
else {
|
|
$query .= " ASC";
|
|
}
|
|
|
|
// Fetch data
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
// Parse into result
|
|
if (!empty($log_info)) {
|
|
// Parse result
|
|
$result = $log_info;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch relais status
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - last Retrieve last entry
|
|
* - begin Begin of report period
|
|
* - end End of report period
|
|
* - log_files array containing rpgmcount, sdcard, startup
|
|
*
|
|
* Return: Array containing relais status
|
|
*/
|
|
function db_fetch_lance_log_relais_status($lance_id, $last = 1, $begin = "", $end = "", $log_files = "")
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
$query = "SELECT * FROM log_zkl";
|
|
$query .= " WHERE zkl=" . $lance_id;
|
|
$query .= " AND major=" . MAJ_RELAIS;
|
|
$query .= " AND (minor=" . MIN_RELAIS_ON;
|
|
$query .= " OR minor=" . MIN_RELAIS_OFF;
|
|
$query .= " )";
|
|
|
|
// Certain period
|
|
$query .= query_period($begin, $end, "log_zkl", "t", null, null, !$last);
|
|
|
|
// Certain log files
|
|
$query .= query_logfiles($log_files);
|
|
|
|
// Order
|
|
$query .= " ORDER BY log_zkl.id";
|
|
|
|
// Last?
|
|
if ($last) {
|
|
$query .= " DESC LIMIT 1";
|
|
}
|
|
else {
|
|
$query .= " ASC";
|
|
}
|
|
|
|
// Fetch data
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
// Parse into result
|
|
if (!empty($log_info)) {
|
|
// Parse result
|
|
$result = $log_info;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch battery status
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - battery Battery number (or multiple when array)
|
|
* - last Retrieve last entry
|
|
* - begin Begin of report period
|
|
* - end End of report period
|
|
* - log_files array containing rpgmcount, sdcard, startup
|
|
* - batt_status Find requested battery status
|
|
*
|
|
* Return: Array containing battery status
|
|
*/
|
|
function db_fetch_lance_log_battery_status($lance_id, $battery = "", $last = 1, $begin = "", $end = "", $log_files = "", $bat_status = "")
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
if (!$last) {
|
|
$query = "SELECT log_zkl.*,log_batterijstatus.* FROM log_zkl,log_batterijstatus WHERE log_zkl.zkl=" . $lance_id . " ";
|
|
}
|
|
else {
|
|
$query = "SELECT max(log_zkl.id) FROM log_zkl,log_batterijstatus WHERE log_zkl.zkl=" . $lance_id . " ";
|
|
}
|
|
|
|
if (is_array($battery)) {
|
|
$query .= "AND (";
|
|
for ($i=0; $i<sizeof($battery); $i++) {
|
|
if ($i) {
|
|
$query .= "OR ";
|
|
}
|
|
$query .= "(log_batterijstatus.batterij='" . $battery[$i] . "') ";
|
|
}
|
|
$query .= ") ";
|
|
}
|
|
else if (strlen($battery)) {
|
|
$query .= "AND log_batterijstatus.batterij='" . $battery . "' ";
|
|
}
|
|
|
|
// Filter certain battery status
|
|
$query .= "AND log_zkl.major='" . MAJ_BATTERY . "' ";
|
|
|
|
switch($bat_status) {
|
|
case "verwijderd":
|
|
$query .= " AND log_zkl.minor='" . MIN_BATTERY_REMOVED . "' ";
|
|
break;
|
|
case "ok":
|
|
$query .= " AND log_zkl.minor='" . MIN_BATTERY_OK . "' ";
|
|
break;
|
|
case "alarm":
|
|
$query .= " AND log_zkl.minor='" . MIN_BATTERY_ALARM . "' ";
|
|
break;
|
|
case "leeg":
|
|
$query .= " AND log_zkl.minor='" . MIN_BATTERY_EMPTY . "' ";
|
|
break;
|
|
default:
|
|
$query .= " AND (log_zkl.minor='" . MIN_BATTERY_OK . "' OR log_zkl.minor='" . MIN_BATTERY_ALARM . "' OR log_zkl.minor='" . MIN_BATTERY_EMPTY . "' OR log_zkl.minor='" . MIN_BATTERY_REMOVED . "') ";
|
|
break;
|
|
}
|
|
$query .= " AND log_zkl.id=log_batterijstatus.id ";
|
|
|
|
// Certain period
|
|
$query .= query_period($begin, $end, "log_zkl", "t", null, null, !$last);
|
|
|
|
// Certain log files
|
|
$query .= query_logfiles($log_files);
|
|
|
|
// Last?
|
|
if ($last) {
|
|
$id_array = db_fetch_data($query, "log");
|
|
|
|
if ((is_array($id_array)) && (!is_null($id_array[0]['max(log_zkl.id)']))) {
|
|
// Fetch battery
|
|
$log_info = db_fetch_data("SELECT log_zkl.*,log_batterijstatus.* FROM log_zkl,log_batterijstatus where log_zkl.id=" . $id_array[0]['max(log_zkl.id)'] . " and log_zkl.id=log_batterijstatus.id", "log");
|
|
}
|
|
else {
|
|
// Empty result
|
|
$log_info = array();
|
|
}
|
|
}
|
|
else {
|
|
// Get last battery
|
|
$query .= " ORDER BY log_zkl.id ASC";
|
|
|
|
// Fetch last battery status for this lance
|
|
$log_info = db_fetch_data($query, "log");
|
|
}
|
|
|
|
// Parse into result
|
|
if (!empty($log_info)) {
|
|
$result = $log_info;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch battery info
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - battery Battery number
|
|
* - last Retrieve last entry
|
|
* - begin Begin of report period
|
|
* - end End of report period
|
|
* - log_files array containing rpgmcount, sdcard, startup
|
|
*
|
|
* Return: Array containing battery info
|
|
*/
|
|
function db_fetch_lance_log_battery_info($lance_id, $battery, $last = 1, $begin = "", $end = "", $log_files = "")
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
$query = "SELECT log_zkl.id,log_zkl.t,log_batterij.niveau FROM log_zkl,log_batterij WHERE log_zkl.zkl=" . $lance_id . " AND log_batterij.batterij='" . $battery . "' ";
|
|
$query .= "AND log_zkl.major='" . MAJ_BATTERY . "' AND log_zkl.minor='" . MIN_BATTERY_LOG . "' AND log_zkl.id=log_batterij.id ";
|
|
|
|
// Certain period
|
|
$query .= query_period($begin, $end, "log_zkl", "t", null, null, !$last);
|
|
|
|
// Certain log files
|
|
$query .= query_logfiles($log_files);
|
|
|
|
// Order
|
|
$query .= " ORDER BY log_zkl.id ";
|
|
|
|
// Last?
|
|
if ($last) {
|
|
$query .= " DESC LIMIT 1";
|
|
}
|
|
else {
|
|
$query .= " ASC";
|
|
}
|
|
|
|
// Fetch last battery status for this lance
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
// Parse into result
|
|
if (!empty($log_info)) {
|
|
$result = $log_info;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Fetch calibration info
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - last Retrieve last entry
|
|
*
|
|
* Return: Array containing calibration info
|
|
*/
|
|
function db_fetch_lance_log_calibration_info($lance_id, $last = 1)
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
$query = "SELECT log_calibratie.id,log_calibratie.freq,log_calibratie.b_a FROM log_zkl,log_calibratie WHERE log_zkl.zkl=" . $lance_id . " AND log_zkl.major='" . MAJ_CALIBRATION . "' ";
|
|
$query .= "AND log_zkl.minor='" . MIN_CALIBRATION . "' and log_zkl.id=log_calibratie.id and log_calibratie.b_a!=0 and log_calibratie.freq!=0 ORDER BY log_zkl.id";
|
|
|
|
// Last?
|
|
if ($last) {
|
|
$query .= " DESC LIMIT 1";
|
|
}
|
|
else {
|
|
$query .= " ASC";
|
|
}
|
|
|
|
// Fetch last battery status for this lance
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
// Parse into result
|
|
if (!empty($log_info)) {
|
|
$result = $log_info;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch GPS info
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - last Retrieve last entry
|
|
* - begin Begin of report period
|
|
* - end End of report period
|
|
* - fetch Fetch all data
|
|
* - log_files array containing rpgmcount, sdcard, startup
|
|
* - log_realtime Use log_realtime in stead of log_zkl
|
|
* - offset Start id?
|
|
*
|
|
* Return: Array containing GPS info
|
|
*/
|
|
function db_fetch_lance_log_gps_info($lance_id, $last = 1, $begin = "", $end = "", $fetch = 1, $log_files = "", $log_realtime = FALSE, $offset = null)
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
if (($last) || ($log_realtime)) {
|
|
if ($last) {
|
|
$query = "SELECT log_realtime.* FROM log_realtime WHERE log_realtime.id=(select max(id) from log_realtime where zkl=" . $lance_id . " AND gps_fix='1' ";
|
|
}
|
|
else {
|
|
$query = "SELECT log_realtime.* FROM log_realtime WHERE log_realtime.zkl=" . $lance_id . " AND log_realtime.gps_fix='1'";
|
|
}
|
|
|
|
// Certain period (never needed the old check because log_realtime is sequential)
|
|
$query .= query_period($begin, $end, "log_realtime", "t" , $lance_id, $offset, FALSE);
|
|
|
|
if ($last) {
|
|
$query .= ") ";
|
|
}
|
|
}
|
|
else {
|
|
$query = "SELECT log_zkl.*,log_gps.* FROM log_zkl,log_gps WHERE log_zkl.zkl=" . $lance_id . " ";
|
|
$query .= "AND log_zkl.major='" . MAJ_GPS . "' AND log_zkl.minor='" . MIN_GPS . "' AND log_gps.longitude!=0 AND log_gps.latitude!=0 AND ";
|
|
$query .= "log_zkl.id=log_gps.id";
|
|
|
|
// Certain period
|
|
$query .= query_period($begin, $end, "log_zkl", "t", $lance_id, $offset, !$last);
|
|
|
|
// Certain log files
|
|
$query .= query_logfiles($log_files);
|
|
}
|
|
|
|
// Order
|
|
if (!$last) {
|
|
if (!$log_realtime) {
|
|
$query .= " ORDER BY log_zkl.id ASC";
|
|
}
|
|
else {
|
|
$query .= " ORDER BY log_realtime.id ASC";
|
|
}
|
|
}
|
|
|
|
$log_info = db_fetch_data($query, "log", FALSE, $fetch);
|
|
|
|
// Parse result
|
|
if (!empty($log_info)) {
|
|
$result = $log_info;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Fetch last GPS entry between
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - entry_id_begin Database entry start id
|
|
* - entry_id_end Database entry id
|
|
* - begin Begin time
|
|
* - end End time
|
|
*
|
|
* Return: Array containing database entry
|
|
*/
|
|
function db_fetch_lance_gps_entry_between($lance_id, $entry_id_begin, $entry_id_end, $begin = "", $end = "")
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
$query = "SELECT log_gps.*,log_zkl.t,log_zkl.t_log from log_zkl,log_gps where log_zkl.zkl=" . $lance_id . " AND (log_zkl.major='" . MAJ_GPS . "' AND log_zkl.minor='" . MIN_GPS . "') AND ";
|
|
$query .= "log_zkl.id=log_gps.id AND log_gps.longitude!=0 AND log_gps.latitude!=0 ";
|
|
|
|
// Certain entry ids
|
|
if ((strlen($entry_id_begin)) && (strlen($entry_id_end))) {
|
|
$query .= " AND log_zkl.id BETWEEN '" . $entry_id_begin . "' AND '" . $entry_id_end . "'";
|
|
}
|
|
else if (strlen($entry_id_begin)) {
|
|
$query .= " AND log_zkl.id >= '" . $entry_id_begin . "'";
|
|
}
|
|
else if (strlen($entry_id_end)) {
|
|
$query .= " AND log_zkl.id <= '" . $entry_id_end . "'";
|
|
}
|
|
|
|
// Certain period
|
|
$query .= query_period($begin, $end);
|
|
|
|
// Order by temp (not by id, because old data can be sync later)
|
|
$query .= " ORDER BY log_zkl.t DESC LIMIT 1";
|
|
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
// Parse result
|
|
if (!empty($log_info)) {
|
|
$result = $log_info[0];
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch last power up entry before
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - entry_id Database entry
|
|
*
|
|
* Return: Array containing database entry
|
|
*/
|
|
function db_fetch_lance_power_up_entry_before($lance_id, $entry_id)
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
$query = "SELECT id FROM log_zkl";
|
|
$query .= " WHERE zkl=" . $lance_id;
|
|
$query .= " AND major=" . MAJ_POWER_UP;
|
|
$query .= " AND minor=" . MIN_POWER_UP;
|
|
$query .= " AND id < " . $entry_id;
|
|
$query .= " ORDER BY id DESC LIMIT 1";
|
|
|
|
// Fetch last id before entry
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
// Find id
|
|
if (!empty($log_info)) {
|
|
// Find entry
|
|
$query = "SELECT * from log_zkl where id='" . $log_info[0]['id'] . "'";
|
|
|
|
// Fetch id info
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
if (!empty($log_info)) {
|
|
$result = $log_info[0];
|
|
}
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch SMS messages
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - begin Begin of report period
|
|
* - end End of report period
|
|
* - log_files array containing rpgmcount, sdcard, startup
|
|
*
|
|
* Return: Array containing battery status
|
|
*/
|
|
function db_fetch_lance_log_sms($lance_id, $last = 1, $begin = "", $end = "", $log_files)
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
$query = "SELECT log_zkl.*,log_sms.* FROM log_zkl,log_sms WHERE log_zkl.zkl=" . $lance_id . " ";
|
|
$query .= "AND log_zkl.major='" . MAJ_SMS . "' AND (log_zkl.minor='" . MIN_SMS_SENT . "' OR log_zkl.minor='" . MIN_SMS_RECV . "') ";
|
|
$query .= "AND log_zkl.id=log_sms.id";
|
|
|
|
// Certain period
|
|
$query .= query_period($begin, $end, "log_zkl", "t", null, null, !$last);
|
|
|
|
// Certain logfiles?
|
|
$query .= query_logfiles($log_files);
|
|
|
|
// Order
|
|
if ($last) {
|
|
$query .= " ORDER BY log_zkl.id DESC LIMIT 1";
|
|
}
|
|
else {
|
|
$query .= " ORDER BY log_zkl.id ASC";
|
|
}
|
|
|
|
// Fetch sms log
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
// Parse into result
|
|
if (!empty($log_info)) {
|
|
$result = $log_info;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Fetch Detection alarm SMS
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - begin Begin of report period
|
|
* - end End of report period
|
|
* - log_files array containing rpgmcount, sdcard, startup
|
|
*
|
|
* Return: Array containing battery status
|
|
*/
|
|
function db_fetch_lance_det_alarm_sms($lance_id, $last = 1, $begin = "", $end = "", $log_files = "")
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
$query = "SELECT log_zkl.* FROM log_zkl,log_peripheral WHERE ";
|
|
if (strlen($lance_id)) {
|
|
$query .= "log_zkl.zkl=" . $lance_id . " AND ";
|
|
}
|
|
$query .= "peripheral='sms' and code='4' ";
|
|
$query .= "AND log_zkl.id=log_peripheral.id ";
|
|
|
|
// Certain period
|
|
$query .= query_period($begin, $end, "log_zkl", "t", null, null, !$last);
|
|
|
|
// Certain logfiles?
|
|
$query .= query_logfiles($log_files);
|
|
|
|
// Order
|
|
if ($last) {
|
|
$query .= " ORDER BY log_zkl.id DESC LIMIT 1";
|
|
}
|
|
else {
|
|
$query .= " ORDER BY log_zkl.id ASC";
|
|
}
|
|
|
|
// Fetch sms log
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
// Parse into result
|
|
if (!empty($log_info)) {
|
|
$result = $log_info;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Fetch last entry before
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - entry_id Database entry
|
|
*
|
|
* Return: Array containing database entry
|
|
*/
|
|
function db_fetch_lance_entry_before($lance_id, $entry_id)
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
$query = "SELECT log_zkl.* FROM log_zkl WHERE log_zkl.zkl=" . $lance_id . " AND log_zkl.id < " . $entry_id . " ORDER BY log_zkl.id DESC LIMIT 1";
|
|
|
|
// Fetch last id before entry
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
if (!empty($log_info)) {
|
|
$result = $log_info[0];
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch temperature onboard
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - temp Temperature selection onboard(0)/ext1(1)
|
|
* - last Retrieve last entry
|
|
* - begin Begin of report period
|
|
* - end End of report period
|
|
* - log_files array containing rpgmcount, sdcard, startup
|
|
*
|
|
* Return: Array containing relais status
|
|
*/
|
|
function db_fetch_lance_log_temp($lance_id, $temp = 0, $last = 1, $begin = "", $end = "", $log_files = "")
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
$query = "SELECT log_zkl.*,log_temp.sensor,log_temp.temp from log_zkl,log_temp where log_zkl.zkl=" . $lance_id . " AND log_zkl.id=log_temp.id AND (log_zkl.major='" . MAJ_TEMP . "' AND log_zkl.minor='";
|
|
|
|
// Temp selection
|
|
if ($temp == 0 ) {
|
|
$query .= MIN_TEMP_ONBOARD;
|
|
}
|
|
else {
|
|
$query .= MIN_TEMP_EXT1;
|
|
}
|
|
$query .= "') ";
|
|
|
|
// Certain period
|
|
$query .= query_period($begin, $end, "log_zkl", "t", null, null, !$last);
|
|
|
|
// Certain log files
|
|
$query .= query_logfiles($log_files);
|
|
|
|
// Order
|
|
$query .= " ORDER BY log_zkl.id";
|
|
|
|
// Last?
|
|
if ($last) {
|
|
$query .= " DESC LIMIT 1";
|
|
}
|
|
else {
|
|
$query .= " ASC";
|
|
}
|
|
|
|
// Fetch data
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
// Parse into result
|
|
if (!empty($log_info)) {
|
|
// Parse result
|
|
$result = $log_info;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Fetch last switch state
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - last Retrieve last entry
|
|
* - begin Begin of report period
|
|
* - end End of report period
|
|
* - log_files array containing rpgmcount, sdcard, startup
|
|
*
|
|
* Return: Array containing database entry
|
|
*/
|
|
function db_fetch_lance_switch3000_state($lance_id, $last = 1, $begin = "", $end = "", $log_files = "")
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
$query = "SELECT id from log_zkl where zkl=" . $lance_id . " AND log_zkl.major=" . MAJ_SWITCH . " AND log_zkl.minor=" . MIN_SWITCH_STATE;
|
|
|
|
// Certain period
|
|
$query .= query_period($begin, $end, "log_zkl", "t", null, null, !$last);
|
|
|
|
// Certain log files
|
|
$query .= query_logfiles($log_files);
|
|
|
|
$query .= " order by log_zkl.id ";
|
|
|
|
// Last?
|
|
if ($last) {
|
|
$query .= " DESC LIMIT 1";
|
|
}
|
|
else {
|
|
$query .= " ASC";
|
|
}
|
|
|
|
// Fetch last switch 3000 state
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
if (!empty($log_info)) {
|
|
foreach($log_info as $entry) {
|
|
$log_entry = db_fetch_data("SELECT log_switch3000.*,log_zkl.* FROM log_zkl,log_switch3000 where log_zkl.id='" . $entry['id'] . "' and log_zkl.id=log_switch3000.id", "log");
|
|
if (!empty($log_entry)) {
|
|
if ($last) {
|
|
$result = $log_entry[0];
|
|
}
|
|
else {
|
|
if (!is_array($result)) {
|
|
$result = array();
|
|
}
|
|
array_push($result, $log_entry[0]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch switch 3000 switching statistics
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
*
|
|
* Return: Array containing in/out statistics
|
|
*/
|
|
function db_fetch_lance_switch3000_switch_stats($lance_id = NULL)
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
$query = "SELECT major,minor,COUNT(minor) AS actions,MIN(t_log) AS t_min,MAX(t_log) AS t_max FROM log_zkl";
|
|
$query .= " WHERE major=" . MAJ_PERIPHERALS;
|
|
$query .= " AND (minor=" . MIN_SWITCH3000_OFF . " OR minor=" . MIN_SWITCH3000_ON . ")";
|
|
|
|
if (!is_null($lance_id)) {
|
|
$query .= " AND zkl=" . $lance_id . " ";
|
|
}
|
|
|
|
$query .= " GROUP BY minor";
|
|
|
|
// Excecute query
|
|
return db_fetch_data($query, "log");
|
|
}
|
|
|
|
|
|
/**
|
|
* Fetch log realtime
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - last Retrieve last entry
|
|
* - begin Begin of report period
|
|
* - end End of report period
|
|
* - parse_data Parse data (interpreter_status)
|
|
* - limit limit entries
|
|
* Return: Array containing log realtime info
|
|
*/
|
|
function db_fetch_lance_logrt($lance_id, $last = 1, $begin = "", $end = "", $parse_data = FALSE, $limit = NULL)
|
|
{
|
|
// Initial return value
|
|
$result = "";
|
|
|
|
// Optimize query (use key zkl, id, t)
|
|
if ($last) {
|
|
$query = "SELECT log_realtime.* FROM log_realtime WHERE log_realtime.zkl=" . $lance_id . " ";
|
|
}
|
|
else {
|
|
$query = "SELECT log_realtime.id as id FROM log_realtime WHERE log_realtime.zkl=" . $lance_id . " ";
|
|
}
|
|
|
|
// Last?
|
|
if ($last) {
|
|
$query .= " AND log_realtime.id=(SELECT max(id) FROM log_realtime where zkl=" . $lance_id . " ";
|
|
}
|
|
|
|
// Certain period (never needed the old check because log_realtime is sequential)
|
|
$query .= query_period($begin, $end, "log_realtime", "t", $lance_id, null, FALSE);
|
|
|
|
if ($last) {
|
|
$query .= ") ";
|
|
}
|
|
|
|
// Order by id (extra option needed because of shuffle in reports)
|
|
$query .= " ORDER BY id ";
|
|
|
|
// limit?
|
|
if ((!is_null($limit)) && (!$last)) {
|
|
$query .= " LIMIT " . $limit;
|
|
}
|
|
|
|
// Fetch log realtime
|
|
$log_info = db_fetch_data($query, "log");
|
|
|
|
// Parse into result
|
|
if (!empty($log_info)) {
|
|
// Optimize query (use key zkl, id, t)
|
|
if (!$last) {
|
|
$temp = $log_info;
|
|
$log_info = array();
|
|
|
|
// Get rest of table
|
|
foreach($temp as $item) {
|
|
$temp_data = db_fetch_data("SELECT * FROM log_realtime WHERE id='" . $item['id'] . "'", "log");
|
|
|
|
if (is_array($temp_data)) {
|
|
array_push($log_info, $temp_data[0]);
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($parse_data) {
|
|
if (is_array($log_info)) {
|
|
// Initial value
|
|
$result = array();
|
|
|
|
foreach($log_info as $entry) {
|
|
// Create string and interpreter_status;
|
|
$entry['interpreter_status'] = interpret_log_rt($entry);
|
|
|
|
array_push($result, $entry);
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
$result = $log_info;
|
|
}
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Check log file (corrupt or not?)
|
|
*
|
|
* inputs:
|
|
* - lance_id Lance database id
|
|
* - sdcard logfile params
|
|
* - rpgmcount logfile params
|
|
* - startup logfile params
|
|
*
|
|
* Return: True (Corrupted)/False (not corrupted)
|
|
*/
|
|
function db_check_lance_log_corrupted($lance_id, $sdcard, $rpgmcount, $startup)
|
|
{
|
|
// Initial return zalue
|
|
$result = FALSE;
|
|
|
|
// Fetch data
|
|
$log_info = db_fetch_data("SELECT id FROM log_zkl WHERE zkl=" . $lance_id . " AND (sdcard='" . $sdcard ."' AND rpgmcount='" . $rpgmcount . "' AND startup='" . $startup . "') AND (MAJOR=10 AND MINOR=33)", "log");
|
|
|
|
// Parse into result
|
|
if (!empty($log_info)) {
|
|
foreach($log_info as $item) {
|
|
if (!$result) {
|
|
$log_peripheral = db_fetch_data("SELECT code FROM log_peripheral WHERE id='". $item['id'] . "'", "log");
|
|
|
|
if (!empty($log_peripheral)) {
|
|
$result = ($log_peripheral[0]['code'] == 82) ? TRUE : $result;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Archive old entries
|
|
*
|
|
* inputs:
|
|
* - table which table?
|
|
* - source_db, target_db source and destination databases
|
|
* - remove_before age of the entries to be removed; timestamp
|
|
* - entries number of entries which must be removed
|
|
* - last_date receives the last date deleted
|
|
* - delete_from_source delete the entries moved to the target database from the source database
|
|
* (optional; default behaviour is "yes")
|
|
*
|
|
* Return: amount of removed entries
|
|
*/
|
|
function db_log_archive($table, $source_db, $target_db, $remove_before, $entries, &$last_date, $delete_from_source = TRUE) {
|
|
global $_PAGE_INFO;
|
|
|
|
// Initial values
|
|
$remove_entries = array();
|
|
$set = array();
|
|
$last_date = 0;
|
|
$now = time();
|
|
|
|
// Global logtables
|
|
include("db_logtables.php");
|
|
|
|
// Setup connection with source and destination database
|
|
db_connect($source_db, "source");
|
|
db_connect($target_db, "target");
|
|
|
|
if( $delete_from_source ) switch($table) {
|
|
case "log_tcp":
|
|
// Get records from select table (bottom up)
|
|
$log_entries = db_fetch_data("SELECT * FROM " . $table . " ORDER BY t ASC LIMIT " . $entries, "source");
|
|
break;
|
|
default:
|
|
// Get records from select table (bottom up)
|
|
$log_entries = db_fetch_data("SELECT * FROM " . $table . " ORDER BY id ASC LIMIT " . $entries, "source");
|
|
break;
|
|
}
|
|
else {
|
|
// source is preserved; get the last entry
|
|
switch($table) {
|
|
case "log_tcp":
|
|
// Get records from select table (bottom up)
|
|
$last_id = db_fetch_data("SELECT id FROM state_archiver WHERE `table`='" . $table . "'", "source");
|
|
if( !$last_id ) $last_id = 0;
|
|
else $last_id = $last_id[0]['id'];
|
|
$log_entries = db_fetch_data("SELECT * FROM " . $table . " WHERE t > " . $last_id . " ORDER BY t ASC LIMIT " . $entries, "source");
|
|
break;
|
|
default:
|
|
// Get records from select table (bottom up)
|
|
$last_id = db_fetch_data("SELECT id FROM state_archiver WHERE `table`='" . $table . "'", "source");
|
|
if( !$last_id ) $last_id = 0;
|
|
else $last_id = $last_id[0]['id'];
|
|
$log_entries = db_fetch_data("SELECT * FROM " . $table . " WHERE id > " . $last_id . " ORDER BY id ASC LIMIT " . $entries, "source");
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Get table description
|
|
$source_entries = db_fetch_fields($table, "", "source");
|
|
$target_entries = db_fetch_fields($table, "", "target");
|
|
$set[$table] = array_intersect($source_entries, $target_entries);
|
|
|
|
// Determine time field
|
|
$time_field = 'tijd';
|
|
foreach($set[$table] as $field) {
|
|
if( $field == 't_log' ) $time_field = 't_log';
|
|
else if( $field == 't' ) $time_field = 't';
|
|
}
|
|
|
|
// Archive entries
|
|
if ((is_array($log_entries)) && (is_array($set[$table]))) {
|
|
$last_entry = null;
|
|
foreach($log_entries as $log_entry) {
|
|
// Time conversion needed?
|
|
if (isset($log_entry[$time_field ])) {
|
|
switch($time_field) {
|
|
case 'tijd':
|
|
// Convert 'tijd' to seconds since 1970
|
|
$log_entry_time = convert_datetime($log_entry[$time_field ]);
|
|
break;
|
|
default:
|
|
// Do nothing, already ok!
|
|
$log_entry_time = $log_entry[$time_field ];
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Check date (older then 'ARCHIVE_OLDER_DAYS' days, or in the future)
|
|
if ((isset($log_entry[$time_field ]) && (($log_entry_time < $remove_before) || ($log_entry_time > $now))) ||
|
|
((isset($log_entry['t_log']) && (($log_entry['t_log'] < $remove_before) || ($log_entry['t_log'] > $now))))) {
|
|
// Save last entry for statistics
|
|
$last_entry = $log_entry;
|
|
|
|
if( !$delete_from_source ) {
|
|
// source is preserved; get the last entry
|
|
switch($table) {
|
|
case "log_tcp":
|
|
if( $log_entry['t'] > $last_id ) $last_id = $log_entry['t'];
|
|
break;
|
|
default:
|
|
// Get records from select table (bottom up)
|
|
if( $log_entry['id'] > $last_id ) $last_id = $log_entry['id'];
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Store entry in the archive
|
|
$query = "INSERT INTO " . $table . " (";
|
|
$sep = "";
|
|
foreach($set[$table] as $field) {
|
|
$query .= $sep;
|
|
$query .= "`" . $field . "`";
|
|
$sep = ",";
|
|
}
|
|
$query .= ") VALUES(";
|
|
$sep = "";
|
|
foreach($set[$table] as $field) {
|
|
$query .= $sep;
|
|
if (is_null($log_entry[$field])) {
|
|
$query .= "NULL";
|
|
}
|
|
else {
|
|
$query .= "'" . addslashes($log_entry[$field]) . "'";
|
|
}
|
|
$sep = ",";
|
|
}
|
|
$query .= ")";
|
|
db_store_data($query, "target");
|
|
|
|
// Save this entry for removal from the source
|
|
array_push($remove_entries, array(table => $table, value => $log_entry));
|
|
}
|
|
}
|
|
|
|
if( $last_entry ) {
|
|
// Determine timestamp of the last entry
|
|
if( $time_field == 't' ) {
|
|
$last_date = $last_entry[$time_field];
|
|
}
|
|
else {
|
|
$last_date = convert_datetime($last_entry[$time_field]);
|
|
}
|
|
}
|
|
}
|
|
|
|
if( !$delete_from_source ) {
|
|
// source is preserved; Store the last entry
|
|
db_store_data("REPLACE INTO state_archiver (`table`,`id`) VALUES ('" . $table . "'," . $last_id . ")", "source");
|
|
}
|
|
|
|
// Remove subsidiary tables?
|
|
if (!empty($remove_entries)) {
|
|
// Initial values
|
|
$log_entries = array();
|
|
|
|
// Determine end of array => So now we can push new entries in the original array
|
|
$end_entry = sizeof($remove_entries);
|
|
|
|
// Collect sub table info
|
|
for($i=0; $i<$end_entry; $i++) {
|
|
switch($table) {
|
|
case "log_zkl":
|
|
// has the major/minor combination any consistent sub table
|
|
if (isset($_LOGTABLES[$table][$remove_entries[$i]['value']['major']][$remove_entries[$i]['value']['minor']]['table'])) {
|
|
// Get sub table
|
|
$subtable = $_LOGTABLES[$table][$remove_entries[$i]['value']['major']][$remove_entries[$i]['value']['minor']]['table'];
|
|
|
|
// Get sub table entry
|
|
$log_entry = db_fetch_data("SELECT * FROM " . $subtable . " WHERE id=" . $remove_entries[$i]['value']['id'], "source");
|
|
|
|
// Data valid?
|
|
if (is_array($log_entry)) {
|
|
// Store entry
|
|
array_push($log_entries, array('table' => $subtable, 'value' => $log_entry[0]));
|
|
}
|
|
}
|
|
break;
|
|
case "log_gebruiker":
|
|
case "log_secure":
|
|
foreach($_LOGTABLES[$table] as $item) {
|
|
// Extra check
|
|
if (substr($item['table'], 0, 4) === "log_") {
|
|
// Get sub table entry
|
|
$log_entry = db_fetch_data("SELECT * FROM " . $item['table'] . " WHERE id=" . $remove_entries[$i]['value']['id'], "source");
|
|
|
|
// Data valid?
|
|
if (is_array($log_entry)) {
|
|
// Store entry
|
|
array_push($log_entries, array(table => $item['table'], value => $log_entry[0]));
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Archive entries
|
|
foreach($log_entries as $log_entry) {
|
|
// Get subtable description
|
|
if ((is_array($set)) && (!isset($set[$log_entry['table']]))) {
|
|
$source_entries = db_fetch_fields($log_entry['table'], "", "source");
|
|
$target_entries = db_fetch_fields($log_entry['table'], "", "target");
|
|
$set[$log_entry['table']] = array_intersect($source_entries, $target_entries);
|
|
|
|
// DEBUG START
|
|
$source_fields = implode(",", $source_entries);
|
|
$target_fields = implode(",", $target_entries);
|
|
if( $source_fields != $target_fields ) DBG("log_archive: fields changed from \"" . $source_fields . "\" to \"" . implode(",", $set[$log_entry['table']]) . "\"");
|
|
// DEBUG END
|
|
}
|
|
|
|
// Archive entry
|
|
$query = "INSERT INTO " . $log_entry['table'] . " (";
|
|
$sep = "";
|
|
foreach( $set[$log_entry['table']] as $field ) {
|
|
$query .= $sep . "`" . $field . "`";
|
|
$sep = ",";
|
|
}
|
|
$sep = ") VALUES(";
|
|
foreach( $set[$log_entry['table']] as $field ) {
|
|
if (is_null($log_entry['value'][$field])) {
|
|
$query .= $sep . "NULL";
|
|
}
|
|
else {
|
|
$query .= $sep . "'" . addslashes($log_entry['value'][$field]) . "'";
|
|
}
|
|
$sep = ",";
|
|
}
|
|
$query .= ")";
|
|
db_store_data($query, "target");
|
|
|
|
// Remove entry
|
|
array_push($remove_entries, array(table => $log_entry['table'], value => $log_entry['value']));
|
|
}
|
|
}
|
|
|
|
// Remove archived entries; clean-up of the subsidiary tables is left for the garbage collector
|
|
if (!empty($remove_entries) && $delete_from_source) {
|
|
foreach($remove_entries as $remove_entry) {
|
|
switch($remove_entry['table']) {
|
|
case "log_tcp":
|
|
db_store_data("DELETE FROM " . $remove_entry['table'] . " WHERE zkl=" . $remove_entry['value']['zkl'] . " AND t=" . $remove_entry['value']['t'], "source");
|
|
break;
|
|
default:
|
|
db_store_data("DELETE FROM " . $remove_entry['table'] . " WHERE id=" . $remove_entry['value']['id'], "source");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Clean-up
|
|
db_connect(null, "source");
|
|
db_connect(null, "target");
|
|
|
|
// Return number of records moved
|
|
return (empty($remove_entries) ? 0 : count($remove_entries));
|
|
}
|
|
|
|
|
|
/**
|
|
* Delete old entries
|
|
*
|
|
* inputs:
|
|
* - table which table?
|
|
* - db database
|
|
* - remove_before age of the entries to be removed; timestamp
|
|
* - entries number of entries which must be removed
|
|
* - last_date receives the last date deleted
|
|
*
|
|
* Return: amount of removed entries
|
|
*/
|
|
function db_delete_archive($table, $db, $remove_before, $entries, &$last_date) {
|
|
global $_PAGE_INFO;
|
|
|
|
// Initial values
|
|
$remove_entries = array();
|
|
$last_date = 0;
|
|
$now = time();
|
|
|
|
// Global logtables
|
|
include("db_logtables.php");
|
|
|
|
// Setup connection database
|
|
db_connect($db, "source");
|
|
|
|
switch($table) {
|
|
case "log_tcp":
|
|
// Get records from select table (bottom up)
|
|
$last_id = db_fetch_data("SELECT id FROM state_archiver WHERE `table`='" . $table . "'", "source");
|
|
if( !$last_id ) $last_id = 0;
|
|
else $last_id = $last_id[0]['id'];
|
|
$log_entries = db_fetch_data("SELECT * FROM " . $table . " WHERE t < " . $last_id . " ORDER BY t ASC LIMIT " . $entries, "source");
|
|
break;
|
|
default:
|
|
// Get records from select table (bottom up)
|
|
$last_id = db_fetch_data("SELECT id FROM state_archiver WHERE `table`='" . $table . "'", "source");
|
|
if( !$last_id ) $last_id = 0;
|
|
else $last_id = $last_id[0]['id'];
|
|
$log_entries = db_fetch_data("SELECT * FROM " . $table . " WHERE id < " . $last_id . " ORDER BY id ASC LIMIT " . $entries, "source");
|
|
break;
|
|
}
|
|
|
|
// Get table description
|
|
$set[$table] = db_fetch_fields($table, "", "source");
|
|
// Determine time field
|
|
$time_field = 'tijd';
|
|
foreach($set[$table] as $field) {
|
|
if( $field == 't_log' ) $time_field = 't_log';
|
|
else if( $field == 't' ) $time_field = 't';
|
|
}
|
|
|
|
// Archive entries
|
|
if (is_array($log_entries)) {
|
|
$last_entry = null;
|
|
foreach($log_entries as $log_entry) {
|
|
// Time conversion needed?
|
|
if (isset($log_entry[$time_field ])) {
|
|
switch($time_field) {
|
|
case 'tijd':
|
|
// Convert 'tijd' to seconds since 1970
|
|
$log_entry_time = convert_datetime($log_entry[$time_field ]);
|
|
break;
|
|
default:
|
|
// Do nothing, already ok!
|
|
$log_entry_time = $log_entry[$time_field ];
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Check date
|
|
if ($log_entry_time < $remove_before) {
|
|
// Save last entry for statistics
|
|
$last_entry = $log_entry;
|
|
|
|
// Save this entry for removal from the source
|
|
array_push($remove_entries, array(table => $table, value => $log_entry));
|
|
}
|
|
}
|
|
|
|
if( $last_entry ) {
|
|
// Determine timestamp of the last entry
|
|
if( $time_field == 't' ) {
|
|
$last_date = $last_entry[$time_field];
|
|
}
|
|
else {
|
|
$last_date = convert_datetime($last_entry[$time_field]);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Remove subsidiary tables?
|
|
if (!empty($remove_entries)) {
|
|
// Initial values
|
|
$log_entries = array();
|
|
|
|
// Determine end of array => So now we can push new entries in the original array
|
|
$end_entry = sizeof($remove_entries);
|
|
|
|
// Collect sub table info
|
|
for($i=0; $i<$end_entry; $i++) {
|
|
switch($table) {
|
|
case "log_zkl":
|
|
// has the major/minor combination any consistent sub table
|
|
if (isset($_LOGTABLES[$table][$remove_entries[$i]['value']['major']][$remove_entries[$i]['value']['minor']]['table'])) {
|
|
// Get sub table
|
|
$subtable = $_LOGTABLES[$table][$remove_entries[$i]['value']['major']][$remove_entries[$i]['value']['minor']]['table'];
|
|
|
|
// Get sub table entry
|
|
$log_entry = db_fetch_data("SELECT * FROM " . $subtable . " WHERE id=" . $remove_entries[$i]['value']['id'], "source");
|
|
|
|
// Data valid?
|
|
if (is_array($log_entry)) {
|
|
// Store entry
|
|
array_push($log_entries, array('table' => $subtable, 'value' => $log_entry[0]));
|
|
}
|
|
}
|
|
break;
|
|
case "log_gebruiker":
|
|
case "log_secure":
|
|
foreach($_LOGTABLES[$table] as $item) {
|
|
// Extra check
|
|
if (substr($item['table'], 0, 4) === "log_") {
|
|
// Get sub table entry
|
|
$log_entry = db_fetch_data("SELECT * FROM " . $item['table'] . " WHERE id=" . $remove_entries[$i]['value']['id'], "source");
|
|
|
|
// Data valid?
|
|
if (is_array($log_entry)) {
|
|
// Store entry
|
|
array_push($log_entries, array(table => $item['table'], value => $log_entry[0]));
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Add entries to the remove entries
|
|
foreach($log_entries as $log_entry) {
|
|
// Remove entry
|
|
array_push($remove_entries, array(table => $log_entry['table'], value => $log_entry['value']));
|
|
}
|
|
}
|
|
|
|
// Remove entries
|
|
if (!empty($remove_entries)) {
|
|
foreach($remove_entries as $remove_entry) {
|
|
switch($remove_entry['table']) {
|
|
case "log_tcp":
|
|
db_store_data("DELETE FROM " . $remove_entry['table'] . " WHERE zkl=" . $remove_entry['value']['zkl'] . " AND t=" . $remove_entry['value']['t'], "source");
|
|
break;
|
|
default:
|
|
db_store_data("DELETE FROM " . $remove_entry['table'] . " WHERE id=" . $remove_entry['value']['id'], "source");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Clean-up
|
|
db_connect(null, "source");
|
|
|
|
// Return number of records moved
|
|
return (empty($remove_entries) ? 0 : count($remove_entries));
|
|
}
|
|
|
|
|
|
/**
|
|
* Get specific log period (query clean up function)
|
|
*
|
|
* inputs:
|
|
* - begin begin of period
|
|
* - end end of period
|
|
* - table time of which table?
|
|
* - time_used Which time is used? t/t_log
|
|
* - lance_id Optional
|
|
* - old Check for old files (min/max id => older log files which are logged between)
|
|
*
|
|
* Return: period query
|
|
*/
|
|
function query_period($begin, $end, $table = "log_zkl", $time_used = "t", $lance_id = null, $offset = null, $old = TRUE)
|
|
{
|
|
$result = "";
|
|
|
|
// Certain period (tijd)
|
|
if ((strlen($begin)) && (strlen($end))) {
|
|
if (is_null($lance_id)) {
|
|
$result = " AND (" . $table . "." . $time_used . " BETWEEN '" . convert_datetime($begin) . "' AND '" . convert_datetime($end) . "' ";
|
|
if (!is_null($offset)) {
|
|
$result .= " and " . $table . ".id >= '" . $offset . "' ";
|
|
}
|
|
$result .= ") ";
|
|
}
|
|
else {
|
|
//
|
|
// Determine min/max id
|
|
//
|
|
$query = "select min(id) as min_id, max(id) as max_id from " . $table;
|
|
// Add index to speed up
|
|
switch($table) {
|
|
case "log_realtime":
|
|
$query .= " USE INDEX(log_realtime_id_tijd) ";
|
|
break;
|
|
case "log_zkl":
|
|
$query .= " USE INDEX(log_zkl_tijd) ";
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
$query .= " where zkl=" . $lance_id . " and " . $time_used . " between '" . convert_datetime($begin) . "' and '" . convert_datetime($end) . "' ";
|
|
if (!is_null($offset)) {
|
|
$query .= " and " . $table . ".id >= '" . $offset . "'";
|
|
}
|
|
$min_max = db_fetch_data($query, "log");
|
|
|
|
$result = " AND " . $table . ".id between '" . $min_max[0]['min_id'] . "' and '" . $min_max[0]['max_id'] . "' ";
|
|
|
|
if ($old) {
|
|
// Check for "old" log files
|
|
$result .= " AND " . $time_used . " BETWEEN '" . convert_datetime($begin) . "' AND '" . convert_datetime($end) . "' ";
|
|
}
|
|
}
|
|
}
|
|
else if (strlen($begin)) {
|
|
if (is_null($lance_id)) {
|
|
$result = " AND (" . $table . "." . $time_used . " BETWEEN '" . convert_datetime($begin) . "' AND '" . convert_datetime(date('Y-m-d H:i:s')) . "' ";
|
|
if (!is_null($offset)) {
|
|
$result .= " and " . $table . ".id >= '" . $offset . "' ";
|
|
}
|
|
$result .= ") ";
|
|
}
|
|
else {
|
|
//
|
|
// Determine min/max id
|
|
//
|
|
$query = "select min(id) as min_id, max(id) as max_id from " . $table;
|
|
// Add index to speed up
|
|
switch($table) {
|
|
case "log_realtime":
|
|
$query .= " USE INDEX(log_realtime_id_tijd) ";
|
|
break;
|
|
case "log_zkl":
|
|
$query .= " USE INDEX(log_zkl_tijd) ";
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
$query .= " where zkl=" . $lance_id . " and " . $time_used . " between '" . convert_datetime($begin) . "' and '" . convert_datetime(date('Y-m-d H:i:s')) . "' ";
|
|
if (!is_null($offset)) {
|
|
$query .= " and " . $table . ".id >= '" . $offset . "'";
|
|
}
|
|
$min_max = db_fetch_data($query, "log");
|
|
|
|
$result = " AND " . $table . ".id between '" . $min_max[0]['min_id'] . "' and '" . $min_max[0]['max_id'] . "' ";
|
|
|
|
if ($old) {
|
|
// Check for "old" log files
|
|
$result .= " AND " . $time_used . " BETWEEN '" . convert_datetime($begin) . "' AND '" . convert_datetime(date('Y-m-d H:i:s')) . "' ";
|
|
}
|
|
}
|
|
}
|
|
else if (strlen($end)) {
|
|
if (is_null($lance_id)) {
|
|
$result = " AND " . $table . "." . $time_used . " <= '" . convert_datetime($end) . "'";
|
|
if (!is_null($offset)) {
|
|
$result .= " and " . $table . ".id >= '" . $offset . "' ";
|
|
}
|
|
}
|
|
else {
|
|
//
|
|
// Determine max id
|
|
//
|
|
$query = "select max(id) as id from " . $table;
|
|
// Add index to speed up
|
|
switch($table) {
|
|
case "log_realtime":
|
|
$query .= " USE INDEX(log_realtime_id_tijd) ";
|
|
break;
|
|
case "log_zkl":
|
|
$query .= " USE INDEX(log_zkl_tijd) ";
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
$query .= " where zkl=" . $lance_id . " and " . $time_used . " <= '" . convert_datetime($end) . "' ";
|
|
|
|
if (!is_null($offset)) {
|
|
$query .= " and " . $table . ".id >= '" . $offset . "'";
|
|
}
|
|
$max = db_fetch_data($query, "log");
|
|
|
|
$result = " AND " . $table . ".id <= '" . $max[0]['id'] . "' ";
|
|
|
|
if ($old) {
|
|
// Check for "old" log files
|
|
$result .= " AND " . $time_used . " <= '" . convert_datetime($end) . "' ";
|
|
}
|
|
}
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Get specific logfiles (query clean up function)
|
|
*
|
|
* inputs:
|
|
* - log_files array (or string) containing
|
|
*
|
|
* Return: logfiles query
|
|
*/
|
|
function query_logfiles($log_files)
|
|
{
|
|
$result = "";
|
|
|
|
// Certain log files
|
|
if ((is_array($log_files)) && (!empty($log_files))) {
|
|
$result .= " AND (";
|
|
for($i =0 ; $i < sizeof($log_files); $i++) {
|
|
if ($i) {
|
|
$result .= " OR";
|
|
}
|
|
$result .= " (log_zkl.sdcard='" . $log_files[$i]['sdcard'] . "' AND log_zkl.startup='" . $log_files[$i]['startup'] . "' AND log_zkl.rpgmcount='" . $log_files[$i]['rpgmcount'] . "')";
|
|
}
|
|
$result .= ")";
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
|
|
/**
|
|
* Build status string from a log_realtime entry
|
|
*
|
|
* inputs:
|
|
* - log_rt array containing log_realtime entry
|
|
*
|
|
* Return: status string
|
|
*/
|
|
function build_log_rt($entry) {
|
|
if (is_array($entry)) {
|
|
// Create string and interpreter_status;
|
|
return sprintf("%04X/%04X/%04X,%04X,%04X,%08X,%.3f,%u,%u,%.3f,%d,%.3f,%.3f,%.1f,%.1f,%d,%d,%.7f,%.7f,%.1f,%.1f,%.1f,%.1f,%lu@%u.%lu",
|
|
$entry['mcu_state'],
|
|
$entry['rc_state'],
|
|
$entry['sw3000_state'],
|
|
$entry['mcu_local_state'],
|
|
$entry['mcu_persistent'],
|
|
$entry['wcpu_state'],
|
|
$entry['b_a_autocal'],
|
|
$entry['freq'],
|
|
$entry['rms'],
|
|
$entry['b_a'],
|
|
$entry['batt_sel'],
|
|
$entry['batt1_niveau'],
|
|
$entry['batt2_niveau'],
|
|
$entry['temp_onboard'],
|
|
$entry['temp_ntc'],
|
|
$entry['gsm_rssi'],
|
|
$entry['gsm_berr'],
|
|
$entry['latitude'],
|
|
$entry['longitude'],
|
|
$entry['altitude'],
|
|
$entry['hdop'],
|
|
$entry['speed'],
|
|
$entry['heading'],
|
|
$entry['t_gps'],
|
|
$entry['seqnr'],
|
|
$entry['t']
|
|
);
|
|
}
|
|
else return FALSE;
|
|
}
|
|
|
|
|
|
/**
|
|
* Interprete log_realtime entry
|
|
*
|
|
* inputs:
|
|
* - log_rt array containing log_realtime entry
|
|
*
|
|
* Return: interpreted array
|
|
*/
|
|
function interpret_log_rt($entry) {
|
|
$result = "";
|
|
|
|
if (is_array($entry)) {
|
|
// Create string and interpreter_status;
|
|
$result = zkl_interpret_status(build_log_rt($entry));
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Store entry in "log_realtime"
|
|
*
|
|
* Inputs:
|
|
* - dbid device identifier in the database
|
|
* - log_rt array with data for "log_realtime"; the key is the field name
|
|
* Returns: (nothing)
|
|
*/
|
|
function db_store_log_rt($dbid, $log_rt)
|
|
{
|
|
// fields and values
|
|
$fields = array();
|
|
$values = array();
|
|
foreach( $log_rt as $field => $value ) {
|
|
$fields[] = $field;
|
|
$values[] = "'" . $value . "'";
|
|
}
|
|
|
|
$query = "INSERT INTO log_realtime (zkl," . implode(",", $fields) . ") VALUES (" . $dbid . "," . implode(",", $values) . ")";
|
|
return db_store_data($query, "log");
|
|
}
|
|
|
|
/**
|
|
* Store entry in "log_zkl"
|
|
*
|
|
* Inputs:
|
|
* - dbid device identifier in the database
|
|
* - logfile array with rpgmcount and startup
|
|
* - t time
|
|
* - major,minor log identifiers
|
|
* - data array with data for subtable; the key is the field name
|
|
* Returns: (nothing)
|
|
*/
|
|
function db_store_log_zkl($dbid, $logfile, $t, $major, $minor, $data)
|
|
{
|
|
switch( $major ) {
|
|
case MAJ_TEMP:
|
|
case MIN_TEMP_ONBOARD:
|
|
$table = "log_temp";
|
|
$fields = array("sensor","temp");
|
|
$values = array("'on-board'", is_array($data) ? $data[0] : $data);
|
|
break;
|
|
case MIN_TEMP_EXT1:
|
|
$table = "log_temp";
|
|
$fields = array("sensor","temp");
|
|
$values = array("'ntc'", is_array($data) ? $data[0] : $data);
|
|
break;
|
|
default:
|
|
return FALSE;
|
|
}
|
|
|
|
$query = "INSERT INTO log_zkl (zkl,sdcard,rpgmcount,startup,t,t_log,major,minor) ";
|
|
$query .= "VALUES (";
|
|
$query .= $dbid . ",";
|
|
$query .= "0," . implode(",", $logfile) . ",";
|
|
$query .= $t . ",";
|
|
$query .= "NOW(),";
|
|
$query .= $major . "," . $minor . ")";
|
|
if( db_store_data($query, "log") && ($log_id = db_fetch_last_id("log")) ) {
|
|
|
|
$query = "INSERT INTO " . $table . " (id," . implode(",", $fields) . ") VALUES (" . $log_id . "," . implode(",", $values) . ")";
|
|
db_store_data($query, "log");
|
|
|
|
// admin
|
|
$query = "REPLACE INTO zkl_logfile (zkl,sdcard,rpgmcount,startup,timebase,status,file_status) VALUES (";
|
|
$query .= $dbid . ",";
|
|
$query .= "0," . implode(",", $logfile) . ",";
|
|
$query .= $t . ",";
|
|
$query .= "'current','present')";
|
|
return db_store_data($query, "log");
|
|
}
|
|
else return FALSE;
|
|
}
|
|
|
|
?>
|