-
Notifications
You must be signed in to change notification settings - Fork 800
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Extract the share logic to base class
- Loading branch information
1 parent
836683d
commit 8a796c6
Showing
2 changed files
with
95 additions
and
78 deletions.
There are no files selected for viewing
90 changes: 90 additions & 0 deletions
90
projects/packages/publicize/src/rest-endpoints/class-base-controller.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
<?php | ||
/** | ||
* Base Controller class. | ||
* | ||
* @package automattic/jetpack-publicize | ||
*/ | ||
|
||
namespace Automattic\Jetpack\Publicize\Rest_Endpoints; | ||
|
||
use Automattic\Jetpack\Status\Host; | ||
use WP_Error; | ||
use WP_REST_Controller; | ||
use WP_REST_Request; | ||
use WP_REST_Response; | ||
|
||
/** | ||
* Base controller for Publicize endpoints. | ||
*/ | ||
abstract class Base_Controller extends WP_REST_Controller { | ||
|
||
/** | ||
* Constructor. | ||
*/ | ||
public function __construct() { | ||
$this->namespace = 'wpcom/v3'; | ||
|
||
$this->wpcom_is_wpcom_only_endpoint = true; | ||
} | ||
|
||
/** | ||
* Check if we are on WPCOM. | ||
* | ||
* @return bool | ||
*/ | ||
public static function is_wpcom() { | ||
return ( new Host() )->is_wpcom_simple(); | ||
} | ||
|
||
/** | ||
* Filters out data based on ?_fields= request parameter | ||
* | ||
* @param array $item Item to prepare. | ||
* @param WP_REST_Request $request Full details about the request. | ||
* | ||
* @return WP_REST_Response filtered item | ||
*/ | ||
public function prepare_item_for_response( $item, $request ) { | ||
if ( ! is_callable( array( $this, 'get_fields_for_response' ) ) ) { | ||
return rest_ensure_response( $item ); | ||
} | ||
|
||
$fields = $this->get_fields_for_response( $request ); | ||
|
||
$response_data = array(); | ||
foreach ( $item as $field => $value ) { | ||
if ( in_array( $field, $fields, true ) ) { | ||
$response_data[ $field ] = $value; | ||
} | ||
} | ||
|
||
return rest_ensure_response( $response_data ); | ||
} | ||
|
||
/** | ||
* Verify that user can access Publicize data | ||
* | ||
* @return true|WP_Error | ||
*/ | ||
public function get_items_permission_check() { | ||
global $publicize; | ||
|
||
if ( ! $publicize ) { | ||
return new WP_Error( | ||
'publicize_not_available', | ||
__( 'Sorry, Jetpack Social is not available on your site right now.', 'jetpack-publicize-pkg' ), | ||
array( 'status' => rest_authorization_required_code() ) | ||
); | ||
} | ||
|
||
if ( $publicize->current_user_can_access_publicize_data() ) { | ||
return true; | ||
} | ||
|
||
return new WP_Error( | ||
'invalid_user_permission_publicize', | ||
__( 'Sorry, you are not allowed to access Jetpack Social data on this site.', 'jetpack-publicize-pkg' ), | ||
array( 'status' => rest_authorization_required_code() ) | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters