This function’s access is marked private. This means it is not intended for use by plugin or theme developers, only in other core functions. It is listed here for completeness.

VideoStream::setHeader()

Set proper header to serve the video content


Source

File: classes/VideoStream.php

	private function setHeader() {
		ob_get_clean();

		header( "Content-Type: {$this->videoFormats[strtolower(pathinfo($this->path, PATHINFO_EXTENSION))]}" );
		header( "Cache-Control: max-age=2592000, public" );
		header( "Expires: " . gmdate( 'D, d M Y H:i:s', dozent_time() + 2592000 ) . ' GMT' );
		header( "Last-Modified: " . gmdate( 'D, d M Y H:i:s', @filemtime( $this->path ) ) . ' GMT' );
		$this->start = 0;
		$this->size  = filesize( $this->path );
		$this->end   = $this->size - 1;
		header( "Accept-Ranges: 0-" . $this->end );

		if ( isset( $_SERVER['HTTP_RANGE'] ) ) {
			$c_end = $this->end;
			list( , $range ) = explode( '=', $_SERVER['HTTP_RANGE'], 2 );

			if ( $range == '-' ) {
				$c_start = $this->size - substr( $range, 1 );
			} else {
				$range   = explode( '-', $range );
				$c_start = $range[0];

				$c_end = ( isset( $range[1] ) && is_numeric( $range[1] ) ) ? $range[1] : $c_end;
			}
			$c_end = ( $c_end > $this->end ) ? $this->end : $c_end;
			if ( $c_start > $c_end || $c_start > $this->size - 1 || $c_end >= $this->size ) {
				header( 'HTTP/1.1 416 Requested Range Not Satisfiable' );
				header( "Content-Range: bytes $this->start-$this->end/$this->size" );
				exit;
			}
			$this->start = $c_start;
			$this->end   = $c_end;
			$length      = $this->end - $this->start + 1;
			header( 'HTTP/1.1 206 Partial Content' );
			header( "Content-Length: " . $length );
			header( "Content-Range: bytes $this->start-$this->end/" . $this->size );
			header( "Accept-Ranges: bytes" );
		} else {
			header( "Content-Length: " . $this->size );
		}

	}