X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fplugin.php;h=d5bceafdea82406e6b9ff770e647d325bfcbd50e;hb=69afe503453ab19d6d5137301f9ed9c5f210ca46;hp=0b9c0166aa1762f96e843b501e0b7d72a1463858;hpb=af2909bf8fa971c222bb7b0fca2ccb373c570988;p=friendica.git diff --git a/include/plugin.php b/include/plugin.php index 0b9c0166aa..d5bceafdea 100644 --- a/include/plugin.php +++ b/include/plugin.php @@ -1,10 +1,12 @@ $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')) { - q("UPDATE `addon` SET `hidden` = 1 WHERE `name` = '%s'", - dbesc($plugin) - ); + if (file_exists('addon/' . $plugin . '/.hidden')) { + dba::update('addon', array('hidden' => true), array('name' => $plugin)); } return true; } @@ -73,10 +70,10 @@ function install_plugin($plugin) { // reload all updated plugins -if(! function_exists('reload_plugins')) { +if (! function_exists('reload_plugins')) { function reload_plugins() { $plugins = get_config('system','addon'); - if(strlen($plugins)) { + if (strlen($plugins)) { $r = q("SELECT * FROM `addon` WHERE `installed` = 1"); if (dbm::is_result($r)) @@ -86,32 +83,29 @@ function reload_plugins() { $parr = explode(',',$plugins); - if(count($parr)) { - foreach($parr as $pl) { + if (count($parr)) { + foreach ($parr as $pl) { $pl = trim($pl); $fname = 'addon/' . $pl . '/' . $pl . '.php'; - if(file_exists($fname)) { + if (file_exists($fname)) { $t = @filemtime($fname); - foreach($installed as $i) { - if(($i['name'] == $pl) && ($i['timestamp'] != $t)) { + foreach ($installed as $i) { + if (($i['name'] == $pl) && ($i['timestamp'] != $t)) { logger('Reloading plugin: ' . $i['name']); @include_once($fname); - if(function_exists($pl . '_uninstall')) { + if (function_exists($pl . '_uninstall')) { $func = $pl . '_uninstall'; $func(); } - if(function_exists($pl . '_install')) { + if (function_exists($pl . '_install')) { $func = $pl . '_install'; $func(); } - q("UPDATE `addon` SET `timestamp` = %d WHERE `id` = %d", - intval($t), - intval($i['id']) - ); + dba::update('addon', array('timestamp' => $t), array('id' => $i['id'])); } } } @@ -128,8 +122,7 @@ function reload_plugins() { * @return boolean */ function plugin_enabled($plugin) { - $r = q("SELECT * FROM `addon` WHERE `installed` = 1 AND `name` = '%s'", $plugin); - return ((dbm::is_result($r)) && (count($r) > 0)); + return dba::exists('addon', array('installed' => true, 'name' => $plugin)); } @@ -142,7 +135,7 @@ function plugin_enabled($plugin) { * @param int $priority A priority (defaults to 0) * @return mixed|bool */ -if(! function_exists('register_hook')) { +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", @@ -153,24 +146,20 @@ function register_hook($hook,$file,$function,$priority=0) { if (dbm::is_result($r)) return true; - $r = q("INSERT INTO `hook` (`hook`, `file`, `function`, `priority`) VALUES ( '%s', '%s', '%s', '%s' ) ", - dbesc($hook), - dbesc($file), - dbesc($function), - dbesc($priority) - ); + $r = dba::insert('hook', array('hook' => $hook, 'file' => $file, 'function' => $function, 'priority' => $priority)); + return $r; }} /** * @brief unregisters a hook. - * + * * @param string $hook the name of the hook * @param string $file the name of the file that hooks into * @param string $function the name of the function that the hook called * @return array */ -if(! function_exists('unregister_hook')) { +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'", @@ -182,20 +171,19 @@ function unregister_hook($hook,$file,$function) { }} -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, `file`"); + $r = dba::select('hook', array('hook', 'file', 'function'), array(), array('order' => array('priority' => 'desc', 'file'))); - if (dbm::is_result($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']); + while ($rr = dba::fetch($r)) { + if (! array_key_exists($rr['hook'],$a->hooks)) { + $a->hooks[$rr['hook']] = array(); } + $a->hooks[$rr['hook']][] = array($rr['file'],$rr['function']); } -}} + dba::close($r); +} /** * @brief Calls a hook. @@ -244,13 +232,13 @@ function call_single_hook($a, $name, $hook, &$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')) { +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') + 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; } } @@ -297,7 +285,7 @@ function get_plugin_info($plugin){ if ($r){ $ll = explode("\n", $m[0]); - foreach( $ll as $l ) { + foreach ( $ll as $l ) { $l = trim($l,"\t\n\r */"); if ($l!=""){ list($k,$v) = array_map("trim", explode(":",$l,2)); @@ -325,7 +313,7 @@ function get_plugin_info($plugin){ /** * @brief Parse theme comment in search of theme infos. - * + * * like * \code * ..* Name: My Theme @@ -352,9 +340,9 @@ function get_theme_info($theme){ 'unsupported' => false ); - if(file_exists("view/theme/$theme/experimental")) + if (file_exists("view/theme/$theme/experimental")) $info['experimental'] = true; - if(file_exists("view/theme/$theme/unsupported")) + if (file_exists("view/theme/$theme/unsupported")) $info['unsupported'] = true; if (!is_file("view/theme/$theme/theme.php")) return $info; @@ -368,7 +356,7 @@ function get_theme_info($theme){ if ($r){ $ll = explode("\n", $m[0]); - foreach( $ll as $l ) { + foreach ( $ll as $l ) { $l = trim($l,"\t\n\r */"); if ($l!=""){ list($k,$v) = array_map("trim", explode(":",$l,2)); @@ -412,12 +400,12 @@ function get_theme_info($theme){ */ function get_theme_screenshot($theme) { $exts = array('.png','.jpg'); - foreach($exts as $ext) { - if(file_exists('view/theme/' . $theme . '/screenshot' . $ext)) { - return(App::get_baseurl() . '/view/theme/' . $theme . '/screenshot' . $ext); + foreach ($exts as $ext) { + if (file_exists('view/theme/' . $theme . '/screenshot' . $ext)) { + return(System::baseUrl() . '/view/theme/' . $theme . '/screenshot' . $ext); } } - return(App::get_baseurl() . '/images/blank.png'); + return(System::baseUrl() . '/images/blank.png'); } // install and uninstall theme @@ -425,8 +413,8 @@ 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")) { + include_once("view/theme/$theme/theme.php"); + if (function_exists("{$theme}_uninstall")) { $func = "{$theme}_uninstall"; $func(); } @@ -436,19 +424,19 @@ if (! function_exists('install_theme')){ function install_theme($theme) { // silently fail if theme was removed - if(! file_exists("view/theme/$theme/theme.php")) + if (! file_exists("view/theme/$theme/theme.php")) { return false; + } logger("Addons: installing theme $theme"); - @include_once("view/theme/$theme/theme.php"); + include_once("view/theme/$theme/theme.php"); - if(function_exists("{$theme}_install")) { + if (function_exists("{$theme}_install")) { $func = "{$theme}_install"; $func(); return true; - } - else { + } else { logger("Addons: FAILED installing theme $theme"); return false; } @@ -467,10 +455,9 @@ function install_theme($theme) { function service_class_allows($uid,$property,$usage = false) { - if($uid == local_user()) { + if ($uid == local_user()) { $service_class = $a->user['service_class']; - } - else { + } else { $r = q("SELECT `service_class` FROM `user` WHERE `uid` = %d LIMIT 1", intval($uid) ); @@ -478,18 +465,23 @@ function service_class_allows($uid,$property,$usage = false) { $service_class = $r[0]['service_class']; } } - if(! x($service_class)) - return true; // everything is allowed + + if (! x($service_class)) { + // everything is allowed + return true; + } $arr = get_config('service_class',$service_class); - if(! is_array($arr) || (! count($arr))) + if (! is_array($arr) || (! count($arr))) { return true; + } - if($usage === false) + if ($usage === false) { return ((x($arr[$property])) ? (bool) $arr['property'] : true); - else { - if(! array_key_exists($property,$arr)) + } else { + if (! array_key_exists($property,$arr)) { return true; + } return (((intval($usage)) < intval($arr[$property])) ? true : false); } } @@ -497,10 +489,9 @@ function service_class_allows($uid,$property,$usage = false) { function service_class_fetch($uid,$property) { - if($uid == local_user()) { + if ($uid == local_user()) { $service_class = $a->user['service_class']; - } - else { + } else { $r = q("SELECT `service_class` FROM `user` WHERE `uid` = %d LIMIT 1", intval($uid) ); @@ -508,11 +499,11 @@ function service_class_fetch($uid,$property) { $service_class = $r[0]['service_class']; } } - if(! x($service_class)) + if (! x($service_class)) return false; // everything is allowed $arr = get_config('service_class',$service_class); - if(! is_array($arr) || (! count($arr))) + if (! is_array($arr) || (! count($arr))) return false; return((array_key_exists($property,$arr)) ? $arr[$property] : false); @@ -521,12 +512,14 @@ function service_class_fetch($uid,$property) { function upgrade_link($bbcode = false) { $l = get_config('service_class','upgrade_link'); - if(! $l) + if (! $l) { return ''; - if($bbcode) + } + if ($bbcode) { $t = sprintf('[url=%s]' . t('Click here to upgrade.') . '[/url]', $l); - else + } else { $t = sprintf('' . t('Click here to upgrade.') . '', $l); + } return $t; } @@ -542,24 +535,28 @@ function upgrade_bool_message($bbcode = false) { /** * @brief Get the full path to relevant theme files by filename - * + * * This function search in the theme directory (and if not present in global theme directory) * if there is a directory with the file extension and for a file with the given - * filename. - * + * filename. + * * @param string $file Filename * @param string $root Full root path * @return string Path to the file or empty string if the file isn't found */ function theme_include($file, $root = '') { + $file = basename($file); + // Make sure $root ends with a slash / if it's not blank - if($root !== '' && $root[strlen($root)-1] !== '/') + if ($root !== '' && $root[strlen($root)-1] !== '/') { $root = $root . '/'; - $theme_info = $a->theme_info; - if(is_array($theme_info) AND array_key_exists('extends',$theme_info)) + } + $theme_info = get_app()->theme_info; + if (is_array($theme_info) && array_key_exists('extends',$theme_info)) { $parent = $theme_info['extends']; - else + } else { $parent = 'NOPATH'; + } $theme = current_theme(); $thname = $theme; $ext = substr($file,strrpos($file,'.')+1); @@ -568,12 +565,13 @@ function theme_include($file, $root = '') { "{$root}view/theme/$parent/$ext/$file", "{$root}view/$ext/$file", ); - foreach($paths as $p) { + 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) + if (strpos($p,'NOPATH') !== false) { continue; - if(file_exists($p)) + } elseif (file_exists($p)) { return $p; + } } return ''; }