/** * Function generates the plugin settings page. * * @since 1.0 * */ function tptn_options() { global $wpdb, $network_wide, $tptn_url; $tptn_settings = tptn_read_options(); /* Parse post types */ parse_str($tptn_settings['post_types'], $post_types); $wp_post_types = get_post_types(array('public' => true)); $posts_types_inc = array_intersect($wp_post_types, $post_types); /* Save options has been triggered */ if (isset($_POST['tptn_save']) && check_admin_referer('tptn-plugin-settings')) { /* General options */ $tptn_settings['activate_overall'] = isset($_POST['activate_overall']) ? true : false; $tptn_settings['activate_daily'] = isset($_POST['activate_daily']) ? true : false; $tptn_settings['cache_fix'] = isset($_POST['cache_fix']) ? true : false; $tptn_settings['daily_midnight'] = isset($_POST['daily_midnight']) ? true : false; $tptn_settings['daily_range'] = intval($_POST['daily_range']); $tptn_settings['hour_range'] = intval($_POST['hour_range']); $tptn_settings['uninstall_clean_options'] = isset($_POST['uninstall_clean_options']) ? true : false; $tptn_settings['uninstall_clean_tables'] = isset($_POST['uninstall_clean_tables']) ? true : false; $tptn_settings['show_credit'] = isset($_POST['show_credit']) ? true : false; /* Counter and tracker options */ $tptn_settings['add_to_content'] = isset($_POST['add_to_content']) ? true : false; $tptn_settings['count_on_pages'] = isset($_POST['count_on_pages']) ? true : false; $tptn_settings['add_to_feed'] = isset($_POST['add_to_feed']) ? true : false; $tptn_settings['add_to_home'] = isset($_POST['add_to_home']) ? true : false; $tptn_settings['add_to_category_archives'] = isset($_POST['add_to_category_archives']) ? true : false; $tptn_settings['add_to_tag_archives'] = isset($_POST['add_to_tag_archives']) ? true : false; $tptn_settings['add_to_archives'] = isset($_POST['add_to_archives']) ? true : false; $tptn_settings['count_disp_form'] = $_POST['count_disp_form']; $tptn_settings['count_disp_form_zero'] = $_POST['count_disp_form_zero']; $tptn_settings['dynamic_post_count'] = isset($_POST['dynamic_post_count']) ? true : false; $tptn_settings['track_authors'] = isset($_POST['track_authors']) ? true : false; $tptn_settings['track_admins'] = isset($_POST['track_admins']) ? true : false; $tptn_settings['track_editors'] = isset($_POST['track_editors']) ? true : false; $tptn_settings['pv_in_admin'] = isset($_POST['pv_in_admin']) ? true : false; $tptn_settings['show_count_non_admins'] = isset($_POST['show_count_non_admins']) ? true : false; /* Popular post list options */ $tptn_settings['limit'] = intval($_POST['limit']); // Process post types to be selected $wp_post_types = get_post_types(array('public' => true)); $post_types_arr = isset($_POST['post_types']) && is_array($_POST['post_types']) ? $_POST['post_types'] : array('post' => 'post'); $post_types = array_intersect($wp_post_types, $post_types_arr); $tptn_settings['post_types'] = http_build_query($post_types, '', '&'); $tptn_settings['exclude_post_ids'] = $_POST['exclude_post_ids'] == '' ? '' : implode(',', array_map('intval', explode(",", $_POST['exclude_post_ids']))); // Exclude categories $tptn_settings['exclude_cat_slugs'] = $_POST['exclude_cat_slugs']; $exclude_categories_slugs = explode(", ", $tptn_settings['exclude_cat_slugs']); foreach ($exclude_categories_slugs as $exclude_categories_slug) { $catObj = get_category_by_slug($exclude_categories_slug); if (isset($catObj->term_id)) { $exclude_categories[] = $catObj->term_id; } } $tptn_settings['exclude_categories'] = isset($exclude_categories) ? join(',', $exclude_categories) : ''; $tptn_settings['title'] = wp_kses_post($_POST['title']); $tptn_settings['title_daily'] = wp_kses_post($_POST['title_daily']); $tptn_settings['blank_output'] = $_POST['blank_output'] == 'blank' ? true : false; $tptn_settings['blank_output_text'] = wp_kses_post($_POST['blank_output_text']); $tptn_settings['show_excerpt'] = isset($_POST['show_excerpt']) ? true : false; $tptn_settings['excerpt_length'] = intval($_POST['excerpt_length']); $tptn_settings['show_date'] = isset($_POST['show_date']) ? true : false; $tptn_settings['show_author'] = isset($_POST['show_author']) ? true : false; $tptn_settings['title_length'] = intval($_POST['title_length']); $tptn_settings['disp_list_count'] = isset($_POST['disp_list_count']) ? true : false; $tptn_settings['link_new_window'] = isset($_POST['link_new_window']) ? true : false; $tptn_settings['link_nofollow'] = isset($_POST['link_nofollow']) ? true : false; $tptn_settings['exclude_on_post_ids'] = $_POST['exclude_on_post_ids'] == '' ? '' : implode(',', array_map('intval', explode(",", $_POST['exclude_on_post_ids']))); // List HTML options $tptn_settings['before_list'] = $_POST['before_list']; $tptn_settings['after_list'] = $_POST['after_list']; $tptn_settings['before_list_item'] = $_POST['before_list_item']; $tptn_settings['after_list_item'] = $_POST['after_list_item']; /* Thumbnail options */ $tptn_settings['post_thumb_op'] = $_POST['post_thumb_op']; $tptn_settings['thumb_size'] = $_POST['thumb_size']; $tptn_settings['thumb_width'] = intval($_POST['thumb_width']); $tptn_settings['thumb_height'] = intval($_POST['thumb_height']); $tptn_settings['thumb_crop'] = isset($_POST['thumb_crop']) ? true : false; $tptn_settings['thumb_html'] = $_POST['thumb_html']; $tptn_settings['thumb_meta'] = '' == $_POST['thumb_meta'] ? 'post-image' : $_POST['thumb_meta']; $tptn_settings['scan_images'] = isset($_POST['scan_images']) ? true : false; $tptn_settings['thumb_default_show'] = isset($_POST['thumb_default_show']) ? true : false; $tptn_settings['thumb_default'] = '' == $_POST['thumb_default'] || "/default.png" == $_POST['thumb_default'] ? $tptn_url . '/default.png' : $_POST['thumb_default']; /* Custom styles */ $tptn_settings['custom_CSS'] = wp_kses_post($_POST['custom_CSS']); /* If default style is selected, enforce fixed width, height of thumbnail. Disable author, excerpt and date display */ if (isset($_POST['include_default_style'])) { $tptn_settings['include_default_style'] = true; $tptn_settings['post_thumb_op'] = 'inline'; $tptn_settings['thumb_height'] = 65; $tptn_settings['thumb_width'] = 65; $tptn_settings['thumb_crop'] = true; $tptn_settings['show_excerpt'] = false; $tptn_settings['show_author'] = false; $tptn_settings['show_date'] = false; } else { $tptn_settings['include_default_style'] = false; } /** * Filter the settings array just before saving them to the database * * @since 2.0.4 * * @param array $tptn_settings Settings array */ $tptn_settings = apply_filters('tptn_save_options', $tptn_settings); /* Update the options */ update_option('ald_tptn_settings', $tptn_settings); /* Let's get the options again after we update them */ $tptn_settings = tptn_read_options(); parse_str($tptn_settings['post_types'], $post_types); $posts_types_inc = array_intersect($wp_post_types, $post_types); /* Echo a success message */ $str = '<div id="message" class="updated fade"><p>' . __('Options saved successfully.', TPTN_LOCAL_NAME) . '</p>'; if (isset($_POST['include_default_style'])) { $str .= '<p>' . __('Default styles selected. Thumbnail width, height and crop settings have been fixed. Author, Excerpt and Date will not be displayed.', TPTN_LOCAL_NAME) . '</p>'; } $str .= '</div>'; echo $str; } /* Default options has been triggered */ if (isset($_POST['tptn_default']) && check_admin_referer('tptn-plugin-settings')) { delete_option('ald_tptn_settings'); $tptn_settings = tptn_default_options(); update_option('ald_tptn_settings', $tptn_settings); tptn_disable_run(); $str = '<div id="message" class="updated fade"><p>' . __('Options set to Default.', TPTN_LOCAL_NAME) . '</p></div>'; echo $str; } /* Truncate overall posts table */ if (isset($_POST['tptn_trunc_all']) && check_admin_referer('tptn-plugin-settings')) { tptn_trunc_count(false); $str = '<div id="message" class="updated fade"><p>' . __('Top 10 popular posts reset', TPTN_LOCAL_NAME) . '</p></div>'; echo $str; } /* Truncate daily posts table */ if (isset($_POST['tptn_trunc_daily']) && check_admin_referer('tptn-plugin-settings')) { tptn_trunc_count(true); $str = '<div id="message" class="updated fade"><p>' . __('Top 10 daily popular posts reset', TPTN_LOCAL_NAME) . '</p></div>'; echo $str; } /* Clean duplicates */ if (isset($_POST['tptn_clean_duplicates']) && check_admin_referer('tptn-plugin-settings')) { tptn_clean_duplicates(true); tptn_clean_duplicates(false); $str = '<div id="message" class="updated fade"><p>' . __('Duplicate rows cleaned from tables', TPTN_LOCAL_NAME) . '</p></div>'; echo $str; } /* Merge blog IDs */ if (isset($_POST['tptn_merge_blogids']) && check_admin_referer('tptn-plugin-settings')) { tptn_merge_blogids(true); tptn_merge_blogids(false); $str = '<div id="message" class="updated fade"><p>' . __('Post counts across blog IDs 0 and 1 have been merged', TPTN_LOCAL_NAME) . '</p></div>'; echo $str; } /* Save maintenance options */ if (isset($_POST['tptn_mnts_save']) && check_admin_referer('tptn-plugin-settings')) { $tptn_settings['cron_hour'] = min(23, intval($_POST['cron_hour'])); $tptn_settings['cron_min'] = min(59, intval($_POST['cron_min'])); $tptn_settings['cron_recurrence'] = $_POST['cron_recurrence']; if (isset($_POST['cron_on'])) { $tptn_settings['cron_on'] = true; tptn_enable_run($tptn_settings['cron_hour'], $tptn_settings['cron_min'], $tptn_settings['cron_recurrence']); $str = '<div id="message" class="updated fade"><p>' . __('Scheduled maintenance enabled / modified', TPTN_LOCAL_NAME) . '</p></div>'; } else { $tptn_settings['cron_on'] = false; tptn_disable_run(); $str = '<div id="message" class="updated fade"><p>' . __('Scheduled maintenance disabled', TPTN_LOCAL_NAME) . '</p></div>'; } update_option('ald_tptn_settings', $tptn_settings); $tptn_settings = tptn_read_options(); echo $str; } if (isset($_POST['tptn_import']) && check_admin_referer('tptn-plugin-settings')) { $top_ten_all_mu_tables = isset($_POST['top_ten_all_mu_tables']) ? $_POST['top_ten_all_mu_tables'] : array(); $top_ten_mu_tables_blog_ids = explode(",", $_POST['top_ten_mu_tables_blog_ids']); $top_ten_mu_tables_sel_blog_ids = array_values($top_ten_all_mu_tables); foreach ($top_ten_mu_tables_sel_blog_ids as $top_ten_mu_tables_sel_blog_id) { $sql = "\r\n\t\t\t\t\tINSERT INTO " . $wpdb->base_prefix . "top_ten (postnumber, cntaccess, blog_id)\r\n\t\t\t\t\t SELECT postnumber, cntaccess, '%d' FROM " . $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . "_top_ten\r\n\t\t\t\t\t ON DUPLICATE KEY UPDATE " . $wpdb->base_prefix . "top_ten.cntaccess = " . $wpdb->base_prefix . "top_ten.cntaccess + (\r\n\t\t\t\t\t SELECT " . $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . "_top_ten.cntaccess FROM " . $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . "_top_ten WHERE " . $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . "_top_ten.postnumber = " . $wpdb->base_prefix . "top_ten.postnumber\r\n\t\t\t\t\t )\r\n\t\t\t\t"; $wpdb->query($wpdb->prepare($sql, $top_ten_mu_tables_sel_blog_id)); $sql = "\r\n\t\t\t\t\tINSERT INTO " . $wpdb->base_prefix . "top_ten_daily (postnumber, cntaccess, dp_date, blog_id)\r\n\t\t\t\t\t SELECT postnumber, cntaccess, dp_date, '%d' FROM " . $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . "_top_ten_daily\r\n\t\t\t\t\t ON DUPLICATE KEY UPDATE " . $wpdb->base_prefix . "top_ten_daily.cntaccess = " . $wpdb->base_prefix . "top_ten_daily.cntaccess + (\r\n\t\t\t\t\t SELECT " . $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . "_top_ten_daily.cntaccess FROM " . $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . "_top_ten_daily WHERE " . $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . "_top_ten_daily.postnumber = " . $wpdb->base_prefix . "top_ten_daily.postnumber\r\n\t\t\t\t\t )\r\n\t\t\t\t"; $wpdb->query($wpdb->prepare($sql, $top_ten_mu_tables_sel_blog_id)); } update_site_option('top_ten_mu_tables_sel_blog_ids', array_unique(array_merge($top_ten_mu_tables_sel_blog_ids, get_site_option('top_ten_mu_tables_sel_blog_ids', array())))); $str = '<div id="message" class="updated fade"><p>' . __('Counts from selected sites have been imported.', TPTN_LOCAL_NAME) . '</p></div>'; echo $str; } if ((isset($_POST['tptn_delete_selected_tables']) || isset($_POST['tptn_delete_imported_tables'])) && check_admin_referer('tptn-plugin-settings')) { $top_ten_all_mu_tables = isset($_POST['top_ten_all_mu_tables']) ? $_POST['top_ten_all_mu_tables'] : array(); $top_ten_mu_tables_blog_ids = explode(",", $_POST['top_ten_mu_tables_blog_ids']); $top_ten_mu_tables_sel_blog_ids = array_values($top_ten_all_mu_tables); if (isset($_POST['tptn_delete_selected_tables'])) { $top_ten_mu_tables_sel_blog_ids = array_intersect($top_ten_mu_tables_sel_blog_ids, get_site_option('top_ten_mu_tables_sel_blog_ids', array())); } else { $top_ten_mu_tables_sel_blog_ids = get_site_option('top_ten_mu_tables_sel_blog_ids', array()); } if (!empty($top_ten_mu_tables_sel_blog_ids)) { $sql = "DROP TABLE "; foreach ($top_ten_mu_tables_sel_blog_ids as $top_ten_mu_tables_sel_blog_id) { $sql .= $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . "_top_ten, "; $sql .= $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . "_top_ten_daily, "; } $sql = substr($sql, 0, -2); $wpdb->query($sql); $str = '<div id="message" class="updated fade"><p>' . __('Selected tables have been deleted. Note that only imported tables have been deleted.', TPTN_LOCAL_NAME) . '</p></div>'; echo $str; } } ?> <div class="wrap"> <h2><?php _e('Top 10 Settings', TPTN_LOCAL_NAME); ?> </h2> <ul class="subsubsub"> <?php /** * Fires before the navigation bar in the Settings page * * @since 2.0.0 */ do_action('tptn_admin_nav_bar_before'); ?> <li><a href="#genopdiv"><?php _e('General options', TPTN_LOCAL_NAME); ?> </a> | </li> <li><a href="#counteropdiv"><?php _e('Counter and tracker options', TPTN_LOCAL_NAME); ?> </a> | </li> <li><a href="#pplopdiv"><?php _e('Popular post list options', TPTN_LOCAL_NAME); ?> </a> | </li> <li><a href="#thumbopdiv"><?php _e('Thumbnail options', TPTN_LOCAL_NAME); ?> </a> | </li> <li><a href="#customcssdiv"><?php _e('Custom styles', TPTN_LOCAL_NAME); ?> </a> | </li> <li><a href="#tptn_maintenance_op"><?php _e('Maintenance', TPTN_LOCAL_NAME); ?> </a></li> <?php /** * Fires after the navigation bar in the Settings page * * @since 2.0.0 */ do_action('tptn_admin_nav_bar_after'); ?> </ul> <div id="poststuff"> <div id="post-body" class="metabox-holder columns-2"> <div id="post-body-content"> <form method="post" id="tptn_options" name="tptn_options" onsubmit="return checkForm()"> <div id="genopdiv" class="postbox"><div class="handlediv" title="<?php _e('Click to toggle', TPTN_LOCAL_NAME); ?> "><br /></div> <h3 class='hndle'><span><?php _e('General options', TPTN_LOCAL_NAME); ?> </span></h3> <div class="inside"> <table class="form-table"> <?php /** * Fires before General options block. * * @since 2.0.0 * * @param array $tptn_settings Top 10 settings array */ do_action('tptn_admin_general_options_before', $tptn_settings); ?> <tr> <th scope="row"><label for="activate_overall"><?php _e('Enable Overall stats', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="activate_overall" id="activate_overall" <?php if ($tptn_settings['activate_overall']) { echo 'checked="checked"'; } ?> /> </td> </tr> <tr> <th scope="row"><label for="activate_daily"><?php _e('Enable Daily stats', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="activate_daily" id="activate_daily" <?php if ($tptn_settings['activate_daily']) { echo 'checked="checked"'; } ?> /> </td> </tr> <tr> <th scope="row"><label for="cache_fix"><?php _e('Cache fix:', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="cache_fix" id="cache_fix" <?php if ($tptn_settings['cache_fix']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('This will try to prevent W3 Total Cache and other caching plugins from caching the tracker script of the plugin. Try toggling this option in case you find that your posts are not tracked.', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <th scope="row"><label for="daily_midnight"><?php _e('Start daily counts from midnight:', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="daily_midnight" id="daily_midnight" <?php if ($tptn_settings['daily_midnight']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('Daily counter will display number of visits from midnight. This option is checked by default and mimics the way most normal counters work. Turning this off will allow you to use the hourly setting in the next option.', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <th scope="row"><label for="daily_range"><?php _e('Daily popular contains top posts over:', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="daily_range" id="daily_range" size="3" value="<?php echo stripslashes($tptn_settings['daily_range']); ?> "> <?php _e('day(s)', TPTN_LOCAL_NAME); ?> <input type="textbox" name="hour_range" id="hour_range" size="3" value="<?php echo stripslashes($tptn_settings['hour_range']); ?> "> <?php _e('hour(s)', TPTN_LOCAL_NAME); ?> <p class="description"><?php _e("Think of Daily Popular has a custom date range applied as a global setting. Instead of displaying popular posts from the past day, this setting lets you display posts for as many days or as few hours as you want. This can be overridden in the widget.", TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <th scope="row"><label for="uninstall_clean_options"><?php _e('Delete options on uninstall', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="uninstall_clean_options" id="uninstall_clean_options" <?php if ($tptn_settings['uninstall_clean_options']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('If this is checked, all settings related to Top 10 are removed from the database if you choose to uninstall/delete the plugin.', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <th scope="row"><label for="uninstall_clean_tables"><?php _e('Delete counter data on uninstall', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="uninstall_clean_tables" id="uninstall_clean_tables" <?php if ($tptn_settings['uninstall_clean_tables']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('If this is checked, the tables containing the counter statistics are removed from the database if you choose to uninstall/delete the plugin.', TPTN_LOCAL_NAME); ?> </p> <p class="description"><?php _e("Keep this unchecked if you choose to reinstall the plugin and don't want to lose your counter data.", TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <th scope="row"><label for="show_credit"><?php _e('Link to Top 10 plugin page', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="show_credit" id="show_credit" <?php if ($tptn_settings['show_credit']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('A link to the plugin is added as an extra list item to the list of popular posts', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <td scope="row" colspan="2"> <input type="submit" name="tptn_save" id="tptn_genop_save" value="<?php _e('Save Options', TPTN_LOCAL_NAME); ?> " class="button button-primary" /> </td> </tr> <?php /** * Fires after General options block. * * @since 2.0.0 * * @param array $tptn_settings Top 10 settings array */ do_action('tptn_admin_general_options_after', $tptn_settings); ?> </table> </div> </div> <div id="counteropdiv" class="postbox"><div class="handlediv" title="<?php _e('Click to toggle', TPTN_LOCAL_NAME); ?> "><br /></div> <h3 class='hndle'><span><?php _e('Counter and tracker options', TPTN_LOCAL_NAME); ?> </span></h3> <div class="inside"> <table class="form-table"> <?php /** * Fires before Counter options block. * * @since 2.0.0 * * @param array $tptn_settings Top 10 settings array */ do_action('tptn_admin_counter_options_before', $tptn_settings); ?> <tr> <th scope="row"><?php _e('Display number of views on:', TPTN_LOCAL_NAME); ?> </th> <td> <label><input type="checkbox" name="add_to_content" id="add_to_content" <?php if ($tptn_settings['add_to_content']) { echo 'checked="checked"'; } ?> /> <?php _e('Posts', TPTN_LOCAL_NAME); ?> </label><br /> <label><input type="checkbox" name="count_on_pages" id="count_on_pages" <?php if ($tptn_settings['count_on_pages']) { echo 'checked="checked"'; } ?> /> <?php _e('Pages', TPTN_LOCAL_NAME); ?> </label><br /> <label><input type="checkbox" name="add_to_home" id="add_to_home" <?php if ($tptn_settings['add_to_home']) { echo 'checked="checked"'; } ?> /> <?php _e('Home page', TPTN_LOCAL_NAME); ?> </label></label><br /> <label><input type="checkbox" name="add_to_feed" id="add_to_feed" <?php if ($tptn_settings['add_to_feed']) { echo 'checked="checked"'; } ?> /> <?php _e('Feeds', TPTN_LOCAL_NAME); ?> </label></label><br /> <label><input type="checkbox" name="add_to_category_archives" id="add_to_category_archives" <?php if ($tptn_settings['add_to_category_archives']) { echo 'checked="checked"'; } ?> /> <?php _e('Category archives', TPTN_LOCAL_NAME); ?> </label><br /> <label><input type="checkbox" name="add_to_tag_archives" id="add_to_tag_archives" <?php if ($tptn_settings['add_to_tag_archives']) { echo 'checked="checked"'; } ?> /> <?php _e('Tag archives', TPTN_LOCAL_NAME); ?> </label></label><br /> <label><input type="checkbox" name="add_to_archives" id="add_to_archives" <?php if ($tptn_settings['add_to_archives']) { echo 'checked="checked"'; } ?> /> <?php _e('Other archives', TPTN_LOCAL_NAME); ?> </label></label> <p class="description"><?php _e("If you choose to disable this, please add <code><?php if ( function_exists ( 'echo_tptn_post_count' ) ) echo_tptn_post_count(); ?></code> to your template file where you want it displayed", TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <th scope="row"><label for="title"><?php _e('Format to display the post views:', TPTN_LOCAL_NAME); ?> </label></th> <td> <textarea name="count_disp_form" id="count_disp_form" cols="50" rows="3" style="width:100%"><?php echo htmlspecialchars(stripslashes($tptn_settings['count_disp_form'])); ?> </textarea> <p class="description"><?php _e('Use <code>%totalcount%</code> to display the total count, <code>%dailycount%</code> to display the daily count and <code>%overallcount%</code> to display the overall count across all posts on the blog. e.g. the default options displays <code>[Visited 123 times, 23 visits today]</code>', TPTN_LOCAL_NAME); ?> </td> </tr> <tr> <th scope="row"><label for="title"><?php _e('What do display when there are no visits?', TPTN_LOCAL_NAME); ?> </label></th> <td> <textarea name="count_disp_form_zero" id="count_disp_form_zero" cols="50" rows="3" style="width:100%"><?php echo htmlspecialchars(stripslashes($tptn_settings['count_disp_form_zero'])); ?> </textarea> <p class="description"><?php _e("This text applies only when there are 0 hits for the post and it isn't a single page. e.g. if you display post views on the homepage or archives then this text will be used. To override this, just enter the same text as above option.", TPTN_LOCAL_NAME); ?> </td> </tr> <tr> <th scope="row"><label for="dynamic_post_count"><?php _e('Always display latest post count', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="dynamic_post_count" id="dynamic_post_count" <?php if ($tptn_settings['dynamic_post_count']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('This option uses JavaScript and will increase your page load time. Turn this off if you are not using caching plugins or are OK with displaying older cached counts.', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <th scope="row"><label for="track_authors"><?php _e('Track visits of authors on their own posts?', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="track_authors" id="track_authors" <?php if ($tptn_settings['track_authors']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('Disabling this option will stop authors visits tracked on their own posts', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <th scope="row"><label for="track_admins"><?php _e('Track visits of admins?', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="track_admins" id="track_admins" <?php if ($tptn_settings['track_admins']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('Disabling this option will stop admin visits being tracked.', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <th scope="row"><label for="track_editors"><?php _e('Track visits of Editors?', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="track_editors" id="track_editors" <?php if ($tptn_settings['track_editors']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('Disabling this option will stop editor visits being tracked.', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <th scope="row"><label for="pv_in_admin"><?php _e('Display page views on Posts and Pages in Admin', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="pv_in_admin" id="pv_in_admin" <?php if ($tptn_settings['pv_in_admin']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e("Adds three columns called Total Views, Today's Views and Views to All Posts and All Pages", TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <th scope="row"><label for="show_count_non_admins"><?php _e('Show number of views to non-admins', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="show_count_non_admins" id="show_count_non_admins" <?php if ($tptn_settings['show_count_non_admins']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e("If you disable this then non-admins won't see the above columns or view the independent pages with the top posts", TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <td scope="row" colspan="2"> <input type="submit" name="tptn_save" id="tptn_counterop_save" value="<?php _e('Save Options', TPTN_LOCAL_NAME); ?> " class="button button-primary" /> </td> </tr> <?php /** * Fires after Counter options block. * * @since 2.0.0 * * @param array $tptn_settings Top 10 settings array */ do_action('tptn_admin_counter_options_after', $tptn_settings); ?> </table> </div> </div> <div id="pplopdiv" class="postbox"><div class="handlediv" title="<?php _e('Click to toggle', TPTN_LOCAL_NAME); ?> "><br /></div> <h3 class='hndle'><span><?php _e('Popular post list options', TPTN_LOCAL_NAME); ?> </span></h3> <div class="inside"> <table class="form-table"> <?php /** * Fires before Popular post list options block. * * @since 2.0.0 * * @param array $tptn_settings Top 10 settings array */ do_action('tptn_admin_list_options_before', $tptn_settings); ?> <tr> <th scope="row"><label for="limit"><?php _e('Number of popular posts to display: ', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="limit" id="limit" value="<?php echo esc_attr(stripslashes($tptn_settings['limit'])); ?> "> <p class="description"><?php _e("Maximum number of posts that will be displayed in the list. This option is used if you don't specify the number of posts in the widget or shortcodes", TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <th scope="row"><?php _e('Post types to include in results (including custom post types)', TPTN_LOCAL_NAME); ?> </th> <td> <?php foreach ($wp_post_types as $wp_post_type) { ?> <label> <input type="checkbox" name="post_types[]" value="<?php echo $wp_post_type; ?> " <?php if (in_array($wp_post_type, $posts_types_inc)) { echo 'checked="checked"'; } ?> /> <?php echo $wp_post_type; ?> </label> <br /> <?php } ?> </td> </tr> <tr> <th scope="row"><label for="exclude_post_ids"><?php _e('List of post or page IDs to exclude from the results: ', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="textbox" name="exclude_post_ids" id="exclude_post_ids" value="<?php echo esc_attr(stripslashes($tptn_settings['exclude_post_ids'])); ?> " style="width:250px"> <p class="description"><?php _e('Enter comma separated list of IDs. e.g. 188,320,500', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <th scope="row"><label for="exclude_cat_slugs"><?php _e('Exclude Categories: ', TPTN_LOCAL_NAME); ?> </label></th> <td> <div style="position:relative;text-align:left"> <table id="MYCUSTOMFLOATER" class="myCustomFloater" style="position:absolute;top:50px;left:0;background-color:#cecece;display:none;visibility:hidden"> <tr><td><!-- please see: http://chrisholland.blogspot.com/2004/09/geekstuff-css-display-inline-block.html to explain why i'm using a table here. You could replace the table/tr/td with a DIV, but you'd have to specify it's width and height --> <div class="myCustomFloaterContent"> you should never be seeing this </div> </td></tr> </table> <textarea class="wickEnabled:MYCUSTOMFLOATER" cols="50" rows="3" wrap="virtual" name="exclude_cat_slugs" style="width:100%"><?php echo stripslashes($tptn_settings['exclude_cat_slugs']); ?> </textarea> <p class="description"><?php _e('Comma separated list of category slugs. The field above has an autocomplete so simply start typing in the starting letters and it will prompt you with options', TPTN_LOCAL_NAME); ?> </p> </div> </td> </tr> <tr> <th scope="row"><label for="title"><?php _e('Title of popular posts: ', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="title" id="title" value="<?php echo esc_attr(stripslashes($tptn_settings['title'])); ?> " style="width:250px" /> </td> </tr> <tr> <th scope="row"><label for="title_daily"><?php _e('Title of daily popular posts: ', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="title_daily" id="title_daily" value="<?php echo esc_attr(stripslashes($tptn_settings['title_daily'])); ?> " style="width:250px" /> </td> </tr> <tr> <th scope="row"><label for="blank_output"><?php _e('When there are no posts, what should be shown?', TPTN_LOCAL_NAME); ?> </label></th> <td> <label> <input type="radio" name="blank_output" value="blank" id="blank_output_0" <?php if ($tptn_settings['blank_output']) { echo 'checked="checked"'; } ?> /> <?php _e('Blank Output', TPTN_LOCAL_NAME); ?> </label> <br /> <label> <input type="radio" name="blank_output" value="customs" id="blank_output_1" <?php if (!$tptn_settings['blank_output']) { echo 'checked="checked"'; } ?> /> <?php _e('Display:', TPTN_LOCAL_NAME); ?> </label> <input type="textbox" name="blank_output_text" id="blank_output_text" value="<?php echo esc_attr(stripslashes($tptn_settings['blank_output_text'])); ?> " style="width:250px" /> </td> </tr> <tr> <th scope="row"><label for="show_excerpt"><?php _e('Show post excerpt in list?', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="show_excerpt" id="show_excerpt" <?php if ($tptn_settings['show_excerpt']) { echo 'checked="checked"'; } ?> /> <?php if ($tptn_settings['include_default_style']) { ?> <p style="color: #F00"><?php _e("Default style selected under the Custom Styles. Excerpt display is disabled.", TPTN_LOCAL_NAME); ?> </p> <?php } ?> </td> </tr> <tr> <th scope="row"><label for="excerpt_length"><?php _e('Length of excerpt (in words): ', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="excerpt_length" id="excerpt_length" value="<?php echo stripslashes($tptn_settings['excerpt_length']); ?> " /> </td> </tr> <tr> <th scope="row"><label for="show_author"><?php _e('Show post author in list?', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="show_author" id="show_author" <?php if ($tptn_settings['show_author']) { echo 'checked="checked"'; } ?> /> <?php if ($tptn_settings['include_default_style']) { ?> <p style="color: #F00"><?php _e("Default style selected under the Custom Styles. Author display is disabled.", TPTN_LOCAL_NAME); ?> </p> <?php } ?> </td> </tr> <tr> <th scope="row"><label for="show_date"><?php _e('Show post date in list?', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="show_date" id="show_date" <?php if ($tptn_settings['show_date']) { echo 'checked="checked"'; } ?> /> <?php if ($tptn_settings['include_default_style']) { ?> <p style="color: #F00"><?php _e("Default style selected under the Custom Styles. Date display is disabled.", TPTN_LOCAL_NAME); ?> </p> <?php } ?> </td> </tr> <tr> <th scope="row"><label for="title_length"><?php _e('Limit post title length (in characters)', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="title_length" id="title_length" value="<?php echo stripslashes($tptn_settings['title_length']); ?> " /> </td> </tr> <tr> <th scope="row"><label for="disp_list_count"><?php _e('Show view count in list?', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="disp_list_count" id="disp_list_count" <?php if ($tptn_settings['disp_list_count']) { echo 'checked="checked"'; } ?> /> </td> </tr> <tr> <th scope="row"><label for="link_new_window "><?php _e('Open links in new window', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="link_new_window" id="link_new_window" <?php if ($tptn_settings['link_new_window']) { echo 'checked="checked"'; } ?> /> </td> </tr> <tr> <th scope="row"><label for="link_nofollow"><?php _e('Add nofollow attribute to links in the list', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="link_nofollow" id="link_nofollow" <?php if ($tptn_settings['link_nofollow']) { echo 'checked="checked"'; } ?> /> </td> </tr> <tr> <th scope="row"><label for="exclude_on_post_ids"><?php _e('Exclude display of related posts on these posts / pages', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="exclude_on_post_ids" id="exclude_on_post_ids" value="<?php echo esc_attr(stripslashes($tptn_settings['exclude_on_post_ids'])); ?> " style="width:250px"> <p class="description"><?php _e('Enter comma separated list of IDs. e.g. 188,320,500', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr style="background: #eee"><th scope="row" colspan="2"><?php _e('Customise the list HTML', TPTN_LOCAL_NAME); ?> </th> </tr> <tr> <th scope="row"><label for="before_list"><?php _e('HTML to display before the list of posts: ', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="before_list" id="before_list" value="<?php echo esc_attr(stripslashes($tptn_settings['before_list'])); ?> " style="width:250px" /> </td> </tr> <tr> <th scope="row"><label for="before_list_item"><?php _e('HTML to display before each list item: ', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="before_list_item" id="before_list_item" value="<?php echo esc_attr(stripslashes($tptn_settings['before_list_item'])); ?> " style="width:250px" /> </td> </tr> <tr> <th scope="row"><label for="after_list_item"><?php _e('HTML to display after each list item: ', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="after_list_item" id="after_list_item" value="<?php echo esc_attr(stripslashes($tptn_settings['after_list_item'])); ?> " style="width:250px" /> </td> </tr> <tr> <th scope="row"><label for="after_list"><?php _e('HTML to display after the list of posts: ', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="after_list" id="after_list" value="<?php echo esc_attr(stripslashes($tptn_settings['after_list'])); ?> " style="width:250px" /> </td> </tr> <tr> <td scope="row" colspan="2"> <input type="submit" name="tptn_save" id="tptn_pplop_save" value="<?php _e('Save Options', TPTN_LOCAL_NAME); ?> " class="button button-primary" /> </td> </tr> <?php /** * Fires after Popular post list options block. * * @since 2.0.0 * * @param array $tptn_settings Top 10 settings array */ do_action('tptn_admin_list_options_after', $tptn_settings); ?> </table> </div> </div> <div id="thumbopdiv" class="postbox"><div class="handlediv" title="<?php _e('Click to toggle', TPTN_LOCAL_NAME); ?> "><br /></div> <h3 class='hndle'><span><?php _e('Thumbnail options', TPTN_LOCAL_NAME); ?> </span></h3> <div class="inside"> <table class="form-table"> <?php /** * Fires before thumbnail options block. * * @since 2.0.0 * * @param array $tptn_settings Top 10 settings array */ do_action('tptn_admin_thumbnail_options_before', $tptn_settings); ?> <tr><th scope="row"><label for="post_thumb_op"><?php _e('Location of post thumbnail:', TPTN_LOCAL_NAME); ?> </label></th> <td> <label> <input type="radio" name="post_thumb_op" value="inline" id="post_thumb_op_0" <?php if ('inline' == $tptn_settings['post_thumb_op']) { echo 'checked="checked"'; } ?> /> <?php _e('Display thumbnails inline with posts, before title', TPTN_LOCAL_NAME); ?> </label> <br /> <label> <input type="radio" name="post_thumb_op" value="after" id="post_thumb_op_1" <?php if ('after' == $tptn_settings['post_thumb_op']) { echo 'checked="checked"'; } ?> /> <?php _e('Display thumbnails inline with posts, after title', TPTN_LOCAL_NAME); ?> </label> <br /> <label> <input type="radio" name="post_thumb_op" value="thumbs_only" id="post_thumb_op_2" <?php if ('thumbs_only' == $tptn_settings['post_thumb_op']) { echo 'checked="checked"'; } ?> /> <?php _e('Display only thumbnails, no text', TPTN_LOCAL_NAME); ?> </label> <br /> <label> <input type="radio" name="post_thumb_op" value="text_only" id="post_thumb_op_3" <?php if ('text_only' == $tptn_settings['post_thumb_op']) { echo 'checked="checked"'; } ?> /> <?php _e('Do not display thumbnails, only text.', TPTN_LOCAL_NAME); ?> </label> <?php if ($tptn_settings['include_default_style']) { ?> <p style="color: #F00"><?php _e("Default style selected under the Custom Styles. Location of thumbnail forced to be inline before title", TPTN_LOCAL_NAME); ?> </p> <?php } ?> </td> </tr> <tr><th scope="row"><?php _e('Thumbnail size:', TPTN_LOCAL_NAME); ?> </th> <td> <?php $tptn_get_all_image_sizes = tptn_get_all_image_sizes(); if (isset($tptn_get_all_image_sizes['tptn_thumbnail'])) { unset($tptn_get_all_image_sizes['tptn_thumbnail']); } foreach ($tptn_get_all_image_sizes as $size) { ?> <label> <input type="radio" name="thumb_size" value="<?php echo $size['name']; ?> " id="<?php echo $size['name']; ?> " <?php if ($tptn_settings['thumb_size'] == $size['name']) { echo 'checked="checked"'; } ?> /> <?php echo $size['name']; ?> ( <?php echo $size['width']; ?> x<?php echo $size['height']; ?> <?php if ($size['crop']) { echo "cropped"; } ?> ) </label> <br /> <?php } ?> <label> <input type="radio" name="thumb_size" value="tptn_thumbnail" id="tptn_thumbnail" <?php if ($tptn_settings['thumb_size'] == 'tptn_thumbnail') { echo 'checked="checked"'; } ?> /> <?php _e('Custom size', TPTN_LOCAL_NAME); ?> </label> <p class="description"> <?php _e('You can choose from existing image sizes above or create a custom size. If you have chosen Custom size above, then enter the width, height and crop settings below. For best results, use a cropped image.', TPTN_LOCAL_NAME); ?> <br /> <?php _e("If you change the width and/or height below, existing images will not be automatically resized.", TPTN_LOCAL_NAME); ?> <?php printf(__("I recommend using <a href='%s' class='thickbox'>OTF Regenerate Thumbnails</a> or <a href='%s' class='thickbox'>Regenerate Thumbnails</a> to regenerate all image sizes.", TPTN_LOCAL_NAME), self_admin_url('plugin-install.php?tab=plugin-information&plugin=otf-regenerate-thumbnails&TB_iframe=true&width=600&height=550'), self_admin_url('plugin-install.php?tab=plugin-information&plugin=regenerate-thumbnails&TB_iframe=true&width=600&height=550')); ?> </p> </td> <tr><th scope="row"><label for="thumb_width"><?php _e('Width of custom thumbnail:', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="thumb_width" id="thumb_width" value="<?php echo esc_attr(stripslashes($tptn_settings['thumb_width'])); ?> " style="width:50px" />px </td> </tr> <tr><th scope="row"><label for="thumb_height"><?php _e('Height of custom thumbnail', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="thumb_height" id="thumb_height" value="<?php echo esc_attr(stripslashes($tptn_settings['thumb_height'])); ?> " style="width:50px" />px </td> </tr> <tr><th scope="row"><label for="thumb_crop"><?php _e('Crop mode:', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="thumb_crop" id="thumb_crop" <?php if ($tptn_settings['thumb_crop']) { echo 'checked="checked"'; } ?> /> <p class="description"> <?php _e("By default, thumbnails will be proportionately cropped. Check this box to hard crop the thumbnails.", TPTN_LOCAL_NAME); ?> <?php printf(__("<a href='%s' target='_blank'>Difference between soft and hard crop</a>", TPTN_LOCAL_NAME), esc_url('http://www.davidtan.org/wordpress-hard-crop-vs-soft-crop-difference-comparison-example/')); ?> <?php if ($tptn_settings['include_default_style']) { ?> <p style="color: #F00"><?php _e("Default style selected under the Custom Styles. Thumbnail width and height is fixed at 65px and crop mode is enabled.", TPTN_LOCAL_NAME); ?> </p> <?php } ?> </p> </td> </tr> <tr><th scope="row"><label for="thumb_html"><?php _e('Style attributes / Width and Height HTML attributes:', TPTN_LOCAL_NAME); ?> </label></th> <td> <label> <input type="radio" name="thumb_html" value="css" id="thumb_html_0" <?php if ('css' == $tptn_settings['thumb_html']) { echo 'checked="checked"'; } ?> /> <?php _e('Style attributes are used for width and height.', TPTN_LOCAL_NAME); ?> <br /><code>style="max-width:<?php echo $tptn_settings['thumb_width']; ?> px;max-height:<?php echo $tptn_settings['thumb_height']; ?> px;"</code> </label> <br /> <label> <input type="radio" name="thumb_html" value="html" id="thumb_html_1" <?php if ('html' == $tptn_settings['thumb_html']) { echo 'checked="checked"'; } ?> /> <?php _e('HTML width and height attributes are used for width and height.', TPTN_LOCAL_NAME); ?> <br /><code>width="<?php echo $tptn_settings['thumb_width']; ?> " height="<?php echo $tptn_settings['thumb_height']; ?> "</code> </label> </td> </tr> <tr><th scope="row"><label for="thumb_meta"><?php _e('Post thumbnail meta field name: ', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="thumb_meta" id="thumb_meta" value="<?php echo esc_attr(stripslashes($tptn_settings['thumb_meta'])); ?> "> <p class="description"><?php _e('The value of this field should contain the image source and is set in the <em>Add New Post</em> screen', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr><th scope="row"><label for="scan_images"><?php _e('If the postmeta is not set, then should the plugin extract the first image from the post?', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="scan_images" id="scan_images" <?php if ($tptn_settings['scan_images']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('This could slow down the loading of your page if the first image in the related posts is large in file-size', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr><th scope="row"><label for="thumb_default_show"><?php _e('Use default thumbnail? ', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="thumb_default_show" id="thumb_default_show" <?php if ($tptn_settings['thumb_default_show']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('If checked, when no thumbnail is found, show a default one from the URL below. If not checked and no thumbnail is found, no image will be shown.', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr><th scope="row"><label for="thumb_default"><?php _e('Default thumbnail: ', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="thumb_default" id="thumb_default" value="<?php echo esc_attr(stripslashes($tptn_settings['thumb_default'])); ?> " style="width:100%"> <br /> <?php if ('' != $tptn_settings['thumb_default']) { echo "<img src='{$tptn_settings['thumb_default']}' style='max-width:200px' />"; } ?> <p class="description"><?php _e("The plugin will first check if the post contains a thumbnail. If it doesn't then it will check the meta field. If this is not available, then it will show the default image as specified above", TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <td scope="row" colspan="2"> <input type="submit" name="tptn_save" id="tptn_thumbop_save" value="<?php _e('Save Options', TPTN_LOCAL_NAME); ?> " class="button button-primary" /> </td> </tr> <?php /** * Fires after thumbnail options block. * * @since 2.0.0 * * @param array $tptn_settings Top 10 settings array */ do_action('tptn_admin_thumbnail_options_after', $tptn_settings); ?> </table> </div> </div> <div id="customcssdiv" class="postbox"><div class="handlediv" title="<?php _e('Click to toggle', TPTN_LOCAL_NAME); ?> "><br /></div> <h3 class='hndle'><span><?php _e('Custom CSS', TPTN_LOCAL_NAME); ?> </span></h3> <div class="inside"> <table class="form-table"> <?php /** * Fires before custom styles options block. * * @since 2.0.0 * * @param array $tptn_settings Top 10 settings array */ do_action('tptn_admin_custom_styles_before', $tptn_settings); ?> <tr><th scope="row"><label for="include_default_style"><?php _e('Use default style included in the plugin?', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="include_default_style" id="include_default_style" <?php if ($tptn_settings['include_default_style']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('Top 10 includes a default style that makes your popular posts list to look beautiful. Check the box above if you want to use this.', TPTN_LOCAL_NAME); ?> </p> <p class="description"><?php _e('Enabling this option will turn on the thumbnails and set their width and height to 65px. It will also turn off the display of the author, excerpt and date if already enabled. Disabling this option will not revert any settings.', TPTN_LOCAL_NAME); ?> </p> <p class="description"><?php printf(__('You can view the default style at <a href="%1$s" target="_blank">%1$s</a>', TPTN_LOCAL_NAME), esc_url('https://github.com/ajaydsouza/top-10/blob/master/css/default-style.css')); ?> </p> </td> </tr> <tr><th scope="row" colspan="2"><?php _e('Custom CSS to add to header:', TPTN_LOCAL_NAME); ?> </th> </tr> <tr> <td scope="row" colspan="2"> <textarea name="custom_CSS" id="custom_CSS" rows="15" cols="80" style="width:100%"><?php echo stripslashes($tptn_settings['custom_CSS']); ?> </textarea> <p class="description"><?php _e('Do not include <code>style</code> tags. Check out the <a href="http://wordpress.org/extend/plugins/top-10/faq/" target="_blank">FAQ</a> for available CSS classes to style.', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <?php /** * Fires after custom styles options block. * * @since 2.0.0 * * @param array $tptn_settings Top 10 settings array */ do_action('tptn_admin_custom_styles_after', $tptn_settings); ?> </table> </div> </div> <p> <input type="submit" name="tptn_save" id="tptn_save" value="<?php _e('Save Options', TPTN_LOCAL_NAME); ?> " class="button button-primary" /> <input type="submit" name="tptn_default" id="tptn_default" value="<?php _e('Default Options', TPTN_LOCAL_NAME); ?> " class="button button-secondary" onclick="if (!confirm('<?php _e("Do you want to set options to Default?", TPTN_LOCAL_NAME); ?> ')) return false;" /> </p> <?php wp_nonce_field('tptn-plugin-settings'); ?> </form> <?php /** * Fires after all option blocks. * * @since 2.0.0 * * @param array $tptn_settings Top 10 settings array */ do_action('tptn_admin_options_after', $tptn_settings); ?> <hr class="clear" /> <form method="post" id="tptn_maintenance_op" name="tptn_reset_options" onsubmit="return checkForm()"> <div id="resetopdiv" class="postbox"><div class="handlediv" title="<?php _e('Click to toggle', TPTN_LOCAL_NAME); ?> "><br /></div> <h3 class='hndle'><span><?php _e('Maintenance', TPTN_LOCAL_NAME); ?> </span></h3> <div class="inside"> <table class="form-table"> <tr><td scope="row" colspan="2"> <p class="description"><?php _e('Over time the Daily Top 10 database grows in size, which reduces the performance of the plugin. Cleaning the database at regular intervals could improve performance, especially on high traffic blogs. Enabling maintenance will automatically delete entries older than 90 days.', TPTN_LOCAL_NAME); ?> <br /> <strong><?php _e('Note: When scheduled maintenance is enabled, WordPress will run the cron job everytime the job is rescheduled (i.e. you change the settings below).', TPTN_LOCAL_NAME); ?> </strong> </td> </tr> <tr><th scope="row"><label for="cron_on"><?php _e('Enable scheduled maintenance of daily tables:', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="cron_on" id="cron_on" <?php if ($tptn_settings['cron_on']) { echo 'checked="checked"'; } ?> /> </td> </tr> <tr><th scope="row"><label for="cron_hour"><?php _e('Time to run maintenance', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="textbox" name="cron_hour" id="cron_hour" value="<?php echo esc_attr(stripslashes($tptn_settings['cron_hour'])); ?> " style="width:50px" /> <?php _e('hrs', TPTN_LOCAL_NAME); ?> : <input type="textbox" name="cron_min" id="cron_min" value="<?php echo esc_attr(stripslashes($tptn_settings['cron_min'])); ?> " style="width:50px" /> <?php _e('min', TPTN_LOCAL_NAME); ?> </td> </tr> <tr><th scope="row"><label for="cron_recurrence"><?php _e('How often should the maintenance be run:', TPTN_LOCAL_NAME); ?> </label></th> <td> <label> <input type="radio" name="cron_recurrence" value="daily" id="cron_recurrence0" <?php if ('daily' == $tptn_settings['cron_recurrence']) { echo 'checked="checked"'; } ?> /> <?php _e('Daily', TPTN_LOCAL_NAME); ?> </label> <br /> <label> <input type="radio" name="cron_recurrence" value="weekly" id="cron_recurrence1" <?php if ('weekly' == $tptn_settings['cron_recurrence']) { echo 'checked="checked"'; } ?> /> <?php _e('Weekly', TPTN_LOCAL_NAME); ?> </label> <br /> <label> <input type="radio" name="cron_recurrence" value="fortnightly" id="cron_recurrence2" <?php if ('fortnightly' == $tptn_settings['cron_recurrence']) { echo 'checked="checked"'; } ?> /> <?php _e('Fortnightly', TPTN_LOCAL_NAME); ?> </label> <br /> <label> <input type="radio" name="cron_recurrence" value="monthly" id="cron_recurrence3" <?php if ('monthly' == $tptn_settings['cron_recurrence']) { echo 'checked="checked"'; } ?> /> <?php _e('Monthly', TPTN_LOCAL_NAME); ?> </label> <br /> </td> </tr> <tr><td scope="row" colspan="2"> <?php if ($tptn_settings['cron_on'] || wp_next_scheduled('ald_tptn_hook')) { if (wp_next_scheduled('ald_tptn_hook')) { echo '<span style="color:#0c0">'; _e('The cron job has been scheduled. Maintenance will run ', TPTN_LOCAL_NAME); echo wp_get_schedule('ald_tptn_hook'); echo '</span>'; } else { echo '<span style="color:#e00">'; _e('The cron job is missing. Please resave this page to add the job', TPTN_LOCAL_NAME); echo '</span>'; } } else { echo '<span style="color:#FFA500">'; _e('Maintenance is turned off', TPTN_LOCAL_NAME); echo '</span>'; } ?> </td></tr> </table> <input type="submit" name="tptn_mnts_save" id="tptn_mnts_save" value="<?php _e('Save Options', TPTN_LOCAL_NAME); ?> " class="button button-primary" /> </div> </div> <?php wp_nonce_field('tptn-plugin-settings'); ?> </form> <form method="post" id="tptn_reset_options" name="tptn_reset_options" onsubmit="return checkForm()"> <div id="resetopdiv" class="postbox"><div class="handlediv" title="<?php _e('Click to toggle', TPTN_LOCAL_NAME); ?> "><br /></div> <h3 class='hndle'><span><?php _e('Reset count and other tools', TPTN_LOCAL_NAME); ?> </span></h3> <div class="inside"> <p class="description"> <?php _e('This cannot be reversed. Make sure that your database has been backed up before proceeding', TPTN_LOCAL_NAME); ?> </p> <p> <input name="tptn_trunc_all" type="submit" id="tptn_trunc_all" value="<?php _e('Reset Popular Posts', TPTN_LOCAL_NAME); ?> " class="button button-secondary" style="color:#f00" onclick="if (!confirm('<?php _e("Are you sure you want to reset the popular posts?", TPTN_LOCAL_NAME); ?> ')) return false;" /> <input name="tptn_trunc_daily" type="submit" id="tptn_trunc_daily" value="<?php _e('Reset Daily Popular Posts', TPTN_LOCAL_NAME); ?> " class="button button-secondary" style="color:#f00" onclick="if (!confirm('<?php _e("Are you sure you want to reset the daily popular posts?", TPTN_LOCAL_NAME); ?> ')) return false;" /> </p> <p class="description"> <?php _e('This will merge post counts for posts with table entries of 0 and 1', TPTN_LOCAL_NAME); ?> </p> <p> <input name="tptn_merge_blogids" type="submit" id="tptn_merge_blogids" value="<?php _e('Merge blog ID 0 and 1 post counts', TPTN_LOCAL_NAME); ?> " class="button button-secondary" onclick="if (!confirm('<?php _e("This will merge post counts for blog IDs 0 and 1. Proceed?", TPTN_LOCAL_NAME); ?> ')) return false;" /> </p> <p class="description"> <?php _e('In older versions, the plugin created entries with duplicate post IDs. Clicking the button below will merge these duplicate IDs', TPTN_LOCAL_NAME); ?> </p> <p> <input name="tptn_clean_duplicates" type="submit" id="tptn_clean_duplicates" value="<?php _e('Merge duplicates across blog IDs', TPTN_LOCAL_NAME); ?> " class="button button-secondary" onclick="if (!confirm('<?php _e("This will delete the duplicate entries in the tables. Proceed?", TPTN_LOCAL_NAME); ?> ')) return false;" /> </p> </div> </div> <?php wp_nonce_field('tptn-plugin-settings'); ?> </form> <?php /** * Only show the below options if it is multisite * */ if (is_multisite()) { ?> <form method="post" id="tptn_import_mu" name="tptn_import_mu" onsubmit="return checkForm()"> <div id="resetopdiv" class="postbox"><div class="handlediv" title="<?php _e('Click to toggle', TPTN_LOCAL_NAME); ?> "><br /></div> <h3 class='hndle'><span><?php _e('WordPress Multisite: Migrate Top 10 v1.x counts to 2.x', TPTN_LOCAL_NAME); ?> </span></h3> <div class="inside"> <p class="description"> <?php _e("If you've been using Top 10 v1.x on multisite, you would have needed to activate the plugin independently for each site. This would have resulted in two tables being created for each site in the network.", TPTN_LOCAL_NAME); ?> <?php _e("Top 10 v2.x onwards uses only a single table to record the count, keeping your database clean. You can use this tool to import the recorded counts from v1.x tables to the new v2.x table format.", TPTN_LOCAL_NAME); ?> </p> <p class="description"> <?php _e("If you do not see any tables below, then it means that either all data has already been imported or no relevant information has been found.", TPTN_LOCAL_NAME); ?> </p> <p class="description"> <strong style="color:#C00"><?php _e("After running the importer, please verify that all the counts have been successfully imported. Only then should you delete any old tables!", TPTN_LOCAL_NAME); ?> </strong> </p> <?php $top_ten_mu_tables_sel_blog_ids = get_site_option('top_ten_mu_tables_sel_blog_ids', array()); $top_ten_mu_tables_blog_ids = array(); $top_ten_all_mu_tables = array(); // Get all blogs in the network and activate plugin on each one $blog_ids = $wpdb->get_col("\r\n\t\t\t \tSELECT blog_id FROM {$wpdb->blogs}\r\n\t\t\t\t\t\tWHERE archived = '0' AND spam = '0' AND deleted = '0'\r\n\t\t\t\t\t"); foreach ($blog_ids as $blog_id) { switch_to_blog($blog_id); $top_ten_mu_table = $wpdb->get_var("SHOW TABLES LIKE '" . $wpdb->prefix . "top_ten' "); if (!empty($top_ten_mu_table) && !is_main_site($blog_id)) { $top_ten_mu_tables_blog_ids[] = $blog_id; $top_ten_all_mu_tables[$top_ten_mu_table][0] = $top_ten_mu_table; $top_ten_all_mu_tables[$top_ten_mu_table][1] = in_array($blog_id, $top_ten_mu_tables_sel_blog_ids) ? 1 : 0; $top_ten_all_mu_tables[$top_ten_mu_table][2] = $blog_id; } } // Switch back to the current blog restore_current_blog(); if (!empty($top_ten_all_mu_tables)) { ?> <table class="form-table"> <tr> <th> <?php _e("Blog ID", TPTN_LOCAL_NAME); ?> </th> <th> <?php _e("Status", TPTN_LOCAL_NAME); ?> </th> <th> <?php _e("Select to import", TPTN_LOCAL_NAME); ?> </th> </tr> <?php foreach ($top_ten_all_mu_tables as $top_ten_all_mu_table) { ?> <tr> <td> <?php _e("Blog #", TPTN_LOCAL_NAME); echo $top_ten_all_mu_table[2]; echo ": "; echo get_blog_details($top_ten_all_mu_table[2])->blogname; ?> </td> <td> <?php if (0 == $top_ten_all_mu_table[1]) { echo '<span style="color:#F00">'; _e("Not imported", TPTN_LOCAL_NAME); echo '</span>'; } else { echo '<span style="color:#0F0">'; _e("Imported", TPTN_LOCAL_NAME); echo '</span>'; } ?> </td> <td> <?php if (0 == $top_ten_all_mu_table[1]) { echo '<input type="checkbox" name="top_ten_all_mu_tables[' . $top_ten_all_mu_table[0] . ']" value="' . $top_ten_all_mu_table[2] . '" checked="checked" />'; } else { echo '<input type="checkbox" name="top_ten_all_mu_tables[' . $top_ten_all_mu_table[0] . ']" value="' . $top_ten_all_mu_table[2] . '" />'; } ?> </td> </tr> <?php } ?> </table> <p> <input type="hidden" name="top_ten_mu_tables_blog_ids" value="<?php echo implode(',', $top_ten_mu_tables_blog_ids); ?> " /> <input name="tptn_import" type="submit" id="tptn_import" value="<?php _e('Begin import', TPTN_LOCAL_NAME); ?> " class="button button-primary" /> <input name="tptn_delete_selected_tables" type="submit" id="tptn_delete_selected_tables" value="<?php _e('Delete selected tables', TPTN_LOCAL_NAME); ?> " class="button button-secondary" style="color:#f00" /> <input name="tptn_delete_imported_tables" type="submit" id="tptn_delete_imported_tables" value="<?php _e('Delete all imported tables', TPTN_LOCAL_NAME); ?> " class="button button-secondary" style="color:#f00" /> </p> <?php } // End if ( ! empty( $top_ten_all_mu_tables ) ) ?> </div> </div> <?php wp_nonce_field('tptn-plugin-settings'); ?> </form> <?php } ?> </div><!-- /post-body-content --> <div id="postbox-container-1" class="postbox-container"> <div id="side-sortables" class="meta-box-sortables ui-sortable"> <?php tptn_admin_side(); ?> </div><!-- /side-sortables --> </div><!-- /postbox-container-1 --> </div><!-- /post-body --> <br class="clear" /> </div><!-- /poststuff --> </div><!-- /wrap --> <?php }
/** * Function generates the plugin settings page. * * @since 1.0 */ function tptn_options() { global $wpdb; $tptn_settings = tptn_read_options(); /* Temporary check to remove the deprecated hook */ if (wp_next_scheduled('ald_tptn_hook')) { wp_clear_scheduled_hook('ald_tptn_hook'); tptn_enable_run($tptn_settings['cron_hour'], $tptn_settings['cron_min'], $tptn_settings['cron_recurrence']); } /* Temporary check if default styles are off and left thumbnails are selected - will be eventually deprecated // This is a mismatch, so we force it to no style */ if (false == $tptn_settings['include_default_style'] && 'left_thumbs' == $tptn_settings['tptn_styles']) { $tptn_settings['tptn_styles'] = 'no_style'; update_option('ald_tptn_settings', $tptn_settings); } if (true == $tptn_settings['include_default_style'] && 'left_thumbs' != $tptn_settings['tptn_styles']) { $tptn_settings['tptn_styles'] = 'left_thumbs'; update_option('ald_tptn_settings', $tptn_settings); } /* Parse post types */ parse_str($tptn_settings['post_types'], $post_types); $wp_post_types = get_post_types(array('public' => true)); $posts_types_inc = array_intersect($wp_post_types, $post_types); /* Save options has been triggered */ if (isset($_POST['tptn_save']) && check_admin_referer('tptn-plugin-settings')) { /* General options */ $tptn_settings['activate_overall'] = isset($_POST['activate_overall']) ? true : false; $tptn_settings['activate_daily'] = isset($_POST['activate_daily']) ? true : false; $tptn_settings['cache'] = isset($_POST['cache']) ? true : false; $tptn_settings['cache_fix'] = isset($_POST['cache_fix']) ? true : false; $tptn_settings['external_tracker'] = isset($_POST['external_tracker']) ? true : false; $tptn_settings['daily_midnight'] = isset($_POST['daily_midnight']) ? true : false; $tptn_settings['daily_range'] = intval($_POST['daily_range']); $tptn_settings['hour_range'] = intval($_POST['hour_range']); $tptn_settings['uninstall_clean_options'] = isset($_POST['uninstall_clean_options']) ? true : false; $tptn_settings['uninstall_clean_tables'] = isset($_POST['uninstall_clean_tables']) ? true : false; $tptn_settings['show_metabox'] = isset($_POST['show_metabox']) ? true : false; $tptn_settings['show_metabox_admins'] = isset($_POST['show_metabox_admins']) ? true : false; $tptn_settings['show_credit'] = isset($_POST['show_credit']) ? true : false; /* Counter and tracker options */ $tptn_settings['add_to_content'] = isset($_POST['add_to_content']) ? true : false; $tptn_settings['count_on_pages'] = isset($_POST['count_on_pages']) ? true : false; $tptn_settings['add_to_feed'] = isset($_POST['add_to_feed']) ? true : false; $tptn_settings['add_to_home'] = isset($_POST['add_to_home']) ? true : false; $tptn_settings['add_to_category_archives'] = isset($_POST['add_to_category_archives']) ? true : false; $tptn_settings['add_to_tag_archives'] = isset($_POST['add_to_tag_archives']) ? true : false; $tptn_settings['add_to_archives'] = isset($_POST['add_to_archives']) ? true : false; $tptn_settings['count_disp_form'] = $_POST['count_disp_form']; $tptn_settings['count_disp_form_zero'] = $_POST['count_disp_form_zero']; $tptn_settings['dynamic_post_count'] = isset($_POST['dynamic_post_count']) ? true : false; $tptn_settings['track_authors'] = isset($_POST['track_authors']) ? true : false; $tptn_settings['track_admins'] = isset($_POST['track_admins']) ? true : false; $tptn_settings['track_editors'] = isset($_POST['track_editors']) ? true : false; $tptn_settings['pv_in_admin'] = isset($_POST['pv_in_admin']) ? true : false; $tptn_settings['show_count_non_admins'] = isset($_POST['show_count_non_admins']) ? true : false; /* Popular post list options */ $tptn_settings['limit'] = intval($_POST['limit']); $tptn_settings['how_old'] = intval($_POST['how_old']); // Process post types to be selected $wp_post_types = get_post_types(array('public' => true)); $post_types_arr = isset($_POST['post_types']) && is_array($_POST['post_types']) ? $_POST['post_types'] : array('post' => 'post'); $post_types = array_intersect($wp_post_types, $post_types_arr); $tptn_settings['post_types'] = http_build_query($post_types, '', '&'); $tptn_settings['exclude_post_ids'] = $_POST['exclude_post_ids'] == '' ? '' : implode(',', array_map('intval', explode(',', $_POST['exclude_post_ids']))); /**** Exclude categories ****/ $exclude_categories_slugs = array_map('trim', explode(',', wp_kses_post($_POST['exclude_cat_slugs']))); $tptn_settings['exclude_cat_slugs'] = implode(', ', $exclude_categories_slugs); foreach ($exclude_categories_slugs as $exclude_categories_slug) { $catObj = get_category_by_slug($exclude_categories_slug); if (isset($catObj->term_taxonomy_id)) { $exclude_categories[] = $catObj->term_taxonomy_id; } } $tptn_settings['exclude_categories'] = isset($exclude_categories) ? join(',', $exclude_categories) : ''; $tptn_settings['title'] = wp_kses_post($_POST['title']); $tptn_settings['title_daily'] = wp_kses_post($_POST['title_daily']); $tptn_settings['blank_output'] = $_POST['blank_output'] == 'blank' ? true : false; $tptn_settings['blank_output_text'] = wp_kses_post($_POST['blank_output_text']); $tptn_settings['show_excerpt'] = isset($_POST['show_excerpt']) ? true : false; $tptn_settings['excerpt_length'] = intval($_POST['excerpt_length']); $tptn_settings['show_date'] = isset($_POST['show_date']) ? true : false; $tptn_settings['show_author'] = isset($_POST['show_author']) ? true : false; $tptn_settings['title_length'] = intval($_POST['title_length']); $tptn_settings['disp_list_count'] = isset($_POST['disp_list_count']) ? true : false; $tptn_settings['link_new_window'] = isset($_POST['link_new_window']) ? true : false; $tptn_settings['link_nofollow'] = isset($_POST['link_nofollow']) ? true : false; $tptn_settings['exclude_on_post_ids'] = $_POST['exclude_on_post_ids'] == '' ? '' : implode(',', array_map('intval', explode(',', $_POST['exclude_on_post_ids']))); // List HTML options $tptn_settings['before_list'] = $_POST['before_list']; $tptn_settings['after_list'] = $_POST['after_list']; $tptn_settings['before_list_item'] = $_POST['before_list_item']; $tptn_settings['after_list_item'] = $_POST['after_list_item']; /* Thumbnail options */ $tptn_settings['post_thumb_op'] = $_POST['post_thumb_op']; $tptn_settings['thumb_size'] = $_POST['thumb_size']; $tptn_settings['thumb_width'] = intval($_POST['thumb_width']); $tptn_settings['thumb_height'] = intval($_POST['thumb_height']); $tptn_settings['thumb_crop'] = isset($_POST['thumb_crop']) ? true : false; $tptn_settings['thumb_html'] = $_POST['thumb_html']; $tptn_settings['thumb_meta'] = '' == $_POST['thumb_meta'] ? 'post-image' : $_POST['thumb_meta']; $tptn_settings['scan_images'] = isset($_POST['scan_images']) ? true : false; $tptn_settings['thumb_default_show'] = isset($_POST['thumb_default_show']) ? true : false; $tptn_settings['thumb_default'] = '' == $_POST['thumb_default'] || '/default.png' == $_POST['thumb_default'] ? TOP_TEN_PLUGIN_URL . '/default.png' : $_POST['thumb_default']; /* Styles */ $tptn_settings['custom_CSS'] = wp_kses_post($_POST['custom_CSS']); $tptn_settings['tptn_styles'] = $_POST['tptn_styles']; if ('left_thumbs' == $tptn_settings['tptn_styles']) { $tptn_settings['include_default_style'] = true; $tptn_settings['post_thumb_op'] = 'inline'; } elseif ('text_only' == $tptn_settings['tptn_styles']) { $tptn_settings['include_default_style'] = false; $tptn_settings['post_thumb_op'] = 'text_only'; } else { $tptn_settings['include_default_style'] = false; } /** * Filter the settings array just before saving them to the database * * @since 2.0.4 * * @param array $tptn_settings Settings array */ $tptn_settings = apply_filters('tptn_save_options', $tptn_settings); /* Update the options */ update_option('ald_tptn_settings', $tptn_settings); /* Let's get the options again after we update them */ $tptn_settings = tptn_read_options(); parse_str($tptn_settings['post_types'], $post_types); $posts_types_inc = array_intersect($wp_post_types, $post_types); // Delete the cache tptn_cache_delete(); /* Echo a success message */ $str = '<div id="message" class="updated fade"><p>' . __('Options saved successfully. If enabled, the cache has been cleared.', 'top-10') . '</p>'; if ('left_thumbs' == $tptn_settings['tptn_styles']) { $str .= '<p>' . __('Left Thumbnails style selected. Post thumbnail location set to Inline before text.', 'top-10') . '</p>'; } if ('text_only' == $tptn_settings['tptn_styles']) { $str .= '<p>' . __('Text Only style selected. Thumbnails will not be displayed.', 'top-10') . '</p>'; } if ('tptn_thumbnail' != $tptn_settings['thumb_size']) { $str .= '<p>' . sprintf(__('Pre-built thumbnail size selected. Thumbnail set to %d x %d.', 'top-10'), $tptn_settings['thumb_width'], $tptn_settings['thumb_height']) . '</p>'; } $str .= '</div>'; echo $str; } /* Default options has been triggered */ if (isset($_POST['tptn_default']) && check_admin_referer('tptn-plugin-settings')) { delete_option('ald_tptn_settings'); $tptn_settings = tptn_default_options(); update_option('ald_tptn_settings', $tptn_settings); tptn_disable_run(); $str = '<div id="message" class="updated fade"><p>' . __('Options set to Default.', 'top-10') . '</p></div>'; echo $str; } /* Truncate overall posts table */ if (isset($_POST['tptn_trunc_all']) && check_admin_referer('tptn-plugin-settings')) { tptn_trunc_count(false); $str = '<div id="message" class="updated fade"><p>' . __('Top 10 popular posts reset', 'top-10') . '</p></div>'; echo $str; } /* Truncate daily posts table */ if (isset($_POST['tptn_trunc_daily']) && check_admin_referer('tptn-plugin-settings')) { tptn_trunc_count(true); $str = '<div id="message" class="updated fade"><p>' . __('Top 10 daily popular posts reset', 'top-10') . '</p></div>'; echo $str; } /* Clean duplicates */ if (isset($_POST['tptn_clean_duplicates']) && check_admin_referer('tptn-plugin-settings')) { tptn_clean_duplicates(true); tptn_clean_duplicates(false); $str = '<div id="message" class="updated fade"><p>' . __('Duplicate rows cleaned from tables', 'top-10') . '</p></div>'; echo $str; } /* Merge blog IDs */ if (isset($_POST['tptn_merge_blogids']) && check_admin_referer('tptn-plugin-settings')) { tptn_merge_blogids(true); tptn_merge_blogids(false); $str = '<div id="message" class="updated fade"><p>' . __('Post counts across blog IDs 0 and 1 have been merged', 'top-10') . '</p></div>'; echo $str; } /* Save maintenance options */ if (isset($_POST['tptn_mnts_save']) && check_admin_referer('tptn-plugin-settings')) { $tptn_settings['cron_hour'] = min(23, intval($_POST['cron_hour'])); $tptn_settings['cron_min'] = min(59, intval($_POST['cron_min'])); $tptn_settings['cron_recurrence'] = $_POST['cron_recurrence']; if (isset($_POST['cron_on'])) { $tptn_settings['cron_on'] = true; tptn_enable_run($tptn_settings['cron_hour'], $tptn_settings['cron_min'], $tptn_settings['cron_recurrence']); $str = '<div id="message" class="updated fade"><p>' . __('Scheduled maintenance enabled / modified', 'top-10') . '</p></div>'; } else { $tptn_settings['cron_on'] = false; tptn_disable_run(); $str = '<div id="message" class="updated fade"><p>' . __('Scheduled maintenance disabled', 'top-10') . '</p></div>'; } update_option('ald_tptn_settings', $tptn_settings); $tptn_settings = tptn_read_options(); echo $str; } if (isset($_POST['tptn_import']) && check_admin_referer('tptn-plugin-settings')) { $top_ten_all_mu_tables = isset($_POST['top_ten_all_mu_tables']) ? $_POST['top_ten_all_mu_tables'] : array(); $top_ten_mu_tables_blog_ids = explode(',', $_POST['top_ten_mu_tables_blog_ids']); $top_ten_mu_tables_sel_blog_ids = array_values($top_ten_all_mu_tables); foreach ($top_ten_mu_tables_sel_blog_ids as $top_ten_mu_tables_sel_blog_id) { $sql = ' INSERT INTO ' . $wpdb->base_prefix . "top_ten (postnumber, cntaccess, blog_id)\n\t\t\t\t\t SELECT postnumber, cntaccess, '%d' FROM " . $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . '_top_ten ON DUPLICATE KEY UPDATE ' . $wpdb->base_prefix . 'top_ten.cntaccess = ' . $wpdb->base_prefix . 'top_ten.cntaccess + ( SELECT ' . $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . '_top_ten.cntaccess FROM ' . $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . '_top_ten WHERE ' . $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . '_top_ten.postnumber = ' . $wpdb->base_prefix . 'top_ten.postnumber ) '; $wpdb->query($wpdb->prepare($sql, $top_ten_mu_tables_sel_blog_id)); $sql = ' INSERT INTO ' . $wpdb->base_prefix . "top_ten_daily (postnumber, cntaccess, dp_date, blog_id)\n\t\t\t\t\t SELECT postnumber, cntaccess, dp_date, '%d' FROM " . $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . '_top_ten_daily ON DUPLICATE KEY UPDATE ' . $wpdb->base_prefix . 'top_ten_daily.cntaccess = ' . $wpdb->base_prefix . 'top_ten_daily.cntaccess + ( SELECT ' . $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . '_top_ten_daily.cntaccess FROM ' . $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . '_top_ten_daily WHERE ' . $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . '_top_ten_daily.postnumber = ' . $wpdb->base_prefix . 'top_ten_daily.postnumber ) '; $wpdb->query($wpdb->prepare($sql, $top_ten_mu_tables_sel_blog_id)); } update_site_option('top_ten_mu_tables_sel_blog_ids', array_unique(array_merge($top_ten_mu_tables_sel_blog_ids, get_site_option('top_ten_mu_tables_sel_blog_ids', array())))); $str = '<div id="message" class="updated fade"><p>' . __('Counts from selected sites have been imported.', 'top-10') . '</p></div>'; echo $str; } if ((isset($_POST['tptn_delete_selected_tables']) || isset($_POST['tptn_delete_imported_tables'])) && check_admin_referer('tptn-plugin-settings')) { $top_ten_all_mu_tables = isset($_POST['top_ten_all_mu_tables']) ? $_POST['top_ten_all_mu_tables'] : array(); $top_ten_mu_tables_blog_ids = explode(',', $_POST['top_ten_mu_tables_blog_ids']); $top_ten_mu_tables_sel_blog_ids = array_values($top_ten_all_mu_tables); if (isset($_POST['tptn_delete_selected_tables'])) { $top_ten_mu_tables_sel_blog_ids = array_intersect($top_ten_mu_tables_sel_blog_ids, get_site_option('top_ten_mu_tables_sel_blog_ids', array())); } else { $top_ten_mu_tables_sel_blog_ids = get_site_option('top_ten_mu_tables_sel_blog_ids', array()); } if (!empty($top_ten_mu_tables_sel_blog_ids)) { $sql = 'DROP TABLE '; foreach ($top_ten_mu_tables_sel_blog_ids as $top_ten_mu_tables_sel_blog_id) { $sql .= $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . '_top_ten, '; $sql .= $wpdb->base_prefix . $top_ten_mu_tables_sel_blog_id . '_top_ten_daily, '; } $sql = substr($sql, 0, -2); $wpdb->query($sql); $str = '<div id="message" class="updated fade"><p>' . __('Selected tables have been deleted. Note that only imported tables have been deleted.', 'top-10') . '</p></div>'; echo $str; } } /**** Include the views page ****/ include_once 'main-view.php'; }
/** * Plugin settings. * * @access public * @return void */ function tptn_options() { global $wpdb; $poststable = $wpdb->posts; $tptn_settings = tptn_read_options(); parse_str($tptn_settings['post_types'], $post_types); $wp_post_types = get_post_types(array('public' => true)); $posts_types_inc = array_intersect($wp_post_types, $post_types); if (isset($_POST['tptn_save']) && check_admin_referer('tptn-plugin')) { $tptn_settings['title'] = wp_kses_post($_POST['title']); $tptn_settings['title_daily'] = wp_kses_post($_POST['title_daily']); $tptn_settings['daily_range'] = intval($_POST['daily_range']); $tptn_settings['limit'] = intval($_POST['limit']); $tptn_settings['count_disp_form'] = $_POST['count_disp_form']; $tptn_settings['exclude_on_post_ids'] = wp_kses_post($_POST['exclude_on_post_ids']); $tptn_settings['exclude_post_ids'] = wp_kses_post($_POST['exclude_post_ids']); $tptn_settings['add_to_content'] = isset($_POST['add_to_content']) ? true : false; $tptn_settings['count_on_pages'] = isset($_POST['count_on_pages']) ? true : false; $tptn_settings['add_to_feed'] = isset($_POST['add_to_feed']) ? true : false; $tptn_settings['add_to_home'] = isset($_POST['add_to_home']) ? true : false; $tptn_settings['add_to_category_archives'] = isset($_POST['add_to_category_archives']) ? true : false; $tptn_settings['add_to_tag_archives'] = isset($_POST['add_to_tag_archives']) ? true : false; $tptn_settings['add_to_archives'] = isset($_POST['add_to_archives']) ? true : false; $tptn_settings['activate_overall'] = isset($_POST['activate_overall']) ? true : false; $tptn_settings['activate_daily'] = isset($_POST['activate_daily']) ? true : false; $tptn_settings['track_authors'] = isset($_POST['track_authors']) ? true : false; $tptn_settings['track_admins'] = isset($_POST['track_admins']) ? true : false; $tptn_settings['pv_in_admin'] = isset($_POST['pv_in_admin']) ? true : false; $tptn_settings['disp_list_count'] = isset($_POST['disp_list_count']) ? true : false; $tptn_settings['d_use_js'] = isset($_POST['d_use_js']) ? true : false; $tptn_settings['dynamic_post_count'] = isset($_POST['dynamic_post_count']) ? true : false; $tptn_settings['show_credit'] = isset($_POST['show_credit']) ? true : false; $tptn_settings['blank_output'] = $_POST['blank_output'] == 'blank' ? true : false; $tptn_settings['blank_output_text'] = wp_kses_post($_POST['blank_output_text']); $tptn_settings['post_thumb_op'] = $_POST['post_thumb_op']; $tptn_settings['before_list'] = $_POST['before_list']; $tptn_settings['after_list'] = $_POST['after_list']; $tptn_settings['before_list_item'] = $_POST['before_list_item']; $tptn_settings['after_list_item'] = $_POST['after_list_item']; $tptn_settings['thumb_meta'] = '' == $_POST['thumb_meta'] ? 'post-image' : $_POST['thumb_meta']; $tptn_settings['thumb_default'] = $_POST['thumb_default']; $tptn_settings['thumb_html'] = $_POST['thumb_html']; $tptn_settings['thumb_height'] = intval($_POST['thumb_height']); $tptn_settings['thumb_width'] = intval($_POST['thumb_width']); $tptn_settings['thumb_default_show'] = isset($_POST['thumb_default_show']) ? true : false; $tptn_settings['thumb_timthumb'] = isset($_POST['thumb_timthumb']) ? true : false; $tptn_settings['scan_images'] = isset($_POST['scan_images']) ? true : false; $tptn_settings['show_excerpt'] = isset($_POST['show_excerpt']) ? true : false; $tptn_settings['excerpt_length'] = intval($_POST['excerpt_length']); $tptn_settings['title_length'] = intval($_POST['title_length']); $tptn_settings['show_date'] = isset($_POST['show_date']) ? true : false; $tptn_settings['show_author'] = isset($_POST['show_author']) ? true : false; $tptn_settings['custom_CSS'] = wp_kses_post($_POST['custom_CSS']); $tptn_settings['link_new_window'] = isset($_POST['link_new_window']) ? true : false; $tptn_settings['link_nofollow'] = isset($_POST['link_nofollow']) ? true : false; $tptn_settings['cache_fix'] = isset($_POST['cache_fix']) ? true : false; // Exclude categories $tptn_settings['exclude_cat_slugs'] = $_POST['exclude_cat_slugs']; $exclude_categories_slugs = explode(", ", $tptn_settings['exclude_cat_slugs']); //$exclude_categories = ''; foreach ($exclude_categories_slugs as $exclude_categories_slug) { $catObj = get_category_by_slug($exclude_categories_slug); if (isset($catObj->term_id)) { $exclude_categories[] = $catObj->term_id; } } $tptn_settings['exclude_categories'] = isset($exclude_categories) ? join(',', $exclude_categories) : ''; // Cron maintenance functions if (isset($_POST['cron_on']) && ($tptn_settings['cron_on'] == false || intval($_POST['cron_hour']) != $tptn_settings['cron_hour'] || intval($_POST['cron_min']) != $tptn_settings['cron_min'] || $_POST['cron_recurrence'] != $tptn_settings['cron_recurrence'])) { $tptn_settings['cron_on'] = true; $tptn_settings['cron_hour'] = intval($_POST['cron_hour']); $tptn_settings['cron_min'] = intval($_POST['cron_min']); $tptn_settings['cron_recurrence'] = $_POST['cron_recurrence']; tptn_enable_run($tptn_settings['cron_hour'], $tptn_settings['cron_min'], $tptn_settings['cron_recurrence']); echo '<div id="message" class="updated fade"><p>' . __('Scheduled maintenance enabled / modified', TPTN_LOCAL_NAME) . '</p></div>'; } else { $tptn_settings['cron_on'] = false; tptn_disable_run(); echo '<div id="message" class="updated fade"><p>' . __('Scheduled maintenance disabled', TPTN_LOCAL_NAME) . '</p></div>'; } $wp_post_types = get_post_types(array('public' => true)); $post_types_arr = isset($_POST['post_types']) && is_array($_POST['post_types']) ? $_POST['post_types'] : array('post' => 'post'); $post_types = array_intersect($wp_post_types, $post_types_arr); $tptn_settings['post_types'] = http_build_query($post_types, '', '&'); update_option('ald_tptn_settings', $tptn_settings); // Let's get the options again after we update them $tptn_settings = tptn_read_options(); parse_str($tptn_settings['post_types'], $post_types); $posts_types_inc = array_intersect($wp_post_types, $post_types); $str = '<div id="message" class="updated fade"><p>' . __('Options saved successfully.', TPTN_LOCAL_NAME) . '</p></div>'; echo $str; } if (isset($_POST['tptn_default']) && check_admin_referer('tptn-plugin')) { delete_option('ald_tptn_settings'); $tptn_settings = tptn_default_options(); update_option('ald_tptn_settings', $tptn_settings); $str = '<div id="message" class="updated fade"><p>' . __('Options set to Default.', TPTN_LOCAL_NAME) . '</p></div>'; echo $str; } if (isset($_POST['tptn_trunc_all']) && check_admin_referer('tptn-plugin')) { tptn_trunc_count(false); $str = '<div id="message" class="updated fade"><p>' . __('Top 10 popular posts reset', TPTN_LOCAL_NAME) . '</p></div>'; echo $str; } if (isset($_POST['tptn_trunc_daily']) && check_admin_referer('tptn-plugin')) { tptn_trunc_count(true); $str = '<div id="message" class="updated fade"><p>' . __('Top 10 daily popular posts reset', TPTN_LOCAL_NAME) . '</p></div>'; echo $str; } if (isset($_POST['tptn_clean_duplicates']) && check_admin_referer('tptn-plugin')) { tptn_clean_duplicates(true); tptn_clean_duplicates(false); $str = '<div id="message" class="updated fade"><p>' . __('Duplicate rows cleaned from tables', TPTN_LOCAL_NAME) . '</p></div>'; echo $str; } ?> <div class="wrap"> <div id="page-wrap"> <div id="inside"> <div id="header"> <h2>Top 10</h2> </div> <div id="side"> <?php tptn_admin_side(); ?> </div> <div id="options-div"> <form method="post" id="tptn_options" name="tptn_options" onsubmit="return checkForm()"> <fieldset class="options"> <div class="tabber"> <div class="tabbertab"> <h3> <?php _e('General options', TPTN_LOCAL_NAME); ?> </h3> <table class="form-table"> <tr> <th scope="row"><label for="activate_overall"><?php _e('Enable Overall stats', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="activate_overall" id="activate_overall" <?php if ($tptn_settings['activate_overall']) { echo 'checked="checked"'; } ?> /> </td> </tr> <tr> <th scope="row"><label for="activate_daily"><?php _e('Enable Daily stats', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="activate_daily" id="activate_daily" <?php if ($tptn_settings['activate_daily']) { echo 'checked="checked"'; } ?> /> </td> </tr> <tr> <th scope="row"><label for="cache_fix"><?php _e('W3 Total Cache fix:', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="cache_fix" id="cache_fix" <?php if ($tptn_settings['cache_fix']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('This will try to prevent W3 Total Cache from caching the addcount script of the plugin. Try toggling this option in case you find that our posts are not tracked.', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr> <th scope="row"><label for="limit"><?php _e('Number of popular posts to display: ', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="textbox" name="limit" id="limit" value="<?php echo esc_attr(stripslashes($tptn_settings['limit'])); ?> "></td> </tr> <tr> <th scope="row"><label for="daily_range"><?php _e('Daily Popular should contain views of how many days? ', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="textbox" name="daily_range" id="daily_range" size="3" value="<?php echo stripslashes($tptn_settings['daily_range']); ?> "></td> </tr> <tr><th scope="row"><?php _e('Post types to include in results (including custom post types)', TPTN_LOCAL_NAME); ?> </th> <td> <?php foreach ($wp_post_types as $wp_post_type) { $post_type_op = '<input type="checkbox" name="post_types[]" value="' . $wp_post_type . '" '; if (in_array($wp_post_type, $posts_types_inc)) { $post_type_op .= ' checked="checked" '; } $post_type_op .= ' />' . $wp_post_type . ' '; echo $post_type_op; } ?> </td> </tr> <tr><th scope="row"><label for="exclude_post_ids"><?php _e('List of post or page IDs to exclude from the results: ', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="textbox" name="exclude_post_ids" id="exclude_post_ids" value="<?php echo esc_attr(stripslashes($tptn_settings['exclude_post_ids'])); ?> " style="width:250px"></td> </tr> <tr> <th scope="row"><label for="exclude_cat_slugs"><?php _e('Exclude Categories: ', TPTN_LOCAL_NAME); ?> </label></th> <td> <div style="position:relative;text-align:left"> <table id="MYCUSTOMFLOATER" class="myCustomFloater" style="position:absolute;top:50px;left:0;background-color:#cecece;display:none;visibility:hidden"> <tr><td><!-- please see: http://chrisholland.blogspot.com/2004/09/geekstuff-css-display-inline-block.html to explain why i'm using a table here. You could replace the table/tr/td with a DIV, but you'd have to specify it's width and height --> <div class="myCustomFloaterContent"> you should never be seeing this </div> </td></tr> </table> <textarea class="wickEnabled:MYCUSTOMFLOATER" cols="50" rows="3" wrap="virtual" name="exclude_cat_slugs"><?php echo stripslashes($tptn_settings['exclude_cat_slugs']); ?> </textarea> <p class="description"><?php _e('Comma separated list of category slugs. The field above has an autocomplete so simply start typing in the starting letters and it will prompt you with options', TPTN_LOCAL_NAME); ?> </p> </div> </td> </tr> <tr> <th scope="row"><?php _e('Display number of views on:', TPTN_LOCAL_NAME); ?> </th> <td> <label><input type="checkbox" name="add_to_content" id="add_to_content" <?php if ($tptn_settings['add_to_content']) { echo 'checked="checked"'; } ?> /> <?php _e('Posts', TPTN_LOCAL_NAME); ?> </label><br /> <label><input type="checkbox" name="count_on_pages" id="count_on_pages" <?php if ($tptn_settings['count_on_pages']) { echo 'checked="checked"'; } ?> /> <?php _e('Pages', TPTN_LOCAL_NAME); ?> </label><br /> <label><input type="checkbox" name="add_to_home" id="add_to_home" <?php if ($tptn_settings['add_to_home']) { echo 'checked="checked"'; } ?> /> <?php _e('Home page', TPTN_LOCAL_NAME); ?> </label></label><br /> <label><input type="checkbox" name="add_to_feed" id="add_to_feed" <?php if ($tptn_settings['add_to_feed']) { echo 'checked="checked"'; } ?> /> <?php _e('Feeds', TPTN_LOCAL_NAME); ?> </label></label><br /> <label><input type="checkbox" name="add_to_category_archives" id="add_to_category_archives" <?php if ($tptn_settings['add_to_category_archives']) { echo 'checked="checked"'; } ?> /> <?php _e('Category archives', TPTN_LOCAL_NAME); ?> </label><br /> <label><input type="checkbox" name="add_to_tag_archives" id="add_to_tag_archives" <?php if ($tptn_settings['add_to_tag_archives']) { echo 'checked="checked"'; } ?> /> <?php _e('Tag archives', TPTN_LOCAL_NAME); ?> </label></label><br /> <label><input type="checkbox" name="add_to_archives" id="add_to_archives" <?php if ($tptn_settings['add_to_archives']) { echo 'checked="checked"'; } ?> /> <?php _e('Other archives', TPTN_LOCAL_NAME); ?> </label></label> <p class="description"><?php _e('If you choose to disable this, please add <code><?php if(function_exists(\'echo_ald_tptn\')) echo_ald_tptn(); ?></code> to your template file where you want it displayed', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr><th scope="row"><label for="dynamic_post_count"><?php _e('Always display latest post count', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="dynamic_post_count" id="dynamic_post_count" <?php if ($tptn_settings['dynamic_post_count']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('This option uses JavaScript and will increase your page load time. Turn this off if you are not using caching plugins or are OK with displaying older cached counts. When you enable this option, the daily widget will not use the options set there, but options will need to be set on this screen.', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr><th scope="row"><label for="d_use_js"><?php _e('Always display latest post count in the daily lists', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="d_use_js" id="d_use_js" <?php if ($tptn_settings['d_use_js']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('This option uses JavaScript and will increase your page load time', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr><th scope="row"><label for="track_authors"><?php _e('Track visits of authors on their own posts?', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="track_authors" id="track_authors" <?php if ($tptn_settings['track_authors']) { echo 'checked="checked"'; } ?> /></td> </tr> <tr><th scope="row"><label for="track_admins"><?php _e('Track visits of admins?', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="track_admins" id="track_admins" <?php if ($tptn_settings['track_admins']) { echo 'checked="checked"'; } ?> /></td> </tr> <tr><th scope="row"><label for="pv_in_admin"><?php _e('Display page views on Posts > All Posts in Admin', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="pv_in_admin" id="pv_in_admin" <?php if ($tptn_settings['pv_in_admin']) { echo 'checked="checked"'; } ?> /></td> </tr> <tr><th scope="row"><label for="show_credit"><?php _e('Link to Top 10 plugin page', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="show_credit" id="show_credit" <?php if ($tptn_settings['show_credit']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('A link to the plugin is added as an extra list item to the list of popular posts', TPTN_LOCAL_NAME); ?> </p> </td> </tr> </table> </div> <div class="tabbertab"> <h3> <?php _e('Output Options', TPTN_LOCAL_NAME); ?> </h3> <table class="form-table"> <tr><th scope="row"><label for="title"><?php _e('Format to display the count in: ', TPTN_LOCAL_NAME); ?> </label></th> <td><textarea name="count_disp_form" id="count_disp_form" cols="50" rows="5"><?php echo htmlspecialchars(stripslashes($tptn_settings['count_disp_form'])); ?> </textarea> <p class="description"><?php _e('Use <code>%totalcount%</code> to display the total count, <code>%dailycount%</code> to display the daily count and <code>%overallcount%</code> to display the overall count across all posts on the blog. e.g. the default options displays <code>(Visited 123 times, 23 visits today)</code>', TPTN_LOCAL_NAME); ?> </td> </tr> <tr><th scope="row"><label for="title"><?php _e('Title of popular posts: ', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="textbox" name="title" id="title" value="<?php echo esc_attr(stripslashes($tptn_settings['title'])); ?> " style="width:250px" /></td> </tr> <tr><th scope="row"><label for="title_daily"><?php _e('Title of daily popular posts: ', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="textbox" name="title_daily" id="title_daily" value="<?php echo esc_attr(stripslashes($tptn_settings['title_daily'])); ?> " style="width:250px" /></td> </tr> <tr><th scope="row"><label for="blank_output"><?php _e('When there are no posts, what should be shown?', TPTN_LOCAL_NAME); ?> </label></th> <td> <label> <input type="radio" name="blank_output" value="blank" id="blank_output_0" <?php if ($tptn_settings['blank_output']) { echo 'checked="checked"'; } ?> /> <?php _e('Blank Output', TPTN_LOCAL_NAME); ?> </label> <br /> <label> <input type="radio" name="blank_output" value="customs" id="blank_output_1" <?php if (!$tptn_settings['blank_output']) { echo 'checked="checked"'; } ?> /> <?php _e('Display:', TPTN_LOCAL_NAME); ?> </label> <input type="textbox" name="blank_output_text" id="blank_output_text" value="<?php echo esc_attr(stripslashes($tptn_settings['blank_output_text'])); ?> " style="width:250px" /> </td> </tr> <tr><th scope="row"><label for="show_excerpt"><?php _e('Show post excerpt in list?', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="show_excerpt" id="show_excerpt" <?php if ($tptn_settings['show_excerpt']) { echo 'checked="checked"'; } ?> /></td> </tr> <tr><th scope="row"><label for="excerpt_length"><?php _e('Length of excerpt (in words): ', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="textbox" name="excerpt_length" id="excerpt_length" value="<?php echo stripslashes($tptn_settings['excerpt_length']); ?> " /></td> </tr> <tr><th scope="row"><label for="show_author"><?php _e('Show post author in list?', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="show_author" id="show_author" <?php if ($tptn_settings['show_author']) { echo 'checked="checked"'; } ?> /></td> </tr> <tr><th scope="row"><label for="show_date"><?php _e('Show post date in list?', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="show_date" id="show_date" <?php if ($tptn_settings['show_date']) { echo 'checked="checked"'; } ?> /></td> </tr> <tr><th scope="row"><label for="title_length"><?php _e('Limit post title length (in characters)', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="textbox" name="title_length" id="title_length" value="<?php echo stripslashes($tptn_settings['title_length']); ?> " /></td> </tr> <tr><th scope="row"><label for="disp_list_count"><?php _e('Display number of page views in popular lists?', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="disp_list_count" id="disp_list_count" <?php if ($tptn_settings['disp_list_count']) { echo 'checked="checked"'; } ?> /></td> </tr> <tr><th scope="row"><label for="link_new_window "><?php _e('Open links in new window', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="link_new_window" id="link_new_window" <?php if ($tptn_settings['link_new_window']) { echo 'checked="checked"'; } ?> /></td> </tr> <tr><th scope="row"><label for="link_nofollow"><?php _e('Add nofollow attribute to links in the list', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="link_nofollow" id="link_nofollow" <?php if ($tptn_settings['link_nofollow']) { echo 'checked="checked"'; } ?> /></td> </tr> <tr><th scope="row"><label for="exclude_on_post_ids"><?php _e('Exclude display of related posts on these posts / pages', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="exclude_on_post_ids" id="exclude_on_post_ids" value="<?php echo esc_attr(stripslashes($tptn_settings['exclude_on_post_ids'])); ?> " style="width:250px"> <p class="description"><?php _e('Enter comma separated list of IDs. e.g. 188,320,500', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr style="vertical-align: top; background: #eee"><th scope="row" colspan="2"><?php _e('Customize the output:', TPTN_LOCAL_NAME); ?> </th> </tr> <tr><th scope="row"><label for="before_list"><?php _e('HTML to display before the list of posts: ', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="textbox" name="before_list" id="before_list" value="<?php echo esc_attr(stripslashes($tptn_settings['before_list'])); ?> " style="width:250px" /></td> </tr> <tr><th scope="row"><label for="before_list_item"><?php _e('HTML to display before each list item: ', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="textbox" name="before_list_item" id="before_list_item" value="<?php echo esc_attr(stripslashes($tptn_settings['before_list_item'])); ?> " style="width:250px" /></td> </tr> <tr><th scope="row"><label for="after_list_item"><?php _e('HTML to display after each list item: ', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="textbox" name="after_list_item" id="after_list_item" value="<?php echo esc_attr(stripslashes($tptn_settings['after_list_item'])); ?> " style="width:250px" /></td> </tr> <tr><th scope="row"><label for="after_list"><?php _e('HTML to display after the list of posts: ', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="textbox" name="after_list" id="after_list" value="<?php echo esc_attr(stripslashes($tptn_settings['after_list'])); ?> " style="width:250px" /></td> </tr> <tr style="vertical-align: top; background: #eee"><th scope="row" colspan="2"><?php _e('Post thumbnail options:', TPTN_LOCAL_NAME); ?> </th> </tr> <tr><th scope="row"><label for="post_thumb_op"><?php _e('Location of post thumbnail:', TPTN_LOCAL_NAME); ?> </label></th> <td> <label> <input type="radio" name="post_thumb_op" value="inline" id="post_thumb_op_0" <?php if ($tptn_settings['post_thumb_op'] == 'inline') { echo 'checked="checked"'; } ?> /> <?php _e('Display thumbnails inline with posts, before title', TPTN_LOCAL_NAME); ?> </label> <br /> <label> <input type="radio" name="post_thumb_op" value="after" id="post_thumb_op_1" <?php if ($tptn_settings['post_thumb_op'] == 'after') { echo 'checked="checked"'; } ?> /> <?php _e('Display thumbnails inline with posts, after title', TPTN_LOCAL_NAME); ?> </label> <br /> <label> <input type="radio" name="post_thumb_op" value="thumbs_only" id="post_thumb_op_2" <?php if ($tptn_settings['post_thumb_op'] == 'thumbs_only') { echo 'checked="checked"'; } ?> /> <?php _e('Display only thumbnails, no text', TPTN_LOCAL_NAME); ?> </label> <br /> <label> <input type="radio" name="post_thumb_op" value="text_only" id="post_thumb_op_3" <?php if ($tptn_settings['post_thumb_op'] == 'text_only') { echo 'checked="checked"'; } ?> /> <?php _e('Do not display thumbnails, only text.', TPTN_LOCAL_NAME); ?> </label> <br /> </td> </tr> <tr><th scope="row"><label for="thumb_width"><?php _e('Width of the thumbnail: ', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="textbox" name="thumb_width" id="thumb_width" value="<?php echo esc_attr(stripslashes($tptn_settings['thumb_width'])); ?> " style="width:30px" />px</td> </tr> <tr><th scope="row"><label for="thumb_height"><?php _e('Height of the thumbnail: ', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="textbox" name="thumb_height" id="thumb_height" value="<?php echo esc_attr(stripslashes($tptn_settings['thumb_height'])); ?> " style="width:30px" />px</td> </tr> <tr><th scope="row"><label for="thumb_html"><?php _e('Style attributes / Width and Height HTML attributes:', TPTN_LOCAL_NAME); ?> </label></th> <td> <label> <input type="radio" name="thumb_html" value="css" id="thumb_html_0" <?php if ($tptn_settings['thumb_html'] == 'css') { echo 'checked="checked"'; } ?> /> <?php _e('Style attributes are used for width and height. <code>style="max-width:' . $tptn_settings['thumb_width'] . 'px;max-height:' . $tptn_settings['thumb_height'] . 'px;"</code>', TPTN_LOCAL_NAME); ?> </label> <br /> <label> <input type="radio" name="thumb_html" value="html" id="thumb_html_1" <?php if ($tptn_settings['thumb_html'] == 'html') { echo 'checked="checked"'; } ?> /> <?php _e('HTML width and height attributes are used for width and height. <code>width="' . $tptn_settings['thumb_width'] . '" height="' . $tptn_settings['thumb_height'] . '"</code>', TPTN_LOCAL_NAME); ?> </label> <br /> </td> </tr> <tr><th scope="row"><label for="thumb_timthumb"><?php _e('Use timthumb to generate thumbnails? ', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="thumb_timthumb" id="thumb_timthumb" <?php if ($tptn_settings['thumb_timthumb']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('If checked, <a href="http://www.binarymoon.co.uk/projects/timthumb/">timthumb</a> will be used to generate thumbnails', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr><th scope="row"><label for="thumb_meta"><?php _e('Post thumbnail meta field name: ', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="thumb_meta" id="thumb_meta" value="<?php echo esc_attr(stripslashes($tptn_settings['thumb_meta'])); ?> "> <p class="description"><?php _e('The value of this field should contain the image source and is set in the <em>Add New Post</em> screen', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr><th scope="row"><label for="scan_images"><?php _e('If the postmeta is not set, then should the plugin extract the first image from the post?', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="scan_images" id="scan_images" <?php if ($tptn_settings['scan_images']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('This could slow down the loading of your page if the first image in the related posts is large in file-size', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr><th scope="row"><label for="thumb_default_show"><?php _e('Use default thumbnail? ', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="checkbox" name="thumb_default_show" id="thumb_default_show" <?php if ($tptn_settings['thumb_default_show']) { echo 'checked="checked"'; } ?> /> <p class="description"><?php _e('If checked, when no thumbnail is found, show a default one from the URL below. If not checked and no thumbnail is found, no image will be shown.', TPTN_LOCAL_NAME); ?> </p> </td> </tr> <tr><th scope="row"><label for="thumb_default"><?php _e('Default thumbnail: ', TPTN_LOCAL_NAME); ?> </label></th> <td> <input type="textbox" name="thumb_default" id="thumb_default" value="<?php echo esc_attr(stripslashes($tptn_settings['thumb_default'])); ?> " style="width:500px"> <p class="description"><?php _e('The plugin will first check if the post contains a thumbnail. If it doesn\'t then it will check the meta field. If this is not available, then it will show the default image as specified above', TPTN_LOCAL_NAME); ?> </p> </td> </tr> </table> </div> <div class="tabbertab"> <h3> <?php _e('Custom Styles', TPTN_LOCAL_NAME); ?> </h3> <table class="form-table"> <tr style="vertical-align: top; "><th scope="row" colspan="2"><?php _e('Custom CSS to add to header:', TPTN_LOCAL_NAME); ?> </th> </tr> <tr style="vertical-align: top; "><td scope="row" colspan="2"><textarea name="custom_CSS" id="custom_CSS" rows="15" cols="80"><?php echo stripslashes($tptn_settings['custom_CSS']); ?> </textarea> <p class="description"><?php _e('Do not include <code>style</code> tags. Check out the <a href="http://wordpress.org/extend/plugins/top-10/faq/" target="_blank">FAQ</a> for available CSS classes to style.', TPTN_LOCAL_NAME); ?> </p> </td> </tr> </table> </div> <div class="tabbertab"> <h3> <?php _e('Maintenance', TPTN_LOCAL_NAME); ?> </h3> <table class="form-table"> <tr style="vertical-align: top; "><th scope="row" colspan="2"> <?php _e('Over time the Daily Top 10 database grows in size, which reduces the performance of the plugin. Cleaning the database at regular intervals could improve performance, especially on high traffic blogs.', TPTN_LOCAL_NAME); ?> <em><?php _e('Note: When scheduled maintenance is enabled, WordPress will run the cron job everytime the job is rescheduled (i.e. you change the settings below). This causes the daily posts table to reset.', TPTN_LOCAL_NAME); ?> </em> </th> </tr> <tr><th scope="row"><label for="cron_on"><?php _e('Enable scheduled maintenance of daily tables:', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="checkbox" name="cron_on" id="cron_on" <?php if ($tptn_settings['cron_on']) { echo 'checked="checked"'; } ?> /> </td> </tr> <tr><th scope="row"><label for="cron_hour"><?php _e('Time to run maintenance', TPTN_LOCAL_NAME); ?> </label></th> <td><input type="textbox" name="cron_hour" id="cron_hour" value="<?php echo esc_attr(stripslashes($tptn_settings['cron_hour'])); ?> " style="width:10px" /> : <input type="textbox" name="cron_min" id="cron_min" value="<?php echo esc_attr(stripslashes($tptn_settings['cron_min'])); ?> " style="width:10px" /> hrs</td> </tr> <tr><th scope="row"><label for="cron_recurrence"><?php _e('How often should the maintenance be run:', TPTN_LOCAL_NAME); ?> </label></th> <td> <label> <input type="radio" name="cron_recurrence" value="daily" id="cron_recurrence0" <?php if ($tptn_settings['cron_recurrence'] == 'daily') { echo 'checked="checked"'; } ?> /> <?php _e('Daily', TPTN_LOCAL_NAME); ?> </label> <br /> <label> <input type="radio" name="cron_recurrence" value="weekly" id="cron_recurrence1" <?php if ($tptn_settings['cron_recurrence'] == 'weekly') { echo 'checked="checked"'; } ?> /> <?php _e('Weekly', TPTN_LOCAL_NAME); ?> </label> <br /> <label> <input type="radio" name="cron_recurrence" value="fortnightly" id="cron_recurrence2" <?php if ($tptn_settings['cron_recurrence'] == 'fortnightly') { echo 'checked="checked"'; } ?> /> <?php _e('Fortnightly', TPTN_LOCAL_NAME); ?> </label> <br /> <label> <input type="radio" name="cron_recurrence" value="monthly" id="cron_recurrence3" <?php if ($tptn_settings['cron_recurrence'] == 'monthly') { echo 'checked="checked"'; } ?> /> <?php _e('Monthly', TPTN_LOCAL_NAME); ?> </label> <br /> </td> </tr> <tr><td scope="row" colspan="2"> <?php if ($tptn_settings['cron_on']) { if (wp_next_scheduled('ald_tptn_hook')) { echo '<span style="color:#0c0">'; _e('The cron job has been scheduled. Maintenance will run ', TPTN_LOCAL_NAME); echo wp_get_schedule('ald_tptn_hook'); echo '</span>'; } else { echo '<span style="color:#e00">'; _e('The cron job is missing. Please resave this page to add the job', TPTN_LOCAL_NAME); echo '</span>'; } } else { echo '<span style="color:#FFA500">'; _e('Maintenance is turned off', TPTN_LOCAL_NAME); echo '</span>'; } ?> </td></tr> </table> </div> <p> <input type="submit" name="tptn_save" id="tptn_save" value="<?php _e('Save Options', TPTN_LOCAL_NAME); ?> " class="button button-primary" /> <input type="submit" name="tptn_default" id="tptn_default" value="<?php _e('Default Options', TPTN_LOCAL_NAME); ?> " class="button button-secondary" onclick="if (!confirm('<?php _e('Do you want to set options to Default?', TPTN_LOCAL_NAME); ?> ')) return false;" /> </p> </fieldset> <h3> <?php _e('Reset count', TPTN_LOCAL_NAME); ?> </h3> <p> <?php _e('This cannot be reversed. Make sure that your database has been backed up before proceeding', TPTN_LOCAL_NAME); ?> </p> <p> <input name="tptn_trunc_all" type="submit" id="tptn_trunc_all" value="<?php _e('Reset Popular Posts', TPTN_LOCAL_NAME); ?> " class="button button-secondary" onclick="if (!confirm('<?php _e('Are you sure you want to reset the popular posts?', TPTN_LOCAL_NAME); ?> ')) return false;" /> <input name="tptn_trunc_daily" type="submit" id="tptn_trunc_daily" value="<?php _e('Reset Daily Popular Posts', TPTN_LOCAL_NAME); ?> " class="button button-secondary" onclick="if (!confirm('<?php _e('Are you sure you want to reset the daily popular posts?', TPTN_LOCAL_NAME); ?> ')) return false;" /> <input name="tptn_clean_duplicates" type="submit" id="tptn_clean_duplicates" value="<?php _e('Clear duplicates', TPTN_LOCAL_NAME); ?> " class="button button-secondary" onclick="if (!confirm('<?php _e('This will delete the duplicate entries in the tables. Proceed?', TPTN_LOCAL_NAME); ?> ')) return false;" /> </p> <?php wp_nonce_field('tptn-plugin'); ?> </form> </div> </div> <div style="clear: both;"></div> </div> </div> <?php }