Cristián Lávaque

Forum Replies Created

Viewing 100 posts - 1 through 100 (of 113 total)
  • Author
    Posts
  • in reply to: Different protection for different levels? #707

    How would i get everything from that embeded shortcode to link on an image?

    What embeded shortcode? Could you paste it here inside code tags?

    in reply to: Different protection for different levels? #704

    A linked image? Do you mean this?

    <a href="http://example.com/image.jpg" target="_blank"><img src="http://example.com/image.jpg" alt="Image" /></a>

    in reply to: Different protection for different levels? #702

    Right, with a condition. If you use the s2If shortcode, then you’d wrap the s2File shortcode with it. You can’t use a shortcode inside of another one, so if you want to change the s2File attribute only, then you’d use a PHP condition there.

    in reply to: Different protection for different levels? #698

    to replace my current html code that is :

    I don’t see the image you posted there, the link seems broken.

    Do you want to have those variables in the URL instead of a shortcode? Not sure if that’s what you’re asking, could you explain a bit more? Thanks!

    in reply to: Subscription modification #693

    That’s what he said for PayPal buttons. Read what he said for the pro-forms, which are what you’re using.

    You may want to ask him directly if the behavior changed or if that explanation is still valid.

    in reply to: Different protection for different levels? #692

    In the URL (in the browser’s address bar) after the redirection to the MOP page.

    Make sure they’re enabled. WP Admin -> s2Member -> General -> Membership Options Page -> Enable MOP Vars

    See also: WP Admin -> s2Member -> Scripting -> Membership Options Page Variables

    Nice! Thanks for the update. 🙂

    in reply to: Subscription modification #688

    Yes, you’d need a bit of PHP to calculate each case, though. The upgrade would have an initial term without charge (i.e. trial) for the days left until the date you want the new charge to be made.

    These may help:
    http://www.primothemes.com/forums/viewtopic.php?f=4&t=908#p4375
    http://www.primothemes.com/forums/viewtopic.php?f=4&t=2878&p=33315#p9025
    https://www.s2member.com/forums/topic/recurring-prorating-of-billing/#post-7410

    in reply to: Different protection for different levels? #687

    The MOP redirection means the user didn’t have the required permission. What do the MOP vars say about the restriction applied in that case?

    in reply to: Subscription modification #683

    The asterisk in the level attribute is used when selling only the capability, which can only be done with buy-now, not a subscription.

    What do you mean by increasing the next payment? You mean in a subscription? Only when it’s a new subscription, you can’t modify an existing one. And you can only set the first payment (initial) or all the following payments to be different (recurring), but not only the 2nd or 3rd payment (these will be the same as all the recurring payments, they can’t be different).

    Yes, using 1 in the shortcode, will sell a new subscription, ending an existing one. The user can’t have multiple subscriptions.

    Nevermind, I see you don’t have a redirection over at wp-login.php… (I don’t know why I remember you having one, maybe it was only suggested by someone and I was left with the impression you did that.)

    Could you explain what the undesired behavior is? I’m not sure I understand. At the /login page with the login widget, I see the link to recover the password, click on it and get taken to the proper form for it.

    You’d need to review the hack you used to customize wp-login.php to /login, so it doesn’t happen on password recovery, only login or registration.

    in reply to: Different protection for different levels? #680

    There’s an attribute for the download link/shortcode that lets you not count it. I guess you’d need to use a conditional that adds that attribute when the level is 1. See: WP Admin -> s2Member -> Download Options -> Shortcode Attributes -> count_against_user

    in reply to: Subscription modification #669

    Yeah, it’s odd. I don’t see that form being a buy-now, so I’m not sure why you’d get that error.

    Are you positive that that’s the shortcode that output that error? If so, could you try reproducing it in a clean test installation?

    Remember having logging enabled and using a non-admin account for the test purchase.

    in reply to: Download restriction question #665

    It doesn’t matter if you’re not conditioning content to that level, just use the higher level for those that get the unlimited downloads access. Still protect with the ccap, but the downloads would be unlimited.

    I know that’s not as clean and straightforward as it should be, but you’re pushing the limits of the current s2. The original restriction was only levels, and everything worked with them, but then ccaps were added, only not fully integrated with everything.

    in reply to: Download restriction question #663

    Yeah, it’s scary every time a big change like that is done… I’d think about it carefully too, and test in a copy of the site several times before going ahead and trying the live site, only after backing it up first.

    When integrating with S3, I guess it was assumed that every protected file would be there and the local storage would be the exception. Why did you decide to integrate with S3 and why would you not use it for all protected files?

    About removing the count for certain users, you can probably give them a higher level than the regular user, and remove download limits to that level. Would that work?

    in reply to: Download restriction question #659

    Considering that the same download might or might not need to be tracked the same way (maybe by ccap instead of by level) is there a way to limit based on ccaps INSTEAD of level?

    Tracking limits are based on level. But well, if all paid users have the same level, then that limit would apply. I’m pretty sure that files protected with a ccap still count towards the limit, but you can test it (remember to use a regular user account).

    in reply to: Download restriction question #658

    Remember that if you’re using the S3 integration now, then the local s2member-files directory won’t be used unless you specify it using the storage attribute. WP Admin -> s2Member -> Download -> Shortcode Attributes -> storage

    So you may want to have a copy of your full s2member-files directory contents in the S3 bucket for s2Member to avoid any broken links.

    If you want to have an all-access, it’s not a problem when using files protected with levels, since giving a higher level will include access to the lower ones. WP Admin -> s2Member -> Download -> Capability & Level files

    There isn’t an equivalent for ccaps, though. If a file is protected with a ccap, then the user will need that specific ccap to access it. To work around that, you’d either need a hack, or make another copy of the file for that higher access ccap.

    in reply to: Download restriction question #655

    Did you watch this video?

    in reply to: Download restriction question #654

    If you set up the s2 integration with AWS, then by default s2 will look for the protected files in the Amazon bucket you set, not the /plugins/s2member-files/ directory. You can use both, though, AWS will be the default, but you can specify the local directory in the link. WP Admin -> s2Member -> Download -> Shortcode Attributes -> storage

    Work with that a bit to figure it out, and see if you have new questions then. 🙂

    in reply to: Free registration with ccaps #639

    You can disable open registration, so the default registration form won’t be available, and in the default login form’s footer add a link to your page with the registration pro-form (the pro-form doesn’t obey the open registration setting).

    WP Admin -> s2Member -> General -> Open Registration
    WP Admin -> s2Member -> General -> Login/Registration Design -> Footer

    in reply to: Can you use conditional based on a referring URL? #633

    🙂

    Well, when you send a variable to the next page, it can be either through the URL ($_GET) or a submitted form ($_POST). See:

    http://php.net/manual/en/reserved.variables.get.php
    http://php.net/manual/en/reserved.variables.post.php
    http://php.net/manual/en/reserved.variables.request.php

    I hope that helps!

    in reply to: Can you use conditional based on a referring URL? #631

    You could with some PHP. WP Admin -> s2Member -> Restrictions -> Shortcode Conditionals -> PHP

    E.g.

    [s2If php="isset($_REQUEST['answer']) && $_REQUEST['answer'] == '1'"]
    You answered "1".
    [/s2If]
    
    in reply to: Free registration with ccaps #629

    🙂

    in reply to: Free registration with ccaps #627

    Do you mean for the login redirection? I mentioned $_SERVER['HTTP_REFERER'] earlier in the conversation, is it what you want?

    <?php echo s2member_pro_login_widget(array("title" => "", "signup_url" => "http://scrapbookcampus.com/register-to-the-campus", "login_redirect" => $_SERVER['HTTP_REFERER'])); ?>

    in reply to: Free registration with ccaps #624

    You can also set the signup URL.

    <?php echo s2member_pro_login_widget(array("title" => "", "signup_url" => "http://scrapbookcampus.com/register-to-the-campus", "login_redirect" => "http://scrapbookcampus.com/register-to-the-campus")); ?>

    From the docs: http://www.s2member.com/codex/stable/s2member/api_functions/package-functions/#src_doc_s2member_pro_login_widget()

    “signup_url” => “%%automatic%%” Full Signup URL, or use %%automatic%% for the Membership Options Page. If you leave this blank, it will not be shown.

    in reply to: Free registration with ccaps #622

    Right after I posted my previous reply, I edited it because there was something missing. Perhaps you got the code right before I fixed it. Please make sure you copied the latest version. 🙂

    in reply to: Free registration with ccaps #618

    Try this 🙂

    <?php echo s2member_pro_login_widget(array("title" => "", "login_redirect" => "http://scrapbookcampus.com/register-to-the-campus")); ?>

    in reply to: Free registration with ccaps #615

    I did a couple test registrations, and using the link to “register” at the top of the page, I had the registration pro-form in a new tab, after submitting it got automatically loggged into the new account, and was shown a message telling me that the previous page was still open in my browser and that I could now reload it.

    I also see that the PHP code is working in the test page now.

    i am still using the default LOGIN page. Can i have that on my “registration” page? Is there a shortcode or something?

    There’s the s2Member Pro login widget: WP Admin -> s2Member -> Scripting -> Pro Login Widget via PHP.

    in reply to: Free registration with ccaps #610

    Or maybe you’re using the visual editor… Make sure you use the code editor for the page.

    in reply to: Free registration with ccaps #609

    I found these lines in the source code of the test page:

    <p><?php echo $_SERVER['HTTP_REFERER']; ?></p>
    <p><?php print_r($_SERVER); ?></p>
    

    It doesn’t look like the PHP execution is working there. See if the plugin is up-to-date and working, or try a new one (e.g. Jason’s EZ PHP https://wordpress.org/plugins/ezphp/ ).

    you will run out of emails too!

    Don’t worry, I have plenty. 😉

    in reply to: Free registration with ccaps #607

    I registered again and didn’t get the autologin, or the redirection to another page, just the confirmation message at the top of the current page: “Thank you. You’ll receive an email momentarily.”

    In the page with the registration form, could you add this outside of the shortcode so it shows up on the page when viewed, please? I want to see if it’s actually giving the previous page’s address.

    <?php echo $_SERVER['HTTP_REFERER']; ?>

    You could also add this:

    <?php print_r($_SERVER); ?>

    You do have a PHP execution plugin active on your installation, right?

    in reply to: Free registration with ccaps #605

    First thing I’d try is removing the autologin hack and creating a new account, to see if the success redirection to the previous page works. If it doesn’t, that needs more work, if it does, then the autologin hack needs to be improved to support that.

    in reply to: Free registration with ccaps #603

    After registration I got taken to http://scrapbookcampus.com/welcome-back/ which I guess is the Login Welcome page. So the success redirection is ignored by the autologin hack.

    in reply to: Free registration with ccaps #602

    Ok i fixed that error.

    Cool. I’ll try the registration redirection now.

    in reply to: Free registration with ccaps #601

    I don’t know… Make sure the fields for that setting are empty and save, I guess. And set the captcha attribute in the shortcode to 0: captcha="0". WP Admin -> s2Member -> PayPal Forms -> Shortcode Attributes -> captcha

    in reply to: Free registration with ccaps #598

    Sure.

    In the pro-form I see this error:

    Security Verification
    Input error: k: Format of site key was invalid

    I tried submitting it but didn’t succeed because of the error.

    Check that your configuration here is correct: WP Admin -> s2Member -> General -> Captcha

    in reply to: Free registration with ccaps #596

    Okay…

    I’m not sure if the hack will pick up the success URL for the redirection. Could you try and see how it goes? I don’t remember if Jason kept that in mind when he wrote it. I see a line that makes me think it’s possible, but testing will confirm it.

    in reply to: One purchase cancels a recurring payment #594

    That’s correct.

    That’s why I recommend reminding users to login if they already have an account, or only sell to logged in users.

    in reply to: Free registration with ccaps #593

    You could custom code that, bur remember that registering won’t automatically log the user in, so he’ll still be logged out when redirected to the URL after registration…

    You could try using $_SERVER[‘HTTP_REFERER’] in the success attribute. http://php.net/reserved.variables.server

    [s2Member-Pro-PayPal-Form register="1" level="0" ccaps="default" desc="Signup now, it's Free!" custom="scrapbookcampus.com" tp="0" tt="D" captcha="clean" success="<?php echo $_SERVER['HTTP_REFERER']; ?>" /]

    See also the documentation here, in case there’s something that could be useful to you: WP Admin -> s2Member -> PayPal Forms -> Custom Return -> Free Registration.

    in reply to: One purchase cancels a recurring payment #590

    What you could do is use the conditional to check for the level, instead of whether he’s logged in. So if the user already is level 1, then change the level to asterisk in the pro-form. E.g.

    [s2If current_user_can(access_s2member_level1)]
        [s2Member-Pro-PayPal-Form level="*" ccaps="wjan2016" desc="Patchwork Scrapping" ps="paypal" lc="" cc="USD" dg="0" ns="1" custom="scrapbookcampus.com" ra="9.99" rp="1" rt="L" rr="BN" accept="paypal" coupon="" accept_coupons="0" default_country_code="" captcha="0" /]
    [else]
        [s2Member-Pro-PayPal-Form level="1" ccaps="wjan2016" desc="Patchwork Scrapping" ps="paypal" lc="" cc="USD" dg="0" ns="1" custom="scrapbookcampus.com" ra="9.99" rp="1" rt="L" rr="BN" accept="paypal" coupon="" accept_coupons="0" default_country_code="" captcha="0" /]
    [/s2If]
    
    in reply to: Free registration with ccaps #589

    You can add a ccap to the free registration pro-form. Let’s say your ccap is default then:

    [s2Member-Pro-PayPal-Form register="1" level="0" ccaps="default" desc="Signup now, it's Free!" custom="scrapbookcampus.com" tp="0" tt="D" captcha="clean" /]

    The instructions for independent custom capabilities is when selling them to a logged in member, it doesn’t work with visitors. You can give a ccap in the free registration pro-form, the level is set.

    in reply to: One purchase cancels a recurring payment #576

    The subscription and the level are not really related, are they?

    They are completely related. The subscription is created when selling a level, and when the user buys a level again, the existing subscription gets terminated. Even if he purchases the same level, s2Member will end the existing subscription. If he purchases the new one with recurring payments, then a new subscription gets created, but if it’s a single payment, then that’s that.

    If a user is already registered to the site, but has a level 0, buying a ccap without a level (level = “0”) should keep the user at level 0, correct? But then, BUYING something changes from level 0 to at least 1.

    If you sell it with the pro-form’s level set to 1 (level="1") yes, but if you are selling a independent ccap, level would be set to * (level="*"), so the member’s level would not change.

    If i use a pro-form and ask for registered members to login, that is so the form with level = “*” be applied, but how does the free member gets his level 1?

    You can sell the independent capability to level 0 users too, the level doesn’t matter, only that he’s logged in. So the free user can purchase the capability and he’d remain at level 0.

    See the documentation here WP Admin -> s2Member -> PayPal Forms -> Capability: “regardless of which Membership Level they have on your site (i.e., you could even sell Independent Custom Capabilities to Users at Membership Level #0, normally referred to as Free Subscribers, if you like)”

    in reply to: Replace the WP login/registration page #575

    Yes, that’s what I meant. That was just an example to show how to achieve the redirection, but then you’d need to customize it to change the URL dynamically.

    You could probably use the $_SERVER variable to get the address of the page he’s on. http://php.net/reserved.variables.server

    in reply to: One purchase cancels a recurring payment #570

    Can a button give a level 1 without affecting a level 1 recurring subscription?

    No.

    Is there a way other than by having two forms?

    No, individual capabilities can only be sold to logged in users. To sell to a visitor you’d need to add the level too. This is a limitation with the existing implementation.

    You could create a feature improvement request making it possible to sell an independent custom capability to a visitor, so it’ll register him and assign him level 0, but work for logged in users as well not touching their level. https://github.com/websharks/s2member/issues

    solve the problem if i just used a regular Buy now button instead of a form?

    It’s the same for buttons to sell capabilities. WP Admin -> s2Member -> PayPal Buttons -> Capability: “you can sell one or more Custom Capabilities using Buy Now functionality, to existing Users/Members”.

    in reply to: Replace the WP login/registration page #569

    For a login from the same page he’ll be taken back to, yes. The login widget would need to be on the same page he’ll be taken back to, and the widget configured to redirect the person to the “previous” (i.e. the one where the widget is when he uses it) page after login.

    If you start the login from another place and want the person to end in a particular URL, there are a couple of ways:

    If you link to wp-login.php, you’d do http://example.com/wp-login.php?redirect_to=/the-page-you-want-him-taken-to/ and after logging in he’ll be taken to the redirect_to address.

    If you’re using the s2 Pro login widget via PHP, see: http://www.s2member.com/codex/stable/s2member/api_functions/package-functions/#src_doc_s2member_pro_login_widget()

    <?php s2member_pro_login_widget("login_redirect" => "http://example.com/the-page-you-want-him-taken-to/"); ?>
    
    in reply to: One purchase cancels a recurring payment #567

    I agree that it’d be best if it told the user the email is being used, and to login instead of signing up again. That said, it doesn’t prevent an existing user from signing up with a second account if he uses a different email address then the first time by mistake.

    I think it’s important to have a message reminding the existing user to login.

    I mentioned selling only to logged in users because then you eliminate the problem of selling to an existing user while he’s logged out. I know it adds the step of registration first, and it’d seem it will cause loses, but you could make that free registration attractive with a freebie, and not hard asking only the bare minimum of fields (similar to an email opt-in).

    But that’s a separate issue from the one where the existing subscription for level 1 is ended when he then purchases level 1 with a one-time payment. We were talking about existing users, which is when that issue would happen.

    The reason why the logged in/out topic came up is because I’m suggesting selling the ccap individually, without the level. That works for the logged in user, but isn’t possible for a logged out user, so it requires the level to be added to the form.

    When selling individual ccaps, I think it’s fine to have a conditional that doesn’t add a level to the form when the user is logged in, so it doesn’t affect existing subscriptions, but adds the level when the person is logged out so the ccap can be sold to him. Not perfect, but works.

    Sorry for the delay.

    The s2 pro-form doesn’t have a way to change dynamically based on the zip code entered into it as a the value of one of the profile fields. But it is possible to have a previous step for the zip code, to then show the proper form based on it.

    You could have a simple HTML form for the user to enter his zip code, and submit it to the page with the pro-form, but with a PHP conditional that checks the zip code entered to display the form you want. E.g.

    <?php 
    if (isset($_REQUEST['zip'])) {
      if ($_REQUEST['zip'] < 12345) {
        Sorry, you can't enter.
      } elseif ($_REQUEST['zip'] > 12345 && $_REQUEST['zip'] < 23456) {
        Registration form
      }
    } 
    ?>
    

    I hope that helps 🙂

    I’m not 100% sure I understand the setup you have, because there’s a big mixed use of levels and ccap for access and you didn’t explain the payments. I think that’s a mistake and that you may be better just using ccaps and s2Drip in this setup.

    Or are you selling a subscription instead of one-time payments? That’s the only case where a level would be required that I can think of right now, because ccaps can’t be sold with a recurring payment.

    The way I understand what you have:

    – Level 1 is to give a 30 day trial, which may be achieved with s2Drip and not require a subscription, unless you plan to charge recurringly for continued access afterwards, but it seems that for access after the trial you give Level 2.

    – Level 2 is for continued access to a single (seems to be a single payment, not recurring), and you have it split into two, for novels 1 and 2.

    – Level 3 is for access to both novels.

    – Level 4 is for access to both novels, but without having paid.

    You can do all that with just level 1 and ccaps. Even just level 0 if there’s no recurring payment, use the free user registration (the free registration pro-form lets you add ccaps to his free account, e.g the trial one).

    For access to novel 1, you give/sell the ccap for novel 1. Same for novel 2. If the user gets access to both, you just give both separate ccaps, not a ccap/level that mixes both. If he gets them free, the ccap can be the same for access, he just didn’t pay for it.

    For the trial access, you can probably have a ccap that gives that temporary access (e.g. novel1trial), and you’d check for it with a conditional and the date he got that access.

    I hope that helps. 🙂

    in reply to: Replace the WP login/registration page #562

    go through the FREE registration form (so i can add a ccap) BUT also return to the exact page they were on when they clicked (so i can’t use the success attribute, unless i can get it to pull the initial URL of the page the user was on).

    So what you want is bring the user back to the page he clicked the registration link from after creating his account?

    After registration he needs to login, so he can’t be redirected there right after registration. You want the first login to bring him to the page he clicked the registration link from?

    Maybe the registration link could just open the free registration pro-form in another tab/window, and leave the current one open and open a message that instructs him to “please reload this page after completing your registration and logging in.”

    in reply to: One purchase cancels a recurring payment #561

    that would not explain why other members who had the same recurring payment, and used the same form, didn’t see their recurring payment stopped?

    I’m not sure why it was different for them. The form you showed me isn’t selling just a ccap, it’s selling Level 1 plus the ccap for a one-time payment. That’s why the Level 1 subscription ended when your customer purchased it again for a one-time payment.

    Did the other customers follow the same steps under the same situation as this one with the problem? Did they use the same form to purchase that ccap or is there another form that just sells the ccap somewhere in the site? Had they started their subscriptions with s2Member and were they tied to their WP accounts? Just guessing a couple of situations where they’d not have that behavior happen.

    I really don’t like to use a conditional to have 2 pro-forms (one for logged in and one for not logged in) because i have to rely on the registered members to log in before making the purchase. If they don’t, it causes other issues

    You’d have the same situation with the current form without the coditional… If they’re not logged in and purchase, it’ll go towards a new account instead of the existing one. It’s better to always try to make sure that the existing user is logged in when he purchases.

    The safest way may be to always only sell to logged in users, and visitors only have free registration as the next possible action, and then upgrade.

    that is why i suggested that an additional feature would check the email and associate ccaps based on the email, no matter what

    Yeah, that’d be a nice feature to have. I’ve suggested it before as well. I don’t know when/if it’ll be implemented, though, so I wouldn’t count on it. It’ll be better to make this work with what you have, in my opinion.

    in reply to: One purchase cancels a recurring payment #555

    I used a level = “1”

    That may be the reason, as I explained in my previous reply… I’d try having a conditional so it only adds the level for a visitor, but logged in users only get the custom capability, without the level, in the pro-form.

    Try that with the user that had the problem and see if you can reproduce it then.

    in reply to: One purchase cancels a recurring payment #550

    Was the one-time payment for a level or a custom capability?

    I ask because subscriptions are only for levels, and the user buys a different level, the subscription for the one he had gets cancelled.

    I don’t think that this should happen when it’s just the purchase of a custom capability without the level.

    Could you show me the shortcode for the form/button the user got when he paid the one-time and got his subscription cancelled?

    I look forward to your update.

    I see there are versions of the Pro Form that are available to create a shortcode if a member
    wish to do an upgrade as a paid member

    Do you mean the Modification Pro-Form? That one works for registered users only, while the regular pro-form works for existing users only, while the regular pro-form can be used to register new ones or upgrade existing ones.

    lets assume they are logged in, they are level 2 – and they pay for level 3 – does this mean?:
    one – on paypal their level 2 reoccurrence is stopped and a level 3 payment reoccurrence will replace it
    and then their role in the user would be changed to level 3?

    Yes, in PayPal the level 2 subscription would be ended and a new one created for level 3, and his WP role gets changed to s2Member Level 3.

    what I am concerned about is if an existing member (level 2 or 3) decides to pay again – with the current
    user name, that it will reset their account? change their date of joining our membership – ??

    No, he can’t register a new account with the same username, and trying it wouldn’t reset his existing account.

    how can I change a user’s date when they join being a member so I can test for the 2nd month of drip feeding?

    Why would you need to change the date for the drip? You can drip based on the date he got a particular access, so level 0 and level 2 could have different dates if he registered free first and upgraded later. Does that make sense? See: WP Admin -> s2Member -> Scripting -> Content Dripping

    I hope that helps. 🙂

    Thanks for the update! I’m glad you could make it work. 🙂

    in reply to: No RECURRING LOVE #542

    Hi James, sorry for the delay, I’ve been away for the Holidays.

    Let me see if I understand: you are charging users successfully for one-time payments, and are being able to sell a subscription and get the first payment, but you can’t get the following payments in the subscription. Is that correct?

    Tell me, what PayPal flavor do you use? Express Checkout, PayPal Pro, PayPal Pro PayFlow Edition? (Note that it’s different from PayFlow Pro) http://s2member.net/paypal-pro-payflow-dprp-express-checkout-104

    Did you verify that your PayPal integration is complete and correct? Did you do test subscriptions for 1 cent daily to see if you can reproduce the behavior in a controlled manner to help spot what may be wrong?

    I’d like to see the logs, can you send me a copy to cristian at s2member net? And tell me what transactions to look for.

    I look forward to your update. 🙂

    in reply to: Creating a log of payments #541

    @Mark, I’m glad you found a solution for that. Thanks for the update!

    @Krum, your reply is fine, I don’t mind you getting jobs from here. I’m glad to see the community at work. 🙂

    Thanks for the heads up on the contact form. I’m suspecting that WP-SpamShield is not working correctly and preventing legitimate users from leaving comments or sending emails… I’ll disable it for now because I don’t have time to debug it at the moment, although it was the only plugin I had found that does a decent job preventing spam registrations. You have my Gmail address, and you can CC cristian at s2member net as well.

    in reply to: Creating a log of payments #532

    Yeah, that’d definitely would be a good way to do it, with the payment notification.

    You could post a job in a freelancers site. I have the idea of writing an add-on plugin for that, but really don’t have any estimated time to even start working on it.

    One thing you could do right away, is use the email option for the notification, so s2Member sends you an email with all the data the notification has. WP Admin -> s2Member -> Notifications -> Payment -> Email

    I hope that helps! 🙂

    I think you can do it with a bit of PHP in the page with the form, so it changes the form’s shortcode dynamically to the other level based on your ZIP code conditions.

    The PHP code should be able to pick up the ZIP code you stored in the user’s profile with the Gravity form. I’m not familiar with how it saves profile fields.

    Will create that field with s2Member? WP Admin -> s2Member -> General -> Registration/Profile Fields & Options

    Tell me how you’re saving the ZIP code in the profile, and I’ll try giving you an example shortcode to change the level dynamically.

    Odd… See if you can reproduce that error in an installation with just s2Member added and no other plugins. If so, please report it in a new issue over at GitHub so Jason can investigate it. https://github.com/websharks/s2member/issues

    Thanks!

    Check the $_SERVER array to see if the page requested is the Login Welcome one (look for its slug in the ‘REQUEST_URI’). http://php.net/reserved.variables.server

    Great! Glad you figured it out. 🙂

    when I take my test trial member and upgrade him to a paid level, that s2member pro already sees he is a registered members and just changes his role to the level he pays for – is this correct?

    If the person is logged in when he starts the upgrade process, his account will be referenced and the purchase will go towards it instead of a new account. Just make sure he’s logged in when he loads the page with the payment pro-form.

    however when I display the page for each s2IF test that is false there is a blank line
    displaying on the page

    Try not having a line-break between the closing and opening s2If tags.

    is there a way I can avoid all the /s2IF conditions by replacing the level number

    You could do that with s2Get and the level number, if your URLs only change by the level number.

    If you have URLs that are more different than just the level number, then you’d need a bit of PHP instead of shortcodes (maybe an array with the level number as the key and the URL as the value).

    since I am the admin I will fall into level4

    You have Level 4 access, but you don’t have the Level 4 role, you are an Administrator.

    current_user_is(access_s2member_level1)

    access_s2member_level1 is a capability, which you check with current_user_can. current_user_is checks the role, so it’d be s2member_level1.

    current_user_is(s2member_level1)

    current_user_can(access_s2member_level1)

    See also:
    https://codex.wordpress.org/Glossary#Role
    https://codex.wordpress.org/Glossary#Capabilities

    No, no hook needed. Just open the PHP block as the very first thing in the file, add that code, and that’s it. Save the file with a PHP extension and upload it to /wp-content/mu-plugins/.

    in reply to: Sandbox on Paypal #513

    I’ll ask Jason about those sandbox questions.

    But like I said in the other video I told you about, I recommend that you avoid using the sandbox and just stick to the live account and test with real transactions.

    Just having !empty($_REQUEST['_s2member_vars']) in the conditional will spot if the user was sent to the Membership Options Page.

    You don’t need to check for a ccap as I did in that particular case, you can just redirect the visitor to the Membership Options Page for that particular language.

    For example (untested):

    if (!empty($_REQUEST['_s2member_vars'])) {
       header('Location: http://mysite.org/'.strtolower(ICL_LANGUAGE_NAME_EN).'-member-options-page/?lang='.ICL_LANGUAGE_CODE);
       exit;
    }
    

    I hope that helps. 🙂

    I see. Well, you could ask the WPML guys what the code to detect the language would be, then do the redirection. You can see the redirection line in my hack for an example. 🙂

    in reply to: Confirmation of Registration and Welcome Messages #507

    so what you are saying basically for all Paypal forms is we can send a person to the next page to see

    Yes, you can set the URL to take the person to after returning from the payment. See the documentation there and run some tests to see how it works. WP Admin -> s2Member -> PayPal Forms -> Custom Return

    if a new member pays on Paypal, that also s2member pro will automatically make a new account for them, enter their name, email, and send the welcome email I setup — also will send a temporary password?

    If you used the pro-form, and the user is not logged in, the pro-form will also be a registration form, not just for payment.

    The account will be created and, if you disabled custom passwords, one will be generated by WordPress and sent to the user by email. WP Admin -> s2Member -> General -> Registration/Profile Fields & Options -> Custom Passwords

    I see how to change the welcome email to the paid members, but what about the welcome emails to the trial member

    No, there isn’t a special email for those that pick a trial, but you could probably use some PHP code in your signup confirmation email template to change the message dynamically based on that. WP Admin -> s2Member -> PayPal Options -> Signup Confirmation (Pro-Form) -> PHP

    under general options is an Email setting message, is this where their welcome message comes from? – the new User message you said above right?

    Yes, when you don’t allow custom passwords. When the user can set his password, then WordPress won’t send that email (it used to, but WP changed that in a recent update).

    if I use sandbox on paypal – I don’t need to worry about what is called my merchant ID?

    I suggest that you watch these videos:

    s2Member®: Using The PayPal Sandbox – YouTube

    s2Member PayPal Sandbox Tip – YouTube

    I hope that helps. 🙂

    Thank you Scott! It means a lot to me that you say that. 🙂

    programmatically select different Login Welcome and Membership Options pages based on conditionals

    I recently helped Cassel with a hack to do just that: http://s2member.net/forum/redirect-if-user-does-not-have-the-correct-ccap-371#post-386

    You can customize it to your own restriction requirements and landing pages, and even add several instead of just one.

    I’m thinking about writing an add-on plugin to achieve this from the s2Member admin instead of a hack.

    I hope that helps!

    in reply to: Confirmation of Registration and Welcome Messages #499

    after a new member signs up for this trial membership using a Pro form with registration=1, what page will see after they register?

    See: WP Admin -> s2Member -> PayPal Forms -> Custom Return

    now we turn to a paid member, using a Paypal Pro Form to sign up – we are told to send the person to paypal first, then they get sent back to our website to a final registration page (what is this page and what does it look like?)

    The pro-form doesn the registration too, so when you’re using PayPal Express Checkout he’ll go to their site to pay, but the pro-form will create his account.

    If the user is logged in, then the form will only handle the payment and modify the current user, not create a new one.

    is there welcome message for joining that we can change the content found at: Paypal Options / Sign-up Confirmation Email (Pro Form)?

    You can edit it there, yes.

    If you don’t allow custom passwords, i.e. one will be generated for him on registration, he’ll get an email from WordPress with it, and you can customize it here: WP Admin -> s2Member -> General -> Email Configuration -> New User

    Sorry for the wait, I’ve been travelling and with little internet the past days.

    I think I understand better what you want: make it possible to download or view in the browser, not just one, right?

    You could have a couple of links, one to view and the other to download. You could set the default to download, and then have the view link set to inline.

    Try removing the pdf and mp3 extensions from here: WP Admin -> s2Member -> Download -> Inline

    Then use a s2File shortcode for the file to give the download link.

    Below it duplicate the shortcode, but add the download attribute set to yes. WP Admin -> s2Member -> Download -> Shortcode Attributes -> download

    Let me know how it goes. I hope that helps. 🙂

    in reply to: Clickbank Integration #495

    Sorry for the wait. I’ve been travelling and weren’t online much the past days.

    Your Link Expired: Please contact Support if you need assistance.

    Yeah, changing the URL shortener is what I’d have suggested now as well… Are you getting that message from the shortening service, or your site?

    If it’s the site’s, tell me: did you already signup an account with that link? It could happen that you’re trying to register a second time and that wouldn’t work (so customers can’t share the signup link to register multiple accounts with a single purchase).

    in reply to: Clickbank Integration #488

    I’m not sure where in the ClickBank admin of your account you’d see the subscriber IDs, but you can ask them about it.

    One thing I’d do is setup an s2 notification so it emails you with each transaction, that way you have a backup with the data of each custemer that you can look up later if needed. WP Admin -> s2Member -> Notifications -> Payment -> Email

    I hope that helps. 🙂

    now I don’t know if I needed to delete the other meta data I setup before

    I don’t think it was needed. I just did a test leaving the others as they were, and the link now downloads the file instead of opening it.

    when I click on the link to our pdf file on amazon s3 – using the code via s2member pro – we still see the pdf file being displayed in the browser

    Hmm…

    Did you verify that PDF is not in your Inline Files setting? WP Admin -> s2Member -> Download -> Inline File Extensions

    Also, can I see the shortcode for your file link?

    I am assuming if and when we can get this working, this means we will have to live with just letting our members download the files and not be able to all view (the pdf files) or hear (the mp3 files)

    I thought that’s what you wanted, that the files always get downloaded instead of opened. If I misunderstood, could you please correct and explain in detail the behavior you want? Thanks!

    any ideas if there is a way to get the plugin PDF Viewer to work with our pdf file on amazon s3

    I don’t know… This one? https://chrome.google.com/webstore/detail/pdf-viewer/oemmndcbldboiebfnladdacbdfmadadm?hl=en

    I never had to sort that out before, so I needed to research it a little to answer.

    Here’s what I found at another forum: http://www.tipsandtricks-hq.com/forum/topic/force-a-file-to-download-instead-of-showing-up-in-the-browser

    1) In the S3 console, select an object, and then click the ‘properties’ button (if the properties window at the bottom isn’t already visible).
    2) Click the ‘add more metadata’ button, and add: Key: Content-Disposition Value: attachment

    To add the metadata to all the files of a bucket or just a folder in a couple of clicks with CloudBerry Explorer.

    1) right click your folder (or bucket) and select “Set Http Headers”
    2) In the new window, click “Add”
    3) For Http Headers, choose: “content disposition” and for Value: attachment; filename=
    4) Click “OK”
    5) At the bottom, select: Keep existing headers, overwrite values for headers with the same name and add new headers (from the list specified above)

    Let me know if that helps. 🙂

    how can I get a message to our member who wishes to download this file (pdf on
    amazon s3) rather than the built in plugin in the browser taking over the screen and
    then just displaying the pdf file

    The PDF or MP3 will be opened in the browser, depending on how the browser is configured, I guess. Some will open it and others will download it to the computer.

    how can I display the member pdf file in a pdf viewer that works within the structure of
    my wordpress site – when the pdf file is in a bucket on amazon s3

    You may need to generate a URL with a key. See: WP Admin -> s2Member -> Download -> Advanced

    tried to send you a message via the contact function of the forum and it didn’t let me do so
    is there any way I can talk with via email or skype

    Sorry, I hardly use skype or email lately, but I’ll be checking this forum almost daily. Thanks for the heads up about the contact form, I’ll look into that.

    thank you Cristian for doing this forum

    🙂

    in reply to: Clickbank Integration #477

    forum posts and profile details to be lost, so simply suggesting they cancel and re-join won’t

    Of course. Well, It wouldn’t be needed to register a new account, they can keep using the same one, so those posts and info won’t be lost.

    What they would need to do is create a new subscription over at ClickBank.

    If they user is logged into his account when he loads the page with the subscription button (use the s2 shortcode for it), it’ll be tied to his existing account instead of going towards a new signup.

    WP Admin -> s2Member -> ClickBank Buttons

    Clickbank “communicate” with S2Member so members who cancel will be terminated

    Yes, if they subscription is created through s2Member’s button for ClickBank, CB will notify s2Member if the subscription is ended, and s2 will do what you set it to in that case. See: WP Admin -> s2Member -> ClickBank Options -> Auto EOT Behavior

    Does that help? Let me know if you have more questions. 🙂

    By the way, you may find these videos I created helpful (there may be slight changes in the interface since then): https://www.youtube.com/playlist?list=PL8gPolqFnYqthiajVevvuO-y4L1zWFxd8

    in reply to: Modifying Free User Levels #476

    🙂

    in reply to: Serbian Translation For Plugin #475

    Thanks for that! Sure, I can host it here. Email the files to cristian at s2member.net, please.

    I look forward to your email. 🙂

    in reply to: Modifying Free User Levels #471

    Yes, I see what you mean.

    I don’t have a problem with the hack, but being able to use the pro-form for those modifications would be nice.

    I’d suggest that you open a feature request for it over at GitHub. https://github.com/websharks/s2member/issues

    in reply to: Modifying Free User Levels #469

    I see what your problem is in that situation.

    I’d suggest a bit of PHP that’ll change the user’s role. See: https://s2member.com/kb-article/rolescapabilities-via-php/

    You’ll need a PHP execution plugin for PHP to work in a post/page’s body.

    You can add the role-changing code to a page where the user lands when he clicks on a link to modify his account’s level.

    I hope that helps. 🙂

    in reply to: PHP Execution plugin conflicting #468

    I haven’t used that plugin with other editors in a blog, so I’m not familiar with that behavior. I know that there are several PHP execution plugins in the repository, which you could try to see if they behave differently.

    s2Member doesn’t add the ability to have PHP in your posts, so to have an advanced PHP condition, you do need a PHP execution plugin.

    That said, s2Member Pro does have the s2If tag, which now does accept an advanced condition with the PHP attriubte. WP Admin -> s2Member -> Restrictions -> Simple Shortcode Conditionals -> Arbitrary PHP

    I hope that helps. 🙂

    in reply to: %%item_name%% not populated #462

    Maybe because in a button there’s no coupon to discount it, so the description doesn’t get modified. If you try the pro-form without the coupon, you will likely get the original description.

    not understanding what you mean

    I mean modifying the hack so it removes the discount part and leaves the original description of the product. Something like this (untested):

    add_filter('ws_plugin__s2member_modification_email_msg', 'my_s2_modification_msg', 10, 2);
    function my_s2_modification_msg($s2member_default_msg, $vars = array()) {
    	$item_name = $vars['paypal']['item_name'];
    	if (strpos($item_name, 'ORIGINALLY:') !== false) {
    		$item_name = explode('ORIGINALLY:', $item_name);
    		$item_name = trim($item_name[1]);
    	}
    	return "Thank you " . $vars['user']->data->display_name . "\n\nYou have successfully purchased the " . $item_name . "\n\nIf you have not already done so, the next step is to Register a Username for the Campus.\n\n Please complete your registration here: " . wp_login_url() . "\n\nIf you have any trouble, please feel free to contact us.";
    }
    
    in reply to: %%item_name%% not populated #460

    Another thing you could try is removing the part up to originally and showing only the following part.

    in reply to: %%item_name%% not populated #458

    What caused that issue in the first place?

    In the first place, why you started the thread, the reason was that the variables were not the same as before, so there was no value to show. In the second place, why my updated hack was not sending the email, was a syntax problem with how I was getting to the person’s name in the user data, because part of them were objects instead of arrays.

    a way to only include the actual item name and NOT the “Discount info”

    Yes, it does look odd. I don’t see the original name anywhere in the variables available to the hack. You’d need to add it to the hack, I guess, or pass it somehow to the hack from the pro-form, e.g. the custom values. WP Admin -> s2Member -> PayPal Forms -> Shortcode Attributes -> custom -> cv

    in reply to: A Plethora of Questions from UAT #456

    Would you know what the issue with the Unsubscribe button you supplied is?

    I don’t know… Could you please try these actions to narrow down the possibilities? http://s2member.net/troubleshooting-tips-21

    Thanks! I look forward to your update. 🙂

    in reply to: A Plethora of Questions from UAT #455

    download restrictions during the trial period?

    No, the restriction is based on level, and the user gets the level for the trial, so he gets the same amount of downloads as the paying subscriber at that level.

    It’s an interesting question, though. If it were me, I’d probably look at using advanced conditionals to try limit it. Maybe change the limit number dynamically based on his time at that level… I haven’t done this before, though, so I don’t know exactly what the code would be.

    i can add a billing method on a Stripe Checkout pro form, but I don’t see how to delete

    I’m not sure I understand what you mean. Could you show me?

    discount apply only for the FIRST MONTH, ONLY? If not, then how

    You could use the ta-only directive for the coupon, and then you’d need to make the first month be the initial term of the subscription you’re selling, instead of a regular one, so that the coupon can be applied to that term only. WP Admin -> s2Member -> Coupons -> Legend -> Directive

    re-direct that user to the login page (/wp-login.php) with a message

    You could try the success attribute with the wp-login.php URL, including a var in the querystring that shows that he just paid, and then to wp-login.php add a conditional that checks for that variable and if there display the message.

    WP Admin -> s2Member -> Stripe Forms -> Shortcode Attributes -> success
    WP Admin -> s2Member -> General -> Login/Registration Design -> Footer

    in reply to: %%item_name%% not populated #454

    Thanks for waiting. I think I sorted it out.

    add_filter('ws_plugin__s2member_modification_email_msg', 'my_s2_modification_msg', 10, 2);
    function my_s2_modification_msg($s2member_default_msg, $vars = array()) {
    	return "Thank you " . $vars['user']->data->display_name . "\n\nYou have successfully purchased the " . $vars['paypal']['item_name'] . "\n\nIf you have not already done so, the next step is to Register a Username for the Campus.\n\n Please complete your registration here: " . wp_login_url() . "\n\nIf you have any trouble, please feel free to contact us.";
    }
    

    I did a few test purchases and the last ones sent me the email correctly:

    Thank you Cristian Test1

    You have successfully purchased the Discount: 100% off. (Now: $0.00) ~ ORIGINALLY: 12 Cards for Christmas

    If you have not already done so, the next step is to Register a Username for the Campus.

    Please complete your registration here: http://scrapbookcampus.com/wp-login.php

    If you have any trouble, please feel free to contact us.

    Could you test it too and tell me if you notice anything wrong with it now?

    in reply to: %%item_name%% not populated #448

    Thanks, got the email.

    Could you create a page with a pro-form like the one you sell the upgrade with, but set to 1 cent, and send me a link to it in a reply to the email with the credentials? I’d like to do a few test purchases while working on the code, but don’t know exactly which of your pro-forms you’ve been testing with.

    Nevermind, found the pro-form shortcode in your opening post. I knew I had seen it, but I somehow missed it earlier… Sorry about that. I’ll do some troubleshooting tomorrow trying to figure out what the problem with the code is. 🙂

    in reply to: %%item_name%% not populated #445

    Got the email with the full array. Thanks, I could read it better this time.

    i am just as stumped as you are.

    Yes, very odd…

    If you want me to do some tests, instead of telling you things that come to mind between replies, you can email me access to the FTP and WP admin and I’ll try to debug it for you, as we did in the past with other problems.

    in reply to: %%item_name%% not populated #442

    Thanks, got the email.

    I don’t see yet what could be causing the updated hack to not send anything when the old one does, even if missing the vars.

    I noticed that I may have missed an array for the user’s name, so I fixed it:

    
    add_filter('ws_plugin__s2member_modification_email_msg', 'my_s2_modification_msg', 10, 2);
    function my_s2_modification_msg($s2member_default_msg, $vars = array()) {
    	return "Thank you " . $vars['user']['data']['user_nicename'] . "\n\nYou have successfully purchased the " . $vars['paypal']['item_name'] . "\n\nIf you have not already done so, the next step is to Register a Username for the Campus.\n\n Please complete your registration here: " . wp_login_url() . "\n\nIf you have any trouble, please feel free to contact us.\n\nOnce your registation is completed, you can login and access your bonuses here: http://scrapbookcampus.com/" . $vars['paypal']['ccaps'];
    }
    

    But I still doubt that that was causing the email to not be sent… Do you have an email log to see if it’s actually not being sent? https://wordpress.org/plugins/email-log/

    By the way, I was reviewing again the vars array you got earlier and sent me, but it seems to be incomplete, probably missing data at the end. Could you forward me the email you got instead of copy-pasting the array only? Thanks!

    I look forward to your update. 🙂

    The Express Checkout integration uses the s2Member Pro forms, not buttons. But the pro-form does have the submit button that looks like a PayPal button, though.

    PayPal Express Checkout submit button

    You can just start using Express Checkout, and new sales will go through it instead of PayPal Standard, but that won’t migrate existing subscriptions if there are any, from Standard to Express Checkout.

    Existing subscriptions will continue to be billed on your Standard account, and new subscriptions on your Express Checkout one, if I’m not mistaken. You can test this with purchases for 1 cent recurring.

    If you don’t have any subscriptions with the Standard account, then the transition will be even simpler.

    Does that help?

    You can use PayPal Express Checkout and Stripe payment processors, but not in the same pro-form yet. The Stripe pro-form won’t process a payment with PayPal.

    You could open a feature request for that over at GitHub to add your vote for it and let Jason know about it. https://github.com/websharks/s2member/issues

    To use different processor pro-forms, you’d need to have them in separate pages (there shouldn’t be more than one per page), and you could let the customer pick which one to pay through in the previous step of the checkout process.

    I hope that helps. 🙂

    in reply to: %%item_name%% not populated #432

    not sure what quote has to change if at all

    I added a hack to the site so they won’t be changed into curly quotes anymore when it’s inside a code block.

    The first name in the array was “correct” as it was the test account name

    I didn’t add the first name from the PayPal array to the hack, because it may not be correct all the time. Sometimes the billing info doesn’t match the actual user of the site. E.g. my wife signs up but pays with my card. That’s why I picked the user account’s “nice name” from the array.

    use a conditional and send to a bonus IF they are getting a course that includes a bonus

    Yeah, you can definitely improve the hack with conditionals.

    not getting any email for confirmation at all.

    Could you show me the full hack file with the code? You can email me the file if you prefer it.

    in reply to: %%item_name%% not populated #429

    Thanks! Got the email.

    I see. Yeah, some things are different in that array than was expected in your hack. I don’t know that if every transaction the hack was meant for, or only this one has the variables missing or in another place of the array.

    Here’s is the hack a bit edited to use the available data:

    
    add_filter('ws_plugin__s2member_modification_email_msg', 'my_s2_modification_msg', 10, 2);
    function my_s2_modification_msg($s2member_default_msg, $vars = array()) {
    	return "Thank you " . $vars['user']['user_nicename'] . "\n\nYou have successfully purchased the " . $vars['paypal']['item_name'] . "\n\nIf you have not already done so, the next step is to Register a Username for the Campus.\n\n Please complete your registration here:" . wp_login_url() . "\n\nIf you have any trouble, please feel free to contact us.\n\nOnce your registation is completed, you can login and access your bonuses here: http://scrapbookcampus.com/" . $vars['paypal']['ccaps'];
    }
    

    Keep in mind that WP may changes the quotes (double and single) to curly ones, even when they are in a code block, so you may need to fix them for the code to work correctly.

    First name wasn’t available in the array you sent me, so I changed it to the user’s nicename, but you’ll also need to test if it works for a new signup and not just an existing user.

    The item name is the only one I think will be the same as you were expecting in the original hack.

    The custom value 1 I couldn’t find in the array, and I wasn’t sure what you meant to have there for the bonuses link. I changed it to the ccap, in this case 12cards, although that URL doesn’t exist in your site. You’ll need to change that one to what it should be.

    Let me know how the tests go. 🙂

    in reply to: %%item_name%% not populated #427

    I don’t know yet, but we’re making progress. 🙂

    I now have a looooooooong list of variables.

    Could you show me that test email? If it has info that should not be public, you can censor it, or email it to me.

    in reply to: %%item_name%% not populated #423

    I see. Yeah, that seems to be the email being sent. It matches the one your customer received.

    It seems the hack needs to be updated after all these years, if it’s not working right…

    You could try seeing what the whole $vars array looks like. Try adding var_export($vars, true) at the end and do a test purchase.

    This would be the return line with that added:

    return “Thank you “ . $vars[“first_name”] . “
    
    You have successfully purchased the ” . $vars[“item_name”] . “
    
    If you have not already done so, the next step is to Register a Username for the Campus.
    
    Please complete your registration here: ” . wp_login_url() . “
    
    If you have any trouble, please feel free to contact us.
    
    Once your registation is completed, you can login and access your bonuses here: http://scrapbookcampus.com/“ . $vars[“cv”][1] . “
    
    " . var_export($vars, true);
    in reply to: %%item_name%% not populated #419

    Yes, that’s weird…

    I remember there are some transaction emails that don’t have an interface to customize them. And now I remember that we helped you long ago to customize them with a hack… http://www.primothemes.com/forums/viewtopic.php?f=4&t=10368

    Could it be one of those? If so, could you show me your hack for them? Thanks!

    in reply to: %%item_name%% not populated #416

    Hmm… I don’t see any of those email templates match what you posted before. :/

    I know you said it’s an existing user, but maybe she wasn’t logged in when doing the purchase and got the New User email? It doesn’t look like the New User email, though, but I’m just trying to guess what could be going on here.

    Were you able to reproduce that behavior making a test purchase following the steps the customer reported having done?

    If you want me to take a closer look, you can email me to cristian at s2member.net, and let me know here that you did.

Viewing 100 posts - 1 through 100 (of 113 total)