Automattic\WooCommerce\Internal\Admin\Logging\FileV2

File::rotate()publicWC 1.0

Rename this file with an incremented rotation number.

Method of the class: File{}

No Hooks.

Return

true|false. True if the file was successfully rotated.

Usage

$File = new File();
$File->rotate(): bool;

File::rotate() code WC 9.3.3

public function rotate(): bool {
	if ( ! $this->is_writable() ) {
		return false;
	}

	$created = 0;
	if ( $this->has_standard_filename() ) {
		$created = $this->get_created_timestamp();
	}

	if ( is_null( $this->get_rotation() ) ) {
		$new_rotation = 0;
	} else {
		$new_rotation = $this->get_rotation() + 1;
	}

	$new_file_id = static::generate_file_id( $this->get_source(), $new_rotation, $created );

	$search  = array( $this->get_file_id() );
	$replace = array( $new_file_id );
	if ( $this->has_standard_filename() ) {
		$search[]  = $this->get_hash();
		$replace[] = static::generate_hash( $new_file_id );
	}

	$old_filename = $this->get_basename();
	$new_filename = str_replace( $search, $replace, $old_filename );
	$new_path     = str_replace( $old_filename, $new_filename, $this->path );

	try {
		$filesystem = FilesystemUtil::get_wp_filesystem();
		$moved      = $filesystem->move( $this->path, $new_path, true );
	} catch ( Exception $exception ) {
		return false;
	}

	if ( ! $moved ) {
		return false;
	}

	$this->path = $new_path;
	$this->ingest_path();

	return $this->is_readable();
}