1<?php 2/** 3 * Provides functionality to communicate with a 4 * Clonk 4 engine with ini-style strings. 5 * 6 * @package C4Masterserver 7 * @version 1.2.0-en 8 * @author Benedict Etzel <b.etzel@live.de> 9 * @license http://creativecommons.org/licenses/by/3.0/ CC-BY 3.0 10 */ 11abstract class C4Network { 12 13 /** 14 * Creates a Clonk 4 conform answer string. 15 * 16 * @param array $data 17 * @return string 18 */ 19 public static function createAnswer($data) { 20 $message = '[Response]'."\n"; 21 foreach ($data as $key => $value) { 22 $message .= $key.'='.$value."\n"; 23 } 24 return $message; 25 } 26 27 /** 28 * Returns a Clonk 4 conform error string. 29 * 30 * @param string message 31 * @return string 32 */ 33 public static function createError($message) { 34 return C4Network::createAnswer(array("Status" => "Failure", "Message" => $message)); 35 } 36 37 /** 38 * Sends a Clonk 4 conform answer string. 39 * 40 * @param string $message 41 * @return void 42 */ 43 public static function sendAnswer($message) { 44 header('Content-Length: '.strlen($message)); 45 echo $message; 46 } 47 48 /** 49 * Cleans a Clonk 4 conform text sting human readable. 50 * 51 * @param string $message 52 * @return string 53 */ 54 public static function cleanString($message) { 55 $coded = $decoded = array(); 56 preg_match_all('|\\\[0-9]{3}|', $message, $coded); 57 foreach($coded[0] as $numstr) { 58 $num = ereg_replace("[^0-9]", "", $numstr); 59 $decoded[$num] = C4Network::decodeEntitiyString($num); 60 } 61 foreach($decoded as $num => $entity) { 62 $message = str_replace('\\'.$num, $entity, $message); 63 } 64 return $message; 65 } 66 67 /** 68 * Decodes Clonk 4 conform entitiy string to its character. 69 * 70 * @param string $string 71 * @return string 72 */ 73 public static function decodeEntitiyString($string) { 74 $num = ereg_replace("[^0-9]", "", $string); 75 $num = octdec($num); 76 return chr($num); 77 } 78} 79?> 80