You are here

class SearchApiFederatedSolrCanonicalUrl in Search API Federated Solr 7.3

Same name and namespace in other branches
  1. 7 src/SearchApiFederatedSolrCanonicalUrl.php \SearchApiFederatedSolrCanonicalUrl
  2. 7.2 src/SearchApiFederatedSolrCanonicalUrl.php \SearchApiFederatedSolrCanonicalUrl

Class SearchApiFederatedSolrCanonicalUrl Provides a Search API index data alteration that indicates the preferred URL content is available on to each indexed item.

Hierarchy

Expanded class hierarchy of SearchApiFederatedSolrCanonicalUrl

1 string reference to 'SearchApiFederatedSolrCanonicalUrl'
search_api_federated_solr_search_api_alter_callback_info in ./search_api_federated_solr.module
Implements hook_search_api_alter_callback_info().

File

src/SearchApiFederatedSolrCanonicalUrl.php, line 8

View source
class SearchApiFederatedSolrCanonicalUrl extends SearchApiAbstractAlterCallback {

  /**
   * @var SearchApiIndex
   */
  protected $index;

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

  /**
   * {@inheritdoc}
   */
  public function propertyInfo() {
    return [
      'canonical_url' => [
        'label' => t('Canonical URL'),
        'description' => t('Preferred URL for this content'),
        'type' => 'uri',
        'cardinality' => -1,
      ],
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function alterItems(array &$items) {
    if ($this
      ->useDomainAccess()) {
      $this
        ->addDomainUrl($items);
    }
    else {
      $this
        ->addUrl($items);
    }
  }
  protected function addUrl(array &$items) {
    foreach ($items as &$item) {
      $url = $this->index
        ->datasource()
        ->getItemUrl($item);
      if (!$url) {
        $item->canonical_url = NULL;
        continue;
      }
      $item->canonical_url = url($url['path'], array(
        'absolute' => TRUE,
      ) + $url['options']);
    }
  }
  protected function addDomainUrl(array &$items) {
    $entity_type = $this->index
      ->getEntityType();
    $entity_info = entity_get_info($entity_type);
    foreach ($items as $item) {
      $id = entity_id($entity_type, $item);

      // Get the entity object for the item being indexed, exit if there's somehow not one.
      $entity = current(entity_load($entity_type, [
        $id,
      ]));
      if (!$entity) {
        return;
      }

      // Determine if there is a canonical URL for the content.
      // This only comes into play if domain source is used.
      if (isset($entity->domain_source) && $entity->domain_source == DOMAIN_SOURCE_USE_ACTIVE) {
        $this->canonical_url = '';
      }
      else {
        $list = [
          $item,
        ];
        $this
          ->addUrl($list);
      }
    }
  }

  /**
   * Whether to use the canonical value from Domain Source.
   *
   * @return bool
   */
  protected function useDomainAccess() {
    return defined('DOMAIN_SOURCE_USE_ACTIVE');
  }

}

Members

Namesort descending Modifiers Type Description Overrides
SearchApiAbstractAlterCallback::configurationForm public function Implements SearchApiAlterCallbackInterface::configurationForm(). Overrides SearchApiAlterCallbackInterface::configurationForm 6
SearchApiAbstractAlterCallback::configurationFormSubmit public function Implements SearchApiAlterCallbackInterface::configurationFormSubmit(). Overrides SearchApiAlterCallbackInterface::configurationFormSubmit 4
SearchApiAbstractAlterCallback::configurationFormValidate public function Implements SearchApiAlterCallbackInterface::configurationFormValidate(). Overrides SearchApiAlterCallbackInterface::configurationFormValidate 1
SearchApiAbstractAlterCallback::isMultiEntityIndex protected function Determines whether the given index contains multiple types of entities.
SearchApiAbstractAlterCallback::supportsIndex public function Implements SearchApiAlterCallbackInterface::supportsIndex(). Overrides SearchApiAlterCallbackInterface::supportsIndex 10
SearchApiAbstractAlterCallback::__construct public function Implements SearchApiAlterCallbackInterface::__construct(). Overrides SearchApiAlterCallbackInterface::__construct 1
SearchApiFederatedSolrCanonicalUrl::$index protected property Overrides SearchApiAbstractAlterCallback::$index
SearchApiFederatedSolrCanonicalUrl::$options protected property Overrides SearchApiAbstractAlterCallback::$options
SearchApiFederatedSolrCanonicalUrl::addDomainUrl protected function
SearchApiFederatedSolrCanonicalUrl::addUrl protected function
SearchApiFederatedSolrCanonicalUrl::alterItems public function Alter items before indexing. Overrides SearchApiAlterCallbackInterface::alterItems
SearchApiFederatedSolrCanonicalUrl::propertyInfo public function Implements SearchApiAlterCallbackInterface::propertyInfo(). Overrides SearchApiAbstractAlterCallback::propertyInfo
SearchApiFederatedSolrCanonicalUrl::useDomainAccess protected function Whether to use the canonical value from Domain Source.