/home/kkco/.trash/wordpress-23-related-posts-plugin/settings.php
<?php
include_once(dirname(__FILE__) . '/uploader.php');
/**
* Place menu icons at admin head
**/
add_action('admin_head', 'wp_rp_admin_head');
function wp_rp_admin_head() {
$menu_icon = plugins_url('static/img/menu_icon.png', __FILE__);
$menu_icon_retina = plugins_url('static/img/menu_icon_2x.png', __FILE__);
include wp_rp_get_template('admin_head');
}
/**
* Add settings link to installed plugins list
**/
function wp_rp_add_link_to_settings($links) {
return array_merge( array(
'<a href="' . admin_url('admin.php?page=wordpress-related-posts') . '">' . __('Settings', 'wp_related_posts') . '</a>',
), $links);
}
add_filter('plugin_action_links_' . WP_RP_PLUGIN_FILE, 'wp_rp_add_link_to_settings', 10, 2);
function wp_rp_subscription($email_or_unsubscribe, $subscription_types) {
$meta = wp_rp_get_meta();
$options = wp_rp_get_options();
if (! $subscription_types) {
if ($email_or_unsubscribe) { return false; }
$subscription_types = "activityreport,newsletter";
}
if (! $meta['subscribed'] && $meta['email'] && !$email_or_unsubscribe) {
// Not processed yet
$meta['email'] = false;
$options['subscription_types'] = false;
wp_rp_update_meta($meta);
wp_rp_update_options($options);
return true;
}
if($meta['zemanta_api_key']) {
$post = array(
'api_key' => $meta['zemanta_api_key'],
'platform' => 'wordpress-wprp',
'url' => get_site_url(),
'subscriptions' => $subscription_types
);
if ($email_or_unsubscribe) {
$post['email'] = $email_or_unsubscribe;
}
$response = wp_remote_post(WP_RP_ZEMANTA_SUBSCRIPTION_URL . 'subscribe/', array(
'body' => $post,
'timeout' => 30
));
if (wp_remote_retrieve_response_code($response) == 200) {
$body = wp_remote_retrieve_body($response);
if ($body) {
$response_json = json_decode($body);
if ($response_json->status !== 'ok') {
$waiting = $response_json->reason == 'user-missing';
if ($email_or_unsubscribe && $waiting) {
$meta['email'] = $email_or_unsubscribe;
$meta['subscribed'] = false;
$options['subscription_types'] = $subscription_types;
wp_rp_update_meta($meta);
wp_rp_update_options($options);
return true;
// We will try again when
}
return false;
}
$meta['email'] = $email_or_unsubscribe;
$meta['subscribed'] = (int) !!$email_or_unsubscribe;
$options['subscription_types'] = $subscription_types;
wp_rp_update_meta($meta);
wp_rp_update_options($options);
return true; // don't subscribe to bf if zem succeeds
}
}
}
return false;
}
function wp_rp_ajax_subscribe_callback () {
check_ajax_referer('wp_rp_ajax_nonce');
$email = (!empty($_POST['email']) && $_POST['email'] !== '0') ? $_POST['email'] : false;
$types = empty($_POST['subscription']) ? array() : explode(",", $_POST['subscription']);
$valid_types = array();
foreach($types as $tp) {
if ($tp && in_array($tp, array('activityreport', 'newsletter'))) {
$valid_types[] = $tp;
}
}
$valid_types = $valid_types ? implode(',', $valid_types) : false;
if (wp_rp_subscription($email, $valid_types)) {
print "1";
}
else {
print "0";
}
die();
}
add_action('wp_ajax_wprp_subscribe', 'wp_rp_ajax_subscribe_callback');
/**
* Settings
**/
add_action('admin_menu', 'wp_rp_settings_admin_menu');
function wp_rp_settings_admin_menu() {
if (!current_user_can('delete_users')) {
return;
}
$title = __('Wordpress Related Posts', 'wp_related_posts');
$page = add_options_page(__('Wordpress Related Posts', 'wp_related_posts'), $title,
'manage_options', 'wordpress-related-posts', 'wp_rp_settings_page');
add_action('admin_print_scripts-' . $page, 'wp_rp_settings_scripts');
}
function wp_rp_settings_scripts() {
wp_enqueue_script('wp_rp_themes_script', plugins_url('static/js/themes.js', __FILE__), array('jquery'), WP_RP_VERSION);
wp_enqueue_script("wp_rp_dashboard_script", plugins_url('static/js/dashboard.js', __FILE__), array('jquery'), WP_RP_VERSION);
wp_enqueue_script("wp_rp_extras_script", plugins_url('static/js/extras.js', __FILE__), array('jquery'), WP_RP_VERSION);
}
function wp_rp_settings_styles() {
wp_enqueue_style("wp_rp_dashboard_style", plugins_url("static/css/dashboard.css", __FILE__), array(), WP_RP_VERSION);
}
function wp_rp_ajax_dismiss_notification_callback() {
check_ajax_referer('wp_rp_ajax_nonce');
if(isset($_REQUEST['id'])) {
wp_rp_dismiss_notification((int)$_REQUEST['id']);
}
if(isset($_REQUEST['noredirect'])) {
die('ok');
}
wp_redirect(admin_url('admin.php?page=wordpress-related-posts'));
}
add_action('wp_ajax_rp_dismiss_notification', 'wp_rp_ajax_dismiss_notification_callback');
function wp_rp_get_api_key() {
$meta = wp_rp_get_meta();
if($meta['zemanta_api_key']) return $meta['zemanta_api_key'];
$zemanta_options = get_option('zemanta_options');
if ($zemanta_options && !empty($zemanta_options['api_key'])) {
$meta['zemanta_api_key'] = $zemanta_options['api_key'];
wp_rp_update_meta($meta);
return $meta['zemanta_api_key'];
}
return false;
}
function wp_rp_register() {
$meta = wp_rp_get_meta();
if ($meta['registered']) {
return;
}
$api_key = wp_rp_get_api_key();
if(! $api_key) {
$wprp_zemanta = new WPRPZemanta();
$wprp_zemanta->init(); // we have to do this manually because the admin_init hook was already triggered
$wprp_zemanta->register_options();
$api_key = $wprp_zemanta->api_key;
$meta['zemanta_api_key'] = $api_key;
}
if (!$api_key) { return false; }
$url = urlencode(get_bloginfo('wpurl'));
$post = array(
'api_key' => $api_key,
'platform' => 'wordpress-wprp',
'post_rid' => '',
'post_url' => $url,
'current_url' => $url,
'format' => 'json',
'method' => 'zemanta.post_published_ping'
);
$response = wp_remote_post(WP_RP_ZEMANTA_API_URL, array(
'body' => $post,
'timeout' => 30
));
if (wp_remote_retrieve_response_code($response) == 200) {
$body = wp_remote_retrieve_body($response);
if ($body) {
$response_json = json_decode($body);
$meta['registered'] = $response_json->status === 'ok';
}
}
wp_rp_update_meta($meta);
return $meta['registered'];
}
function wp_rp_settings_page() {
if (!current_user_can('delete_users')) {
die('Sorry, you don\'t have permissions to access this page.');
}
wp_rp_register();
$options = wp_rp_get_options();
$meta = wp_rp_get_meta();
$articles_count = wp_rp_article_count($meta['zemanta_api_key']);
$articles_uploaded = false;
if (isset( $_GET['wp_rp_upload_articles'] ) && !empty($meta['zemanta_api_key'])) {
$articles_uploaded = wp_rp_upload_articles($meta['zemanta_api_key']);
}
// Update already subscribed but in the old pipeline
if (!empty($meta["email"]) && empty($meta["subscribed"])) {
wp_rp_subscription($meta["email"], $options["subscription_types"]);
}
if ( isset( $_GET['wprp_global_notice'] ) && $_GET['wprp_global_notice'] === '0') {
$meta['global_notice'] = null;
wp_rp_update_meta($meta);
}
$postdata = stripslashes_deep($_POST);
if(sizeof($_POST)) {
if (!isset($_POST['_wp_rp_nonce']) || !wp_verify_nonce($_POST['_wp_rp_nonce'], 'wp_rp_settings') ) {
die('Sorry, your nonce did not verify.');
}
$old_options = $options;
$new_options = array(
'on_single_post' => isset($postdata['wp_rp_on_single_post']),
'max_related_posts' => (isset($postdata['wp_rp_max_related_posts']) && is_numeric(trim($postdata['wp_rp_max_related_posts']))) ? intval(trim($postdata['wp_rp_max_related_posts'])) : 5,
'on_rss' => isset($postdata['wp_rp_on_rss']),
'related_posts_title' => isset($postdata['wp_rp_related_posts_title']) ? trim($postdata['wp_rp_related_posts_title']) : '',
'promoted_content_enabled' => isset($postdata['wp_rp_promoted_content_enabled']),
'enable_themes' => isset($postdata['wp_rp_enable_themes']),
'max_related_post_age_in_days' => (isset($postdata['wp_rp_max_related_post_age_in_days']) && is_numeric(trim($postdata['wp_rp_max_related_post_age_in_days']))) ? intval(trim($postdata['wp_rp_max_related_post_age_in_days'])) : 0,
'custom_size_thumbnail_enabled' => isset($postdata['wp_rp_custom_size_thumbnail_enabled']) && $postdata['wp_rp_custom_size_thumbnail_enabled'] === 'yes',
'custom_thumbnail_width' => isset($postdata['wp_rp_custom_thumbnail_width']) ? intval(trim($postdata['wp_rp_custom_thumbnail_width'])) : WP_RP_CUSTOM_THUMBNAILS_WIDTH ,
'custom_thumbnail_height' => isset($postdata['wp_rp_custom_thumbnail_height']) ? intval(trim($postdata['wp_rp_custom_thumbnail_height'])) : WP_RP_CUSTOM_THUMBNAILS_HEIGHT,
'thumbnail_use_custom' => isset($postdata['wp_rp_thumbnail_use_custom']) && $postdata['wp_rp_thumbnail_use_custom'] === 'yes',
'thumbnail_custom_field' => isset($postdata['wp_rp_thumbnail_custom_field']) ? trim($postdata['wp_rp_thumbnail_custom_field']) : '',
'display_zemanta_linky' => $meta['show_zemanta_linky_option'] ? isset($postdata['wp_rp_display_zemanta_linky']) : true,
'only_admins_can_edit_related_posts' => !empty($postdata['wp_rp_only_admins_can_edit_related_posts']),
'desktop' => array(
'display_comment_count' => isset($postdata['wp_rp_desktop_display_comment_count']),
'display_publish_date' => isset($postdata['wp_rp_desktop_display_publish_date']),
'display_excerpt' => isset($postdata['wp_rp_desktop_display_excerpt']),
'display_category' => isset($postdata['wp_rp_desktop_display_category']),
'display_thumbnail' => isset($postdata['wp_rp_desktop_display_thumbnail']),
'excerpt_max_length' => (isset($postdata['wp_rp_desktop_excerpt_max_length']) && is_numeric(trim($postdata['wp_rp_desktop_excerpt_max_length']))) ? intval(trim($postdata['wp_rp_desktop_excerpt_max_length'])) : 200,
'custom_theme_enabled' => isset($postdata['wp_rp_desktop_custom_theme_enabled']),
)
);
if(!isset($postdata['wp_rp_exclude_categories'])) {
$new_options['exclude_categories'] = '';
} else if(is_array($postdata['wp_rp_exclude_categories'])) {
$new_options['exclude_categories'] = join(',', $postdata['wp_rp_exclude_categories']);
} else {
$new_options['exclude_categories'] = trim($postdata['wp_rp_exclude_categories']);
}
foreach(array('desktop') as $platform) {
if(isset($postdata['wp_rp_' . $platform . '_theme_name'])) { // If this isn't set, maybe the AJAX didn't load...
$new_options[$platform]['theme_name'] = trim($postdata['wp_rp_' . $platform . '_theme_name']);
} else {
$new_options[$platform]['theme_name'] = $old_options[$platform]['theme_name'];
}
if(isset($postdata['wp_rp_' . $platform . '_theme_custom_css'])) {
$new_options[$platform]['theme_custom_css'] = $postdata['wp_rp_' . $platform . '_theme_custom_css'];
} elseif (isset($postdata["wp_rp_${platform}_custom_theme_enabled"])) {
$new_options[$platform]['theme_custom_css'] = '';
} else {
$new_options[$platform]['theme_custom_css'] = $old_options[$platform]['theme_custom_css'];
}
}
if (isset($postdata['wp_rp_classic_state'])) {
$meta['classic_user'] = true;
} else {
$meta['classic_user'] = false;
}
wp_rp_update_meta($meta);
if (isset($postdata['wp_rp_turn_on_button_pressed'])) {
$meta['show_turn_on_button'] = false;
$meta['turn_on_button_pressed'] = $postdata['wp_rp_turn_on_button_pressed'];
$new_options['desktop']['display_thumbnail'] = true;
}
$preprocess_thumbnails = ($new_options['desktop']['display_thumbnail'] && !$old_options['desktop']['display_thumbnail']);
$default_thumbnail_path = wp_rp_upload_default_thumbnail_file();
if($default_thumbnail_path === false) { // no file uploaded
if(isset($postdata['wp_rp_default_thumbnail_remove'])) {
$new_options['default_thumbnail_path'] = false;
} else {
$new_options['default_thumbnail_path'] = $old_options['default_thumbnail_path'];
}
} else if(is_wp_error($default_thumbnail_path)) { // error while upload
$new_options['default_thumbnail_path'] = $old_options['default_thumbnail_path'];
wp_rp_add_admin_notice('error', $default_thumbnail_path->get_error_message());
} else { // file successfully uploaded
$new_options['default_thumbnail_path'] = $default_thumbnail_path;
}
if (((array) $old_options) != $new_options) {
if(!wp_rp_update_options($new_options)) {
wp_rp_add_admin_notice('error', __('Failed to save settings.', 'wp_related_posts'));
} else {
wp_rp_add_admin_notice('updated', __('Settings saved.', 'wp_related_posts'));
}
if($preprocess_thumbnails) {
wp_rp_process_latest_post_thumbnails();
}
} else {
// I should duplicate success message here
wp_rp_add_admin_notice('updated', __('Settings saved.', 'wp_related_posts'));
}
}
$input_hidden = array(
'wp_rp_ajax_nonce' => wp_create_nonce("wp_rp_ajax_nonce"),
'wp_rp_json_url' => esc_attr(WP_RP_CONTENT_BASE_URL . WP_RP_STATIC_JSON_PATH),
'wp_rp_version' => esc_attr(WP_RP_VERSION),
'wp_rp_dashboard_url' => esc_attr(WP_RP_CTR_DASHBOARD_URL),
'wp_rp_static_base_url' => esc_attr(WP_RP_STATIC_BASE_URL),
'wp_rp_plugin_static_base_url' => esc_attr(plugins_url("static/", __FILE__)),
);
$settings_file = __FILE__;
$form_url = admin_url('admin.php?page=wordpress-related-posts');
$form_display = 'block'; //($meta['show_turn_on_button'] && !$meta['turn_on_button_pressed'] ? 'none' : 'block');
global $wpdb;
$custom_fields = $wpdb->get_col( "SELECT meta_key FROM $wpdb->postmeta GROUP BY meta_key HAVING meta_key NOT LIKE '\_%' ORDER BY LOWER(meta_key)" );
$exclude_categories = explode(',', $options['exclude_categories']);
$categories = get_categories(array(
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => false
));
$blog_url = get_site_url();
include wp_rp_get_template('settings');
}