viewgit/inc/functions.php:22 Function utf8_encode() is deprecated [8192]

Add differential privacy to mask number of users

Prajna Puranik [2022-11-15 06:Nov:th]
Add differential privacy to mask number of users

Signed-off-by: Chris Pollett <chris@pollett.org>
Filename
src/controllers/components/SocialComponent.php
diff --git a/src/controllers/components/SocialComponent.php b/src/controllers/components/SocialComponent.php
index 04aabeae9..1be951abd 100644
--- a/src/controllers/components/SocialComponent.php
+++ b/src/controllers/components/SocialComponent.php
@@ -1179,12 +1179,15 @@ class SocialComponent extends Component implements CrawlConstants
             $user_filter = "";
         }
         $data['USER_FILTER'] = $user_filter;
-        $data['NUM_USERS_GROUP'] =
-            $group_model->countGroupUsers($group_id, $user_filter);
+        $num_users =  $group_model->countGroupUsers($group_id, $user_filter);
+        if (C\DIFFERENTIAL_PRIVACY) {
+            $data['NUM_USERS_GROUP'] = $this->groupUserPrivacy($num_users);
+        } else {
+            $data['NUM_USERS_GROUP'] = $num_users;
+        }
         if (isset($_REQUEST['group_limit'])) {
             $group_limit = min($parent->clean(
-                $_REQUEST['group_limit'], 'int'),
-                $data['NUM_USERS_GROUP']);
+                $_REQUEST['group_limit'], 'int'), $num_users);
             $group_limit = max($group_limit, 0);
         } else {
             $group_limit = 0;
@@ -1194,6 +1197,20 @@ class SocialComponent extends Component implements CrawlConstants
             $group_model->getGroupUsers($group_id, $user_filter,
             $data['USER_SORTS'], $group_limit);
     }
+
+    /**
+     * Used to add Differential Privacy to fuzzify number of users in each group
+     *
+     * @param object $num_users contains number of users per group,
+     *        returned from the database
+     * @return object $fuzzy_users returns number of users per group, now masked
+     */
+    public function groupUserPrivacy($num_users)
+    {
+        $parent = $this->parent;
+        $fuzzy_users = $parent->addDifferentialPrivacy($num_users);
+        return $fuzzy_users;
+    }
     /**
      * Used by $this->manageGroups to check and clean $_REQUEST variables
      * related to groups, to check that a user has the correct permissions
ViewGit