$v) { $this->{$k} = $v; } if ( $this->{'Controllable'} ) { $s = dbFetchOne( 'SELECT * FROM Controls WHERE Id=?', NULL, array( $this->{'ControlId'} ) ); foreach ($s as $k => $v) { if ( $k == 'Id' ) { continue; # The reason for these is that the name overlaps Monitor fields. } else if ( $k == 'Protocol' ) { $this->{'ControlProtocol'} = $v; } else if ( $k == 'Name' ) { $this->{'ControlName'} = $v; } else if ( $k == 'Type' ) { $this->{'ControlType'} = $v; } else { $this->{$k} = $v; } } } } else { Error("No row for Monitor " . $IdOrRow ); } } // end function __construct public function Server() { return new Server( $this->{'ServerId'} ); } public function __call( $fn, array $args){ if ( isset( $this->{$fn} ) ) { return $this->{$fn}; #array_unshift($args, $this); #call_user_func_array( $this->{$fn}, $args); } } public function getStreamSrc( $args, $querySep='&' ) { if ( isset($this->{'ServerId'}) and $this->{'ServerId'} ) { $Server = new Server( $this->{'ServerId'} ); $streamSrc = ZM_BASE_PROTOCOL.'://'.$Server->Hostname().ZM_PATH_ZMS; } else { $streamSrc = ZM_BASE_URL.ZM_PATH_ZMS; } $args[] = "monitor=".$this->{'Id'}; 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 ( !in_array( "mode=single", $args ) && !empty($GLOBALS['connkey']) ) { $args[] = "connkey=".$GLOBALS['connkey']; } if ( ZM_RAND_STREAM ) { $args[] = "rand=".time(); } if ( count($args) ) { $streamSrc .= "?".join( $querySep, $args ); } return( $streamSrc ); } // end function getStreamSrc public function Width() { if ( $this->Orientation() == '90' or $this->Orientation() == '270' ) { return $this->{'Height'}; } return $this->{'Width'}; } public function Height() { if ( $this->Orientation() == '90' or $this->Orientation() == '270' ) { return $this->{'Width'}; } return $this->{'Height'}; } public function set( $data ) { foreach ($data as $k => $v) { if ( is_array( $v ) ) { # perhaps should turn into a comma-separated string $this->{$k} = implode(',',$v); } else if ( is_string( $v ) ) { $this->{$k} = trim( $v ); } else { Error( "Unknown type of var " . gettype( $v ) ); $this->{$k} = $v; } } } } ?>