1*0Syaroslav@ivinco.com<?php
2*0Syaroslav@ivinco.com/*
3*0Syaroslav@ivinco.com * To change this template, choose Tools | Templates
4*0Syaroslav@ivinco.com * and open the template in the editor.
5*0Syaroslav@ivinco.com */
6*0Syaroslav@ivinco.com
7*0Syaroslav@ivinco.comclass PageMapper
8*0Syaroslav@ivinco.com{
9*0Syaroslav@ivinco.com    private $_database = 'sphinxplugin';
10*0Syaroslav@ivinco.com    private $_table = 'pages';
11*0Syaroslav@ivinco.com    private $_db = null;
12*0Syaroslav@ivinco.com    public function  __construct()
13*0Syaroslav@ivinco.com    {
14*0Syaroslav@ivinco.com        global $conf;
15*0Syaroslav@ivinco.com        $this->_dbpath = DOKU_INC . $conf['savedir'] . '/'.$this->_database;
16*0Syaroslav@ivinco.com
17*0Syaroslav@ivinco.com        if (false != ($db = new SQLiteDatabase($this->_dbpath))) {
18*0Syaroslav@ivinco.com            $q = @$db->query("SELECT 1 FROM {$this->_table} limit 1");
19*0Syaroslav@ivinco.com            if ($q === false) {
20*0Syaroslav@ivinco.com                $db->queryExec("CREATE TABLE {$this->_table} (page varchar(1024), page_crc int(11))");
21*0Syaroslav@ivinco.com            }
22*0Syaroslav@ivinco.com        }
23*0Syaroslav@ivinco.com        $this->_db = $db;
24*0Syaroslav@ivinco.com    }
25*0Syaroslav@ivinco.com
26*0Syaroslav@ivinco.com    public function add($page)
27*0Syaroslav@ivinco.com    {
28*0Syaroslav@ivinco.com        $this->_db->queryExec("REPLACE into {$this->_table}(page, page_crc) values('{$page}', '".crc32($page)."')");
29*0Syaroslav@ivinco.com    }
30*0Syaroslav@ivinco.com
31*0Syaroslav@ivinco.com    public function getAll()
32*0Syaroslav@ivinco.com    {
33*0Syaroslav@ivinco.com        $result = $this->_db->query("select * from {$this->_table}");
34*0Syaroslav@ivinco.com        return $result->fetchAll($query);
35*0Syaroslav@ivinco.com    }
36*0Syaroslav@ivinco.com
37*0Syaroslav@ivinco.com    public function getByCrc($pageCrcList)
38*0Syaroslav@ivinco.com    {
39*0Syaroslav@ivinco.com        $sql = sprintf("select * from {$this->_table} where page_crc in (%s)", implode(",", $pageCrcList));
40*0Syaroslav@ivinco.com        $result = $this->_db->query($sql);
41*0Syaroslav@ivinco.com        $rows = $result->fetchAll($query);
42*0Syaroslav@ivinco.com        $pages = array();
43*0Syaroslav@ivinco.com        foreach($rows as $row){
44*0Syaroslav@ivinco.com            $pages[$row['page_crc']] = $row['page'];
45*0Syaroslav@ivinco.com        }
46*0Syaroslav@ivinco.com        return $pages;
47*0Syaroslav@ivinco.com    }
48*0Syaroslav@ivinco.com}
49