<?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 = []; foreach (File::readDir($dir, true) as $file) { $generators[] = \basename($file, '.php'); } return $generators; } }