diff --git a/boot.php b/boot.php index 1c869c39..d2f8634e 100644 --- a/boot.php +++ b/boot.php @@ -206,7 +206,6 @@ if (!function_exists('killme')) { function killme() { session_write_close(); - closedb(); exit; } } diff --git a/include/dba.php b/include/dba.php index 877f6cd3..89f141d8 100644 --- a/include/dba.php +++ b/include/dba.php @@ -16,7 +16,8 @@ class dba public function __construct($server, $user, $pass, $db, $install = false) { $this->db = @new mysqli($server, $user, $pass, $db); - if ((mysqli_connect_errno()) && (! install)) { + + if (mysqli_connect_errno() && ! $install) { system_unavailable(); } } @@ -40,7 +41,7 @@ class dba $mesg = ''; if ($this->db->mysqli->errno) { - $debug_text .= $this->db->mysqli->error . EOL; + $debug_text .= $this->db->mysqli->error . EOL; } if ($result === false) { @@ -48,19 +49,19 @@ class dba } elseif ($result === true) { $mesg = 'true'; } else { - $mesg = $result->num_rows.' results' . EOL; + $mesg = $result->num_rows . ' results' . EOL; } - $str = 'SQL = ' . printable($sql) . EOL . 'SQL returned ' . $mesg . EOL; + $str = 'SQL = ' . printable($sql) . EOL . 'SQL returned ' . $mesg . EOL; switch ($this->debug) { - case 3: - echo $str; - break; - default: - $debug_text .= $str; - break; - } + case 3: + echo $str; + break; + default: + $debug_text .= $str; + break; + } } if (($result === true) || ($result === false)) { @@ -76,9 +77,9 @@ class dba } if ($this->debug == 2) { - $debug_text .= printable(print_r($r, true). EOL); + $debug_text .= printable(print_r($r, true) . EOL); } elseif ($this->debug == 3) { - echo printable(print_r($r, true) . EOL) ; + echo printable(print_r($r, true) . EOL); } return $r; @@ -100,93 +101,71 @@ class dba } } -if (! function_exists('printable')) { - function printable($s) - { - $s = preg_replace("~([\x01-\x08\x0E-\x0F\x10-\x1F\x7F-\xFF])~", ".", $s); - $s = str_replace("\x00", '.', $s); - if (x($_SERVER, 'SERVER_NAME')) { - $s = escape_tags($s); - } - return $s; +function printable($s) +{ + $s = preg_replace("~([\x01-\x08\x0E-\x0F\x10-\x1F\x7F-\xFF])~", ".", $s); + $s = str_replace("\x00", '.', $s); + if (x($_SERVER, 'SERVER_NAME')) { + $s = escape_tags($s); } + return $s; } - // Procedural functions -if (! function_exists('dbg')) { - function dbg($state) - { - global $db; - $db->dbg($state); - } +function dbg($state) +{ + global $db; + $db->dbg($state); } -if (! function_exists('dbesc')) { - function dbesc($str) - { - global $db; - if ($db) { - return($db->escape($str)); - } +function dbesc($str) +{ + global $db; + if ($db) { + return($db->escape($str)); } } - // Function: q($sql,$args); // Description: execute SQL query with printf style args. // Example: $r = q("SELECT * FROM `%s` WHERE `uid` = %d", // 'user', 1); -if (! function_exists('q')) { - function q($sql) - { - global $db; - $args = func_get_args(); - unset($args[0]); - if ($db) { - $ret = $db->q(vsprintf($sql, $args)); - } +function q($sql) +{ + global $db; + $args = func_get_args(); + unset($args[0]); + + $ret = null; + + if ($db) { + $ret = $db->q(vsprintf($sql, $args)); + if ($db->db->errno) { logger('dba: ' . $db->db->error); } - - - return $ret; + } else { + error_log(__FILE__ . ':' . __LINE__ . ' $db has gone'); } -} + return $ret; +} // Caller is responsible for ensuring that any integer arguments to // dbesc_array are actually integers and not malformed strings containing // SQL injection vectors. All integer array elements should be specifically // cast to int to avoid trouble. - - -if (! function_exists('dbesc_array_cb')) { - function dbesc_array_cb(&$item, $key) - { - if (is_string($item)) { - $item = dbesc($item); - } +function dbesc_array_cb(&$item, $key) +{ + if (is_string($item)) { + $item = dbesc($item); } } - -if (! function_exists('dbesc_array')) { - function dbesc_array(&$arr) - { - if (is_array($arr) && count($arr)) { - array_walk($arr, 'dbesc_array_cb'); - } - } -} - - -if (! function_exists('closedb')) { - function closedb() - { - global $db; -// $db->close(); +function dbesc_array(&$arr) +{ + if (is_array($arr) && count($arr)) { + array_walk($arr, 'dbesc_array_cb'); } } diff --git a/include/session.php b/include/session.php index 6c32e299..e51dbc1b 100644 --- a/include/session.php +++ b/include/session.php @@ -1,68 +1,73 @@ module_loaded) { if ((!$a->error) && (function_exists($a->module . '_content'))) { $func = $a->module . '_content'; $a->page['content'] = $func($a); + + killme(); } } @@ -113,8 +115,4 @@ $template = 'view/' require_once $template; -session_write_close(); - -closedb(); - -exit; +killme(); diff --git a/src/Rendering/View.php b/src/Rendering/View.php index 5b6d87f7..9d7e9862 100644 --- a/src/Rendering/View.php +++ b/src/Rendering/View.php @@ -1,4 +1,6 @@ -helpers; - } - - public function addHelper($name, Closure $helper) - { - $this->helpers[$name] = $helper; - } - - public function getView(){ - return $this->view; - } + #TODO: Replace this with better code. - public function setView($value){ - $this->view = $value; - } + protected $layout; + protected $view; + protected $helpers; - public function getLayout(){ - return $this->layout; - } + public static function getViewPath($name) + { + return dirname(__DIR__) . '/templates/view/' . $name . '.php'; + } - public function setLayout($value){ - $this->layout = $value; - } + public static function getLayoutPath($name) + { + return dirname(__DIR__) . '/templates/layout/' . $name . '.php'; + } - public function __construct($view=null, $layout="default") - { - - $this->view = $view; - $this->layout = $layout; - $this->helpers = array(); - - } + public function getHelpers() + { + return $this->helpers; + } - public function render(array $data=array()) - { - - //First the outer view. - $view = self::getViewPath($this->view); - $viewContent = $this->encapsulatedRequire($view, $data); - - //Then the layout, including the view as $content. - $data['content'] = $viewContent; - $layout = self::getLayoutPath($this->layout); - return $this->encapsulatedRequire($layout, $data); - - } - - public function output(array $data=array()) - { - - header("Content-type: text/html; charset=utf-8"); - echo $this->render($data); - exit; - - } - - public function encapsulatedRequire($filename, array $data=null) - { - - //This will provide our variables on the global scope. - $call = function($__FILE__, $__VARS__){ - extract($__VARS__, EXTR_SKIP); - require $__FILE__; - }; - - //Use our current data as fallback. - if(!is_array($data)){ - $data = $this->currentData; - } - - //This will add the helper class to $this. - $helpers = new ViewHelpers($this, $data); - $call = $call->bindTo($helpers, get_class($helpers)); - - //Run and return the value. - ob_start(); - $call($filename, $data); - return ob_get_clean(); - - } - -} \ No newline at end of file + public function addHelper($name, Closure $helper) + { + $this->helpers[$name] = $helper; + } + + public function getView() + { + return $this->view; + } + + public function setView($value) + { + $this->view = $value; + } + + public function getLayout() + { + return $this->layout; + } + + public function setLayout($value) + { + $this->layout = $value; + } + + public function __construct($view = null, $layout = "default") + { + $this->view = $view; + $this->layout = $layout; + $this->helpers = array(); + } + + public function render(array $data = array()) + { + //First the outer view. + $view = self::getViewPath($this->view); + $viewContent = $this->encapsulatedRequire($view, $data); + + //Then the layout, including the view as $content. + $data['content'] = $viewContent; + $layout = self::getLayoutPath($this->layout); + return $this->encapsulatedRequire($layout, $data); + } + + public function output(array $data = array()) + { + header("Content-type: text/html; charset=utf-8"); + echo $this->render($data); + } + + public function encapsulatedRequire($filename, array $data = null) + { + //This will provide our variables on the global scope. + $call = function($__FILE__, $__VARS__) { + extract($__VARS__, EXTR_SKIP); + require $__FILE__; + }; + + //Use our current data as fallback. + if (!is_array($data)) { + $data = $this->currentData; + } + + //This will add the helper class to $this. + $helpers = new ViewHelpers($this, $data); + $call = $call->bindTo($helpers, get_class($helpers)); + + //Run and return the value. + ob_start(); + $call($filename, $data); + return ob_get_clean(); + } +}