mirror of
https://github.com/YunoHost-Apps/hubzilla_ynh.git
synced 2024-09-03 19:26:21 +02:00
107 lines
No EOL
2.7 KiB
PHP
107 lines
No EOL
2.7 KiB
PHP
<?php
|
|
|
|
namespace Zotlabs\Extend;
|
|
|
|
|
|
class Hook {
|
|
|
|
static public function register($hook,$file,$function,$version = 1,$priority = 0) {
|
|
if(is_array($function)) {
|
|
$function = serialize($function);
|
|
}
|
|
|
|
$r = q("SELECT * FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s' and priority = %d and hook_version = %d LIMIT 1",
|
|
dbesc($hook),
|
|
dbesc($file),
|
|
dbesc($function),
|
|
intval($priority),
|
|
intval($version)
|
|
);
|
|
if($r)
|
|
return true;
|
|
|
|
// To aid in upgrade and transition, remove old settings for any registered hooks that match in all respects except
|
|
// for priority or hook_version
|
|
|
|
$r = q("DELETE FROM `hook` where `hook` = '%s' and `file` = '%s' and `function` = '%s'",
|
|
dbesc($hook),
|
|
dbesc($file),
|
|
dbesc($function)
|
|
);
|
|
|
|
$r = q("INSERT INTO `hook` (`hook`, `file`, `function`, `priority`, `hook_version`) VALUES ( '%s', '%s', '%s', %d, %d )",
|
|
dbesc($hook),
|
|
dbesc($file),
|
|
dbesc($function),
|
|
intval($priority),
|
|
intval($version)
|
|
);
|
|
|
|
return $r;
|
|
}
|
|
|
|
static public function unregister($hook,$file,$function,$version = 1,$priority = 0) {
|
|
if(is_array($function)) {
|
|
$function = serialize($function);
|
|
}
|
|
$r = q("DELETE FROM hook WHERE hook = '%s' AND `file` = '%s' AND `function` = '%s' and priority = %d and hook_version = %d",
|
|
dbesc($hook),
|
|
dbesc($file),
|
|
dbesc($function),
|
|
intval($priority),
|
|
intval($version)
|
|
);
|
|
|
|
return $r;
|
|
}
|
|
|
|
// unregister all hooks with this file component.
|
|
// Useful for addon upgrades where you want to clean out old interfaces.
|
|
|
|
static public function unregister_by_file($file) {
|
|
|
|
$r = q("DELETE FROM hook WHERE `file` = '%s' ",
|
|
dbesc($file)
|
|
);
|
|
|
|
return $r;
|
|
}
|
|
|
|
|
|
/**
|
|
* @brief Inserts a hook into a page request.
|
|
*
|
|
* Insert a short-lived hook into the running page request.
|
|
* Hooks are normally persistent so that they can be called
|
|
* across asynchronous processes such as delivery and poll
|
|
* processes.
|
|
*
|
|
* insert_hook lets you attach a hook callback immediately
|
|
* which will not persist beyond the life of this page request
|
|
* or the current process.
|
|
*
|
|
* @param string $hook
|
|
* name of hook to attach callback
|
|
* @param string $fn
|
|
* function name of callback handler
|
|
* @param int $version
|
|
* hook interface version, 0 uses two callback params, 1 uses one callback param
|
|
* @param int $priority
|
|
* currently not implemented in this function, would require the hook array to be resorted
|
|
*/
|
|
|
|
static public function insert($hook, $fn, $version = 0, $priority = 0) {
|
|
if(is_array($fn)) {
|
|
$fn = serialize($fn);
|
|
}
|
|
|
|
if(! is_array(App::$hooks))
|
|
App::$hooks = array();
|
|
|
|
if(! array_key_exists($hook, App::$hooks))
|
|
App::$hooks[$hook] = array();
|
|
|
|
App::$hooks[$hook][] = array('', $fn, $priority, $version);
|
|
}
|
|
|
|
} |