value = $value; $this->setUp(); } abstract public function decode(); abstract public function setUp(); public function setContainer( ContainerInterface $container ) { $this->container = $container; } public function setFormatter( FormatterInterface $formatter ) { $this->formatter = $formatter; } public function esc_raw() { return htmlentities( $this->value ); } public function __toString() { $value = $this->decode(); $formatted = $this->formatter->format( $value ); return $this->container->wrap( $formatted ); } } class ActionQuotedPrintableDecode extends AbstractAction { public function setUp() { $this->setContainer( new TextareaContainer ); $this->setFormatter( new EchoFormatter ); } public function decode() { return quoted_printable_decode( $this->value ); } } class ActionQuotedPrintableEncode extends AbstractAction { public function setUp() { $this->setContainer( new TextareaContainer ); $this->setFormatter( new EchoFormatter ); } public function decode() { return quoted_printable_encode( $this->value ); } } class ActionBase64Encode extends AbstractAction { public function setUp() { $this->setContainer( new TextareaContainer ); $this->setFormatter( new EchoFormatter ); } public function decode() { return base64_encode( $this->value ); } } class ActionBase64Decode extends AbstractAction { public function setUp() { $this->setContainer( new TextareaContainer ); $this->setFormatter( new EchoFormatter ); } public function decode() { return base64_decode( $this->value ); } } class ActionUrldecode extends AbstractAction { public function setUp() { $this->setContainer( new TextareaContainer ); $this->setFormatter( new EchoFormatter ); } public function decode() { return urldecode( $this->value ); } } class ActionUrlencode extends AbstractAction { public function setUp() { $this->setContainer( new TextareaContainer ); $this->setFormatter( new EchoFormatter ); } public function decode() { return urlencode( $this->value ); } } class ActionSerialize extends AbstractAction { public function setUp() { $this->setContainer( new TextareaContainer ); $this->setFormatter( new EchoFormatter ); } public function decode() { return serialize( json_decode( $this->value ) ); } } class ActionUnserialize extends AbstractAction { public function setUp() { $this->setContainer( new DivContainer ); $this->setFormatter( new DbugFormatter ); } public function decode() { return unserialize( $this->value ); } } class ActionJsonDecode extends AbstractAction { public function setUp() { $this->setContainer( new DivContainer ); $this->setFormatter( new VarexportFormatter ); } public function decode() { return json_decode( $this->value, true ); } } class ActionJsonEncode extends AbstractAction { public function setUp() { $this->setContainer( new TextareaContainer ); $this->setFormatter( new EchoFormatter ); } public function decode() { return json_encode( $this->value ); } } class ActionDateC extends AbstractAction { public function setUp() { $this->setContainer( new DivContainer ); $this->setFormatter( new DbugFormatter ); } public function decode() { $results = array(); array_map(function($value) use (&$results) { $results[$value] = date('c', $value); }, explode("\n", $this->value)); return $results; } } class ActionStrtotime extends AbstractAction { public function setUp() { $this->setContainer( new DivContainer ); $this->setFormatter( new EchoFormatter ); } public function decode() { $tz = date_default_timezone_get(); date_default_timezone_set('UTC'); $time = strtotime($this->value); $str_utc = date('c', $time); date_default_timezone_set('America/New_York'); $str_ny = date('c', $time); date_default_timezone_set($tz); return "$time
$str_utc
$str_ny"; } } class ActionAnsi2Html extends AbstractAction { public function setUp() { $this->setContainer( new TextareaContainer ); $this->setFormatter( new EchoFormatter ); } public function decode() { $converter = new AnsiToHtmlConverter(); return htmlentities(nl2br($converter->convert($this->value))); } } class ActionParseStr extends AbstractAction { public function setUp() { $this->setContainer( new DivContainer ); $this->setFormatter( new DbugFormatter ); } public function decode() { parse_str($this->value, $results); return $results; } } interface ContainerInterface { public function wrap( $contents ); } class DivContainer implements ContainerInterface { public function wrap( $contents ) { return '
' . $contents . '
'; } } class TextareaContainer extends DivContainer { public function wrap( $contents ) { return parent::wrap( '' ); } } interface FormatterInterface { public function format( $value ); } abstract class BufferedFormatter implements FormatterInterface { const ESCAPE = false; public function format( $value ) { ob_start(); $this->bufferedFormat( $value ); $output = ob_get_clean(); if (static::ESCAPE) { $output = '
' . htmlentities($output) . '
'; } return $output; } abstract public function bufferedFormat( $value ); } class DbugFormatter extends BufferedFormatter { public function bufferedFormat( $value ) { new dBug( $value ); } } class VardumpFormatter extends BufferedFormatter { const ESCAPE = true; public function bufferedFormat( $value ) { var_dump( $value ); } } class EchoFormatter implements FormatterInterface { public function format( $value ) { return $value; } } class VarexportFormatter extends BufferedFormatter { const ESCAPE = true; public function bufferedFormat( $value ) { var_export( $value ); } }