You are here

class CmisRepositoryController in CMIS API 8

Same name and namespace in other branches
  1. 8.2 src/Controller/CmisRepositoryController.php \Drupal\cmis\Controller\CmisRepositoryController
  2. 3.0.x src/Controller/CmisRepositoryController.php \Drupal\cmis\Controller\CmisRepositoryController

Class CmisRepositoryController.

@package Drupal\cmis\Controller

Hierarchy

Expanded class hierarchy of CmisRepositoryController

File

src/Controller/CmisRepositoryController.php, line 13

Namespace

Drupal\cmis\Controller
View source
class CmisRepositoryController extends ControllerBase {
  private $browser;
  private $connection;

  /**
   * Construct.
   *
   * @param string $config
   * @param string $folder_id
   */
  public function __construct($config = '', $folder_id = '') {
    if (!empty($config) && !empty($folder_id)) {
      $this
        ->initBrowser($config, $folder_id);
    }
  }

  /**
   * Browse.
   *
   * @param type $config
   * @param type $folder_name
   *
   * @return string
   *   Return cmis browser render array or warning.
   */
  public function browse($config = '', $folder_id = '') {
    if (empty($this->browser)) {
      $this
        ->initBrowser($config, $folder_id);
    }
    if (!empty($this->browser
      ->getCurrent())) {
      $cacheable = $this->browser
        ->getConnection()
        ->getConfig()
        ->getCmisCacheable();
      return $this->browser
        ->browse(!$cacheable);
    }
  }

  /**
   * Get prperties
   *
   * @param string $config
   * @param string $document_id
   *
   * @return array
   *    Return properties table render array.
   */
  public function getProperties($config = '', $document_id = '') {
    if (empty($this->browser)) {
      $this
        ->initBrowser($config, $document_id);
    }
    if (!empty($this->browser
      ->getCurrent())) {
      return $this->browser
        ->getDocumentProperties();
    }
  }

  /**
   * Object delete verify popup.
   *
   * @param string $config
   * @param string $document_id
   */
  public function objectDeleteVerify($config = '', $object_id = '') {
    $parameters = \Drupal::request()->query
      ->all();
    unset($parameters['_wrapper_format']);
    $type = '';
    $name = '';
    if (!empty($parameters['type']) && !empty($config) && !empty($object_id) && (!empty($parameters['parent']) || !empty($parameters['query_string']))) {
      $this
        ->setConnection($config);
      if ($this->connection) {
        if ($current = $this->connection
          ->getObjectById($object_id)) {
          $type = $current
            ->getBaseTypeId()
            ->__toString();
          $name = $current
            ->getName();
        }
        else {
          return [
            '#theme' => 'cmis_object_delete_verify',
            '#title' => $this
              ->t("Object can't delete"),
            '#description' => $this
              ->t('Object not found in repository.'),
            '#link' => '',
          ];
        }
      }
    }
    else {
      return [
        '#theme' => 'cmis_object_delete_verify',
        '#title' => $this
          ->t("Object can't delete"),
        '#description' => $this
          ->t('Argument or parameter missed.'),
        '#link' => '',
      ];
    }
    $args = [
      '@type' => str_replace('cmis:', '', $type),
      '@name' => $name,
    ];
    $url = \Drupal\Core\Url::fromUserInput('/cmis/object-delete/' . $config . '/' . $object_id);
    $link_options = [
      'query' => $parameters,
    ];
    $url
      ->setOptions($link_options);
    $path = \Drupal\Core\Link::fromTextAndUrl(t('Delete'), $url)
      ->toRenderable();
    $link = render($path);
    return [
      '#theme' => 'cmis_object_delete_verify',
      '#title' => $this
        ->t('Are you sure you want to delete @type name @name', $args),
      '#description' => $this
        ->t('This action cannot be undone.'),
      '#link' => $link,
    ];
  }

  /**
   * Object delete popup.
   *
   * @param string $config
   * @param string $document_id
   */
  public function objectDelete($config = '', $object_id = '') {
    $parameters = \Drupal::request()->query
      ->all();
    $type = '';
    $name = '';
    if (!empty($parameters['type']) && !empty($config) && !empty($object_id) && (!empty($parameters['parent']) || !empty($parameters['query_string']))) {
      switch ($parameters['type']) {
        case 'browser':
          $redirect = $this
            ->redirect('cmis.cmis_repository_controller_browser', [
            'config' => $config,
          ]);
          break;
        case 'query':
          $parameters += [
            'config' => $config,
          ];
          $redirect = $this
            ->redirect('cmis.cmis_query_form_callback', [], [
            'query' => $parameters,
          ]);
          break;
        default:

          // Back to frontpage if not browser or not query.
          $redirect = new \Symfony\Component\HttpFoundation\RedirectResponse('/');
      }
      $this
        ->setConnection($config);
      if ($this->connection) {
        $root = $this->connection
          ->getRootFolder();
        if ($root
          ->getId() != $object_id && ($current = $this->connection
          ->getObjectById($object_id))) {

          // Exists object and not root folder.
          $type = $current
            ->getBaseTypeId()
            ->__toString();
          $name = $current
            ->getName();
          $args = [
            '@type' => str_replace('cmis:', '', $type),
            '@name' => $name,
          ];
          $current
            ->delete(TRUE);
          drupal_set_message($this
            ->t('The @type name @name has now been deleted.', $args));
          if ($parameters['type'] == 'browser') {
            $redirect = $this
              ->redirect('cmis.cmis_repository_controller_browser', [
              'config' => $config,
              'folder_id' => $parameters['parent'],
            ]);
          }
        }
        else {
          if ($root
            ->getId() != $object_id) {
            drupal_set_message($this
              ->t("Could not delete object. Object is not exists in repositoty."), 'warning');
          }
          else {
            drupal_set_message($this
              ->t("Could not delete root folder."), 'warning');
          }
        }
      }
    }
    else {
      drupal_set_message($this
        ->t('Argument or parameter missed.'), 'warning');

      // Back to frontpage.
      $redirect = new \Symfony\Component\HttpFoundation\RedirectResponse('/');
    }
    return $redirect;
  }

