cleanup, whitespace

This commit is contained in:
Isaac Connor 2018-08-31 10:35:23 -04:00
parent 799b34eee8
commit 4b30ea7877
1 changed files with 242 additions and 218 deletions

View File

@ -29,16 +29,16 @@ function do_request($method, $url, $data=array(), $optional_headers = null) {
'method' => $method, 'method' => $method,
'content' => $data 'content' => $data
)); ));
if ($optional_headers !== null) { if ( $optional_headers !== null ) {
$params['http']['header'] = $optional_headers; $params['http']['header'] = $optional_headers;
} }
$ctx = stream_context_create($params); $ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx); $fp = @fopen($url, 'rb', false, $ctx);
if (!$fp) { if ( !$fp ) {
throw new Exception("Problem with $url, $php_errormsg"); throw new Exception("Problem with $url, $php_errormsg");
} }
$response = @stream_get_contents($fp); $response = @stream_get_contents($fp);
if ($response === false) { if ( $response === false ) {
throw new Exception("Problem reading data from $url, $php_errormsg"); throw new Exception("Problem reading data from $url, $php_errormsg");
} }
return $response; return $response;
@ -49,16 +49,16 @@ function do_post_request($url, $data, $optional_headers = null) {
'method' => 'POST', 'method' => 'POST',
'content' => $data 'content' => $data
)); ));
if ($optional_headers !== null) { if ( $optional_headers !== null ) {
$params['http']['header'] = $optional_headers; $params['http']['header'] = $optional_headers;
} }
$ctx = stream_context_create($params); $ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx); $fp = @fopen($url, 'rb', false, $ctx);
if (!$fp) { if ( !$fp ) {
throw new Exception("Problem with $url, $php_errormsg"); throw new Exception("Problem with $url, $php_errormsg");
} }
$response = @stream_get_contents($fp); $response = @stream_get_contents($fp);
if ($response === false) { if ( $response === false ) {
throw new Exception("Problem reading data from $url, $php_errormsg"); throw new Exception("Problem reading data from $url, $php_errormsg");
} }
return $response; return $response;
@ -106,17 +106,17 @@ if ( $action == 'login' && isset($_REQUEST['username']) && ( ZM_AUTH_TYPE == 're
$responseData = json_decode($res,true); $responseData = json_decode($res,true);
// PP - credit: https://github.com/google/recaptcha/blob/master/src/ReCaptcha/Response.php // PP - credit: https://github.com/google/recaptcha/blob/master/src/ReCaptcha/Response.php
// if recaptcha resulted in error, we might have to deny login // if recaptcha resulted in error, we might have to deny login
if (isset($responseData['success']) && $responseData['success'] == false) { if ( isset($responseData['success']) && $responseData['success'] == false ) {
// PP - before we deny auth, let's make sure the error was not 'invalid secret' // PP - before we deny auth, let's make sure the error was not 'invalid secret'
// because that means the user did not configure the secret key correctly // because that means the user did not configure the secret key correctly
// in this case, we prefer to let him login in and display a message to correct // in this case, we prefer to let him login in and display a message to correct
// the key. Unfortunately, there is no way to check for invalid site key in code // the key. Unfortunately, there is no way to check for invalid site key in code
// as it produces the same error as when you don't answer a recaptcha // as it produces the same error as when you don't answer a recaptcha
if (isset($responseData['error-codes']) && is_array($responseData['error-codes'])) { if ( isset($responseData['error-codes']) && is_array($responseData['error-codes']) ) {
if (!in_array('invalid-input-secret',$responseData['error-codes'])) { if ( !in_array('invalid-input-secret',$responseData['error-codes']) ) {
Error('reCaptcha authentication failed'); Error('reCaptcha authentication failed');
userLogout(); userLogout();
$view='login'; $view = 'login';
$refreshParent = true; $refreshParent = true;
return; return;
} else { } else {
@ -140,19 +140,19 @@ if ( $action == 'login' && isset($_REQUEST['username']) && ( ZM_AUTH_TYPE == 're
$view = 'none'; $view = 'none';
} else if ( $action == 'bandwidth' && isset($_REQUEST['newBandwidth']) ) { } else if ( $action == 'bandwidth' && isset($_REQUEST['newBandwidth']) ) {
$_COOKIE['zmBandwidth'] = validStr($_REQUEST['newBandwidth']); $_COOKIE['zmBandwidth'] = validStr($_REQUEST['newBandwidth']);
setcookie( 'zmBandwidth', validStr($_REQUEST['newBandwidth']), time()+3600*24*30*12*10 ); setcookie('zmBandwidth', validStr($_REQUEST['newBandwidth']), time()+3600*24*30*12*10);
$refreshParent = true; $refreshParent = true;
} }
// Event scope actions, view permissions only required // Event scope actions, view permissions only required
if ( canView('Events') ) { if ( canView('Events') ) {
if ( isset( $_REQUEST['object'] ) and ( $_REQUEST['object'] == 'filter' ) ) { if ( isset($_REQUEST['object']) and ( $_REQUEST['object'] == 'filter' ) ) {
if ( $action == 'addterm' ) { if ( $action == 'addterm' ) {
$_REQUEST['filter'] = addFilterTerm( $_REQUEST['filter'], $_REQUEST['line'] ); $_REQUEST['filter'] = addFilterTerm($_REQUEST['filter'], $_REQUEST['line']);
} elseif ( $action == 'delterm' ) { } elseif ( $action == 'delterm' ) {
$_REQUEST['filter'] = delFilterTerm( $_REQUEST['filter'], $_REQUEST['line'] ); $_REQUEST['filter'] = delFilterTerm($_REQUEST['filter'], $_REQUEST['line']);
} else if ( canEdit( 'Events' ) ) { } else if ( canEdit('Events') ) {
if ( $action == 'delete' ) { if ( $action == 'delete' ) {
if ( ! empty($_REQUEST['Id']) ) { if ( ! empty($_REQUEST['Id']) ) {
dbQuery('DELETE FROM Filters WHERE Id=?', array($_REQUEST['Id'])); dbQuery('DELETE FROM Filters WHERE Id=?', array($_REQUEST['Id']));
@ -210,11 +210,13 @@ if ( canView('Events') ) {
dbQuery('UPDATE Events SET Name=? WHERE Id=?', array($_REQUEST['eventName'], $_REQUEST['eid'])); dbQuery('UPDATE Events SET Name=? WHERE Id=?', array($_REQUEST['eventName'], $_REQUEST['eid']));
} else if ( $action == 'eventdetail' ) { } else if ( $action == 'eventdetail' ) {
if ( !empty($_REQUEST['eid']) ) { if ( !empty($_REQUEST['eid']) ) {
dbQuery( 'UPDATE Events SET Cause=?, Notes=? WHERE Id=?', array( $_REQUEST['newEvent']['Cause'], $_REQUEST['newEvent']['Notes'], $_REQUEST['eid'] ) ); dbQuery('UPDATE Events SET Cause=?, Notes=? WHERE Id=?',
array($_REQUEST['newEvent']['Cause'], $_REQUEST['newEvent']['Notes'], $_REQUEST['eid']) );
} else { } else {
$dbConn->beginTransaction(); $dbConn->beginTransaction();
foreach( getAffectedIds('markEid') as $markEid ) { foreach( getAffectedIds('markEid') as $markEid ) {
dbQuery( 'UPDATE Events SET Cause=?, Notes=? WHERE Id=?', array( $_REQUEST['newEvent']['Cause'], $_REQUEST['newEvent']['Notes'], $markEid ) ); dbQuery('UPDATE Events SET Cause=?, Notes=? WHERE Id=?',
array($_REQUEST['newEvent']['Cause'], $_REQUEST['newEvent']['Notes'], $markEid) );
} }
$dbConn->commit(); $dbConn->commit();
} }
@ -226,7 +228,7 @@ if ( canView('Events') ) {
dbQuery('UPDATE Events SET Archived=? WHERE Id=?', array($archiveVal, $_REQUEST['eid'])); dbQuery('UPDATE Events SET Archived=? WHERE Id=?', array($archiveVal, $_REQUEST['eid']));
} else { } else {
$dbConn->beginTransaction(); $dbConn->beginTransaction();
foreach( getAffectedIds( 'markEid' ) as $markEid ) { foreach( getAffectedIds('markEid') as $markEid ) {
dbQuery('UPDATE Events SET Archived=? WHERE Id=?', array($archiveVal, $markEid)); dbQuery('UPDATE Events SET Archived=? WHERE Id=?', array($archiveVal, $markEid));
} }
$dbConn->commit(); $dbConn->commit();
@ -234,8 +236,8 @@ if ( canView('Events') ) {
} }
} elseif ( $action == 'delete' ) { } elseif ( $action == 'delete' ) {
$dbConn->beginTransaction(); $dbConn->beginTransaction();
foreach( getAffectedIds( 'markEid' ) as $markEid ) { foreach( getAffectedIds('markEid') as $markEid ) {
deleteEvent( $markEid ); deleteEvent($markEid);
} }
$dbConn->commit(); $dbConn->commit();
$refreshParent = true; $refreshParent = true;
@ -245,45 +247,47 @@ if ( canView('Events') ) {
} // end canView(Events) } // end canView(Events)
// Monitor control actions, require a monitor id and control view permissions for that monitor // Monitor control actions, require a monitor id and control view permissions for that monitor
if ( !empty($_REQUEST['mid']) && canView( 'Control', $_REQUEST['mid'] ) ) { if ( !empty($_REQUEST['mid']) && canView('Control', $_REQUEST['mid']) ) {
require_once( 'control_functions.php' ); require_once('control_functions.php');
require_once( 'Monitor.php' ); require_once('Monitor.php');
$mid = validInt($_REQUEST['mid']); $mid = validInt($_REQUEST['mid']);
if ( $action == 'control' ) { if ( $action == 'control' ) {
$monitor = new Monitor( $mid ); $monitor = new Monitor($mid);
$ctrlCommand = buildControlCommand( $monitor ); $ctrlCommand = buildControlCommand($monitor);
sendControlCommand( $monitor->Id(), $ctrlCommand ); sendControlCommand($monitor->Id(), $ctrlCommand);
} elseif ( $action == 'settings' ) { } else if ( $action == 'settings' ) {
$args = ' -m ' . escapeshellarg($mid); $args = ' -m ' . escapeshellarg($mid);
$args .= ' -B' . escapeshellarg($_REQUEST['newBrightness']); $args .= ' -B' . escapeshellarg($_REQUEST['newBrightness']);
$args .= ' -C' . escapeshellarg($_REQUEST['newContrast']); $args .= ' -C' . escapeshellarg($_REQUEST['newContrast']);
$args .= ' -H' . escapeshellarg($_REQUEST['newHue']); $args .= ' -H' . escapeshellarg($_REQUEST['newHue']);
$args .= ' -O' . escapeshellarg($_REQUEST['newColour']); $args .= ' -O' . escapeshellarg($_REQUEST['newColour']);
$zmuCommand = getZmuCommand( $args ); $zmuCommand = getZmuCommand($args);
$zmuOutput = exec( $zmuCommand ); $zmuOutput = exec($zmuCommand);
list( $brightness, $contrast, $hue, $colour ) = explode( ' ', $zmuOutput ); list($brightness, $contrast, $hue, $colour) = explode(' ', $zmuOutput);
dbQuery( 'UPDATE Monitors SET Brightness = ?, Contrast = ?, Hue = ?, Colour = ? WHERE Id = ?', array($brightness, $contrast, $hue, $colour, $mid)); dbQuery(
'UPDATE Monitors SET Brightness = ?, Contrast = ?, Hue = ?, Colour = ? WHERE Id = ?',
array($brightness, $contrast, $hue, $colour, $mid));
} }
} }
// Control capability actions, require control edit permissions // Control capability actions, require control edit permissions
if ( canEdit('Control') ) { if ( canEdit('Control') ) {
if ( $action == 'controlcap' ) { if ( $action == 'controlcap' ) {
require_once( 'Control.php' ); require_once('Control.php');
$Control = new Control( !empty($_REQUEST['cid']) ? $_REQUEST['cid'] : null ); $Control = new Control( !empty($_REQUEST['cid']) ? $_REQUEST['cid'] : null );
//$changes = getFormChanges( $control, $_REQUEST['newControl'], $types, $columns ); //$changes = getFormChanges( $control, $_REQUEST['newControl'], $types, $columns );
$Control->save( $_REQUEST['newControl'] ); $Control->save($_REQUEST['newControl']);
$refreshParent = true; $refreshParent = true;
$view = 'none'; $view = 'none';
} elseif ( $action == 'delete' ) { } elseif ( $action == 'delete' ) {
if ( isset($_REQUEST['markCids']) ) { if ( isset($_REQUEST['markCids']) ) {
foreach( $_REQUEST['markCids'] as $markCid ) { foreach( $_REQUEST['markCids'] as $markCid ) {
dbQuery( 'delete from Controls where Id = ?', array($markCid) ); dbQuery('DELETE FROM Controls WHERE Id = ?', array($markCid));
dbQuery( 'update Monitors set Controllable = 0, ControlId = 0 where ControlId = ?', array($markCid) ); dbQuery('UPDATE Monitors SET Controllable = 0, ControlId = 0 WHERE ControlId = ?', array($markCid));
$refreshParent = true; $refreshParent = true;
} }
} }
@ -293,59 +297,59 @@ if ( canEdit('Control') ) {
if ( isset($_REQUEST['object']) and $_REQUEST['object'] == 'Monitor' ) { if ( isset($_REQUEST['object']) and $_REQUEST['object'] == 'Monitor' ) {
if ( $action == 'save' ) { if ( $action == 'save' ) {
foreach ( $_REQUEST['mids'] as $mid ) { foreach ( $_REQUEST['mids'] as $mid ) {
$mid = ValidInt( $mid ); $mid = ValidInt($mid);
if ( ! canEdit('Monitors', $mid ) ) { if ( ! canEdit('Monitors', $mid) ) {
Warning("Cannot edit monitor $mid"); Warning("Cannot edit monitor $mid");
continue; continue;
} }
$Monitor = new Monitor( $mid ); $Monitor = new Monitor($mid);
if ( $Monitor->Type() != 'WebSite' ) { if ( $Monitor->Type() != 'WebSite' ) {
$Monitor->zmaControl('stop'); $Monitor->zmaControl('stop');
$Monitor->zmcControl('stop'); $Monitor->zmcControl('stop');
} }
$Monitor->save( $_REQUEST['newMonitor'] ); $Monitor->save($_REQUEST['newMonitor']);
if ($Monitor->Function() != 'None' && $Monitor->Type() != 'WebSite' ) { if ( $Monitor->Function() != 'None' && $Monitor->Type() != 'WebSite' ) {
$Monitor->zmcControl('start'); $Monitor->zmcControl('start');
if ( $Monitor->Enabled() ) { if ( $Monitor->Enabled() ) {
$Monitor->zmaControl('start'); $Monitor->zmaControl('start');
} }
} }
} // end foreach mid } // end foreach mid
$refreshParent = true; $refreshParent = true;
} // end if action == save } // end if action == save
} // end if object is Monitor } // end if object is Monitor
// Monitor edit actions, require a monitor id and edit permissions for that monitor // Monitor edit actions, require a monitor id and edit permissions for that monitor
if ( !empty($_REQUEST['mid']) && canEdit( 'Monitors', $_REQUEST['mid'] ) ) { if ( !empty($_REQUEST['mid']) && canEdit('Monitors', $_REQUEST['mid']) ) {
$mid = validInt($_REQUEST['mid']); $mid = validInt($_REQUEST['mid']);
if ( $action == 'function' ) { if ( $action == 'function' ) {
$monitor = dbFetchOne( 'SELECT * FROM Monitors WHERE Id=?', NULL, array($mid) ); $monitor = dbFetchOne('SELECT * FROM Monitors WHERE Id=?', NULL, array($mid));
$newFunction = validStr($_REQUEST['newFunction']); $newFunction = validStr($_REQUEST['newFunction']);
# Because we use a checkbox, it won't get passed in the request. So not being in _REQUEST means 0 # Because we use a checkbox, it won't get passed in the request. So not being in _REQUEST means 0
$newEnabled = ( !isset( $_REQUEST['newEnabled'] ) or $_REQUEST['newEnabled'] != '1' ) ? '0' : '1'; $newEnabled = ( !isset($_REQUEST['newEnabled']) or $_REQUEST['newEnabled'] != '1' ) ? '0' : '1';
$oldFunction = $monitor['Function']; $oldFunction = $monitor['Function'];
$oldEnabled = $monitor['Enabled']; $oldEnabled = $monitor['Enabled'];
if ( $newFunction != $oldFunction || $newEnabled != $oldEnabled ) { if ( $newFunction != $oldFunction || $newEnabled != $oldEnabled ) {
dbQuery( 'UPDATE Monitors SET Function=?, Enabled=? WHERE Id=?', array( $newFunction, $newEnabled, $mid ) ); dbQuery('UPDATE Monitors SET Function=?, Enabled=? WHERE Id=?',
array($newFunction, $newEnabled, $mid));
$monitor['Function'] = $newFunction; $monitor['Function'] = $newFunction;
$monitor['Enabled'] = $newEnabled; $monitor['Enabled'] = $newEnabled;
if ( daemonCheck() && $monitor['Type'] != 'WebSite' ) { if ( daemonCheck() && ($monitor['Type'] != 'WebSite') ) {
$restart = ($oldFunction == 'None') || ($newFunction == 'None') || ($newEnabled != $oldEnabled); $restart = ($oldFunction == 'None') || ($newFunction == 'None') || ($newEnabled != $oldEnabled);
zmaControl( $monitor, 'stop' ); zmaControl($monitor, 'stop');
zmcControl( $monitor, $restart?'restart':'' ); zmcControl($monitor, $restart?'restart':'');
zmaControl( $monitor, 'start' ); zmaControl($monitor, 'start');
} }
$refreshParent = true; $refreshParent = true;
} }
} elseif ( $action == 'zone' && isset( $_REQUEST['zid'] ) ) { } else if ( $action == 'zone' && isset($_REQUEST['zid']) ) {
$zid = validInt($_REQUEST['zid']); $zid = validInt($_REQUEST['zid']);
$monitor = dbFetchOne( 'SELECT * FROM Monitors WHERE Id=?', NULL, array($mid) ); $monitor = dbFetchOne('SELECT * FROM Monitors WHERE Id=?', NULL, array($mid));
if ( !empty($zid) ) { if ( !empty($zid) ) {
$zone = dbFetchOne( 'SELECT * FROM Zones WHERE MonitorId=? AND Id=?', NULL, array( $mid, $zid ) ); $zone = dbFetchOne('SELECT * FROM Zones WHERE MonitorId=? AND Id=?', NULL, array($mid, $zid));
} else { } else {
$zone = array(); $zone = array();
} }
@ -365,74 +369,74 @@ if ( !empty($_REQUEST['mid']) && canEdit( 'Monitors', $_REQUEST['mid'] ) ) {
unset( $_REQUEST['newZone']['Points'] ); unset( $_REQUEST['newZone']['Points'] );
$types = array(); $types = array();
$changes = getFormChanges( $zone, $_REQUEST['newZone'], $types ); $changes = getFormChanges($zone, $_REQUEST['newZone'], $types);
if ( count( $changes ) ) { if ( count($changes) ) {
if ( $zid > 0 ) { if ( $zid > 0 ) {
dbQuery( 'UPDATE Zones SET '.implode( ', ', $changes ).' WHERE MonitorId=? AND Id=?', array( $mid, $zid) ); dbQuery('UPDATE Zones SET '.implode(', ', $changes).' WHERE MonitorId=? AND Id=?', array($mid, $zid));
} else { } else {
dbQuery( 'INSERT INTO Zones SET MonitorId=?, '.implode( ', ', $changes ), array( $mid ) ); dbQuery('INSERT INTO Zones SET MonitorId=?, '.implode(', ', $changes), array($mid));
} }
if ( daemonCheck() && $monitor['Type'] != 'WebSite' ) { if ( daemonCheck() && ($monitor['Type'] != 'WebSite') ) {
if ( $_REQUEST['newZone']['Type'] == 'Privacy' ) { if ( $_REQUEST['newZone']['Type'] == 'Privacy' ) {
zmaControl( $monitor, 'stop' ); zmaControl($monitor, 'stop');
zmcControl( $monitor, 'restart' ); zmcControl($monitor, 'restart');
zmaControl( $monitor, 'start' ); zmaControl($monitor, 'start');
} else { } else {
zmaControl( $mid, 'restart' ); zmaControl($monitor, 'restart');
} }
} }
if ( $_REQUEST['newZone']['Type'] == 'Privacy' && $monitor['Controllable'] ) { if ( ($_REQUEST['newZone']['Type'] == 'Privacy') && $monitor['Controllable'] ) {
require_once( 'control_functions.php' ); require_once('control_functions.php');
sendControlCommand( $mid, 'quit' ); sendControlCommand($mid, 'quit');
} }
$refreshParent = true; $refreshParent = true;
} }
$view = 'none'; $view = 'none';
} elseif ( $action == 'plugin' && isset($_REQUEST['pl'])) { } elseif ( $action == 'plugin' && isset($_REQUEST['pl']) ) {
$sql='SELECT * FROM PluginsConfig WHERE MonitorId=? AND ZoneId=? AND pluginName=?'; $sql = 'SELECT * FROM PluginsConfig WHERE MonitorId=? AND ZoneId=? AND pluginName=?';
$pconfs=dbFetchAll( $sql, NULL, array( $mid, $_REQUEST['zid'], $_REQUEST['pl'] ) ); $pconfs=dbFetchAll($sql, NULL, array($mid, $_REQUEST['zid'], $_REQUEST['pl']));
$changes=0; $changes = 0;
foreach( $pconfs as $pconf ) { foreach ( $pconfs as $pconf ) {
$value=$_REQUEST['pluginOpt'][$pconf['Name']]; $value = $_REQUEST['pluginOpt'][$pconf['Name']];
if(array_key_exists($pconf['Name'], $_REQUEST['pluginOpt']) && ($pconf['Value']!=$value)) { if ( array_key_exists($pconf['Name'], $_REQUEST['pluginOpt']) && ($pconf['Value'] != $value) ) {
dbQuery('UPDATE PluginsConfig SET Value=? WHERE id=?', array( $value, $pconf['Id'] ) ); dbQuery('UPDATE PluginsConfig SET Value=? WHERE id=?', array($value, $pconf['Id']));
$changes++; $changes++;
} }
} }
if($changes>0) { if ( $changes > 0 ) {
if ( daemonCheck() && $monitor['Type'] != 'WebSite' ) { if ( daemonCheck() && ($monitor['Type'] != 'WebSite') ) {
zmaControl( $mid, 'restart' ); zmaControl($mid, 'restart');
} }
$refreshParent = true; $refreshParent = true;
} }
$view = 'none'; $view = 'none';
} elseif ( $action == 'sequence' && isset($_REQUEST['smid']) ) { } elseif ( ($action == 'sequence') && isset($_REQUEST['smid']) ) {
$smid = validInt($_REQUEST['smid']); $smid = validInt($_REQUEST['smid']);
$monitor = dbFetchOne( 'select * from Monitors where Id = ?', NULL, array($mid) ); $monitor = dbFetchOne('SELECT * FROM Monitors WHERE Id = ?', NULL, array($mid));
$smonitor = dbFetchOne( 'select * from Monitors where Id = ?', NULL, array($smid) ); $smonitor = dbFetchOne('SELECT * FROM Monitors WHERE Id = ?', NULL, array($smid));
dbQuery( 'update Monitors set Sequence=? where Id=?', array( $smonitor['Sequence'], $monitor['Id'] ) ); dbQuery('UPDATE Monitors SET Sequence=? WHERE Id=?', array($smonitor['Sequence'], $monitor['Id']));
dbQuery( 'update Monitors set Sequence=? WHERE Id=?', array( $monitor['Sequence'], $smonitor['Id'] ) ); dbQuery('UPDATE Monitors SET Sequence=? WHERE Id=?', array($monitor['Sequence'], $smonitor['Id']));
$refreshParent = true; $refreshParent = true;
fixSequences(); fixSequences();
} elseif ( $action == 'delete' ) { } elseif ( $action == 'delete' ) {
if ( isset($_REQUEST['markZids']) ) { if ( isset($_REQUEST['markZids']) ) {
$deletedZid = 0; $deletedZid = 0;
foreach( $_REQUEST['markZids'] as $markZid ) { foreach ( $_REQUEST['markZids'] as $markZid ) {
$zone = dbFetchOne( 'select * from Zones where Id=?', NULL, array($markZid) ); $zone = dbFetchOne('SELECT * FROM Zones WHERE Id=?', NULL, array($markZid));
dbQuery( 'delete from Zones WHERE MonitorId=? AND Id=?', array( $mid, $markZid) ); dbQuery('DELETE FROM Zones WHERE MonitorId=? AND Id=?', array($mid, $markZid));
$deletedZid = 1; $deletedZid = 1;
} }
if ( $deletedZid ) { if ( $deletedZid ) {
if ( daemonCheck() && $monitor['Type'] != 'WebSite' ) { if ( daemonCheck() && $monitor['Type'] != 'WebSite' ) {
if ( $zone['Type'] == 'Privacy' ) { if ( $zone['Type'] == 'Privacy' ) {
zmaControl( $mid, 'stop' ); zmaControl($mid, 'stop');
zmcControl( $mid, 'restart' ); zmcControl($mid, 'restart');
zmaControl( $mid, 'start' ); zmaControl($mid, 'start');
} else { } else {
zmaControl( $mid, 'restart' ); zmaControl($mid, 'restart');
} }
} // end if daemonCheck() } // end if daemonCheck()
$refreshParent = true; $refreshParent = true;
@ -442,15 +446,15 @@ if ( !empty($_REQUEST['mid']) && canEdit( 'Monitors', $_REQUEST['mid'] ) ) {
} // end if $mid and canEdit($mid) } // end if $mid and canEdit($mid)
// Monitor edit actions, monitor id derived, require edit permissions for that monitor // Monitor edit actions, monitor id derived, require edit permissions for that monitor
if ( canEdit( 'Monitors' ) ) { if ( canEdit('Monitors') ) {
if ( $action == 'monitor' ) { if ( $action == 'monitor' ) {
$mid = 0; $mid = 0;
if ( !empty($_REQUEST['mid']) ) { if ( !empty($_REQUEST['mid']) ) {
$mid = validInt($_REQUEST['mid']); $mid = validInt($_REQUEST['mid']);
$monitor = dbFetchOne( 'SELECT * FROM Monitors WHERE Id=?', NULL, array($mid) ); $monitor = dbFetchOne('SELECT * FROM Monitors WHERE Id=?', NULL, array($mid));
if ( ZM_OPT_X10 ) { if ( ZM_OPT_X10 ) {
$x10Monitor = dbFetchOne( 'SELECT * FROM TriggersX10 WHERE MonitorId=?', NULL, array($mid) ); $x10Monitor = dbFetchOne('SELECT * FROM TriggersX10 WHERE MonitorId=?', NULL, array($mid));
if ( !$x10Monitor ) if ( !$x10Monitor )
$x10Monitor = array(); $x10Monitor = array();
} }
@ -476,18 +480,19 @@ if ( canEdit( 'Monitors' ) ) {
); );
if ( $_REQUEST['newMonitor']['ServerId'] == 'auto' ) { if ( $_REQUEST['newMonitor']['ServerId'] == 'auto' ) {
$_REQUEST['newMonitor']['ServerId'] = dbFetchOne('SELECT Id FROM Servers WHERE Status=\'Running\' ORDER BY FreeMem DESC, CpuLoad ASC LIMIT 1', 'Id'); $_REQUEST['newMonitor']['ServerId'] = dbFetchOne(
Logger::Debug("Auto selecting server: Got " . $_REQUEST['newMonitor']['ServerId'] ); 'SELECT Id FROM Servers WHERE Status=\'Running\' ORDER BY FreeMem DESC, CpuLoad ASC LIMIT 1', 'Id');
Logger::Debug('Auto selecting server: Got ' . $_REQUEST['newMonitor']['ServerId'] );
if ( ( ! $_REQUEST['newMonitor'] ) and defined('ZM_SERVER_ID') ) { if ( ( ! $_REQUEST['newMonitor'] ) and defined('ZM_SERVER_ID') ) {
$_REQUEST['newMonitor']['ServerId'] = ZM_SERVER_ID; $_REQUEST['newMonitor']['ServerId'] = ZM_SERVER_ID;
Logger::Debug("Auto selecting server to " . ZM_SERVER_ID); Logger::Debug('Auto selecting server to ' . ZM_SERVER_ID);
} }
} }
$columns = getTableColumns('Monitors'); $columns = getTableColumns('Monitors');
$changes = getFormChanges($monitor, $_REQUEST['newMonitor'], $types, $columns); $changes = getFormChanges($monitor, $_REQUEST['newMonitor'], $types, $columns);
if ( count( $changes ) ) { if ( count($changes) ) {
if ( $mid ) { if ( $mid ) {
# If we change anything that changes the shared mem size, zma can complain. So let's stop first. # If we change anything that changes the shared mem size, zma can complain. So let's stop first.
@ -495,19 +500,19 @@ if ( canEdit( 'Monitors' ) ) {
zmaControl($monitor, 'stop'); zmaControl($monitor, 'stop');
zmcControl($monitor, 'stop'); zmcControl($monitor, 'stop');
} }
dbQuery( 'UPDATE Monitors SET '.implode( ', ', $changes ).' WHERE Id=?', array($mid) ); dbQuery('UPDATE Monitors SET '.implode(', ', $changes).' WHERE Id=?', array($mid));
// Groups will be added below // Groups will be added below
if ( isset($changes['Name']) or isset($changes['StorageId']) ) { if ( isset($changes['Name']) or isset($changes['StorageId']) ) {
$OldStorage = new Storage( $monitor['StorageId'] ); $OldStorage = new Storage($monitor['StorageId']);
$saferOldName = basename( $monitor['Name'] ); $saferOldName = basename($monitor['Name']);
if ( file_exists( $OldStorage->Path().'/'.$saferOldName ) ) if ( file_exists($OldStorage->Path().'/'.$saferOldName) )
unlink( $OldStorage->Path().'/'.$saferOldName ); unlink($OldStorage->Path().'/'.$saferOldName);
$NewStorage = new Storage( $_REQUEST['newMonitor']['StorageId'] ); $NewStorage = new Storage($_REQUEST['newMonitor']['StorageId']);
if ( ! file_exists( $NewStorage->Path().'/'.$mid ) ) if ( ! file_exists($NewStorage->Path().'/'.$mid) )
mkdir( $NewStorage->Path().'/'.$mid, 0755 ); mkdir($NewStorage->Path().'/'.$mid, 0755);
$saferNewName = basename( $_REQUEST['newMonitor']['Name'] ); $saferNewName = basename($_REQUEST['newMonitor']['Name']);
symlink( $mid, $NewStorage->Path().'/'.$saferNewName ); symlink($mid, $NewStorage->Path().'/'.$saferNewName);
} }
if ( isset($changes['Width']) || isset($changes['Height']) ) { if ( isset($changes['Width']) || isset($changes['Height']) ) {
$newW = $_REQUEST['newMonitor']['Width']; $newW = $_REQUEST['newMonitor']['Width'];
@ -517,15 +522,15 @@ if ( canEdit( 'Monitors' ) ) {
$oldH = $monitor['Height']; $oldH = $monitor['Height'];
$oldA = $oldW * $oldH; $oldA = $oldW * $oldH;
$zones = dbFetchAll( 'SELECT * FROM Zones WHERE MonitorId=?', NULL, array($mid) ); $zones = dbFetchAll('SELECT * FROM Zones WHERE MonitorId=?', NULL, array($mid));
foreach ( $zones as $zone ) { foreach ( $zones as $zone ) {
$newZone = $zone; $newZone = $zone;
$points = coordsToPoints( $zone['Coords'] ); $points = coordsToPoints($zone['Coords']);
for ( $i = 0; $i < count($points); $i++ ) { for ( $i = 0; $i < count($points); $i++ ) {
$points[$i]['x'] = intval(($points[$i]['x']*($newW-1))/($oldW-1)); $points[$i]['x'] = intval(($points[$i]['x']*($newW-1))/($oldW-1));
$points[$i]['y'] = intval(($points[$i]['y']*($newH-1))/($oldH-1)); $points[$i]['y'] = intval(($points[$i]['y']*($newH-1))/($oldH-1));
} }
$newZone['Coords'] = pointsToCoords( $points ); $newZone['Coords'] = pointsToCoords($points);
$newZone['Area'] = intval(round(($zone['Area']*$newA)/$oldA)); $newZone['Area'] = intval(round(($zone['Area']*$newA)/$oldA));
$newZone['MinAlarmPixels'] = intval(round(($newZone['MinAlarmPixels']*$newA)/$oldA)); $newZone['MinAlarmPixels'] = intval(round(($newZone['MinAlarmPixels']*$newA)/$oldA));
$newZone['MaxAlarmPixels'] = intval(round(($newZone['MaxAlarmPixels']*$newA)/$oldA)); $newZone['MaxAlarmPixels'] = intval(round(($newZone['MaxAlarmPixels']*$newA)/$oldA));
@ -534,41 +539,43 @@ if ( canEdit( 'Monitors' ) ) {
$newZone['MinBlobPixels'] = intval(round(($newZone['MinBlobPixels']*$newA)/$oldA)); $newZone['MinBlobPixels'] = intval(round(($newZone['MinBlobPixels']*$newA)/$oldA));
$newZone['MaxBlobPixels'] = intval(round(($newZone['MaxBlobPixels']*$newA)/$oldA)); $newZone['MaxBlobPixels'] = intval(round(($newZone['MaxBlobPixels']*$newA)/$oldA));
$changes = getFormChanges( $zone, $newZone, $types ); $changes = getFormChanges($zone, $newZone, $types);
if ( count( $changes ) ) { if ( count($changes) ) {
dbQuery( 'update Zones set '.implode( ', ', $changes ).' WHERE MonitorId=? AND Id=?', array( $mid, $zone['Id'] ) ); dbQuery('UPDATE Zones SET '.implode(', ', $changes).' WHERE MonitorId=? AND Id=?',
array($mid, $zone['Id']));
} }
} } // end foreach zone
} } // end if width and height
$restart = true; $restart = true;
} else if ( ! $user['MonitorIds'] ) { // Can only create new monitors if we are not restricted to specific monitors } else if ( ! $user['MonitorIds'] ) {
// Can only create new monitors if we are not restricted to specific monitors
# FIXME This is actually a race condition. Should lock the table. # FIXME This is actually a race condition. Should lock the table.
$maxSeq = dbFetchOne('SELECT MAX(Sequence) AS MaxSequence FROM Monitors', 'MaxSequence'); $maxSeq = dbFetchOne('SELECT MAX(Sequence) AS MaxSequence FROM Monitors', 'MaxSequence');
$changes[] = 'Sequence = '.($maxSeq+1); $changes[] = 'Sequence = '.($maxSeq+1);
if ( dbQuery( 'INSERT INTO Monitors SET '.implode( ', ', $changes ) ) ) { if ( dbQuery('INSERT INTO Monitors SET '.implode(', ', $changes)) ) {
$mid = dbInsertId(); $mid = dbInsertId();
$zoneArea = $_REQUEST['newMonitor']['Width'] * $_REQUEST['newMonitor']['Height']; $zoneArea = $_REQUEST['newMonitor']['Width'] * $_REQUEST['newMonitor']['Height'];
dbQuery( "insert into Zones set MonitorId = ?, Name = 'All', Type = 'Active', Units = 'Percent', NumCoords = 4, Coords = ?, Area=?, AlarmRGB = 0xff0000, CheckMethod = 'Blobs', MinPixelThreshold = 25, MinAlarmPixels=?, MaxAlarmPixels=?, FilterX = 3, FilterY = 3, MinFilterPixels=?, MaxFilterPixels=?, MinBlobPixels=?, MinBlobs = 1", array( $mid, sprintf( "%d,%d %d,%d %d,%d %d,%d", 0, 0, $_REQUEST['newMonitor']['Width']-1, 0, $_REQUEST['newMonitor']['Width']-1, $_REQUEST['newMonitor']['Height']-1, 0, $_REQUEST['newMonitor']['Height']-1 ), $zoneArea, intval(($zoneArea*3)/100), intval(($zoneArea*75)/100), intval(($zoneArea*3)/100), intval(($zoneArea*75)/100), intval(($zoneArea*2)/100) ) ); dbQuery("INSERT INTO Zones SET MonitorId = ?, Name = 'All', Type = 'Active', Units = 'Percent', NumCoords = 4, Coords = ?, Area=?, AlarmRGB = 0xff0000, CheckMethod = 'Blobs', MinPixelThreshold = 25, MinAlarmPixels=?, MaxAlarmPixels=?, FilterX = 3, FilterY = 3, MinFilterPixels=?, MaxFilterPixels=?, MinBlobPixels=?, MinBlobs = 1", array( $mid, sprintf( "%d,%d %d,%d %d,%d %d,%d", 0, 0, $_REQUEST['newMonitor']['Width']-1, 0, $_REQUEST['newMonitor']['Width']-1, $_REQUEST['newMonitor']['Height']-1, 0, $_REQUEST['newMonitor']['Height']-1 ), $zoneArea, intval(($zoneArea*3)/100), intval(($zoneArea*75)/100), intval(($zoneArea*3)/100), intval(($zoneArea*75)/100), intval(($zoneArea*2)/100) ) );
//$view = 'none'; //$view = 'none';
$Storage = new Storage( $_REQUEST['newMonitor']['StorageId'] ); $Storage = new Storage($_REQUEST['newMonitor']['StorageId']);
mkdir( $Storage->Path().'/'.$mid, 0755 ); mkdir($Storage->Path().'/'.$mid, 0755);
$saferName = basename($_REQUEST['newMonitor']['Name']); $saferName = basename($_REQUEST['newMonitor']['Name']);
symlink( $mid, $Storage->Path().'/'.$saferName ); symlink($mid, $Storage->Path().'/'.$saferName);
} else { } else {
Error("Error saving new Monitor."); Error('Error saving new Monitor.');
return; return;
} }
} else { } else {
Error("Users with Monitors restrictions cannot create new monitors."); Error('Users with Monitors restrictions cannot create new monitors.');
return; return;
} }
$restart = true; $restart = true;
} else { } else {
Logger::Debug("No action due to no changes to Monitor"); Logger::Debug('No action due to no changes to Monitor');
} # end if count(changes) } # end if count(changes)
if ( if (
@ -589,21 +596,21 @@ if ( canEdit( 'Monitors' ) ) {
} // end if there has been a change of groups } // end if there has been a change of groups
if ( ZM_OPT_X10 ) { if ( ZM_OPT_X10 ) {
$x10Changes = getFormChanges( $x10Monitor, $_REQUEST['newX10Monitor'] ); $x10Changes = getFormChanges($x10Monitor, $_REQUEST['newX10Monitor']);
if ( count( $x10Changes ) ) { if ( count($x10Changes) ) {
if ( $x10Monitor && isset($_REQUEST['newX10Monitor']) ) { if ( $x10Monitor && isset($_REQUEST['newX10Monitor']) ) {
dbQuery( 'update TriggersX10 set '.implode( ', ', $x10Changes ).' where MonitorId=?', array($mid) ); dbQuery('UPDATE TriggersX10 SET '.implode(', ', $x10Changes).' WHERE MonitorId=?', array($mid));
} elseif ( !$user['MonitorIds'] ) { } elseif ( !$user['MonitorIds'] ) {
if ( !$x10Monitor ) { if ( !$x10Monitor ) {
dbQuery( 'insert into TriggersX10 set MonitorId = ?, '.implode( ', ', $x10Changes ), array( $mid ) ); dbQuery('INSERT INTO TriggersX10 SET MonitorId = ?, '.implode(', ', $x10Changes), array($mid));
} else { } else {
dbQuery( 'delete from TriggersX10 where MonitorId = ?', array($mid) ); dbQuery('DELETE FROM TriggersX10 WHERE MonitorId = ?', array($mid));
} }
} }
$restart = true; $restart = true;
} } # end if has x10Changes
} } # end if ZM_OPT_X10
if ( $restart ) { if ( $restart ) {
@ -616,8 +623,8 @@ if ( canEdit( 'Monitors' ) ) {
} }
if ( $new_monitor->Controllable() ) { if ( $new_monitor->Controllable() ) {
require_once( 'control_functions.php' ); require_once('control_functions.php');
sendControlCommand( $mid, 'quit' ); sendControlCommand($mid, 'quit');
} }
// really should thump zmwatch and maybe zmtrigger too. // really should thump zmwatch and maybe zmtrigger too.
//daemonControl( 'restart', 'zmwatch.pl' ); //daemonControl( 'restart', 'zmwatch.pl' );
@ -626,11 +633,11 @@ if ( canEdit( 'Monitors' ) ) {
$view = 'none'; $view = 'none';
} elseif ( $action == 'delete' ) { } elseif ( $action == 'delete' ) {
if ( isset($_REQUEST['markMids']) && !$user['MonitorIds'] ) { if ( isset($_REQUEST['markMids']) && !$user['MonitorIds'] ) {
require_once( 'Monitor.php' ); require_once('Monitor.php');
foreach( $_REQUEST['markMids'] as $markMid ) { foreach ( $_REQUEST['markMids'] as $markMid ) {
if ( canEdit('Monitors', $markMid) ) { if ( canEdit('Monitors', $markMid) ) {
// This could be faster as a select all // This could be faster as a select all
if ( $monitor = dbFetchOne( 'SELECT * FROM Monitors WHERE Id = ?', NULL, array($markMid) ) ) { if ( $monitor = dbFetchOne('SELECT * FROM Monitors WHERE Id = ?', NULL, array($markMid)) ) {
$Monitor = new Monitor($monitor); $Monitor = new Monitor($monitor);
$Monitor->delete(); $Monitor->delete();
} // end if monitor found in db } // end if monitor found in db
@ -641,15 +648,17 @@ if ( canEdit( 'Monitors' ) ) {
} }
// Device view actions // Device view actions
if ( canEdit( 'Devices' ) ) { if ( canEdit('Devices') ) {
if ( $action == 'device' ) { if ( $action == 'device' ) {
if ( !empty($_REQUEST['command']) ) { if ( !empty($_REQUEST['command']) ) {
setDeviceStatusX10( $_REQUEST['key'], $_REQUEST['command'] ); setDeviceStatusX10($_REQUEST['key'], $_REQUEST['command']);
} elseif ( isset( $_REQUEST['newDevice'] ) ) { } else if ( isset($_REQUEST['newDevice']) ) {
if ( isset($_REQUEST['did']) ) { if ( isset($_REQUEST['did']) ) {
dbQuery( 'update Devices set Name=?, KeyString=? where Id=?', array($_REQUEST['newDevice']['Name'], $_REQUEST['newDevice']['KeyString'], $_REQUEST['did']) ); dbQuery('UPDATE Devices SET Name=?, KeyString=? WHERE Id=?',
array($_REQUEST['newDevice']['Name'], $_REQUEST['newDevice']['KeyString'], $_REQUEST['did']) );
} else { } else {
dbQuery( 'insert into Devices set Name=?, KeyString=?', array( $_REQUEST['newDevice']['Name'], $_REQUEST['newDevice']['KeyString'] ) ); dbQuery('INSERT INTO Devices SET Name=?, KeyString=?',
array($_REQUEST['newDevice']['Name'], $_REQUEST['newDevice']['KeyString']) );
} }
$refreshParent = true; $refreshParent = true;
$view = 'none'; $view = 'none';
@ -657,7 +666,7 @@ if ( canEdit( 'Devices' ) ) {
} elseif ( $action == 'delete' ) { } elseif ( $action == 'delete' ) {
if ( isset($_REQUEST['markDids']) ) { if ( isset($_REQUEST['markDids']) ) {
foreach( $_REQUEST['markDids'] as $markDid ) { foreach( $_REQUEST['markDids'] as $markDid ) {
dbQuery( 'delete from Devices where Id=?', array($markDid) ); dbQuery('DELETE FROM Devices WHERE Id=?', array($markDid));
$refreshParent = true; $refreshParent = true;
} }
} }
@ -665,47 +674,59 @@ if ( canEdit( 'Devices' ) ) {
} // end if canedit devices } // end if canedit devices
// Group view actions // Group view actions
if ( canView( 'Groups' ) && $action == 'setgroup' ) { if ( canView('Groups') && ($action == 'setgroup') ) {
if ( !empty($_REQUEST['gid']) ) { if ( !empty($_REQUEST['gid']) ) {
setcookie( 'zmGroup', validInt($_REQUEST['gid']), time()+3600*24*30*12*10 ); setcookie('zmGroup', validInt($_REQUEST['gid']), time()+3600*24*30*12*10);
} else { } else {
setcookie( 'zmGroup', '', time()-3600*24*2 ); setcookie('zmGroup', '', time()-3600*24*2);
} }
$refreshParent = true; $refreshParent = true;
} }
// Group edit actions // Group edit actions
# Should probably verify that each monitor id is a valid monitor, that we have access to. However at the moment, you have to have System permissions to do this # Should probably verify that each monitor id is a valid monitor, that we have access to.
if ( canEdit( 'Groups' ) ) { # However at the moment, you have to have System permissions to do this
if ( canEdit('Groups') ) {
if ( $action == 'group' ) { if ( $action == 'group' ) {
$monitors = empty( $_POST['newGroup']['MonitorIds'] ) ? '' : implode(',', $_POST['newGroup']['MonitorIds']); $monitors = empty($_POST['newGroup']['MonitorIds']) ? '' : implode(',', $_POST['newGroup']['MonitorIds']);
$group_id = null; $group_id = null;
if ( !empty($_POST['gid']) ) { if ( !empty($_POST['gid']) ) {
$group_id = $_POST['gid']; $group_id = $_POST['gid'];
dbQuery( 'UPDATE Groups SET Name=?, ParentId=? WHERE Id=?', dbQuery(
array($_POST['newGroup']['Name'], ( $_POST['newGroup']['ParentId'] == '' ? null : $_POST['newGroup']['ParentId'] ), $group_id) ); 'UPDATE Groups SET Name=?, ParentId=? WHERE Id=?',
dbQuery( 'DELETE FROM Groups_Monitors WHERE GroupId=?', array($group_id) ); array(
$_POST['newGroup']['Name'],
( $_POST['newGroup']['ParentId'] == '' ? null : $_POST['newGroup']['ParentId'] ),
$group_id,
)
);
dbQuery('DELETE FROM Groups_Monitors WHERE GroupId=?', array($group_id));
} else { } else {
dbQuery( 'INSERT INTO Groups (Name,ParentId) VALUES (?,?)', dbQuery(
array( $_POST['newGroup']['Name'], ( $_POST['newGroup']['ParentId'] == '' ? null : $_POST['newGroup']['ParentId'] ) ) ); 'INSERT INTO Groups (Name,ParentId) VALUES (?,?)',
$group_id=dbInsertId(); array(
$_POST['newGroup']['Name'],
( $_POST['newGroup']['ParentId'] == '' ? null : $_POST['newGroup']['ParentId'] ),
)
);
$group_id = dbInsertId();
} }
if ( $group_id ) { if ( $group_id ) {
foreach ( $_POST['newGroup']['MonitorIds'] as $mid ) { foreach ( $_POST['newGroup']['MonitorIds'] as $mid ) {
dbQuery( 'INSERT INTO Groups_Monitors (GroupId,MonitorId) VALUES (?,?)', array($group_id, $mid) ); dbQuery('INSERT INTO Groups_Monitors (GroupId,MonitorId) VALUES (?,?)', array($group_id, $mid));
} }
} }
$view = 'none'; $view = 'none';
$refreshParent = true; $refreshParent = true;
} else if ( $action == 'delete' ) { } else if ( $action == 'delete' ) {
if ( !empty($_REQUEST['gid']) ) { if ( !empty($_REQUEST['gid']) ) {
if ( is_array( $_REQUEST['gid'] ) ) { if ( is_array($_REQUEST['gid']) ) {
foreach( $_REQUEST['gid'] as $gid ) { foreach ( $_REQUEST['gid'] as $gid ) {
$Group = new Group( $gid ); $Group = new Group($gid);
$Group->delete(); $Group->delete();
} }
} else { } else {
$Group = new Group( $_REQUEST['gid'] ); $Group = new Group($_REQUEST['gid'] );
$Group->delete(); $Group->delete();
} }
} }
@ -714,23 +735,23 @@ if ( canEdit( 'Groups' ) ) {
} // end if can edit groups } // end if can edit groups
// System edit actions // System edit actions
if ( canEdit( 'System' ) ) { if ( canEdit('System') ) {
if ( isset( $_REQUEST['object'] ) ) { if ( isset($_REQUEST['object']) ) {
if ( $_REQUEST['object'] == 'MontageLayout' ) { if ( $_REQUEST['object'] == 'MontageLayout' ) {
require_once('MontageLayout.php'); require_once('MontageLayout.php');
if ( $action == 'Save' ) { if ( $action == 'Save' ) {
$Layout = null; $Layout = null;
if ( $_REQUEST['Name'] != '' ) { if ( $_REQUEST['Name'] != '' ) {
$Layout = new MontageLayout(); $Layout = new MontageLayout();
$Layout->Name( $_REQUEST['Name'] ); $Layout->Name($_REQUEST['Name']);
} else { } else {
$Layout = new MontageLayout( $_REQUEST['zmMontageLayout'] ); $Layout = new MontageLayout($_REQUEST['zmMontageLayout']);
} }
$Layout->Positions( $_REQUEST['Positions'] ); $Layout->Positions($_REQUEST['Positions']);
$Layout->save(); $Layout->save();
session_start(); session_start();
$_SESSION['zmMontageLayout'] = $Layout->Id(); $_SESSION['zmMontageLayout'] = $Layout->Id();
setcookie('zmMontageLayout', $Layout->Id(), 1 ); setcookie('zmMontageLayout', $Layout->Id(), 1);
session_write_close(); session_write_close();
$redirect = ZM_BASE_URL.$_SERVER['PHP_SELF'].'?view=montagereview'; $redirect = ZM_BASE_URL.$_SERVER['PHP_SELF'].'?view=montagereview';
} // end if save } // end if save
@ -738,19 +759,24 @@ if ( canEdit( 'System' ) ) {
} else if ( $_REQUEST['object'] == 'server' ) { } else if ( $_REQUEST['object'] == 'server' ) {
if ( $action == 'Save' ) { if ( $action == 'Save' ) {
if ( !empty($_REQUEST['id']) ) if ( !empty($_REQUEST['id']) ) {
$dbServer = dbFetchOne( 'SELECT * FROM Servers WHERE Id=?', NULL, array($_REQUEST['id']) ); $dbServer = dbFetchOne(
else 'SELECT * FROM Servers WHERE Id=?',
NULL,
array($_REQUEST['id']) );
} else {
$dbServer = array(); $dbServer = array();
}
$types = array(); $types = array();
$changes = getFormChanges( $dbServer, $_REQUEST['newServer'], $types ); $changes = getFormChanges($dbServer, $_REQUEST['newServer'], $types);
if ( count( $changes ) ) { if ( count($changes) ) {
if ( !empty($_REQUEST['id']) ) { if ( !empty($_REQUEST['id']) ) {
dbQuery( 'UPDATE Servers SET '.implode( ', ', $changes ).' WHERE Id = ?', array($_REQUEST['id']) ); dbQuery('UPDATE Servers SET '.implode(', ', $changes).' WHERE Id = ?',
array($_REQUEST['id']) );
} else { } else {
dbQuery( 'INSERT INTO Servers set '.implode( ', ', $changes ) ); dbQuery('INSERT INTO Servers SET '.implode(', ', $changes));
} }
$refreshParent = true; $refreshParent = true;
} }
@ -758,27 +784,27 @@ if ( canEdit( 'System' ) ) {
} else if ( $action == 'delete' ) { } else if ( $action == 'delete' ) {
if ( !empty($_REQUEST['markIds']) ) { if ( !empty($_REQUEST['markIds']) ) {
foreach( $_REQUEST['markIds'] as $Id ) foreach( $_REQUEST['markIds'] as $Id )
dbQuery( 'DELETE FROM Servers WHERE Id=?', array($Id) ); dbQuery('DELETE FROM Servers WHERE Id=?', array($Id));
} }
$refreshParent = true; $refreshParent = true;
} else { } else {
Error( "Unknown action $action in saving Server" ); Error("Unknown action $action in saving Server");
} }
} else if ( $_REQUEST['object'] == 'storage' ) { } else if ( $_REQUEST['object'] == 'storage' ) {
if ( $action == 'Save' ) { if ( $action == 'Save' ) {
if ( !empty($_REQUEST['id']) ) if ( !empty($_REQUEST['id']) )
$dbStorage = dbFetchOne( 'SELECT * FROM Storage WHERE Id=?', NULL, array($_REQUEST['id']) ); $dbStorage = dbFetchOne('SELECT * FROM Storage WHERE Id=?', NULL, array($_REQUEST['id']));
else else
$dbStorage = array(); $dbStorage = array();
$types = array(); $types = array();
$changes = getFormChanges( $dbStorage, $_REQUEST['newStorage'], $types ); $changes = getFormChanges($dbStorage, $_REQUEST['newStorage'], $types);
if ( count( $changes ) ) { if ( count($changes) ) {
if ( !empty($_REQUEST['id']) ) { if ( !empty($_REQUEST['id']) ) {
dbQuery( 'UPDATE Storage SET '.implode( ', ', $changes ).' WHERE Id = ?', array($_REQUEST['id']) ); dbQuery('UPDATE Storage SET '.implode(', ', $changes).' WHERE Id = ?', array($_REQUEST['id']));
} else { } else {
dbQuery( 'INSERT INTO Storage set '.implode( ', ', $changes ) ); dbQuery('INSERT INTO Storage set '.implode(', ', $changes));
} }
$refreshParent = true; $refreshParent = true;
} }
@ -786,11 +812,11 @@ if ( canEdit( 'System' ) ) {
} else if ( $action == 'delete' ) { } else if ( $action == 'delete' ) {
if ( !empty($_REQUEST['markIds']) ) { if ( !empty($_REQUEST['markIds']) ) {
foreach( $_REQUEST['markIds'] as $Id ) foreach( $_REQUEST['markIds'] as $Id )
dbQuery( 'DELETE FROM Storage WHERE Id=?', array($Id) ); dbQuery('DELETE FROM Storage WHERE Id=?', array($Id));
} }
$refreshParent = true; $refreshParent = true;
} else { } else {
Error( "Unknown action $action in saving Storage" ); Error("Unknown action $action in saving Storage");
} }
} # end if isset($_REQUEST['object'] ) } # end if isset($_REQUEST['object'] )
@ -804,7 +830,7 @@ if ( canEdit( 'System' ) ) {
} }
case 'ignore' : case 'ignore' :
{ {
dbQuery( "update Config set Value = '".ZM_DYN_LAST_VERSION."' where Name = 'ZM_DYN_CURR_VERSION'" ); dbQuery("UPDATE Config SET Value = '".ZM_DYN_LAST_VERSION."' WHERE Name = 'ZM_DYN_CURR_VERSION'");
break; break;
} }
case 'hour' : case 'hour' :
@ -819,12 +845,12 @@ if ( canEdit( 'System' ) ) {
} elseif ( $option == 'week' ) { } elseif ( $option == 'week' ) {
$nextReminder += 7*24*60*60; $nextReminder += 7*24*60*60;
} }
dbQuery( "update Config set Value = '".$nextReminder."' where Name = 'ZM_DYN_NEXT_REMINDER'" ); dbQuery("UPDATE Config SET Value = '".$nextReminder."' WHERE Name = 'ZM_DYN_NEXT_REMINDER'");
break; break;
} }
case 'never' : case 'never' :
{ {
dbQuery( "update Config set Value = '0' where Name = 'ZM_CHECK_FOR_UPDATES'" ); dbQuery("UPDATE Config SET Value = '0' WHERE Name = 'ZM_CHECK_FOR_UPDATES'");
break; break;
} }
} }
@ -852,53 +878,51 @@ if ( canEdit( 'System' ) ) {
} elseif ( $option == 'month' ) { } elseif ( $option == 'month' ) {
$nextReminder += 30*24*60*60; $nextReminder += 30*24*60*60;
} }
dbQuery( "update Config set Value = '".$nextReminder."' where Name = 'ZM_DYN_DONATE_REMINDER_TIME'" ); dbQuery("UPDATE Config SET Value = '".$nextReminder."' WHERE Name = 'ZM_DYN_DONATE_REMINDER_TIME'");
break; break;
} }
case 'never' : case 'never' :
case 'already' : case 'already' :
{ {
dbQuery( "update Config set Value = '0' where Name = 'ZM_DYN_SHOW_DONATE_REMINDER'" ); dbQuery("UPDATE Config SET Value = '0' WHERE Name = 'ZM_DYN_SHOW_DONATE_REMINDER'");
break; break;
} }
} // end switch option } // end switch option
} }
if ( $action == 'privacy' && isset($_REQUEST['option'] ) ) { if ( ($action == 'privacy') && isset($_REQUEST['option']) ) {
$option = $_REQUEST['option']; switch( $_REQUEST['option'] ) {
switch( $option ) {
case 'decline' : case 'decline' :
{ {
dbQuery( "update Config set Value = '0' where Name = 'ZM_SHOW_PRIVACY'" ); dbQuery("UPDATE Config SET Value = '0' WHERE Name = 'ZM_SHOW_PRIVACY'");
dbQuery( "update Config set Value = '0' where Name = 'ZM_TELEMETRY_DATA'" ); dbQuery("UPDATE Config SET Value = '0' WHERE Name = 'ZM_TELEMETRY_DATA'");
$view = 'console';
$redirect = ZM_BASE_URL.$_SERVER['PHP_SELF'].'?view=console'; $redirect = ZM_BASE_URL.$_SERVER['PHP_SELF'].'?view=console';
break; break;
} }
case 'accept' : case 'accept' :
{ {
dbQuery( "update Config set Value = '0' where Name = 'ZM_SHOW_PRIVACY'" ); dbQuery("UPDATE Config SET Value = '0' WHERE Name = 'ZM_SHOW_PRIVACY'");
dbQuery( "update Config set Value = '1' where Name = 'ZM_TELEMETRY_DATA'" ); dbQuery("UPDATE Config SET Value = '1' WHERE Name = 'ZM_TELEMETRY_DATA'");
$view = 'console';
$redirect = ZM_BASE_URL.$_SERVER['PHP_SELF'].'?view=console'; $redirect = ZM_BASE_URL.$_SERVER['PHP_SELF'].'?view=console';
break; break;
} }
default: # Enable the privacy statement if we somehow submit something other than accept or decline default: # Enable the privacy statement if we somehow submit something other than accept or decline
dbQuery( "update Config set Value = '1' where Name = 'ZM_SHOW_PRIVACY'" ); dbQuery("UPDATE Config SET Value = '1' WHERE Name = 'ZM_SHOW_PRIVACY'");
} // end switch option } // end switch option
return;
} }
if ( $action == 'options' && isset($_REQUEST['tab']) ) { if ( $action == 'options' && isset($_REQUEST['tab']) ) {
$configCat = $configCats[$_REQUEST['tab']]; $configCat = $configCats[$_REQUEST['tab']];
$changed = false; $changed = false;
foreach ( $configCat as $name=>$value ) { foreach ( $configCat as $name=>$value ) {
unset( $newValue ); unset($newValue);
if ( $value['Type'] == 'boolean' && empty($_REQUEST['newConfig'][$name]) ) { if ( $value['Type'] == 'boolean' && empty($_REQUEST['newConfig'][$name]) ) {
$newValue = 0; $newValue = 0;
} else if ( isset($_REQUEST['newConfig'][$name]) ) { } else if ( isset($_REQUEST['newConfig'][$name]) ) {
$newValue = preg_replace( "/\r\n/", "\n", stripslashes( $_REQUEST['newConfig'][$name] ) ); $newValue = preg_replace("/\r\n/", "\n", stripslashes($_REQUEST['newConfig'][$name]));
} }
if ( isset($newValue) && ($newValue != $value['Value']) ) { if ( isset($newValue) && ($newValue != $value['Value']) ) {
dbQuery( 'UPDATE Config SET Value=? WHERE Name=?', array( $newValue, $name ) ); dbQuery('UPDATE Config SET Value=? WHERE Name=?', array($newValue, $name));
$changed = true; $changed = true;
} }
} }
@ -924,29 +948,30 @@ if ( canEdit( 'System' ) ) {
} }
$redirect = ZM_BASE_URL.$_SERVER['PHP_SELF'].'?view=options&tab='.$_REQUEST['tab']; $redirect = ZM_BASE_URL.$_SERVER['PHP_SELF'].'?view=options&tab='.$_REQUEST['tab'];
} }
loadConfig( false ); loadConfig(false);
return;
} elseif ( $action == 'user' ) { } elseif ( $action == 'user' ) {
if ( !empty($_REQUEST['uid']) ) if ( !empty($_REQUEST['uid']) )
$dbUser = dbFetchOne( "SELECT * FROM Users WHERE Id=?", NULL, array($_REQUEST['uid']) ); $dbUser = dbFetchOne('SELECT * FROM Users WHERE Id=?', NULL, array($_REQUEST['uid']));
else else
$dbUser = array(); $dbUser = array();
$types = array(); $types = array();
$changes = getFormChanges( $dbUser, $_REQUEST['newUser'], $types ); $changes = getFormChanges($dbUser, $_REQUEST['newUser'], $types);
if ( $_REQUEST['newUser']['Password'] ) if ( $_REQUEST['newUser']['Password'] )
$changes['Password'] = 'Password = password('.dbEscape($_REQUEST['newUser']['Password']).')'; $changes['Password'] = 'Password = password('.dbEscape($_REQUEST['newUser']['Password']).')';
else else
unset( $changes['Password'] ); unset($changes['Password']);
if ( count( $changes ) ) { if ( count($changes) ) {
if ( !empty($_REQUEST['uid']) ) { if ( !empty($_REQUEST['uid']) ) {
dbQuery( 'update Users set '.implode( ', ', $changes ).' where Id = ?', array($_REQUEST['uid']) ); dbQuery('UPDATE Users SET '.implode(', ', $changes).' WHERE Id = ?', array($_REQUEST['uid']));
# If we are updating the logged in user, then update our session user data. # If we are updating the logged in user, then update our session user data.
if ( $user and ( $dbUser['Username'] == $user['Username'] ) ) if ( $user and ( $dbUser['Username'] == $user['Username'] ) )
userLogin( $dbUser['Username'], $dbUser['Password'] ); userLogin($dbUser['Username'], $dbUser['Password']);
} else { } else {
dbQuery( 'insert into Users set '.implode( ', ', $changes ) ); dbQuery('INSERT INTO Users SET '.implode(', ', $changes));
} }
$refreshParent = true; $refreshParent = true;
} }
@ -954,29 +979,28 @@ if ( canEdit( 'System' ) ) {
} elseif ( $action == 'state' ) { } elseif ( $action == 'state' ) {
if ( !empty($_REQUEST['runState']) ) { if ( !empty($_REQUEST['runState']) ) {
//if ( $cookies ) session_write_close(); //if ( $cookies ) session_write_close();
packageControl( $_REQUEST['runState'] ); packageControl($_REQUEST['runState']);
$refreshParent = true; $refreshParent = true;
} }
} elseif ( $action == 'save' ) { } elseif ( $action == 'save' ) {
if ( !empty($_REQUEST['runState']) || !empty($_REQUEST['newState']) ) { if ( !empty($_REQUEST['runState']) || !empty($_REQUEST['newState']) ) {
$sql = 'SELECT Id,Function,Enabled FROM Monitors ORDER BY Id'; $sql = 'SELECT Id,Function,Enabled FROM Monitors ORDER BY Id';
$definitions = array(); $definitions = array();
foreach( dbFetchAll( $sql ) as $monitor ) foreach( dbFetchAll($sql) as $monitor ) {
{
$definitions[] = $monitor['Id'].':'.$monitor['Function'].':'.$monitor['Enabled']; $definitions[] = $monitor['Id'].':'.$monitor['Function'].':'.$monitor['Enabled'];
} }
$definition = join( ',', $definitions ); $definition = join(',', $definitions);
if ( $_REQUEST['newState'] ) if ( $_REQUEST['newState'] )
$_REQUEST['runState'] = $_REQUEST['newState']; $_REQUEST['runState'] = $_REQUEST['newState'];
dbQuery( 'replace into States set Name=?, Definition=?', array( $_REQUEST['runState'],$definition) ); dbQuery('REPLACE INTO States SET Name=?, Definition=?', array($_REQUEST['runState'],$definition));
} }
} elseif ( $action == 'delete' ) { } elseif ( $action == 'delete' ) {
if ( isset($_REQUEST['runState']) ) if ( isset($_REQUEST['runState']) )
dbQuery( 'delete from States where Name=?', array($_REQUEST['runState']) ); dbQuery('DELETE FROM States WHERE Name=?', array($_REQUEST['runState']));
if ( isset($_REQUEST['markUids']) ) { if ( isset($_REQUEST['markUids']) ) {
foreach( $_REQUEST['markUids'] as $markUid ) foreach( $_REQUEST['markUids'] as $markUid )
dbQuery( 'delete from Users where Id = ?', array($markUid) ); dbQuery('DELETE FROM Users WHERE Id = ?', array($markUid));
if ( $markUid == $user['Id'] ) if ( $markUid == $user['Id'] )
userLogout(); userLogout();
} }
@ -985,17 +1009,17 @@ if ( canEdit( 'System' ) ) {
if ( ZM_USER_SELF_EDIT && $action == 'user' ) { if ( ZM_USER_SELF_EDIT && $action == 'user' ) {
$uid = $user['Id']; $uid = $user['Id'];
$dbUser = dbFetchOne( 'SELECT Id, Password, Language FROM Users WHERE Id = ?', NULL, array($uid) ); $dbUser = dbFetchOne('SELECT Id, Password, Language FROM Users WHERE Id = ?', NULL, array($uid));
$types = array(); $types = array();
$changes = getFormChanges( $dbUser, $_REQUEST['newUser'], $types ); $changes = getFormChanges($dbUser, $_REQUEST['newUser'], $types);
if ( !empty($_REQUEST['newUser']['Password']) ) if ( !empty($_REQUEST['newUser']['Password']) )
$changes['Password'] = 'Password = password('.dbEscape($_REQUEST['newUser']['Password']).')'; $changes['Password'] = 'Password = password('.dbEscape($_REQUEST['newUser']['Password']).')';
else else
unset( $changes['Password'] ); unset($changes['Password']);
if ( count( $changes ) ) { if ( count($changes) ) {
dbQuery( 'update Users set '.implode( ', ', $changes ).' where Id=?', array($uid) ); dbQuery('UPDATE Users SET '.implode(', ', $changes).' WHERE Id=?', array($uid));
$refreshParent = true; $refreshParent = true;
} }
$view = 'none'; $view = 'none';
@ -1004,8 +1028,8 @@ if ( canEdit( 'System' ) ) {
if ( $action == 'reset' ) { if ( $action == 'reset' ) {
session_start(); session_start();
$_SESSION['zmEventResetTime'] = strftime( STRF_FMT_DATETIME_DB ); $_SESSION['zmEventResetTime'] = strftime(STRF_FMT_DATETIME_DB);
setcookie( 'zmEventResetTime', $_SESSION['zmEventResetTime'], time()+3600*24*30*12*10 ); setcookie('zmEventResetTime', $_SESSION['zmEventResetTime'], time()+3600*24*30*12*10);
session_write_close(); session_write_close();
} }