Mercurial > hg > solrsearch
view solrsearch_search.install @ 0:a2b4f67e73dc default tip
initial
author | Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de> |
---|---|
date | Mon, 08 Jun 2015 10:21:54 +0200 |
parents | |
children |
line wrap: on
line source
<?php /** * @file * Install and related hooks for solrsearch_search. */ /** * Implements hook_install(). */ function solrsearch_search_install() { // Add a taxonomy search page to the database $settings = array( 'solrsearch_search_search_type' => 'tid', 'solrsearch_search_per_page' => 10, 'solrsearch_search_browse' => 'results', 'solrsearch_search_spellcheck' => FALSE, 'solrsearch_search_search_box' => FALSE, ); $settings = serialize($settings); $fields = array( 'page_id' => 'taxonomy_search', 'label' => 'Taxonomy Search', 'description' => 'Search all items with given term', 'search_path' => 'taxonomy/term/%', 'env_id' => '', 'page_title' => '%value', 'settings' => $settings, ); db_insert('solrsearch_search_page')->fields($fields)->execute(); } /** * Implements hook_enable(). */ function solrsearch_search_enable() { // Make sure the default core search page is installed. //dpm("ENABLE"); $search_page = solrsearch_search_page_load('core_solr_search'); //dpm($search_page); if (empty($search_page)) { // Add Default search page (core search) // This is a duplication from update_7004 but it is intended // so future changes are possible without breaking the update $settings = array( 'solrsearch_search_search_type' => 'custom', 'solrsearch_search_per_page' => 10, 'solrsearch_search_browse' => 'browse', 'solrsearch_search_spellcheck' => TRUE, 'solrsearch_search_not_removable' => TRUE, 'solrsearch_search_search_box' => TRUE, ); $settings = serialize($settings); $fields = array( 'page_id' => 'core_solr_search', 'label' => 'Core Solr Search', 'description' => 'Core SolrSearch', 'search_path' => 'solrsearch/site', 'env_id' => 'searchecho', 'page_title' => 'echo', 'settings' => $settings, ); db_insert('solrsearch_search_page')->fields($fields)->execute(); } #$active = variable_get('search_active_modules', array('node', 'user')); #$active[] = 'solrsearch_search'; #variable_set('search_active_modules', array_unique($active)); } /** * Implements hook_schema(). */ function solrsearch_search_schema() { $schema = array(); $schema['solrsearch_search_page'] = array( 'description' => 'Apache Solr Search search page settings.', 'export' => array( // Environment machine name. 'key' => 'page_id', // Description of key. 'key name' => 'search page machine name', // Variable name to use in exported code. 'identifier' => 'searcher', // Use the same hook as the API name below. 'default hook' => 'solrsearch_search_default_searchers', 'status' => 'solrsearch_search_page_status', // CTools API implementation. 'api' => array( 'owner' => 'solrsearch_search', 'api' => 'solrsearch_search_defaults', 'minimum_version' => 3, 'current_version' => 3, ), // Includes all search page specific configurations. 'export callback' => 'solrsearch_search_page_settings_export', ), 'fields' => array( 'page_id' => array( 'description' => 'The machine readable name of the search page.', 'type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => '', ), 'label' => array( 'description' => 'The human readable name of the search page.', 'type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => '', ), 'description' => array( 'description' => 'The description of the search page.', 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', ), 'search_path' => array( 'description' => 'The path to the search page.', 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', ), 'page_title' => array( 'description' => 'The title of the search page.', 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', ), 'env_id' => array( 'description' => 'The machine name of the search environment.', 'type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => '', ), 'settings' => array( 'description' => 'Serialized storage of general settings.', 'type' => 'text', 'serialize' => TRUE, ), ), 'primary key' => array('page_id'), 'indexes' => array( 'env_id' => array('env_id'), ), ); return $schema; } /** * Implements hook_uninstall(). */ function solrsearch_search_uninstall() { $stored = variable_get('solrsearch_index_last', array()); unset($stored['solrsearch_search']); variable_set('solrsearch_index_last', $stored); $active = variable_get('search_active_modules', array('node', 'user')); $idx = array_search('solrsearch_search', $active); if ($idx !== FALSE) { unset($active[$idx]); variable_set('search_active_modules', $active); } // Remove variables. variable_del('solrsearch_search_spellcheck'); variable_del('solrsearch_search_mlt_blocks'); variable_del('solrsearch_search_default_search_page'); // Remove blocks. db_delete('block')->condition('module', 'solrsearch_search')->execute(); } /** * Various updates for Drupal 7. */ function solrsearch_search_update_7000() { $taxo_links = variable_get('solrsearch_search_taxonomy_links', 0); // TODO - enable the new contrib module? variable_del('solrsearch_search_taxonomy_links'); // TODO - possibly rename block deltas, etc. $active = variable_get('search_active_modules', array('node', 'user')); $active[] = 'solrsearch_search'; variable_set('search_active_modules', array_unique($active)); if (variable_get('solrsearch_search_make_default', 0)) { variable_set('search_default_module', 'solrsearch_search'); } variable_del('solrsearch_search_make_default'); } /** * Add solrsearch_search_page table. */ function solrsearch_search_update_7001() { // Moved to 7002 } /** * Add solrsearch_search_page table for real. */ function solrsearch_search_update_7002() { $schema['solrsearch_search_page'] = array( 'description' => 'Apache Solr Search search page settings.', 'export' => array( 'key' => 'page_id', 'identifier' => 'searcher', 'default hook' => 'solrsearch_search_default_searchers', 'status' => 'solrsearch_search_page_status', 'api' => array( 'owner' => 'solrsearch_search', 'api' => 'solrsearch_search_defaults', 'minimum_version' => 3, 'current_version' => 3, ), 'export callback' => 'solrsearch_search_page_settings_export', ), 'fields' => array( 'page_id' => array( 'description' => 'The machine readable name of the search page.', 'type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => '', ), 'label' => array( 'description' => 'The human readable name of the search page.', 'type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => '', ), 'description' => array( 'description' => 'The description of the search page.', 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', ), 'search_path' => array( 'description' => 'The path to the search page.', 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', ), 'page_title' => array( 'description' => 'The title of the search page.', 'type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => '', ), 'env_id' => array( 'description' => 'The machine name of the search environment.', 'type' => 'varchar', 'length' => 32, 'not null' => TRUE, 'default' => '', ), 'settings' => array( 'description' => 'Serialized storage of general settings.', 'type' => 'text', 'serialize' => TRUE, ), ), 'primary key' => array('page_id'), 'indexes' => array( 'env_id' => array('env_id'), ), ); if (db_table_exists('solrsearch_search_page')) { // Just in case you are chasing HEAD. db_drop_table('solrsearch_search_page'); } db_create_table('solrsearch_search_page', $schema['solrsearch_search_page']); } /** * Delete all Apache Solr Search blocks - they moved to Facet API. */ function solrsearch_search_update_7003() { // Remove blocks. db_delete('block')->condition('module', 'solrsearch_search')->execute(); } /** * Add a default search page for core * Add a taxonomy page if the taxonomy module was ever active */ function solrsearch_search_update_7004() { // Add Default search page (core search) $settings = array( 'solrsearch_search_search_type' => 'custom', 'solrsearch_search_per_page' => variable_get('solrsearch_rows', 10), 'solrsearch_search_browse' => variable_get('solrsearch_search_browse', 'browse'), 'solrsearch_search_spellcheck' => variable_get('solrsearch_search_spellcheck', TRUE), 'solrsearch_search_not_removable' => TRUE, 'solrsearch_search_search_box' => TRUE, ); $settings = serialize($settings); $fields = array( 'page_id' => 'core_solr_search', 'label' => 'Core Solr Search', 'description' => 'Core SolrSearch', 'search_path' => 'solrsearch/site', 'env_id' => 'searchecho', 'page_title' => 'echo', 'settings' => $settings, ); db_insert('solrsearch_search_page')->fields($fields)->execute(); // Remove variables. variable_del('solrsearch_search_spellcheck'); variable_del('solrsearch_search_browse'); // Add this taxonomy search page to the database $settings = array( 'solrsearch_search_search_type' => 'tid', 'solrsearch_search_per_page' => 10, 'solrsearch_search_browse' => 'results', 'solrsearch_search_spellcheck' => FALSE, 'solrsearch_search_search_box' => FALSE, ); $settings = serialize($settings); $fields = array( 'page_id' => 'taxonomy_search', 'label' => 'Taxonomy Search', 'description' => 'Search all items with given term', 'search_path' => 'taxonomy/term/%', 'env_id' => '', 'page_title' => '%value', 'settings' => $settings, ); db_insert('solrsearch_search_page')->fields($fields)->execute(); // Check if the taxonomy module was ever present $status = db_query("SELECT 1 FROM {system} WHERE name = 'solrsearch_taxonomy'")->fetchField(); if ($status) { $message = t('If you had the solrsearch_taxonomy module enabled please go to the !link and enable the Taxonomy Term page', array('!link' => l('Apache Solr custom pages', 'admin/config/search/solrsearch/search-pages'))); drupal_set_message($message, 'warning'); } } /** * Make the env_id length on the solrsearch_search_page table 64 characters * to match the length of the env_id on all other tables */ function solrsearch_search_update_7005(&$sandbox) { db_drop_index('solrsearch_search_page', 'env_id'); db_change_field('solrsearch_search_page', 'env_id', 'env_id', array( 'description' => 'The machine name of the search environment.', 'type' => 'varchar', 'length' => 64, 'not null' => TRUE, 'default' => '', ), array( 'indexes' => array( 'env_id' => array('env_id'), ) ) ); } /** * Remove all solrsearch_search env variables for show_facets if it is zero */ function solrsearch_search_update_7006() { module_load_include('module', 'solrsearch'); $environments = solrsearch_load_all_environments(); foreach ($environments as $environment) { $show_facets = solrsearch_environment_variable_get($environment['env_id'], 'solrsearch_search_show_facets', 0); if ($show_facets === 0) { solrsearch_environment_variable_del($environment['env_id'], 'solrsearch_search_show_facets'); } } }