You are here

class DefaultController in Custom Contextual Links 8

Same name in this branch
  1. 8 src/Controller/DefaultController.php \Drupal\ccl\Controller\DefaultController
  2. 8 ccl_actions/src/Controller/DefaultController.php \Drupal\ccl_actions\Controller\DefaultController

Default controller for the ccl module.

Hierarchy

Expanded class hierarchy of DefaultController

File

src/Controller/DefaultController.php, line 13
Contains \Drupal\ccl\Controller\DefaultController.

Namespace

Drupal\ccl\Controller
View source
class DefaultController extends ControllerBase {
  public function ccl_admin() {
    $result = db_query("SELECT * FROM {ccl}");
    if ($result
      ->rowCount()) {

      // Get content type names.
      $cts = node_type_get_names();

      // Prepare table header.
      $header = [
        t('Title'),
        t('URL'),
        t('Type'),
        t('Options'),
        t('Operation'),
      ];
      $rows = [];
      foreach ($result as $record) {
        $options = [
          'desc' => '',
          'op' => '',
        ];

        // Prepeare the options display.
        if ($record->type == 'node') {
          $link_options = unserialize($record->options);
          switch ($link_options['node_options']) {
            case 'global':
              $options['desc'] = t('Attached to all nodes.');
              break;
            case 'ct':
              $options['desc'] = t('Attached to all nodes of the content type %ct.', [
                '%ct' => $cts[$link_options['node_type']],
              ]);
              break;
            case 'node':
              $node_title = db_query('SELECT title FROM {node} WHERE nid = :nid', [
                ':nid' => $link_options['node_id'],
              ])
                ->fetchField();
              $options['desc'] = t('Attached to %node_title [NID: !nid].', [
                '%node_title' => $node_title,
                '!nid' => $link_options['node_id'],
              ]);
              break;
          }

          // @FIXME
          // l() expects a Url object, created from a route name or external URI.
          // $options['op'] = l(t('Edit'), 'admin/config/user-interface/ccl/' . $record->clid . '/edit') . ' | ' . l(t('Delete'), 'admin/config/user-interface/ccl/' . $record->clid . '/delete');
        }
        else {
          foreach (\Drupal::moduleHandler()
            ->getImplementations('ccl_link_info') as $module) {
            $options = \Drupal::moduleHandler()
              ->invoke($module, 'ccl_link_info', [
              $record,
            ]);
            if (!empty($options)) {
              break;
            }
          }
        }

        // Prepare table row.
        $rows[] = [
          $record->title . ' <small>[ID: ' . $record->clid . ']</small>',
          $record->link,
          $record->type,
          $options['desc'],
          $options['op'],
        ];
      }

      // @FIXME
      // theme() has been renamed to _theme() and should NEVER be called directly.
      // Calling _theme() directly can alter the expected output and potentially
      // introduce security issues (see https://www.drupal.org/node/2195739). You
      // should use renderable arrays instead.
      //
      //
      // @see https://www.drupal.org/node/2195739
      // return theme('table', array('header' => $header, 'rows' => $rows));
    }
    else {

      // @FIXME
      // url() expects a route name or an external URI.
      // return array(
      //       'empty_text' => array(
      //         '#type' => 'markup',
      //         '#markup' => '<p>' . t('No custom contextual links have been added yet. <a href="@add-page">Add a link here</a>.', array('@add-page' => url('admin/config/user-interface/ccl/add'))) . '</p>',
      //       ),
      //     );
    }
  }
  public function ccl_node_autocomplete($string = '') {
    $matches = [];
    if ($string) {
      $result = db_select('node', 'n')
        ->fields('n', [
        'title',
        'nid',
      ])
        ->condition('title', db_like($string) . '%', 'LIKE')
        ->range(0, 10)
        ->execute();
      foreach ($result as $node) {
        $matches[\Drupal\Component\Utility\Html::escape($node->title) . ' [nid:' . $node->nid . ']'] = \Drupal\Component\Utility\Html::escape($node->title);
      }
    }
    drupal_json_output($matches);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
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.
DefaultController::ccl_admin public function
DefaultController::ccl_node_autocomplete public function
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.