]> git.mxchange.org Git - friendica.git/commitdiff
Preparation for the possibility to globally block contacts
authorMichael <heluecht@pirati.ca>
Sat, 7 Oct 2017 09:52:43 +0000 (09:52 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 7 Oct 2017 09:52:43 +0000 (09:52 +0000)
include/Contact.php
include/items.php
include/threads.php

index 956e5d0e11ad42141fd099c209998328d8848f8d..a4b9cb2de5b56d1639ff05ebf760eb3dc3ba44e8 100644 (file)
@@ -695,6 +695,44 @@ function get_contact($url, $uid = 0, $no_update = false) {
        return $contact_id;
 }
 
+/**
+ * @brief Checks if the contact is blocked
+ *
+ * @param int $cid contact id
+ *
+ * @return boolean Is the contact blocked?
+ */
+function blockedContact($cid) {
+       if ($cid == 0) {
+               return false;
+       }
+
+       $blocked = dba::select('contact', array('blocked'), array('id' => $cid), array('limit' => 1));
+       if (!dbm::is_result($blocked)) {
+               return false;
+       }
+       return (bool)$blocked['blocked'];
+}
+
+/**
+ * @brief Checks if the contact is hidden
+ *
+ * @param int $cid contact id
+ *
+ * @return boolean Is the contact hidden?
+ */
+function hiddenContact($cid) {
+       if ($cid == 0) {
+               return false;
+       }
+
+       $hidden = dba::select('contact', array('hidden'), array('id' => $cid), array('limit' => 1));
+       if (!dbm::is_result($hidden)) {
+               return false;
+       }
+       return (bool)$hidden['hidden'];
+}
+
 /**
  * @brief Returns posts from a given gcontact
  *
index 6945f8894d2819f0e98d461089e049e6d04441d8..f19497f11eddcdc3651fa666d9812c900c17ecab 100644 (file)
@@ -761,10 +761,20 @@ function item_store($arr, $force_parent = false, $notify = false, $dontcache = f
                $arr["author-id"] = get_contact($arr["author-link"], 0);
        }
 
+       if (blockedContact($arr["author-id"])) {
+               logger('Contact '.$arr["author-id"].' is blocked, item '.$arr["uri"].' will not be stored');
+               return 0;
+       }
+
        if ($arr["owner-id"] == 0) {
                $arr["owner-id"] = get_contact($arr["owner-link"], 0);
        }
 
+       if (blockedContact($arr["owner-id"])) {
+               logger('Contact '.$arr["owner-id"].' is blocked, item '.$arr["uri"].' will not be stored');
+               return 0;
+       }
+
        if ($arr['guid'] != "") {
                // Checking if there is already an item with the same guid
                logger('checking for an item for user '.$arr['uid'].' on network '.$arr['network'].' with the guid '.$arr['guid'], LOGGER_DEBUG);
index d04ba38ef18069f3d71d841acf79f291e5ba73d4..169a63c7ca144284677a85abf786a6fcc1540fb1 100644 (file)
@@ -32,7 +32,7 @@ function add_thread($itemid, $onlyshadow = false) {
  * @param integer $itemid Item ID that should be added
  */
 function add_shadow_thread($itemid) {
-       $items = q("SELECT `uid`, `wall`, `private`, `moderated`, `visible`, `contact-id`, `deleted`, `network`
+       $items = q("SELECT `uid`, `wall`, `private`, `moderated`, `visible`, `contact-id`, `deleted`, `network`, `author-id`, `owner-id`
                FROM `item` WHERE `id` = %d AND (`parent` = %d OR `parent` = 0) LIMIT 1", intval($itemid), intval($itemid));
 
        if (!dbm::is_result($items)) {
@@ -56,6 +56,11 @@ function add_shadow_thread($itemid) {
                return;
        }
 
+       // Is the public contact configured as hidden?
+        if (hiddenContact($item["owner-id"]) || hiddenContact($item["author-id"])) {
+                return;
+        }
+
        // Only do these checks if the post isn't a wall post
        if (!$item["wall"]) {
                // Check, if hide-friends is activated - then don't do a shadow entry