__('Select', 'mybooktable'),
'post_title' => __('Post Title', 'mybooktable'),
'post_date' => __('Post Date', 'mybooktable'),
'author' => __('Author', 'mybooktable'),
'genre' => __('Genre', 'mybooktable'),
'tag' => __('Tag', 'mybooktable'),
'series' => __('Series', 'mybooktable'),
'series_order' => __('Series Order', 'mybooktable'),
'ascending' => __('Ascending', 'mybooktable'),
'descending' => __('Descending', 'mybooktable'),
'import_interrupted' => __('Import Interrupted', 'mybooktable'),
'import_complete' => __('Import Complete', 'mybooktable'),
'successfully_imported' => __('Successfully imported', 'mybooktable'),
'swich_to_mode' => __('Switch to mode', 'mybooktable'),
'set_author_priority' => __('Set the priority (order) of the authors', 'mybooktable'),
'enter_main_author_bio' => __('Edit the main author bio', 'mybooktable'),
));
if(function_exists('wp_enqueue_media')) { wp_enqueue_media(); }
}
function mbt_add_admin_pages() {
add_menu_page(__('MyBookTable', 'mybooktable'), __('MyBookTable', 'mybooktable'), 'edit_posts', 'mbt_dashboard', 'mbt_render_dashboard', 'dashicons-book-alt', '10.7');
add_submenu_page('mbt_dashboard', __('Books', 'mybooktable'), __('Books', 'mybooktable'), 'edit_posts', 'edit.php?post_type=mbt_book');
add_submenu_page('mbt_dashboard', __('Add Book', 'mybooktable'), __('Add Book', 'mybooktable'), 'edit_posts', 'post-new.php?post_type=mbt_book');
add_submenu_page('mbt_dashboard', __('Authors', 'mybooktable'), __('Authors', 'mybooktable'), 'manage_categories', 'edit-tags.php?taxonomy=mbt_author&post_type=mbt_book');
add_submenu_page('mbt_dashboard', __('Genres', 'mybooktable'), __('Genres', 'mybooktable'), 'manage_categories', 'edit-tags.php?taxonomy=mbt_genre&post_type=mbt_book');
add_submenu_page('mbt_dashboard', __('Series', 'mybooktable'), __('Series', 'mybooktable'), 'manage_categories', 'edit-tags.php?taxonomy=mbt_series&post_type=mbt_book');
add_submenu_page('mbt_dashboard', __('Tags', 'mybooktable'), __('Tags', 'mybooktable'), 'manage_categories', 'edit-tags.php?taxonomy=mbt_tag&post_type=mbt_book');
add_submenu_page('mbt_dashboard', __('Import Books', 'mybooktable'), __('Import Books', 'mybooktable'), 'edit_posts', 'mbt_import', 'mbt_render_import_page');
add_submenu_page('mbt_dashboard', __('MyBookTable Settings', 'mybooktable'), __('Settings', 'mybooktable'), 'manage_options', 'mbt_settings', 'mbt_render_settings_page');
add_submenu_page('mbt_dashboard', __('MyBookTable Help', 'mybooktable'), __('Help', 'mybooktable'), 'edit_posts', 'mbt_help', 'mbt_render_help_page');
if(mbt_get_upgrade() === false) {
$page_hook = add_submenu_page('mbt_dashboard', __('Upgrade', 'mybooktable'), __('Upgrade MyBookTable', 'mybooktable'), 'edit_posts', 'mbt_upgrade_link', ' ');
add_action('load-'.$page_hook, 'mbt_upgrade_link_redirect');
}
remove_menu_page("edit.php?post_type=mbt_book");
remove_submenu_page("edit.php?post_type=mbt_book", "edit.php?post_type=mbt_book");
remove_submenu_page("edit.php?post_type=mbt_book", "post-new.php?post_type=mbt_book");
remove_submenu_page("edit.php?post_type=mbt_book", "edit-tags.php?taxonomy=mbt_author&post_type=mbt_book");
remove_submenu_page("edit.php?post_type=mbt_book", "edit-tags.php?taxonomy=mbt_genre&post_type=mbt_book");
remove_submenu_page("edit.php?post_type=mbt_book", "edit-tags.php?taxonomy=mbt_series&post_type=mbt_book");
remove_submenu_page("edit.php?post_type=mbt_book", "edit-tags.php?taxonomy=mbt_tag&post_type=mbt_book");
}
function mbt_upgrade_link_redirect() {
wp_safe_redirect('https://www.stormhillmedia.com/all-products/mybooktable/upgrades/', 301);
exit();
}
/*---------------------------------------------------------*/
/* Settings Page */
/*---------------------------------------------------------*/
function mbt_settings_page_init() {
add_action('wp_ajax_mbt_api_key_refresh', 'mbt_api_key_refresh_ajax');
add_action('wp_ajax_mbt_style_pack_preview', 'mbt_style_pack_preview_ajax');
add_action('wp_ajax_mbt_button_size_preview', 'mbt_button_size_preview_ajax');
add_action('wp_ajax_mbt_check_reviews', 'mbt_check_reviews_ajax');
add_action('wp_ajax_mbt_google_api_key_refresh', 'mbt_google_api_key_refresh_ajax');
//needs to happen before setup.php admin_init in order to properly update admin notices
add_action('admin_init', 'mbt_save_settings_page');
}
add_action('mbt_init', 'mbt_settings_page_init');
function mbt_save_settings_page() {
if( (isset($_REQUEST['page']) && $_REQUEST['page'] === 'mbt_settings') && ((isset($_REQUEST['data-settings-nonce']) && wp_verify_nonce(sanitize_key($_REQUEST['data-settings-nonce']),'mbt-settings-nonce'))) && isset($_REQUEST['save_settings'])) {
do_action('mbt_settings_save');
if(isset($_REQUEST['mbt_api_key']) && $_REQUEST['mbt_api_key'] !== mbt_get_setting('api_key') && $_REQUEST['mbt_api_key'] !== mbt_hide_api_key(mbt_get_setting('api_key'))) {
mbt_update_setting('api_key', sanitize_text_field(wp_unslash($_REQUEST['mbt_api_key'])));
mbt_verify_api_key();
}
if(isset($_REQUEST['mbt_product_name'])){
mbt_update_setting('product_name', sanitize_text_field(wp_unslash($_REQUEST['mbt_product_name'])));
mbt_update_setting('product_slug', sanitize_title(wp_unslash($_REQUEST['mbt_product_name'])));
}
if(isset($_REQUEST['mbt_booktable_page'])){
mbt_update_setting('booktable_page', intval($_REQUEST['mbt_booktable_page']));
}
mbt_update_setting('compatibility_mode', isset($_REQUEST['mbt_compatibility_mode']));
mbt_update_setting('enable_socialmedia_single_book',isset($_REQUEST['mbt_enable_socialmedia_single_book']));
mbt_update_setting('enable_socialmedia_book_excerpt', isset($_REQUEST['mbt_enable_socialmedia_book_excerpt']));
mbt_update_setting('enable_seo', isset($_REQUEST['mbt_enable_seo']));
if(isset($_REQUEST['mbt_style_pack'])){
mbt_update_setting('style_pack', sanitize_text_field(wp_unslash($_REQUEST['mbt_style_pack'])));
}
if(isset($_REQUEST['mbt_image_size'])){
mbt_update_setting('image_size', sanitize_text_field(wp_unslash($_REQUEST['mbt_image_size'])));
}
mbt_update_setting('reviews_type', isset($_REQUEST['mbt_reviews_type']) ? sanitize_text_field(wp_unslash($_REQUEST['mbt_reviews_type'])) : 'none');
if(isset($_REQUEST['mbt_buybutton_shadowbox'])){
mbt_update_setting('buybutton_shadowbox', sanitize_text_field(wp_unslash($_REQUEST['mbt_buybutton_shadowbox'])));
}
mbt_update_setting('enable_breadcrumbs', isset($_REQUEST['mbt_enable_breadcrumbs']));
mbt_update_setting('show_series', isset($_REQUEST['mbt_show_series']));
mbt_update_setting('show_find_bookstore', isset($_REQUEST['mbt_show_find_bookstore']));
mbt_update_setting('show_find_bookstore_buybuttons_shadowbox', isset($_REQUEST['mbt_show_find_bookstore_buybuttons_shadowbox']));
mbt_update_setting('show_about_author', isset($_REQUEST['mbt_show_about_author']));
mbt_update_setting('hide_domc_notice', isset($_REQUEST['mbt_hide_domc_notice']));
if(isset($_REQUEST['mbt_domc_notice_text'])){
mbt_update_setting('domc_notice_text', wp_kses_post(wp_unslash($_REQUEST['mbt_domc_notice_text'])));
}
if(isset($_REQUEST['mbt_posts_per_page'])){
mbt_update_setting('posts_per_page', intval(sanitize_text_field(wp_unslash($_REQUEST['mbt_posts_per_page']))));
}
if(isset($_REQUEST['mbt_book_button_size'])){
mbt_update_setting('book_button_size', sanitize_text_field(wp_unslash($_REQUEST['mbt_book_button_size'])));
}
if(isset($_REQUEST['mbt_listing_button_size'])){
mbt_update_setting('listing_button_size', sanitize_text_field(wp_unslash($_REQUEST['mbt_listing_button_size'])));
}
if(isset($_REQUEST['mbt_widget_button_size'])){
mbt_update_setting('widget_button_size', sanitize_text_field(wp_unslash($_REQUEST['mbt_widget_button_size'])));
}
if(isset($_REQUEST['mbt_google_api_key'])){
mbt_update_setting('google_api_key', sanitize_text_field(wp_unslash($_REQUEST['mbt_google_api_key'])));
}
$settings_updated = true;
} else if(isset($_REQUEST['page']) and $_REQUEST['page'] === 'mbt_settings' and isset($_REQUEST['save_default_affiliate_settings'])) {
if(isset($_REQUEST['mbt_enable_default_affiliates']) and !empty($_REQUEST['mbt_enable_default_affiliates'])) {
mbt_update_setting('enable_default_affiliates', $_REQUEST['mbt_enable_default_affiliates'] === 'true');
}
}
}
function mbt_hide_api_key($key) {
if (strlen($key) > 0){
return substr($key, 0, 4) . str_repeat("*", max(0, strlen($key)-4));
}
}
function mbt_api_key_refresh_ajax() {
if(!current_user_can('manage_options')) { die(); }
if(isset($_REQUEST['mbt_nonce']) && wp_verify_nonce(sanitize_key($_REQUEST['mbt_nonce']),'mbt-ajax-nonce')){
if(isset($_REQUEST['data']) && $_REQUEST['data'] !== mbt_hide_api_key(mbt_get_setting('api_key'))) {
mbt_update_setting('api_key', sanitize_text_field(wp_unslash($_REQUEST['data'])));
}
mbt_verify_api_key();
echo(wp_kses_post(mbt_api_key_feedback()));
die();
} else {
die( esc_attr_e('Nonce Failed', 'mybooktable'));
}
}
function mbt_api_key_feedback() {
$output = '';
if(mbt_get_setting('api_key') and mbt_get_setting('api_key_status') != 0) {
if(mbt_get_setting('api_key_status') > 0) {
$output .= '';
$upgrade_message = mbt_get_upgrade_message(false, '', '');
if(!empty($upgrade_message)) { $output .= '
'.$upgrade_message; }
} else {
$output .= '';
}
}
return $output;
}
function mbt_google_api_key_refresh_ajax() {
if(!isset($_REQUEST['mbt_nonce']) || !wp_verify_nonce(sanitize_key($_REQUEST['mbt_nonce']), 'mbt-ajax-nonce')) { die(); }
if(!empty($_REQUEST['data'])) {
echo('');
}
die();
}
function mbt_style_pack_preview_ajax() {
if(!isset($_REQUEST['mbt_nonce']) || !wp_verify_nonce(sanitize_key($_REQUEST['mbt_nonce']), 'mbt-ajax-nonce')) { die(); }
if(isset($_REQUEST['data'])){
echo(wp_kses_post('
'));
}
die();
}
function mbt_button_size_preview_ajax() {
if(!isset($_REQUEST['mbt_nonce']) || !wp_verify_nonce(sanitize_key($_REQUEST['mbt_nonce']), 'mbt-ajax-nonce')) { die(); }
if(isset($_REQUEST['data'])){
mbt_button_size_feedback(sanitize_text_field(wp_unslash($_REQUEST['data'])));
}
die();
}
function mbt_button_size_feedback($size) {
$id = 'mbt_book_'.time().'_'.wp_rand();
echo(wp_kses_post('
'));
echo('');
}
function mbt_check_reviews_ajax() {
if(!isset($_REQUEST['mbt_nonce']) || !wp_verify_nonce(sanitize_key($_REQUEST['mbt_nonce']), 'mbt-ajax-nonce')) { die(); }
$output = '';
$reviews_types = mbt_get_reviews_types();
if(isset($_REQUEST['reviews_type'])){
$reviews_type = sanitize_text_field(wp_unslash($_REQUEST['reviews_type']));
} else {
$reviews_type = '';
}
if(!empty($reviews_types[$reviews_type]['book-check'])) {
$books_query = new WP_Query(array('post_type' => 'mbt_book', 'posts_per_page' => -1));
$books_results = array();
foreach ($books_query->posts as $book) {
$result = call_user_func_array($reviews_types[$reviews_type]['book-check'], array($book->ID));
$books_results[] = array('id' => $book->ID, 'title' => (strlen($book->post_title) > 30 ? substr($book->post_title, 0, 30) : $book->post_title), 'result' => $result);
}
$sort_books_results = function($a, $b) {
$a_val = (strpos($a['result'], 'mbt_admin_message_failure') !== false) ? 0 : ((strpos($a['result'], 'mbt_admin_message_warning') !== false) ? 1 : 2);
$b_val = (strpos($b['result'], 'mbt_admin_message_failure') !== false) ? 0 : ((strpos($b['result'], 'mbt_admin_message_warning') !== false) ? 1 : 2);
return $a_val == $b_val ? 0 : ($a_val > $b_val ? 1 : -1);
};
usort($books_results, $sort_books_results);
$output .= '
.
'.esc_attr_e('An error occurred while trying to retrieve the plugin from the server. Please check your License Key.', 'mybooktable').'
'); return; } if(!current_user_can('install_plugins')) { echo(''.esc_attr_e('Sorry, but you do not have the correct permissions to install plugins. Contact the administrator of this site for help on getting the plugin installed.', 'mybooktable').'
'); return; } $nonce_url = wp_nonce_url('admin.php?page=mbt_dashboard', 'mbt-install-upgrade'); $output = mbt_get_wp_filesystem($nonce_url); if(!empty($output)) { echo(wp_kses_post($output)); return; } $plugin = array(); $plugin['name'] = $name; $plugin['slug'] = $slug; $plugin['source'] = $url; require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; $args = array( 'type' => 'web', /* translators: %s: plugin name */ 'title' => sprintf(esc_attr_e('Installing Plugin: %s', 'mybooktable'), $plugin['name']), 'nonce' => 'install-plugin_' . $plugin['slug'], 'plugin' => $plugin, ); add_filter('install_plugin_complete_actions', '__return_false', 100); $upgrader = new Plugin_Upgrader(new Plugin_Installer_Skin($args)); $upgrader->install($plugin['source']); wp_cache_flush(); remove_filter('install_plugin_complete_actions', '__return_false', 100); $plugin_info = $upgrader->plugin_info(); $activate = activate_plugin($plugin_info); if(is_wp_error($activate)) { echo(''.wp_kses_post($activate->get_error_message()).'
'.esc_attr_e('You have no Upgrades available to download at this time.', 'mybooktable').'
'); } else { if(!mbt_get_upgrade_check_is_plugin_inactivate($slug)) { $url = mbt_get_upgrade_get_plugin_url($slug); if($slug == 'mybooktable-dev3') { $name = 'MyBookTable Developer Upgrade 3.0'; } if($slug == 'mybooktable-pro3') { $name = 'MyBookTable Professional Upgrade 3.0'; } if($slug == 'mybooktable-dev2') { $name = 'MyBookTable Developer Upgrade 2.0'; } if($slug == 'mybooktable-pro2') { $name = 'MyBookTable Professional Upgrade 2.0'; } if($slug == 'mybooktable-dev') { $name = 'MyBookTable Developer Upgrade'; } if($slug == 'mybooktable-pro') { $name = 'MyBookTable Professional Upgrade'; } mbt_get_upgrade_do_plugin_install($name, $slug, $url); } } ?>If you have books in another system, MyBookTable can import those into this site. To get started, choose a system to import from below:
| '.esc_attr($importer['name']).' | '); } else { echo(''.esc_attr($importer['name']).' | '); } echo(''.wp_kses_post($importer['desc']).((!empty($importer['disabled']) and is_string($importer['disabled'])) ? ' ('.esc_attr($importer['disabled']).')' : '').' | '); echo('