Merge branch 'master' into fix_token_auth_sessions
This commit is contained in:
commit
0ec6e8d635
|
@ -562,8 +562,8 @@ sub CopyTo {
|
|||
return 'Old Storage path changed, Event has moved somewhere else.';
|
||||
}
|
||||
|
||||
$$self{Storage} = $NewStorage;
|
||||
( $NewPath ) = ( $self->Path(undef) =~ /^(.*)$/ ); # De-taint
|
||||
$NewPath .= $self->Relative_Path();
|
||||
$NewPath = ( $NewPath =~ /^(.*)$/ ); # De-taint
|
||||
if ( $NewPath eq $OldPath ) {
|
||||
$ZoneMinder::Database::dbh->commit();
|
||||
return "New path and old path are the same! $NewPath";
|
||||
|
@ -685,7 +685,7 @@ sub MoveTo {
|
|||
|
||||
# Succeeded in copying all files, so we may now update the Event.
|
||||
$$self{StorageId} = $$NewStorage{Id};
|
||||
$$self{Storage} = $NewStorage;
|
||||
$self->Storage($NewStorage);
|
||||
$error .= $self->save();
|
||||
if ( $error ) {
|
||||
$ZoneMinder::Database::dbh->commit();
|
||||
|
|
|
@ -68,7 +68,7 @@ void zmLoadConfig() {
|
|||
if ( ! staticConfig.SERVER_NAME.empty() ) {
|
||||
|
||||
Debug( 1, "Fetching ZM_SERVER_ID For Name = %s", staticConfig.SERVER_NAME.c_str() );
|
||||
std::string sql = stringtf("SELECT Id FROM Servers WHERE Name='%s'", staticConfig.SERVER_NAME.c_str() );
|
||||
std::string sql = stringtf("SELECT `Id` FROM `Servers` WHERE `Name`='%s'", staticConfig.SERVER_NAME.c_str() );
|
||||
zmDbRow dbrow;
|
||||
if ( dbrow.fetch( sql.c_str() ) ) {
|
||||
staticConfig.SERVER_ID = atoi(dbrow[0]);
|
||||
|
@ -79,7 +79,7 @@ void zmLoadConfig() {
|
|||
} // end if has SERVER_NAME
|
||||
} else if ( staticConfig.SERVER_NAME.empty() ) {
|
||||
Debug( 1, "Fetching ZM_SERVER_NAME For Id = %d", staticConfig.SERVER_ID );
|
||||
std::string sql = stringtf("SELECT Name FROM Servers WHERE Id='%d'", staticConfig.SERVER_ID );
|
||||
std::string sql = stringtf("SELECT `Name` FROM `Servers` WHERE `Id`='%d'", staticConfig.SERVER_ID );
|
||||
|
||||
zmDbRow dbrow;
|
||||
if ( dbrow.fetch( sql.c_str() ) ) {
|
||||
|
|
|
@ -44,9 +44,9 @@
|
|||
bool EventStream::loadInitialEventData(int monitor_id, time_t event_time) {
|
||||
static char sql[ZM_SQL_SML_BUFSIZ];
|
||||
|
||||
snprintf(sql, sizeof(sql), "SELECT Id FROM Events WHERE "
|
||||
"MonitorId = %d AND unix_timestamp(EndTime) > %ld "
|
||||
"ORDER BY Id ASC LIMIT 1", monitor_id, event_time);
|
||||
snprintf(sql, sizeof(sql), "SELECT `Id` FROM `Events` WHERE "
|
||||
"`MonitorId` = %d AND unix_timestamp(`EndTime`) > %ld "
|
||||
"ORDER BY `Id` ASC LIMIT 1", monitor_id, event_time);
|
||||
|
||||
if ( mysql_query(&dbconn, sql) ) {
|
||||
Error("Can't run query: %s", mysql_error(&dbconn));
|
||||
|
@ -115,9 +115,9 @@ bool EventStream::loadEventData(uint64_t event_id) {
|
|||
static char sql[ZM_SQL_MED_BUFSIZ];
|
||||
|
||||
snprintf(sql, sizeof(sql),
|
||||
"SELECT MonitorId, StorageId, Frames, unix_timestamp( StartTime ) AS StartTimestamp, "
|
||||
"(SELECT max(Delta)-min(Delta) FROM Frames WHERE EventId=Events.Id) AS Duration, "
|
||||
"DefaultVideo, Scheme, SaveJPEGs FROM Events WHERE Id = %" PRIu64, event_id);
|
||||
"SELECT `MonitorId`, `StorageId`, `Frames`, unix_timestamp( `StartTime` ) AS StartTimestamp, "
|
||||
"(SELECT max(`Delta`)-min(`Delta`) FROM `Frames` WHERE `EventId`=`Events.Id`) AS Duration, "
|
||||
"`DefaultVideo`, `Scheme`, `SaveJPEGs` FROM `Events` WHERE `Id` = %" PRIu64, event_id);
|
||||
|
||||
if ( mysql_query(&dbconn, sql) ) {
|
||||
Error("Can't run query: %s", mysql_error(&dbconn));
|
||||
|
@ -210,8 +210,8 @@ bool EventStream::loadEventData(uint64_t event_id) {
|
|||
Debug(3, "fps set by frame_count(%d)/duration(%f)",
|
||||
event_data->frame_count, event_data->duration);
|
||||
|
||||
snprintf(sql, sizeof(sql), "SELECT FrameId, unix_timestamp(`TimeStamp`), Delta "
|
||||
"FROM Frames WHERE EventId = %" PRIu64 " ORDER BY FrameId ASC", event_id);
|
||||
snprintf(sql, sizeof(sql), "SELECT `FrameId`, unix_timestamp(`TimeStamp`), `Delta` "
|
||||
"FROM `Frames` WHERE `EventId` = %" PRIu64 " ORDER BY `FrameId` ASC", event_id);
|
||||
if ( mysql_query(&dbconn, sql) ) {
|
||||
Error("Can't run query: %s", mysql_error(&dbconn));
|
||||
exit(mysql_errno(&dbconn));
|
||||
|
@ -542,11 +542,11 @@ void EventStream::checkEventLoaded() {
|
|||
|
||||
if ( curr_frame_id <= 0 ) {
|
||||
snprintf(sql, sizeof(sql),
|
||||
"SELECT Id FROM Events WHERE MonitorId = %ld AND Id < %" PRIu64 " ORDER BY Id DESC LIMIT 1",
|
||||
"SELECT `Id` FROM `Events` WHERE `MonitorId` = %ld AND `Id` < %" PRIu64 " ORDER BY `Id` DESC LIMIT 1",
|
||||
event_data->monitor_id, event_data->event_id);
|
||||
} else if ( (unsigned int)curr_frame_id > event_data->frame_count ) {
|
||||
snprintf(sql, sizeof(sql),
|
||||
"SELECT Id FROM Events WHERE MonitorId = %ld AND Id > %" PRIu64 " ORDER BY Id ASC LIMIT 1",
|
||||
"SELECT `Id` FROM `Events` WHERE `MonitorId` = %ld AND `Id` > %" PRIu64 " ORDER BY `Id` ASC LIMIT 1",
|
||||
event_data->monitor_id, event_data->event_id);
|
||||
} else {
|
||||
// No event change required
|
||||
|
|
|
@ -46,7 +46,7 @@ Group::Group(unsigned int p_id) {
|
|||
|
||||
if ( p_id ) {
|
||||
char sql[ZM_SQL_SML_BUFSIZ];
|
||||
snprintf(sql, sizeof(sql), "SELECT Id, ParentId, Name FROM Group WHERE Id=%d", p_id);
|
||||
snprintf(sql, sizeof(sql), "SELECT `Id`, `ParentId`, `Name` FROM `Group` WHERE `Id`=%d", p_id);
|
||||
Debug(2,"Loading Group for %d using %s", p_id, sql);
|
||||
zmDbRow dbrow;
|
||||
if ( !dbrow.fetch(sql) ) {
|
||||
|
|
|
@ -68,19 +68,19 @@
|
|||
// This is the official SQL (and ordering of the fields) to load a Monitor.
|
||||
// It will be used whereever a Monitor dbrow is needed. WHERE conditions can be appended
|
||||
std::string load_monitor_sql =
|
||||
"SELECT Id, Name, ServerId, StorageId, Type, Function+0, Enabled, LinkedMonitors, "
|
||||
"AnalysisFPSLimit, AnalysisUpdateDelay, MaxFPS, AlarmMaxFPS,"
|
||||
"Device, Channel, Format, V4LMultiBuffer, V4LCapturesPerFrame, " // V4L Settings
|
||||
"Protocol, Method, Options, User, Pass, Host, Port, Path, Width, Height, Colours, Palette, Orientation+0, Deinterlacing, "
|
||||
"DecoderHWAccelName, DecoderHWAccelDevice, RTSPDescribe, "
|
||||
"SaveJPEGs, VideoWriter, EncoderParameters, "
|
||||
"SELECT `Id`, `Name`, `ServerId`, `StorageId`, `Type`, `Function`+0, `Enabled`, `LinkedMonitors`, "
|
||||
"`AnalysisFPSLimit`, `AnalysisUpdateDelay`, `MaxFPS`, `AlarmMaxFPS`,"
|
||||
"`Device`, `Channel`, `Format`, `V4LMultiBuffer`, `V4LCapturesPerFrame`, " // V4L Settings
|
||||
"`Protocol`, `Method`, `Options`, `User`, `Pass`, `Host`, `Port`, `Path`, `Width`, `Height`, `Colours`, `Palette`, `Orientation`+0, `Deinterlacing`, "
|
||||
"`DecoderHWAccelName`, `DecoderHWAccelDevice`, `RTSPDescribe`, "
|
||||
"`SaveJPEGs`, `VideoWriter`, `EncoderParameters`, "
|
||||
//" OutputCodec, Encoder, OutputContainer, "
|
||||
"RecordAudio, "
|
||||
"Brightness, Contrast, Hue, Colour, "
|
||||
"EventPrefix, LabelFormat, LabelX, LabelY, LabelSize,"
|
||||
"ImageBufferCount, WarmupCount, PreEventCount, PostEventCount, StreamReplayBuffer, AlarmFrameCount, "
|
||||
"SectionLength, MinSectionLength, FrameSkip, MotionFrameSkip, "
|
||||
"FPSReportInterval, RefBlendPerc, AlarmRefBlendPerc, TrackMotion, Exif, SignalCheckPoints, SignalCheckColour FROM Monitors";
|
||||
"`RecordAudio`, "
|
||||
"`Brightness`, `Contrast`, `Hue`, `Colour`, "
|
||||
"`EventPrefix`, `LabelFormat`, `LabelX`, `LabelY`, `LabelSize`,"
|
||||
"`ImageBufferCount`, `WarmupCount`, `PreEventCount`, `PostEventCount`, `StreamReplayBuffer`, `AlarmFrameCount`, "
|
||||
"`SectionLength`, `MinSectionLength`, `FrameSkip`, `MotionFrameSkip`, "
|
||||
"`FPSReportInterval`, `RefBlendPerc`, `AlarmRefBlendPerc`, `TrackMotion`, `Exif`, `SignalCheckPoints`, `SignalCheckColour` FROM `Monitors`";
|
||||
|
||||
std::string CameraType_Strings[] = {
|
||||
"Local",
|
||||
|
@ -1136,7 +1136,7 @@ void Monitor::DumpZoneImage(const char *zone_string) {
|
|||
} else {
|
||||
Debug(3, "Trying to load from event");
|
||||
// Grab the most revent event image
|
||||
std::string sql = stringtf("SELECT MAX(Id) FROM Events WHERE MonitorId=%d AND Frames > 0", id);
|
||||
std::string sql = stringtf("SELECT MAX(`Id`) FROM `Events` WHERE `MonitorId`=%d AND `Frames` > 0", id);
|
||||
zmDbRow eventid_row;
|
||||
if ( eventid_row.fetch(sql.c_str()) ) {
|
||||
uint64_t event_id = atoll(eventid_row[0]);
|
||||
|
@ -1803,12 +1803,12 @@ void Monitor::Reload() {
|
|||
static char sql[ZM_SQL_MED_BUFSIZ];
|
||||
// This seems to have fallen out of date.
|
||||
snprintf(sql, sizeof(sql),
|
||||
"SELECT Function+0, Enabled, LinkedMonitors, EventPrefix, LabelFormat, "
|
||||
"LabelX, LabelY, LabelSize, WarmupCount, PreEventCount, PostEventCount, "
|
||||
"AlarmFrameCount, SectionLength, MinSectionLength, FrameSkip, "
|
||||
"MotionFrameSkip, AnalysisFPSLimit, AnalysisUpdateDelay, MaxFPS, AlarmMaxFPS, "
|
||||
"FPSReportInterval, RefBlendPerc, AlarmRefBlendPerc, TrackMotion, "
|
||||
"SignalCheckColour FROM Monitors WHERE Id = '%d'", id);
|
||||
"SELECT `Function`+0, `Enabled`, `LinkedMonitors`, `EventPrefix`, `LabelFormat`, "
|
||||
"`LabelX`, `LabelY`, `LabelSize`, `WarmupCount`, `PreEventCount`, `PostEventCount`, "
|
||||
"`AlarmFrameCount`, `SectionLength`, `MinSectionLength`, `FrameSkip`, "
|
||||
"`MotionFrameSkip`, `AnalysisFPSLimit`, `AnalysisUpdateDelay`, `MaxFPS`, `AlarmMaxFPS`, "
|
||||
"`FPSReportInterval`, `RefBlendPerc`, `AlarmRefBlendPerc`, `TrackMotion`, "
|
||||
"`SignalCheckColour` FROM `Monitors` WHERE `Id` = '%d'", id);
|
||||
|
||||
zmDbRow *row = zmDbFetchOne(sql);
|
||||
if ( !row ) {
|
||||
|
@ -2865,8 +2865,8 @@ std::vector<Group *> Monitor::Groups() {
|
|||
// At the moment, only load groups once.
|
||||
if ( !groups.size() ) {
|
||||
std::string sql = stringtf(
|
||||
"SELECT Id,ParentId,Name FROM Groups WHERE Groups.Id IN "
|
||||
"(SELECT GroupId FROM Groups_Monitors WHERE MonitorId=%d)",id);
|
||||
"SELECT `Id`, `ParentId`, `Name` FROM `Groups` WHERE `Groups.Id` IN "
|
||||
"(SELECT `GroupId` FROM `Groups_Monitors` WHERE `MonitorId`=%d)",id);
|
||||
MYSQL_RES *result = zmDbFetch(sql.c_str());
|
||||
if ( !result ) {
|
||||
Error("Can't load groups: %s", mysql_error(&dbconn));
|
||||
|
|
|
@ -62,7 +62,7 @@ Storage::Storage( unsigned int p_id ) {
|
|||
|
||||
if ( p_id ) {
|
||||
char sql[ZM_SQL_SML_BUFSIZ];
|
||||
snprintf(sql, sizeof(sql), "SELECT Id, Name, Path, Type, Scheme FROM Storage WHERE Id=%d", p_id);
|
||||
snprintf(sql, sizeof(sql), "SELECT `Id`, `Name`, `Path`, `Type`, `Scheme` FROM `Storage` WHERE `Id`=%d", p_id);
|
||||
Debug(2,"Loading Storage for %d using %s", p_id, sql );
|
||||
zmDbRow dbrow;
|
||||
if ( !dbrow.fetch(sql) ) {
|
||||
|
|
|
@ -99,8 +99,8 @@ User *zmLoadUser( const char *username, const char *password ) {
|
|||
|
||||
|
||||
snprintf(sql, sizeof(sql),
|
||||
"SELECT Id, Username, Password, Enabled, Stream+0, Events+0, Control+0, Monitors+0, System+0, MonitorIds"
|
||||
" FROM Users where Username = '%s' and Enabled = 1", safer_username );
|
||||
"SELECT `Id`, `Username`, `Password`, `Enabled`, `Stream`+0, `Events`+0, `Control`+0, `Monitors`+0, `System`+0, `MonitorIds`"
|
||||
" FROM `Users` WHERE `Username` = '%s' AND `Enabled` = 1", safer_username );
|
||||
|
||||
|
||||
if ( mysql_query(&dbconn, sql) ) {
|
||||
|
@ -162,8 +162,8 @@ User *zmLoadTokenUser (std::string jwt_token_str, bool use_remote_addr ) {
|
|||
if (username != "") {
|
||||
char sql[ZM_SQL_MED_BUFSIZ] = "";
|
||||
snprintf(sql, sizeof(sql),
|
||||
"SELECT Id, Username, Password, Enabled, Stream+0, Events+0, Control+0, Monitors+0, System+0, MonitorIds, TokenMinExpiry"
|
||||
" FROM Users WHERE Username = '%s' and Enabled = 1", username.c_str() );
|
||||
"SELECT `Id`, `Username`, `Password`, `Enabled`, `Stream`+0, `Events`+0, `Control`+0, `Monitors`+0, `System`+0, `MonitorIds`, `TokenMinExpiry`"
|
||||
" FROM `Users` WHERE `Username` = '%s' AND `Enabled` = 1", username.c_str() );
|
||||
|
||||
if ( mysql_query(&dbconn, sql) ) {
|
||||
Error("Can't run query: %s", mysql_error(&dbconn));
|
||||
|
@ -228,7 +228,7 @@ User *zmLoadAuthUser( const char *auth, bool use_remote_addr ) {
|
|||
|
||||
Debug( 1, "Attempting to authenticate user from auth string '%s'", auth );
|
||||
char sql[ZM_SQL_SML_BUFSIZ] = "";
|
||||
snprintf( sql, sizeof(sql), "SELECT Id, Username, Password, Enabled, Stream+0, Events+0, Control+0, Monitors+0, System+0, MonitorIds FROM Users WHERE Enabled = 1" );
|
||||
snprintf( sql, sizeof(sql), "SELECT `Id`, `Username`, `Password`, `Enabled`, `Stream`+0, `Events`+0, `Control`+0, `Monitors`+0, `System`+0, `MonitorIds` FROM `Users` WHERE `Enabled` = 1" );
|
||||
|
||||
if ( mysql_query( &dbconn, sql ) ) {
|
||||
Error( "Can't run query: %s", mysql_error( &dbconn ) );
|
||||
|
|
|
@ -60,7 +60,8 @@ if ( sem_acquire($semaphore,1) !== false ) {
|
|||
// Pi can take up to 3 seconds for zms to start up.
|
||||
$max_socket_tries = 1000;
|
||||
// FIXME This should not exceed web_ajax_timeout
|
||||
while ( !file_exists($remSockFile) && $max_socket_tries-- ) { //sometimes we are too fast for our own good, if it hasn't been setup yet give it a second.
|
||||
while ( !file_exists($remSockFile) && $max_socket_tries-- ) {
|
||||
//sometimes we are too fast for our own good, if it hasn't been setup yet give it a second.
|
||||
// WHY? We will just send another one...
|
||||
// ANSWER: Because otherwise we get a log of errors logged
|
||||
|
||||
|
@ -157,7 +158,7 @@ if ( sem_acquire($semaphore,1) !== false ) {
|
|||
}
|
||||
sem_release($semaphore);
|
||||
} else {
|
||||
ZM\Logger::Debug("Couldn't get semaphore");
|
||||
ZM\Logger::Debug('Couldn\'t get semaphore');
|
||||
ajaxResponse(array());
|
||||
}
|
||||
|
||||
|
|
|
@ -93,7 +93,7 @@ function dbLog( $sql, $update=false ) {
|
|||
global $dbLogLevel;
|
||||
$noExecute = $update && ($dbLogLevel >= DB_LOG_DEBUG);
|
||||
if ( $dbLogLevel > DB_LOG_OFF )
|
||||
ZM\Logger::Debug( "SQL-LOG: $sql".($noExecute?" (not executed)":"") );
|
||||
ZM\Logger::Debug( "SQL-LOG: $sql".($noExecute?' (not executed)':'') );
|
||||
return( $noExecute );
|
||||
}
|
||||
|
||||
|
@ -112,14 +112,14 @@ function dbEscape( $string ) {
|
|||
global $dbConn;
|
||||
if ( version_compare(phpversion(), '4.3.0', '<'))
|
||||
if ( get_magic_quotes_gpc() )
|
||||
return( $dbConn->quote( stripslashes( $string ) ) );
|
||||
return $dbConn->quote(stripslashes($string));
|
||||
else
|
||||
return( $dbConn->quote( $string ) );
|
||||
return $dbConn->quote($string);
|
||||
else
|
||||
if ( get_magic_quotes_gpc() )
|
||||
return( $dbConn->quote( stripslashes( $string ) ) );
|
||||
return $dbConn->quote(stripslashes($string));
|
||||
else
|
||||
return( $dbConn->quote( $string ) );
|
||||
return $dbConn->quote($string);
|
||||
}
|
||||
|
||||
function dbQuery($sql, $params=NULL) {
|
||||
|
@ -204,82 +204,82 @@ function dbFetchAssoc( $sql, $indexCol, $dataCol=false ) {
|
|||
$dbRows = array();
|
||||
while( $dbRow = $result->fetch(PDO::FETCH_ASSOC) )
|
||||
$dbRows[$dbRow[$indexCol]] = $dataCol ? $dbRow[$dataCol] : $dbRow;
|
||||
return( $dbRows );
|
||||
return $dbRows;
|
||||
}
|
||||
|
||||
function dbFetch($sql, $col=false) {
|
||||
return( dbFetchAll( $sql, $col ) );
|
||||
return dbFetchAll($sql, $col);
|
||||
}
|
||||
|
||||
function dbFetchNext($result, $col=false) {
|
||||
if ( $dbRow = $result->fetch(PDO::FETCH_ASSOC) )
|
||||
return( $col?$dbRow[$col]:$dbRow );
|
||||
return( false );
|
||||
return $col ? $dbRow[$col] : $dbRow;
|
||||
return false;
|
||||
}
|
||||
|
||||
function dbNumRows( $sql ) {
|
||||
$result = dbQuery($sql);
|
||||
return( $result->rowCount() );
|
||||
return $result->rowCount();
|
||||
}
|
||||
|
||||
function dbInsertId() {
|
||||
global $dbConn;
|
||||
return( $dbConn->lastInsertId() );
|
||||
return $dbConn->lastInsertId();
|
||||
}
|
||||
|
||||
function getEnumValues($table, $column) {
|
||||
$row = dbFetchOne( "describe $table $column" );
|
||||
$row = dbFetchOne("DESCRIBE `$table` `$column`");
|
||||
preg_match_all("/'([^']+)'/", $row['Type'], $matches);
|
||||
return( $matches[1] );
|
||||
return $matches[1];
|
||||
}
|
||||
|
||||
function getSetValues($table, $column) {
|
||||
return( getEnumValues( $table, $column ) );
|
||||
return getEnumValues($table, $column);
|
||||
}
|
||||
|
||||
function getUniqueValues($table, $column, $asString=1) {
|
||||
$values = array();
|
||||
$sql = "select distinct $column from $table where (not isnull($column) and $column != '') order by $column";
|
||||
$sql = "SELECT DISTINCT `$column` FROM `$table` WHERE (NOT isnull(`$column`) AND `$column` != '') ORDER BY `$column`";
|
||||
foreach ( dbFetchAll($sql) as $row ) {
|
||||
if ( $asString )
|
||||
$values[$row[$column]] = $row[$column];
|
||||
else
|
||||
$values[] = $row[$column];
|
||||
}
|
||||
return( $values );
|
||||
return $values;
|
||||
}
|
||||
|
||||
function getTableColumns( $table, $asString=1 ) {
|
||||
$columns = array();
|
||||
$sql = "describe $table";
|
||||
$sql = "DESCRIBE `$table`";
|
||||
foreach ( dbFetchAll($sql) as $row ) {
|
||||
if ( $asString )
|
||||
$columns[$row['Field']] = $row['Type'];
|
||||
else
|
||||
$columns[] = $row['Type'];
|
||||
}
|
||||
return( $columns );
|
||||
return $columns;
|
||||
}
|
||||
|
||||
function getTableAutoInc( $table ) {
|
||||
$row = dbFetchOne( 'show table status where Name=?', NULL, array($table) );
|
||||
return( $row['Auto_increment'] );
|
||||
$row = dbFetchOne('SHOW TABLE status WHERE Name=?', NULL, array($table));
|
||||
return $row['Auto_increment'];
|
||||
}
|
||||
|
||||
function getTableDescription( $table, $asString=1 ) {
|
||||
$columns = array();
|
||||
foreach( dbFetchAll( "describe $table" ) as $row ) {
|
||||
foreach( dbFetchAll("DESCRIBE `$table`") as $row ) {
|
||||
$desc = array(
|
||||
'name' => $row['Field'],
|
||||
'required' => ($row['Null']=='NO')?true:false,
|
||||
'default' => $row['Default'],
|
||||
'db' => $row,
|
||||
);
|
||||
if ( preg_match( "/^varchar\((\d+)\)$/", $row['Type'], $matches ) ) {
|
||||
if ( preg_match('/^varchar\((\d+)\)$/', $row['Type'], $matches) ) {
|
||||
$desc['type'] = 'text';
|
||||
$desc['typeAttrib'] = 'varchar';
|
||||
$desc['maxLength'] = $matches[1];
|
||||
} elseif ( preg_match( "/^(\w+)?text$/", $row['Type'], $matches ) ) {
|
||||
} elseif ( preg_match('/^(\w+)?text$/', $row['Type'], $matches) ) {
|
||||
$desc['type'] = 'text';
|
||||
if ( !empty($matches[1]) )
|
||||
$desc['typeAttrib'] = $matches[1];
|
||||
|
@ -298,12 +298,12 @@ function getTableDescription( $table, $asString=1 ) {
|
|||
ZM\Error("Unexpected text qualifier '".$matches[1]."' found for field '".$row['Field']."' in table '".$table."'");
|
||||
break;
|
||||
}
|
||||
} elseif ( preg_match( "/^(enum|set)\((.*)\)$/", $row['Type'], $matches ) ) {
|
||||
} elseif ( preg_match('/^(enum|set)\((.*)\)$/', $row['Type'], $matches) ) {
|
||||
$desc['type'] = 'text';
|
||||
$desc['typeAttrib'] = $matches[1];
|
||||
preg_match_all("/'([^']+)'/", $matches[2], $matches);
|
||||
$desc['values'] = $matches[1];
|
||||
} elseif ( preg_match( "/^(\w+)?int\(\d+\)(?:\s+(unsigned))?$/", $row['Type'], $matches ) ) {
|
||||
} elseif ( preg_match('/^(\w+)?int\(\d+\)(?:\s+(unsigned))?$/', $row['Type'], $matches) ) {
|
||||
$desc['type'] = 'integer';
|
||||
switch ( $matches[1] ) {
|
||||
case 'tiny' :
|
||||
|
@ -336,7 +336,7 @@ function getTableDescription( $table, $asString=1 ) {
|
|||
$desc['maxValue'] += (-$desc['minValue']);
|
||||
$desc['minValue'] = 0;
|
||||
}
|
||||
} elseif ( preg_match( "/^(?:decimal|numeric)\((\d+)(?:,(\d+))?\)(?:\s+(unsigned))?$/", $row['Type'], $matches ) ) {
|
||||
} elseif ( preg_match('/^(?:decimal|numeric)\((\d+)(?:,(\d+))?\)(?:\s+(unsigned))?$/', $row['Type'], $matches) ) {
|
||||
$desc['type'] = 'fixed';
|
||||
$desc['range'] = $matches[1];
|
||||
if ( isset($matches[2]) )
|
||||
|
@ -344,7 +344,7 @@ function getTableDescription( $table, $asString=1 ) {
|
|||
else
|
||||
$desc['precision'] = 0;
|
||||
$desc['unsigned'] = ( isset($matches[3]) && $matches[3] == 'unsigned' );
|
||||
} elseif ( preg_match( "/^(datetime|timestamp|date|time)$/", $row['Type'], $matches ) ) {
|
||||
} elseif ( preg_match('/^(datetime|timestamp|date|time)$/', $row['Type'], $matches) ) {
|
||||
$desc['type'] = 'datetime';
|
||||
switch ( $desc['typeAttrib'] = $matches[1] ) {
|
||||
case 'datetime' :
|
||||
|
@ -370,15 +370,6 @@ function getTableDescription( $table, $asString=1 ) {
|
|||
else
|
||||
$columns[] = $desc;
|
||||
}
|
||||
return( $columns );
|
||||
return $columns;
|
||||
}
|
||||
|
||||
function dbFetchMonitor( $mid ) {
|
||||
return( dbFetchOne( 'select * from Monitors where Id = ?', NULL, array($mid) ) );
|
||||
}
|
||||
|
||||
function dbFetchGroup( $gid ) {
|
||||
return( dbFetchOne( 'select * from Groups where Id = ?', NULL, array($gid) ) );
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
|
@ -23,34 +23,34 @@ if ( !canEdit('Monitors') ) {
|
|||
return;
|
||||
}
|
||||
|
||||
$monitor = dbFetchMonitor($_REQUEST['mid']);
|
||||
$monitor = ZM\Monitor::find_one(array('Id'=>$_REQUEST['mid']));
|
||||
|
||||
$focusWindow = true;
|
||||
|
||||
xhtmlHeaders(__FILE__, translate('Function').' - '.validHtmlStr($monitor['Name']));
|
||||
xhtmlHeaders(__FILE__, translate('Function').' - '.validHtmlStr($monitor->Name()));
|
||||
?>
|
||||
<body>
|
||||
<div id="page">
|
||||
<div id="header">
|
||||
<h2><?php echo translate('Function').' - '.validHtmlStr($monitor['Name']) ?></h2>
|
||||
<h2><?php echo translate('Function').' - '.validHtmlStr($monitor->Name()) ?></h2>
|
||||
</div>
|
||||
<div id="content">
|
||||
<form name="contentForm" id="contentForm" method="post" action="?">
|
||||
<input type="hidden" name="view" value="function"/>
|
||||
<input type="hidden" name="action" value="function"/>
|
||||
<input type="hidden" name="mid" value="<?php echo $monitor['Id'] ?>"/>
|
||||
<input type="hidden" name="mid" value="<?php echo $monitor->Id() ?>"/>
|
||||
<p>
|
||||
<select name="newFunction">
|
||||
<?php
|
||||
foreach ( getEnumValues('Monitors', 'Function') as $optFunction ) {
|
||||
?>
|
||||
<option value="<?php echo $optFunction ?>"<?php if ( $optFunction == $monitor['Function'] ) { ?> selected="selected"<?php } ?>><?php echo translate('Fn'.$optFunction) ?></option>
|
||||
<option value="<?php echo $optFunction ?>"<?php if ( $optFunction == $monitor->Function() ) { ?> selected="selected"<?php } ?>><?php echo translate('Fn'.$optFunction) ?></option>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<label for="newEnabled"><?php echo translate('Enabled') ?></label>
|
||||
<input type="checkbox" name="newEnabled" id="newEnabled" value="1"<?php if ( !empty($monitor['Enabled']) ) { ?> checked="checked"<?php } ?>/>
|
||||
<input type="checkbox" name="newEnabled" id="newEnabled" value="1"<?php if ( !empty($monitor->Enabled()) ) { ?> checked="checked"<?php } ?>/>
|
||||
</p>
|
||||
<div id="contentButtons">
|
||||
<button type="submit" value="Save"><?php echo translate('Save') ?></button>
|
||||
|
|
|
@ -19,23 +19,21 @@
|
|||
//
|
||||
|
||||
|
||||
if ( !canView( 'Monitors' ) )
|
||||
{
|
||||
$view = "error";
|
||||
if ( !canView('Monitors') ) {
|
||||
$view = 'error';
|
||||
return;
|
||||
}
|
||||
|
||||
$mid = validInt($_REQUEST['mid']);
|
||||
$zid = !empty($_REQUEST['zid'])?validInt($_REQUEST['zid']):0;
|
||||
|
||||
|
||||
if ( $zid > 0 ) {
|
||||
$newZone = dbFetchOne('SELECT * FROM Zones WHERE MonitorId = ? AND Id = ?', NULL, array($mid, $zid));
|
||||
} else {
|
||||
$view = "error";
|
||||
$view = 'error';
|
||||
return;
|
||||
}
|
||||
$monitor = dbFetchMonitor ( $mid );
|
||||
$monitor = ZM\Monitor::find_one($mid);
|
||||
// Only allow certain filename characters (not including a period) to prevent directory traversal.
|
||||
$plugin = preg_replace('/[^-a-zA-Z0-9]/', '', $_REQUEST['pl']);
|
||||
|
||||
|
@ -104,7 +102,7 @@ function pLang($name)
|
|||
<body>
|
||||
<div id="page">
|
||||
<div id="header">
|
||||
<h2><?php echo translate('Monitor') ?> <?php echo $monitor['Name'] ?> - <?php echo translate('Zone') ?> <?php echo $newZone['Name'] ?> - <?php echo translate('Plugin') ?> <?php echo validHtmlStr($plugin) ?></h2>
|
||||
<h2><?php echo translate('Monitor') ?> <?php echo $monitor->Name() ?> - <?php echo translate('Zone') ?> <?php echo $newZone['Name'] ?> - <?php echo translate('Plugin') ?> <?php echo validHtmlStr($plugin) ?></h2>
|
||||
</div>
|
||||
<div id="content">
|
||||
<form name="pluginForm" id="pluginForm" method="post" action="?">
|
||||
|
@ -115,16 +113,14 @@ function pLang($name)
|
|||
<input type="hidden" name="pl" value="<?php echo validHtmlStr($plugin) ?>"/>
|
||||
|
||||
<div id="settingsPanel">
|
||||
<table id="pluginSettings" cellspacing="0">
|
||||
<table id="pluginSettings">
|
||||
<tbody>
|
||||
<?php
|
||||
foreach($pluginOptions as $name => $popt)
|
||||
{
|
||||
foreach($pluginOptions as $name => $popt) {
|
||||
?>
|
||||
<tr><th scope="row"><?php echo pLang($name) ?></th>
|
||||
<?php
|
||||
switch($popt['Type'])
|
||||
{
|
||||
switch($popt['Type']) {
|
||||
case "checkbox":
|
||||
echo "CHECKBOX";
|
||||
break;
|
||||
|
@ -134,8 +130,7 @@ foreach($pluginOptions as $name => $popt)
|
|||
<td colspan="2">
|
||||
<select name="pluginOpt[<?php echo $popt['Name'] ?>]" id="pluginOpt[<?php echo $popt['Name'] ?>]">
|
||||
<?php
|
||||
foreach($pchoices as $pchoice)
|
||||
{
|
||||
foreach($pchoices as $pchoice) {
|
||||
$psel="";
|
||||
if($popt['Value']==$pchoice)
|
||||
$psel="selected";
|
||||
|
|
|
@ -18,30 +18,29 @@
|
|||
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
//
|
||||
|
||||
if ( !canView( 'Control' ) )
|
||||
{
|
||||
$view = "error";
|
||||
if ( !canView('Control') ) {
|
||||
$view = 'error';
|
||||
return;
|
||||
}
|
||||
$monitor = dbFetchMonitor( $_REQUEST['mid'] );
|
||||
$monitor = ZM\Monitor::find_one(array('Id'=>$_REQUEST['mid']));
|
||||
|
||||
$zmuCommand = getZmuCommand( " -m ".escapeshellarg($_REQUEST['mid'])." -B -C -H -O" );
|
||||
$zmuCommand = getZmuCommand(' -m '.escapeshellarg($_REQUEST['mid']).' -B -C -H -O');
|
||||
$zmuOutput = exec( $zmuCommand );
|
||||
list($brightness, $contrast, $hue, $colour) = explode(' ', $zmuOutput);
|
||||
|
||||
$monitor['Brightness'] = $brightness;
|
||||
$monitor['Contrast'] = $contrast;
|
||||
$monitor['Hue'] = $hue;
|
||||
$monitor['Colour'] = $colour;
|
||||
$monitor->Brightness() = $brightness;
|
||||
$monitor->Contrast() = $contrast;
|
||||
$monitor->Hue() = $hue;
|
||||
$monitor->Colour() = $colour;
|
||||
|
||||
$focusWindow = true;
|
||||
|
||||
xhtmlHeaders(__FILE__, validHtmlStr($monitor['Name'])." - ".translate('Settings') );
|
||||
xhtmlHeaders(__FILE__, validHtmlStr($monitor->Name()).' - '.translate('Settings'));
|
||||
?>
|
||||
<body>
|
||||
<div id="page">
|
||||
<div id="header">
|
||||
<h2><?php echo validHtmlStr($monitor['Name']) ?> - <?php echo translate('Settings') ?></h2>
|
||||
<h2><?php echo validHtmlStr($monitor->Name()) ?> - <?php echo translate('Settings') ?></h2>
|
||||
</div>
|
||||
<div id="content">
|
||||
<form name="contentForm" id="contentForm" method="post" action="?">
|
||||
|
@ -52,24 +51,25 @@ xhtmlHeaders(__FILE__, validHtmlStr($monitor['Name'])." - ".translate('Settings'
|
|||
<tbody>
|
||||
<tr>
|
||||
<th scope="row"><?php echo translate('Brightness') ?></th>
|
||||
<td><input type="text" name="newBrightness" value="<?php echo $monitor['Brightness'] ?>" size="8"<?php if ( !canView( 'Control' ) ) { ?> disabled="disabled"<?php } ?>/></td>
|
||||
<td><input type="number" name="newBrightness" value="<?php echo $monitor->Brightness() ?>" <?php if ( !canView( 'Control' ) ) { ?> disabled="disabled"<?php } ?>/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><?php echo translate('Contrast') ?></th>
|
||||
<td><input type="text" name="newContrast" value="<?php echo $monitor['Contrast'] ?>" size="8"<?php if ( !canView( 'Control' ) ) { ?> disabled="disabled"<?php } ?>/></td>
|
||||
<td><input type="number" name="newContrast" value="<?php echo $monitor->Contrast() ?>" <?php echo canView('Control') ? '' : ' disabled="disabled"' ?>/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><?php echo translate('Hue') ?></th>
|
||||
<td><input type="text" name="newHue" value="<?php echo $monitor['Hue'] ?>" size="8"<?php if ( !canView( 'Control' ) ) { ?> disabled="disabled"<?php } ?>/></td>
|
||||
<td><input type="number" name="newHue" value="<?php echo $monitor->Hue() ?>" <?php echo canView('Control') ? '' : ' disabled="disabled"' ?>/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><?php echo translate('Colour') ?></th>
|
||||
<td><input type="text" name="newColour" value="<?php echo $monitor['Colour'] ?>" size="8"<?php if ( !canView( 'Control' ) ) { ?> disabled="disabled"<?php } ?>/></td>
|
||||
<td><input type="number" name="newColour" value="<?php echo $monitor->Colour() ?>" <?php echo canView('Control') ? '' : ' disabled="disabled"' ?>/></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div id="contentButtons">
|
||||
<input type="submit" value="<?php echo translate('Save') ?>"<?php if ( !canView( 'Control' ) ) { ?> disabled="disabled"<?php } ?>/><input type="button" value="<?php echo translate('Close') ?>" data-on-click="closeWindow"/>
|
||||
<button type="submit" value="Save"<?php echo canView('Control') ? '' : ' disabled="disabled"' ?>><?php echo translate('Save') ?></button>
|
||||
<button type="button" value="Close" data-on-click="closeWindow"/><?php echo translate('Close') ?></button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue