dokuwiki-sphinxsearch-plugin – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | <?php |
2 | /* |
||
3 | * To change this template, choose Tools | Templates |
||
4 | * and open the template in the editor. |
||
5 | */ |
||
6 | |||
7 | class PageMapper |
||
8 | { |
||
9 | private $_database = 'pagedata'; |
||
10 | private $_table = 'pages'; |
||
11 | private $_db = null; |
||
12 | public function __construct() |
||
13 | { |
||
14 | global $conf; |
||
15 | |||
16 | $dataPath = fullpath($conf['savedir']); |
||
17 | if (!@file_exists($dataPath)) { |
||
18 | $dataPath = fullpath(DOKU_INC . $conf['savedir']); |
||
19 | } |
||
20 | $this->_dbpath = $dataPath . '/sphinxsearch/' . $this->_database; |
||
21 | |||
22 | |||
23 | if (false != ($db = new PDO("sqlite:" . $this->_dbpath))) { |
||
24 | $q = @$db->query("SELECT 1 FROM {$this->_table} limit 1"); |
||
25 | if ($q === false) { |
||
26 | $result = $db->query("CREATE TABLE {$this->_table} ( page varchar(1024), page_crc int(11), hid varchar(1024), title_text varchar(1024), title varchar(1024), unique (page, page_crc))"); |
||
27 | if (!$result) { |
||
28 | echo "\nPDO::errorInfo():\n"; |
||
29 | print_r($db->errorInfo()); |
||
30 | exit; |
||
31 | } |
||
32 | } |
||
33 | } else { |
||
34 | echo "\nPDO::errorInfo():\n"; |
||
35 | print_r($db->errorInfo()); |
||
36 | exit; |
||
37 | } |
||
38 | $this->_db = $db; |
||
39 | } |
||
40 | |||
41 | public function add($page, $title_text, $title, $hid = '') |
||
42 | { |
||
43 | $result = $this->_db->query("REPLACE into {$this->_table}(page, page_crc, hid, title, title_text) values(" . $this->_db->quote($page) . ", |
||
44 | '" . sprintf('%u', crc32($page . $hid)) . "', |
||
45 | " . $this->_db->quote($hid) . ", |
||
46 | " . $this->_db->quote($title) . ", |
||
47 | " . $this->_db->quote($title_text) . ")"); |
||
48 | if (!$result) { |
||
49 | echo "\nPDO::errorInfo():\n"; |
||
50 | print_r($this->_db->errorInfo()); |
||
51 | } |
||
52 | } |
||
53 | |||
54 | public function getAll() |
||
55 | { |
||
56 | $result = $this->_db->query("select * from {$this->_table}"); |
||
57 | return $result->fetchAll(PDO::FETCH_ASSOC); |
||
58 | } |
||
59 | |||
60 | public function getByCrc($pageCrcList) |
||
61 | { |
||
62 | $sql = sprintf("select * from {$this->_table} where page_crc in (%s)", implode(",", $pageCrcList)); |
||
63 | $result = $this->_db->query($sql); |
||
64 | $rows = $result->fetchAll(PDO::FETCH_ASSOC); |
||
65 | |||
66 | $pages = array(); |
||
67 | foreach ($rows as $row) { |
||
68 | $pages[$row['page_crc']] = array('page' => $row['page'], 'hid' => $row['hid'], 'title' => $row['title'], 'title_text' => $row['title_text']); |
||
69 | } |
||
70 | $results = array(); |
||
71 | foreach ($pageCrcList as $crc) { |
||
72 | $results[$crc] = $pages[$crc]; |
||
73 | } |
||
74 | return $results; |
||
75 | } |
||
76 | } |