latest stable versions: v150827 (changelog)

Old Forums (READ-ONLY): The community now lives at WP Sharks™. If you have an s2Member® Pro question, please use our new Support System.

Jason (Lead Developer)

Staff Member

My Latest Replies (From Various Topics)

Viewing 25 replies - 1,051 through 1,075 (of 1,909 total)
Author Replies
Author Replies
Posted: Saturday Jan 12th, 2013 at 4:44 am #37095
Staff Member

Thanks for reporting this important issue.

/www/imittcenter.com/wp/wp-content/plugins/s2member-pro/pro-module.php

That is correct. Now, is the s2Member Framework plugin installed and “active” within WordPress? The s2Member Framework MUST be an active plugin for it to pull in the s2Member Pro Add-On files.

If problems persist for either of you, please feel free to submit a Dashboard login and we’ll investigate this for you immediately. See: s2Member® » Private Contact Form

Posted: Saturday Jan 12th, 2013 at 4:33 am #37094
Staff Member

Thanks for the heads up on this thread :-)

@ Dan Stramer

~ Thanks for your patience. I apologize for the delay guys.

But is there a way to remove the S2 prompt alltogether from all downloads?
I already have tens of files and would not like to change all the url’s with the shortcode.
In this project I will not need any JS prompt for the download.

You can set this global JavaScript variable to a value of true, to disable ALL confirmation prompts.

var ws_plugin__s2member_skip_all_file_confirmations = true;

So for instance, you might have an MU plugin that does this for you.

Please create this directory and file:
/wp-content/mu-plugins/s2-hacks.php
(NOTE: these are MUST USE plugins, see: http://codex.wordpress.org/Must_Use_Plugins)
(See also: http://www.s2member.com/kb/hacking-s2member/)

<?php
add_action('wp_head', 'disable_s2_js_confirmations');
function disable_s2_js_confirmations()
	{
		echo '<script type="text/javascript">';
		echo 'var ws_plugin__s2member_skip_all_file_confirmations = true;';
		echo '</script>';
	}

You won’t need to add skip_confirmation onto the end of your links now. You’ve disabled these globally.

Posted: Saturday Jan 12th, 2013 at 4:19 am #37093
Staff Member

Thanks for your inquiry.

~ We appreciate your patience :-)

s2Member Pro certainly makes it possible for you to create and configure all sorts of Coupon Codes. However, I don’t believe there is any feature provided by s2Member Pro that would make this specific request possible for you. s2Member’s Coupon Codes are designed to provide discounts only, and not to award more time or more features to existing customers. I’ll accept this as a feature request :-)

Dashboard -› s2Member® -› Pro Coupon Codes -› Coupon Code Configuration File

Posted: Saturday Jan 12th, 2013 at 3:55 am #37091
Staff Member

Thanks for the heads up on this thread :-)

Regarding Single-Sign-On functionality…

s2Member integrates seamlessly with WordPress, so all of the WordPress framework functions like this one, which I would consider strongly in this type of integration, will work just fine for you. See: http://codex.wordpress.org/Function_Reference/wp_authenticate

So how might you go about this? I would create an MU plugin for WordPress that logs someone in using an encrypted username/password combo, and perhaps call upon that in a hidden image tag, or in some way that allows cookies to be set for the WordPress-driven portion of your site, upon logging into another area of your site, which maybe is NOT driven by WordPress.

