Page 1 of 1

dripping content problem

PostPosted: August 23rd, 2010, 4:36 am
by tribsel
Hi,

I (already) know that there are some dripping content features, but there are several problems with it.
My problem is this:

Imagine you would like to run a 4 week long program, with gradual context delivery - for example 1 new part delivered every other day. No problem.

Now, imagine you want to run several such programs at once. Your members can start either one, two or all of them (I don't care, but this SHOULD depend on membership level)

BUT

I need to be able to deliver each part in specified intervals. Dripping content based on member's registration date does not help! I dont care when they registered. I need to set time intervals based on when they STARTED specific program (and it can be included free in their membership, so its not possible to connect this to date when they paid for specific program).

Is this possible to achieve with s2 member?

thanks! :)
Tribsel

Re: dripping content problem

PostPosted: August 27th, 2010, 1:56 pm
by Jason Caldwell
Hi Tribsel. Thanks for the great suggestions.
I need to be able to deliver each part in specified intervals. Dripping content based on member's registration date does not help! I dont care when they registered. I need to set time intervals based on when they STARTED specific program (and it can be included free in their membership, so its not possible to connect this to date when they paid for specific program).

Is this possible to achieve with s2 member?

Unfortunately, no. s2Member's "Content Dripping" is lacking this advanced functionality in the latest release ( v3.2.2 ). I realize there is much room for improvement in this area. I'm adding this to our @TODO list for you.

Until then, the closest I can get you is the "s2member_last_payment_time".
Code: Select all
$timestamp = get_user_option("s2member_last_payment_time");

This will ONLY be available for paying Members, and ONLY if you've used a "Subscription" Button. It won't work for Buy Now transactions. s2Member stores the "last_payment_time" on Subscriptions, including the first initial payment. So this value will always indicate a "timestamp" of the last payment. Not ideal, but that's the best I can do at the moment.

If you would, please detail for me what the "ideal" Content Dripping solution would be for you. That will help us greatly whenever we improve upon this in a future release. Would there be a separate workstation for this, or should we just integrate additional tracking variables for easy access?

Re: dripping content problem

PostPosted: August 27th, 2010, 2:01 pm
by Jason Caldwell
Here is one other solution.

s2Member supports "Custom" variables in your Button Code.
Code: Select all
[s2Member-PayPal-Button ... custom="www.example.com|TIMESTAMP" /]

Code: Select all
[s2Member-PayPal-Button ... custom="www.example.com|<?php echo time(); ?>" /]

This would give you the original date of the transaction if you needed it.
If a Member signs up with a Button Code that contains the TIMESTAMP above,
here is how you would access that information in WordPress®.
Code: Select all
$custom get_user_option("s2member_custom");
list(
$domain$timestamp) = preg_split("/\|/"$custom);
echo 
$timestamp

Re: dripping content problem

PostPosted: August 29th, 2010, 9:33 pm
by beppodb
The most recent solution seems like what I want. I hope this is built in to future versions of the plugin:

Essentially, I want to know when the user registered at their current level.

So initially, they register at level 0 unpaid, and the field stores that timestamp. Then, at some point, they upgrade to level 1, and the field stores the new timestamp. I can use that timestamp to enforce content restrictions.

Re: dripping content problem

PostPosted: August 29th, 2010, 9:43 pm
by beppodb
Oh, I'd also like a way to edit this easily after-the-fact. So, if a user registers in November, but I want to edit it so it appears they registered in October, I'd like control over that.

Re: dripping content problem

PostPosted: August 30th, 2010, 1:21 pm
by Jason Caldwell
beppodb wrote:Oh, I'd also like a way to edit this easily after-the-fact. So, if a user registers in November, but I want to edit it so it appears they registered in October, I'd like control over that.

Gotchya. Using the TIMESTAMP solution that I mentioned, you can edit this inside WordPress®.

From your Dashboard, go to Users -> and just click Edit next to a specific User.
You can change the TIMESTAMP in the User Editing panel, under the "Custom" field.
( you'll want to have s2Member v3.2.3+ installed for this )

Re: dripping content problem

PostPosted: September 21st, 2010, 12:40 pm
by tribsel
Hi Jason,

thanks for adding this to @todo, any idea when could this ready? ;)
timestamp with buy button is probably a solution for one course with several lessons, thanks for that.
Is there a way how to buy a "course" for 0 (free) and use it just to get a timestamp? In other words, is there a way how to get START button, not buy button ;)

Re: dripping content problem

PostPosted: October 27th, 2010, 12:11 pm
by tech-mentor
I want to provide a "Remaining Days" before renewing for my paying customers who use a yearly subscription with PayPal. I am using the "s2member_last_payment_time" field to calculate how much time they have left before PayPal will renew their membership automatically.

My question is: Will PayPal notify the s2Member plugin on my website when the recurring payment is applied and is the "s2member_last_payment_time" field will be properly updated in my database for that user with the new payment date?

Thanks for your help!

Re: dripping content problem

PostPosted: October 27th, 2010, 12:47 pm
by KirkWard
In reading the response you provide in the post above (viewtopic.php?f=4&t=602#p2620), my question is, what does this do for tracking content released at the lower levels? Is it possible to pull that information from somewhere and insert it into a modification button?

Thanks

Re: dripping content problem

PostPosted: October 27th, 2010, 10:47 pm
by Jason Caldwell
Thanks for the great questions.
tribsel wrote:Hi Jason,

thanks for adding this to @todo, any idea when could this ready? ;)
timestamp with buy button is probably a solution for one course with several lessons, thanks for that.
Is there a way how to buy a "course" for 0 (free) and use it just to get a timestamp? In other words, is there a way how to get START button, not buy button ;)

Yes, you can enable Open Registration with s2Member, and get a direct link to your Free Registration Form. Check your Dashboard under: s2Member -> General Options -> Open Registration. Or, on a Multisite installation, this will be under: s2Member -> Multisite (Config) -> Registration Configuration.

There is no way to pipe delimit "custom" variables for a Free Registration, because there is no PayPal Button required for this, just a direct link to the registration form is all you need. That being said, every Member, regardless of Level, will ALWAYS have a registration time associated with their account. So you could use this s2Member API Constant to accomplish what you need universally:

S2MEMBER_CURRENT_USER_REGISTRATION_TIME
Code: Select all
<?php echo S2MEMBER_CURRENT_USER_REGISTRATION_TIME; ?>
This may output something like: 1270537981
( this is a Unix timestamp, which is based on seconds )

---- s2member Shortcode Equivalent ----
[s2Get constant="S2MEMBER_CURRENT_USER_REGISTRATION_TIME" /]
Further details are provided in your Dashboard under: s2Member -> API Scripting -> API Constants.

Re: dripping content problem

PostPosted: October 27th, 2010, 11:03 pm
by Jason Caldwell
Thanks for the great question.
tech-mentor wrote:I want to provide a "Remaining Days" before renewing for my paying customers who use a yearly subscription with PayPal. I am using the "s2member_last_payment_time" field to calculate how much time they have left before PayPal will renew their membership automatically.

My question is: Will PayPal notify the s2Member plugin on my website when the recurring payment is applied and is the "s2member_last_payment_time" field will be properly updated in my database for that user with the new payment date?

Thanks for your help!
Yes, absolutely.
Code: Select all
<?php echo get_user_option("s2member_last_payment_time"); ?>
will always return the "last" payment time ( a Unix timestamp ), as recorded by s2Member via IPN messages received throughout the lifetime of the Subscription.

Re: dripping content problem

PostPosted: October 27th, 2010, 11:55 pm
by Jason Caldwell
KirkWard wrote:In reading the response you provide in the post above (viewtopic.php?f=4&t=602#p2620), my question is, what does this do for tracking content released at the lower levels? Is it possible to pull that information from somewhere and insert it into a modification button?

Thanks

See: viewtopic.php?f=4&t=1110#p4351

Re: dripping content problem

PostPosted: November 16th, 2010, 6:40 pm
by tribsel
Hi Jason,

thanks for your reply.... there is a slight problem that Id like to allow my paying members to get a custom capability for free (after they click on a link or button) and I need to know when this happened, so I could drip content to them based on this time.

So my question is: is there an easy way how to assign custom capability to already registered user after he clicks on some kind of link without buying anything and to store timestamp of this action?
thanks!

Re: dripping content problem

PostPosted: December 29th, 2010, 2:15 pm
by Cristián Lávaque
Jason Caldwell wrote:Here is one other solution.

s2Member supports "Custom" variables in your Button Code.
Code: Select all
[s2Member-PayPal-Button ... custom="www.example.com|TIMESTAMP" /]

Code: Select all
[s2Member-PayPal-Button ... custom="www.example.com|<?php echo time(); ?>" /]

This would give you the original date of the transaction if you needed it.
If a Member signs up with a Button Code that contains the TIMESTAMP above,
here is how you would access that information in WordPress®.
Code: Select all
$custom = get_user_option("s2member_custom");
list(
$domain, $timestamp) = preg_split("/\|/", $custom);
echo $timestamp; 


So if the user has several ccaps, I could create an array where the key is the ccap and the value is the time? Is the output of get_user_option("s2member_custom") an array or a string? For a single ccap or all of them?

Also, this seems fine to know the time of the ccap, but am not sure how I'd use it to check if he can access it, like in current_user_can("access_s2member_ccap_videos"). I feel I'll have to create custom capabilities in pairs, where one is the ccap and the other is the ccpatime, like: videos,videos20101210. Then I'd use the former to check the access with current_user_can() and the latter to know the time using get_user_option(). Or am I complicating it?

I would think that in order to have the dripping feature be versatile, then a time should be stored by s2Member with any factor that would determine content access. That way, every level or custom capability, for example, would each have its time saved to consult easily when to drip content.

Re: dripping content problem

PostPosted: February 7th, 2011, 9:53 am
by nhsatomom
Jason Caldwell wrote:Using the TIMESTAMP solution that I mentioned, you can edit this inside WordPress®.

From your Dashboard, go to Users -> and just click Edit next to a specific User.
You can change the TIMESTAMP in the User Editing panel, under the "Custom" field.
( you'll want to have s2Member v3.2.3+ installed for this )


I'm running the current version of s2Member but can't figure out how to adjust someone's timestamp using the above instructions. It sounds like I can put something in the Custom Value field -- but what do I put in there?

I'd like to be able to adjust the starting date for a member.

Thank you!