From d6c600ce112d29cc05dc241246c5124c9447f321 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Mon, 23 Jul 2012 15:35:31 +0200 Subject: [PATCH] Hooks now have a 'priority' value, default to 0. The hooks are retrieved from the database by descending priority. As a result they are run in the same order. --- include/plugin.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/include/plugin.php b/include/plugin.php index ffa562273f..d6f81b8172 100644 --- a/include/plugin.php +++ b/include/plugin.php @@ -111,7 +111,7 @@ function reload_plugins() { if(! function_exists('register_hook')) { -function register_hook($hook,$file,$function) { +function register_hook($hook,$file,$function,$priority=0) { $r = q("SELECT * FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s' LIMIT 1", dbesc($hook), @@ -121,10 +121,11 @@ function register_hook($hook,$file,$function) { if(count($r)) return true; - $r = q("INSERT INTO `hook` (`hook`, `file`, `function`) VALUES ( '%s', '%s', '%s' ) ", + $r = q("INSERT INTO `hook` (`hook`, `file`, `function`, `priority`) VALUES ( '%s', '%s', '%s', '%s' ) ", dbesc($hook), dbesc($file), - dbesc($function) + dbesc($function), + dbesc($priority) ); return $r; }} @@ -145,7 +146,7 @@ if(! function_exists('load_hooks')) { function load_hooks() { $a = get_app(); $a->hooks = array(); - $r = q("SELECT * FROM `hook` WHERE 1"); + $r = q("SELECT * FROM `hook` WHERE 1 ORDER BY `priority` DESC"); if(count($r)) { foreach($r as $rr) { if(! array_key_exists($rr['hook'],$a->hooks)) @@ -161,6 +162,7 @@ function call_hooks($name, &$data = null) { $a = get_app(); if((is_array($a->hooks)) && (array_key_exists($name,$a->hooks))) { + logger('call_hooks ' . print_r($a->hooks[$name],true) , LOGGER_DEBUG); foreach($a->hooks[$name] as $hook) { @include_once($hook[0]); if(function_exists($hook[1])) {