X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FForeign_link.php;h=57a10dcedb1fd0e5214b920220f6fb7ae86d37a3;hb=9ef13976fc0fa83ace04866b304dcc80e6adf058;hp=af2b3f189da54fb8cf1e0581dd3bfe3e5233b2cc;hpb=3e7b1e69e3e97ac007465376b62084f10bcf97ca;p=quix0rs-gnu-social.git diff --git a/classes/Foreign_link.php b/classes/Foreign_link.php index af2b3f189d..57a10dcedb 100644 --- a/classes/Foreign_link.php +++ b/classes/Foreign_link.php @@ -11,7 +11,7 @@ class Foreign_link extends Memcached_DataObject public $__table = 'foreign_link'; // table name public $user_id; // int(4) primary_key not_null - public $foreign_id; // int(4) primary_key not_null + public $foreign_id; // bigint(8) primary_key not_null unsigned public $service; // int(4) primary_key not_null public $credentials; // varchar(255) public $noticesync; // tinyint(1) not_null default_1 @@ -29,44 +29,53 @@ 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($noticesync, $replysync, $friendsync) + function set_flags($noticesend, $noticerecv, $replysync, $friendsync) { - if ($noticesync) { + if ($noticesend) { $this->noticesync |= FOREIGN_NOTICE_SEND; } else { $this->noticesync &= ~FOREIGN_NOTICE_SEND; } + if ($noticerecv) { + $this->noticesync |= FOREIGN_NOTICE_RECV; + } else { + $this->noticesync &= ~FOREIGN_NOTICE_RECV; + } + if ($replysync) { $this->noticesync |= FOREIGN_NOTICE_SEND_REPLY; } else { @@ -82,7 +91,7 @@ class Foreign_link extends Memcached_DataObject $this->profilesync = 0; } - # Convenience methods + // Convenience methods function getForeignUser() { $fuser = new Foreign_user(); @@ -103,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; + } + } }