Automattic\WooCommerce\Internal\TransientFiles

TransientFilesEngine::create_transient_file()publicWC 1.0

Create a transient file.

Метод класса: TransientFilesEngine{}

Хуков нет.

Возвращает

Строку. The name of the transient file created (without path information).

Использование

$TransientFilesEngine = new TransientFilesEngine();
$TransientFilesEngine->create_transient_file( $file_contents, $expiration_date ): string;
$file_contents(строка) (обязательный)
The contents of the file.
$expiration_date(строка|int) (обязательный)
A string representing the expiration date formatted as "yyyy-mm-dd", or a number representing the expiration date as a timestamp (the time of day part will be ignored).

Код TransientFilesEngine::create_transient_file() WC 9.6.1

public function create_transient_file( string $file_contents, $expiration_date ): string {
	if ( is_numeric( $expiration_date ) ) {
		$expiration_date = gmdate( 'Y-m-d', $expiration_date );
	} elseif ( ! is_string( $expiration_date ) || ! TimeUtil::is_valid_date( $expiration_date, 'Y-m-d' ) ) {
		$expiration_date = is_scalar( $expiration_date ) ? $expiration_date : gettype( $expiration_date );
		throw new InvalidArgumentException( "$expiration_date is not a valid date, expected format: YYYY-MM-DD" );
	}

	$expiration_date_object = DateTime::createFromFormat( 'Y-m-d', $expiration_date, TimeUtil::get_utc_date_time_zone() );
	$today_date_object      = new DateTime( $this->legacy_proxy->call_function( 'gmdate', 'Y-m-d' ), TimeUtil::get_utc_date_time_zone() );

	if ( $expiration_date_object < $today_date_object ) {
		throw new InvalidArgumentException( "The supplied expiration date, $expiration_date, is in the past" );
	}

	$filename = bin2hex( $this->legacy_proxy->call_function( 'random_bytes', 16 ) );

	$transient_files_directory  = $this->get_transient_files_directory();
	$transient_files_directory .= '/' . $expiration_date_object->format( 'Y-m-d' );
	if ( ! $this->legacy_proxy->call_function( 'is_dir', $transient_files_directory ) ) {
		if ( ! $this->legacy_proxy->call_function( 'wp_mkdir_p', $transient_files_directory ) ) {
			throw new Exception( "Can't create directory: $transient_files_directory" );
		}
	}
	$filepath = $transient_files_directory . '/' . $filename;

	require_once ABSPATH . 'wp-admin/includes/file.php';
	\WP_Filesystem();
	$wp_filesystem = $this->legacy_proxy->get_global( 'wp_filesystem' );
	if ( false === $wp_filesystem->put_contents( $filepath, $file_contents ) ) {
		throw new Exception( "Can't create file: $filepath" );
	}

	return sprintf(
		'%03x%01x%02x%s',
		$expiration_date_object->format( 'Y' ),
		$expiration_date_object->format( 'm' ),
		$expiration_date_object->format( 'd' ),
		$filename
	);
}