. /** * ActivityPub implementation for GNU social * * @package GNUsocial * @author Diogo Cordeiro * @copyright 2018-2019 Free Software Foundation, Inc http://www.fsf.org * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later * @link http://www.gnu.org/software/social/ */ defined('GNUSOCIAL') || die(); /** * ActivityPub's Pending follow requests * * @category Plugin * @package GNUsocial * @author Diogo Cordeiro * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ 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'], '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. * * @return boolean true if added, false otherwise * @author Diogo Cordeiro */ 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(); } }