123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- /**
- * This Service is provided as an example only. It doesn't do anything useful :)
- */
- // Always extend Keyring_Service, or something else which extends it (e.g. Keyring_Service_OAuth1)
- class Keyring_Service_Example extends Keyring_Service {
- const NAME = 'example';
- const LABEL = 'Example Service';
- function __construct() {
- // If you need a custom __construct(), make sure to call the parent explicitly like this
- parent::__construct();
- // Optionally register methods (of this object) to handle the UI for different actions
- // action is in the format "keyring_{$service}_{request/verify}_ui".
- // These are optional, and are only required if you need the user to see/do something during
- // each step.
- add_action( 'keyring_example_request_ui', array( $this, 'request_ui' ) );
- add_action( 'keyring_example_verify_ui', array( $this, 'verify_ui' ) );
- // Enable "basic" UI for entering key/secret, which a lot of services require
- // add_action( 'keyring_example_manage_ui', array( $this, 'basic_ui' ) );
- // Optionally make this a service that we can communicate with *without*
- // requiring any sort of connection
- $this->requires_token( false );
- }
- /**
- * Allows you to do things before any output has been sent to the browser.
- * This means you can redirect to a remote site, another page etc if need be.
- */
- function request_token() {
- // Nothing to do in this example
- }
- /**
- * You can define how a token presents itself to the user here. For example for Twitter,
- * we might show "@" . $screen_name.
- *
- * @param Keyring_Access_Token $token
- * @return String for use in UIs etc that helps identify this specific token
- */
- function get_display( Keyring_Access_Token $token ) {
- return $token->token;
- }
- /**
- * See __construct() for details on how this is hooked in to handle the UI for
- * during the request process.
- */
- function request_ui() {
- Keyring::admin_page_header(); // Generic header which can be used (includes h2 header)
- echo '<p>This is just an example of how you could display some sort of custom UI if you needed to.</p>';
- echo '<p>Clicking the button below will generate a random token and store it as an example.</p>';
- echo '<p class="submitbox">';
- echo '<a href="' . esc_url( Keyring_Util::admin_url( 'example', array( 'action' => 'verify' ) ) ) . '" class="button-primary">' . __( 'Continue', 'keyring' ) . '</a>';
- echo '<a href="' . esc_attr( $_SERVER['HTTP_REFERER'] ) . '" class="submitdelete" style="margin-left:2em;">Abort</a>';
- echo '</p>';
- Keyring::admin_page_footer();
- }
- /**
- * Allows you to do things before any output has been sent to the browser.
- * This means you can redirect to a remote site, another page etc if need be.
- */
- function verify_token() {
- // Generate a fake token and store it for this example
- $token = sha1( time() . mt_rand( 0, 1000 ) . time() );
- $meta = array( 'time' => time(), 'user' => get_current_user() );
- $this->store_token( $token, $meta );
- }
- /**
- * This method will be used to make requests against this service. This is where
- * you should handle injecting tokens/headers/etc required for authentication.
- *
- * @param string $url
- * @param array $params additional parameters/headers for the request. Passed to WP_Http
- * @return Response body as a string, or a Keyring_Error with the full WP_Http response object as the "message"
- */
- function request( $url, array $params = array() ) {
- // empty
- }
- /**
- * See __construct() for details on how this is hooked in to handle the UI for
- * during the verify process.
- */
- function verify_ui() {
- Keyring::admin_page_header();
- echo '<p>As an example, we just randomly generated a token and saved it in the token store. When you go back to your Connections listing, you should see it listed there under "Example Service".</p>';
- echo '<p><a href="' . esc_url( Keyring_Util::admin_url() ) . '" class="button-primary">' . __( 'Done', 'keyring' ) . '</a>';
- Keyring::admin_page_footer();
- }
- }
- // Always hook into keyring_load_services and use your init method to initiate a Service properly (singleton)
- add_action( 'keyring_load_services', array( 'Keyring_Service_Example', 'init' ) );
|