admium_globals = $admium_globals;
$this->wpapi = $wpapi;
}
function set_hooks() {
// Add menu pages to configure the plugin.
$this->wpapi->add_action('admin_menu', array($this, 'plugin_admin_menu'));
// Add interface to mark posts or pages as subscriber-only.
$this->wpapi->add_action('add_meta_boxes', array($this, 'plugin_post_boxes'));
$this->wpapi->add_action('save_post', array($this, 'save_post_data'));
$this->wpapi->add_action('save_post', array($this, 'save_quick_edit_data'));
// Filter to add new column to posts list
$this->wpapi->add_filter('manage_post_posts_columns', array($this, 'add_post_columns'));
// Action to add content to custom posts column
$this->wpapi->add_action('manage_posts_custom_column', array($this, 'render_post_columns'), 10, 2);
// Action to change quick edit box
$this->wpapi->add_action('quick_edit_custom_box', array($this, 'add_quick_edit'), 10, 2);
// Action to update quick edit inputs
$this->wpapi->add_action('admin_footer', array($this, 'quick_edit_javascript'));
$this->wpapi->add_filter('post_row_actions', array($this, 'expand_quick_edit_link'), 10, 2);
// Action to put up a notice that configuration is not complete
if ( !$this->wpapi->get_option($this->admium_globals->api_token_name())
&& !isset($_POST['submit'])
&& $_GET['page'] != $this->admium_globals->admin_page_name() ) {
$this->wpapi->add_action('admin_notices', array($this, 'configuration_incomplete_warning'));
}
}
function render_plugin_page_setup_view() {
# Retrieve HTML of setup view from main server.
$test = array_key_exists($this->admium_globals->test_parameter_name(), $_GET);
$setup_url = $this->admium_globals->setup_plugin_url($test);
$response = $this->wpapi->wp_remote_get($setup_url);
# Render setup view.
echo $response['body'];
# Pre-fill some fields in the form included in that HTML.
$email = $this->wpapi->get_option('admin_email');
$site_name = $this->wpapi->get_option('blogname');
$site_url = $this->wpapi->home_url();
?>
admium_globals->test_parameter_name(), $_GET);
$not_first_view = $this->wpapi->get_option($this->admium_globals->not_first_view_flag_name());
$this->wpapi->update_option($this->admium_globals->not_first_view_flag_name(), true);
$page_url = $this->admium_globals->plugin_page_url($api_token, $not_first_view, $test);
echo "";
}
function render_plugin_page_getting_started() {
$test = array_key_exists($this->admium_globals->test_parameter_name(), $_GET);
$page_url = $this->admium_globals->plugin_getting_started($test);
echo "";
}
function admium_plugin_page() {
if ( isset($_POST['publisher'] ) ) {
# Handle submission of the setup view.
$test = array_key_exists($this->admium_globals->test_parameter_name(), $_GET);
$response = $this->wpapi->wp_remote_post(
$this->admium_globals->setup_post_url($test),
array(
'method' => 'POST',
'timeout' => 45,
'redirection' => 5,
'httpversion' => '1.0',
'blocking' => true,
'headers' => array(),
'body' => $_POST,
'cookies' => array()
)
);
if ($response['response']['code'] == 200) {
# It worked!
# TODO: handle errors with updating option.
list($token, $site_id) = explode(",", $response['body']);
$this->wpapi->update_option($this->admium_globals->api_token_name(), $token);
$this->wpapi->update_option($this->admium_globals->admium_site_id(), $site_id);
$this->render_plugin_page_after_setup_view($token);
} else if ($response['response']['code'] == 401) {
# Invalid API token was submitted.
echo "
";
$this->render_plugin_page_setup_view();
} else if ($response['response']['code'] == 403) {
# Failed to validate a model or somethin'.
echo "";
$this->render_plugin_page_setup_view();
} else {
# Who knows what.
echo "";
var_dump($response);
$this->render_plugin_page_setup_view();
}
} else if ( !$this->wpapi->get_option($this->admium_globals->api_token_name()) ) {
$this->render_plugin_page_setup_view();
} else {
$api_token = $this->wpapi->get_option($this->admium_globals->api_token_name());
$this->render_plugin_page_after_setup_view($api_token);
}
}
// This function renders a notice at the top of the admin UI that
// this plugin requires more configuration.
function configuration_incomplete_warning() {
?>
Admium is almost ready.
You must click here to finish setup.
wpapi->add_submenu_page('admium_menu', 'Admium Dashboard', 'Dashboard', 'administrator', 'admium_menu', array($this, 'admium_plugin_page'));
$this->wpapi->add_submenu_page('admium_menu', 'Getting Started', 'Getting Started', 'administrator', 'admium_menu_getting_started', array($this, 'render_plugin_page_getting_started'));
$this->wpapi->add_submenu_page('admium_menu', 'Admium Settings', 'Settings', 'administrator', 'admium_menu_settings', array($this, 'menu_page'));
}
// This function makes a page in the WordPress admin UI.
function menu_page() {
$hidden_field_name = 'mt_submit_hidden';
$call_to_subscribe = get_option($this->admium_globals->call_to_subscribe_option_name());
if( isset($_POST[ $hidden_field_name ]) && $_POST[ $hidden_field_name ] == 'Y' ) {
// This is a POST, so update the option.
$call_to_subscribe = stripslashes( $_POST[ $this->admium_globals->call_to_subscribe_option_name() ] );
update_option( $this->admium_globals->call_to_subscribe_option_name(), $call_to_subscribe );
// Notify the user we updated the option.
?>
admium_globals->admium_post_visibility_field_name(), 'true');
//$showcalltosubscribe = get_post_meta($post_ID, $this->admium_globals->admium_post_visibility_calltosubscribe(), 'true');
?>
Post Visiblity:
>
All
>
Non-subscriber only
>
Subscriber only
>
Subscriber only; show call to subscribe to non-subscribers
Admium visibility
All
Non-subscriber only
Subscriber only
Subscriber only; nag non-subs
wpapi->current_screen();
if (($current_screen->id != 'edit-post') || ($current_screen->post_type != 'post')) return;
?>
wpapi->current_screen();
if (($current_screen->id != 'edit-post') || ($current_screen->post_type != 'post')) return $actions;
$vis = get_post_meta( $post->ID, 'admium-visibility', TRUE);
$actions['inline hide-if-no-js'] = '";
$actions['inline hide-if-no-js'] .= __( 'Quick Edit' );
$actions['inline hide-if-no-js'] .= ' ';
return $actions;
}
function save_quick_edit_data($post_id) {
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return $post_id;
$visibility = $_POST[ $this->admium_globals->admium_post_visibility_field_name() ];
update_post_meta($post_id, $this->admium_globals->admium_post_visibility_field_name(), $visibility);
// $showcalltosubscribe = $_POST[ $this-admium_globals->admium_post_visibility_calltosubscribe() ];
// update_post_meta($post_id, $this-admium_globals->admium_post_visibility_calltosubscribe(), $showcalltosubscribe);
}
// Store in the database whether a post is subscriber-only, based on checkbox.
function save_post_data( $post_id ) {
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return $post_id;
$visibility = $_POST[ $this->admium_globals->admium_post_visibility_field_name() ];
update_post_meta($post_id, $this->admium_globals->admium_post_visibility_field_name(), $visibility);
// $showcalltosubscribe = $_POST[ $this-admium_globals->admium_post_visibility_calltosubscribe() ];
// update_post_meta($post_id, $this-admium_globals->admium_post_visibility_calltosubscribe(), $showcalltosubscribe);
}
}
?>