annotate forum/Sources/DbSearch-sqlite.php @ 85:6d7b61434be7 website

Add a copy of this here, just in case!
author Chris Cannam
date Mon, 20 Jan 2014 11:02:36 +0000
parents e3e11437ecea
children
rev   line source
Chris@76 1 <?php
Chris@76 2
Chris@76 3 /**
Chris@76 4 * Simple Machines Forum (SMF)
Chris@76 5 *
Chris@76 6 * @package SMF
Chris@76 7 * @author Simple Machines http://www.simplemachines.org
Chris@76 8 * @copyright 2011 Simple Machines
Chris@76 9 * @license http://www.simplemachines.org/about/smf/license.php BSD
Chris@76 10 *
Chris@76 11 * @version 2.0
Chris@76 12 */
Chris@76 13
Chris@76 14 if (!defined('SMF'))
Chris@76 15 die('Hacking attempt...');
Chris@76 16
Chris@76 17 /* This file contains database functions specific to search related activity.
Chris@76 18
Chris@76 19 void db_search_init()
Chris@76 20 - adds the functions in this file to the $smcFunc array
Chris@76 21
Chris@76 22 boolean smf_db_search_support($search_type)
Chris@76 23 - whether this database type support the search type $search_type
Chris@76 24
Chris@76 25 void smf_db_create_word_search($size)
Chris@76 26 - create the custom word index table
Chris@76 27
Chris@76 28 resource smf_db_search_query($identifier, $db_string, $db_values = array(), $connection = null)
Chris@76 29 - returns the correct query for this search type.
Chris@76 30 */
Chris@76 31
Chris@76 32 // Add the file functions to the $smcFunc array.
Chris@76 33 function db_search_init()
Chris@76 34 {
Chris@76 35 global $smcFunc;
Chris@76 36
Chris@76 37 if (!isset($smcFunc['db_search_query']) || $smcFunc['db_search_query'] != 'smf_db_search_query')
Chris@76 38 $smcFunc += array(
Chris@76 39 'db_search_query' => 'smf_db_search_query',
Chris@76 40 'db_search_support' => 'smf_db_search_support',
Chris@76 41 'db_create_word_search' => 'smf_db_create_word_search',
Chris@76 42 'db_support_ignore' => false,
Chris@76 43 );
Chris@76 44 }
Chris@76 45
Chris@76 46 // Does this database type support this search type?
Chris@76 47 function smf_db_search_support($search_type)
Chris@76 48 {
Chris@76 49 $supported_types = array('custom');
Chris@76 50
Chris@76 51 return in_array($search_type, $supported_types);
Chris@76 52 }
Chris@76 53
Chris@76 54 // Returns the correct query for this search type.
Chris@76 55 function smf_db_search_query($identifier, $db_string, $db_values = array(), $connection = null)
Chris@76 56 {
Chris@76 57 global $smcFunc;
Chris@76 58
Chris@76 59 $replacements = array(
Chris@76 60 'create_tmp_log_search_topics' => array(
Chris@76 61 '~mediumint\(\d\)~i' => 'int',
Chris@76 62 '~TYPE=HEAP~i' => '',
Chris@76 63 ),
Chris@76 64 'create_tmp_log_search_messages' => array(
Chris@76 65 '~mediumint\(\d\)~i' => 'int',
Chris@76 66 '~TYPE=HEAP~i' => '',
Chris@76 67 ),
Chris@76 68 );
Chris@76 69
Chris@76 70 if (isset($replacements[$identifier]))
Chris@76 71 $db_string = preg_replace(array_keys($replacements[$identifier]), array_values($replacements[$identifier]), $db_string);
Chris@76 72 elseif (preg_match('~^\s*INSERT\sIGNORE~i', $db_string) != 0)
Chris@76 73 {
Chris@76 74 $db_string = preg_replace('~^\s*INSERT\sIGNORE~i', 'INSERT', $db_string);
Chris@76 75 // Don't error on multi-insert.
Chris@76 76 $db_values['db_error_skip'] = true;
Chris@76 77 }
Chris@76 78
Chris@76 79 $return = $smcFunc['db_query']('', $db_string,
Chris@76 80 $db_values, $connection
Chris@76 81 );
Chris@76 82
Chris@76 83 return $return;
Chris@76 84 }
Chris@76 85
Chris@76 86 // Highly specific - create the custom word index table!
Chris@76 87 function smf_db_create_word_search($size)
Chris@76 88 {
Chris@76 89 global $smcFunc;
Chris@76 90
Chris@76 91 $size = 'int';
Chris@76 92
Chris@76 93 $smcFunc['db_query']('', '
Chris@76 94 CREATE TABLE {db_prefix}log_search_words (
Chris@76 95 id_word {raw:size} NOT NULL default {string:string_zero},
Chris@76 96 id_msg int(10) NOT NULL default {string:string_zero},
Chris@76 97 PRIMARY KEY (id_word, id_msg)
Chris@76 98 )',
Chris@76 99 array(
Chris@76 100 'size' => $size,
Chris@76 101 'string_zero' => '0',
Chris@76 102 )
Chris@76 103 );
Chris@76 104 }
Chris@76 105
Chris@76 106 ?>