/** * {@inheritdoc} */ protected function checkAccess(EntityInterface $entity, $operation, $langcode, AccountInterface $account) { /** @var $entity \Drupal\search\SearchPageInterface */ if (in_array($operation, array('delete', 'disable')) && $entity->isDefaultSearch()) { return FALSE; } if ($operation == 'view') { if (!$entity->status()) { return FALSE; } $plugin = $entity->getPlugin(); if ($plugin instanceof AccessibleInterface) { return $plugin->access($operation, $account); } return TRUE; } return parent::checkAccess($entity, $operation, $langcode, $account); }
/** * {@inheritdoc} */ protected function checkAccess(EntityInterface $entity, $operation, AccountInterface $account) { /** @var $entity \Drupal\search\SearchPageInterface */ if (in_array($operation, array('delete', 'disable'))) { if ($entity->isDefaultSearch()) { return AccessResult::forbidden()->addCacheableDependency($entity); } else { return parent::checkAccess($entity, $operation, $account)->addCacheableDependency($entity); } } if ($operation == 'view') { if (!$entity->status()) { return AccessResult::forbidden()->addCacheableDependency($entity); } $plugin = $entity->getPlugin(); if ($plugin instanceof AccessibleInterface) { return $plugin->access($operation, $account, TRUE)->addCacheableDependency($entity); } return AccessResult::allowed()->addCacheableDependency($entity); } return parent::checkAccess($entity, $operation, $account); }
/** * {@inheritdoc} */ public function buildRow(EntityInterface $entity) { /** @var $entity \Drupal\search\SearchPageInterface */ $row['label'] = $entity->label(); $row['url']['#markup'] = 'search/' . $entity->getPath(); // If the search page is active, link to it. if ($entity->status()) { $row['url'] = array('#type' => 'link', '#title' => $row['url'], '#url' => Url::fromRoute('search.view_' . $entity->id())); } $definition = $entity->getPlugin()->getPluginDefinition(); $row['plugin']['#markup'] = $definition['title']; if ($entity->isDefaultSearch()) { $status = $this->t('Default'); } elseif ($entity->status()) { $status = $this->t('Enabled'); } else { $status = $this->t('Disabled'); } $row['status']['#markup'] = $status; if ($entity->isIndexable()) { $status = $entity->getPlugin()->indexStatus(); $row['progress']['#markup'] = $this->t('%num_indexed of %num_total indexed', array('%num_indexed' => $status['total'] - $status['remaining'], '%num_total' => $status['total'])); } else { $row['progress']['#markup'] = $this->t('Does not use index'); } return $row + parent::buildRow($entity); }