]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Foreign_link.php
Merge commit 'refs/merge-requests/157' of git://gitorious.org/statusnet/mainline...
[quix0rs-gnu-social.git] / classes / Foreign_link.php
index a3a159eb54a29d7e85bbb80413f643b78d0eb3d0..57a10dcedb1fd0e5214b920220f6fb7ae86d37a3 100644 (file)
@@ -14,7 +14,6 @@ class Foreign_link extends Memcached_DataObject
     public $foreign_id;                      // bigint(8)  primary_key not_null unsigned
     public $service;                         // int(4)  primary_key not_null
     public $credentials;                     // varchar(255)
-    public $token;                           // varchar(255)
     public $noticesync;                      // tinyint(1)   not_null default_1
     public $friendsync;                      // tinyint(1)   not_null default_2
     public $profilesync;                     // tinyint(1)   not_null default_1
@@ -30,34 +29,37 @@ class Foreign_link extends Memcached_DataObject
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
 
-    // XXX:  This only returns a 1->1 single obj mapping.  Change?  Or make
-    // a getForeignUsers() that returns more than one? --Zach
     static function getByUserID($user_id, $service)
     {
+        if (empty($user_id) || empty($service)) {
+            return null;
+        }
+
         $flink = new Foreign_link();
+
         $flink->service = $service;
         $flink->user_id = $user_id;
         $flink->limit(1);
 
-        if ($flink->find(true)) {
-            return $flink;
-        }
+        $result = $flink->find(true);
 
-        return null;
+        return empty($result) ? null : $flink;
     }
 
     static function getByForeignID($foreign_id, $service)
     {
-        $flink = new Foreign_link();
-        $flink->service = $service;
-        $flink->foreign_id = $foreign_id;
-        $flink->limit(1);
+        if (empty($foreign_id) || empty($service)) {
+            return null;
+        } else {
+            $flink = new Foreign_link();
+            $flink->service = $service;
+            $flink->foreign_id = $foreign_id;
+            $flink->limit(1);
 
-        if ($flink->find(true)) {
-            return $flink;
-        }
+            $result = $flink->find(true);
 
-        return null;
+            return empty($result) ? null : $flink;
+        }
     }
 
     function set_flags($noticesend, $noticerecv, $replysync, $friendsync)
@@ -67,7 +69,7 @@ class Foreign_link extends Memcached_DataObject
         } else {
             $this->noticesync &= ~FOREIGN_NOTICE_SEND;
         }
-        
+
         if ($noticerecv) {
             $this->noticesync |= FOREIGN_NOTICE_RECV;
         } else {
@@ -89,7 +91,7 @@ class Foreign_link extends Memcached_DataObject
         $this->profilesync = 0;
     }
 
-    # Convenience methods
+    // Convenience methods
     function getForeignUser()
     {
         $fuser = new Foreign_user();
@@ -110,4 +112,20 @@ class Foreign_link extends Memcached_DataObject
         return User::staticGet($this->user_id);
     }
 
+    // Make sure we only ever delete one record at a time
+    function safeDelete()
+    {
+        if (!empty($this->user_id)
+            && !empty($this->foreign_id)
+            && !empty($this->service))
+        {
+            return $this->delete();
+        } else {
+            common_debug(LOG_WARNING,
+                'Foreign_link::safeDelete() tried to delete a '
+                . 'Foreign_link without a fully specified compound key: '
+                . var_export($this, true));
+            return false;
+        }
+    }
 }