Skip to content
Code-Schnipsel Gruppen Projekte
CodeGenerator.php 1,58 KiB
Newer Older
  • Learn to ignore specific revisions
  • Patrick Müller's avatar
    Patrick Müller committed
    <?php
    
    namespace QUI\ERP\Coupons;
    
    use QUI;
    use QUI\Utils\System\File;
    
    /**
     * Class CodeGenerator
     *
     * Generated unique, random Invite Codes
     */
    class CodeGenerator
    {
        /**
         * Generate a new, random Invite Code
         *
         * @return string
         * @throws \QUI\Exception
         */
        public static function generate()
        {
            $generator = '\\QUI\\ERP\\Coupons\\CodeGenerators\\' . self::getCurrentGenerator();
    
            $Config = QUI::getPackage('quiqqer/coupons')->getConfig();
            $prefix = $Config->get('settings', 'prefix');
    
            if (empty($prefix)) {
                $prefix = '';
            }
    
            return call_user_func($generator . '::generate', $prefix);
        }
    
        /**
         * Get CodeGenerator that is currently set
         *
         * @return string - FQ class name
         * @throws \QUI\Exception
         */
        protected static function getCurrentGenerator()
        {
            $Config           = QUI::getPackage('quiqqer/coupons')->getConfig();
            $currentGenerator = $Config->get('settings', 'codeGenerator');
    
            if (empty($currentGenerator)) {
                return 'SimpleString';
            }
    
            return $currentGenerator;
        }
    
        /**
         * Get list of all available CodeGenerators
         *
         * @return array
         * @throws \QUI\Exception
         */
        public static function getList()
        {
            $dir        = QUI::getPackage('quiqqer/coupons')->getDir() . 'src/QUI/ERP/Coupons/CodeGenerators';
            $generators = array();
    
            foreach (File::readDir($dir, true) as $file) {
                $generators[] = basename($file, '.php');
            }
    
            return $generators;
        }
    }