1: <?php
2: /**
3: * Magento
4: *
5: * NOTICE OF LICENSE
6: *
7: * This source file is subject to the Open Software License (OSL 3.0)
8: * that is bundled with this package in the file LICENSE.txt.
9: * It is also available through the world-wide-web at this URL:
10: * http://opensource.org/licenses/osl-3.0.php
11: * If you did not receive a copy of the license and are unable to
12: * obtain it through the world-wide-web, please send an email
13: * to license@magentocommerce.com so we can send you a copy immediately.
14: *
15: * DISCLAIMER
16: *
17: * Do not edit or add to this file if you wish to upgrade Magento to newer
18: * versions in the future. If you wish to customize Magento for your
19: * needs please refer to http://www.magentocommerce.com for more information.
20: *
21: * @category Mage
22: * @package Mage_SalesRule
23: * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
24: * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25: */
26:
27:
28: class Mage_SalesRule_Model_Coupon_Codegenerator extends Varien_Object
29: implements Mage_SalesRule_Model_Coupon_CodegeneratorInterface
30: {
31: /**
32: * Retrieve generated code
33: *
34: * @return string
35: */
36: public function generateCode()
37: {
38: $alphabet = ($this->getAlphabet() ? $this->getAlphabet() : 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789');
39: $lengthMin = ($this->getLengthMin() ? $this->getLengthMin() : 16);
40: $lengthMax = ($this->getLengthMax() ? $this->getLengthMax() : 32);
41: $length = ($this->getLength() ? $this->getLength() : rand($lengthMin, $lengthMax));
42: $result = '';
43: $indexMax = strlen($alphabet) - 1;
44: for ($i = 0; $i < $length; $i++) {
45: $index = rand(0, $indexMax);
46: $result .= $alphabet{$index};
47: }
48: return $result;
49: }
50:
51: /**
52: * Retrieve delimiter
53: *
54: * @return string
55: */
56: public function getDelimiter()
57: {
58: return ($this->getData('delimiter') ? $this->getData('delimiter') : '-');
59: }
60: }
61: