What I tried is using a php snippet attached to a button using a shortcode link to the snippet.
This is kind of what I was trying in the php snip:
$user_id = get_current_user_id();
$user = get_current_user();
$user->set_role( 2 );
$now = strtotime('now');
update_user_option($user->id, 's2member_auto_eot_time', $now + (15 * DAY_IN_SECONDS));
/** update_user_option( $user_id, 'show_admin_bar_front', false ); */
I was able to change basic profile fields like name ,company email etc..., could read the member level and eot time,
but I was unable to change the eot or member level fields using this method that did work for changing the basic fields.
It was so discouraging as I did a lot of work to get to that point: running PHP from a button click to do automated profile editing.
I will look into doing the eot comparison, but the whole point is to give access to the page ONLY if they are permitted. Not to let them go to the page and be denied at that point. Putting the code on my content page would require that they can get to the page, which defeats the access control system. If I could do this on the subscription page and actually change the member level temporarily it would be acceptable.
I really want to be able to make a Free Trial button on my subscription page using the method above, so instead of going through the whole paypal ordeal (a very uneasy and misleading process for a new user) it can all be handled internally. I want to provide users direct access to my app page to try before ANY reference of the payment process.