diff --git a/contrib/search_api_attachments_commerce_product_reference/includes/callback_attachments_commerce_product_reference_settings.inc b/contrib/search_api_attachments_commerce_product_reference/includes/callback_attachments_commerce_product_reference_settings.inc index 4a6ac18..60d7989 100644 --- a/contrib/search_api_attachments_commerce_product_reference/includes/callback_attachments_commerce_product_reference_settings.inc +++ b/contrib/search_api_attachments_commerce_product_reference/includes/callback_attachments_commerce_product_reference_settings.inc @@ -11,15 +11,6 @@ class SearchApiAttachmentsCommerceProductReferenceAlterSettings extends SearchAp * {@inheritdoc} */ 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']); - // Get the entity reference fields. $product_reference_fields = $this->getProductReferenceFields(); @@ -52,21 +43,13 @@ class SearchApiAttachmentsCommerceProductReferenceAlterSettings extends SearchAp $files = array_slice($files, 0, $this->options['number_indexed']); } foreach ($files as $file) { - // Private file restriction. - if (!$this->is_temporary($file) && !($this->options['excluded_private'] && $this->is_private($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_' . $file_field['field_name']; - if (isset($item->{$attachments})) { - $item->{$attachments} .= ' ' . $this->getFileContent($file); - } - else { - $item->{$attachments} = $this->getFileContent($file); - } - } + if ($this->isFileIndexable($file)) { + $attachments = 'attachments_' . $file_field['field_name']; + if (isset($item->{$attachments})) { + $item->{$attachments} .= ' ' . $this->getFileContent($file); + } + else { + $item->{$attachments} = $this->getFileContent($file); } } } diff --git a/contrib/search_api_attachments_entityreference/includes/callback_attachments_entityreference_settings.inc b/contrib/search_api_attachments_entityreference/includes/callback_attachments_entityreference_settings.inc index 4cf94c7..8510a4f 100644 --- a/contrib/search_api_attachments_entityreference/includes/callback_attachments_entityreference_settings.inc +++ b/contrib/search_api_attachments_entityreference/includes/callback_attachments_entityreference_settings.inc @@ -11,15 +11,6 @@ class SearchApiAttachmentsEntityreferenceAlterSettings extends SearchApiAttachme * {@inheritdoc} */ 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']); - // Get the entity reference fields. $entityreference_fields = $this->getEntityReferenceFields(); @@ -52,21 +43,13 @@ class SearchApiAttachmentsEntityreferenceAlterSettings extends SearchApiAttachme $files = array_slice($files, 0, $this->options['number_indexed']); } foreach ($files as $file) { - // Private file restriction. - if (!$this->is_temporary($file) && !($this->options['excluded_private'] && $this->is_private($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_' . $file_field['field_name']; - if (isset($item->{$attachments})) { - $item->{$attachments} .= ' ' . $this->getFileContent($file); - } - else { - $item->{$attachments} = $this->getFileContent($file); - } - } + if ($this->isFileIndexable($file)) { + $attachments = 'attachments_' . $file_field['field_name']; + if (isset($item->{$attachments})) { + $item->{$attachments} .= ' ' . $this->getFileContent($file); + } + else { + $item->{$attachments} = $this->getFileContent($file); } } } diff --git a/contrib/search_api_attachments_field_collections/includes/callback_attachments_field_collections_settings.inc b/contrib/search_api_attachments_field_collections/includes/callback_attachments_field_collections_settings.inc index 40ecafb..bd3bd95 100644 --- a/contrib/search_api_attachments_field_collections/includes/callback_attachments_field_collections_settings.inc +++ b/contrib/search_api_attachments_field_collections/includes/callback_attachments_field_collections_settings.inc @@ -11,15 +11,6 @@ class SearchApiAttachmentsFieldCollectionsAlterSettings extends SearchApiAttachm * {@inheritdoc} */ 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']); - // Get the field collection bundles. $field_collections_instances = field_info_instances('field_collection_item'); $field_collections = array_keys($field_collections_instances); @@ -59,21 +50,13 @@ class SearchApiAttachmentsFieldCollectionsAlterSettings extends SearchApiAttachm $files = array_slice($files, 0, $this->options['number_indexed']); } foreach ($files as $file) { - // Private file restriction. - if (!$this->is_temporary($file) && !($this->options['excluded_private'] && $this->is_private($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_' . $file_field; - if (isset($item->{$attachments})) { - $item->{$attachments} .= ' ' . $this->getFileContent($file); - } - else { - $item->{$attachments} = $this->getFileContent($file); - } - } + if ($this->isFileIndexable($file)) { + $attachments = 'attachments_' . $file_field; + if (isset($item->{$attachments})) { + $item->{$attachments} .= ' ' . $this->getFileContent($file); + } + else { + $item->{$attachments} = $this->getFileContent($file); } } } diff --git a/contrib/search_api_attachments_multifield/includes/callback_attachments_multifield_settings.inc b/contrib/search_api_attachments_multifield/includes/callback_attachments_multifield_settings.inc index 03e7da7..7d32bfa 100644 --- a/contrib/search_api_attachments_multifield/includes/callback_attachments_multifield_settings.inc +++ b/contrib/search_api_attachments_multifield/includes/callback_attachments_multifield_settings.inc @@ -11,16 +11,6 @@ class SearchApiAttachmentsMultifieldAlterSettings extends SearchApiAttachmentsAl * {@inheritdoc} */ 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']); - // Get the multifield bundles. $multifields_instances = field_info_instances('multifield'); $multifields = array_keys($multifields_instances); @@ -64,21 +54,13 @@ class SearchApiAttachmentsMultifieldAlterSettings extends SearchApiAttachmentsAl $files = array_slice($files, 0, $this->options['number_indexed']); } foreach ($files as $file) { - // Private file restriction. - if (!$this->is_temporary($file) && !($this->options['excluded_private'] && $this->is_private($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_' . $file_field; - if (isset($item->{$attachments})) { - $item->{$attachments} .= ' ' . $this->getFileContent($file); - } - else { - $item->{$attachments} = $this->getFileContent($file); - } - } + if ($this->isFileIndexable($file)) { + $attachments = 'attachments_' . $file_field; + if (isset($item->{$attachments})) { + $item->{$attachments} .= ' ' . $this->getFileContent($file); + } + else { + $item->{$attachments} = $this->getFileContent($file); } } } diff --git a/contrib/search_api_attachments_references/includes/callback_attachments_references_settings.inc b/contrib/search_api_attachments_references/includes/callback_attachments_references_settings.inc index 4163fd7..60d0442 100644 --- a/contrib/search_api_attachments_references/includes/callback_attachments_references_settings.inc +++ b/contrib/search_api_attachments_references/includes/callback_attachments_references_settings.inc @@ -11,15 +11,6 @@ class SearchApiAttachmentsReferencesAlterSettings extends SearchApiAttachmentsAl * {@inheritdoc} */ 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']); - // Get the reference fields. $reference_fields = $this->getReferenceFields(); @@ -52,21 +43,13 @@ class SearchApiAttachmentsReferencesAlterSettings extends SearchApiAttachmentsAl $files = array_slice($files, 0, $this->options['number_indexed']); } foreach ($files as $file) { - // Private file restriction. - if (!$this->is_temporary($file) && !($this->options['excluded_private'] && $this->is_private($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_' . $file_field['field_name']; - if (isset($item->{$attachments})) { - $item->{$attachments} .= ' ' . $this->getFileContent($file); - } - else { - $item->{$attachments} = $this->getFileContent($file); - } - } + if ($this->isFileIndexable($file)) { + $attachments = 'attachments_' . $file_field['field_name']; + if (isset($item->{$attachments})) { + $item->{$attachments} .= ' ' . $this->getFileContent($file); + } + else { + $item->{$attachments} = $this->getFileContent($file); } } } diff --git a/includes/callback_attachments_settings.inc b/includes/callback_attachments_settings.inc index e9fc110..e0c6481 100644 --- a/includes/callback_attachments_settings.inc +++ b/includes/callback_attachments_settings.inc @@ -12,35 +12,14 @@ class SearchApiAttachmentsAlterSettings extends SearchApiAbstractAlterCallback { 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. - if (isset($this->options['max_file_size'])) { - $max_file_size = parse_size($this->options['max_file_size']); - } - else { - $max_file_size = '0'; - } if ($this->index->getEntityType() == 'file') { foreach ($items as $id => &$item) { $file = array(); foreach ($item as $key => $value) { $file[$key] = $value; } - // Private file restriction. - if (!$this->is_temporary($file) && !($this->options['excluded_private'] && $this->is_private($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)) { - $item->attachments_content = $this->getFileContent($file); - } - } + if ($this->isFileIndexable($file)) { + $item->attachments_content = $this->getFileContent($file); } } } @@ -55,21 +34,13 @@ class SearchApiAttachmentsAlterSettings extends SearchApiAbstractAlterCallback { $value = array_slice($value, 0, $this->options['number_indexed']); } foreach ($value as $file) { - // Private file restriction. - if (!$this->is_temporary($file) && !($this->options['excluded_private'] && $this->is_private($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); - } - } + if ($this->isFileIndexable($file)) { + $attachments = 'attachments_' . $name; + if (isset($item->{$attachments})) { + $item->{$attachments} .= ' ' . $this->getFileContent($file); + } + else { + $item->{$attachments} = $this->getFileContent($file); } } } @@ -80,6 +51,34 @@ class SearchApiAttachmentsAlterSettings extends SearchApiAbstractAlterCallback { } } + public function isFileIndexable($file) { + // Extension restriction. + $exclude = array(); + foreach (explode(' ', $this->options['excluded_extensions']) as $ext) { + $exclude[$ext] = file_get_mimetype('dummy.' . $ext); + } + + // File size restriction. + if (isset($this->options['max_file_size'])) { + $max_file_size = parse_size($this->options['max_file_size']); + } + else { + $max_file_size = '0'; + } + // Private file restriction. + if (!$this->is_temporary($file) && !($this->options['excluded_private'] && $this->is_private($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)) { + return TRUE; + } + } + } + return FALSE; + } + public function configurationForm() { $default = implode(' ', search_api_attachments_default_excluded()); $form['excluded_extensions'] = array(