handle_bulk_action(); } } /** * Handles the bulk action when there is an action posted */ private function handle_bulk_action() { if ( $bulk_action = $this->determine_bulk_action() ) { $this->run_bulk_action( $bulk_action, $this->posted_issues() ); wp_redirect( filter_input( INPUT_POST, '_wp_http_referer' ) ); exit; } } /** * Determine which bulk action is selected and return that value * * @return string|bool */ private function determine_bulk_action() { // If posted action is the selected one above the table, return that value. if ( ( $action = filter_input( INPUT_POST, 'action' ) ) && $action !== '-1' ) { return $action; } // If posted action is the selected one below the table, return that value. if ( ( $action = filter_input( INPUT_POST, 'action2' ) ) && $action !== '-1' ) { return $action; } return false; } /** * Get the posted issues and return them * * @return array */ private function posted_issues() { if ( $issues = filter_input( INPUT_POST, 'wpseo_crawl_issues', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY ) ) { return $issues; } // Fallback if issues are empty. return array(); } /** * Runs the bulk action * * @param string $bulk_action Action type. * @param array $issues Set of issues to apply to. */ private function run_bulk_action( $bulk_action, $issues ) { switch ( $bulk_action ) { case 'mark_as_fixed' : array_map( array( $this, 'action_mark_as_fixed' ), $issues ); break; } } /** * Marks the issue as fixed * * @param string $issue Issue URL. * * @return string */ private function action_mark_as_fixed( $issue ) { new WPSEO_GSC_Marker( $issue ); return $issue; } }