Please upgrade here. These earlier versions are no longer being updated and have security issues.
HackerOne users: Testing against this community violates our program's Terms of Service and will result in your bounty being denied.

Product Support Options?

I use Blogger and I don't plan on changing that anytime soon. I'm also a new author at evanto, and want to provide some type of support for my buyers. Does Vanilla have any way of doing this? I looked through the add-ons and didn't see anything I could use for buyer verification support, or password protected forums, or anything I could use.

Anyone have any ideas on how I can accomplish this with Vanilla?

Thanks.

Tagged:

Comments

  • AdrianAdrian MVP
    edited July 2013

    @Xarcell You might have not looked hard enough ;p

    You can set the forum closed and you can hand out memberships or let people buy support via a permission upgrade using:

    http://vanillaforums.org/addon/purchasepremiumroles-plugin
    http://vanillaforums.org/addon/privatecommunity-plugin

    Cheers

  • I don't want to charge for support, only offer free support for those who buy my products via evanto(themeforest). I'm just trying to set up with a way for user's to verify themselves as a buyer, so I can give them support. I'm also not waiting to hide the whole forum, just parts of it. Those addons you suggested do not accept any kind of promo codes(that I can package with my products), so that they can be used to get premiumroles.

    Of course I could do everything manually, but I'm looking to stream-line my workflow.

  • I would suggest putting your forum into 'Invite Only' mode and send an invite code with your products.

    That would prevent non-customers from even accessing the site.

    Of course, if you require an account to buy something, it might make sense to go with an SSO approach using jsConnect.

    Search first

    Check out the Documentation! We are always looking for new content and pull requests.

    Click on insightful, awesome, and funny reactions to thank community volunteers for their valuable posts.

  • If I’m understanding correctly, you are using a 3rd party service to sell you product if you want to streamline you would need to rely on some webhook/notification or email responder script to send out membership codes.

    grep is your friend.

  • KasperKasper Vanilla Staff

    Kasper Kronborg Isager (kasperisager) | Freelance Developer @Vanilla | Hit me up: Google Mail or Vanilla Mail | Find me on GitHub

  • Nice find, I will try it out as this would definitely solve my issue. Thanks.

    @hgtonight said:
    I would suggest putting your forum into 'Invite Only' mode and send an invite code with your products.

    That would prevent non-customers from even accessing the site.

    Of course, if you require an account to buy something, it might make sense to go with an SSO approach using jsConnect.

    That's not a bad idea. The only thing I don't like about it is that it would close the whole forum, rather than just part of it.

  • @hgtonight said:
    I would suggest putting your forum into 'Invite Only' mode and send an invite code with your products.

    That would prevent non-customers from even accessing the site.

    Of course, if you require an account to buy something, it might make sense to go with an SSO approach using jsConnect.

    The more I think about it, I like the idea of invitation. However, with Vanilla there is no "Invite Code", so how would I include an invite code with the purchased package?

  • When you set up registration through invitation , you set up a code you give people so the registration goes through... you could set it up so they only get the code after payment has been verified.

  • @vrijvlinder said:
    When you set up registration through invitation , you set up a code you give people so the registration goes through... you could set it up so they only get the code after payment has been verified.

    There is no area to setup code to give people so the registration goes through. I'm using Vanilla 2.0.18.8. Are you saying that feature is a part of 2.1, or part of a plugin?

  • You need to Go to the dashboard select Registration from the left side panel, select invitation as the registration method there you will see a list. Pick who can invite and how much. Then a link in your profile to myInvitations shows up, you enter the email of the invited person, when they get the email it contains the number they need to enter to register.

  • @vrijvlinder said:
    You need to Go to the dashboard select Registration from the left side panel, select invitation as the registration method there you will see a list. Pick who can invite and how much. Then a link in your profile to myInvitations shows up, you enter the email of the invited person, when they get the email it contains the number they need to enter to register.

    ok, I get it now. I thought there would be a code that I could use to put in my products README that would allow them to register. Having to click a link in m profile to send an email with an invitation code is still a bit cumbersome. That means if someone buys my product, they have to wait on me to send them an email so that can register.

    I was looking for something a little more hands-free.

  • edited August 2013

    Well it is not set up to be a store but I am sure you can modify it to do what you want. It is possible it can be automated. I am not sure how but it seems logical to me based on how Vanilla works. It is very flexible and you can do almost anything once you figure out how.

    I think what you are looking for is a plugin that will sent invitation registration after a certain action . By possibly tapping into it via the sale, or the monetary exchange.

    There are ways of doing it I am sure.. More and more people are looking for that too, maybe one of the developers here can help you make one or you can hire them to do so. Considering this is a business venture, it might be worth it for you to invest in a customized plugin for this.

    Also, since the numbers are randomly generated , maybe that can be changed using a configuration statement to use a specific number only, that you put in the config.php and then you send that same number to everyone. You would need to change it every so often .....

  • for example, the code below is from the entry controller you could substitute the Invitation code for a Configuration statement with the number you want to give out:

    /**
        * Invitation-only registration. Requires code.
        *
        * Events: RegistrationSuccessful
        * 
        * @access private
        * @since 2.0.0
        */
       private function RegisterInvitation($InvitationCode) {
          if ($this->Form->IsPostBack() === TRUE) {
             $this->InvitationCode = $this->Form->GetValue('InvitationCode');
             // Add validation rules that are not enforced by the model
             $this->UserModel->DefineSchema();
             $this->UserModel->Validation->ApplyRule('Name', 'Username', $this->UsernameError);
             $this->UserModel->Validation->ApplyRule('TermsOfService', 'Required', T('You must agree to the terms of service.'));
             $this->UserModel->Validation->ApplyRule('Password', 'Required');
             $this->UserModel->Validation->ApplyRule('Password', 'Match');
             // $this->UserModel->Validation->ApplyRule('DateOfBirth', 'MinimumAge');
    
             try {
                $Values = $this->Form->FormValues();
                unset($Values['Roles']);
                $AuthUserID = $this->UserModel->Register($Values);
    
                if (!$AuthUserID) {
                   $this->Form->SetValidationResults($this->UserModel->ValidationResults());
                } else {
                   // The user has been created successfully, so sign in now.
                   Gdn::Session()->Start($AuthUserID);
                   if ($this->Form->GetFormValue('RememberMe'))
                      Gdn::Authenticator()->SetIdentity($AuthUserID, TRUE);
    
                   $this->FireEvent('RegistrationSuccessful');
    
                   // ... and redirect them appropriately
                   $Route = $this->RedirectTo();
                   if ($this->_DeliveryType != DELIVERY_TYPE_ALL) {
                      $this->RedirectUrl = Url($Route);
                   } else {
                      if ($Route !== FALSE)
                         Redirect($Route);
                   }
                }
             } catch (Exception $Ex) {
                $this->Form->AddError($Ex);
             }
          } else {
             $this->InvitationCode = $InvitationCode;
          }
          $this->Render();      
       }
    
  • edited August 2013

    in the class.invitationmodel.php is where the random numbers are generated, maybe this would be a good place to add the $config statement instead of the RandomString. However, the invitation number seems to be linked to the user id and every user must have their own invitation number, as whith what I understand from the code in the model.

    Maybe the purpose is so the same user does not get invited twice? not sure, but the email I think is also a determining factor. This is just speculation, I need input from the masters here to really get a clue as to how to hack the invitation code properly....

       /**
        * Returns a unique 8 character invitation code
        */
       protected function GetInvitationCode() {
          // Generate a new invitation code.
          $Code = RandomString(8);
    
          // Make sure the string doesn't already exist in the invitation table
          $CodeData = $this->GetWhere(array('Code' => $Code));
          if ($CodeData->NumRows() > 0) {
             return $this->GetInvitationCode();
          } else {
             return $Code;         
          }
       }
    }
    
  • @vrijvlinder said:
    Well it is not set up to be a store but I am sure you can modify it to do what you want. It is possible it can be automated. I am not sure how but it seems logical to me based on how Vanilla works. It is very flexible and you can do almost anything once you figure out how.

    I think what you are looking for is a plugin that will sent invitation registration after a certain action . By possibly tapping into it via the sale, or the monetary exchange.

    There are ways of doing it I am sure.. More and more people are looking for that too, maybe one of the developers here can help you make one or you can hire them to do so. Considering this is a business venture, it might be worth it for you to invest in a customized plugin for this.

    Also, since the numbers are randomly generated , maybe that can be changed using a configuration statement to use a specific number only, that you put in the config.php and then you send that same number to everyone. You would need to change it every so often .....

    Thanks for your help, but I think your looking to far into it. I don't need anything complicated. If I could somehow have a custom invitation code per board that can be used more than once, that would suffice.

    For example, I made a theme called Revitalize that will be sold on evanto. I could include in the document for that theme the invitation code: "revitalize1234" that would work for all those who use it.

    I'm open to other ideas or suggestions...

  • Well you could obscure the registration url.

    instead of /entry/register it would be /entry/register?pass=d7asd9as

    alternatively you can just have an invitation membership and add their email programmatically.

    envanto has an api
    http://marketplace.envato.com/api/documentation

    it doesn’t seem to have proper webhooks/notification, on cursory glance, however the payment gateway often do.

    thing is all these these techniques need a bit of work from you to make frictionless to work. it doesn't just happen by magic. You either have to make do, do the work or pay someone, there isn't another option sorry.

    You would need some script that register/hooks some event, or is polling often enough get the information. Like I said there are literally dozens of ways it can be done, but only a small part of it actually has to to with Vanilla, that is the 'payload' part.

    The only think remotely like what want, without much effort, is registration Approval. You can send out a link to you forum in the theme, then they can join and you can approve them.

    But I'm afraid, if you want it totally without manual processing, you first have to put the work in, or buy in a solution.

    grep is your friend.

  • I appreciate the help. I'm still trying to think of way I can make this work more easily than manually setting up every single account. I need user's who purchase certain themes to be restricted to that support board only, not all support boards. This would require each account registered to be placed into a particular role.

    I don't even see how this can be done accurately. If I manually send out an invitation code to each user who buys a theme, I still have to go back after they register and manually place them into a certain role.

    I thought of password protecting boards, instead of using roles, but there is no add-on for that either.

    codecanyon.net has a add-on for wordpress/bbpress that stream-lines things with evanto, but I don't want to use wordpress. I hate wordpress and think it's over-rated. The only thing good about wordpress is that you can remove the "powered by" link, and it's massive list of useful add-ons.

  • TamaTama ✭✭✭
    edited August 2013

    Regarding the method you stated above, you could have a script run an sql query when the user purchases the theme, changing their role ID to the one needed ( however this will only work when adding one role, as it would remove others in the process ). You could however have them visit a page, enter their payment ID; presuming evanto has a way to check that it is valid and then execute the sql query accordingly.

    the query being something like this

    $ip = $_SERVER['REMOTE_ADDR']; // Get the ip of the request client
    // Select database etc.
    $ipquery = mysql_query("SELECT * FROM GDN_User WHERE LastIPAddress='$ip'"); //Selecting from the User Database
     $ipquery = mysql_fetch_array($ipquery);
      $UserID = $ipquery['UserID']; // Get the User ID
    
     mysql_query("UPDATE GDN_UserRole SET RoleID=33 WHERE UserID='$UserID'"); // Sets user RoleID, 33 being a variable to ajust
    

    this script lacks a few things, which I implement on a similar one to this

    • Logging, check if the ip or userID has executed this script before, I do some logging if the last statement was successful
    • Checking the evanto payment ID was correct
    • Security Fixes
    • Some form of front end

    this script is basic, and was written in a few minutes; you should be able to expand and improve it

    There was an error rendering this rich post.

Sign In or Register to comment.