Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
/**
18
 * Post installation and migration code.
19
 *
20
 * @package    search_simpledb
21
 * @copyright  2016 Dan Poltawski <dan@moodle.com>
22
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23
 */
24
 
25
defined('MOODLE_INTERNAL') || die;
26
 
27
/**
28
 * Post installation code.
29
 *
30
 * @package    search_simpledb
31
 * @copyright  2016 Dan Poltawski <dan@moodle.com>
32
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
33
 */
34
function xmldb_search_simpledb_install() {
35
    global $DB;
36
 
37
    switch ($DB->get_dbfamily()) {
38
        case 'postgres':
39
            // There are a few other ways of doing this which avoid the need for individual indexes.
40
            $DB->execute("CREATE INDEX {search_simpledb_title} ON {search_simpledb_index} " .
41
                "USING gin(to_tsvector('simple', title))");
42
            $DB->execute("CREATE INDEX {search_simpledb_content} ON {search_simpledb_index} " .
43
                "USING gin(to_tsvector('simple', content))");
44
            $DB->execute("CREATE INDEX {search_simpledb_description1} ON {search_simpledb_index} " .
45
                "USING gin(to_tsvector('simple', description1))");
46
            $DB->execute("CREATE INDEX {search_simpledb_description2} ON {search_simpledb_index} " .
47
                "USING gin(to_tsvector('simple', description2))");
48
            break;
49
        case 'mysql':
50
            if ($DB->is_fulltext_search_supported()) {
51
                $DB->execute("CREATE FULLTEXT INDEX {search_simpledb_index_index}
52
                              ON {search_simpledb_index} (title, content, description1, description2)");
53
            }
54
            break;
55
        case 'mssql':
56
            if ($DB->is_fulltext_search_supported()) {
57
 
58
                $catalogname = $DB->get_prefix() . 'search_simpledb_catalog';
59
                if (!$DB->record_exists_sql('SELECT * FROM sys.fulltext_catalogs WHERE name = ?', array($catalogname))) {
60
                    $DB->execute("CREATE FULLTEXT CATALOG {search_simpledb_catalog} WITH ACCENT_SENSITIVITY=OFF");
61
                }
62
 
63
                if (defined('PHPUNIT_UTIL') and PHPUNIT_UTIL) {
64
                    // We want manual tracking for phpunit because the fulltext index does get auto populated fast enough.
65
                    $changetracking = 'MANUAL';
66
                } else {
67
                    $changetracking = 'AUTO';
68
                }
69
                $DB->execute("CREATE FULLTEXT INDEX ON {search_simpledb_index} (title, content, description1, description2)
70
                              KEY INDEX {searsimpinde_id_pk} ON {search_simpledb_catalog} WITH CHANGE_TRACKING $changetracking");
71
            }
72
            break;
73
    }
74
}
75