Seditio Source
Root |
./othercms/xenForo 2.2.8/src/vendor/laminas/laminas-mail/src/Header/Subject.php
<?php

/**
 * @see       https://github.com/laminas/laminas-mail for the canonical source repository
 * @copyright https://github.com/laminas/laminas-mail/blob/master/COPYRIGHT.md
 * @license   https://github.com/laminas/laminas-mail/blob/master/LICENSE.md New BSD License
 */

namespace Laminas\Mail\Header;

use
Laminas\Mime\Mime;

/**
 * Subject header class methods.
 *
 * @see https://tools.ietf.org/html/rfc2822 RFC 2822
 * @see https://tools.ietf.org/html/rfc2047 RFC 2047
 */
class Subject implements UnstructuredInterface
{
   
/**
     * @var string
     */
   
protected $subject = '';

   
/**
     * Header encoding
     *
     * @var null|string
     */
   
protected $encoding;

    public static function
fromString($headerLine)
    {
        list(
$name, $value) = GenericHeader::splitHeaderLine($headerLine);
       
$value = HeaderWrap::mimeDecodeValue($value);

       
// check to ensure proper header type for this factory
       
if (strtolower($name) !== 'subject') {
            throw new
Exception\InvalidArgumentException('Invalid header line for Subject string');
        }

       
$header = new static();
       
$header->setSubject($value);

        return
$header;
    }

    public function
getFieldName()
    {
        return
'Subject';
    }

    public function
getFieldValue($format = HeaderInterface::FORMAT_RAW)
    {
        if (
HeaderInterface::FORMAT_ENCODED === $format) {
            return
HeaderWrap::wrap($this->subject, $this);
        }

        return
$this->subject;
    }

    public function
setEncoding($encoding)
    {
        if (
$encoding === $this->encoding) {
            return
$this;
        }

        if (
$encoding === null) {
           
$this->encoding = null;
            return
$this;
        }

       
$encoding = strtoupper($encoding);
        if (
$encoding === 'UTF-8') {
           
$this->encoding = $encoding;
            return
$this;
        }

        if (
$encoding === 'ASCII' && Mime::isPrintable($this->subject)) {
           
$this->encoding = $encoding;
            return
$this;
        }

       
$this->encoding = null;

        return
$this;
    }

    public function
getEncoding()
    {
        if (!
$this->encoding) {
           
$this->encoding = Mime::isPrintable($this->subject) ? 'ASCII' : 'UTF-8';
        }

        return
$this->encoding;
    }

    public function
setSubject($subject)
    {
       
$subject = (string) $subject;

        if (!
HeaderWrap::canBeEncoded($subject)) {
            throw new
Exception\InvalidArgumentException(
               
'Subject value must be composed of printable US-ASCII or UTF-8 characters.'
           
);
        }

       
$this->subject  = $subject;
       
$this->encoding = null;

        return
$this;
    }

    public function
toString()
    {
        return
'Subject: ' . $this->getFieldValue(HeaderInterface::FORMAT_ENCODED);
    }
}