/**
  * 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;
}