Spamworldpro Mini Shell
Spamworldpro


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-import-export/Model/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/magento/module-import-export/Model/LocalizedFileName.php
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
declare(strict_types=1);

namespace Magento\ImportExport\Model;

use DateTime;
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;

/**
 * Localized filename model
 */
class LocalizedFileName
{
    /**
     * date format regex map
     */
    private const DATE_FORMAT_TO_REGEX = [
        'Y' => '\d{4}',
        'y' => '\d{2}',
        'm' => '\d{2}',
        'n' => '\d{1,2}',
        'M' => '[A-Z][a-z]{3}',
        'F' => '[A-Z][a-z]{2,8}',
        'd' => '\d{2}',
        'j' => '\d{1,2}',
        'D' => '[A-Z][a-z]{2}',
        'l' => '[A-Z][a-z]{6,9}',
        'u' => '\d{1,6}',
        'h' => '\d{2}',
        'H' => '\d{2}',
        'g' => '\d{1,2}',
        'G' => '\d{1,2}',
        'i' => '\d{2}',
        's' => '\d{2}'
    ];

    /**
     * @var TimezoneInterface
     */
    private $timezone;

    /**
     * @var array
     */
    private $dateFormats;

    /**
     * @param TimezoneInterface $timezone
     * @param array $dateFormats
     */
    public function __construct(
        TimezoneInterface $timezone,
        array $dateFormats = []
    ) {
        $this->timezone = $timezone;
        $this->dateFormats = $dateFormats;
    }

    /**
     * Get file display name
     *
     * @param string $filename
     * @return string
     */
    public function getFileDisplayName(string $filename): string
    {
        $displayName = $filename;
        foreach ($this->dateFormats as $dateFormat) {
            $utcDate = $this->parseDateFromFilename($filename, $dateFormat);
            if ($utcDate) {
                $utcDateString = $utcDate->format($dateFormat);
                $scopeDate = $this->timezone->scopeDate(null, $utcDate, true);
                $displayName = str_replace($utcDateString, $scopeDate->format($dateFormat), $filename);
                break;
            }
        }
        return $displayName;
    }

    /**
     * Parse date from filename
     *
     * @param string $filename
     * @param string $dateFormat
     * @return DateTime|null
     */
    private function parseDateFromFilename(string $filename, string $dateFormat): ?DateTime
    {
        $date = null;
        $regex = $this->convertDateFormatToRegex($dateFormat);
        if (preg_match("/$regex/", $filename, $result)) {
            $date = date_create_from_format($dateFormat, $result[0]);
            if (!$date || $date->format($dateFormat) !== $result[0]) {
                $date = null;
            }
        }
        return $date;
    }

    /**
     * Convert date format to regex format
     *
     * @param string $dateFormat
     * @return string
     */
    private function convertDateFormatToRegex(string $dateFormat): string
    {
        $regex = '';
        $escape = '\\';
        $chars = str_split($dateFormat);
        foreach ($chars as $pos => $char) {
            $lastChar = $chars[$pos - 1] ?? '';
            if ($lastChar !== $escape && isset(self::DATE_FORMAT_TO_REGEX[$char])) {
                $regex .= self::DATE_FORMAT_TO_REGEX[$char];
            } elseif ($char === $escape) {
                $regex .= $char;
            } else {
                $regex .= preg_quote($char);
            }
        }
        return $regex;
    }
}

Spamworldpro Mini