The first thing I noticed is that your code is missing the curly brackets for the first if-block. It should be:
<?php
$s2member_last_payment_time = get_user_field('s2member_last_payment_time');
if (!empty($s2member_last_payment_time)) {
if(current_user_is("S2member_level2"))
echo 'Next Payment: ' . strtotime(date("M-d-Y", $s2member_last_payment_time) . " +1 month");
elseif (current_user_is("S2member_level3"))
echo 'Next Payment: ' . strtotime(date("M-d-Y", $s2member_last_payment_time) . " +3 month");
elseif (current_user_is("S2member_level4"))
echo 'Next Payment: ' . strtotime(date("M-d-Y", $s2member_last_payment_time) . " +6 month");
elseif (current_user_is("S2member_level5"))
echo 'Next Payment: ' . strtotime(date("M-d-Y", $s2member_last_payment_time) . " +12 month");
}
?>
Any if-blocks that contain more than one line below the conditional must use curly brackets. Your other if-blocks only contain one line (the echo line), so they don’t need the curly brackets.
The second thing I recommend is testing the various assumptions by echo’ing different variables and statements to confirm they contain the data you’re expecting. For example:
<?php
$s2member_last_payment_time = get_user_field('s2member_last_payment_time');
echo 'DEBUG: $s2member_last_payment_time contains ' . $s2member_last_payment_time;
if (!empty($s2member_last_payment_time)) {
if(current_user_is("S2member_level2"))
echo 'Next Payment: ' . strtotime(date("M-d-Y", $s2member_last_payment_time) . " +1 month");
elseif (current_user_is("S2member_level3"))
echo 'Next Payment: ' . strtotime(date("M-d-Y", $s2member_last_payment_time) . " +3 month");
elseif (current_user_is("S2member_level4"))
echo 'Next Payment: ' . strtotime(date("M-d-Y", $s2member_last_payment_time) . " +6 month");
elseif (current_user_is("S2member_level5"))
echo 'Next Payment: ' . strtotime(date("M-d-Y", $s2member_last_payment_time) . " +12 month");
}
?>
Finally, I noticed your usage of current_user_is(“S2member_level2”) is incorrect: it should be s2member_level2, with a lowercase ‘s’, not uppercase.
So the final code I suggest testing is:
<?php
$s2member_last_payment_time = get_user_field('s2member_last_payment_time');
echo 'DEBUG: $s2member_last_payment_time contains ' . $s2member_last_payment_time;
if (!empty($s2member_last_payment_time)) {
if(current_user_is("s2member_level2"))
echo 'Next Payment: ' . strtotime(date("M-d-Y", $s2member_last_payment_time) . " +1 month");
elseif (current_user_is("s2member_level3"))
echo 'Next Payment: ' . strtotime(date("M-d-Y", $s2member_last_payment_time) . " +3 month");
elseif (current_user_is("s2member_level4"))
echo 'Next Payment: ' . strtotime(date("M-d-Y", $s2member_last_payment_time) . " +6 month");
elseif (current_user_is("s2member_level5"))
echo 'Next Payment: ' . strtotime(date("M-d-Y", $s2member_last_payment_time) . " +12 month");
}
?>