Please create this directory and file:
/wp-content/mu-plugins/s2-hacks.php
(NOTE: these are MUST USE plugins, see: http://codex.wordpress.org/Must_Use_Plugins)
(See also: http://www.s2member.com/kb/hacking-s2member/)

<?php
add_action('init', 'single_sign_on_handler');
function single_sign_on_handler()
{
	if(!empty($_GET&#91;'ss_username'&#93;) && !empty($_GET&#91;'ss_password'&#93;))
		{
			wp_authenticate($_GET&#91;'ss_username'&#93;, $_GET&#91;'ss_password'&#93;);
			// The user is now logged-in, if the values were correct.
			
			// Let's display an image.
			header('Content-Type: image/gif');
			echo base64_decode('R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7');
		}
}
&#91;/hilite&#93;

Now... you might call upon this single-sign-on handler in your other applications,
by displaying a hidden image tag, that looks something like this.

&#91;hilite pre_code&#93;
<img src="http://example.com/wordpress/?ss_username=johnsmith&ss_password=password" width="1" height="1" />

Of course, this is a crude example. If I were setting this up, I would be ABSOLUTELY sure that the values of ss_username and ss_password were encrypted before displaying them in an IMG tag. You might also want to build in an encrypted hash, to ensure the data is coming from your own application, and is not a hacking attempt.

Posted: Saturday Jan 12th, 2013 at 3:41 am #37090
Staff Member

Thanks for the heads up on this thread :-)

@ Epix Media

You can use this s2Member global variable to determine
the number of Membership Levels that are currently configured for any given site.

$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]

That being said, you could simply design your REGEX pattern to consider ANY numerical value, so that it would pickup on any meta key that matches what you’re looking for, regardless of Membership Level. So instead of writing s2member_level16, you would write s2member_level[0-9]+, which would work for s2member_level0, or even s2member_level239822423, if god forbid someone ever did that! :-)

See: http://www.regular-expressions.info/charclass.html

Posted: Saturday Jan 12th, 2013 at 3:26 am #37089
Staff Member

Thanks for the heads up on this thread :-)

I just wanted to clarify something here…

You inspired me. So when writing the welcome page you need to include an OR in your conditional for the admin to see it.

Example: [s2If current_user_is(s2member_level0) OR current_user_is(administrator)]

This is correct, and it IS required in this case. Simply because the conditional that you’re using is NOT testing for Capabilities, it’s testing for a specific Role. In a case such as this, you WILL (as you’ve already done) need your conditional to consider an Administrator role as well. Or, perhaps better, would be to test for Administrative-like Capabilities so you’re covering Editors, Authors, Contributors as well.

[s2If current_user_is(s2member_level0) OR current_user_can(edit_posts)]

Again, this additional consideration for Administrative Users is only necessary when you’re testing for a specific Role using current_user_is(). If you’re testing with current_user_can(), it’s NOT necessary, because an Administrator CAN do anything a User/Member can, and then some, of course.

Posted: Saturday Jan 12th, 2013 at 3:11 am #37088
Staff Member

Thanks for the heads up on this thread :-)

@ jimmy p

I can confirm this is not a bug in a default WordPress/s2Member installation. That being said, here are some things that come to mind, so you might give these a look and report back please :-)

  • Have you added any custom code to this page using s2Member? For instance, under: Dashboard -› s2Member® -› General Options -› Login Registration Design, have you added anything in that panel which might include a double quote, or another special character that might break valid HTML code? This could explain why that link is shining through. Perhaps there are characters being injected from your configuration that are causing a disruption?
  • If you have don’t have any other plugins running (which you mentioned), and you’re using the default theme, try disabling s2Member. Does that fix the issue? If so, please send us a Dashboard login and we’ll get this resolved for you. See: s2Member® » Private Contact Form
Posted: Saturday Jan 12th, 2013 at 3:03 am #37087
Staff Member

Thanks for the heads up on this thread :-)

When my members select a page that has been restricted to allow high level member access, they get redirected to the subscriber registration page. How do I change the redirect?

I realize that you’ve already resolved this. For the benefit of other readers, this redirection lands on your Membership Options Page, as configured for s2Member. So changing the redirection simply requires you to change your configuration of s2Member, by pointing to a different Page to be used as your Membership Options Page.

Dashboard -› s2Member® -› General Options -› Membership Options Page

If… on your Membership Options Page, you’d like to get fancy about what you say to people under certain scenarios, I recommend that you explore s2Member’s MOP Vars (Membership Options Page Variables), which are designed specifically to give you advanced control over what happens when someone is redirected to this page, as a result of being denied access to some type of content on your site.

See: Dashboard -› s2Member® -› API / Scripting -› Membership Options Page Variables (MOP Vars)

Posted: Saturday Jan 12th, 2013 at 2:58 am #37086
Staff Member

Thanks for the heads up on this thread :-)

@ Millie Williams

We REALLY appreciate the consideration on this. Just thought I should mention that.

We generally do not take any consultation and/or custom coding projects because it tends to distract us from our main objective, which is to provide good support and product updates for s2Member itself. We’re currently working very hard to improve s2Member overall, so that less consultation and/or custom coding will be required to meet the needs of certain business models that might push the limits of the existing software.

As Cristian mentioned, Elance is a great place to look for professionals that can help with things like this. Guru.com, or jobs.wordpress.net are also great resources of course.

That being said, if by consultation, you mean “Pre-Sales Questions”, this forum would be the appropriate place for that. If there are questions that you have of us, about what s2Member can or cannot accomplish for you, please let us know. We’re all ears :-) And we’ll do the best we can to answer any questions that you have, or offer some advice when applicable.

