%PDF- %PDF-
Direktori : /home/silvzytp/crm-dub-code/vendor/laravel/framework/src/Illuminate/Mail/ |
Current File : //home/silvzytp/crm-dub-code/vendor/laravel/framework/src/Illuminate/Mail/Attachment.php |
<?php namespace Illuminate\Mail; use Closure; use Illuminate\Container\Container; use Illuminate\Contracts\Filesystem\Factory as FilesystemFactory; use Illuminate\Support\Traits\Macroable; class Attachment { use Macroable; /** * The attached file's filename. * * @var string|null */ public $as; /** * The attached file's mime type. * * @var string|null */ public $mime; /** * A callback that attaches the attachment to the mail message. * * @var \Closure */ protected $resolver; /** * Create a mail attachment. * * @param \Closure $resolver * @return void */ private function __construct(Closure $resolver) { $this->resolver = $resolver; } /** * Create a mail attachment from a path. * * @param string $path * @return static */ public static function fromPath($path) { return new static(fn ($attachment, $pathStrategy) => $pathStrategy($path, $attachment)); } /** * Create a mail attachment from in-memory data. * * @param \Closure $data * @param string $name * @return static */ public static function fromData(Closure $data, $name) { return (new static( fn ($attachment, $pathStrategy, $dataStrategy) => $dataStrategy($data, $attachment) ))->as($name); } /** * Create a mail attachment from a file in the default storage disk. * * @param string $path * @return static */ public static function fromStorage($path) { return static::fromStorageDisk(null, $path); } /** * Create a mail attachment from a file in the specified storage disk. * * @param string|null $disk * @param string $path * @return static */ public static function fromStorageDisk($disk, $path) { return new static(function ($attachment, $pathStrategy, $dataStrategy) use ($disk, $path) { $storage = Container::getInstance()->make( FilesystemFactory::class )->disk($disk); $attachment ->as($attachment->as ?? basename($path)) ->withMime($attachment->mime ?? $storage->mimeType($path)); return $dataStrategy(fn () => $storage->get($path), $attachment); }); } /** * Set the attached file's filename. * * @param string $name * @return $this */ public function as($name) { $this->as = $name; return $this; } /** * Set the attached file's mime type. * * @param string $mime * @return $this */ public function withMime($mime) { $this->mime = $mime; return $this; } /** * Attach the attachment with the given strategies. * * @param \Closure $pathStrategy * @param \Closure $dataStrategy * @return mixed */ public function attachWith(Closure $pathStrategy, Closure $dataStrategy) { return ($this->resolver)($this, $pathStrategy, $dataStrategy); } /** * Attach the attachment to a built-in mail type. * * @param \Illuminate\Mail\Mailable|\Illuminate\Mail\Message|\Illuminate\Notifications\Messages\MailMessage $mail * @return mixed */ public function attachTo($mail) { return $this->attachWith( fn ($path) => $mail->attach($path, ['as' => $this->as, 'mime' => $this->mime]), fn ($data) => $mail->attachData($data(), $this->as, ['mime' => $this->mime]) ); } /** * Determine if the given attachment is equivalent to this attachment. * * @param \Illuminate\Mail\Attachment $attachment * @return bool */ public function isEquivalent(Attachment $attachment) { return $this->attachWith( fn ($path) => [$path, ['as' => $this->as, 'mime' => $this->mime]], fn ($data) => [$data(), ['as' => $this->as, 'mime' => $this->mime]], ) === $attachment->attachWith( fn ($path) => [$path, ['as' => $attachment->as, 'mime' => $attachment->mime]], fn ($data) => [$data(), ['as' => $attachment->as, 'mime' => $attachment->mime]], ); } }