implement 'requires' on personal apps

This commit is contained in:
friendica 2014-05-22 19:19:04 -07:00
parent ceb64bdb24
commit bcac633085
4 changed files with 53 additions and 8 deletions

View File

@ -47,7 +47,7 @@ define ( 'RED_PLATFORM', 'Red Matrix' );
define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'R');
define ( 'ZOT_REVISION', 1 );
define ( 'DB_UPDATE_VERSION', 1111 );
define ( 'DB_UPDATE_VERSION', 1112 );
define ( 'EOL', '<br />' . "\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );

View File

@ -126,7 +126,9 @@ function translate_system_apps(&$arr) {
'Photos' => t('Photos'),
'Events' => t('Events'),
'Directory' => t('Directory'),
'Help' => t('Help')
'Help' => t('Help'),
'Mail' => t('Mail'),
'Mood' => t('Mood'),
);
if(array_key_exists($arr['name'],$apps))
@ -153,6 +155,9 @@ function app_render($papp,$mode = 'view') {
if(! $papp['photo'])
$papp['photo'] = z_root() . '/' . get_default_profile_photo(80);
if(! $papp)
return;
$papp['papp'] = papp_encode($papp);
foreach($papp as $k => $v) {
@ -161,6 +166,34 @@ function app_render($papp,$mode = 'view') {
if($k === 'desc')
$papp['desc'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$papp['desc']);
if($k === 'requires') {
$require = trim(strtolower($v));
switch($require) {
case 'nologin':
if(local_user())
return '';
break;
case 'admin':
if(! is_site_admin())
return '';
break;
case 'local_user':
if(! local_user())
return '';
break;
case 'observer':
$observer = get_app()->get_observer();
if(! $observer)
return '';
break;
default:
if(! local_user() && feature_enabled(local_user(),$require))
return '';
break;
}
}
}
if(local_user()) {
@ -256,8 +289,9 @@ function app_store($arr) {
$darray['app_addr'] = ((x($arr,'addr')) ? escape_tags($arr['addr']) : '');
$darray['app_price'] = ((x($arr,'price')) ? escape_tags($arr['price']) : '');
$darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
$darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : '');
$r = q("insert into app ( app_id, app_sig, app_author, app_name, app_desc, app_url, app_photo, app_version, app_channel, app_addr, app_price, app_page ) values ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s' )",
$r = q("insert into app ( app_id, app_sig, app_author, app_name, app_desc, app_url, app_photo, app_version, app_channel, app_addr, app_price, app_page, app_requires ) values ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s' )",
dbesc($darray['app_id']),
dbesc($darray['app_sig']),
dbesc($darray['app_author']),
@ -269,7 +303,8 @@ function app_store($arr) {
intval($darray['app_channel']),
dbesc($darray['app_addr']),
dbesc($darray['app_price']),
dbesc($darray['app_page'])
dbesc($darray['app_page']),
dbesc($darray['app_requires'])
);
if($r) {
$ret['success'] = true;
@ -304,8 +339,9 @@ function app_update($arr) {
$darray['app_addr'] = ((x($arr,'addr')) ? escape_tags($arr['addr']) : '');
$darray['app_price'] = ((x($arr,'price')) ? escape_tags($arr['price']) : '');
$darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
$darray['app_requires'] = ((x($arr,'requires')) ? escape_tags($arr['requires']) : '');
$r = q("update app set app_sig = '%s', app_author = '%s', app_name = '%s', app_desc = '%s', app_url = '%s', app_photo = '%s', app_version = '%s', app_addr = '%s', app_price = '%s', app_page = '%s' where app_id = '%s' and app_channel = %d limit 1",
$r = q("update app set app_sig = '%s', app_author = '%s', app_name = '%s', app_desc = '%s', app_url = '%s', app_photo = '%s', app_version = '%s', app_addr = '%s', app_price = '%s', app_page = '%s', app_requires = '%s' where app_id = '%s' and app_channel = %d limit 1",
dbesc($darray['app_sig']),
dbesc($darray['app_author']),
dbesc($darray['app_name']),
@ -316,6 +352,7 @@ function app_update($arr) {
dbesc($darray['app_addr']),
dbesc($darray['app_price']),
dbesc($darray['app_page']),
dbesc($darray['app_requires']),
dbesc($darray['app_id']),
intval($darray['app_channel'])
);
@ -369,8 +406,8 @@ function app_encode($app,$embed = false) {
if($app['app_page'])
$ret['page'] = $app['app_page'];
// if($app['alt_url'])
// $ret['alt_url'] = $app['alt_url'];
if($app['app_requires'])
$ret['requires'] = $app['app_requires'];
if(! $embed)
return $ret;

View File

@ -97,6 +97,7 @@ CREATE TABLE IF NOT EXISTS `app` (
`app_addr` char(255) NOT NULL DEFAULT '',
`app_price` char(255) NOT NULL DEFAULT '',
`app_page` char(255) NOT NULL DEFAULT '',
`app_requires` char(255) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `app_id` (`app_id`),
KEY `app_name` (`app_name`),

View File

@ -1,6 +1,6 @@
<?php
define( 'UPDATE_VERSION' , 1111 );
define( 'UPDATE_VERSION' , 1112 );
/**
*
@ -1244,3 +1244,10 @@ ADD INDEX ( `app_price` )");
return UPDATE_SUCCESS;
}
function update_r1111() {
$r = q("ALTER TABLE `app` ADD `app_requires` CHAR( 255 ) NOT NULL DEFAULT '' ");
if($r)
return UPDATE_SUCCESS;
return UPDATE_FAILED;
}