__( '7 days', 'likenook' ), '30' => __( '30 days', 'likenook' ), '90' => __( '90 days', 'likenook' ), '365' => __( '12 months', 'likenook' ), 'all' => __( 'All time', 'likenook' ), ); $likenook_period = isset( $_GET['period'] ) ? sanitize_key( wp_unslash( $_GET['period'] ) ) : '30'; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Read-only view filter. $likenook_period = isset( $likenook_periods[ $likenook_period ] ) ? $likenook_period : '30'; $likenook_days = Likenook_Stats::periods()[ $likenook_period ]; $likenook_all = Likenook_Stats::totals( 0 ); $likenook_now = Likenook_Stats::totals( $likenook_days ); $likenook_before = $likenook_days ? Likenook_Stats::totals( $likenook_days, 1 ) : null; $likenook_series = Likenook_Stats::series( $likenook_days ); $likenook_liked = Likenook_Stats::top( $likenook_days, 'like', 10 ); $likenook_dislike = Likenook_Stats::top( $likenook_days, 'dislike', 10 ); /** * Change against the previous period, as a signed percentage. * * @param int $now This period. * @param int $before Previous period. * @return float|null */ $likenook_change = function ( $now, $before ) { if ( ! $before ) { return null; } return ( $now - $before ) / $before * 100; }; /** * Prints the delta line under a stat. */ $likenook_delta = function ( $change, $up_is_good, $unit = '%' ) use ( $likenook_period ) { if ( null === $change ) { return; } $rounded = round( $change ); if ( 0.0 === (float) $rounded ) { $class = 'is-flat'; $arrow = '→'; } else { $good = ( $rounded > 0 ) === $up_is_good; $class = $good ? 'is-good' : 'is-bad'; $arrow = $rounded > 0 ? '↑' : '↓'; } $days = Likenook_Stats::periods()[ $likenook_period ]; /* translators: %d: number of days */ $span = sprintf( _n( '%d day', '%d days', $days, 'likenook' ), $days ); /* translators: 1: arrow, 2: signed change such as +12%, 3: period length such as 30 days */ $text = sprintf( __( '%1$s %2$s vs previous %3$s', 'likenook' ), $arrow, ( $rounded > 0 ? '+' : '' ) . number_format_i18n( $rounded ) . $unit, $span ); echo '' . esc_html( $text ) . ''; }; $likenook_total_now = $likenook_now['likes'] + $likenook_now['dislikes']; $likenook_ratio_now = $likenook_total_now ? $likenook_now['likes'] / $likenook_total_now * 100 : null; $likenook_ratio_chg = null; if ( $likenook_before && null !== $likenook_ratio_now && ( $likenook_before['likes'] + $likenook_before['dislikes'] ) ) { $likenook_ratio_chg = $likenook_ratio_now - $likenook_before['likes'] / ( $likenook_before['likes'] + $likenook_before['dislikes'] ) * 100; } /** * Prints a top-posts table. */ $likenook_table = function ( $rows, $caption ) { if ( ! $rows ) { echo '
' . esc_html__( 'No votes in this period.', 'likenook' ) . '
'; return; } _prime_post_caches( wp_list_pluck( $rows, 'id' ) ); ?>