1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Creating a new promotion restriction?

Discussion in 'XenForo Development Discussions' started by Jaxel, Feb 25, 2014.

  1. Jaxel

    Jaxel Well-Known Member

    I'm trying to create a promotion on my forums:
    • Add to usergroup "Premium".
    • User is logged in.
    • User has been registered for less than 30 days.
    What this would do, is when someone registers, they get a free 30 day trial of our premium membership.

    However, "User has been registered for less than X days" does not exist. How would I set this up?
     
  2. Chris D

    Chris D XenForo Developer Staff Member

  3. Jaxel

    Jaxel Well-Known Member

    So I've done all this and I am running into an issue...

    I have my listener:
    Code:
    <?php
    
    class EWRcanal_Listener_Criteria
    {
        public static function user($rule, array $data, array $user, &$returnValue)
        {
            switch ($rule)
            {
                case 'registered_less':
                    if (isset($user['register_date']))
                    {
                        $daysRegistered = floor((XenForo_Application::$time - $user['register_date']) / 86400);
                        if ($daysRegistered < $data['days'])
                        {
                            $returnValue = true;
                        }
                    }
                break;
            }
        }
    }
    And then I have my template modification:
    Code:
    <li><label>
        <input type="checkbox" name="user_criteria[registered_less][rule]" value="registered_less" class="Disabler" id="ucrit_registered_less" {xen:checked $userCriteria.registered_less} />
        {xen:phrase ewrcanal_user_has_been_registered_for_less_than_x_days}:</label>
        <div class="criteriaQualifier" id="ucrit_registered_less_Disabler">
            <xen:spinbox name="user_criteria[registered_less][data][days]" value="{$userCriteria.registered_less.days}" size="5" min="0" step="7" />
        </div>
    </li>
    It looks like its working well... however, when I run the cron-job for Usergroup Promotions; it doesn't want to promote anybody.

    So at the top of my listener, I added:
    Code:
    echo $user['user_id']."<br />";
    Theoretically, this should line-by-line, list every user ID on my forums, as it checks each and every user for promotion. However, it's only listing "1"; which is me. It's not checking any other user.
     
  4. Martok

    Martok Well-Known Member

    You may be wanting to create this promotion criteria yourself, but if not then User Criteria by Waindigo has "user having been registered for less than a certain number of days" amongst others.

    **EDIT** Yes, you are wanting to do it yourself.
     
  5. Jaxel

    Jaxel Well-Known Member

    Okay... I figured it out...

    The usergroup promotions cronjob only searches for users who have been active in the past hour. I disabled that restriction and ran it; and it ran fine.

    Thanks guys.

    Also, I have no interest in using other people's addons; when I can do it myself.
     

Share This Page