]> git.mxchange.org Git - friendica.git/blobdiff - include/plugin.php
Merge pull request #2016 from fabrixxm/template_vars_hook
[friendica.git] / include / plugin.php
index b89cb2c53dc4cb0ef6089fc16972b4b0db5d587b..5a4755c319bd6d06f7014b9e4bc7844523602d1a 100644 (file)
@@ -42,7 +42,7 @@ function install_plugin($plugin) {
                // This way the system won't fall over dead during the update.
 
                if(file_exists('addon/' . $plugin . '/.hidden')) {
-                       q("update addon set hidden = 1 where name = '%s' limit 1",
+                       q("update addon set hidden = 1 where name = '%s'",
                                dbesc($plugin)
                        );
                }
@@ -80,7 +80,7 @@ function reload_plugins() {
                                if(file_exists($fname)) {
                                        $t = @filemtime($fname);
                                        foreach($installed as $i) {
-                                               if(($i['name'] == $pl) && ($i['timestamp'] != $t)) {    
+                                               if(($i['name'] == $pl) && ($i['timestamp'] != $t)) {
                                                        logger('Reloading plugin: ' . $i['name']);
                                                        @include_once($fname);
 
@@ -92,7 +92,7 @@ function reload_plugins() {
                                                                $func = $pl . '_install';
                                                                $func();
                                                        }
-                                                       q("UPDATE `addon` SET `timestamp` = %d WHERE `id` = %d LIMIT 1",
+                                                       q("UPDATE `addon` SET `timestamp` = %d WHERE `id` = %d",
                                                                intval($t),
                                                                intval($i['id'])
                                                        );
@@ -104,7 +104,7 @@ function reload_plugins() {
        }
 
 }}
-                               
+
 
 
 
@@ -132,7 +132,7 @@ function register_hook($hook,$file,$function,$priority=0) {
 if(! function_exists('unregister_hook')) {
 function unregister_hook($hook,$file,$function) {
 
-       $r = q("DELETE FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s' LIMIT 1",
+       $r = q("DELETE FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s'",
                dbesc($hook),
                dbesc($file),
                dbesc($function)
@@ -145,7 +145,7 @@ if(! function_exists('load_hooks')) {
 function load_hooks() {
        $a = get_app();
        $a->hooks = array();
-       $r = q("SELECT * FROM `hook` WHERE 1 ORDER BY `priority` DESC");
+       $r = q("SELECT * FROM `hook` WHERE 1 ORDER BY `priority` DESC, `file`");
        if(count($r)) {
                foreach($r as $rr) {
                        if(! array_key_exists($rr['hook'],$a->hooks))
@@ -162,6 +162,8 @@ function call_hooks($name, &$data = null) {
 
        $a = get_app();
 
+       #logger($name, LOGGER_ALL);
+
        if((is_array($a->hooks)) && (array_key_exists($name,$a->hooks))) {
                foreach($a->hooks[$name] as $hook) {
                        // Don't run a theme's hook if the user isn't using the theme
@@ -171,11 +173,12 @@ function call_hooks($name, &$data = null) {
                        @include_once($hook[0]);
                        if(function_exists($hook[1])) {
                                $func = $hook[1];
+                               //logger($name." => ".$hook[0].":".$func."()", LOGGER_DEBUG);
                                $func($a,$data);
                        }
                        else {
                                // remove orphan hooks
-                               q("delete from hook where hook = '%s' and file = '%s' and function = '%s' limit 1",
+                               q("delete from hook where hook = '%s' and file = '%s' and function = '%s'",
                                        dbesc($name),
                                        dbesc($hook[0]),
                                        dbesc($hook[1])
@@ -185,11 +188,26 @@ function call_hooks($name, &$data = null) {
        }
 }}
 
+//check if an app_menu hook exist for plugin $name.
+//Return true if the plugin is an app
+if(! function_exists('plugin_is_app')) {
+function plugin_is_app($name) {
+       $a = get_app();
+
+       if(is_array($a->hooks) && (array_key_exists('app_menu',$a->hooks))) {
+               foreach($a->hooks['app_menu'] as $hook) {
+                       if($hook[0] == 'addon/'.$name.'/'.$name.'.php')
+                               return true;
+               }
+       }
+
+       return false;
+}}
 
 /*
  * parse plugin comment in search of plugin infos.
  * like
- *     
+ *
  *      * Name: Plugin
  *   * Description: A plugin which plugs in
  *      * Version: 1.2.3
@@ -207,7 +225,8 @@ function get_plugin_info($plugin){
                'name' => $plugin,
                'description' => "",
                'author' => array(),
-               'version' => ""
+               'version' => "",
+               'status' => ""
        );
 
        if (!is_file("addon/$plugin/$plugin.php")) return $info;
@@ -313,10 +332,10 @@ function get_theme_info($theme){
                                                $info[$k]=$v;
                                        }
                                }
-                               
+
                        }
                }
-               
+
        }
        return $info;
 }}
@@ -336,7 +355,7 @@ function get_theme_screenshot($theme) {
 if (! function_exists('uninstall_theme')){
 function uninstall_theme($theme){
        logger("Addons: uninstalling theme " . $theme);
-    
+
        @include_once("view/theme/$theme/theme.php");
        if(function_exists("{$theme}_uninstall")) {
                $func = "{$theme}_uninstall";
@@ -370,11 +389,11 @@ function install_theme($theme) {
 
 
 // check service_class restrictions. If there are no service_classes defined, everything is allowed.
-// if $usage is supplied, we check against a maximum count and return true if the current usage is 
+// if $usage is supplied, we check against a maximum count and return true if the current usage is
 // less than the subscriber plan allows. Otherwise we return boolean true or false if the property
-// is allowed (or not) in this subscriber plan. An unset property for this service plan means 
-// the property is allowed, so it is only necessary to provide negative properties for each plan, 
-// or what the subscriber is not allowed to do. 
+// is allowed (or not) in this subscriber plan. An unset property for this service plan means
+// the property is allowed, so it is only necessary to provide negative properties for each plan,
+// or what the subscriber is not allowed to do.
 
 
 function service_class_allows($uid,$property,$usage = false) {