Location: PHPKode > projects > PHP VoiceViewer > library/output.iface.php
<?php
/**
 * PHP VoiceViewer - Output Class Interface
 *
 * Project   : PHP VoiceViewer
 * Copyright : Christopher Cooper © 2010
 * License   : FreeBSD
 * Author    : Christopher Cooper (PaNtHaLooN), hide@address.com
 * Date      : March 2010
 * Version   : 1.0.0
 *
 * Copyright 2010 Christopher Cooper. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification, are
 * permitted provided that the following conditions are met:
 *
 *    1. Redistributions of source code must retain the above copyright notice, this list of
 *       conditions and the following disclaimer.
 *
 *    2. Redistributions in binary form must reproduce the above copyright notice, this list
 *       of conditions and the following disclaimer in the documentation and/or other materials
 *       provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY CHRISTOPHER COOPER ``AS IS'' AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CHRISTOPHER COOPER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * The views and conclusions contained in the software and documentation are those of the
 * authors and should not be interpreted as representing official policies, either expressed
 * or implied, of Christopher Cooper.
 */
 
// Define acronyms
defined('DS') || define('DS', DIRECTORY_SEPARATOR);

// Main include
@require_once(dirname(__FILE__) . DS . '..' . DS . 'main.inc.php');

interface ivvOutput
{

	const OUTPUT_ENCODING		= 'utf-8';

	public static function displayError( $errno, $errstr, $errfile, $errline, $simple = true );
	public static function displayServer( ivvServer &$server );

	public static function fileExists( $id );
	public static function displayFile( $id );

}

abstract class avvOutput implements ivvOutput
{

	final public static function &getErrorDOM( $code, $message, $file, $line, $simple = true )
	{
		$doc = new DOMDocument(ivvEntity::DOM_VERSION, ivvEntity::DOM_ENCODING);
		$doc->formatOutput = true;
		$errornode = $doc->appendChild($doc->createElement(ivvEntity::TAG_ERROR));
		
		if ( $simple === false )
		{
			$errornode->setAttribute(ivvEntity::TAG_ERROR_CODE, $code);

			$filenode = $errornode->appendChild($doc->createElement(ivvEntity::TAG_ERROR_FILE));
			$filenode->setAttribute(ivvEntity::TAG_ERROR_LINE, $line);
			$filenode->appendChild($doc->createCDATASection($file));
		}
		
		$msgnode = $errornode->appendChild($doc->createElement(ivvEntity::TAG_ERROR_MESSAGE));
		$msgnode->appendChild($doc->createCDATASection($message));
		
		return $doc;
	}

	public static function displayError( $code, $message, $file, $line, $simple = true )
	{
		self::genHeaderContent('xml');
		echo(self::getErrorDOM($code, $message, $file, $line, $simple)->saveXML());
	}
	
	final public static function &getServerDOM( ivvServer &$server )
	{
		$doc = new DOMDocument(ivvEntity::DOM_VERSION, ivvEntity::DOM_ENCODING);
		$doc->formatOutput = true;
		$doc->appendChild($server->createDOMElement($doc));

		return $doc;
	}

	public static function displayServer( ivvServer &$server )
	{
		self::genHeaderContent('xml');
		echo(self::getServerDOM($server)->saveXML());
	}

	public static function fileExists( $id )
	{
		// No files defined in abstract class -> always returns false
		return false;
	}

	public static function displayFile( $id )
	{
		// No files defined  in abstract class -> no files to be displayed
	}
	
	final public static function getContentString( $id )
	{
		switch( $id )
		{
			case 'text':
				return 'text';
				break;
			case 'html':
			case 'xhtml':
			default:
				return 'text/html';
				break;
			case 'xml':
				return 'text/xml';
				break;
			case 'xsl':
			case 'xslt':
				return 'text/xsl';
				break;
		}
	}
	
	final public static function genHeaderContent( $id )
	{
		header('Content-Type: ' . self::getContentString($id) . '; charset=' . self::OUTPUT_ENCODING);
	}
	
	final public static function genHeaderFilename( $name, $type = 'inline' )
	{
		header('Content-Disposition: ' . $type . '; filename="' . $name . '"');
	}

}
 
?>
Return current item: PHP VoiceViewer