%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 3.12.149.174 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/main/lib/numerator/ |
Upload File : |
<? namespace Bitrix\Main\Numerator; use Bitrix\Main\Event; use Bitrix\Main\EventResult; /** * Class NumberGeneratorFactory * @package Bitrix\Main\Numerator */ class NumberGeneratorFactory { const EVENT_GENERATOR_CLASSES_COLLECT = 'onNumberGeneratorsClassesCollect'; /** * returns generator object, created based on its class * @param $type * @return mixed */ public function createGeneratorByType($type) { $class = $this->getClassByType($type); return new $class(); } /** * returns array where the keys are types of generators * and the values are generators classes * @return array */ public function getTypeToClassMap() { static $generatorTypeToClassMap = []; if (empty($generatorTypeToClassMap)) { $generatorClasses = [ Generator\SequentNumberGenerator::class, Generator\DateNumberGenerator::class, Generator\RandomNumberGenerator::class, Generator\PrefixNumberGenerator::class, ]; $generatorClasses = array_merge_recursive($generatorClasses, $this->collectCustomGeneratorClasses()); foreach ($generatorClasses as $generatorClass) { /** @var Generator\NumberGenerator $generatorClass */ $generatorTypeToClassMap[$generatorClass::getType()] = $generatorClass; } } return $generatorTypeToClassMap; } /** * @return string[] */ private function collectCustomGeneratorClasses() { $event = new Event('main', self::EVENT_GENERATOR_CLASSES_COLLECT); $event->send(); $results = $event->getResults(); $generatorClasses = []; foreach ($results as $result) { if ($result->getType() != EventResult::SUCCESS) { continue; } $className = $result->getParameters(); if (class_exists($className) && (is_subclass_of($className, Generator\NumberGenerator::class))) { $generatorClasses[] = $result->getParameters(); } } return $generatorClasses; } /** * returns class of generator by its type * @param $type * @return mixed|null */ public function getClassByType($type) { if (in_array($type, array_keys($this->getTypeToClassMap()))) { return $this->getTypeToClassMap()[$type]; } return null; } /** * returns all available generators classes * @return array */ public function getClasses() { return array_values($this->getTypeToClassMap()); } }