diff options
| author | winter Sparkles | 2026-08-08 23:01:51 +0100 |
|---|---|---|
| committer | winter Sparkles | 2026-08-08 23:01:51 +0100 |
| commit | b422b6ded608807c7d3bb8b965b3797ca513610b (patch) | |
| tree | 7925fa972efbfff2a9bf8648334d49e3fd6b5df1 /Psso/XMLResponse.php | |
| parent | 880a274e1ecbed42c76d3dc4a81161b3ae372726 (diff) | |
implement a large chunk of the auth system itself :D
Diffstat (limited to 'Psso/XMLResponse.php')
| -rw-r--r-- | Psso/XMLResponse.php | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/Psso/XMLResponse.php b/Psso/XMLResponse.php new file mode 100644 index 0000000..1b17660 --- /dev/null +++ b/Psso/XMLResponse.php @@ -0,0 +1,44 @@ +<?php +namespace Psso; + +class XMLResponse { + public \SimpleXMLElement $doc; + private static array $stylesheets; + private static array $runFirst; + + static function addStylesheet(string $path) { + $sheet = \Dom\XMLDocument::createFromFile($path); + self::$stylesheets[] = $sheet; + } + + static function addPreamble(callable $preamble) { + self::$runFirst[] = $preamble; + } + + function __construct(string $rootElement = 'page') { + $this->doc = new \SimpleXMLElement("<$rootElement/>"); + foreach (self::$runFirst as $fn) { + $fn($this->doc); + } + } + + function sendRaw() { + header('Content-Type: application/xml'); + echo $this->doc->asXML(); + } + + function send() { + if (isset($_GET['RawXML'])) { + $this->sendRaw(); + return; + } + + //header('Content-Type: application/xhtml+xml'); + $processor = new \XSLTProcessor; + foreach (self::$stylesheets as $sheet) { + $processor->importStylesheet($sheet); + } + $root = \Dom\import_simplexml($this->doc); + echo $processor->transformToXml($root); + } +} |