  /**
   * Set connection.
   *
   * @param type $config
   * @param type $object_id
   */
  private function setConnection($config = '') {
    if (!empty($config)) {
      if ($this->connection = new \Drupal\cmis\CmisConnectionApi($config)) {
        $this->connection
          ->setDefaultParameters();
      }
    }
  }

  /**
   * Init browser.
   *
   * @param string $config
   * @param string $folder_id
   *
   * @return array
   */
  private function initBrowser($config, $folder_id) {
    if (!empty($config)) {
      $browser = new CmisBrowser($config, $folder_id);
      if ($browser
        ->getConnection()) {
        $this->browser = $browser;
      }
      else {
        return $this
          ->connectionError($config);
      }
    }
    else {
      return $this
        ->configureError();
    }
  }

  /**
   * Get browser.
   *
   * @return object
   */
  public function getBrowser() {
    return $this->browser;
  }

  /**
   * Prepare configure error.
   *
   * @return array
   */
  private function configureError() {
    return array(
      '#markup' => $this
        ->t('No configure defined. Please go to CMIS configure page and create configure.'),
    );
  }

  /**
   * Prepare connection error.
   *
   * @param string $config
   *
   * @return array
   */
  private function connectionError($config) {
    return array(
      '#markup' => $this
        ->t('No connection ready of config: @config. Please go to CMIS configure page and create properly configure.', [
        '@config' => $config,
      ]),
    );
  }

}

Members

Namesort descending Modifiers Type Description Overrides
CmisRepositoryController::$browser private property
CmisRepositoryController::$connection private property
CmisRepositoryController::browse public function Browse.
CmisRepositoryController::configureError private function Prepare configure error.
CmisRepositoryController::connectionError private function Prepare connection error.
CmisRepositoryController::getBrowser public function Get browser.
CmisRepositoryController::getProperties public function Get prperties
CmisRepositoryController::initBrowser private function Init browser.
CmisRepositoryController::objectDelete public function Object delete popup.
CmisRepositoryController::objectDeleteVerify public function Object delete verify popup.
CmisRepositoryController::setConnection private function Set connection.
CmisRepositoryController::__construct public function Construct.
ControllerBase::$configFactory protected property The configuration factory.
ControllerBase::$currentUser protected property The current user service. 1
ControllerBase::$entityFormBuilder protected property The entity form builder.
ControllerBase::$entityManager protected property The entity manager.
ControllerBase::$entityTypeManager protected property The entity type manager.
ControllerBase::$formBuilder protected property The form builder. 2
ControllerBase::$keyValue protected property The key-value storage. 1
ControllerBase::$languageManager protected property The language manager. 1
ControllerBase::$moduleHandler protected property The module handler. 2
ControllerBase::$stateService protected property The state service.
ControllerBase::cache protected function Returns the requested cache bin.
ControllerBase::config protected function Retrieves a configuration object.
ControllerBase::container private function Returns the service container.
ControllerBase::create public static function Instantiates a new instance of this class. Overrides ContainerInjectionInterface::create 40
ControllerBase::currentUser protected function Returns the current user. 1
ControllerBase::entityFormBuilder protected function Retrieves the entity form builder.
ControllerBase::entityManager Deprecated protected function Retrieves the entity manager service.
ControllerBase::entityTypeManager protected function Retrieves the entity type manager.
ControllerBase::formBuilder protected function Returns the form builder service. 2
ControllerBase::keyValue protected function Returns a key/value storage collection. 1
ControllerBase::languageManager protected function Returns the language manager service. 1
ControllerBase::moduleHandler protected function Returns the module handler. 2
ControllerBase::redirect protected function Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait::redirect
ControllerBase::state protected function Returns the state storage service.
LinkGeneratorTrait::$linkGenerator protected property The link generator. 1
LinkGeneratorTrait::getLinkGenerator Deprecated protected function Returns the link generator.
LinkGeneratorTrait::l Deprecated protected function Renders a link to a route given a route name and its parameters.
LinkGeneratorTrait::setLinkGenerator Deprecated public function Sets the link generator service.
LoggerChannelTrait::$loggerFactory protected property The logger channel factory service.
LoggerChannelTrait::getLogger protected function Gets the logger for a specific channel.
LoggerChannelTrait::setLoggerFactory public function Injects the logger channel factory.
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
RedirectDestinationTrait::$redirectDestination protected property The redirect destination service. 1
RedirectDestinationTrait::getDestinationArray protected function Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url.
RedirectDestinationTrait::getRedirectDestination protected function Returns the redirect destination service.
RedirectDestinationTrait::setRedirectDestination public function Sets the redirect destination service.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
UrlGeneratorTrait::$urlGenerator protected property The url generator.
UrlGeneratorTrait::getUrlGenerator Deprecated protected function Returns the URL generator service.
UrlGeneratorTrait::setUrlGenerator Deprecated public function Sets the URL generator service.
UrlGeneratorTrait::url Deprecated protected function Generates a URL or path for a specific route based on the given parameters.