Files
hub-insurance/wp-content/plugins/gravitysmtp/includes/utils/class-attachments-saver.php
T
2026-07-02 15:54:39 -06:00

71 lines
2.3 KiB
PHP

<?php
namespace Gravity_Forms\Gravity_SMTP\Utils;
use Gravity_Forms\Gravity_SMTP\Logging\Debug\Debug_Logger;
class Attachments_Saver {
/**
* @var Debug_Logger
*/
protected $logger;
public function __construct( $logger ) {
$this->logger = $logger;
}
public function save_attachments( $email_id, $attachments ) {
$uploads_dir = $this->get_uploads_dir_path( $email_id, $attachments );
$new_attachments = array();
if ( ! is_dir( $uploads_dir ) ) {
/* translators: %1$s: directory path */
$this->logger->log_debug( __METHOD__ . '(): ' . sprintf( __( 'Creating a new uploads directory at path: %1$s', 'gravitysmtp' ), $uploads_dir ) );
mkdir( $uploads_dir, 0755, true );
}
foreach ( $attachments as $file_path ) {
if ( ! file_exists( $file_path ) ) {
/* translators: %1$s: file path */
$this->logger->log_warning( __METHOD__ . '(): ' . sprintf( __( 'Could not locate file at path: %1$s', 'gravitysmtp' ), $file_path ) );
continue;
}
$file_name = basename( $file_path );
$contents = file_get_contents( $file_path );
$new_path = sprintf( '%s%s', trailingslashit( $uploads_dir ), $file_name );
/* translators: %1$s: file name, %2$s: new path */
$this->logger->log_debug( __METHOD__ . '(): ' . sprintf( __( '%1$s being moved to new location: %2$s', 'gravitysmtp' ), $file_name, $new_path ) );
file_put_contents( $new_path, $contents );
$new_attachments[] = $new_path;
}
return $new_attachments;
}
public function get_saved_attachment( $email_id, $og_path ) {
$file_basename = basename( $og_path );
$uploads_dir = $this->get_uploads_dir_path( $email_id, array( $og_path ) );
return sprintf( '%s%s', trailingslashit( $uploads_dir ), $file_basename );
}
private function get_uploads_dir_path( $email_id, $attachments ) {
$upload_base = wp_get_upload_dir()['basedir'];
$uploads_dir = sprintf( '%s/gravitysmtp/attachments/%s/', untrailingslashit( $upload_base ), $email_id );
/**
* Allows third-party code to modify where attachments are stored for a given upload.
*
* @param string $uploads_dir the current directory for uploading this file
* @param int $email_id the current email ID
* @param array $attachments an array of attachment paths
*/
return apply_filters( 'gravitysmtp_attachment_uploads_dir_path', $uploads_dir, $email_id, $attachments );
}
}