Fix appinfo to check additional db
[platform/core/appfw/pkgmgr-info.git] / src / pkgmgrinfo_private.c
index 7e26eb0..1d31430 100644 (file)
@@ -235,7 +235,7 @@ inline pkgmgrinfo_appinfo_filter_prop_bool _pminfo_appinfo_convert_to_prop_bool(
        return prop;
 }
 
-int __get_filter_condition(gpointer data, char **condition, GList **params)
+int __get_filter_condition(gpointer data, uid_t uid, char **condition, GList **params)
 {
        pkgmgrinfo_node_x *node = (pkgmgrinfo_node_x *)data;
        char buf[MAX_QUERY_LEN] = {'\0'};
@@ -386,7 +386,15 @@ int __get_filter_condition(gpointer data, char **condition, GList **params)
                flag = E_PMINFO_APPINFO_JOIN_METADATA;
                break;
        case E_PMINFO_APPINFO_PROP_APP_DISABLE:
-               snprintf(buf, MAX_QUERY_LEN, "ai.app_disable=? COLLATE NOCASE");
+               if (strcasecmp(node->value, "true") == 0)
+                       snprintf(buf, MAX_QUERY_LEN, "(ai.app_disable=? COLLATE NOCASE OR "
+                                       "ai.app_id IN (SELECT app_id FROM package_app_info_for_uid "
+                                       "WHERE uid=%d AND is_disabled='true'))", uid);
+               else
+                       snprintf(buf, MAX_QUERY_LEN, "(ai.app_disable=? COLLATE NOCASE AND "
+                                       "ai.app_id NOT IN (SELECT app_id FROM package_app_info_for_uid "
+                                       "WHERE uid=%d AND is_disabled='true'))", uid);
+               flag = E_PMINFO_APPINFO_JOIN_APPINFO_FOR_UID;
                break;
        case E_PMINFO_APPINFO_PROP_APP_SUPPORT_DISABLE:
                snprintf(buf, MAX_QUERY_LEN, "ai.app_support_disable=? COLLATE NOCASE");