*/
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 */
public $user_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 $credentials; // varchar(191) not 255 because utf8mb4 takes more space
public $noticesync; // tinyint(1) not_null default_1
public $friendsync; // tinyint(1) not_null default_2
public $profilesync; // tinyint(1) not_null default_1
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' => 191, '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)) {
$fuser->limit(1);
- if ($fuser->find(true)) {
- return $fuser;
+ if (!$fuser->find(true)) {
+ throw new NoResultException($fuser);
}
- return null;
+ return $fuser;
}
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