<?php

namespace ManiaControl;

/**
 * Class offering methods to format texts and values
 *
 * @author steeffeen & kremsy
 */
abstract class Formatter {

	/**
	 * Formats the given time (milliseconds)
	 *
	 * @param int $time        	
	 * @return string
	 */
	public static function formatTime($time) {
		if (!is_int($time)) {
			$time = (int) $time;
		}
		$milliseconds = $time % 1000;
		$seconds = floor($time / 1000);
		$minutes = floor($seconds / 60);
		$hours = floor($minutes / 60);
		$minutes -= $hours * 60;
		$seconds -= $hours * 60 + $minutes * 60;
		$format = ($hours > 0 ? $hours . ':' : '');
		$format .= ($hours > 0 && $minutes < 10 ? '0' : '') . $minutes . ':';
		$format .= ($seconds < 10 ? '0' : '') . $seconds . ':';
		$format .= ($milliseconds < 100 ? '0' : '') . ($milliseconds < 10 ? '0' : '') . $milliseconds;
		return $format;
	}

	/**
	 * Formats the given time (seconds) to hh:mm:ss
	 *
	 * @param int $seconds        	
	 * @return string
	 */
	public static function formatTimeH($seconds) {
		return gmdate("H:i:s", $seconds);
	}

	/**
	 * Convert the given time (seconds) to mysql timestamp
	 *
	 * @param int $seconds        	
	 * @return string
	 */
	public static function formatTimestamp($seconds) {
		return date("Y-m-d H:i:s", $seconds);
	}

	/**
	 * Strip $codes from the string
	 *
	 * @param string $string        	
	 * @return string
	 */
	public static function stripCodes($string) {
		$string = preg_replace('/(?<!\$)((?:\$\$)*)\$[^$0-9a-hlp]/iu', '$1', $string);
		$string = self::stripLinks($string);
		$string = self::stripColors($string);
		return $string;
	}

	/**
	 * Remove link codes from the string
	 *
	 * @param string $string        	
	 * @return string
	 */
	public static function stripLinks($string) {
		return preg_replace('/(?<!\$)((?:\$\$)*)\$[hlp](?:\[.*?\])?(.*?)(?:\$[hlp]|(\$z)|$)/iu', '$1$2$3', $string);
	}

	/**
	 * Remove colors from the string
	 *
	 * @param string $string        	
	 * @return string
	 */
	static function stripColors($string) {
		return preg_replace('/(?<!\$)((?:\$\$)*)\$(?:g|[0-9a-f][^\$]{0,2})/iu', '$1', $string);
	}
}

?>