. * * @category Plugin * @package GNUsocial * @author Diogo Cordeiro * @copyright 2018 Free Software Foundation http://fsf.org * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link https://www.gnu.org/software/social/ */ if (!defined('GNUSOCIAL')) { exit(1); } /** * ActivityPub's Pending follow requests * * @category Plugin * @package GNUsocial * @author Diogo Cordeiro * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://www.gnu.org/software/social/ */ class Activitypub_pending_follow_requests extends Managed_DataObject { public $__table = 'Activitypub_pending_follow_requests'; public $local_profile_id; public $remote_profile_id; private $_reldb = null; /** * Return table definition for Schema setup and DB_DataObject usage. * * @author Diogo Cordeiro * @return array array of column definitions */ public static function schemaDef() { return [ 'fields' => [ 'local_profile_id' => ['type' => 'integer', 'not null' => true], 'remote_profile_id' => ['type' => 'integer', 'not null' => true], 'relation_id' => ['type' => 'serial', 'not null' => true], ], 'primary key' => ['relation_id'], 'unique keys' => [ 'Activitypub_pending_follow_requests_relation_id_key' => ['relation_id'], ], 'foreign keys' => [ 'Activitypub_pending_follow_requests_local_profile_id_fkey' => ['profile', ['local_profile_id' => 'id']], 'Activitypub_pending_follow_requests_remote_profile_id_fkey' => ['profile', ['remote_profile_id' => 'id']], ], ]; } public function __construct($actor, $remote_actor) { $this->local_profile_id = $actor; $this->remote_profile_id = $remote_actor; } /** * Add Follow request to table. * * @author Diogo Cordeiro * @param int32 $actor actor id * @param int32 $remote_actor remote actor id * @return boolean true if added, false otherwise */ public function add() { return !$this->exists() && $this->insert(); } /** * Check if a Follow request is pending. * * @author Diogo Cordeiro * @return boolean true if is pending, false otherwise */ public function exists() { $this->_reldb = clone ($this); if ($this->_reldb->find() > 0) { $this->_reldb->fetch(); return true; } return false; } /** * Remove a request from the pending table. * * @author Diogo Cordeiro * @return boolean true if removed, false otherwise */ public function remove() { return $this->exists() && $this->_reldb->delete(); } }