aboutsummaryrefslogtreecommitdiffstats
path: root/include/import.php
diff options
context:
space:
mode:
Diffstat (limited to 'include/import.php')
-rw-r--r--include/import.php27
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