]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Profile.php
GET request would send 'search' parameter because it had a name
[quix0rs-gnu-social.git] / classes / Profile.php
index c93ba07c29b020cbb50ed459230e482807a5db3f..3f0b87e79fc550ebb68c6c31b3ba0608e5278930 100644 (file)
@@ -192,6 +192,20 @@ class Profile extends Managed_DataObject
         return ($this->fullname) ? $this->fullname : $this->nickname;
     }
 
+    /**
+     * Takes the currently scoped profile into account to give a name 
+     * to list in notice streams. Preferences may differ between profiles.
+     */
+    function getStreamName()
+    {
+        $user = common_current_user();
+        if ($user instanceof User && $user->streamNicknames()) {
+            return $this->nickname;
+        }
+
+        return $this->getBestName();
+    }
+
     /**
      * Gets the full name (if filled) with nickname as a parenthetical, or the nickname alone
      * if no fullname is provided.
@@ -242,7 +256,7 @@ class Profile extends Managed_DataObject
         return $stream->getNotices($offset, $limit, $since_id, $max_id);
     }
 
-    function isMember($group)
+    function isMember(User_group $group)
     {
        $groups = $this->getGroups(0, null);
         while ($groups instanceof User_group && $groups->fetch()) {
@@ -253,7 +267,7 @@ class Profile extends Managed_DataObject
        return false;
     }
 
-    function isAdmin($group)
+    function isAdmin(User_group $group)
     {
         $gm = Group_member::pkeyGet(array('profile_id' => $this->id,
                                           'group_id' => $group->id));
@@ -731,7 +745,7 @@ class Profile extends Managed_DataObject
      * @param Profile $other
      * @return boolean
      */
-    function isSubscribed($other)
+    function isSubscribed(Profile $other)
     {
         return Subscription::exists($this, $other);
     }
@@ -742,7 +756,7 @@ class Profile extends Managed_DataObject
      * @param Profile $other
      * @return boolean
      */
-    function hasPendingSubscription($other)
+    function hasPendingSubscription(Profile $other)
     {
         return Subscription_queue::exists($this, $other);
     }
@@ -753,7 +767,7 @@ class Profile extends Managed_DataObject
      * @param Profile $other
      * @return boolean
      */
-    function mutuallySubscribed($other)
+    function mutuallySubscribed(Profile $other)
     {
         return $this->isSubscribed($other) &&
           $other->isSubscribed($this);
@@ -910,6 +924,7 @@ class Profile extends Managed_DataObject
         $this->_deleteMessages();
         $this->_deleteTags();
         $this->_deleteBlocks();
+        $this->_deleteAttentions();
         Avatar::deleteFromProfile($this, true);
 
         // Warning: delete() will run on the batch objects,
@@ -1011,6 +1026,20 @@ class Profile extends Managed_DataObject
         $block->delete();
     }
 
+    function _deleteAttentions()
+    {
+        $att = new Attention();
+        $att->profile_id = $this->getID();
+
+        if ($att->find()) {
+            while ($att->fetch()) {
+                // Can't do delete() on the object directly since it won't remove all of it
+                $other = clone($att);
+                $other->delete();
+            }
+        }
+    }
+
     // XXX: identical to Notice::getLocation.
 
     public function getLocation()
@@ -1360,6 +1389,11 @@ class Profile extends Managed_DataObject
         return $this->profileurl;
     }
 
+    public function getNickname()
+    {
+        return $this->nickname;
+    }
+
     /**
      * Returns the best URI for a profile. Plugins may override.
      *
@@ -1374,9 +1408,8 @@ class Profile extends Managed_DataObject
 
             // check for a local user first
             $user = User::getKV('id', $this->id);
-
-            if (!empty($user)) {
-                $uri = $user->uri;
+            if ($user instanceof User) {
+                $uri = $user->getUri();
             }
 
             Event::handle('EndGetProfileUri', array($this, &$uri));
@@ -1515,4 +1548,20 @@ class Profile extends Managed_DataObject
     {
         return $this;
     }
+
+    /**
+     * This will perform shortenLinks with the connected User object.
+     *
+     * Won't work on remote profiles or groups, so expect a
+     * NoSuchUserException if you don't know it's a local User.
+     *
+     * @param string $text      String to shorten
+     * @param boolean $always   Disrespect minimum length etc.
+     *
+     * @return string link-shortened $text
+     */
+    public function shortenLinks($text, $always=false)
+    {
+        return $this->getUser()->shortenLinks($text, $always);
+    }
 }