get_dashboard_data( [ 'orderby' => $orderby, 'order' => $order ] ); $count = count( $posts ); $is_pro = License::is_pro(); $is_trial = License::is_trial(); $days_left = License::trial_days_left(); $usage = License::get_usage(); $scorer = new Freshness_Scorer(); $configured = $scorer->is_configured(); $assignments = new Assignments(); $assignee_map = $assignments->get_assignees_for_posts( array_map( 'intval', array_column( $posts, 'post_id' ) ) ); $can_edit = current_user_can( 'edit_posts' ); $gsc = new GSC_Connector(); $gsc_active = $gsc->is_active(); $gsc_map = $gsc_active ? $gsc->get_gsc_data_for_posts( array_map( 'intval', array_column( $posts, 'post_id' ) ) ) : []; ?>


' . esc_html__( 'Settings', 'freshplugins-content-audit' ) . '' ); ?>

0 ) : ?>
 — 
 — 
 — 

$last_synced ) { $last_synced = $gd['synced_at']; } } } ?>

null, 'impressions' => null, 'position' => null, 'ctr' => null, 'synced_at' => null ]; ?>
 |   |   | 
renders as the first one // instead, so a dismissed post used to display as Unreviewed. $status_labels = [ 'unreviewed' => __( 'Unreviewed', 'freshplugins-content-audit' ), 'needs_refresh' => __( 'Needs Refresh', 'freshplugins-content-audit' ), 'in_progress' => __( 'In Progress', 'freshplugins-content-audit' ), 'pending_review' => __( 'Pending Review', 'freshplugins-content-audit' ), 'done' => __( 'Done', 'freshplugins-content-audit' ), 'dismissed' => __( 'Dismissed', 'freshplugins-content-audit' ), ]; $status = $row['status'] ?? 'unreviewed'; ?> 0 ) : ?> + more 'age', 'label' => 'Age' ], [ 'key' => 'references', 'label' => 'Refs' ], [ 'key' => 'depth', 'label' => 'Depth' ], ]; foreach ( $chip_types as $type ) { if ( isset( $sub_scores[ $type['key'] ] ) ) { $score = (int) $sub_scores[ $type['key'] ]; $reason_text = $reasons[ $type['key'] ] ?? ''; $score_cls = $score >= 67 ? 'fresh' : ( $score >= 34 ? 'stale' : 'urgent' ); ?> data-reason=""> — — — —