diff options
Diffstat (limited to 'include/plugin.php')
-rwxr-xr-x[-rw-r--r--] | include/plugin.php | 173 |
1 files changed, 87 insertions, 86 deletions
diff --git a/include/plugin.php b/include/plugin.php index 6660fba59..01ee99786 100644..100755 --- a/include/plugin.php +++ b/include/plugin.php @@ -1,26 +1,43 @@ -<?php +<?php /** @file */ require_once("include/friendica_smarty.php"); // install and uninstall plugin -if (! function_exists('uninstall_plugin')){ -function uninstall_plugin($plugin){ - logger("Addons: uninstalling " . $plugin, LOGGER_DEBUG); - q("DELETE FROM `addon` WHERE `name` = '%s' ", - dbesc($plugin) - ); + +function unload_plugin($plugin){ + logger("Addons: unloading " . $plugin, LOGGER_DEBUG); @include_once('addon/' . $plugin . '/' . $plugin . '.php'); + if(function_exists($plugin . '_unload')) { + $func = $plugin . '_unload'; + $func(); + } +} + + + +function uninstall_plugin($plugin) { + + unload_plugin($plugin); + + if(! file_exists('addon/' . $plugin . '/' . $plugin . '.php')) + return false; + + logger("Addons: uninstalling " . $plugin); + $t = @filemtime('addon/' . $plugin . '/' . $plugin . '.php'); + @include_once('addon/' . $plugin . '/' . $plugin . '.php'); if(function_exists($plugin . '_uninstall')) { $func = $plugin . '_uninstall'; $func(); } -}} -if (! function_exists('install_plugin')){ -function install_plugin($plugin) { - // silently fail if plugin was removed + q("DELETE FROM `addon` WHERE `name` = '%s' ", + dbesc($plugin) + ); +} + +function install_plugin($plugin) { if(! file_exists('addon/' . $plugin . '/' . $plugin . '.php')) return false; @@ -30,14 +47,34 @@ function install_plugin($plugin) { if(function_exists($plugin . '_install')) { $func = $plugin . '_install'; $func(); + } + + $plugin_admin = (function_exists($plugin . "_plugin_admin") ? 1 : 0); - $plugin_admin = (function_exists($plugin . "_plugin_admin") ? 1 : 0); + $r = q("INSERT INTO `addon` (`name`, `installed`, `timestamp`, `plugin_admin`) VALUES ( '%s', 1, %d , %d ) ", + dbesc($plugin), + intval($t), + $plugin_admin + ); + + load_plugin($plugin); + +} + + +function load_plugin($plugin) { + // silently fail if plugin was removed + + if(! file_exists('addon/' . $plugin . '/' . $plugin . '.php')) + return false; + + logger("Addons: loading " . $plugin); + $t = @filemtime('addon/' . $plugin . '/' . $plugin . '.php'); + @include_once('addon/' . $plugin . '/' . $plugin . '.php'); + if(function_exists($plugin . '_load')) { + $func = $plugin . '_load'; + $func(); - $r = q("INSERT INTO `addon` (`name`, `installed`, `timestamp`, `plugin_admin`) VALUES ( '%s', 1, %d , %d ) ", - dbesc($plugin), - intval($t), - $plugin_admin - ); // we can add the following with the previous SQL // once most site tables have been updated. @@ -51,15 +88,14 @@ function install_plugin($plugin) { return true; } else { - logger("Addons: FAILED installing " . $plugin); + logger("Addons: FAILED loading " . $plugin); return false; } -}} +} // reload all updated plugins -if(! function_exists('reload_plugins')) { function reload_plugins() { $plugins = get_config('system','addon'); if(strlen($plugins)) { @@ -86,12 +122,12 @@ function reload_plugins() { logger('Reloading plugin: ' . $i['name']); @include_once($fname); - if(function_exists($pl . '_uninstall')) { - $func = $pl . '_uninstall'; + if(function_exists($pl . '_unload')) { + $func = $pl . '_unload'; $func(); } - if(function_exists($pl . '_install')) { - $func = $pl . '_install'; + if(function_exists($pl . '_load')) { + $func = $pl . '_load'; $func(); } q("UPDATE `addon` SET `timestamp` = %d WHERE `id` = %d LIMIT 1", @@ -104,14 +140,13 @@ function reload_plugins() { } } } - -}} +} -if(! function_exists('register_hook')) { + function register_hook($hook,$file,$function,$priority=0) { $r = q("SELECT * FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s' LIMIT 1", @@ -129,18 +164,18 @@ function register_hook($hook,$file,$function,$priority=0) { dbesc($priority) ); return $r; -}} +} + -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' LIMIT 1", dbesc($hook), dbesc($file), dbesc($function) ); return $r; -}} +} // @@ -148,22 +183,22 @@ function unregister_hook($hook,$file,$function) { // array in their theme_init() and use this to customise the app behaviour. // -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"); - if(count($r)) { + $r = q("SELECT * FROM hook WHERE true ORDER BY priority DESC"); + if($r) { foreach($r as $rr) { if(! array_key_exists($rr['hook'],$a->hooks)) $a->hooks[$rr['hook']] = array(); $a->hooks[$rr['hook']][] = array($rr['file'],$rr['function']); } } -}} +} + -if(! function_exists('call_hooks')) { function call_hooks($name, &$data = null) { $a = get_app(); @@ -185,7 +220,7 @@ function call_hooks($name, &$data = null) { } } -}} +} /* @@ -201,7 +236,7 @@ function call_hooks($name, &$data = null) { * * */ -if (! function_exists('get_plugin_info')){ + function get_plugin_info($plugin){ $info=Array( 'name' => $plugin, @@ -241,7 +276,7 @@ function get_plugin_info($plugin){ } return $info; -}} +} /* @@ -257,7 +292,7 @@ function get_plugin_info($plugin){ * * */ -if (! function_exists('get_theme_info')){ + function get_theme_info($theme){ $info=Array( 'name' => $theme, @@ -316,7 +351,7 @@ function get_theme_info($theme){ } return $info; -}} +} function get_theme_screenshot($theme) { @@ -397,7 +432,7 @@ function upgrade_link($bbcode = false) { if(! $l) return ''; if($bbcode) - $t = sprintf('[url=%s]' . t('Click here to upgrade.') . '[/url]', $l); + $t = sprintf('[zrl=%s]' . t('Click here to upgrade.') . '[/zrl]', $l); else $t = sprintf('<a href="%s">' . t('Click here to upgrade.') . '</div>', $l); return $t; @@ -503,55 +538,21 @@ function theme_include($file, $root = '') { -if(! function_exists('get_intltext_template')) { -function get_intltext_template($s) { - global $a; - if(! isset($a->language)) - $a->language = 'en'; +function get_intltext_template($s, $root = '') { + $a = get_app(); + $t = $a->template_engine(); - $engine = ''; - if($a->get_template_engine() === 'smarty3') - $engine = "/smarty3"; + $template = $t->get_intltext_template($s, $root); + return $template; - $file = ''; - if(file_exists("view/{$a->language}$engine/$s")) - $file = "view/{$a->language}$engine/$s"; - elseif(file_exists("view/en$engine/$s")) - $file = "view/en$engine/$s"; - else - $file = "view/tpl/$engine/$s"; - if($engine === '/smarty3') { - $template = new FriendicaSmarty(); - $template->filename = $file; - - return $template; - } - else - return file_get_contents($file); +} -}} -if(! function_exists('get_markup_template')) { function get_markup_template($s, $root = '') { - $a = get_app(); - - $template_eng = $a->get_template_engine(); - if($template_eng === 'internal') { - $template_file = theme_include($s, $root); - if($template_file) - return file_get_contents($template_file); - } - else { - $template_file = theme_include("$template_eng/$s", $root); - - if($template_file) { - $template = new FriendicaSmarty(); - $template->filename = $template_file; - - return $template; - } - } -}} + $t = $a->template_engine(); + $template = $t->get_markup_template($s, $root); + return $template; +} |