X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fplugin.php;h=0059b7d86e18e5e1c9a1b36704dbe70ad93937d1;hb=c4d3ab68785122ff070c65a444aaa0833b746b2b;hp=d5bceafdea82406e6b9ff770e647d325bfcbd50e;hpb=541d6ab8959fe3c069996e230def126c154da34d;p=friendica.git diff --git a/include/plugin.php b/include/plugin.php index d5bceafdea..0059b7d86e 100644 --- a/include/plugin.php +++ b/include/plugin.php @@ -6,7 +6,9 @@ */ use Friendica\App; +use Friendica\Core\Config; use Friendica\Core\System; +use Friendica\Database\DBM; /** * @brief uninstalls an addon. @@ -14,19 +16,16 @@ use Friendica\Core\System; * @param string $plugin name of the addon * @return boolean */ -if (! function_exists('uninstall_plugin')){ -function uninstall_plugin($plugin){ +function uninstall_plugin($plugin) { logger("Addons: uninstalling " . $plugin); - q("DELETE FROM `addon` WHERE `name` = '%s' ", - dbesc($plugin) - ); + dba::delete('addon', ['name' => $plugin]); @include_once('addon/' . $plugin . '/' . $plugin . '.php'); if (function_exists($plugin . '_uninstall')) { $func = $plugin . '_uninstall'; $func(); } -}} +} /** * @brief installs an addon. @@ -34,12 +33,12 @@ function uninstall_plugin($plugin){ * @param string $plugin name of the addon * @return bool */ -if (! function_exists('install_plugin')){ function install_plugin($plugin) { // silently fail if plugin was removed - if (! file_exists('addon/' . $plugin . '/' . $plugin . '.php')) + if (!file_exists('addon/' . $plugin . '/' . $plugin . '.php')) { return false; + } logger("Addons: installing " . $plugin); $t = @filemtime('addon/' . $plugin . '/' . $plugin . '.php'); @include_once('addon/' . $plugin . '/' . $plugin . '.php'); @@ -49,37 +48,35 @@ function install_plugin($plugin) { $plugin_admin = (function_exists($plugin."_plugin_admin") ? 1 : 0); - dba::insert('addon', array('name' => $plugin, 'installed' => true, - 'timestamp' => $t, 'plugin_admin' => $plugin_admin)); + dba::insert('addon', ['name' => $plugin, 'installed' => true, + 'timestamp' => $t, 'plugin_admin' => $plugin_admin]); // we can add the following with the previous SQL // once most site tables have been updated. // This way the system won't fall over dead during the update. if (file_exists('addon/' . $plugin . '/.hidden')) { - dba::update('addon', array('hidden' => true), array('name' => $plugin)); + dba::update('addon', ['hidden' => true], ['name' => $plugin]); } return true; - } - else { + } else { logger("Addons: FAILED installing " . $plugin); return false; } - -}} +} // reload all updated plugins -if (! function_exists('reload_plugins')) { function reload_plugins() { - $plugins = get_config('system','addon'); + $plugins = Config::get('system', 'addon'); if (strlen($plugins)) { $r = q("SELECT * FROM `addon` WHERE `installed` = 1"); - if (dbm::is_result($r)) + if (DBM::is_result($r)) { $installed = $r; - else - $installed = array(); + } else { + $installed = []; + } $parr = explode(',',$plugins); @@ -105,7 +102,7 @@ function reload_plugins() { $func = $pl . '_install'; $func(); } - dba::update('addon', array('timestamp' => $t), array('id' => $i['id'])); + dba::update('addon', ['timestamp' => $t], ['id' => $i['id']]); } } } @@ -113,7 +110,7 @@ function reload_plugins() { } } -}} +} /** * @brief check if addon is enabled @@ -122,7 +119,7 @@ function reload_plugins() { * @return boolean */ function plugin_enabled($plugin) { - return dba::exists('addon', array('installed' => true, 'name' => $plugin)); + return dba::exists('addon', ['installed' => true, 'name' => $plugin]); } @@ -135,21 +132,17 @@ function plugin_enabled($plugin) { * @param int $priority A priority (defaults to 0) * @return mixed|bool */ -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", - dbesc($hook), - dbesc($file), - dbesc($function) - ); - if (dbm::is_result($r)) +function register_hook($hook, $file, $function, $priority=0) { + $condition = ['hook' => $hook, 'file' => $file, 'function' => $function]; + $exists = dba::exists('hook', $condition); + if ($exists) { return true; + } - $r = dba::insert('hook', array('hook' => $hook, 'file' => $file, 'function' => $function, 'priority' => $priority)); + $r = dba::insert('hook', ['hook' => $hook, 'file' => $file, 'function' => $function, 'priority' => $priority]); return $r; -}} +} /** * @brief unregisters a hook. @@ -159,28 +152,23 @@ function register_hook($hook,$file,$function,$priority=0) { * @param string $function the name of the function that the hook called * @return array */ -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'", - dbesc($hook), - dbesc($file), - dbesc($function) - ); +function unregister_hook($hook, $file, $function) { + $condition = ['hook' => $hook, 'file' => $file, 'function' => $function]; + $r = dba::delete('hook', $condition); return $r; -}} +} function load_hooks() { $a = get_app(); - $a->hooks = array(); - $r = dba::select('hook', array('hook', 'file', 'function'), array(), array('order' => array('priority' => 'desc', 'file'))); + $a->hooks = []; + $r = dba::select('hook', ['hook', 'file', 'function'], [], ['order' => ['priority' => 'desc', 'file']]); while ($rr = dba::fetch($r)) { if (! array_key_exists($rr['hook'],$a->hooks)) { - $a->hooks[$rr['hook']] = array(); + $a->hooks[$rr['hook']] = []; } - $a->hooks[$rr['hook']][] = array($rr['file'],$rr['function']); + $a->hooks[$rr['hook']][] = [$rr['file'],$rr['function']]; } dba::close($r); } @@ -194,14 +182,15 @@ function load_hooks() { * @param string $name of the hook to call * @param string|array &$data to transmit to the callback handler */ -function call_hooks($name, &$data = null) { - $stamp1 = microtime(true); - +function call_hooks($name, &$data = null) +{ $a = get_app(); - if (is_array($a->hooks) && array_key_exists($name, $a->hooks)) - foreach ($a->hooks[$name] as $hook) + if (is_array($a->hooks) && array_key_exists($name, $a->hooks)) { + foreach ($a->hooks[$name] as $hook) { call_single_hook($a, $name, $hook, $data); + } + } } /** @@ -222,17 +211,13 @@ function call_single_hook($a, $name, $hook, &$data = null) { $func($a, $data); } else { // remove orphan hooks - q("DELETE FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s'", - dbesc($name), - dbesc($hook[0]), - dbesc($hook[1]) - ); + $condition = ['hook' => $name, 'file' => $hook[0], 'function' => $hook[1]]; + dba::delete('hook', $condition); } } //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(); @@ -244,7 +229,7 @@ function plugin_is_app($name) { } return false; -}} +} /** * @brief Parse plugin comment in search of plugin infos. @@ -262,18 +247,17 @@ function plugin_is_app($name) { * @return array with the plugin information */ -if (! function_exists('get_plugin_info')){ -function get_plugin_info($plugin){ +function get_plugin_info($plugin) { $a = get_app(); - $info=Array( + $info=[ 'name' => $plugin, 'description' => "", - 'author' => array(), + 'author' => [], 'version' => "", 'status' => "" - ); + ]; if (!is_file("addon/$plugin/$plugin.php")) return $info; @@ -283,22 +267,22 @@ function get_plugin_info($plugin){ $r = preg_match("|/\*.*\*/|msU", $f, $m); - if ($r){ + if ($r) { $ll = explode("\n", $m[0]); foreach ( $ll as $l ) { $l = trim($l,"\t\n\r */"); - if ($l!=""){ + if ($l != "") { list($k,$v) = array_map("trim", explode(":",$l,2)); $k= strtolower($k); - if ($k=="author"){ + if ($k == "author") { $r=preg_match("|([^<]+)<([^>]+)>|", $v, $m); if ($r) { - $info['author'][] = array('name'=>$m[1], 'link'=>$m[2]); + $info['author'][] = ['name'=>$m[1], 'link'=>$m[2]]; } else { - $info['author'][] = array('name'=>$v); + $info['author'][] = ['name'=>$v]; } } else { - if (array_key_exists($k,$info)){ + if (array_key_exists($k,$info)) { $info[$k]=$v; } } @@ -308,7 +292,7 @@ function get_plugin_info($plugin){ } return $info; -}} +} /** @@ -327,18 +311,17 @@ function get_plugin_info($plugin){ * @return array */ -if (! function_exists('get_theme_info')){ -function get_theme_info($theme){ - $info=Array( +function get_theme_info($theme) { + $info=[ 'name' => $theme, 'description' => "", - 'author' => array(), - 'maintainer' => array(), + 'author' => [], + 'maintainer' => [], 'version' => "", 'credits' => "", 'experimental' => false, 'unsupported' => false - ); + ]; if (file_exists("view/theme/$theme/experimental")) $info['experimental'] = true; @@ -354,31 +337,30 @@ function get_theme_info($theme){ $r = preg_match("|/\*.*\*/|msU", $f, $m); - if ($r){ + if ($r) { $ll = explode("\n", $m[0]); foreach ( $ll as $l ) { $l = trim($l,"\t\n\r */"); - if ($l!=""){ + if ($l != "") { list($k,$v) = array_map("trim", explode(":",$l,2)); $k= strtolower($k); - if ($k=="author"){ + if ($k == "author") { $r=preg_match("|([^<]+)<([^>]+)>|", $v, $m); if ($r) { - $info['author'][] = array('name'=>$m[1], 'link'=>$m[2]); + $info['author'][] = ['name'=>$m[1], 'link'=>$m[2]]; } else { - $info['author'][] = array('name'=>$v); + $info['author'][] = ['name'=>$v]; } - } - elseif ($k=="maintainer"){ + } elseif ($k == "maintainer") { $r=preg_match("|([^<]+)<([^>]+)>|", $v, $m); if ($r) { - $info['maintainer'][] = array('name'=>$m[1], 'link'=>$m[2]); + $info['maintainer'][] = ['name'=>$m[1], 'link'=>$m[2]]; } else { - $info['maintainer'][] = array('name'=>$v); + $info['maintainer'][] = ['name'=>$v]; } } else { - if (array_key_exists($k,$info)){ + if (array_key_exists($k,$info)) { $info[$k]=$v; } } @@ -388,7 +370,7 @@ function get_theme_info($theme){ } return $info; -}} +} /** * @brief Returns the theme's screenshot. @@ -399,7 +381,7 @@ function get_theme_info($theme){ * @return string */ function get_theme_screenshot($theme) { - $exts = array('.png','.jpg'); + $exts = ['.png','.jpg']; foreach ($exts as $ext) { if (file_exists('view/theme/' . $theme . '/screenshot' . $ext)) { return(System::baseUrl() . '/view/theme/' . $theme . '/screenshot' . $ext); @@ -409,8 +391,7 @@ function get_theme_screenshot($theme) { } // install and uninstall theme -if (! function_exists('uninstall_theme')){ -function uninstall_theme($theme){ +function uninstall_theme($theme) { logger("Addons: uninstalling theme " . $theme); include_once("view/theme/$theme/theme.php"); @@ -418,9 +399,8 @@ function uninstall_theme($theme){ $func = "{$theme}_uninstall"; $func(); } -}} +} -if (! function_exists('install_theme')){ function install_theme($theme) { // silently fail if theme was removed @@ -441,96 +421,6 @@ function install_theme($theme) { return false; } -}} - - - -// 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 -// 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. - - -function service_class_allows($uid,$property,$usage = false) { - - if ($uid == local_user()) { - $service_class = $a->user['service_class']; - } else { - $r = q("SELECT `service_class` FROM `user` WHERE `uid` = %d LIMIT 1", - intval($uid) - ); - if (dbm::is_result($r)) { - $service_class = $r[0]['service_class']; - } - } - - if (! x($service_class)) { - // everything is allowed - return true; - } - - $arr = get_config('service_class',$service_class); - if (! is_array($arr) || (! count($arr))) { - return true; - } - - if ($usage === false) { - return ((x($arr[$property])) ? (bool) $arr['property'] : true); - } else { - if (! array_key_exists($property,$arr)) { - return true; - } - return (((intval($usage)) < intval($arr[$property])) ? true : false); - } -} - - -function service_class_fetch($uid,$property) { - - if ($uid == local_user()) { - $service_class = $a->user['service_class']; - } else { - $r = q("SELECT `service_class` FROM `user` WHERE `uid` = %d LIMIT 1", - intval($uid) - ); - if (dbm::is_result($r)) { - $service_class = $r[0]['service_class']; - } - } - if (! x($service_class)) - return false; // everything is allowed - - $arr = get_config('service_class',$service_class); - if (! is_array($arr) || (! count($arr))) - return false; - - return((array_key_exists($property,$arr)) ? $arr[$property] : false); - -} - -function upgrade_link($bbcode = false) { - $l = get_config('service_class','upgrade_link'); - if (! $l) { - return ''; - } - if ($bbcode) { - $t = sprintf('[url=%s]' . t('Click here to upgrade.') . '[/url]', $l); - } else { - $t = sprintf('' . t('Click here to upgrade.') . '', $l); - } - return $t; -} - -function upgrade_message($bbcode = false) { - $x = upgrade_link($bbcode); - return t('This action exceeds the limits set by your subscription plan.') . (($x) ? ' ' . $x : '') ; -} - -function upgrade_bool_message($bbcode = false) { - $x = upgrade_link($bbcode); - return t('This action is not available under your subscription plan.') . (($x) ? ' ' . $x : '') ; } /** @@ -560,11 +450,11 @@ function theme_include($file, $root = '') { $theme = current_theme(); $thname = $theme; $ext = substr($file,strrpos($file,'.')+1); - $paths = array( + $paths = [ "{$root}view/theme/$thname/$ext/$file", "{$root}view/theme/$parent/$ext/$file", "{$root}view/$ext/$file", - ); + ]; foreach ($paths as $p) { // strpos() is faster than strstr when checking if one string is in another (http://php.net/manual/en/function.strstr.php) if (strpos($p,'NOPATH') !== false) {