<?php

/**
 * Swift Mailer Address Container (purely for rigid RFC conformance)
 * Please read the LICENSE file
 * @copyright Chris Corbyn <chris@w3style.co.uk>
 * @author Chris Corbyn <chris@w3style.co.uk>
 * @package Swift
 * @license GNU Lesser General Public License
 */

require_once dirname(__FILE__) . "/ClassLoader.php";
Swift_ClassLoader::load("Swift_AddressContainer");

/**
 * Swift_Address is just a lone e-mail address reprsented as an object
 * @package Swift
 * @author Chris Corbyn <chris@w3style.co.uk>
 */
class Swift_Address extends Swift_AddressContainer
{
  /**
   * The e-mail address portion
   * @var string
   */
  protected $address = null;
  /**
   * The personal name part
   * @var string
   */
  protected $name = null;
  
  /**
   * Constructor
   * @param string The address portion
   * @param string The personal name, optional
   */
  public function __construct($address, $name=null)
  {
    $this->setAddress($address);
    if ($name !== null) $this->setName($name);
  }
  /**
   * Set the email address
   * @param string
   */
  public function setAddress($address)
  {
    $this->address = trim((string)$address);
  }
  /**
   * Get the address portion
   * @return string
   */
  public function getAddress()
  {
    return $this->address;
  }
  /**
   * Set the personal name
   * @param string
   */
  public function setName($name)
  {
    if ($name !== null) $this->name = (string) $name;
    else $this->name = null;
  }
  /**
   * Get personal name portion
   * @return string
   */
  public function getName()
  {
    return $this->name;
  }
  /**
   * Build the address the way it should be structured
   * @param boolean If the string will be sent to a SMTP server as an envelope
   * @return string
   */
  public function build($smtp=false)
  {
    if ($smtp)
    {
      return "<" . $this->address . ">";
    }
    else
    {
      if (($this->name !== null))
      {
        return $this->name . " <" . $this->address . ">";
      }
      else return $this->address;
    }
  }
  /**
   * PHP's casting conversion
   * @return string
   */
  public function __toString()
  {
    return $this->build(true);
  }
}