* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Core\Domain\SqlManagement\Command; use PrestaShop\PrestaShop\Core\Domain\SqlManagement\Exception\SqlRequestSettingsConstraintException; use PrestaShop\PrestaShop\Core\Encoding\CharsetEncoding; /** * Class SaveSqlManagerSettingsCommand saves default file encoding settings * for SqlRequest's query result export file. */ class SaveSqlRequestSettingsCommand { /** * @var string */ private $fileEncoding; /** * @param string $fileEncoding * * @throws SqlRequestSettingsConstraintException */ public function __construct($fileEncoding) { $this->setFileEncoding($fileEncoding); } /** * @return string */ public function getFileEncoding() { return $this->fileEncoding; } /** * @param string $fileEncoding * * @return self * * @throws SqlRequestSettingsConstraintException */ private function setFileEncoding($fileEncoding) { if (!is_string($fileEncoding) || empty($fileEncoding)) { throw new SqlRequestSettingsConstraintException(sprintf('Invalid File Encoding %s supplied', var_export($fileEncoding, true)), SqlRequestSettingsConstraintException::INVALID_FILE_ENCODING); } $supportedFileEncodings = [ CharsetEncoding::ISO_8859_1, CharsetEncoding::UTF_8, ]; if (!in_array($fileEncoding, $supportedFileEncodings)) { throw new SqlRequestSettingsConstraintException(sprintf('Not supported File Encoding %s supplied. Supported encodings are %s', var_export($fileEncoding, true), var_export(implode(',', $supportedFileEncodings), true)), SqlRequestSettingsConstraintException::NOT_SUPPORTED_FILE_ENCODING); } $this->fileEncoding = $fileEncoding; return $this; } }