@@ -1406,70 +1406,91 @@ public function allow_feedback_rest_api_type( $post_types ) {
14061406 * Display the count of new feedback entries received. It's reset when user visits the Feedback screen.
14071407 *
14081408 * @since 4.1.0
1409- *
1410- * @param object $screen Information about the current screen.
14111409 */
1412- public function unread_count ( $ screen ) {
1413- if ( isset ( $ screen ->post_type ) && 'feedback ' === $ screen ->post_type || $ screen ->id === 'jetpack_page_jetpack-forms-admin ' ) {
1414- update_option ( 'feedback_unread_count ' , 0 );
1415- } else {
1416- global $ submenu , $ menu ;
1417- if ( apply_filters ( 'jetpack_forms_use_new_menu_parent ' , true ) && current_user_can ( 'edit_pages ' ) ) {
1418- // show the count on Jetpack and Jetpack → Forms
1419- $ unread = get_option ( 'feedback_unread_count ' , 0 );
1420-
1421- if ( $ unread > 0 && isset ( $ submenu ['jetpack ' ] ) && is_array ( $ submenu ['jetpack ' ] ) && ! empty ( $ submenu ['jetpack ' ] ) ) {
1422- $ forms_unread_count_tag = " <span class='count- {$ unread } awaiting-mod'><span> " . number_format_i18n ( $ unread ) . '</span></span> ' ;
1423- $ jetpack_badge_count = $ unread ;
1424-
1425- // Main menu entries
1426- foreach ( $ menu as $ index => $ main_menu_item ) {
1427- if ( isset ( $ main_menu_item [1 ] ) && 'jetpack_admin_page ' === $ main_menu_item [1 ] ) {
1428- // Parse the menu item
1429- $ jetpack_menu_item = $ this ->parse_menu_item ( $ menu [ $ index ][0 ] );
1430-
1431- if ( isset ( $ jetpack_menu_item ['badge ' ] ) && is_numeric ( $ jetpack_menu_item ['badge ' ] ) && intval ( $ jetpack_menu_item ['badge ' ] ) ) {
1432- $ jetpack_badge_count += intval ( $ jetpack_menu_item ['badge ' ] );
1433- }
1410+ public function unread_count () {
14341411
1435- if ( isset ( $ jetpack_menu_item ['count ' ] ) && is_numeric ( $ jetpack_menu_item ['count ' ] ) && intval ( $ jetpack_menu_item ['count ' ] ) ) {
1436- $ jetpack_badge_count += intval ( $ jetpack_menu_item ['count ' ] );
1437- }
1412+ global $ submenu , $ menu ;
1413+ if ( apply_filters ( 'jetpack_forms_use_new_menu_parent ' , true ) && current_user_can ( 'edit_pages ' ) ) {
1414+ // show the count on Jetpack and Jetpack → Forms
1415+ $ unread = self ::get_unread_count ();
14381416
1439- $ jetpack_unread_tag = " <span class='count- {$ jetpack_badge_count } awaiting-mod'><span> " . number_format_i18n ( $ jetpack_badge_count ) . '</span></span> ' ;
1417+ if ( $ unread > 0 && isset ( $ submenu ['jetpack ' ] ) && is_array ( $ submenu ['jetpack ' ] ) && ! empty ( $ submenu ['jetpack ' ] ) ) {
1418+ $ forms_unread_count_tag = " <span class='jp-feedback-unread-counter count- {$ unread } awaiting-mod'><span class='feedback-unread-counter'> " . number_format_i18n ( $ unread ) . '</span></span> ' ;
1419+ $ jetpack_badge_count = $ unread ;
14401420
1441- // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
1442- $ menu [ $ index ][0 ] = $ jetpack_menu_item ['title ' ] . ' ' . $ jetpack_unread_tag ;
1421+ // Main menu entries
1422+ foreach ( $ menu as $ index => $ main_menu_item ) {
1423+ if ( isset ( $ main_menu_item [1 ] ) && 'jetpack_admin_page ' === $ main_menu_item [1 ] ) {
1424+ // Parse the menu item
1425+ $ jetpack_menu_item = $ this ->parse_menu_item ( $ menu [ $ index ][0 ] );
1426+
1427+ if ( isset ( $ jetpack_menu_item ['badge ' ] ) && is_numeric ( $ jetpack_menu_item ['badge ' ] ) && intval ( $ jetpack_menu_item ['badge ' ] ) ) {
1428+ $ jetpack_badge_count += intval ( $ jetpack_menu_item ['badge ' ] );
14431429 }
1444- }
14451430
1446- // Jetpack submenu entries
1447- foreach ( $ submenu ['jetpack ' ] as $ index => $ menu_item ) {
1448- if ( 'jetpack-forms-admin ' === $ menu_item [2 ] ) {
1449- // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
1450- $ submenu ['jetpack ' ][ $ index ][0 ] .= $ forms_unread_count_tag ;
1431+ if ( isset ( $ jetpack_menu_item ['count ' ] ) && is_numeric ( $ jetpack_menu_item ['count ' ] ) && intval ( $ jetpack_menu_item ['count ' ] ) ) {
1432+ $ jetpack_badge_count += intval ( $ jetpack_menu_item ['count ' ] );
14511433 }
1434+
1435+ $ jetpack_unread_tag = " <span data-unread-diff=' " . ( $ jetpack_badge_count - $ unread ) . "' class='jp-feedback-unread-counter count- {$ jetpack_badge_count } awaiting-mod'><span class='feedback-unread-counter'> " . number_format_i18n ( $ jetpack_badge_count ) . '</span></span> ' ;
1436+
1437+ // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
1438+ $ menu [ $ index ][0 ] = $ jetpack_menu_item ['title ' ] . ' ' . $ jetpack_unread_tag ;
1439+ }
1440+ }
1441+
1442+ // Jetpack submenu entries
1443+ foreach ( $ submenu ['jetpack ' ] as $ index => $ menu_item ) {
1444+ if ( 'jetpack-forms-admin ' === $ menu_item [2 ] ) {
1445+ // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
1446+ $ submenu ['jetpack ' ][ $ index ][0 ] .= $ forms_unread_count_tag ;
14521447 }
14531448 }
1454- return ;
14551449 }
1456- if ( isset ( $ submenu ['feedback ' ] ) && is_array ( $ submenu ['feedback ' ] ) && ! empty ( $ submenu ['feedback ' ] ) ) {
1457- foreach ( $ submenu ['feedback ' ] as $ index => $ menu_item ) {
1458- if ( 'edit.php?post_type=feedback ' === $ menu_item [2 ] ) {
1459- $ unread = get_option ( 'feedback_unread_count ' , 0 );
1460- if ( $ unread > 0 ) {
1461- $ unread_count = current_user_can ( 'publish_pages ' ) ? " <span class='feedback-unread count- {$ unread } awaiting-mod'><span class='feedback-unread-count'> " . number_format_i18n ( $ unread ) . '</span></span> ' : '' ;
1462-
1463- // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
1464- $ submenu ['feedback ' ][ $ index ][0 ] .= $ unread_count ;
1465- }
1466- break ;
1450+ return ;
1451+ }
1452+
1453+ if ( isset ( $ submenu ['feedback ' ] ) && is_array ( $ submenu ['feedback ' ] ) && ! empty ( $ submenu ['feedback ' ] ) ) {
1454+ foreach ( $ submenu ['feedback ' ] as $ index => $ menu_item ) {
1455+ if ( 'edit.php?post_type=feedback ' === $ menu_item [2 ] ) {
1456+ $ unread = self ::get_unread_count ();
1457+
1458+ if ( $ unread > 0 ) {
1459+ $ unread_count = current_user_can ( 'publish_pages ' ) ? " <span class='feedback-unread jp-feedback-unread-counter count- {$ unread } awaiting-mod'><span class='feedback-unread-count'> " . number_format_i18n ( $ unread ) . '</span></span> ' : '' ;
1460+
1461+ // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
1462+ $ submenu ['feedback ' ][ $ index ][0 ] .= $ unread_count ;
14671463 }
1464+ break ;
14681465 }
14691466 }
14701467 }
14711468 }
14721469
1470+ /**
1471+ * Get the count of unread feedback entries.
1472+ *
1473+ * @since $$next-version$$
1474+ *
1475+ * @return int The count of unread feedback entries.
1476+ */
1477+ public static function get_unread_count () {
1478+ return (int ) get_option ( 'feedback_unread_count_v2 ' , 0 );
1479+ }
1480+
1481+ /**
1482+ * Recalculate the count of unread feedback entries.
1483+ *
1484+ * @since $$next-version$$
1485+ *
1486+ * @return int The count of unread feedback entries.
1487+ */
1488+ public static function recalculate_unread_count () {
1489+ $ count = Feedback::get_unread_count ();
1490+ update_option ( 'feedback_unread_count_v2 ' , $ count );
1491+ return $ count ;
1492+ }
1493+
14731494 /**
14741495 * Handles all contact-form POST submissions
14751496 *
0 commit comments