/** * Display the dashboard widget controls content. */ public static function dashboard_widget_controls() { $number_of_days = self::get_number_of_days(); $current_filter = self::get_current_filter(); $available_filters = activity_heat_map_get_filters(); if (isset($_REQUEST['activity_heat_map_filter'])) { $current_filter = sanitize_text_field($_REQUEST['activity_heat_map_filter']); if (!array_key_exists($current_filter, $available_filters)) { $current_filter = 'posts'; } update_user_option(get_current_user_id(), 'activity_heat_map_filter', $current_filter); } if (isset($_REQUEST['activity_heat_map_days'])) { $number_of_days = absint($_REQUEST['activity_heat_map_days']); $number_of_days = $number_of_days <= 366 ? $number_of_days : 366; update_user_option(get_current_user_id(), 'activity_heat_map_days', $number_of_days); } echo '<p>'; printf('<label for="activity_heat_map_filter">%s</label>', esc_html__('Show activity: ', 'activity-heat-map')); echo '<select name="activity_heat_map_filter" id="activity_heat_map_filter">'; foreach ($available_filters as $filter => $data) { printf('<option value="%s" %s>%s</option>', esc_attr($filter), selected($current_filter, $filter), esc_html($data['title'])); } echo '</select>'; echo '</p>'; echo '<p>'; printf('<label for="activity_heat_map_days">%s</label>', esc_html__('Number of days: ', 'activity-heat-map')); printf('<input type="number" min="7" max="366" name="activity_heat_map_days" id="activity_heat_map_days" value="%s" />', absint($number_of_days)); echo '</p>'; }
/** * Get the stats data. * * All results are cached for 12 hours. * * @since 1.0.0 * * @param string $filter Filter to get the data for. * @param int $days Number of days. * @return array The data for a specific filter. */ function activity_heat_map_get_data($filter, $days) { $available_filters = activity_heat_map_get_filters(); $key = sprintf('filter-%s-%d', $filter, $days); $group = 'activity-heat-map'; $result = wp_cache_get($key, $group); if (!$result) { $result = call_user_func($available_filters[$filter]['callback'], $days); wp_cache_set($key, $result, $group, 12 * HOUR_IN_SECONDS); } /** * Filter the heat map filter result. * * @since 1.0.0 * * @param array $result Result array containing the data for each day. * @param string $filter The current filter. * @param int $days The number of days. */ $result = apply_filters('activity_heat_map_filter_result', $result, $filter, $days); return $result; }