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