Posted: Saturday Jan 12th, 2013 at 2:31 am #37085
Staff Member

Regarding Free Registration Forms and PayPal.
This was updated in the latest release, so it’s not an issue any longer.

See: http://www.s2member.com/changelog/#s2-changes-v121213

Changelog Excerpt…
(s2Member Pro) Bug Fix. Free Registration Pro Forms submitted without having payment gateway API credentials configured within s2Member® resulted in an on-site error message when there should NOT be one (because a site owner is dealing with Free Registration only in this scenario). Fixed in this release.
Posted: Saturday Jan 12th, 2013 at 1:50 am #37084
Staff Member
NOTE: If you’re running WordPress/s2Member in concert with MANY other plugins (or perhaps an elaborate theme), it’s always possible that you may exceed the default WordPress memory limit. The more plugins you run, the more you run the risk of consuming more and more RAM with your site (as an application) overall.

Thus, the default WordPress memory limit may need to be increased to support a more complex site. This is a very common thing, and there is an article about it at WordPress.org with instructions on how to accomplish this.

Please let us know if problems persist :-)

Posted: Saturday Jan 12th, 2013 at 1:39 am #37083
Staff Member
There is also a VERY helpful FAQ related to translations here.
Pre Sale FAQs » Can s2Member® be translated into other languages?
Posted: Saturday Jan 12th, 2013 at 1:25 am #37082
Staff Member
There is some additional information here regarding custom Pro Form templates.
See: http://www.s2member.com/faqs/#s2-faqs-pro-form-template-mods

Custom Pro Form templates will support not only custom HTML/CSS, but you can also place any custom PHP code that you need to process, right into your custom template file :-)

Posted: Saturday Jan 12th, 2013 at 1:20 am #37081
Staff Member

Administration Over SSL

There is a great article at WordPress.org that covers this in detail.
See: http://codex.wordpress.org/Administration_Over_SSL

As for the type of SSL certificate. Any certificate signed by a trusted authority should do. Many people use GoDaddy. Please see: http://www.godaddy.com/ssl/ssl-certificates.aspx

Posted: Saturday Jan 12th, 2013 at 1:01 am #37079
Staff Member

Thanks for the heads up on this thread.

To clarify what Bruce is talking about here…

We researched a bug report related to IE9 several weeks ago, which we ultimately tracked back to the WordPress Editor, and WordPress content filters. While the issue causing this problem in IE9, can be caused in part by the wpautop filter, it’s really NOT the true problem. The wpautop filter is just doing it’s job.

The real issue is related to an invalid HTML nesting order, and how IE9 in particular will respond when your HTML tags are out of balance (e.g. when you have an invalid HTML document).

So what is an invalid HTML nesting order (aka: unbalanced tags)?

For example, if you look at the source code for your site, you might discover something like this.

<div class="content">
	</p>
</div>

See how there is a matching open/close tag for the div element, but there is no matching open tag for the p element? That’s an invalid nesting order. Or, some might refer to this as unbalanced HTML code.

IE9 (more so, than other browsers) attempts to correct unbalanced tags in ways that can lead to some problems in JavaScript, which will effectively break some functionality with elements on your page, such as an s2Member Pro Form. You can’t really blame IE9 for this either, because really, your site contains unbalanced tags when this occurs, and that’s what really needs to be fixed. This problem just shows up more in IE9, because… well Microsoft. Need I say more :-)

Anyway, here are some things that can cause unbalanced tags.

  • If you’re working in the WordPress Visual Editor and you’re relying on WordPress to write your HTML code for you, this is always possible, just given the nature of a WYSIWYG editor like this. This is why WordPress comes with an option that you can enable in your Dashboard, to help prevent this on your site.
  • If your theme itself has unbalanced HTML, this could be an issue. If correcting your WordPress Posts/Pages to ensure they do NOT contain unbalanced HTML tags, does NOT fix the issue for you; then look elsewhere. Does your theme contain an extra closing </div> tag somewhere by mistake? It’s always a good idea to run your site through the W3C Markup Validation Service, to ensure that your site (or specific pages on your site) are coded properly. See: http://validator.w3.org/
  • While the wpautop filter in WordPress seems to work just fine most of time, some site owners DO experience subtle issues with this filter, and I have personally seen it cause problems for a few folks here and there. If all else fails, you can publish a WordPress Post/Page with that filter disabled. There is a great plugin called Raw HTML that allows you do this on a per-Post/Page basis if you like.
In conclusion, this is NOT a bug with s2Member specifically (not that I’m aware of at this time). It’s also NOT a bug with WordPress (that I’m aware of at this time). It’s really just caused by unbalanced HTML tags, and that can happen for any number of reasons.

Always run your site through the W3C Markup Validation Service, to ensure that your site (or specific pages on your site) are coded properly.

I can’t really provide a one-size fits all solution here. The solution to this problem is to balance your HTML tags. Depending on what’s causing unbalanced tags on your installation, the solution might be slightly different from one case to the next.

Posted: Friday Jan 11th, 2013 at 10:05 am #37006
Staff Member

Thanks for the follow-up :-)

I’m glad to hear this is working for you now. I appreciate you writing back.

I’m sorry to hear that you’ve had so much trouble with this. The next time something like this comes up, please don’t hesitate to ask us for help. We’ll be happy to assist you with s2Member. Also, we’ll continue to work on improving s2Member in this respect. We have to put security first, but there is still room for improvement, we recognize that. Byte-range requests from mobile devices is something we can work to improve on.

Posted: Friday Jan 11th, 2013 at 9:45 am #37002
Staff Member

Thanks for the heads up on this thread.

@Chris Paterson

Does this plugin support paid-for events?
Where members and non-members can sign up at different rates?
If not is there a plugin that will work with s2member to achieve this?

Hi Chris. If you would please, can you provide us with a bit more detail about what you’re trying to accomplish? s2Member can be quite flexible, and I think if we had a better idea of what your business model is, we can help you achieve it with s2Member. I’m all ears :-)

For instance, you wrote “Does this plugin support paid-for events?”.

What exactly is a Paid-For Event?

Thanks!

Posted: Friday Jan 11th, 2013 at 8:33 am #36973
Staff Member

Thanks for your patience.

OK. This expiration time is something s2Member implements in conjunction with Amazon S3. s2Member tells S3 to expire the link after 30 seconds automatically, for improved security. This has been optimized for web browsers and not for byte range requests where you have repeated calls against the S3 URL. In most cases, the download begins and ends after a single request. So 30 seconds is more than enough time for a customer to connect to the file and begin downloading the file. It won’t matter how long it takes them to download the file, as long as they connect within 30 seconds.

Now, in cases where you have devices that are attempting to perform byte-range requests, this can become problematic, obviously. 30 seconds after the initial connection, the underlying resource expires. So future attempts (i.e. additional byte-range requests) would require a new File Download Link.

There are two easy ways to avoid this issue.

1. s2Member exposes a plugin filter that allows you to modify the default expiration time of 30 seconds. So if you’d like to extend this out longer, in support of devices that make byte-range requests, you can certainly do that.

Please create this directory and file:
/wp-content/mu-plugins/s2-hacks.php

<?php
add_filter('ws_plugin__s2member_amazon_s3_file_expires_time', 'my_custom_expiration_time');
function my_custom_expiration_time(){ return '2 hours'; }
?>

(NOTE: these are MUST USE plugins, see: http://codex.wordpress.org/Must_Use_Plugins)
(See also: http://www.s2member.com/kb/hacking-s2member/)

You can specify any length of time you like. Please use a string that is compatible with PHP’s strtotime() function. Ex: 2 hours, 2 weeks, 10 days, are all valid periods of time.


2. OR (HIGHLY RECOMMENDED). When you’re attempting to reach a large audience and support multiple devices, we recommend integration with BOTH Amazon S3 and with CloudFront. This is a non-issue with CloudFront integration. I think you’ll find that s2Member works much more reliably with CloudFront, and your customers are going to get content delivered from edge locations as well, making everything more enjoyable for you and your customers. See: Dashboard -› s2Member® -› Download Options -› Amazon® S3/CloudFront CDN Storage

s2Member’s CloudFront integration is designed specifically to support byte-range requests through the RTMP protocol, which will support true media streams (i.e. you can SEEK through media files). The default expiration time on CloudFront integration is 24 hours. If you want to extend that out farther, there is a filter for that as well.

Please create this directory and file:
/wp-content/mu-plugins/s2-hacks.php

<?php
add_filter('ws_plugin__s2member_amazon_cf_file_expires_time', 'my_custom_expiration_time');
function my_custom_expiration_time(){ return '36 hours'; }
?>

(NOTE: these are MUST USE plugins, see: http://codex.wordpress.org/Must_Use_Plugins)
(See also: http://www.s2member.com/kb/hacking-s2member/)

You can specify any length of time you like. Please use a string that is compatible with PHP’s strtotime() function. Ex: 24 hours, 36 hours, 2 weeks, are all valid periods of time.

Please let us know if problems persist :-)

Posted: Friday Jan 11th, 2013 at 8:10 am #36968
Staff Member

Thanks for the heads up on this thread.

~ I’m reviewing it now and I’ll post a reply shortly for you :-)
Posted: Friday Jan 11th, 2013 at 2:30 am #36919
Staff Member

@Tom

Thanks for the follow-up :-)

Please note that logging MUST be enabled for you to have log files. You can go to:
Dashboard -› s2Member® -› PayPal® Options -› Account Details -› Logging
and turn it on there please.

Wait a couple days, then send us the log files privately via this contact form.
s2Member® » Private Contact Form
/wp-content/plugins/s2member-logs/… sends us all files in this folder please.

Posted: Friday Jan 11th, 2013 at 2:12 am #36918
Staff Member

Thanks for the follow-up :-)

