first commit

This commit is contained in:
2025-02-24 22:33:42 +01:00
commit 737c037e85
18358 changed files with 5392983 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
<?php
namespace FileBird\Rest;
defined( 'ABSPATH' ) || exit;
interface ApiInterface {
public function register_rest_routes();
}

View File

@@ -0,0 +1,111 @@
<?php
namespace FileBird\Rest;
defined( 'ABSPATH' ) || exit;
use FileBird\Classes\Attachment\AttachmentSize;
use FileBird\Controller\FolderController;
class FolderApi {
private $controller;
public function register_rest_routes() {
$this->controller = new FolderController();
register_rest_route(
NJFB_REST_URL,
'get-folders',
array(
'methods' => \WP_REST_Server::READABLE,
'callback' => array( $this->controller, 'getFolders' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
register_rest_route(
NJFB_REST_URL,
'gutenberg-get-folders',
array(
'methods' => \WP_REST_Server::READABLE,
'callback' => array( $this->controller, 'gutenbergGetFolder' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
register_rest_route(
NJFB_REST_URL,
'new-folder',
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this->controller, 'createFolder' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
register_rest_route(
NJFB_REST_URL,
'update-folder',
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this->controller, 'updateFolder' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
register_rest_route(
NJFB_REST_URL,
'update-folder-color',
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this->controller, 'updateFolderColor' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
register_rest_route(
NJFB_REST_URL,
'update-folder-ord',
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this->controller, 'updateFolderOrder' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
register_rest_route(
NJFB_REST_URL,
'delete-folder',
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this->controller, 'deleteFolder' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
register_rest_route(
NJFB_REST_URL,
'assign-folder',
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this->controller, 'assignFolder' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
register_rest_route(
NJFB_REST_URL,
'set-folder-counter',
array(
'methods' => \WP_REST_Server::READABLE,
'callback' => array( $this->controller, 'setFolderCounter' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
register_rest_route(
NJFB_REST_URL,
'generate-attachment-size',
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( AttachmentSize::getInstance(), 'apiCallback' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
}
public function permission_callback() {
return current_user_can( 'upload_files' );
}
}

View File

@@ -0,0 +1,138 @@
<?php
namespace FileBird\Rest;
defined( 'ABSPATH' ) || exit;
use FileBird\Controller\Api;
class PublicApi {
private $controller;
public function register_rest_routes() {
$this->controller = new Api();
register_rest_route(
NJFB_REST_URL,
'fbv-api',
array(
'methods' => 'POST',
'callback' => array( $this->controller, 'restApi' ),
'permission_callback' => array( $this, 'admin_permission_callback' ),
)
);
//GET http://yoursite/wp-json/filebird/public/v1/folders
register_rest_route(
NJFB_REST_PUBLIC_URL,
'folders',
array(
'methods' => 'GET',
'callback' => array( $this->controller, 'publicRestApiGetFolders' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
//GET http://yoursite/wp-json/filebird/public/v1/folder/?folder_id=
register_rest_route(
NJFB_REST_PUBLIC_URL,
'folder',
array(
'methods' => 'GET',
'callback' => array( $this->controller, 'publicRestApiGetFolderDetail' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
//POST http://yoursite/wp-json/filebird/public/v1/folder/set-attachment
//ids=&folder=
register_rest_route(
NJFB_REST_PUBLIC_URL,
'folder/set-attachment',
array(
'methods' => 'POST',
'callback' => array( $this->controller, 'publicRestApiSetAttachment' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
//GET http://yoursite/wp-json/filebird/public/v1/attachment-id/?folder_id=
register_rest_route(
NJFB_REST_PUBLIC_URL,
'attachment-id',
array(
'methods' => 'GET',
'callback' => array( $this->controller, 'publicRestApiGetAttachmentIds' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
//GET http://yoursite/wp-json/filebird/public/v1/attachment-count/?folder_id=
register_rest_route(
NJFB_REST_PUBLIC_URL,
'attachment-count',
array(
'methods' => 'GET',
'callback' => array( $this->controller, 'publicRestApiGetAttachmentCount' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
//POST http://yoursite/wp-json/filebird/public/v1/folders
//parent_id=&name=
register_rest_route(
NJFB_REST_PUBLIC_URL,
'folders',
array(
'methods' => 'POST',
'callback' => array( $this->controller, 'publicRestApiNewFolder' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
}
private function getAuthorizationHeader() {
$headers = null;
if ( isset( $_SERVER['Authorization'] ) ) {
$headers = trim( $_SERVER['Authorization'] );
} elseif ( isset( $_SERVER['HTTP_AUTHORIZATION'] ) ) { //Nginx or fast CGI
$headers = trim( $_SERVER['HTTP_AUTHORIZATION'] );
} elseif ( function_exists( 'apache_request_headers' ) ) {
$requestHeaders = apache_request_headers();
// Server-side fix for bug in old Android versions (a nice side-effect of this fix means we don't care about capitalization for Authorization)
$requestHeaders = array_combine( array_map( 'ucwords', array_keys( $requestHeaders ) ), array_values( $requestHeaders ) );
//print_r($requestHeaders);
if ( isset( $requestHeaders['Authorization'] ) ) {
$headers = trim( $requestHeaders['Authorization'] );
}
}
return $headers;
}
private function getBearerToken() {
// phpcs:disable WordPress.Security.NonceVerification.Recommended
$token = null;
$headers = $this->getAuthorizationHeader();
// HEADER: Get the access token from the header
if ( ! empty( $headers ) ) {
if ( preg_match( '/Bearer\s(\S+)/', $headers, $matches ) ) {
$token = $matches[1];
}
}
if ( is_null( $token ) && isset( $_REQUEST['token'] ) ) {
$token = $_REQUEST['token'];
}
return $token;
}
public function admin_permission_callback() {
return current_user_can( 'upload_files' ) && current_user_can( 'manage_options' );
}
public function permission_callback( $request ) {
$key = get_option( 'fbv_rest_api_key', '' );
if ( \strlen( $key ) == 40 ) {
return $key === $this->getBearerToken();
}
return false;
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace FileBird\Rest;
use FileBird\Utils\Singleton;
defined( 'ABSPATH' ) || exit;
class RestApi {
use Singleton;
public function __construct() {
add_action( 'rest_api_init', array( $this, 'rest_api_init' ) );
}
public function rest_api_init() {
$rest_apis = array(
new FolderApi(),
new PublicApi(),
new SettingApi(),
new SyncApi(),
);
foreach ( $rest_apis as $rest_api ) {
$rest_api->register_rest_routes();
}
}
}

View File

@@ -0,0 +1,42 @@
<?php
namespace FileBird\Rest;
defined( 'ABSPATH' ) || exit;
use FileBird\Controller\SettingController;
class SettingApi {
private $controller;
public function register_rest_routes() {
$this->controller = new SettingController();
register_rest_route(
NJFB_REST_URL,
'set-settings',
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this->controller, 'setSettings' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
register_rest_route(
NJFB_REST_URL,
'set-user-settings',
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this->controller, 'setUserSettings' ),
'permission_callback' => array( $this, 'permission_user_callback' ),
)
);
}
public function permission_user_callback() {
return current_user_can( 'upload_files' );
}
public function permission_callback() {
return current_user_can( 'manage_options' );
}
}

View File

@@ -0,0 +1,49 @@
<?php
namespace FileBird\Rest;
defined( 'ABSPATH' ) || exit;
use FileBird\Controller\SyncController;
class SyncApi {
private $controller;
public function register_rest_routes() {
$this->controller = new SyncController();
register_rest_route(
NJFB_REST_URL,
'export-csv',
array(
'methods' => \WP_REST_Server::READABLE,
'callback' => array( $this->controller, 'exportCSV' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
register_rest_route(
NJFB_REST_URL,
'import-csv',
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this->controller, 'importCSV' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
register_rest_route(
NJFB_REST_URL,
'import-csv-detail',
array(
'methods' => \WP_REST_Server::CREATABLE,
'callback' => array( $this->controller, 'getImportCSVDetail' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
}
public function permission_callback() {
return current_user_can( 'upload_files' );
}
}