diff --git a/admin/inc/class.boapplications.inc.php b/admin/inc/class.boapplications.inc.php index 8b46b13954..151901f7b6 100644 --- a/admin/inc/class.boapplications.inc.php +++ b/admin/inc/class.boapplications.inc.php @@ -13,6 +13,10 @@ class boapplications { + var $public_functions = array( + 'register_all_hooks' => True + ); + var $so; function boapplications() @@ -54,4 +58,37 @@ { return $this->so->delete($app_name); } + + function register_hook($hook_app) + { + return $this->so->register_hook($hook_app); + } + + function register_all_hooks() + { + $SEP = filesystem_separator(); + $app_list = $this->get_list(); + $hooks = CreateObject('phpgwapi.hooks'); + while(list($app_name,$app) = each($app_list)) + { + $f = PHPGW_SERVER_ROOT . $SEP . $app_name . $SEP . 'setup' . $SEP . 'setup.inc.php'; + if(@file_exists($f)) + { + include($f); + while(list(,$hook) = each($setup_info[$app_name]['hooks'])) + { + if(!$hooks->found_hooks[$hook][$appname]) + { + $this->register_hook( + Array( + 'app_name' => $app_name, + 'hook' => $hook + ) + ); + } + } + } + } + Header('Location: '.$GLOBALS['phpgw']->link('/admin/index.php')); + } } diff --git a/admin/inc/class.soapplications.inc.php b/admin/inc/class.soapplications.inc.php index 54cf4046a4..1e349590f2 100644 --- a/admin/inc/class.soapplications.inc.php +++ b/admin/inc/class.soapplications.inc.php @@ -38,7 +38,7 @@ function get_list() { - $this->db->query("SELECT * FROM phpgw_applications WHERE app_enabled<3",__LINE__,__FILE__); + $this->db->query('SELECT * FROM phpgw_applications WHERE app_enabled<3',__LINE__,__FILE__); if($this->db->num_rows()) { while ($this->db->next_record()) @@ -59,11 +59,11 @@ /* Yes, the sequence should work, but after a mass import in setup (new install) it does not work on pg */ - $sql = "SELECT MAX(app_id) from phpgw_applications"; + $sql = 'SELECT MAX(app_id) from phpgw_applications'; $this->db->query($sql,__LINE__,__FILE__); $this->db->next_record(); $app_id = $this->db->f(0) + 1; - $sql = "INSERT INTO phpgw_applications (app_id,app_name,app_title,app_enabled,app_order) VALUES(" + $sql = 'INSERT INTO phpgw_applications (app_id,app_name,app_title,app_enabled,app_order) VALUES(' . $app_id . ",'" . addslashes($data['n_app_name']) . "','" . addslashes($data['n_app_title']) . "','" . $data['n_app_status'] . "','" . $data['app_order'] . "')"; @@ -95,7 +95,7 @@ function app_order() { - $this->db->query("SELECT (MAX(app_order)+1) AS max FROM phpgw_applications"); + $this->db->query('SELECT (MAX(app_order)+1) AS max FROM phpgw_applications',__LINE__,__FILE__); $this->db->next_record(); return $this->db->f('max'); } @@ -104,4 +104,11 @@ { $this->db->query("DELETE FROM phpgw_applications WHERE app_name='$app_name'",__LINE__,__FILE__); } + + function register_hook($app) + { + $this->db->query("INSERT INTO phpgw_hooks(hook_appname,hook_location,hook_filename) " + . "VALUES ('".$app['app_name']."','".$app['hook']."','hook_".$app['hook'].".inc.php')",__LINE__,__FILE__ + ); + } } diff --git a/admin/inc/hook_admin.inc.php b/admin/inc/hook_admin.inc.php index 5cc6b40c78..d3be114426 100644 --- a/admin/inc/hook_admin.inc.php +++ b/admin/inc/hook_admin.inc.php @@ -54,6 +54,7 @@ /* These need to be added still */ $file['View Access Log'] = $GLOBALS['phpgw']->link('/index.php','menuaction=admin.uiaccess_history.list_history'); $file['View Error Log'] = $GLOBALS['phpgw']->link('/index.php','menuaction=admin.uilog.list_log'); + $file['Find and Register all Application Hooks'] = $GLOBALS['phpgw']->link('/index.php','menuaction=admin.boapplications.register_all_hooks'); $file['phpInfo'] = "javascript:openwindow('" . $GLOBALS['phpgw']->link('/admin/phpinfo.php') . "')"; //$GLOBALS['phpgw']->link('/admin/phpinfo.php'); /* Do not modify below this line */