10Syaroslav@ivinco.com<?php
20Syaroslav@ivinco.com/*
30Syaroslav@ivinco.com * To change this template, choose Tools | Templates
40Syaroslav@ivinco.com * and open the template in the editor.
50Syaroslav@ivinco.com */
60Syaroslav@ivinco.com
70Syaroslav@ivinco.comclass PageMapper
80Syaroslav@ivinco.com{
9*1Syaroslav@ivinco.com    private $_database = 'pagedata';
100Syaroslav@ivinco.com    private $_table = 'pages';
110Syaroslav@ivinco.com    private $_db = null;
120Syaroslav@ivinco.com    public function  __construct()
130Syaroslav@ivinco.com    {
140Syaroslav@ivinco.com        global $conf;
15*1Syaroslav@ivinco.com        $this->_dbpath = DOKU_INC . $conf['savedir'] . '/sphinxsearch/'.$this->_database;
160Syaroslav@ivinco.com
17*1Syaroslav@ivinco.com        if (false != ($db = new PDO("sqlite:".$this->_dbpath))) {
180Syaroslav@ivinco.com            $q = @$db->query("SELECT 1 FROM {$this->_table} limit 1");
190Syaroslav@ivinco.com            if ($q === false) {
20*1Syaroslav@ivinco.com                $db->query("CREATE TABLE {$this->_table} (page varchar(1024), page_crc int(11))");
210Syaroslav@ivinco.com            }
220Syaroslav@ivinco.com        }
230Syaroslav@ivinco.com        $this->_db = $db;
240Syaroslav@ivinco.com    }
250Syaroslav@ivinco.com
260Syaroslav@ivinco.com    public function add($page)
270Syaroslav@ivinco.com    {
28*1Syaroslav@ivinco.com        $this->_db->query("REPLACE into {$this->_table}(page, page_crc) values('{$page}', '".crc32($page)."')");
290Syaroslav@ivinco.com    }
300Syaroslav@ivinco.com
310Syaroslav@ivinco.com    public function getAll()
320Syaroslav@ivinco.com    {
330Syaroslav@ivinco.com        $result = $this->_db->query("select * from {$this->_table}");
340Syaroslav@ivinco.com        return $result->fetchAll($query);
350Syaroslav@ivinco.com    }
360Syaroslav@ivinco.com
370Syaroslav@ivinco.com    public function getByCrc($pageCrcList)
380Syaroslav@ivinco.com    {
390Syaroslav@ivinco.com        $sql = sprintf("select * from {$this->_table} where page_crc in (%s)", implode(",", $pageCrcList));
400Syaroslav@ivinco.com        $result = $this->_db->query($sql);
410Syaroslav@ivinco.com        $rows = $result->fetchAll($query);
420Syaroslav@ivinco.com        $pages = array();
430Syaroslav@ivinco.com        foreach($rows as $row){
440Syaroslav@ivinco.com            $pages[$row['page_crc']] = $row['page'];
450Syaroslav@ivinco.com        }
460Syaroslav@ivinco.com        return $pages;
470Syaroslav@ivinco.com    }
480Syaroslav@ivinco.com}
49