diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/import.php | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/include/import.php b/include/import.php index b11d01511..6186fd6ed 100644 --- a/include/import.php +++ b/include/import.php @@ -609,10 +609,29 @@ function sync_sysapps($channel, $apps) { if ($app['app_id'] === hash('whirlpool', $sysapp['name'])) { if (array_key_exists('app_deleted',$app) && $app['app_deleted'] && $app['app_id']) { - q("update app set app_deleted = 1 where app_id = '%s' and app_channel = %d", - dbesc($app['app_id']), - intval($channel['channel_id']) - ); + if(Apps::can_delete($channel['channel_id'], ['guid' => $app['app_id']])) { + $local_app = q("select id from app where app_id = '%s' and app_channel = %d limit 1", + dbesc($app['app_id']), + intval($channel['channel_id']) + ); + if ($local_app) { + q("delete from term where otype = %d and oid = %d", + intval(TERM_OBJ_APP), + intval($local_app[0]['id']) + ); + + q("delete from app where app_id = '%s' and app_channel = %d", + dbesc($app['app_id']), + intval($channel['channel_id']) + ); + } + } + else { + q("update app set app_deleted = 1 where app_id = '%s' and app_channel = %d", + dbesc($app['app_id']), + intval($channel['channel_id']) + ); + } } else { // install this app on this server |