2008-08-27 04:24:23 +01:00
< ? php
2020-06-28 23:41:46 +01:00
// This file is part of GNU social - https://www.gnu.org/software/social
//
// GNU social is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// GNU social is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with GNU social. If not, see <http://www.gnu.org/licenses/>.
2008-08-27 04:24:23 +01:00
/**
* Table Definition for foreign_link
*/
2020-06-28 23:41:46 +01:00
defined ( 'GNUSOCIAL' ) || die ();
2008-08-27 04:24:23 +01:00
2011-08-22 22:52:02 +01:00
class Foreign_link extends Managed_DataObject
2008-08-27 04:24:23 +01:00
{
###START_AUTOCODE
/* the code below is auto generated do not remove the above tag */
public $__table = 'foreign_link' ; // table name
public $user_id ; // int(4) primary_key not_null
2009-05-28 01:59:49 +01:00
public $foreign_id ; // bigint(8) primary_key not_null unsigned
2008-08-27 04:24:23 +01:00
public $service ; // int(4) primary_key not_null
2015-02-12 17:18:55 +00:00
public $credentials ; // varchar(191) not 255 because utf8mb4 takes more space
2008-08-27 04:24:23 +01:00
public $noticesync ; // tinyint(1) not_null default_1
public $friendsync ; // tinyint(1) not_null default_2
public $profilesync ; // tinyint(1) not_null default_1
2009-04-29 01:08:20 +01:00
public $last_noticesync ; // datetime()
public $last_friendsync ; // datetime()
2020-06-28 23:41:46 +01:00
public $created ; // datetime()
public $modified ; // timestamp() not_null default_CURRENT_TIMESTAMP
2008-08-27 04:24:23 +01:00
/* the code above is auto generated do not remove the tag below */
###END_AUTOCODE
2008-08-28 08:22:05 +01:00
2011-08-22 22:52:02 +01:00
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' ),
2020-06-28 18:05:11 +01:00
'foreign_id' => array ( 'type' => 'int' , 'size' => 'big' , 'not null' => true , 'description' => 'link to user on foreign service, if exists' ),
2011-08-22 22:52:02 +01:00
'service' => array ( 'type' => 'int' , 'not null' => true , 'description' => 'foreign key to service' ),
2015-02-12 17:18:55 +00:00
'credentials' => array ( 'type' => 'varchar' , 'length' => 191 , 'description' => 'authc credentials, typically a password' ),
2011-08-22 22:52:02 +01:00
'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' ),
2020-06-28 23:41:46 +01:00
'created' => array ( 'type' => 'datetime' , 'description' => 'date this record was created' ),
'modified' => array ( 'type' => 'timestamp' , 'not null' => true , 'description' => 'date this record was modified' ),
2011-08-22 22:52:02 +01:00
),
'primary key' => array ( 'user_id' , 'foreign_id' , 'service' ),
'foreign keys' => array (
'foreign_link_user_id_fkey' => array ( 'user' , array ( 'user_id' => 'id' )),
2020-07-31 14:12:48 +01:00
'foreign_link_foreign_id_service_fkey' => array ( 'foreign_user' , array ( 'foreign_id' => 'id' , 'service' => 'service' )),
2011-08-22 22:52:02 +01:00
'foreign_link_service_fkey' => array ( 'foreign_service' , array ( 'service' => 'id' )),
),
);
}
2020-06-28 18:05:11 +01:00
public static function getByUserID ( $user_id , $service )
2009-01-05 01:04:07 +00:00
{
2009-08-18 23:59:14 +01:00
if ( empty ( $user_id ) || empty ( $service )) {
2015-07-17 20:03:37 +01:00
throw new ServerException ( 'Empty user_id or service for Foreign_link::getByUserID' );
2009-08-18 23:59:14 +01:00
}
2008-12-23 19:19:07 +00:00
$flink = new Foreign_link ();
$flink -> service = $service ;
$flink -> user_id = $user_id ;
$flink -> limit ( 1 );
2008-08-28 08:22:05 +01:00
2015-07-17 20:03:37 +01:00
if ( ! $flink -> find ( true )) {
throw new NoResultException ( $flink );
}
2009-08-18 23:59:14 +01:00
2015-07-17 20:03:37 +01:00
return $flink ;
2008-12-23 19:19:07 +00:00
}
2009-01-05 01:04:07 +00:00
2020-06-28 18:05:11 +01:00
public static function getByForeignID ( $foreign_id , $service )
2009-01-05 01:04:07 +00:00
{
2009-08-18 23:59:14 +01:00
if ( empty ( $foreign_id ) || empty ( $service )) {
2015-07-17 20:03:37 +01:00
throw new ServerException ( 'Empty foreign_id or service for Foreign_link::getByForeignID' );
}
2008-11-17 02:46:24 +00:00
2015-07-17 20:03:37 +01:00
$flink = new Foreign_link ();
$flink -> service = $service ;
$flink -> foreign_id = $foreign_id ;
$flink -> limit ( 1 );
2008-11-17 02:46:24 +00:00
2015-07-17 20:03:37 +01:00
if ( ! $flink -> find ( true )) {
throw new NoResultException ( $flink );
2009-08-18 23:59:14 +01:00
}
2015-07-17 20:03:37 +01:00
return $flink ;
2008-12-23 19:19:07 +00:00
}
2009-01-05 01:04:07 +00:00
2020-06-28 18:05:11 +01:00
public function set_flags ( $noticesend , $noticerecv , $replysync , $repeatsync , $friendsync )
2009-01-05 04:02:12 +00:00
{
2009-04-14 03:19:26 +01:00
if ( $noticesend ) {
2009-01-05 04:02:12 +00:00
$this -> noticesync |= FOREIGN_NOTICE_SEND ;
} else {
$this -> noticesync &= ~ FOREIGN_NOTICE_SEND ;
}
2009-08-18 23:59:14 +01:00
2009-04-14 03:19:26 +01:00
if ( $noticerecv ) {
$this -> noticesync |= FOREIGN_NOTICE_RECV ;
} else {
$this -> noticesync &= ~ FOREIGN_NOTICE_RECV ;
}
2009-01-05 04:02:12 +00:00
if ( $replysync ) {
$this -> noticesync |= FOREIGN_NOTICE_SEND_REPLY ;
} else {
$this -> noticesync &= ~ FOREIGN_NOTICE_SEND_REPLY ;
}
2016-03-19 10:23:26 +00:00
if ( $repeatsync ) {
$this -> noticesync |= FOREIGN_NOTICE_SEND_REPEAT ;
} else {
$this -> noticesync &= ~ FOREIGN_NOTICE_SEND_REPEAT ;
}
2009-01-05 04:02:12 +00:00
if ( $friendsync ) {
$this -> friendsync |= FOREIGN_FRIEND_RECV ;
} else {
$this -> friendsync &= ~ FOREIGN_FRIEND_RECV ;
}
$this -> profilesync = 0 ;
}
2011-03-22 15:54:23 +00:00
// Convenience methods
2020-06-28 18:05:11 +01:00
public function getForeignUser ()
2009-01-05 01:04:07 +00:00
{
2008-12-23 19:19:07 +00:00
$fuser = new Foreign_user ();
$fuser -> service = $this -> service ;
$fuser -> id = $this -> foreign_id ;
2009-01-05 01:04:07 +00:00
2008-12-23 19:19:07 +00:00
$fuser -> limit ( 1 );
2009-01-05 01:04:07 +00:00
2015-07-17 17:44:09 +01:00
if ( ! $fuser -> find ( true )) {
throw new NoResultException ( $fuser );
2008-12-23 19:19:07 +00:00
}
2009-01-05 01:04:07 +00:00
2015-07-17 17:44:09 +01:00
return $fuser ;
2008-12-23 19:19:07 +00:00
}
2009-01-05 01:04:07 +00:00
2020-06-28 18:05:11 +01:00
public function getUser ()
2008-12-23 19:33:23 +00:00
{
2015-07-18 10:39:34 +01:00
return Profile :: getByID ( $this -> user_id ) -> getUser ();
2008-12-23 19:19:07 +00:00
}
2009-01-05 01:04:07 +00:00
2020-06-28 18:05:11 +01:00
public function getProfile ()
2013-09-19 16:20:44 +01:00
{
2015-07-18 10:39:34 +01:00
return Profile :: getByID ( $this -> user_id );
2013-09-19 16:20:44 +01:00
}
2010-03-05 03:14:40 +00:00
// Make sure we only ever delete one record at a time
2020-06-28 18:05:11 +01:00
public function safeDelete ()
2010-03-05 03:14:40 +00:00
{
if ( ! empty ( $this -> user_id )
&& ! empty ( $this -> foreign_id )
2020-06-28 18:05:11 +01:00
&& ! empty ( $this -> service )) {
2010-03-05 03:14:40 +00:00
return $this -> delete ();
} else {
2020-06-28 18:05:11 +01:00
common_debug (
LOG_WARNING ,
2010-03-05 03:14:40 +00:00
'Foreign_link::safeDelete() tried to delete a '
. 'Foreign_link without a fully specified compound key: '
2020-06-28 18:05:11 +01:00
. var_export ( $this , true )
);
2010-03-05 03:14:40 +00:00
return false ;
}
}
2008-08-27 04:24:23 +01:00
}