Merge branch 'ZoneMinder:master' into patch-6

pull/3843/head
IgorA100 2024-04-09 14:40:38 +03:00 committed by GitHub
commit c046c2ddc5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 106 additions and 35 deletions

View File

@ -426,6 +426,8 @@ CREATE TABLE `Logs` (
CREATE INDEX `Logs_TimeKey_idx` ON `Logs` (`TimeKey`);
CREATE INDEX `Logs_Level_idx` ON `Logs` (`Level`);
CREATE INDEX `Logs_Component_idx` ON `Logs` (`Component`);
--
-- Table structure for table `Manufacturers`
--

View File

@ -1,6 +1,2 @@
--
-- Add primary keys for Logs and Stats tables
--
SELECT "Modifying Monitors MaxFPS to DECIMAL(5,3)";
ALTER TABLE `Monitors` MODIFY `MaxFPS` decimal(5,3) default NULL;

22
db/zm_update-1.37.57.sql Normal file
View File

@ -0,0 +1,22 @@
--
-- This adds Object_Types
--
SELECT 'Checking For Object_Types Table';
SET @s = (SELECT IF(
(SELECT COUNT(*)
FROM INFORMATION_SCHEMA.TABLES
WHERE table_name = 'Object_Types'
AND table_schema = DATABASE()
) > 0,
"SELECT 'Object_Types table exists'",
"CREATE TABLE Object_Types (
Id INTEGER NOT NULL AUTO_INCREMENT,
Name VARCHAR(32) UNIQUE,
Human TEXT,
PRIMARY KEY (Id)
)"
));
PREPARE stmt FROM @s;
EXECUTE stmt;

50
db/zm_update-1.37.58.sql Normal file
View File

@ -0,0 +1,50 @@
SET @s = (SELECT IF(
(SELECT COUNT(*)
FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_name = 'Logs'
AND table_schema = DATABASE()
AND index_name = 'Logs_Component_idx'
) > 0,
"SELECT 'Logs_Component_idx already exists on Logs table'",
"CREATE INDEX `Logs_Component_idx` ON `Logs` (`Component`)"
));
PREPARE stmt FROM @s;
EXECUTE stmt;
SET @s = (SELECT IF(
(SELECT COUNT(*)
FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_name = 'Logs'
AND table_schema = DATABASE()
AND index_name = 'TimeKey'
) > 0,
"DROP INDEX `TimeKey` ON Logs",
"SELECT 'TimeKey already removed from Logs table'"
));
PREPARE stmt FROM @s;
EXECUTE stmt;
--
-- This adds Object_Types
--
SELECT 'Checking For Object_Types Table';
SET @s = (SELECT IF(
(SELECT COUNT(*)
FROM INFORMATION_SCHEMA.TABLES
WHERE table_name = 'Object_Types'
AND table_schema = DATABASE()
) > 0,
"SELECT 'Object_Types table exists'",
"CREATE TABLE Object_Types (
Id INTEGER NOT NULL AUTO_INCREMENT,
Name VARCHAR(32) UNIQUE,
Human TEXT,
PRIMARY KEY (Id)
)"
));
PREPARE stmt FROM @s;
EXECUTE stmt;

View File

@ -18,7 +18,7 @@
%global zmtargetdistro %{?rhel:el%{rhel}}%{!?rhel:fc%{fedora}}
Name: zoneminder
Version: 1.37.57
Version: 1.37.58
Release: 2%{?dist}
Summary: A camera monitoring and analysis tool
Group: System Environment/Daemons

View File

@ -1 +1 @@
1.37.57
1.37.58

View File

