<?php

/**
 * Classe qui gère les sorties de type Plain Text
 * 
 * @author Olivier Arteau
 */

class PlainTextOutput implements Output {
	private static $encodeType = 'UTF-8';
	private static $CONTENT_TYPE = 'text/plain';
	private static $output = '';
    
    private static $isRegister = false;
    
    /**
	 * Output les données envoyés en paramètre
	 * 
	 * @param (Mixed) $output
	 */
	 
	public static function output($output) {
		self::$output .=  $output;
		self::register();
	}
	
	/**
	 * Ajoute un entête. 
	 * 
	 * @param (String) $header
	 */
	
	public static function addHeader($nom, $contenu) {
		header($nom . ': ' . $contenu);
		self::register();
	}
	
	/**
	 * Retourne l'encodage utilisé dans la page
	 * 
	 * @return (String)
	 */
	
	public static function getCharset() {
		return self::$encodeType;
	}
	
	/**
	 * Définit l'encodage utilisé dans la page
	 * 
	 * @param (String)
	 */
	
	public static function setCharset($charset) {
		self::$encodeType = $charset;
		self::register();
	}
	
	/**
	 * Fonction appelé par la classe principale quand la page est fini d'être exécuté
	 */
	 
	public static function finish() {
		self::addHeader('Content-Type', self::$CONTENT_TYPE . '; ' . 'charset=' . self::$encodeType);
		
		echo utf8_encode(self::$output);
	}
	
	/**
	 * S'assure que la classe PAFServer détecte cette classe de sortie comme celle utilisé.
	 */
	
	private static function register() {
		if (!self::$isRegister) {
			PAFServer::getInstance()->setOutputInstance(new PlainTextOutput());
			self::$isRegister = true;
		}
	}
	
	/**
	 * Fonction à utiliser pour définir le mode de sortie
	 * (S'assure que c'est PlainText qui est utilisé)
	 */
	 
	public static function touch() {
		self::register();
	}
}
?>