![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-captcha/Helper/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Captcha\Helper; use Magento\Framework\App\Filesystem\DirectoryList; use Magento\Framework\Filesystem; use Magento\Framework\Filesystem\DriverInterface; /** * Captcha image model * * @api * @since 100.0.2 */ class Data extends \Magento\Framework\App\Helper\AbstractHelper { /** * Used for "name" attribute of captcha's input field */ const INPUT_NAME_FIELD_VALUE = 'captcha'; /** * Always show captcha */ const MODE_ALWAYS = 'always'; /** * Show captcha only after certain number of unsuccessful attempts */ const MODE_AFTER_FAIL = 'after_fail'; /** * Captcha fonts path */ const XML_PATH_CAPTCHA_FONTS = 'captcha/fonts'; /** * Default captcha type */ const DEFAULT_CAPTCHA_TYPE = 'Zend'; /** * List uses Models of Captcha * @var array */ protected $_captcha = []; /** * @var Filesystem */ protected $_filesystem; /** * @var \Magento\Store\Model\StoreManagerInterface */ protected $_storeManager; /** * @var \Magento\Captcha\Model\CaptchaFactory */ protected $_factory; /** * @param \Magento\Framework\App\Helper\Context $context * @param \Magento\Store\Model\StoreManagerInterface $storeManager * @param Filesystem $filesystem * @param \Magento\Captcha\Model\CaptchaFactory $factory */ public function __construct( \Magento\Framework\App\Helper\Context $context, \Magento\Store\Model\StoreManagerInterface $storeManager, Filesystem $filesystem, \Magento\Captcha\Model\CaptchaFactory $factory ) { $this->_storeManager = $storeManager; $this->_filesystem = $filesystem; $this->_factory = $factory; parent::__construct($context); } /** * Get Captcha * * @param string $formId * @return \Magento\Captcha\Model\CaptchaInterface */ public function getCaptcha($formId) { if (!array_key_exists($formId, $this->_captcha)) { $captchaType = ucfirst($this->getConfig('type')); if (!$captchaType) { $captchaType = self::DEFAULT_CAPTCHA_TYPE; } elseif ($captchaType == 'Default') { $captchaType = $captchaType . 'Model'; } $this->_captcha[$formId] = $this->_factory->create($captchaType, $formId); } return $this->_captcha[$formId]; } /** * Returns config value * * @param string $key The last part of XML_PATH_$area_CAPTCHA_ constant (case insensitive) * @param \Magento\Store\Model\Store $store * @return \Magento\Framework\App\Config\Element */ public function getConfig($key, $store = null) { return $this->scopeConfig->getValue( 'customer/captcha/' . $key, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $store ); } /** * Get list of available fonts. * * Return format: * [['arial'] => ['label' => 'Arial', 'path' => '/www/magento/fonts/arial.ttf']] * * @return array */ public function getFonts() { $fontsConfig = $this->scopeConfig->getValue(\Magento\Captcha\Helper\Data::XML_PATH_CAPTCHA_FONTS, 'default'); $fonts = []; if ($fontsConfig) { $libDir = $this->_filesystem->getDirectoryRead(DirectoryList::LIB_INTERNAL); foreach ($fontsConfig as $fontName => $fontConfig) { $fonts[$fontName] = [ 'label' => $fontConfig['label'], 'path' => $libDir->getAbsolutePath($fontConfig['path']), ]; } } return $fonts; } /** * Get captcha image directory * * @param mixed $website * @return string */ public function getImgDir($website = null) { // Captcha images are not re-used and should be stored only locally. $mediaDir = $this->_filesystem->getDirectoryWrite(DirectoryList::MEDIA, Filesystem\DriverPool::FILE); $captchaDir = '/captcha/' . $this->_getWebsiteCode($website); $mediaDir->create($captchaDir); return $mediaDir->getAbsolutePath($captchaDir) . '/'; } /** * Get website code * * @param mixed $website * @return string */ protected function _getWebsiteCode($website = null) { return $this->_storeManager->getWebsite($website)->getCode(); } /** * Get captcha image base URL * * @param mixed $website * @return string */ public function getImgUrl($website = null) { return $this->_storeManager->getStore()->getBaseUrl( DirectoryList::MEDIA ) . 'captcha' . '/' . $this->_getWebsiteCode( $website ) . '/'; } }