You are here

public function CctagsController::content in cctags 8

Call back for route static_content.

File

src/Controller/CctagsController.php, line 44

Class

CctagsController
Builds an static callback page.

Namespace

Drupal\cctags\Controller

Code

public function content($cctid, $page_amount, $page_mode, $page_extra_class, $page_vocname) {
  $pager = NULL;
  $extra_class = $page_extra_class ? ' ' . $page_extra_class : '';
  $terms = cctags_get_level_tags($cctid, 'page');
  $amount = $page_amount;
  $page1 = \Drupal::request()->query
    ->get('page', 0);
  $count_terms = 0;
  foreach ($terms as $k => $v) {
    $count_terms += count($v) - 3;
  }
  $page = !isset($page1) || $amount == 0 || $count_terms < $amount ? 0 : $page1;
  $mode = 'full';
  $content = [
    '#theme' => 'cctags_level',
    '#terms' => $terms,
    '#amount' => $amount,
    '#page' => $page,
    '#mode' => $mode,
    '#vocname' => $page_vocname,
    '#out' => 'page',
  ];
  $items = _cctags_get_settings($cctid);
  $item = $items[$cctid];
  $taxonomy_terms = [];
  $terms = [];
  foreach ($item['item_data'] as $key => $value) {

    // Vocabulary is checked.
    if ($value['cctags_select_' . $key]) {
      $vocabulary = $this->entityManager
        ->getStorage('taxonomy_term')
        ->loadTree($key);
      unset($value['cctags_select_' . $key]);
      $levels_checked = [];
      for ($i = 0; $i < count($value); $i++) {
        if ($value['level_' . $i]) {
          $levels_checked[] = $i;
        }
      }
      foreach ($vocabulary as $term) {
        if (in_array($term->depth, $levels_checked)) {
          $terms[$key][$term->depth]['link'][] = Link::fromTextAndUrl($term->name, Url::fromUri('base:/taxonomy/term/' . $term->tid));
          $taxonomy_terms[] = Link::fromTextAndUrl($term->name, Url::fromUri('base:/taxonomy/term/' . $term->tid))
            ->toString();
        }
      }
    }
  }
  return array(
    '#theme' => 'cctags_page',
    '#extra_class' => $extra_class,
    '#content' => $content,
    '#taxonomy_terms' => $taxonomy_terms,
    '#pager' => $pager,
  );
}