dokuwiki-sphinxsearch-plugin – Blame information for rev 1

Subversion Repositories:
Rev:
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 }