diff --git a/addon/README b/addon/README index c6931c2b3..89f39e399 100644 --- a/addon/README +++ b/addon/README @@ -138,6 +138,12 @@ Current hooks: 'contact_edit_post' - called when posting the contact edit page $b is the $_POST array +'init_1' - called just after DB has been opened and before session start + $b is not used or passed + +'page_end' - called after HTML content functions have completed + $b is (string) HTML of content div + @@ -149,17 +155,17 @@ Current hooks: Not yet documented: -'atom_feed' +'atom_feed' *** -'atom_feed_end' +'atom_feed_end' *** -'parse_atom' +'parse_atom' *** -'atom_author' +'atom_author' *** -'atom_entry' +'atom_entry' *** -'parse_link' +'parse_link' *** diff --git a/include/dba.php b/include/dba.php index ae3a4957b..e58abb1a1 100644 --- a/include/dba.php +++ b/include/dba.php @@ -46,7 +46,7 @@ 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; @@ -114,7 +114,10 @@ function dbg($state) { if(! function_exists('dbesc')) { function dbesc($str) { global $db; - return($db->escape($str)); + if($db) + return($db->escape($str)); + else + return(str_replace("'","\\'",$str)); }} @@ -129,11 +132,29 @@ function q($sql) { global $db; $args = func_get_args(); unset($args[0]); - $ret = $db->q(vsprintf($sql,$args)); - return $ret; + + if($db) { + $ret = $db->q(vsprintf($sql,$args)); + return $ret; + } + + /** + * + * This will happen occasionally trying to store the + * session data after abnormal program termination + * + */ + + logger('dba: no database: ' . print_r($args,true)); + return false; + }} -// raw db query, no arguments +/** + * + * Raw db query, no arguments + * + */ if(! function_exists('dbq')) { function dbq($sql) { diff --git a/include/poller.php b/include/poller.php index 3d13a5480..28e421f5f 100644 --- a/include/poller.php +++ b/include/poller.php @@ -26,7 +26,9 @@ proc_close(proc_open("\"$php_path\" \"include/queue.php\" &", array(), $foo)); + $hub_update = false; $force = false; + if(($argc > 1) && ($argv[1] == 'force')) $force = true; diff --git a/index.php b/index.php index 38684a00a..1c0696781 100644 --- a/index.php +++ b/index.php @@ -64,8 +64,11 @@ $db = new dba($db_host, $db_user, $db_pass, $db_data, $install); if(! $install) { require_once("session.php"); load_hooks(); + call_hooks('init_1'); } + + require_once("datetime.php"); date_default_timezone_set(($default_timezone) ? $default_timezone : 'UTC'); @@ -145,6 +148,16 @@ if(strlen($a->module)) { } } +/* initialise content region */ + +if(! x($a->page,'content')) + $a->page['content'] = ''; + + +/** + * Call module functions + */ + if($a->module_loaded) { $a->page['page_title'] = $a->module; if(function_exists($a->module . '_init')) { @@ -166,8 +179,6 @@ if($a->module_loaded) { if((! $a->error) && (function_exists($a->module . '_content'))) { $func = $a->module . '_content'; - if(! x($a->page,'content')) - $a->page['content'] = ''; $a->page['content'] .= $func($a); } @@ -202,6 +213,10 @@ if(x($_SESSION,'sysmsg')) { unset($_SESSION['sysmsg']); } + +call_hooks('page_end', $a->page['content']); + + /** * * Add a place for the pause/resume Ajax indicator @@ -226,6 +241,7 @@ if($a->module != 'install') * Make sure the desired theme exists, though if the default theme doesn't exist we're stuffed. * */ + $default_theme = ((isset($a->config['system']['theme'])) ? $a->config['system']['theme'] : 'default'); if((x($_SESSION,'theme')) && (! file_exists('view/theme/' . $_SESSION['theme'] . '/style.css'))) unset($_SESSION['theme']);