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);
}