Don't repeat yourself
I know of the "Don't repeat yourself". Still it's getting messy in some places. The code below contains three blocks of code.
They are similar in some ways and different in others. It doesn't follow the same pattern in all ways.
What it does
It creates an array that I loop out on the frontend.
Question
Is there any better way to do this kind of stuff? Less messy, better structure?
$message_start = '<strong>h2 tags</strong> - ';
$message_end = '<span class="counter">' . $this->count_h2 . '</span>';
if( $this->count_h2 == 0 ) {
$message = 'No tags found. Add some!';
$array['content_editor']['count_h2']['status'] = 2;
} elseif( $this->count_h2 == 1 ) {
$message = 'Some found. Too few!';
$array['content_editor']['count_h2']['status'] = 1;
} else {
$message = 'Many found. Great!';
$array['content_editor']['count_h2']['status'] = 0;
}
$array['content_editor']['count_h2']['message'] = $message_start . $message . $message_end;
$array['content_editor']['count_h2']['count'] = $this->count_h2;
$message_start = '<strong>h3-h6 tags</strong> - ';
$h2_h6 = $this->count_h3 + $this->count_h4 + $this->count_h5 + $this->count_h6;
$counter = ( $h2_h6 == 0 ) ? '' : $h2_h6;
$message_end = '<span class="counter">' . $counter . '</span>';
if( $h2_h6 == 0 ) {
$message = 'No found. Add some!';
$array['content_editor']['count_h3_h6']['status'] = 1;
} else {
$message = 'Found, great!';
$array['content_editor']['count_h3_h6']['status'] = 0;
}
$array['content_editor']['count_h3_h6']['message'] = $message_start . $message . $message_end;
$array['content_editor']['count_h3_h6']['count'] = $this->h2_h6;
$message_start = '<strong>Title keywords</strong> - ';
$counter = ( $this->found_keywords1_post_title == 0 ) ? '' : $this->found_keywords1_post_title;
$message_end = '<span class="counter">' . $counter . '</span>';
if( count( $this->keywords1 ) == 0 ) {
$message = 'No primary added.';
$array['content_editor']['missing_keywords1_post_title']['status'] = 2;
} elseif( $this->found_keywords1_post_title == 0 ) {
$message = 'No primary found.';
$array['content_editor']['missing_keywords1_post_title']['status'] = 2;
} else {
$s = ( $this->found_keywords1_post_title != 1 ) ? 's' : '';
$message = 'Primary found.';
$array['content_editor']['missing_keywords1_post_title']['status'] = 0;
}
$array['content_editor']['missing_keywords1_post_title']['message'] = $message_start . $message . $message_end;
$array['content_editor']['missing_keywords1_post_title']['count'] = $this->found_keywords1_post_title;