You are here

class SearchApiAttachmentsMultipleEntitiesAlterSettings in Search API attachments 7

@file Search API data alteration callback.

Hierarchy

Expanded class hierarchy of SearchApiAttachmentsMultipleEntitiesAlterSettings

1 string reference to 'SearchApiAttachmentsMultipleEntitiesAlterSettings'
search_api_attachments_multiple_entities_search_api_alter_callback_info in contrib/search_api_attachments_multiple_entities/search_api_attachments_multiple_entities.module
Implements hook_search_api_alter_callback_info().

File

contrib/search_api_attachments_multiple_entities/includes/callback_attachments_multiple_entities_settings.inc, line 7
Search API data alteration callback.

View source
class SearchApiAttachmentsMultipleEntitiesAlterSettings extends SearchApiAttachmentsAlterSettings {

  // Cache table name.
  const CACHE_TABLE = 'cache_search_api_attachments';
  public function alterItems(array &$items) {

    // Extension restriction.
    $exclude = array();
    foreach (explode(' ', $this->options['excluded_extensions']) as $ext) {
      $exclude[$ext] = file_get_mimetype('dummy.' . $ext);
    }

    // File size restriction.
    $max_file_size = parse_size($this->options['max_file_size']);
    $fields = $this
      ->getFileFields();
    foreach ($items as $id => &$item) {
      foreach ($fields as $name => $field) {
        foreach ($item as &$single_item) {
          if (is_object($single_item) && isset($single_item->{$name})) {
            foreach ($single_item->{$name} as $value) {

              // Limit to the max number of value per field.
              if (isset($this->options['number_indexed']) && $this->options['number_indexed'] != '0' && count($value) > $this->options['number_indexed']) {
                $value = array_slice($value, 0, $this->options['number_indexed']);
              }
              foreach ($value as $file) {

                // Private file restriction.
                if (!$this
                  ->isTemporary($file) && !($this->options['excluded_private'] && $this
                  ->isPrivate($file))) {

                  // Extension restriction.
                  if (!in_array($file['filemime'], $exclude)) {

                    // File size restriction.
                    $file_size_errors = file_validate_size((object) $file, $max_file_size);
                    if (empty($file_size_errors)) {
                      $attachments = 'attachments_' . $name;
                      if (isset($item->{$attachments})) {
                        $item->{$attachments} .= ' ' . $this
                          ->getFileContent($file);
                      }
                      else {
                        $item->{$attachments} = $this
                          ->getFileContent($file);
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  public function propertyInfo() {
    $ret = array();
    $fields = $this
      ->getFileFields();
    foreach ($fields as $name => $field) {
      $ret['attachments_' . $name] = array(
        'label' => 'Attachment content: ' . $name,
        'description' => $name,
        'type' => 'text',
      );
    }
    return $ret;
  }
  protected function getFileFields() {
    $ret = array();
    foreach (field_info_fields() as $name => $field) {
      if ($field['type'] == 'file') {
        if ($this->index->item_type == 'multiple') {
          $bundles = $this->index->options['datasource']['types'];
          foreach ($bundles as $bundle) {
            if (array_key_exists($bundle, $field['bundles'])) {
              $ret[$name] = $field;
            }
          }
        }
        if (array_key_exists($this->index
          ->getEntityType(), $field['bundles'])) {
          $ret[$name] = $field;
        }
      }
    }
    return $ret;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
SearchApiAbstractAlterCallback::$index protected property The index whose items will be altered.
SearchApiAbstractAlterCallback::$options protected property The configuration options for this callback, if it has any.
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
SearchApiAttachmentsAlterSettings::configurationForm public function Adds configuration form. Overrides SearchApiAbstractAlterCallback::configurationForm
SearchApiAttachmentsAlterSettings::extractExif protected function Extracts images metadata.
SearchApiAttachmentsAlterSettings::extractPdftotext protected function Extracts pdf file content using pdftotext.
SearchApiAttachmentsAlterSettings::extractPythonPdf2txt protected function Extracts pdf file content using python pdf2txt script.
SearchApiAttachmentsAlterSettings::extractSimple protected function Extracts file content for text files.
SearchApiAttachmentsAlterSettings::extractSolr protected function Extract data using Solr.
SearchApiAttachmentsAlterSettings::extractTika protected function Extracts file content using local tika executable.
SearchApiAttachmentsAlterSettings::extractTikaServer protected function Extracts file content using a tika server.
SearchApiAttachmentsAlterSettings::getFileContent protected function Extracts th file content.
SearchApiAttachmentsAlterSettings::getIndexableFileFields protected function Retrieve list of fields, that should be indexed.
SearchApiAttachmentsAlterSettings::getRealpath protected function Helper method to get a file's real path.
SearchApiAttachmentsAlterSettings::imageMimetypes protected function Helper function to store image's mimetypes.
SearchApiAttachmentsAlterSettings::isFileIndexable public function Checks if file is allowed to be indexed. 1
SearchApiAttachmentsAlterSettings::isMultipleIndexWithFile protected function
SearchApiAttachmentsAlterSettings::isPrivate protected function Check if the file is private.
SearchApiAttachmentsAlterSettings::isTemporary protected function Check if the file is temporary.
SearchApiAttachmentsAlterSettings::pdfMimetypes protected function Helper function to store pdf's mimetypes.
SearchApiAttachmentsAlterSettings::textMimetypes protected function Helper function to store text's mimetypes.
SearchApiAttachmentsMultipleEntitiesAlterSettings::alterItems public function Alter items before indexing. Overrides SearchApiAttachmentsAlterSettings::alterItems
SearchApiAttachmentsMultipleEntitiesAlterSettings::CACHE_TABLE constant Overrides SearchApiAttachmentsAlterSettings::CACHE_TABLE
SearchApiAttachmentsMultipleEntitiesAlterSettings::getFileFields protected function Helper method to get all file fields. Overrides SearchApiAttachmentsAlterSettings::getFileFields
SearchApiAttachmentsMultipleEntitiesAlterSettings::propertyInfo public function Adds attachments property. Overrides SearchApiAttachmentsAlterSettings::propertyInfo