Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Copyright 2011 jacobbrett
- License: GPLv2
- */
- <?php
- class bandcamp_integration {
- function bandcamp_integration() {
- // Add admin options page
- add_action( 'admin_menu', '$this->admin_menu' );
- // Add admin settings
- add_action( 'admin_init', '$this->admin_init' );
- }
- // Add admin options page
- function admin_menu() {
- add_options_page( 'BandCamp Integration', 'BandCamp', 'manage_options', 'bandcamp-integration', 'options_page' );
- }
- // Display admin options page
- function options_page() {
- ?>
- <div class="wrap">
- <h2>BandCamp Integration</h2>
- <p>Options relating to the Custom Plugin.</p>
- <form method="post" action="options.php">
- <?php settings_fields('options'); ?>
- <?php do_settings_sections('bandcamp_integration'); ?>
- <p class="submit">
- <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
- </p>
- </form>
- </div>
- <?php
- }
- // Add admin settings
- function admin_init() {
- register_setting( 'options', 'options', 'options_validate' );
- add_settings_section( 'main', 'Main Settings', 'main_callback', 'bandcamp_integration' );
- add_settings_field( 'api_key', 'BandCamp API Key', 'api_key_callback', 'bandcamp_integration', 'main' );
- add_settings_field( 'band_id', 'BandCamp Band ID', 'band_id_callback', 'bandcamp_integration', 'main' );
- add_settings_field( 'sync', 'Synchronise Data', 'sync_callback', 'bandcamp_integration', 'main' );
- }
- // Main Settings description
- function main_callback() {
- echo '<p>Main description of this section here.</p>';
- }
- // BandCamp API Key description
- function api_key_callback() {
- $options = get_option( 'options' );
- echo "<input id='bandcamp_api_key' name='options[api_key]' size='40' type='text' value='{$options['api_key']}' />";
- echo "<span class='description'>You may <a href='http://bandcamp.com/developer#key_request' target='_blank'>request an API key</a> if you do not have one.</span>";
- }
- // BandCamp Band ID description
- function band_id_callback() {
- $options = get_option( 'options' );
- echo "<input id='bandcamp_band_id' name='options[band_id]' size='40' type='text' value='{$options['band_id']}' />";
- echo '<span class="description">You may find your Band ID by <a href="http://api.bandcamp.com/api/band/3/search?key=<key>&name=band%20name&debug" target="_blank">querying BandCamp</a>.</span>';
- }
- // Synchronise Data description
- function sync_callback() {
- $options = get_option( 'options' );
- echo '<button type="button">Synchronise Data</button>';
- echo '<span class="description">Update local discography with data from BandCamp (unimplemented).</span>';
- }
- // Validate options
- function options_validate( $input ) {
- $options = get_option( 'options' );
- $options['api_key'] = trim( $input['api_key'] );
- if ( ! preg_match( '/^[a-z]{29}$/i', $options['api_key'] ) )
- $options['api_key'] = '';
- $options['band_id'] = trim( $input['band_id'] );
- if ( ! preg_match( '/^[0-9]{10}$/i', $options['band_id'] ) )
- $options['band_id'] = '';
- return $options;
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement