/
home
/
suroeste
/
public_html
/
wp-content
/
plugins
/
wp-mail-smtp
/
src
/
Queue
/
/home/suroeste/public_html/wp-content/plugins/wp-mail-smtp/src/Queue
mkdir
upload
Name
Size
Mode
Actions
Attachments.php
6122
0644
edit
dl
rm
Email.php
10937
0644
edit
dl
rm
Migration.php
1841
0644
edit
dl
rm
Queue.php
18237
0644
edit
dl
rm
Edit:
/home/suroeste/public_html/wp-content/plugins/wp-mail-smtp/src/Queue/Attachments.php
(6122B)
<?php namespace WPMailSMTP\Queue; use RecursiveDirectoryIterator; use RecursiveIteratorIterator; use WPMailSMTP\Uploads; /** * Class Attachments. * * @since 4.0.0 */ class Attachments { /** * Process a list of file attachments. * * @since 4.0.0 * * @param array $attachments List of attachments. * * @return array List of attachments. */ public function process_attachments( $attachments ) { $attachments = array_map( function( $attachment ) { [ $path, , $name, , , $is_string_attachment ] = $attachment; $path = $this->process_attachment( $path, $name, $is_string_attachment ); if ( ! empty( $path ) ) { $attachment[0] = $path; } return $attachment; }, $attachments ); return $attachments; } /** * Process an attachment,obfuscating its path * and storing its file on disk. * * @since 4.0.0 * * @param string $path The path to obfuscate. * @param string $name The name of the file at $path. * @param bool $is_string_attachment Whether this attachment is a string attachment. * * @return string|false New path of the attachment, or false for no path. */ private function process_attachment( $path, $name = '', $is_string_attachment = false ) { $file_content = $this->get_attachment_file_content( $path, $is_string_attachment ); if ( $file_content === false ) { return false; } if ( ! $is_string_attachment && $name === '' ) { $name = wp_basename( $path ); } $name = sanitize_file_name( $name ); $obfuscated_path = $this->store_file( $file_content, $name ); if ( empty( $obfuscated_path ) ) { return $path; } return $obfuscated_path; } /** * Return the contents of a given file. * * @since 4.0.0 * * @param string $path The file's path. * @param bool $is_string_attachment Whether this file is a string attachment. * * @return string File contents. */ private function get_attachment_file_content( $path, $is_string_attachment ) { if ( ! $is_string_attachment ) { if ( ! file_exists( $path ) ) { return false; } return file_get_contents( $path ); } return $path; } /** * Store a file. * * @since 4.0.0 * * @param string $file_content The file's contents. * @param string $original_filename The original file's name. * * @return string The file's path. */ private function store_file( $file_content, $original_filename ) { $uploads_directory = $this->get_uploads_directory(); if ( is_wp_error( $uploads_directory ) ) { return false; } if ( ! is_dir( $uploads_directory ) ) { wp_mkdir_p( $uploads_directory ); // Check if the .htaccess exists in the root upload directory, if not - create it. Uploads::create_upload_dir_htaccess_file(); // Check if the index.html exists in the directories, if not - create them. Uploads::create_index_html_file( Uploads::upload_dir()['path'] ); Uploads::create_index_html_file( $uploads_directory ); } $file_extension = pathinfo( $original_filename, PATHINFO_EXTENSION ); $filename = wp_unique_filename( $uploads_directory, wp_generate_password( 32, false, false ) . '.' . $file_extension ); $uploads_directory = trailingslashit( $uploads_directory ); if ( ! is_writeable( $uploads_directory ) ) { return false; } $upload_path = $uploads_directory . $filename; if ( file_put_contents( $upload_path, $file_content ) !== false ) { // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents return $upload_path; } return false; } /** * Delete attachments, removing their files from disk. * * @since 4.0.0 * * @param null|array $attachments List of attachments to cleanup, or null for all attachments. * @param null|DateTime $before_datetime The datetime attachments should be older than * to be removed, or null for all attachments. * * @return void. */ public function delete_attachments( $attachments = null, $before_datetime = null ) { // phpcs:ignore Generic.Metrics.CyclomaticComplexity.TooHigh $uploads_directory = $this->get_uploads_directory(); if ( is_wp_error( $uploads_directory ) || ! is_dir( $uploads_directory ) ) { return; } $files = []; // If no attachment list is provided, just iterate over all files in our uploads directory. if ( is_null( $attachments ) ) { $nodes = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $uploads_directory, RecursiveDirectoryIterator::SKIP_DOTS ), RecursiveIteratorIterator::CHILD_FIRST ); $files = []; foreach ( $nodes as $fileinfo ) { if ( ! $fileinfo->isDir() ) { $files[] = $fileinfo->getRealPath(); } } } else { // Map attachments to their paths. $files = wp_list_pluck( $attachments, 0 ); // Exclude any files that aren't in our uploads directory. $files = array_filter( $files, function( $file ) use ( $uploads_directory ) { return trailingslashit( dirname( $file ) ) === $uploads_directory; } ); } // Skip any file that doesn't exist. $files = array_filter( $files, function( $file ) { return file_exists( $file ); } ); if ( ! is_null( $before_datetime ) ) { // Skip any file that isn't older than the provided datetime. $before_timestamp = $before_datetime->getTimestamp(); $files = array_filter( $files, function( $file ) use ( $before_timestamp ) { return ( filemtime( $file ) !== false && filemtime( $file ) < $before_timestamp ); } ); } foreach ( $files as $file ) { @unlink( $file ); } } /** * Get the upload directory path. * * @since 4.0.0 * * @return string|WP_Error The upload directory path. */ private function get_uploads_directory() { $uploads_directory = Uploads::upload_dir(); if ( is_wp_error( $uploads_directory ) ) { return $uploads_directory; } return trailingslashit( trailingslashit( $uploads_directory['path'] ) . 'queue_attachments' ); } }
Save
cmd:
run