Back to PhocacartCoupon class

Method generateCouponCode

public static
generateCouponCode
()

Method generateCouponCode - Source code

public static function generateCouponCode()
{
    $pC = PhocacartUtils::getComponentParameters();
    $gift_code_length = $pC->get('gift_code_length', 8);
    $gift_code_characters = $pC->get('gift_code_characters', '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ');
    $db = Factory::getDBO();
    // Limit attempts for generating coupon code - to protect before infinite loop
    for ($i = 0; $i < 7; $i++) {
        $o = "";
        for ($j = 0; $j < (int) $gift_code_length; $j++) {
            $o .= $gift_code_characters[mt_rand(0, strlen($gift_code_characters) - 1)];
        }
        $query = ' SELECT code FROM #__phocacart_coupons WHERE code = ' . $db->quote((string) $o) . ' ORDER BY id LIMIT 1';
        $db->setQuery($query);
        $code = $db->loadResult();
        // Generated code does not exist in database
        if (empty($code)) {
            return $o;
        }
        echo $o;
    }
    // After 5 attempts no success, return timestamp + random
    $date = new DateTime();
    $random = PhocacartUtils::getRandomString(mt_rand(6, 10));
    return $date->getTimestamp() . strtoupper($random);
}