Merge branch 'storageareas' of github.com:ConnorTechnology/ZoneMinder into storageareas
This commit is contained in:
commit
845ef6c05a
|
@ -5,29 +5,23 @@ Maintainer: Dmitry Smirnov <onlyjob@debian.org>
|
|||
Uploaders: Vagrant Cascadian <vagrant@debian.org>
|
||||
Build-Depends: debhelper (>= 9), dh-systemd, python-sphinx | python3-sphinx, apache2-dev, dh-linktree
|
||||
,cmake
|
||||
<<<<<<< HEAD
|
||||
,libx264-dev, libmp4v2-dev
|
||||
,libavcodec-dev, libavformat-dev, libswscale-dev
|
||||
,libavutil-dev, libavdevice-dev, libavresample-dev
|
||||
,libboost-dev
|
||||
=======
|
||||
,libboost-dev
|
||||
,libavdevice-dev (>= 6:10~)
|
||||
,libavcodec-dev (>= 6:10~)
|
||||
,libavformat-dev (>= 6:10~)
|
||||
,libavutil-dev (>= 6:10~)
|
||||
,libswscale-dev (>= 6:10~)
|
||||
>>>>>>> dragndrop_monitor_sorting
|
||||
,libbz2-dev
|
||||
,libgcrypt-dev
|
||||
,libcurl4-gnutls-dev
|
||||
,libgnutls-openssl-dev
|
||||
, libjpeg8-dev | libjpeg9-dev | libjpeg62-turbo-dev
|
||||
,libjpeg8-dev | libjpeg9-dev | libjpeg62-turbo-dev
|
||||
,libmysqlclient-dev
|
||||
,libpcre3-dev
|
||||
,libpolkit-gobject-1-dev
|
||||
,libv4l-dev (>= 0.8.3) [!hurd-any]
|
||||
,libvlc-dev,
|
||||
,libvlc-dev
|
||||
,libdate-manip-perl
|
||||
,libdbd-mysql-perl
|
||||
,libphp-serialization-perl
|
||||
|
|
|
@ -94,7 +94,7 @@ our %types = (
|
|||
hint => 'yes|no',
|
||||
pattern => qr|^([yn])|i,
|
||||
check => q( $1 ),
|
||||
format => q( ($1 =~ /^y/) ? 'yes' : 'no')
|
||||
format => q( ($1 =~ /^y/) ? 'yes' : 'no' )
|
||||
},
|
||||
integer => {
|
||||
db_type => 'integer',
|
||||
|
@ -117,8 +117,8 @@ our %types = (
|
|||
tristate => {
|
||||
db_type => 'string',
|
||||
hint => 'auto|yes|no',
|
||||
pattern => qr|^([ayn])|i, check=> q( $1 ),
|
||||
format => q( ($1 =~ /^y/) ? 'yes' : ($1 =~ /^n/ ? 'no' : 'auto' ))
|
||||
pattern => qr|^([ayn])|i, check=>q( $1 ),
|
||||
format => q( ($1 =~ /^y/) ? 'yes' : ($1 =~ /^n/ ? 'no' : 'auto' ) )
|
||||
},
|
||||
abs_path => {
|
||||
db_type => 'string',
|
||||
|
@ -158,7 +158,7 @@ our %types = (
|
|||
},
|
||||
email => {
|
||||
db_type => 'string',
|
||||
hint => 'your.name\@your.domain',
|
||||
hint => 'your.name@your.domain',
|
||||
pattern => qr|^([a-zA-Z0-9_.-]+)\@([a-zA-Z0-9_.-]+)$|,
|
||||
format => q( $1\@$2 )
|
||||
},
|
||||
|
@ -238,7 +238,7 @@ our @options = (
|
|||
supplied user without additional authentication provided such a
|
||||
user is configured ion ZoneMinder.
|
||||
`,
|
||||
requires => [ { name=> 'ZM_OPT_USE_AUTH', value=>'yes' } ],
|
||||
requires => [ { name=>'ZM_OPT_USE_AUTH', value=>'yes' } ],
|
||||
type => {
|
||||
db_type => 'string',
|
||||
hint => 'builtin|remote',
|
||||
|
@ -263,7 +263,7 @@ our @options = (
|
|||
external access. You can also switch off authentication
|
||||
relaying if your system is isolated in other ways.
|
||||
`,
|
||||
requires => [ { name=> 'ZM_OPT_USE_AUTH', value=>'yes' } ],
|
||||
requires => [ { name=>'ZM_OPT_USE_AUTH', value=>'yes' } ],
|
||||
type => {
|
||||
db_type => 'string',
|
||||
hint => 'hashed|plain|none',
|
||||
|
@ -284,8 +284,8 @@ our @options = (
|
|||
secret increases security substantially.
|
||||
`,
|
||||
requires => [
|
||||
{ name=> 'ZM_OPT_USE_AUTH', value=>'yes' },
|
||||
{ name=> 'ZM_AUTH_RELAY', value=>'hashed' }
|
||||
{ name=>'ZM_OPT_USE_AUTH', value=>'yes' },
|
||||
{ name=>'ZM_AUTH_RELAY', value=>'hashed' }
|
||||
],
|
||||
type => $types{string},
|
||||
category => 'system',
|
||||
|
@ -307,8 +307,8 @@ our @options = (
|
|||
authentication, switching this option off may help.
|
||||
`,
|
||||
requires => [
|
||||
{ name=> 'ZM_OPT_USE_AUTH', value=>'yes' },
|
||||
{ name=> 'ZM_AUTH_RELAY', value=>'hashed' }
|
||||
{ name=>'ZM_OPT_USE_AUTH', value=>'yes' },
|
||||
{ name=>'ZM_AUTH_RELAY', value=>'hashed' }
|
||||
],
|
||||
type => $types{boolean},
|
||||
category => 'system',
|
||||
|
@ -348,8 +348,8 @@ our @options = (
|
|||
ZM_AUTH_HASH_SECRET to something unique to your system.
|
||||
`,
|
||||
requires => [
|
||||
{ name=> 'ZM_OPT_USE_AUTH', value=>'yes' },
|
||||
{ name=> 'ZM_AUTH_RELAY', value=>'hashed' }
|
||||
{ name=>'ZM_OPT_USE_AUTH', value=>'yes' },
|
||||
{ name=>'ZM_AUTH_RELAY', value=>'hashed' }
|
||||
],
|
||||
type => $types{boolean},
|
||||
category => 'system',
|
||||
|
@ -407,7 +407,7 @@ our @options = (
|
|||
and they will fail the reCaptcha test.
|
||||
`,
|
||||
requires => [
|
||||
{name=> 'ZM_OPT_USE_AUTH', value=>'yes'}
|
||||
{name=>'ZM_OPT_USE_AUTH', value=>'yes'}
|
||||
],
|
||||
type => $types{boolean},
|
||||
category => 'system',
|
||||
|
@ -422,7 +422,7 @@ our @options = (
|
|||
for more details.
|
||||
`,
|
||||
requires => [
|
||||
{name=> 'ZM_OPT_USE_GOOG_RECAPTCHA', value=>'yes'}
|
||||
{name=>'ZM_OPT_USE_GOOG_RECAPTCHA', value=>'yes'}
|
||||
],
|
||||
type => $types{string},
|
||||
category => 'system',
|
||||
|
@ -437,7 +437,7 @@ our @options = (
|
|||
for more details.
|
||||
`,
|
||||
requires => [
|
||||
{name=> 'ZM_OPT_USE_GOOG_RECAPTCHA', value=>'yes'}
|
||||
{name=>'ZM_OPT_USE_GOOG_RECAPTCHA', value=>'yes'}
|
||||
],
|
||||
type => $types{string},
|
||||
category => 'system',
|
||||
|
@ -473,7 +473,7 @@ our @options = (
|
|||
than 32k files in a single folder inherent in some filesystems.
|
||||
It is important to note that you cannot simply change this
|
||||
option. You must stop zoneminder, enable USE_DEEP_STORAGE, and
|
||||
then run 'sudo zmupdate.pl --migrate-events'. FAILURE TO DO
|
||||
then run "sudo zmupdate.pl --migrate-events". FAILURE TO DO
|
||||
SO WILL RESULT IN LOSS OF YOUR DATA! Consult the ZoneMinder
|
||||
WiKi for further details.
|
||||
`,
|
||||
|
@ -751,7 +751,7 @@ our @options = (
|
|||
installed in the same directory as the ZoneMinder web client
|
||||
files.
|
||||
`,
|
||||
requires => [ { name=> 'ZM_OPT_CAMBOZOLA', value=>'yes' } ],
|
||||
requires => [ { name=>'ZM_OPT_CAMBOZOLA', value=>'yes' } ],
|
||||
type => $types{rel_path},
|
||||
category => 'images',
|
||||
},
|
||||
|
@ -1017,7 +1017,7 @@ our @options = (
|
|||
default => '@PATH_FFMPEG@',
|
||||
description => 'Path to (optional) ffmpeg mpeg encoder',
|
||||
help => 'This path should point to where ffmpeg has been installed.',
|
||||
requires => [ { name=> 'ZM_OPT_FFMPEG', value=>'yes' } ],
|
||||
requires => [ { name=>'ZM_OPT_FFMPEG', value=>'yes' } ],
|
||||
type => $types{abs_path},
|
||||
category => 'images',
|
||||
},
|
||||
|
@ -1032,7 +1032,7 @@ our @options = (
|
|||
are given before the -i option). Check the ffmpeg documentation
|
||||
for a full list of options which may be used here.
|
||||
`,
|
||||
requires => [ { name=> 'ZM_OPT_FFMPEG', value=>'yes' } ],
|
||||
requires => [ { name=>'ZM_OPT_FFMPEG', value=>'yes' } ],
|
||||
type => $types{string},
|
||||
category => 'images',
|
||||
},
|
||||
|
@ -1049,7 +1049,7 @@ our @options = (
|
|||
common one will often be to force an output frame rate
|
||||
supported by the video encoder.
|
||||
`,
|
||||
requires => [ { name=> 'ZM_OPT_FFMPEG', value=>'yes' } ],
|
||||
requires => [ { name=>'ZM_OPT_FFMPEG', value=>'yes' } ],
|
||||
type => $types{string},
|
||||
category => 'images',
|
||||
},
|
||||
|
@ -1066,7 +1066,7 @@ our @options = (
|
|||
web video, adding '**' defines the default format for phone
|
||||
video.
|
||||
`,
|
||||
requires => [ { name=> 'ZM_OPT_FFMPEG', value=>'yes' } ],
|
||||
requires => [ { name=>'ZM_OPT_FFMPEG', value=>'yes' } ],
|
||||
type => $types{string},
|
||||
category => 'images',
|
||||
},
|
||||
|
@ -1081,7 +1081,7 @@ our @options = (
|
|||
seconds to pass before closing the stream and trying to reopen
|
||||
it again.
|
||||
`,
|
||||
requires => [ { name=> 'ZM_OPT_FFMPEG', value=>'yes' } ],
|
||||
requires => [ { name=>'ZM_OPT_FFMPEG', value=>'yes' } ],
|
||||
type => $types{integer},
|
||||
category => 'images',
|
||||
},
|
||||
|
@ -1555,9 +1555,9 @@ our @options = (
|
|||
help => q`
|
||||
The camera probe function uses Address Resolution Protocol in
|
||||
order to find known devices on the network. Optionally supply
|
||||
the full path to 'ip neigh', 'arp -a', or any other tool on
|
||||
the full path to \"ip neigh\", \"arp -a\", or any other tool on
|
||||
your system that returns ip/mac address pairs. If this field is
|
||||
left empty, ZoneMinder will search for the command 'arp' and
|
||||
left empty, ZoneMinder will search for the command \"arp\" and
|
||||
attempt to use that.
|
||||
`,
|
||||
type => $types{abs_path},
|
||||
|
@ -1594,8 +1594,7 @@ our @options = (
|
|||
name => 'ZM_WEB_EVENT_DISK_SPACE',
|
||||
default => 'no',
|
||||
description => 'Whether to show disk space used by each event.',
|
||||
help => q`
|
||||
Adds another column to the listing of events
|
||||
help => q`Adds another column to the listing of events
|
||||
showing the disk space used by the event. This will impart a small
|
||||
overhead as it will call du on the event directory. In practice
|
||||
this overhead is fairly small but may be noticeable on IO-constrained
|
||||
|
@ -1624,7 +1623,8 @@ our @options = (
|
|||
name => 'ZM_WEB_ID_ON_CONSOLE',
|
||||
default => 'no',
|
||||
description => 'Should the console list the monitor id',
|
||||
help => q`Some find it useful to have the id always visible
|
||||
help => q`
|
||||
Some find it useful to have the id always visible
|
||||
on the console. This option will add a column listing it.
|
||||
`,
|
||||
type => $types{boolean},
|
||||
|
@ -1681,7 +1681,7 @@ our @options = (
|
|||
belonging to one House Code. This option details what that is.
|
||||
It should be a single letter between A and P.
|
||||
`,
|
||||
type => { db_type=> 'string', hint=>'A-P', pattern=> qr|^([A-P])|i, format=> q( uc($1) ) },
|
||||
type => { db_type=>'string', hint=>'A-P', pattern=>qr|^([A-P])|i, format=>q( uc($1) ) },
|
||||
category => 'x10',
|
||||
},
|
||||
{
|
||||
|
@ -1779,11 +1779,13 @@ our @options = (
|
|||
{
|
||||
name => 'ZM_LD_PRELOAD',
|
||||
default => '',
|
||||
description => 'Path to library to preload before launching daemons',
|
||||
help => q`Some older cameras require the use of the v4l1 compat
|
||||
description => "Path to library to preload before launching daemons",
|
||||
help => q`
|
||||
Some older cameras require the use of the v4l1 compat
|
||||
library. This setting allows the setting of the path
|
||||
to the library, so that it can be loaded by zmdc.pl
|
||||
before launching zmc.`,
|
||||
before launching zmc.
|
||||
`,
|
||||
type => $types{abs_path},
|
||||
category => 'config',
|
||||
},
|
||||
|
@ -1825,7 +1827,7 @@ our @options = (
|
|||
ZM_CAPTURES_PER_FRAME option and you should normally change the
|
||||
value of only one of the options at a time. If you have
|
||||
different capture cards that need different values you can
|
||||
ovveride them in each individual monitor on the source page.
|
||||
override them in each individual monitor on the source page.
|
||||
`,
|
||||
type => $types{boolean},
|
||||
category => 'config',
|
||||
|
@ -1849,7 +1851,7 @@ our @options = (
|
|||
ZM_V4L_MULTI_BUFFER option and you should normally change the
|
||||
value of only one of the options at a time. If you have
|
||||
different capture cards that need different values you can
|
||||
ovveride them in each individual monitor on the source page.
|
||||
override them in each individual monitor on the source page.
|
||||
`,
|
||||
type => $types{integer},
|
||||
category => 'config',
|
||||
|
@ -1913,10 +1915,10 @@ our @options = (
|
|||
installed.
|
||||
`,
|
||||
type => {
|
||||
db_type => 'string',
|
||||
hint => 'tar|zip',
|
||||
pattern => qr|^([tz])|i,
|
||||
format => q( $1 =~ /^t/ ? 'tar' : 'zip' )
|
||||
db_type =>'string',
|
||||
hint =>'tar|zip',
|
||||
pattern =>qr|^([tz])|i,
|
||||
format =>q( $1 =~ /^t/ ? 'tar' : 'zip' )
|
||||
},
|
||||
category => 'upload',
|
||||
},
|
||||
|
@ -1968,10 +1970,10 @@ our @options = (
|
|||
on your choice.
|
||||
`,
|
||||
type => {
|
||||
db_type => 'string',
|
||||
hint => 'ftp|sftp',
|
||||
pattern => qr|^([tz])|i,
|
||||
format => q( $1 =~ /^f/ ? 'ftp' : 'sftp' )
|
||||
db_type =>'string',
|
||||
hint =>'ftp|sftp',
|
||||
pattern =>qr|^([tz])|i,
|
||||
format =>q( $1 =~ /^f/ ? 'ftp' : 'sftp' )
|
||||
},
|
||||
category => 'upload',
|
||||
},
|
||||
|
@ -2108,7 +2110,6 @@ our @options = (
|
|||
a remote ftp server. This option indicates the remote directory
|
||||
that ZoneMinder should use to upload event files to.
|
||||
`,
|
||||
requires => [ { name => 'ZM_OPT_UPLOAD', value => 'yes' } ],
|
||||
type => $types{rel_path},
|
||||
category => 'hidden',
|
||||
},
|
||||
|
@ -2292,7 +2293,7 @@ our @options = (
|
|||
},
|
||||
{
|
||||
name => 'ZM_EMAIL_BODY',
|
||||
default => "
|
||||
default => '
|
||||
Hello,
|
||||
|
||||
An alarm has been detected on your installation of the ZoneMinder.
|
||||
|
@ -2307,7 +2308,7 @@ our @options = (
|
|||
|
||||
This alarm was matched by the %FN% filter and can be viewed at %EPS%
|
||||
|
||||
ZoneMinder",
|
||||
ZoneMinder',
|
||||
description => 'The body of the email used to send matching event details',
|
||||
requires => [ { name => 'ZM_OPT_EMAIL', value => 'yes' } ],
|
||||
help => q`
|
||||
|
@ -2350,8 +2351,8 @@ our @options = (
|
|||
},
|
||||
{
|
||||
name => 'ZM_MESSAGE_TEXT',
|
||||
default => q`subject = "ZoneMinder: Alarm - %MN%-%EI%"
|
||||
body = "ZM alarm detected - %EL% secs, %EF%/%EFA% frames, t%EST%/m%ESM%/a%ESA% score."`,
|
||||
default => 'subject = "ZoneMinder: Alarm - %MN%-%EI%"
|
||||
body = "ZM alarm detected - %EL% secs, %EF%/%EFA% frames, t%EST%/m%ESM%/a%ESA% score."',
|
||||
description => 'The text of the message used to send matching event details',
|
||||
requires => [ { name => 'ZM_OPT_MESSAGE', value => 'yes' } ],
|
||||
help => q`
|
||||
|
@ -2625,10 +2626,10 @@ our @options = (
|
|||
`,
|
||||
type => $types{boolean},
|
||||
type => {
|
||||
db_type => 'string',
|
||||
hint => 'time|idle|alarm',
|
||||
pattern => qr|^([tia])|i,
|
||||
format => q( ($1 =~ /^t/)
|
||||
db_type =>'string',
|
||||
hint =>'time|idle|alarm',
|
||||
pattern =>qr|^([tia])|i,
|
||||
format =>q( ($1 =~ /^t/)
|
||||
? 'time'
|
||||
: ($1 =~ /^i/ ? 'idle' : 'time' )
|
||||
)
|
||||
|
@ -2884,10 +2885,10 @@ our @options = (
|
|||
have to be done manually.
|
||||
`,
|
||||
type => {
|
||||
db_type => 'string',
|
||||
hint => 'javascript|http',
|
||||
pattern => qr|^([jh])|i,
|
||||
format => q( $1 =~ /^j/
|
||||
db_type =>'string',
|
||||
hint =>'javascript|http',
|
||||
pattern =>qr|^([jh])|i,
|
||||
format =>q( $1 =~ /^j/
|
||||
? 'javascript'
|
||||
: 'http'
|
||||
)
|
||||
|
@ -2907,10 +2908,10 @@ our @options = (
|
|||
ordering in the lists and so not always to time based ordering.
|
||||
`,
|
||||
type => {
|
||||
db_type => 'string',
|
||||
hint => 'Id|Name|Cause|MonitorName|DateTime|Length|Frames|AlarmFrames|TotScore|AvgScore|MaxScore',
|
||||
pattern => qr|.|,
|
||||
format => q( $1 )
|
||||
db_type =>'string',
|
||||
hint =>'Id|Name|Cause|MonitorName|DateTime|Length|Frames|AlarmFrames|TotScore|AvgScore|MaxScore',
|
||||
pattern =>qr|.|,
|
||||
format =>q( $1 )
|
||||
},
|
||||
category => 'web',
|
||||
},
|
||||
|
@ -2928,10 +2929,10 @@ our @options = (
|
|||
always to time based ordering.
|
||||
`,
|
||||
type => {
|
||||
db_type => 'string',
|
||||
hint => 'asc|desc',
|
||||
pattern => qr|^([ad])|i,
|
||||
format => q( $1 =~ /^a/i ? 'asc' : 'desc' )
|
||||
db_type =>'string',
|
||||
hint =>'asc|desc',
|
||||
pattern =>qr|^([ad])|i,
|
||||
format =>q( $1 =~ /^a/i ? 'asc' : 'desc' )
|
||||
},
|
||||
category => 'web',
|
||||
},
|
||||
|
@ -3122,17 +3123,17 @@ our @options = (
|
|||
Explorer
|
||||
`,
|
||||
type => {
|
||||
db_type => 'string',
|
||||
hint => 'mpeg|jpeg',
|
||||
pattern => qr|^([mj])|i,
|
||||
format => q( $1 =~ /^m/ ? 'mpeg' : 'jpeg' )
|
||||
db_type =>'string',
|
||||
hint =>'mpeg|jpeg',
|
||||
pattern =>qr|^([mj])|i,
|
||||
format =>q( $1 =~ /^m/ ? 'mpeg' : 'jpeg' )
|
||||
},
|
||||
category => 'highband',
|
||||
},
|
||||
{
|
||||
name => 'ZM_WEB_H_DEFAULT_SCALE',
|
||||
default => '100',
|
||||
description => q`What the default scaling factor applied to 'live' or 'event' views is (%)`,
|
||||
description => 'What the default scaling factor applied to \'live\' or \'event\' views is (%)',
|
||||
help => q`
|
||||
Normally ZoneMinder will display 'live' or 'event' streams in
|
||||
their native size. However if you have monitors with large
|
||||
|
@ -3143,17 +3144,17 @@ our @options = (
|
|||
is double size etc.
|
||||
`,
|
||||
type => {
|
||||
db_type => 'integer',
|
||||
hint => '25|33|50|75|100|150|200|300|400',
|
||||
pattern => qr|^(\d+)$|,
|
||||
format => q( $1 )
|
||||
db_type =>'integer',
|
||||
hint =>'25|33|50|75|100|150|200|300|400',
|
||||
pattern =>qr|^(\d+)$|,
|
||||
format =>q( $1 )
|
||||
},
|
||||
category => 'highband',
|
||||
},
|
||||
{
|
||||
name => 'ZM_WEB_H_DEFAULT_RATE',
|
||||
default => '100',
|
||||
description => q`What the default replay rate factor applied to 'event' views is (%)`,
|
||||
description => 'What the default replay rate factor applied to \'event\' views is (%)',
|
||||
help => q`
|
||||
Normally ZoneMinder will display 'event' streams at their
|
||||
native rate, i.e. as close to real-time as possible. However if
|
||||
|
@ -3163,10 +3164,10 @@ our @options = (
|
|||
100 is normal rate, 200 is double speed etc.
|
||||
`,
|
||||
type => {
|
||||
db_type => 'integer',
|
||||
hint => '25|50|100|150|200|400|1000|2500|5000|10000',
|
||||
pattern => qr|^(\d+)$|,
|
||||
format => q( $1 )
|
||||
db_type =>'integer',
|
||||
hint =>'25|50|100|150|200|400|1000|2500|5000|10000',
|
||||
pattern =>qr|^(\d+)$|,
|
||||
format =>q( $1 )
|
||||
},
|
||||
category => 'highband',
|
||||
},
|
||||
|
@ -3241,10 +3242,10 @@ our @options = (
|
|||
view is currently being used.
|
||||
`,
|
||||
type => {
|
||||
db_type => 'string',
|
||||
hint => 'events|timeline',
|
||||
pattern => qr|^([lt])|i,
|
||||
format => q( $1 =~ /^e/ ? 'events' : 'timeline' )
|
||||
db_type =>'string',
|
||||
hint =>'events|timeline',
|
||||
pattern =>qr|^([lt])|i,
|
||||
format =>q( $1 =~ /^e/ ? 'events' : 'timeline' )
|
||||
},
|
||||
category => 'highband',
|
||||
},
|
||||
|
@ -3385,10 +3386,10 @@ our @options = (
|
|||
Explorer
|
||||
`,
|
||||
type => {
|
||||
db_type => 'string',
|
||||
hint => 'mpeg|jpeg',
|
||||
pattern => qr|^([mj])|i,
|
||||
format => q( $1 =~ /^m/ ? 'mpeg' : 'jpeg' )
|
||||
db_type =>'string',
|
||||
hint =>'mpeg|jpeg',
|
||||
pattern =>qr|^([mj])|i,
|
||||
format =>q( $1 =~ /^m/ ? 'mpeg' : 'jpeg' )
|
||||
},
|
||||
category => 'medband',
|
||||
},
|
||||
|
@ -3406,10 +3407,10 @@ our @options = (
|
|||
is double size etc.
|
||||
`,
|
||||
type => {
|
||||
db_type => 'integer',
|
||||
hint => '25|33|50|75|100|150|200|300|400',
|
||||
pattern => qr|^(\d+)$|,
|
||||
format => q( $1 )
|
||||
db_type =>'integer',
|
||||
hint =>'25|33|50|75|100|150|200|300|400',
|
||||
pattern =>qr|^(\d+)$|,
|
||||
format =>q( $1 )
|
||||
},
|
||||
category => 'medband',
|
||||
},
|
||||
|
@ -3426,10 +3427,10 @@ our @options = (
|
|||
100 is normal rate, 200 is double speed etc.
|
||||
`,
|
||||
type => {
|
||||
db_type => 'integer',
|
||||
hint => '25|50|100|150|200|400|1000|2500|5000|10000',
|
||||
pattern => qr|^(\d+)$|,
|
||||
format => q( $1 )
|
||||
db_type =>'integer',
|
||||
hint =>'25|50|100|150|200|400|1000|2500|5000|10000',
|
||||
pattern =>qr|^(\d+)$|,
|
||||
format =>q( $1 )
|
||||
},
|
||||
category => 'medband',
|
||||
},
|
||||
|
@ -3504,10 +3505,10 @@ our @options = (
|
|||
view is currently being used.
|
||||
`,
|
||||
type => {
|
||||
db_type => 'string',
|
||||
hint => 'events|timeline',
|
||||
pattern => qr|^([lt])|i,
|
||||
format => q( $1 =~ /^e/ ? 'events' : 'timeline' )
|
||||
db_type =>'string',
|
||||
hint =>'events|timeline',
|
||||
pattern =>qr|^([lt])|i,
|
||||
format =>q( $1 =~ /^e/ ? 'events' : 'timeline' )
|
||||
},
|
||||
category => 'medband',
|
||||
},
|
||||
|
@ -3648,10 +3649,10 @@ our @options = (
|
|||
Explorer
|
||||
`,
|
||||
type => {
|
||||
db_type => 'string',
|
||||
hint => 'mpeg|jpeg',
|
||||
pattern => qr|^([mj])|i,
|
||||
format => q( $1 =~ /^m/ ? 'mpeg' : 'jpeg' )
|
||||
db_type =>'string',
|
||||
hint =>'mpeg|jpeg',
|
||||
pattern =>qr|^([mj])|i,
|
||||
format =>q( $1 =~ /^m/ ? 'mpeg' : 'jpeg' )
|
||||
},
|
||||
category => 'lowband',
|
||||
},
|
||||
|
@ -3669,10 +3670,10 @@ our @options = (
|
|||
is double size etc.
|
||||
`,
|
||||
type => {
|
||||
db_type => 'integer',
|
||||
hint => '25|33|50|75|100|150|200|300|400',
|
||||
pattern => qr|^(\d+)$|,
|
||||
format => q( $1 )
|
||||
db_type =>'integer',
|
||||
hint =>'25|33|50|75|100|150|200|300|400',
|
||||
pattern =>qr|^(\d+)$|,
|
||||
format =>q( $1 )
|
||||
},
|
||||
category => 'lowband',
|
||||
},
|
||||
|
@ -3689,9 +3690,9 @@ our @options = (
|
|||
100 is normal rate, 200 is double speed etc.
|
||||
`,
|
||||
type => {
|
||||
db_type => 'integer',
|
||||
hint => '25|50|100|150|200|400|1000|2500|5000|10000',
|
||||
pattern => qr|^(\d+)$|, format=> q( $1 )
|
||||
db_type =>'integer',
|
||||
hint =>'25|50|100|150|200|400|1000|2500|5000|10000',
|
||||
pattern =>qr|^(\d+)$|, format=>q( $1 )
|
||||
},
|
||||
category => 'lowband',
|
||||
},
|
||||
|
@ -3766,10 +3767,10 @@ our @options = (
|
|||
view is currently being used.
|
||||
`,
|
||||
type => {
|
||||
db_type => 'string',
|
||||
hint => 'events|timeline',
|
||||
pattern => qr|^([lt])|i,
|
||||
format => q( $1 =~ /^e/ ? 'events' : 'timeline' )
|
||||
db_type =>'string',
|
||||
hint =>'events|timeline',
|
||||
pattern =>qr|^([lt])|i,
|
||||
format =>q( $1 =~ /^e/ ? 'events' : 'timeline' )
|
||||
},
|
||||
category => 'lowband',
|
||||
},
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
#include "zm_buffer.h"
|
||||
#include "zm_regexp.h"
|
||||
#include "zm_utils.h"
|
||||
#include "zm_packetqueue.h"
|
||||
|
||||
//
|
||||
// Class representing 'http' cameras, i.e. those which are
|
||||
|
|
|
@ -259,22 +259,22 @@ fi
|
|||
|
||||
if [ $TYPE == "binary" ]; then
|
||||
if [ "$INTERACTIVE" != "no" ]; then
|
||||
echo "Not doing dput since it's a binary release. Do you want to install it? (Y/N)"
|
||||
read install
|
||||
if [ "$install" == "Y" ]; then
|
||||
read -p "Not doing dput since it's a binary release. Do you want to install it? (Y/N)"
|
||||
if [[ $REPLY == [yY] ]]; then
|
||||
sudo dpkg -i $DIRECTORY*.deb
|
||||
else
|
||||
echo $REPLY;
|
||||
fi;
|
||||
if [ "$DISTRO" == "jessie" ]; then
|
||||
echo "Do you want to upload this binary to zmrepo? (y/N)"
|
||||
read install
|
||||
if [ "$install" == "Y" ]; then
|
||||
read -p "Do you want to upload this binary to zmrepo? (y/N)"
|
||||
if [[ $REPLY == [yY] ]]; then
|
||||
if [ "$RELEASE" != "" ]; then
|
||||
scp "zoneminder_${VERSION}-${DISTRO}*" "zmrepo@zmrepo.connortechnology.com:debian/stable/mini-dinstall/incoming/"
|
||||
else
|
||||
if [ "$BRANCH" == "" ]; then
|
||||
scp "zoneminder_${VERSION}-${DISTRO}*" "zmrepo@zmrepo.connortechnology.com:debian/master/mini-dinstall/incoming/"
|
||||
else
|
||||
scp "zoneminder_${VERSION}-${DISTRO}*" "zmrepo@zmrepo.connortechnology.com:debian/${BRANCH}/mini-dinstall/incoming/"
|
||||
scp "$DIRECTORY-${DISTRO}*" "zmrepo@zmrepo.connortechnology.com:debian/${BRANCH}/mini-dinstall/incoming/"
|
||||
fi;
|
||||
fi;
|
||||
fi;
|
||||
|
@ -298,7 +298,7 @@ else
|
|||
echo "Ready to dput $SC to $PPA ? Y/N...";
|
||||
read dput
|
||||
fi
|
||||
if [ "$dput" == "Y" -o "$dput" == "y" ]; then
|
||||
if [ "$dput" == [Yy] ]; then
|
||||
dput $PPA $SC
|
||||
fi;
|
||||
fi;
|
||||
|
|
|
@ -53,7 +53,7 @@ function userLogin( $username, $password='', $passwordHashed=false ) {
|
|||
Info( "Login successful for user \"$username\"" );
|
||||
$_SESSION['user'] = $user = $dbUser;
|
||||
unset($_SESSION['loginFailed']);
|
||||
if ( ZM_AUTH_TYPE == "builtin" ) {
|
||||
if ( ZM_AUTH_TYPE == 'builtin' ) {
|
||||
$_SESSION['passwordHash'] = $user['Password'];
|
||||
}
|
||||
session_regenerate_id();
|
||||
|
@ -76,11 +76,11 @@ function userLogout() {
|
|||
}
|
||||
|
||||
function noCacheHeaders() {
|
||||
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
|
||||
header("Last-Modified: ".gmdate( "D, d M Y H:i:s" )." GMT"); // always modified
|
||||
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
|
||||
header("Cache-Control: post-check=0, pre-check=0", false);
|
||||
header("Pragma: no-cache"); // HTTP/1.0
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
|
||||
header('Last-Modified: '.gmdate( 'D, d M Y H:i:s' ).' GMT'); // always modified
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
|
||||
header('Cache-Control: post-check=0, pre-check=0', false);
|
||||
header('Pragma: no-cache'); // HTTP/1.0
|
||||
}
|
||||
|
||||
function CORSHeaders() {
|
||||
|
@ -96,13 +96,13 @@ function CORSHeaders() {
|
|||
foreach( $servers as $row ) {
|
||||
$Server = new Server( $row );
|
||||
if ( $_SERVER['HTTP_ORIGIN'] == $Server->Url() ) {
|
||||
header("Access-Control-Allow-Origin: " . $Server->Url() );
|
||||
header("Access-Control-Allow-Headers: x-requested-with,x-request");
|
||||
$valid = true;
|
||||
header('Access-Control-Allow-Origin: ' . $Server->Url() );
|
||||
header('Access-Control-Allow-Headers: x-requested-with,x-request');
|
||||
}
|
||||
}
|
||||
if ( ! $valid ) {
|
||||
Warning( $_SERVER['HTTP_ORIGIN'] . " is not found in servers list." );
|
||||
Warning( $_SERVER['HTTP_ORIGIN'] . ' is not found in servers list.' );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -176,24 +176,24 @@ function getStreamSrc( $args, $querySep='&' ) {
|
|||
$streamSrc = ZM_BASE_URL.ZM_PATH_ZMS;
|
||||
|
||||
if ( ZM_OPT_USE_AUTH ) {
|
||||
if ( ZM_AUTH_RELAY == "hashed" ) {
|
||||
$args[] = "auth=".generateAuthHash( ZM_AUTH_HASH_IPS );
|
||||
} elseif ( ZM_AUTH_RELAY == "plain" ) {
|
||||
$args[] = "user=".$_SESSION['username'];
|
||||
$args[] = "pass=".$_SESSION['password'];
|
||||
} elseif ( ZM_AUTH_RELAY == "none" ) {
|
||||
$args[] = "user=".$_SESSION['username'];
|
||||
if ( ZM_AUTH_RELAY == 'hashed' ) {
|
||||
$args[] = 'auth='.generateAuthHash( ZM_AUTH_HASH_IPS );
|
||||
} elseif ( ZM_AUTH_RELAY == 'plain' ) {
|
||||
$args[] = 'user='.$_SESSION['username'];
|
||||
$args[] = 'pass='.$_SESSION['password'];
|
||||
} elseif ( ZM_AUTH_RELAY == 'none' ) {
|
||||
$args[] = 'user='.$_SESSION['username'];
|
||||
}
|
||||
}
|
||||
if ( !in_array( "mode=single", $args ) && !empty($GLOBALS['connkey']) ) {
|
||||
$args[] = "connkey=".$GLOBALS['connkey'];
|
||||
if ( !in_array( 'mode=single', $args ) && !empty($GLOBALS['connkey']) ) {
|
||||
$args[] = 'connkey='.$GLOBALS['connkey'];
|
||||
}
|
||||
if ( ZM_RAND_STREAM ) {
|
||||
$args[] = "rand=".time();
|
||||
$args[] = 'rand='.time();
|
||||
}
|
||||
|
||||
if ( count($args) ) {
|
||||
$streamSrc .= "?".join( $querySep, $args );
|
||||
$streamSrc .= '?'.join( $querySep, $args );
|
||||
}
|
||||
|
||||
return( $streamSrc );
|
||||
|
@ -211,11 +211,11 @@ function getMimeType( $file ) {
|
|||
return( trim( exec( 'file -bi '.escapeshellarg( $file ).' 2>/dev/null' ) ) );
|
||||
}
|
||||
|
||||
function outputVideoStream( $id, $src, $width, $height, $format, $title="" ) {
|
||||
function outputVideoStream( $id, $src, $width, $height, $format, $title='' ) {
|
||||
echo getVideoStreamHTML( $id, $src, $width, $height, $format, $title );
|
||||
}
|
||||
|
||||
function getVideoStreamHTML( $id, $src, $width, $height, $format, $title="" ) {
|
||||
function getVideoStreamHTML( $id, $src, $width, $height, $format, $title='' ) {
|
||||
$html = '';
|
||||
$width = validInt($width);
|
||||
$height = validInt($height);
|
||||
|
@ -226,24 +226,24 @@ function getVideoStreamHTML( $id, $src, $width, $height, $format, $title="" ) {
|
|||
} else {
|
||||
switch( $format ) {
|
||||
case 'asf' :
|
||||
$mimeType = "video/x-ms-asf";
|
||||
$mimeType = 'video/x-ms-asf';
|
||||
break;
|
||||
case 'avi' :
|
||||
case 'wmv' :
|
||||
$mimeType = "video/x-msvideo";
|
||||
$mimeType = 'video/x-msvideo';
|
||||
break;
|
||||
case 'mov' :
|
||||
$mimeType = "video/quicktime";
|
||||
$mimeType = 'video/quicktime';
|
||||
break;
|
||||
case 'mpg' :
|
||||
case 'mpeg' :
|
||||
$mimeType = "video/mpeg";
|
||||
$mimeType = 'video/mpeg';
|
||||
break;
|
||||
case 'swf' :
|
||||
$mimeType = "application/x-shockwave-flash";
|
||||
$mimeType = 'application/x-shockwave-flash';
|
||||
break;
|
||||
case '3gp' :
|
||||
$mimeType = "video/3gpp";
|
||||
$mimeType = 'video/3gpp';
|
||||
break;
|
||||
default :
|
||||
$mimeType = "video/$format";
|
||||
|
@ -254,9 +254,9 @@ function getVideoStreamHTML( $id, $src, $width, $height, $format, $title="" ) {
|
|||
$mimeType = 'video/'.$format;
|
||||
if ( ZM_WEB_USE_OBJECT_TAGS ) {
|
||||
switch( $mimeType ) {
|
||||
case "video/x-ms-asf" :
|
||||
case "video/x-msvideo" :
|
||||
case "video/mp4" :
|
||||
case 'video/x-ms-asf' :
|
||||
case 'video/x-msvideo' :
|
||||
case 'video/mp4' :
|
||||
{
|
||||
if ( isWindows() ) {
|
||||
return '<object id="'.$id.'" width="'.$width.'" height="'.$height.'
|
||||
|
@ -279,7 +279,7 @@ function getVideoStreamHTML( $id, $src, $width, $height, $format, $title="" ) {
|
|||
</object>';
|
||||
}
|
||||
}
|
||||
case "video/quicktime" :
|
||||
case 'video/quicktime' :
|
||||
{
|
||||
return '<object id="'.$id.'" width="'.$width.'" height="'.$height.'"
|
||||
classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"
|
||||
|
@ -297,7 +297,7 @@ function getVideoStreamHTML( $id, $src, $width, $height, $format, $title="" ) {
|
|||
</embed>
|
||||
</object>';
|
||||
}
|
||||
case "application/x-shockwave-flash" :
|
||||
case 'application/x-shockwave-flash' :
|
||||
{
|
||||
return '<object id="'.$id.'" width="'.$width.'" height="'.$height.'"
|
||||
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
|
||||
|
@ -378,15 +378,14 @@ function getHelperStream( $id, $src, $width, $height, $title="" ) {
|
|||
</applet>';
|
||||
}
|
||||
|
||||
function outputImageStill( $id, $src, $width, $height, $title="" ) {
|
||||
echo getImageStill( $id, $src, $width, $height, $title="" );
|
||||
function outputImageStill( $id, $src, $width, $height, $title='' ) {
|
||||
echo getImageStill( $id, $src, $width, $height, $title='' );
|
||||
}
|
||||
function getImageStill( $id, $src, $width, $height, $title="" ) {
|
||||
function getImageStill( $id, $src, $width, $height, $title='' ) {
|
||||
return '<img id="'.$id.'" src="'.$src.'" alt="'.$title.'" width="'.$width.'" height="'.$height.'"/>';
|
||||
}
|
||||
|
||||
function outputControlStill( $src, $width, $height, $monitor, $scale, $target )
|
||||
{
|
||||
function outputControlStill( $src, $width, $height, $monitor, $scale, $target ) {
|
||||
?>
|
||||
<form name="ctrlForm" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>" target="<?php echo $target ?>">
|
||||
<input type="hidden" name="view" value="blank">
|
||||
|
@ -417,18 +416,12 @@ function outputControlStill( $src, $width, $height, $monitor, $scale, $target )
|
|||
function getZmuCommand( $args ) {
|
||||
$zmuCommand = ZMU_PATH;
|
||||
|
||||
if ( ZM_OPT_USE_AUTH )
|
||||
{
|
||||
if ( ZM_AUTH_RELAY == "hashed" )
|
||||
{
|
||||
$zmuCommand .= " -A ".generateAuthHash( false );
|
||||
}
|
||||
elseif ( ZM_AUTH_RELAY == "plain" )
|
||||
{
|
||||
$zmuCommand .= " -U " .escapeshellarg($_SESSION['username'])." -P ".escapeshellarg($_SESSION['password']);
|
||||
}
|
||||
elseif ( ZM_AUTH_RELAY == "none" )
|
||||
{
|
||||
if ( ZM_OPT_USE_AUTH ) {
|
||||
if ( ZM_AUTH_RELAY == 'hashed' ) {
|
||||
$zmuCommand .= ' -A '.generateAuthHash( false );
|
||||
} elseif ( ZM_AUTH_RELAY == 'plain' ) {
|
||||
$zmuCommand .= ' -U ' .escapeshellarg($_SESSION['username']).' -P '.escapeshellarg($_SESSION['password']);
|
||||
} elseif ( ZM_AUTH_RELAY == 'none' ) {
|
||||
$zmuCommand .= " -U ".escapeshellarg($_SESSION['username']);
|
||||
}
|
||||
}
|
||||
|
@ -458,7 +451,7 @@ function canEdit( $area, $mid=false ) {
|
|||
|
||||
function getEventPath( $event ) {
|
||||
if ( ZM_USE_DEEP_STORAGE )
|
||||
$eventPath = $event['MonitorId'].'/'.strftime( "%y/%m/%d/%H/%M/%S", strtotime($event['StartTime']) );
|
||||
$eventPath = $event['MonitorId'].'/'.strftime( '%y/%m/%d/%H/%M/%S', strtotime($event['StartTime']) );
|
||||
else
|
||||
$eventPath = $event['MonitorId'].'/'.$event['Id'];
|
||||
return( $eventPath );
|
||||
|
@ -473,7 +466,7 @@ function getEventDefaultVideoPath( $event ) {
|
|||
function deletePath( $path ) {
|
||||
if ( is_dir( $path ) ) {
|
||||
Logger::Debug("deletePath rm -rf $path");
|
||||
system( escapeshellcmd( "rm -rf ".$path ) );
|
||||
system( escapeshellcmd( 'rm -rf '.$path ) );
|
||||
} else {
|
||||
Logger::Debug("deletePath unlink $path");
|
||||
unlink( $path );
|
||||
|
@ -483,7 +476,7 @@ Logger::Debug("deletePath unlink $path");
|
|||
function deleteEvent( $event ) {
|
||||
|
||||
if ( empty($event) ) {
|
||||
Error( "Empty event passed to deleteEvent.");
|
||||
Error( 'Empty event passed to deleteEvent.');
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -501,8 +494,8 @@ Logger::Debug("Event type: " . gettype($event));
|
|||
} # CAN EDIT
|
||||
}
|
||||
|
||||
function makeLink( $url, $label, $condition=1, $options="" ) {
|
||||
$string = "";
|
||||
function makeLink( $url, $label, $condition=1, $options='' ) {
|
||||
$string = '';
|
||||
if ( $condition ) {
|
||||
$string .= '<a href="'.$url.'"'.($options?(' '.$options):'').'>';
|
||||
}
|
||||
|
@ -513,8 +506,8 @@ function makeLink( $url, $label, $condition=1, $options="" ) {
|
|||
return( $string );
|
||||
}
|
||||
|
||||
function makePopupLink( $url, $winName, $winSize, $label, $condition=1, $options="" ) {
|
||||
$string = "";
|
||||
function makePopupLink( $url, $winName, $winSize, $label, $condition=1, $options='' ) {
|
||||
$string = '';
|
||||
if ( $condition ) {
|
||||
if ( is_array( $winSize ) )
|
||||
$popupParms = "'".$url."', '".$winName."', '".$winSize[0]."', ".$winSize[1].", ".$winSize[2];
|
||||
|
@ -530,7 +523,7 @@ function makePopupLink( $url, $winName, $winSize, $label, $condition=1, $options
|
|||
return( $string );
|
||||
}
|
||||
|
||||
function makePopupButton( $url, $winName, $winSize, $buttonValue, $condition=1, $options="" ) {
|
||||
function makePopupButton( $url, $winName, $winSize, $buttonValue, $condition=1, $options='' ) {
|
||||
if ( is_array( $winSize ) )
|
||||
$popupParms = "'".$url."', '".$winName."', '".$winSize[0]."', ".$winSize[1].", ".$winSize[2];
|
||||
else
|
||||
|
@ -541,7 +534,7 @@ function makePopupButton( $url, $winName, $winSize, $buttonValue, $condition=1,
|
|||
|
||||
function htmlSelect( $name, $contents, $values, $behaviours=false ) {
|
||||
|
||||
$behaviourText = "";
|
||||
$behaviourText = '';
|
||||
if ( !empty($behaviours) ) {
|
||||
if ( is_array($behaviours) ) {
|
||||
foreach ( $behaviours as $event=>$action ) {
|
||||
|
@ -557,24 +550,23 @@ function htmlSelect( $name, $contents, $values, $behaviours=false ) {
|
|||
$selected = is_array( $values ) ? in_array( $value, $values ) : $value==$values;
|
||||
$html .= "<option value=\"$value\"".($selected?" selected=\"selected\"":'').">$text</option>";
|
||||
}
|
||||
$html .= "</select>";
|
||||
$html .= '</select>';
|
||||
return $html;
|
||||
}
|
||||
|
||||
function truncText( $text, $length, $deslash=1 ) {
|
||||
return( preg_replace( "/^(.{".$length.",}?)\b.*$/", "\\1…", ($deslash?stripslashes($text):$text) ) );
|
||||
return( preg_replace( '/^(.{'.$length.',}?)\b.*$/', '\\1…', ($deslash?stripslashes($text):$text) ) );
|
||||
}
|
||||
|
||||
function buildSelect( $name, $contents, $behaviours=false )
|
||||
{
|
||||
$value = "";
|
||||
if ( preg_match( "/^\s*(\w+)\s*(\[.*\])?\s*$/", $name, $matches ) && count($matches) > 2 ) {
|
||||
function buildSelect( $name, $contents, $behaviours=false ) {
|
||||
$value = '';
|
||||
if ( preg_match( '/^\s*(\w+)\s*(\[.*\])?\s*$/', $name, $matches ) && count($matches) > 2 ) {
|
||||
$arr = $matches[1];
|
||||
if ( isset($GLOBALS[$arr]) )
|
||||
$value = $GLOBALS[$arr];
|
||||
elseif ( isset($_REQUEST[$arr]) )
|
||||
$value = $_REQUEST[$arr];
|
||||
if ( !preg_match_all( "/\[\s*['\"]?(\w+)[\"']?\s*\]/", $matches[2], $matches ) ) {
|
||||
if ( !preg_match_all( '/\[\s*[\'"]?(\w+)["\']?\s*\]/', $matches[2], $matches ) ) {
|
||||
Fatal( "Can't parse selector '$name'" );
|
||||
}
|
||||
for ( $i = 0; $i < count($matches[1]); $i++ ) {
|
||||
|
@ -588,7 +580,7 @@ function buildSelect( $name, $contents, $behaviours=false )
|
|||
$value = $_REQUEST[$name];
|
||||
}
|
||||
ob_start();
|
||||
$behaviourText = "";
|
||||
$behaviourText = '';
|
||||
if ( !empty($behaviours) ) {
|
||||
if ( is_array($behaviours) ) {
|
||||
foreach ( $behaviours as $event=>$action ) {
|
||||
|
@ -642,10 +634,10 @@ function getFormChanges( $values, $newValues, $types=false, $columns=false ) {
|
|||
{
|
||||
if ( is_array( $newValues[$key] ) ) {
|
||||
$imageData = getimagesize( $newValues[$key]['tmp_name'] );
|
||||
$changes[$key.'Width'] = $key."Width = ".$imageData[0];
|
||||
$changes[$key.'Height'] = $key."Height = ".$imageData[1];
|
||||
$changes[$key.'Width'] = $key.'Width = '.$imageData[0];
|
||||
$changes[$key.'Height'] = $key.'Height = '.$imageData[1];
|
||||
$changes[$key.'Type'] = $key."Type = '".$newValues[$key]['type']."'";
|
||||
$changes[$key.'Size'] = $key."Size = ".$newValues[$key]['size'];
|
||||
$changes[$key.'Size'] = $key.'Size = '.$newValues[$key]['size'];
|
||||
ob_start();
|
||||
readfile( $newValues[$key]['tmp_name'] );
|
||||
$changes[$key] = $key." = ".dbEscape( ob_get_contents() );
|
||||
|
@ -660,20 +652,20 @@ function getFormChanges( $values, $newValues, $types=false, $columns=false ) {
|
|||
if ( is_array( $newValues[$key] ) ) {
|
||||
$imageData = getimagesize( $newValues[$key]['tmp_name'] );
|
||||
$changes[$key.'Type'] = $key."Type = '".$newValues[$key]['type']."'";
|
||||
$changes[$key.'Size'] = $key."Size = ".$newValues[$key]['size'];
|
||||
$changes[$key.'Size'] = $key.'Size = '.$newValues[$key]['size'];
|
||||
ob_start();
|
||||
readfile( $newValues[$key]['tmp_name'] );
|
||||
$changes[$key] = $key." = ".dbEscape( ob_get_contents() );
|
||||
$changes[$key] = $key.' = '.dbEscape( ob_get_contents() );
|
||||
ob_end_clean();
|
||||
} else {
|
||||
$changes[$key] = "$key = ".dbEscape($value);
|
||||
$changes[$key] = $key . ' = '.dbEscape($value);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'file' :
|
||||
{
|
||||
$changes[$key.'Type'] = $key."Type = ".dbEscape($newValues[$key]['type']);
|
||||
$changes[$key.'Size'] = $key."Size = ".dbEscape($newValues[$key]['size']);
|
||||
$changes[$key.'Type'] = $key.'Type = '.dbEscape($newValues[$key]['type']);
|
||||
$changes[$key.'Size'] = $key.'Size = '.dbEscape($newValues[$key]['size']);
|
||||
ob_start();
|
||||
readfile( $newValues[$key]['tmp_name'] );
|
||||
$changes[$key] = $key." = '".dbEscape( ob_get_contents() )."'";
|
||||
|
@ -683,7 +675,7 @@ function getFormChanges( $values, $newValues, $types=false, $columns=false ) {
|
|||
case 'raw' :
|
||||
{
|
||||
if ( $values[$key] != $value ) {
|
||||
$changes[$key] = "$key = ".dbEscape($value);
|
||||
$changes[$key] = $key . ' = '.dbEscape($value);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -693,7 +685,7 @@ function getFormChanges( $values, $newValues, $types=false, $columns=false ) {
|
|||
if ( ! isset($value) || $value == '' ) {
|
||||
$changes[$key] = "$key = NULL";
|
||||
} else {
|
||||
$changes[$key] = "$key = ".dbEscape(trim($value));
|
||||
$changes[$key] = $key . ' = '.dbEscape(trim($value));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -758,43 +750,43 @@ function getBrowser( &$browser, &$version ) {
|
|||
function isMozilla() {
|
||||
getBrowser( $browser, $version );
|
||||
|
||||
return( $browser == "mozilla" );
|
||||
return( $browser == 'mozilla' );
|
||||
}
|
||||
|
||||
function isKonqueror() {
|
||||
getBrowser( $browser, $version );
|
||||
|
||||
return( $browser == "konqueror" );
|
||||
return( $browser == 'konqueror' );
|
||||
}
|
||||
|
||||
function isInternetExplorer() {
|
||||
getBrowser( $browser, $version );
|
||||
|
||||
return( $browser == "ie" );
|
||||
return( $browser == 'ie' );
|
||||
}
|
||||
|
||||
function isOldChrome() {
|
||||
getBrowser( $browser, $version );
|
||||
|
||||
return( $browser == "oldchrome" );
|
||||
return( $browser == 'oldchrome' );
|
||||
}
|
||||
|
||||
function isChrome() {
|
||||
getBrowser( $browser, $version );
|
||||
|
||||
return( $browser == "chrome" );
|
||||
return( $browser == 'chrome' );
|
||||
}
|
||||
|
||||
function isOpera() {
|
||||
getBrowser( $browser, $version );
|
||||
|
||||
return( $browser == "opera" );
|
||||
return( $browser == 'opera' );
|
||||
}
|
||||
|
||||
function isSafari() {
|
||||
getBrowser( $browser, $version );
|
||||
|
||||
return( $browser == "safari" );
|
||||
return( $browser == 'safari' );
|
||||
}
|
||||
|
||||
function isWindows() {
|
||||
|
@ -807,12 +799,12 @@ function canStreamIframe() {
|
|||
|
||||
function canStreamNative() {
|
||||
// Old versions of Chrome can display the stream, but then it blocks everything else (Chrome bug 5876)
|
||||
return( ZM_WEB_CAN_STREAM == "yes" || ( ZM_WEB_CAN_STREAM == "auto" && (!isInternetExplorer() && !isOldChrome()) ) );
|
||||
return( ZM_WEB_CAN_STREAM == 'yes' || ( ZM_WEB_CAN_STREAM == 'auto' && (!isInternetExplorer() && !isOldChrome()) ) );
|
||||
}
|
||||
|
||||
function canStreamApplet() {
|
||||
if ( (ZM_OPT_CAMBOZOLA && !file_exists( ZM_PATH_WEB.'/'.ZM_PATH_CAMBOZOLA )) ) {
|
||||
Warning ( "ZM_OPT_CAMBOZOLA is enabled, but the system cannot find ".ZM_PATH_WEB."/".ZM_PATH_CAMBOZOLA );
|
||||
Warning ( 'ZM_OPT_CAMBOZOLA is enabled, but the system cannot find '.ZM_PATH_WEB.'/'.ZM_PATH_CAMBOZOLA );
|
||||
}
|
||||
|
||||
return( (ZM_OPT_CAMBOZOLA && file_exists( ZM_PATH_WEB.'/'.ZM_PATH_CAMBOZOLA )) );
|
||||
|
@ -824,7 +816,7 @@ function canStream() {
|
|||
|
||||
function packageControl( $command ) {
|
||||
$string = ZM_PATH_BIN.'/zmpkg.pl '.escapeshellarg( $command );
|
||||
$string .= " 2>/dev/null >&- <&- >/dev/null";
|
||||
$string .= ' 2>/dev/null >&- <&- >/dev/null';
|
||||
exec( $string );
|
||||
}
|
||||
|
||||
|
@ -883,27 +875,27 @@ function zmcControl( $monitor, $mode=false ) {
|
|||
|
||||
function zmaControl( $monitor, $mode=false ) {
|
||||
if ( !is_array( $monitor ) ) {
|
||||
$monitor = dbFetchOne( "select C.*, M.* from Monitors as M left join Controls as C on (M.ControlId = C.Id ) where M.Id=?", NULL, array($monitor) );
|
||||
$monitor = dbFetchOne( 'select C.*, M.* from Monitors as M left join Controls as C on (M.ControlId = C.Id ) where M.Id=?', NULL, array($monitor) );
|
||||
}
|
||||
if ( (!defined('ZM_SERVER_ID')) or ( ZM_SERVER_ID==$monitor['ServerId'] ) ) {
|
||||
if ( !$monitor || $monitor['Function'] == 'None' || $monitor['Function'] == 'Monitor' || $mode == "stop" ) {
|
||||
if ( !$monitor || $monitor['Function'] == 'None' || $monitor['Function'] == 'Monitor' || $mode == 'stop' ) {
|
||||
if ( ZM_OPT_CONTROL ) {
|
||||
daemonControl( "stop", "zmtrack.pl", "-m ".$monitor['Id'] );
|
||||
daemonControl( 'stop', 'zmtrack.pl', '-m '.$monitor['Id'] );
|
||||
}
|
||||
daemonControl( "stop", "zma", "-m ".$monitor['Id'] );
|
||||
daemonControl( 'stop', 'zma', '-m '.$monitor['Id'] );
|
||||
} else {
|
||||
if ( $mode == "restart" ) {
|
||||
if ( $mode == 'restart' ) {
|
||||
if ( ZM_OPT_CONTROL ) {
|
||||
daemonControl( "stop", "zmtrack.pl", "-m ".$monitor['Id'] );
|
||||
daemonControl( 'stop', 'zmtrack.pl', '-m '.$monitor['Id'] );
|
||||
}
|
||||
daemonControl( "stop", "zma", "-m ".$monitor['Id'] );
|
||||
daemonControl( 'stop', 'zma', '-m '.$monitor['Id'] );
|
||||
}
|
||||
daemonControl( "start", "zma", "-m ".$monitor['Id'] );
|
||||
daemonControl( 'start', 'zma', '-m '.$monitor['Id'] );
|
||||
if ( ZM_OPT_CONTROL && $monitor['Controllable'] && $monitor['TrackMotion'] && ( $monitor['Function'] == 'Modect' || $monitor['Function'] == 'Mocord' ) ) {
|
||||
daemonControl( "start", "zmtrack.pl", "-m ".$monitor['Id'] );
|
||||
daemonControl( 'start', 'zmtrack.pl', '-m '.$monitor['Id'] );
|
||||
}
|
||||
if ( $mode == "reload" ) {
|
||||
daemonControl( "reload", "zma", "-m ".$monitor['Id'] );
|
||||
if ( $mode == 'reload' ) {
|
||||
daemonControl( 'reload', 'zma', '-m '.$monitor['Id'] );
|
||||
}
|
||||
}
|
||||
} // end if we are on the recording server
|
||||
|
@ -917,7 +909,7 @@ function initDaemonStatus() {
|
|||
$string = ZM_PATH_BIN."/zmdc.pl status";
|
||||
$daemon_status = shell_exec( $string );
|
||||
} else {
|
||||
$daemon_status = "";
|
||||
$daemon_status = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -950,7 +942,7 @@ function zmaStatus( $monitor ) {
|
|||
}
|
||||
|
||||
function daemonCheck( $daemon=false, $args=false ) {
|
||||
$string = ZM_PATH_BIN."/zmdc.pl check";
|
||||
$string = ZM_PATH_BIN.'/zmdc.pl check';
|
||||
if ( $daemon ) {
|
||||
$string .= ' ' . $daemon;
|
||||
if ( $args )
|
||||
|
@ -1083,54 +1075,54 @@ function parseSort( $saveToSession=false, $querySep='&' ) {
|
|||
|
||||
if ( empty($_REQUEST['sort_field']) ) {
|
||||
$_REQUEST['sort_field'] = ZM_WEB_EVENT_SORT_FIELD;
|
||||
$_REQUEST['sort_asc'] = (ZM_WEB_EVENT_SORT_ORDER == "asc");
|
||||
$_REQUEST['sort_asc'] = (ZM_WEB_EVENT_SORT_ORDER == 'asc');
|
||||
}
|
||||
switch( $_REQUEST['sort_field'] ) {
|
||||
case 'Id' :
|
||||
$sortColumn = "E.Id";
|
||||
$sortColumn = 'E.Id';
|
||||
break;
|
||||
case 'MonitorName' :
|
||||
$sortColumn = "M.Name";
|
||||
$sortColumn = 'M.Name';
|
||||
break;
|
||||
case 'Name' :
|
||||
$sortColumn = "E.Name";
|
||||
$sortColumn = 'E.Name';
|
||||
break;
|
||||
case 'Cause' :
|
||||
$sortColumn = "E.Cause";
|
||||
$sortColumn = 'E.Cause';
|
||||
break;
|
||||
case 'DateTime' :
|
||||
$_REQUEST['sort_field'] = 'StartTime';
|
||||
case 'StartTime' :
|
||||
$sortColumn = "E.StartTime";
|
||||
$sortColumn = 'E.StartTime';
|
||||
break;
|
||||
case 'Length' :
|
||||
$sortColumn = "E.Length";
|
||||
$sortColumn = 'E.Length';
|
||||
break;
|
||||
case 'Frames' :
|
||||
$sortColumn = "E.Frames";
|
||||
$sortColumn = 'E.Frames';
|
||||
break;
|
||||
case 'AlarmFrames' :
|
||||
$sortColumn = "E.AlarmFrames";
|
||||
$sortColumn = 'E.AlarmFrames';
|
||||
break;
|
||||
case 'TotScore' :
|
||||
$sortColumn = "E.TotScore";
|
||||
$sortColumn = 'E.TotScore';
|
||||
break;
|
||||
case 'AvgScore' :
|
||||
$sortColumn = "E.AvgScore";
|
||||
$sortColumn = 'E.AvgScore';
|
||||
break;
|
||||
case 'MaxScore' :
|
||||
$sortColumn = "E.MaxScore";
|
||||
$sortColumn = 'E.MaxScore';
|
||||
break;
|
||||
default:
|
||||
$sortColumn = "E.StartTime";
|
||||
$sortColumn = 'E.StartTime';
|
||||
break;
|
||||
}
|
||||
$sortOrder = $_REQUEST['sort_asc']?"asc":"desc";
|
||||
$sortOrder = $_REQUEST['sort_asc']?'asc':'desc';
|
||||
if ( !$_REQUEST['sort_asc'] )
|
||||
$_REQUEST['sort_asc'] = 0;
|
||||
$sortQuery = $querySep."sort_field=".validHtmlStr($_REQUEST['sort_field']).$querySep."sort_asc=".validHtmlStr($_REQUEST['sort_asc']);
|
||||
$sortQuery = $querySep.'sort_field='.validHtmlStr($_REQUEST['sort_field']).$querySep.'sort_asc='.validHtmlStr($_REQUEST['sort_asc']);
|
||||
if ( !isset($_REQUEST['limit']) )
|
||||
$_REQUEST['limit'] = "";
|
||||
$_REQUEST['limit'] = '';
|
||||
if ( $saveToSession ) {
|
||||
$_SESSION['sort_field'] = validHtmlStr($_REQUEST['sort_field']);
|
||||
$_SESSION['sort_asc'] = validHtmlStr($_REQUEST['sort_asc']);
|
||||
|
@ -1167,16 +1159,16 @@ function parseFilter( &$filter, $saveToSession=false, $querySep='&' ) {
|
|||
$filter['sql'] .= 'M.ServerId';
|
||||
break;
|
||||
case 'DateTime':
|
||||
$filter['sql'] .= "E.StartTime";
|
||||
$filter['sql'] .= 'E.StartTime';
|
||||
break;
|
||||
case 'Date':
|
||||
$filter['sql'] .= "to_days( E.StartTime )";
|
||||
$filter['sql'] .= 'to_days( E.StartTime )';
|
||||
break;
|
||||
case 'Time':
|
||||
$filter['sql'] .= "extract( hour_second from E.StartTime )";
|
||||
$filter['sql'] .= 'extract( hour_second from E.StartTime )';
|
||||
break;
|
||||
case 'Weekday':
|
||||
$filter['sql'] .= "weekday( E.StartTime )";
|
||||
$filter['sql'] .= 'weekday( E.StartTime )';
|
||||
break;
|
||||
case 'Id':
|
||||
case 'Name':
|
||||
|
@ -1265,19 +1257,19 @@ function parseFilter( &$filter, $saveToSession=false, $querySep='&' ) {
|
|||
case '>' :
|
||||
case '<' :
|
||||
case '<=' :
|
||||
$filter['sql'] .= " ".$filter['terms'][$i]['op']." $value";
|
||||
$filter['sql'] .= ' '.$filter['terms'][$i]['op']." $value";
|
||||
break;
|
||||
case '=~' :
|
||||
$filter['sql'] .= " regexp ".$value;
|
||||
$filter['sql'] .= ' regexp '.$value;
|
||||
break;
|
||||
case '!~' :
|
||||
$filter['sql'] .= " not regexp ".$value;
|
||||
$filter['sql'] .= ' not regexp '.$value;
|
||||
break;
|
||||
case '=[]' :
|
||||
$filter['sql'] .= " in (".join( ",", $valueList ).")";
|
||||
$filter['sql'] .= ' in ('.join( ",", $valueList ).')';
|
||||
break;
|
||||
case '![]' :
|
||||
$filter['sql'] .= " not in (".join( ",", $valueList ).")";
|
||||
$filter['sql'] .= ' not in ('.join( ',', $valueList ).')';
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1288,12 +1280,12 @@ function parseFilter( &$filter, $saveToSession=false, $querySep='&' ) {
|
|||
}
|
||||
if ( isset($filter['terms'][$i]['cbr']) ) {
|
||||
$filter['query'] .= $querySep."filter[terms][$i][cbr]=".urlencode($filter['terms'][$i]['cbr']);
|
||||
$filter['sql'] .= " ".str_repeat( ")", $filter['terms'][$i]['cbr'] )." ";
|
||||
$filter['sql'] .= ' '.str_repeat( ')', $filter['terms'][$i]['cbr'] ).' ';
|
||||
$filter['fields'] .= "<input type=\"hidden\" name=\"filter[terms][$i][cbr]\" value=\"".htmlspecialchars($filter['terms'][$i]['cbr'])."\"/>\n";
|
||||
}
|
||||
}
|
||||
if ( $filter['sql'] )
|
||||
$filter['sql'] = " and ( ".$filter['sql']." )";
|
||||
$filter['sql'] = ' and ( '.$filter['sql'].' )';
|
||||
if ( $saveToSession ) {
|
||||
$_SESSION['filter'] = $filter;
|
||||
}
|
||||
|
@ -1325,7 +1317,7 @@ function delFilterTerm( $filter, $position ) {
|
|||
function getPagination( $pages, $page, $maxShortcuts, $query, $querySep='&' ) {
|
||||
global $view;
|
||||
|
||||
$pageText = "";
|
||||
$pageText = '';
|
||||
if ( $pages > 1 ) {
|
||||
if ( $page ) {
|
||||
if ( $page < 0 )
|
||||
|
@ -1414,7 +1406,7 @@ function getDiskPercent($path = ZM_DIR_EVENTS) {
|
|||
Error('disk_total_space returned false. Verify the web account user has access to ' . $path );
|
||||
return 0;
|
||||
} elseif ( $total == 0 ) {
|
||||
Error('disk_total_space indicates the following path has a filesystem size of zero bytes' . $path );
|
||||
Error('disk_total_space indicates the following path has a filesystem size of zero bytes ' . $path );
|
||||
return 100;
|
||||
}
|
||||
$free = disk_free_space($path);
|
||||
|
@ -1447,17 +1439,17 @@ function sidField() {
|
|||
}
|
||||
|
||||
function verNum( $version ) {
|
||||
$vNum = "";
|
||||
$vNum = '';
|
||||
$maxFields = 3;
|
||||
$vFields = explode( ".", $version );
|
||||
$vFields = explode( '.', $version );
|
||||
array_splice( $vFields, $maxFields );
|
||||
while ( count($vFields) < $maxFields ) {
|
||||
$vFields[] = 0;
|
||||
}
|
||||
foreach ( $vFields as $vField ) {
|
||||
$vField = sprintf( "%02d", $vField );
|
||||
$vField = sprintf( '%02d', $vField );
|
||||
while ( strlen($vField) < 2 ) {
|
||||
$vField = "0".$vField;
|
||||
$vField = '0'.$vField;
|
||||
}
|
||||
$vNum .= $vField;
|
||||
}
|
||||
|
@ -1466,7 +1458,7 @@ function verNum( $version ) {
|
|||
|
||||
function fixSequences() {
|
||||
$sequence = 1;
|
||||
$sql = "select * from Monitors order by Sequence asc, Id asc";
|
||||
$sql = 'select * from Monitors order by Sequence asc, Id asc';
|
||||
foreach( dbFetchAll( $sql ) as $monitor ) {
|
||||
if ( $monitor['Sequence'] != $sequence ) {
|
||||
dbQuery( 'update Monitors set Sequence = ? WHERE Id=?', array( $sequence, $monitor['Id'] ) );
|
||||
|
@ -1496,7 +1488,7 @@ function linesIntersect( $line1, $line2 ) {
|
|||
|
||||
// Checking if bounding boxes intersect
|
||||
if ( $max_x1 < $min_x2 || $max_x2 < $min_x1 ||$max_y1 < $min_y2 || $max_y2 < $min_y1 ) {
|
||||
if ( $debug ) echo "Not intersecting, out of bounds<br>";
|
||||
if ( $debug ) echo 'Not intersecting, out of bounds<br>';
|
||||
return( false );
|
||||
}
|
||||
|
||||
|
@ -1531,11 +1523,11 @@ function linesIntersect( $line1, $line2 ) {
|
|||
}
|
||||
} elseif ( $b1 == $b2 ) {
|
||||
// Colinear, must overlap due to box check, intersect?
|
||||
if ( $debug ) echo "Intersecting, colinear<br>";
|
||||
if ( $debug ) echo 'Intersecting, colinear<br>';
|
||||
return( true );
|
||||
} else {
|
||||
// Parallel
|
||||
if ( $debug ) echo "Not intersecting, parallel<br>";
|
||||
if ( $debug ) echo 'Not intersecting, parallel<br>';
|
||||
return( false );
|
||||
}
|
||||
} elseif ( !$dx1 ) { // Line 1 is vertical
|
||||
|
@ -1559,15 +1551,15 @@ function linesIntersect( $line1, $line2 ) {
|
|||
} else { // Both lines are vertical
|
||||
if ( $line1[0]['x'] == $line2[0]['x'] ) {
|
||||
// Colinear, must overlap due to box check, intersect?
|
||||
if ( $debug ) echo "Intersecting, vertical, colinear<br>";
|
||||
if ( $debug ) echo 'Intersecting, vertical, colinear<br>';
|
||||
return( true );
|
||||
} else {
|
||||
// Parallel
|
||||
if ( $debug ) echo "Not intersecting, vertical, parallel<br>";
|
||||
if ( $debug ) echo 'Not intersecting, vertical, parallel<br>';
|
||||
return( false );
|
||||
}
|
||||
}
|
||||
if ( $debug ) echo "Whoops, unexpected scenario<br>";
|
||||
if ( $debug ) echo 'Whoops, unexpected scenario<br>';
|
||||
return( false );
|
||||
}
|
||||
|
||||
|
@ -1638,18 +1630,18 @@ function getPolyArea( $points ) {
|
|||
$dy = $y2 - $y1;
|
||||
|
||||
$global_edges[] = array(
|
||||
"min_y" => $y1<$y2?$y1:$y2,
|
||||
"max_y" => ($y1<$y2?$y2:$y1)+1,
|
||||
"min_x" => $y1<$y2?$x1:$x2,
|
||||
"_1_m" => $dx/$dy,
|
||||
'min_y' => $y1<$y2?$y1:$y2,
|
||||
'max_y' => ($y1<$y2?$y2:$y1)+1,
|
||||
'min_x' => $y1<$y2?$x1:$x2,
|
||||
'_1_m' => $dx/$dy,
|
||||
);
|
||||
}
|
||||
|
||||
usort( $global_edges, "_CompareXY" );
|
||||
usort( $global_edges, '_CompareXY' );
|
||||
|
||||
if ( $debug ) {
|
||||
for ( $i = 0; $i < count($global_edges); $i++ ) {
|
||||
printf( "%d: min_y: %d, max_y:%d, min_x:%.2f, 1/m:%.2f<br>", $i, $global_edges[$i]['min_y'], $global_edges[$i]['max_y'], $global_edges[$i]['min_x'], $global_edges[$i]['_1_m'] );
|
||||
printf( '%d: min_y: %d, max_y:%d, min_x:%.2f, 1/m:%.2f<br>', $i, $global_edges[$i]['min_y'], $global_edges[$i]['max_y'], $global_edges[$i]['min_x'], $global_edges[$i]['_1_m'] );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1659,7 +1651,7 @@ function getPolyArea( $points ) {
|
|||
do {
|
||||
for ( $i = 0; $i < count($global_edges); $i++ ) {
|
||||
if ( $global_edges[$i]['min_y'] == $y ) {
|
||||
if ( $debug ) printf( "Moving global edge<br>" );
|
||||
if ( $debug ) printf( 'Moving global edge<br>' );
|
||||
$active_edges[] = $global_edges[$i];
|
||||
array_splice( $global_edges, $i, 1 );
|
||||
$i--;
|
||||
|
@ -1667,10 +1659,10 @@ function getPolyArea( $points ) {
|
|||
break;
|
||||
}
|
||||
}
|
||||
usort( $active_edges, "_CompareX" );
|
||||
usort( $active_edges, '_CompareX' );
|
||||
if ( $debug ) {
|
||||
for ( $i = 0; $i < count($active_edges); $i++ ) {
|
||||
printf( "%d - %d: min_y: %d, max_y:%d, min_x:%.2f, 1/m:%.2f<br>", $y, $i, $active_edges[$i]['min_y'], $active_edges[$i]['max_y'], $active_edges[$i]['min_x'], $active_edges[$i]['_1_m'] );
|
||||
printf( '%d - %d: min_y: %d, max_y:%d, min_x:%.2f, 1/m:%.2f<br>', $y, $i, $active_edges[$i]['min_y'], $active_edges[$i]['max_y'], $active_edges[$i]['min_x'], $active_edges[$i]['_1_m'] );
|
||||
}
|
||||
}
|
||||
$last_x = 0;
|
||||
|
@ -1686,11 +1678,11 @@ function getPolyArea( $points ) {
|
|||
$parity = !$parity;
|
||||
$last_x = $x;
|
||||
}
|
||||
if ( $debug ) printf( "%d: Area:%d<br>", $y, $row_area );
|
||||
if ( $debug ) printf( '%d: Area:%d<br>', $y, $row_area );
|
||||
$y++;
|
||||
for ( $i = 0; $i < count($active_edges); $i++ ) {
|
||||
if ( $y >= $active_edges[$i]['max_y'] ) { // Or >= as per sheets
|
||||
if ( $debug ) printf( "Deleting active_edge<br>" );
|
||||
if ( $debug ) printf( 'Deleting active_edge<br>' );
|
||||
array_splice( $active_edges, $i, 1 );
|
||||
$i--;
|
||||
} else {
|
||||
|
@ -1698,7 +1690,7 @@ function getPolyArea( $points ) {
|
|||
}
|
||||
}
|
||||
} while ( count($global_edges) || count($active_edges) );
|
||||
if ( $debug ) printf( "Area:%d<br>", $area );
|
||||
if ( $debug ) printf( 'Area:%d<br>', $area );
|
||||
return( $area );
|
||||
}
|
||||
|
||||
|
@ -1727,7 +1719,7 @@ function mapCoords( $a ) {
|
|||
}
|
||||
|
||||
function pointsToCoords( $points ) {
|
||||
return( join( " ", array_map( "mapCoords", $points ) ) );
|
||||
return( join( ' ', array_map( 'mapCoords', $points ) ) );
|
||||
}
|
||||
|
||||
function coordsToPoints( $coords ) {
|
||||
|
@ -1776,7 +1768,7 @@ function scalePoints( &$points, $scale ) {
|
|||
|
||||
function getLanguages() {
|
||||
$langs = array();
|
||||
foreach ( glob("lang/*_*.php") as $file ) {
|
||||
foreach ( glob('lang/*_*.php') as $file ) {
|
||||
preg_match( '/([^\/]+_.+)\.php/', $file, $matches );
|
||||
$langs[$matches[1]] = $matches[1];
|
||||
}
|
||||
|
@ -1790,7 +1782,7 @@ function trimString( $string, $length ) {
|
|||
function monitorIdsToNames( $ids ) {
|
||||
global $mITN_monitors;
|
||||
if ( !$mITN_monitors ) {
|
||||
$sql = "select Id, Name from Monitors";
|
||||
$sql = 'select Id, Name from Monitors';
|
||||
foreach( dbFetchAll( $sql ) as $monitor ) {
|
||||
$mITN_monitors[$monitor['Id']] = $monitor;
|
||||
}
|
||||
|
@ -1813,16 +1805,16 @@ function initX10Status() {
|
|||
if ( !isset($x10_status) ) {
|
||||
$socket = socket_create( AF_UNIX, SOCK_STREAM, 0 );
|
||||
if ( $socket < 0 ) {
|
||||
Fatal( "socket_create() failed: ".socket_strerror($socket) );
|
||||
Fatal( 'socket_create() failed: '.socket_strerror($socket) );
|
||||
}
|
||||
$sock_file = ZM_PATH_SOCKS.'/zmx10.sock';
|
||||
if ( @socket_connect( $socket, $sock_file ) ) {
|
||||
$command = "status";
|
||||
$command = 'status';
|
||||
if ( !socket_write( $socket, $command ) ) {
|
||||
Fatal( "Can't write to control socket: ".socket_strerror(socket_last_error($socket)) );
|
||||
}
|
||||
socket_shutdown( $socket, 1 );
|
||||
$x10Output = "";
|
||||
$x10Output = '';
|
||||
while ( $x10Response = socket_read( $socket, 256 ) ) {
|
||||
$x10Output .= $x10Response;
|
||||
}
|
||||
|
@ -1848,14 +1840,14 @@ function getDeviceStatusX10( $key ) {
|
|||
initX10Status();
|
||||
|
||||
if ( empty($x10_status[$key]) || !($status = $x10_status[$key]) )
|
||||
$status = "unknown";
|
||||
$status = 'unknown';
|
||||
return( $status );
|
||||
}
|
||||
|
||||
function setDeviceStatusX10( $key, $status ) {
|
||||
$socket = socket_create( AF_UNIX, SOCK_STREAM, 0 );
|
||||
if ( $socket < 0 ) {
|
||||
Fatal( "socket_create() failed: ".socket_strerror($socket) );
|
||||
Fatal( 'socket_create() failed: '.socket_strerror($socket) );
|
||||
}
|
||||
$sock_file = ZM_PATH_SOCKS.'/zmx10.sock';
|
||||
if ( @socket_connect( $socket, $sock_file ) ) {
|
||||
|
@ -1876,7 +1868,7 @@ function setDeviceStatusX10( $key, $status ) {
|
|||
if ( preg_match( '/^'.$key.'\s+(.*)/', $x10Response, $matches ) )
|
||||
$status = $matches[1];
|
||||
else
|
||||
$status = "unknown";
|
||||
$status = 'unknown';
|
||||
return( $status );
|
||||
}
|
||||
|
||||
|
@ -2026,7 +2018,7 @@ function ajaxError( $message, $code=HTTP_STATUS_OK ) {
|
|||
ajaxCleanup();
|
||||
if ( $code == HTTP_STATUS_OK ) {
|
||||
$response = array( 'result'=>'Error', 'message'=>$message );
|
||||
header( "Content-type: text/plain" );
|
||||
header( 'Content-type: text/plain' );
|
||||
exit( jsonEncode( $response ) );
|
||||
}
|
||||
header( "HTTP/1.0 $code $message" );
|
||||
|
@ -2041,7 +2033,7 @@ function ajaxResponse( $result=false ) {
|
|||
$response = array_merge( $response, $result );
|
||||
elseif ( !empty($result) )
|
||||
$response['message'] = $result;
|
||||
header( "Content-type: text/plain" );
|
||||
header( 'Content-type: text/plain' );
|
||||
exit( jsonEncode( $response ) );
|
||||
}
|
||||
|
||||
|
@ -2091,7 +2083,7 @@ function getSkinIncludes( $file, $includeBase=false, $asOverride=false )
|
|||
return( $includeFiles );
|
||||
}
|
||||
|
||||
function requestVar( $name, $default="" ) {
|
||||
function requestVar( $name, $default='' ) {
|
||||
return( isset($_REQUEST[$name])?validHtmlStr($_REQUEST[$name]):$default );
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue