wordpress-activitypub/includes/model/class-application-user.php

109 lines
1.9 KiB
PHP
Raw Normal View History

<?php
namespace Activitypub\Model;
use WP_Query;
use Activitypub\Signature;
2023-07-03 11:20:44 +02:00
use Activitypub\Collection\Users;
use function Activitypub\get_rest_url_by_path;
class Application_User extends Blog_User {
/**
* The User-ID
*
* @var int
*/
2023-07-03 11:20:44 +02:00
protected $_id = Users::APPLICATION_USER_ID; // phpcs:ignore PSR2.Classes.PropertyDeclaration.Underscore
/**
* The User-Type
*
* @var string
*/
2023-06-28 14:22:27 +02:00
protected $type = 'Application';
/**
* If the User is discoverable.
*
* @var boolean
*/
protected $discoverable = false;
/**
* Get the User-Url.
*
* @return string The User-Url.
*/
public function get_url() {
return get_rest_url_by_path( 'application' );
}
2023-05-24 17:40:48 +02:00
public function get_name() {
return 'application';
}
public function get_preferred_username() {
return $this::get_name();
2023-05-24 17:40:48 +02:00
}
2023-05-31 10:31:49 +02:00
public function get__public_key() {
2023-06-01 12:47:08 +02:00
$key = \get_option( 'activitypub_application_user_public_key' );
2023-05-31 10:31:49 +02:00
if ( $key ) {
return $key;
}
$this->generate_key_pair();
2023-06-01 12:47:08 +02:00
$key = \get_option( 'activitypub_application_user_public_key' );
2023-05-31 10:31:49 +02:00
return $key;
}
/**
* @param int $user_id
*
* @return mixed
*/
public function get__private_key() {
2023-06-01 12:47:08 +02:00
$key = \get_option( 'activitypub_application_user_private_key' );
2023-05-31 10:31:49 +02:00
if ( $key ) {
return $key;
}
$this->generate_key_pair();
2023-06-01 12:47:08 +02:00
return \get_option( 'activitypub_application_user_private_key' );
2023-05-31 10:31:49 +02:00
}
private function generate_key_pair() {
$key_pair = Signature::generate_key_pair();
if ( ! is_wp_error( $key_pair ) ) {
2023-06-01 12:47:08 +02:00
\update_option( 'activitypub_application_user_public_key', $key_pair['public_key'] );
\update_option( 'activitypub_application_user_private_key', $key_pair['private_key'] );
2023-05-31 10:31:49 +02:00
}
}
2023-06-28 16:43:41 +02:00
public function get_followers() {
return null;
}
public function get_following() {
return null;
}
public function get_attachment() {
return array();
}
public function get_featured_tags() {
return array();
}
public function get_featured() {
return array();
}
}