diff options
| author | Christian Weiske <cweiske@cweiske.de> | 2011-08-01 18:25:14 +0200 | 
|---|---|---|
| committer | Christian Weiske <cweiske@cweiske.de> | 2011-08-01 18:25:14 +0200 | 
| commit | 4775d7bf5adfcc3bd965f2190505f7e543557c39 (patch) | |
| tree | 3686ae92fb2703ae6e58806daeabf0c62a4d597e /src/SemanticScuttle | |
| parent | 9a8d73db1f3ed8f43152c8ebe259621d63d941c4 (diff) | |
| download | semanticscuttle-4775d7bf5adfcc3bd965f2190505f7e543557c39.tar.gz semanticscuttle-4775d7bf5adfcc3bd965f2190505f7e543557c39.tar.bz2  | |
Fix bug #3376618: Broken tag completion for private bookmarks
Diffstat (limited to 'src/SemanticScuttle')
| -rw-r--r-- | src/SemanticScuttle/Service/Bookmark2Tag.php | 29 | 
1 files changed, 16 insertions, 13 deletions
diff --git a/src/SemanticScuttle/Service/Bookmark2Tag.php b/src/SemanticScuttle/Service/Bookmark2Tag.php index 04ee43d..914abc6 100644 --- a/src/SemanticScuttle/Service/Bookmark2Tag.php +++ b/src/SemanticScuttle/Service/Bookmark2Tag.php @@ -552,13 +552,6 @@ class SemanticScuttle_Service_Bookmark2Tag extends SemanticScuttle_DbService          $user = null, $limit = 30, $logged_on_user = null, $days = null,          $beginsWith = null      ) { -        // Only count the tags that are visible to the current user. -        if (($user != $logged_on_user) || is_null($user) || ($user === false)) { -            $privacy = ' AND B.bStatus = 0'; -        } else { -            $privacy = ''; -        } -          $query = 'SELECT'              . ' T.tag, COUNT(T.bId) AS bCount'              . ' FROM ' @@ -566,20 +559,30 @@ class SemanticScuttle_Service_Bookmark2Tag extends SemanticScuttle_DbService              . ', ' . $GLOBALS['tableprefix'] . 'bookmarks AS B'              . ' WHERE'; -        if (is_null($user) || ($user === false)) { +        if (is_null($user) || $user === false) {              $query .= ' B.bId = T.bId AND B.bStatus = 0';          } else if (is_array($user)) {              $query .= ' (1 = 0';  //tricks              foreach ($user as $u) { -                if (is_numeric($u)) { -                    $query .= ' OR B.uId = ' . $this->db->sql_escape($u) -                        . ' AND B.bId = T.bId'; +                if (!is_numeric($u)) { +                    continue; +                } +                $query .= ' OR (' +                    . ' B.uId = ' . $this->db->sql_escape($u) +                    . ' AND B.bId = T.bId'; +                if ($u !== $logged_on_user) { +                    //public bookmarks of others +                    $query .= ' AND B.bStatus = 0';                  } +                $query .= ')';              } -            $query .= ' )' . $privacy; +            $query .= ' )';          } else {              $query .= ' B.uId = ' . $this->db->sql_escape($user) -                . ' AND B.bId = T.bId' . $privacy; +                . ' AND B.bId = T.bId'; +            if ($user !== $logged_on_user) { +                $query .= ' AND B.bStatus = 0'; +            }          }          if (is_int($days)) {  | 
