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