diff options
-rw-r--r-- | boot.php | 8 | ||||
-rw-r--r-- | database.sql | 4 | ||||
-rw-r--r-- | include/gprobe.php | 60 | ||||
-rw-r--r-- | include/plugin.php | 12 | ||||
-rw-r--r-- | index.php | 7 | ||||
-rw-r--r-- | mod/friendica.php | 23 | ||||
-rw-r--r-- | update.php | 9 |
7 files changed, 111 insertions, 12 deletions
@@ -11,7 +11,7 @@ require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_VERSION', '2.3.1328' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); -define ( 'DB_UPDATE_VERSION', 1140 ); +define ( 'DB_UPDATE_VERSION', 1141 ); define ( 'EOL', "<br />\r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); @@ -1519,6 +1519,12 @@ function get_my_url() { return false; } +function zrl_init(&$a) { + proc_run('php','include/gprobe.php',bin2hex(get_my_url())); + $arr = array('zrl' => get_my_url(), 'url' => $a->cmd); + call_hooks('zrl_init',$arr); +} + function zrl($s,$force = false) { if(! strlen($s)) return $s; diff --git a/database.sql b/database.sql index 80a9197fa..16e3964b5 100644 --- a/database.sql +++ b/database.sql @@ -16,9 +16,11 @@ CREATE TABLE IF NOT EXISTS `addon` ( `name` char(255) NOT NULL, `version` char(255) NOT NULL, `installed` tinyint(1) NOT NULL DEFAULT '0', + `hidden` tinyint(1) NOT NULL DEFAULT '0', `timestamp` bigint(20) NOT NULL DEFAULT '0', `plugin_admin` tinyint(1) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`) + PRIMARY KEY (`id`), + KEY `hidden` (`hidden`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- -------------------------------------------------------- diff --git a/include/gprobe.php b/include/gprobe.php new file mode 100644 index 000000000..26254ad28 --- /dev/null +++ b/include/gprobe.php @@ -0,0 +1,60 @@ +<?php + +require_once("boot.php"); +require_once('include/Scrape.php'); + +function gprobe_run($argv, $argc){ + global $a, $db; + + if(is_null($a)) { + $a = new App; + } + + if(is_null($db)) { + @include(".htconfig.php"); + require_once("dba.php"); + $db = new dba($db_host, $db_user, $db_pass, $db_data); + unset($db_host, $db_user, $db_pass, $db_data); + }; + + require_once('include/session.php'); + require_once('include/datetime.php'); + + load_config('config'); + load_config('system'); + + $a->set_baseurl(get_config('system','url')); + + load_hooks(); + + if($argc != 2) + return; + + $url = hex2bin($argv[1]); + + $r = q("select * from gcontact where nurl = '%s' limit 1", + dbesc(normalise_link($url)) + ); + + if(count($r)) + return; + + $arr = probe_url($url); + + if(count($arr) && x($arr,'network') && $arr['network'] === NETWORK_DFRN) { + q("insert into `gcontact` (`name`,`url`,`nurl`,`photo`) + values ( '%s', '%s', '%s', '%s') ", + dbesc($arr['name']), + dbesc($arr['url']), + dbesc(normalise_link($arr['url'])), + dbesc($arr['photo']) + ); + } + + return; +} + +if (array_search(__file__,get_included_files())===0){ + gprobe_run($argv,$argc); + killme(); +} diff --git a/include/plugin.php b/include/plugin.php index 8196e8756..4ff78a8b4 100644 --- a/include/plugin.php +++ b/include/plugin.php @@ -5,7 +5,7 @@ if (! function_exists('uninstall_plugin')){ function uninstall_plugin($plugin){ logger("Addons: uninstalling " . $plugin); - q("DELETE FROM `addon` WHERE `name` = '%s' LIMIT 1", + q("DELETE FROM `addon` WHERE `name` = '%s' ", dbesc($plugin) ); @@ -37,6 +37,16 @@ function install_plugin($plugin) { intval($t), $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' limit 1", + dbesc($plugin) + ); + } return true; } else { @@ -92,13 +92,10 @@ if((x($_SESSION,'language')) && ($_SESSION['language'] !== $lang)) { load_translation_table($lang); } -if(x($_GET,'zrl')) { +if((x($_GET,'zrl')) && (! $install)) { $_SESSION['my_url'] = $_GET['zrl']; $a->query_string = preg_replace('/[\?&]zrl=(.*?)([\?&]|$)/is','',$a->query_string); - if(! $install) { - $arr = array('zrl' => $_SESSION['my_url'], 'url' => $a->cmd); - call_hooks('zrl_init',$arr); - } + zrl_init($a); } /** diff --git a/mod/friendica.php b/mod/friendica.php index 52a064224..28807b5b5 100644 --- a/mod/friendica.php +++ b/mod/friendica.php @@ -18,10 +18,18 @@ function friendica_init(&$a) { $admin = false; } + $visible_plugins = array(); + if(is_array($a->plugins) && count($a->plugins)) { + $r = q("select * from addon where hidden = 0"); + if(count($r)) + foreach($r as $rr) + $visible_plugins[] = $rr['name']; + } + $data = Array( 'version' => FRIENDICA_VERSION, 'url' => z_root(), - 'plugins' => $a->plugins, + 'plugins' => $visible_plugins, 'register_policy' => $register_policy[$a->config['register_policy']], 'admin' => $admin, 'site_name' => $a->config['sitename'], @@ -54,9 +62,18 @@ function friendica_content(&$a) { $o .= '<p></p>'; - if(count($a->plugins)) { + $visible_plugins = array(); + if(is_array($a->plugins) && count($a->plugins)) { + $r = q("select * from addon where hidden = 0"); + if(count($r)) + foreach($r as $rr) + $visible_plugins[] = $rr['name']; + } + + + if(count($visible_plugins)) { $o .= '<p>' . t('Installed plugins/addons/apps:') . '</p>'; - $sorted = $a->plugins; + $sorted = $visible_plugins; $s = ''; sort($sorted); foreach($sorted as $p) { diff --git a/update.php b/update.php index 3c2ecebb6..f793b89dd 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ <?php -define( 'UPDATE_VERSION' , 1140 ); +define( 'UPDATE_VERSION' , 1141 ); /** * @@ -1223,3 +1223,10 @@ function update_1139() { return UPDATE_FAILED ; return UPDATE_SUCCESS ; } + +function update_1140() { + $r = q("alter table addon add hidden tinyint(1) not null default '0' after installed, add index(hidden) "); + if(! $r) + return UPDATE_FAILED ; + return UPDATE_SUCCESS ; +}
\ No newline at end of file |