*/ /** Display the data in HTML with a FLASH method to display the errors */ class renderer { /** The result in construction */ public $result = NULL; /** The output type */ public $output = NULL; /** Title by default : space to be compatible with HTML5 */ public $title = " "; /** Filename of class containing the presentation layer */ public $viewClass = FALSE; /** Method apply to class object to display the $result */ public $viewMethod = FALSE; /** Filename in views containing the HTML layout. Without .html at the end */ public $layout = FALSE; /** Array to search/replace */ public $replacement = array(); /** Array to variable definition */ public $variable = array (); /** Display the $this->result result in the output model defined by $this->output */ public function run () { if (!@require_once ("domframework/output$this->output.php")) throw new \Exception ("Renderer '$this->output' not found", 500); $class = "output$this->output"; $reflection = new \ReflectionMethod ($class, "out"); $res = $reflection->invokeArgs (new $class, array ($this->result, $this->title, $this->viewClass, $this->viewMethod, $this->layout, $this->replacement, $this->variable)); echo $res; } /** Add a flash message to the user, on the next HTML page. In CLI, display the message immediately. Message must be translated before sending to the function @param integer|string $priority Priority 1:success, 2:info, 3:warning, 4:error or textual : SUCCESS, INFO, WARNING, ERROR @param string $message Message to display */ static public function flash ($priority, $message) { if (php_sapi_name () === "cli") { switch ($priority) { case 1: case "SUCCESS": echo "SUCCESS: $message\n"; break; case 2: case "INFO": echo "INFO: $message\n"; break; case 3: case "WARNING": echo "WARNING: $message\n"; break; case 4: case "ERROR": echo "ERROR: $message\n"; break; default: throw new \Exception ("Unknown flash priority '$priority'", 500); } } else { if (! isset ($_SESSION)) throw new \Exception ("No session available to store flash", 500); switch ($priority) { case 1: case "SUCCESS": $_SESSION["renderer"]["flash"][] = array (1, $message); break; case 2: case "INFO": $_SESSION["renderer"]["flash"][] = array (2, $message); break; case 3: case "WARNING": $_SESSION["renderer"]["flash"][] = array (3, $message); break; case 4: case "ERROR": $_SESSION["renderer"]["flash"][] = array (4, $message); break; default: throw new \Exception ("Unknown flash priority '$priority'", 500); } } } /** Display the HTML page with the alert box if needed * @param string $viewclass The view class to use to create the output * @param string $viewmethod The view method to use to create the output * @param mixed $data The data to display. * @param array|null $replacement Replace some values by some others in the * created HTML page * @param string|null $layoutfile The layout page to use as base * @param object|null $route A previous defined "route" object */ static function html ($viewclass, $viewmethod, $data, $replacement = array(), $layoutfile = "views/layout.html", $route = null) { if ($layoutfile !== false && ! file_exists ($layoutfile)) throw new \Exception ("Layout file $layoutfile not found", 500); require_once ("domframework/outputhtml.php"); if ($route === null) $route = new route (); // Return a $dataflash with the displayed flash in Bootstrap $dataflash = ""; if (isset ($_SESSION["renderer"]["flash"])) { foreach ($_SESSION["renderer"]["flash"] as $flash) { $dataflash .= "