Solving the "Disallow public access to addons listed in the apps menu" has no effect bug

Adding plugin_is_app function in include/plugin.php for checking if a plugin is an app or not (checking the existence of an 'app_menu' hook)

Populating the app menu conditionaly ( is the user logged or not, are apps private ) and dissalowing apps running if apps are private and the user not logged
This commit is contained in:
Zered 2013-07-24 03:45:22 +02:00
parent 7f36a6fcbd
commit a6fae9a0db
2 changed files with 34 additions and 6 deletions

View file

@ -149,11 +149,16 @@ else {
nav_set_selected('nothing');
$arr = array('app_menu' => $a->apps);
//Don't populate apps_menu if apps are private
$privateapps = get_config('config','private_addons');
if((local_user()) || (! $privateapps === "1"))
{
$arr = array('app_menu' => $a->apps);
call_hooks('app_menu', $arr);
call_hooks('app_menu', $arr);
$a->apps = $arr['app_menu'];
$a->apps = $arr['app_menu'];
}
/**
*
@ -186,11 +191,19 @@ if(strlen($a->module)) {
// Compatibility with the Android Diaspora client
if ($a->module == "stream")
$a->module = "network";
$privateapps = get_config('config','private_addons');
if(is_array($a->plugins) && in_array($a->module,$a->plugins) && file_exists("addon/{$a->module}/{$a->module}.php")) {
include_once("addon/{$a->module}/{$a->module}.php");
if(function_exists($a->module . '_module'))
$a->module_loaded = true;
//Check if module is an app and if public access to apps is allowed or not
if((!local_user()) && plugin_is_app($a->module) && $privateapps === "1") {
info( t("You must be logged in to use addons. "));
}
else {
include_once("addon/{$a->module}/{$a->module}.php");
if(function_exists($a->module . '_module'))
$a->module_loaded = true;
}
}
/**