abstract class AbstractOperation in Plug 7
Base catalogues binary operation class.
@author Jean-François Simon <contact@jfsimon.fr>
Hierarchy
- class \Symfony\Component\Translation\Catalogue\AbstractOperation implements OperationInterface
Expanded class hierarchy of AbstractOperation
File
- lib/Symfony/ translation/ Catalogue/ AbstractOperation.php, line 22 
Namespace
Symfony\Component\Translation\CatalogueView source
abstract class AbstractOperation implements OperationInterface {
  /**
   * @var MessageCatalogueInterface
   */
  protected $source;
  /**
   * @var MessageCatalogueInterface
   */
  protected $target;
  /**
   * @var MessageCatalogue
   */
  protected $result;
  /**
   * @var null|array
   */
  private $domains;
  /**
   * @var array
   */
  protected $messages;
  /**
   * @param MessageCatalogueInterface $source
   * @param MessageCatalogueInterface $target
   *
   * @throws \LogicException
   */
  public function __construct(MessageCatalogueInterface $source, MessageCatalogueInterface $target) {
    if ($source
      ->getLocale() !== $target
      ->getLocale()) {
      throw new \LogicException('Operated catalogues must belong to the same locale.');
    }
    $this->source = $source;
    $this->target = $target;
    $this->result = new MessageCatalogue($source
      ->getLocale());
    $this->domains = null;
    $this->messages = array();
  }
  /**
   * {@inheritdoc}
   */
  public function getDomains() {
    if (null === $this->domains) {
      $this->domains = array_values(array_unique(array_merge($this->source
        ->getDomains(), $this->target
        ->getDomains())));
    }
    return $this->domains;
  }
  /**
   * {@inheritdoc}
   */
  public function getMessages($domain) {
    if (!in_array($domain, $this
      ->getDomains())) {
      throw new \InvalidArgumentException(sprintf('Invalid domain: %s.', $domain));
    }
    if (!isset($this->messages[$domain]['all'])) {
      $this
        ->processDomain($domain);
    }
    return $this->messages[$domain]['all'];
  }
  /**
   * {@inheritdoc}
   */
  public function getNewMessages($domain) {
    if (!in_array($domain, $this
      ->getDomains())) {
      throw new \InvalidArgumentException(sprintf('Invalid domain: %s.', $domain));
    }
    if (!isset($this->messages[$domain]['new'])) {
      $this
        ->processDomain($domain);
    }
    return $this->messages[$domain]['new'];
  }
  /**
   * {@inheritdoc}
   */
  public function getObsoleteMessages($domain) {
    if (!in_array($domain, $this
      ->getDomains())) {
      throw new \InvalidArgumentException(sprintf('Invalid domain: %s.', $domain));
    }
    if (!isset($this->messages[$domain]['obsolete'])) {
      $this
        ->processDomain($domain);
    }
    return $this->messages[$domain]['obsolete'];
  }
  /**
   * {@inheritdoc}
   */
  public function getResult() {
    foreach ($this
      ->getDomains() as $domain) {
      if (!isset($this->messages[$domain])) {
        $this
          ->processDomain($domain);
      }
    }
    return $this->result;
  }
  /**
   * @param string $domain
   */
  protected abstract function processDomain($domain);
} 
      