From: Domovoy <domovoy@errlock.org>
Date: Mon, 23 Jul 2012 13:35:31 +0000 (+0200)
Subject: Hooks now have a 'priority' value, default to 0.
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=d6c600ce112d29cc05dc241246c5124c9447f321;p=friendica.git

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.
---

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])) {