]> git.mxchange.org Git - friendica.git/commitdiff
Hooks now have a 'priority' value, default to 0.
authorDomovoy <domovoy@errlock.org>
Mon, 23 Jul 2012 13:35:31 +0000 (15:35 +0200)
committerDomovoy <domovoy@errlock.org>
Mon, 23 Jul 2012 13:35:31 +0000 (15:35 +0200)
The hooks are retrieved from the database by descending priority.

As a result they are run in the same order.

include/plugin.php

index ffa562273fb6b3ee8637148867abe8896aae5308..d6f81b8172b7d00dda946b1ee17e5781f14c002a 100644 (file)
@@ -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])) {