@ -17,14 +17,14 @@ if ($raw) {
foreach ($stats as $stat) {
$stat['ZoneName'] = validHtmlStr($stat['ZoneName']);
$stat['PixelDiff'] = validHtmlStr($stat['PixelDiff']);
$stat['AlarmPixels'] = sprintf('%d (%d%%)', $stat['AlarmPixels'], (100*$stat['AlarmPixels']/$stat['Area']));
$stat['FilterPixels'] = sprintf('%d (%d%%)', $stat['FilterPixels'], (100*$stat['FilterPixels']/$stat['Area']));
$stat['BlobPixels'] = sprintf('%d (%d%%)', $stat['BlobPixels'], (100*$stat['BlobPixels']/$stat['Area']));
$stat['AlarmPixels'] = sprintf('%d (%.1f%%)', $stat['AlarmPixels'], (100*$stat['AlarmPixels']/$stat['Area']));
$stat['FilterPixels'] = sprintf('%d (%.1f%%)', $stat['FilterPixels'], (100*$stat['FilterPixels']/$stat['Area']));
$stat['BlobPixels'] = sprintf('%d (%.1f%%)', $stat['BlobPixels'], (100*$stat['BlobPixels']/$stat['Area']));
$stat['Blobs'] = validHtmlStr($stat['Blobs']);
if ($stat['Blobs'] > 1) {
$stat['BlobSizes'] = sprintf('%d-%d (%d%%-%d%%)', $stat['MinBlobSize'], $stat['MaxBlobSize'], (100*$stat['MinBlobSize']/$stat['Area']), (100*$stat['MaxBlobSize']/$stat['Area']));
$stat['BlobSizes'] = sprintf('%d-%d (%.1f%%-%.1f%%)', $stat['MinBlobSize'], $stat['MaxBlobSize'], (100*$stat['MinBlobSize']/$stat['Area']), (100*$stat['MaxBlobSize']/$stat['Area']));
} else {
$stat['BlobSizes'] = sprintf('%d (%d%%)', $stat['MinBlobSize'], 100*$stat['MinBlobSize']/$stat['Area']);
$stat['BlobSizes'] = sprintf('%d (%.1f%%)', $stat['MinBlobSize'], 100*$stat['MinBlobSize']/$stat['Area']);
}
$stat['AlarmLimits'] = validHtmlStr($stat['MinX'].','.$stat['MinY'].'-'.$stat['MaxX'].','.$stat['MaxY']);
$data['raw'][] = $stat;

View File

@ -203,27 +203,27 @@ class ZM_Object {
$this->{$field} = implode(',', $value);
} else if (is_string($value)) {
if (array_key_exists($field, $this->defaults)) {
# Need filtering
if (is_array($this->defaults[$field]) && isset($this->defaults[$field]['filter_regexp'])) {
if (is_array($this->defaults[$field]['filter_regexp'])) {
foreach ($this->defaults[$field]['filter_regexp'] as $regexp) {
$this->{$field} = preg_replace($regexp, '', trim($value));
}
} else {
$this->{$field} = preg_replace($this->defaults[$field]['filter_regexp'], '', trim($value));
}
} else if ($value == '') {
if (is_array($this->defaults[$field])) {
$this->{$field} = $this->defaults[$field]['default'];
} else if (is_string($this->defaults[$field])) {
# if the default is a string, don't set it. Having a default for empty string is to set null for numbers.
$this->{$field} = $value;
} else {
$this->{$field} = $this->defaults[$field];
}
} else {
$this->{$field} = $value;
} # need a default
# Need filtering
if (is_array($this->defaults[$field]) && isset($this->defaults[$field]['filter_regexp'])) {
if (is_array($this->defaults[$field]['filter_regexp'])) {
foreach ($this->defaults[$field]['filter_regexp'] as $regexp) {
$this->{$field} = preg_replace($regexp, '', trim($value));
}
} else {
$this->{$field} = preg_replace($this->defaults[$field]['filter_regexp'], '', trim($value));
}
} else if ($value == '') {
if (is_array($this->defaults[$field])) {
$this->{$field} = $this->defaults[$field]['default'];
} else if (is_string($this->defaults[$field])) {
# if the default is a string, don't set it. Having a default for empty string is to set null for numbers.
$this->{$field} = $value;
} else {
$this->{$field} = $this->defaults[$field];
}
} else {
$this->{$field} = $value;
} # need a default
} else {
$this->{$field} = $value;
}

View File

@ -382,9 +382,10 @@ function addTerm( element ) {
var row = $j(element).closest('tr');
row.find('select').chosen('destroy');
var newRow = row.clone().insertAfter(row);
newRow.find('select').each( function() { //reset new row to default
this[0].selected = 'selected';
});
//newRow.find('select').each( function() { //reset new row to default
// if ($j(this).find('option').length > 0 )
// this[0].selected = 'selected';
//});
newRow.find('input[type="text"]').val('');
newRow[0].querySelectorAll("button[data-on-click-this]").forEach(function(el) {
var fnName = el.getAttribute("data-on-click-this");