No changes in this aspect in the last few releases :-) We’ll keep our eyes open though. Perhaps one day we’ll figure out why this happened and then magically went way. Thanks again for reporting it!

Posted: Friday Jan 11th, 2013 at 1:32 am #36915
Staff Member

Thanks for the follow-up :-)

Ok, so I sorted out the Bitly shortener.

Awesome!

So now the only issue is that everything is showing up as expired when I try to create a link in the “Members registration access links”. I am copying and pasting the subscriber id from either Paypal or within the S2member plugin “browse member” section. Maybe I am not getting what a unique ID is?

Great question. I will try to clarify that a bit further. A new unique Paid Subscr. ID, is one which has NOT been used by a customer on your site yet. If you grab the Paid Subscr. ID from an existing customer’s account, that’s not going to work in a Registration Access Link, because s2Member has already allowed this customer to register in the past, with the same Paid Subscr. ID (e.g. they’re already a User of the site).

Normally you would only generate Registration Access Links manually, in special circumstances. For instance, if your site was experiencing down time, and a customer never completed registration; or if they never got the email from your site – something like that. In cases like that, they’ve NOT registered yet. So, you could simply pull the Paid Subscr. ID from PayPal (i.e. a transaction ID, or the subscription ID), and use that when you create a Registration Access Link for the customer manually.

In other cases, if you just want to create Registration Access Links manually for whatever reason, you will need to generate a new unique Paid Subscr. ID for each customer. If they paid you through PayPal, or another payment gateway, you could use the transaction ID or subscription ID supplied by the payment gateway. Or you can just make one up if you like. A Unix Timestamp would work for this. Whatever you prefer really, as long as it’s unique (i.e. has NOT been used by a customer registering for access to your site yet).

Please let us know if problems persist :-)

Posted: Thursday Jan 10th, 2013 at 10:59 pm #36911
Staff Member
Screencast received. We will review shortly.
Posted: Thursday Jan 10th, 2013 at 10:56 pm #36910
Staff Member

@Jason Ward

You said…

Which both give expired errors.

That sounds like it could be related to the underlying link itself (i.e. the URL before it is shortened). If the link you are generating has already been used, or is expired, it won’t matter what shortening service you’re using, because the underlying URL on your site will still lead to an expired link warning, issued by s2Member.

Registration Access Links automatically expire after 2 days.

Another thing to be aware of, is the Paid Subscr. ID field when you generate a Registration Access Link manually from the Dashboard. If you generate a Registration Access Link with a Paid Subscr. ID value that is NOT a new unique value, the link will issue an expiration error, regardless of which shortener is in use.

Please let us know if problems persist :-)

Posted: Thursday Jan 10th, 2013 at 4:50 pm #36889
Staff Member

Thanks for reporting this important issue.

I just tested this and it seems to be working OK on my end. I tested tinyURL, Google, and also a custom shortener using Bit.ly. These all seem to be working from my end, running the latest release of WP/s2Member.

Did you also swap the username in the Bit.ly URL? You have to swap out “demo” with your username too.

login=demo&apiKey=key&format=txt&longUrl=%%s2_long_url%%

NOTE: If Bit.ly is down for any reason, s2Member will always default to tinyURL or Google, even if you have a custom shortener defined. s2Member will try your custom shortener first. However, if it fails, it will go back and use tinyURL or Google.

Please let us know if problems persist :-)

Viewing 25 replies - 1,051 through 1,075 (of 1,909 total)

Old Forums (READ-ONLY): The community now lives at WP Sharks™. If you have an s2Member® Pro question, please use our new Support System.

Contacting s2Member: Please use our Support Center for bug reports, pre-sale questions & technical assistance.