Fix feature check in apps (missing parenthesis), allow multiple requires (comma separated)
This commit is contained in:
parent
d3830aea96
commit
bd2be2b10c
113
include/apps.php
113
include/apps.php
@ -83,35 +83,37 @@ function parse_app_description($f) {
|
|||||||
$ret['target'] = str_replace(array('\'','"'),array(''','&dquot;'),$ret['target']);
|
$ret['target'] = str_replace(array('\'','"'),array(''','&dquot;'),$ret['target']);
|
||||||
|
|
||||||
if(array_key_exists('requires',$ret)) {
|
if(array_key_exists('requires',$ret)) {
|
||||||
$require = trim(strtolower($ret['requires']));
|
$requires = explode(',',$ret['requires']);
|
||||||
switch($require) {
|
foreach($requires as $require) {
|
||||||
case 'nologin':
|
$require = trim(strtolower($require));
|
||||||
if(local_user())
|
switch($require) {
|
||||||
unset($ret);
|
case 'nologin':
|
||||||
break;
|
if(local_user())
|
||||||
case 'admin':
|
unset($ret);
|
||||||
if(! is_site_admin())
|
break;
|
||||||
unset($ret);
|
case 'admin':
|
||||||
break;
|
if(! is_site_admin())
|
||||||
case 'local_user':
|
unset($ret);
|
||||||
if(! local_user())
|
break;
|
||||||
unset($ret);
|
case 'local_user':
|
||||||
break;
|
if(! local_user())
|
||||||
case 'public_profile':
|
unset($ret);
|
||||||
if(! is_public_profile())
|
break;
|
||||||
unset($ret);
|
case 'public_profile':
|
||||||
break;
|
if(! is_public_profile())
|
||||||
case 'observer':
|
unset($ret);
|
||||||
if(! $observer)
|
break;
|
||||||
unset($ret);
|
case 'observer':
|
||||||
break;
|
if(! $observer)
|
||||||
default:
|
unset($ret);
|
||||||
if(! local_user() && feature_enabled(local_user(),$require))
|
break;
|
||||||
unset($ret);
|
default:
|
||||||
break;
|
if(! (local_user() && feature_enabled(local_user(),$require)))
|
||||||
|
unset($ret);
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// logger('require: ' . print_r($ret,true));
|
|
||||||
}
|
}
|
||||||
if($ret) {
|
if($ret) {
|
||||||
translate_system_apps($ret);
|
translate_system_apps($ret);
|
||||||
@ -189,34 +191,37 @@ function app_render($papp,$mode = 'view') {
|
|||||||
$papp['desc'] = str_replace(array('\'','"'),array(''','&dquot;'),$papp['desc']);
|
$papp['desc'] = str_replace(array('\'','"'),array(''','&dquot;'),$papp['desc']);
|
||||||
|
|
||||||
if($k === 'requires') {
|
if($k === 'requires') {
|
||||||
$require = trim(strtolower($v));
|
$requires = explode(',',$v);
|
||||||
switch($require) {
|
foreach($requires as $require) {
|
||||||
case 'nologin':
|
$require = trim(strtolower($require));
|
||||||
if(local_user())
|
switch($require) {
|
||||||
return '';
|
case 'nologin':
|
||||||
break;
|
if(local_user())
|
||||||
case 'admin':
|
return '';
|
||||||
if(! is_site_admin())
|
break;
|
||||||
return '';
|
case 'admin':
|
||||||
break;
|
if(! is_site_admin())
|
||||||
case 'local_user':
|
return '';
|
||||||
if(! local_user())
|
break;
|
||||||
return '';
|
case 'local_user':
|
||||||
break;
|
if(! local_user())
|
||||||
case 'public_profile':
|
return '';
|
||||||
if(! is_public_profile())
|
break;
|
||||||
return '';
|
case 'public_profile':
|
||||||
break;
|
if(! is_public_profile())
|
||||||
case 'observer':
|
return '';
|
||||||
$observer = get_app()->get_observer();
|
break;
|
||||||
if(! $observer)
|
case 'observer':
|
||||||
return '';
|
$observer = get_app()->get_observer();
|
||||||
break;
|
if(! $observer)
|
||||||
default:
|
return '';
|
||||||
if(! local_user() && feature_enabled(local_user(),$require))
|
break;
|
||||||
return '';
|
default:
|
||||||
break;
|
if(! (local_user() && feature_enabled(local_user(),$require)))
|
||||||
|
return '';
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user