]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Foreign_link.php
Merge branch 'fixes/private_scope_on_tags' into social-master
[quix0rs-gnu-social.git] / classes / Foreign_link.php
index ae8c22fd84742b6b0c48ece953f364a87d3f7993..a964d87fdd9baa19e2a1fd024a74f9d3c5745c6c 100644 (file)
@@ -4,7 +4,7 @@
  */
 require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
 
-class Foreign_link extends Memcached_DataObject
+class Foreign_link extends Managed_DataObject
 {
     ###START_AUTOCODE
     /* the code below is auto generated do not remove the above tag */
@@ -22,13 +22,37 @@ class Foreign_link extends Memcached_DataObject
     public $created;                         // datetime()   not_null
     public $modified;                        // timestamp()   not_null default_CURRENT_TIMESTAMP
 
-    /* Static get */
-    function staticGet($k,$v=null)
-    { return Memcached_DataObject::staticGet('Foreign_link',$k,$v); }
-
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
 
+    public static function schemaDef()
+    {
+        return array(
+            'fields' => array(
+                'user_id' => array('type' => 'int', 'not null' => true, 'description' => 'link to user on this system, if exists'),
+                'foreign_id' => array('type' => 'int', 'size' => 'big', 'unsigned' => true, 'not null' => true, 'description' => 'link to user on foreign service, if exists'),
+                'service' => array('type' => 'int', 'not null' => true, 'description' => 'foreign key to service'),
+                'credentials' => array('type' => 'varchar', 'length' => 255, 'description' => 'authc credentials, typically a password'),
+                'noticesync' => array('type' => 'int', 'size' => 'tiny', 'not null' => true, 'default' => 1, 'description' => 'notice synchronization, bit 1 = sync outgoing, bit 2 = sync incoming, bit 3 = filter local replies'),
+                'friendsync' => array('type' => 'int', 'size' => 'tiny', 'not null' => true, 'default' => 2, 'description' => 'friend synchronization, bit 1 = sync outgoing, bit 2 = sync incoming'),
+                'profilesync' => array('type' => 'int', 'size' => 'tiny', 'not null' => true, 'default' => 1, 'description' => 'profile synchronization, bit 1 = sync outgoing, bit 2 = sync incoming'),
+                'last_noticesync' => array('type' => 'datetime', 'description' => 'last time notices were imported'),
+                'last_friendsync' => array('type' => 'datetime', 'description' => 'last time friends were imported'),
+                'created' => array('type' => 'datetime', 'not null' => true, 'description' => 'date this record was created'),
+                'modified' => array('type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'),
+            ),
+            'primary key' => array('user_id', 'foreign_id', 'service'),
+            'foreign keys' => array(
+                'foreign_link_user_id_fkey' => array('user', array('user_id' => 'id')),
+                'foreign_link_foreign_id_fkey' => array('foreign_user', array('foreign_id' => 'id', 'service' => 'service')),
+                'foreign_link_service_fkey' => array('foreign_service', array('service' => 'id')),
+            ),
+            'indexes' => array(
+                'foreign_user_user_id_idx' => array('user_id'),
+            ),
+        );
+    }
+
     static function getByUserID($user_id, $service)
     {
         if (empty($user_id) || empty($service)) {
@@ -44,7 +68,6 @@ class Foreign_link extends Memcached_DataObject
         $result = $flink->find(true);
 
         return empty($result) ? null : $flink;
-
     }
 
     static function getByForeignID($foreign_id, $service)
@@ -92,7 +115,7 @@ class Foreign_link extends Memcached_DataObject
         $this->profilesync = 0;
     }
 
-    # Convenience methods
+    // Convenience methods
     function getForeignUser()
     {
         $fuser = new Foreign_user();
@@ -110,7 +133,28 @@ class Foreign_link extends Memcached_DataObject
 
     function getUser()
     {
-        return User::staticGet($this->user_id);
+        return User::getKV($this->user_id);
+    }
+
+    function getProfile()
+    {
+        return Profile::getKV('id', $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;
+        }
+    }
 }