/home/ivoiecob/email.hirewise-va.com/vendor/afterlogic/mailso/lib/MailSo/Mime/Attachment.php
<?php
/**
 * This code is licensed under AGPLv3 license or Afterlogic Software License
 * if commercial version of the product was purchased.
 * For full statements of the licenses see LICENSE-AFTERLOGIC and LICENSE-AGPL3 files.
 */

namespace MailSo\Mime;

/**
 * @license https://www.gnu.org/licenses/agpl-3.0.html AGPL-3.0
 * @license https://afterlogic.com/products/common-licensing Afterlogic Software License
 * @copyright Copyright (c) 2019, Afterlogic Corp.
 *
 * @category MailSo
 * @package Mime
 */
class Attachment
{
    /**
     * @var resource
     */
    private $rResource;

    /**
     * @var string
     */
    private $sFileName;

    /**
     * @var int
     */
    private $iFileSize;

    /**
     * @var string
     */
    private $sCID;

    /**
     * @var bool
     */
    private $bIsInline;

    /**
     * @var bool
     */
    private $bIsLinked;

    /**
     * @var array
     */
    private $aCustomContentTypeParams;

    /**
     * @var string
     */
    private $sContentLocation;

    /**
     * @access private
     */
    private function __construct(
        $rResource,
        $sFileName,
        $iFileSize,
        $bIsInline,
        $bIsLinked,
        $sCID,
        $aCustomContentTypeParams = array(),
        $sContentLocation = ''
    ) {
        $this->rResource = $rResource;
        $this->sFileName = $sFileName;
        $this->iFileSize = $iFileSize;
        $this->bIsInline = $bIsInline;
        $this->bIsLinked = $bIsLinked;
        $this->sCID = $sCID;
        $this->aCustomContentTypeParams = $aCustomContentTypeParams;
        $this->sContentLocation = $sContentLocation;
    }

    /**
     * @param resource $rResource
     * @param string $sFileName = ''
     * @param int $iFileSize = 0
     * @param bool $bIsInline = false
     * @param bool $bIsLinked = false
     * @param string $sCID = ''
     * @param array $aCustomContentTypeParams = array()
     * @param string $sContentLocation = ''
     *
     * @return \MailSo\Mime\Attachment
     */
    public static function NewInstance(
        $rResource,
        $sFileName = '',
        $iFileSize = 0,
        $bIsInline = false,
        $bIsLinked = false,
        $sCID = '',
        $aCustomContentTypeParams = array(),
        $sContentLocation = ''
    ) {
        return new self($rResource, $sFileName, $iFileSize, $bIsInline, $bIsLinked, $sCID, $aCustomContentTypeParams, $sContentLocation);
    }

    /**
     * @return resource
     */
    public function Resource()
    {
        return $this->rResource;
    }

    /**
     * @return string
     */
    public function ContentType()
    {
        return \MailSo\Base\Utils::MimeContentType($this->sFileName);
    }

    /**
     * @return array
     */
    public function CustomContentTypeParams()
    {
        return $this->aCustomContentTypeParams;
    }

    /**
     * @return string
     */
    public function CID()
    {
        return $this->sCID;
    }

    /**
     * @return string
     */
    public function ContentLocation()
    {
        return $this->sContentLocation;
    }

    /**
     * @return string
     */
    public function FileName()
    {
        return $this->sFileName;
    }

    /**
     * @return int
     */
    public function fileSize()
    {
        return $this->iFileSize;
    }

    /**
     * @return bool
     */
    public function IsInline()
    {
        return $this->bIsInline;
    }

    /**
     * @return bool
     */
    public function IsImage()
    {
        return 'image' === \MailSo\Base\Utils::ContentTypeType($this->ContentType(), $this->FileName());
    }

    /**
     * @return bool
     */
    public function IsArchive()
    {
        return 'archive' === \MailSo\Base\Utils::ContentTypeType($this->ContentType(), $this->FileName());
    }

    /**
     * @return bool
     */
    public function IsPdf()
    {
        return 'pdf' === \MailSo\Base\Utils::ContentTypeType($this->ContentType(), $this->FileName());
    }

    /**
     * @return bool
     */
    public function IsDoc()
    {
        return 'doc' === \MailSo\Base\Utils::ContentTypeType($this->ContentType(), $this->FileName());
    }

    /**
     * @return bool
     */
    public function IsLinked()
    {
        return $this->bIsLinked && 0 < \strlen($this->sCID);
    }
}