forena-8.x-1.x-dev/src/DocManager.php

src/DocManager.php
<?php
/**
 * Created by PhpStorm.
 * User: metzlerd
 * Date: 2/6/16
 * Time: 9:07 PM
 */

namespace Drupal\forena;

/**
 * Implements \Drupal\forena\DocManager
 * @package Drupal\forena
 */
class DocManager {
  private static $instance;
  private $writers = [];
  private $type;

  /** @var array  */
  protected $docTypes;

  /**
   * @return \Drupal\forena\DocManager
   */
  static public function instance() {
    if (static::$instance === null) {
      static::$instance = new static();
    }
    return static::$instance;
  }

  /**
   * Initilaize Document Manager
   */
  public function __construct() {
    // Determine plugins
    /** @var \Drupal\forena\FrxDocumentPluginManager $pm */
    $this->docTypes = AppService::instance()->getDocumentPlugins();
    $this->setDocument('drupal');
  }

  /**
   * @param string $type
   *   Document type
   * @return \Drupal\forena\FrxPlugin\Document\DocumentInterface
   *   Generated class
   */
  public function setDocument($type='') {
    if (!$type) $type = 'drupal';
    if (!isset($this->writers[$type])) {
      $class = $this->docTypes[$type];
      $this->writers[$type] = new $class();
    }
    $this->type = $type;
    return $this->writers[$this->type];
  }

  /**
   * Gets current document.
   * @return \Drupal\forena\FrxPlugin\Document\DocumentBase
   */
  public function getDocument() {
    return $this->writers[$this->type];
  }

  /**
   * @return string
   *   Document type of current document.
   */
  public function getDocumentType() {
    return $this->type;
  }

  /**
   * Return a list of document types.
   * @return array
   *   List of doctype extensions possible.
   */
  public function getDocTypes() {
    return array_keys($this->docTypes);
  }

  /**
   * @param string $base_name
   *   Name of file to set.
   */
  public function setFilename($base_name) {
    $ext = $this->getDocumentType();
    $this->getDocument()->setFilename("$base_name.$ext");
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc