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{ 91Syaroslav@ivinco.com private $_database = 'pagedata'; 100Syaroslav@ivinco.com private $_table = 'pages'; 110Syaroslav@ivinco.com private $_db = null; 12*39Syaroslav@ivinco.com private $_offset = 0; 130Syaroslav@ivinco.com public function __construct() 140Syaroslav@ivinco.com { 150Syaroslav@ivinco.com global $conf; 161Syaroslav@ivinco.com $this->_dbpath = DOKU_INC . $conf['savedir'] . '/sphinxsearch/'.$this->_database; 170Syaroslav@ivinco.com 181Syaroslav@ivinco.com if (false != ($db = new PDO("sqlite:".$this->_dbpath))) { 190Syaroslav@ivinco.com $q = @$db->query("SELECT 1 FROM {$this->_table} limit 1"); 200Syaroslav@ivinco.com if ($q === false) { 2119Syaroslav@ivinco.com $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))"); 2219Syaroslav@ivinco.com if (!$result) { 2319Syaroslav@ivinco.com echo "\nPDO::errorInfo():\n"; 2419Syaroslav@ivinco.com print_r($db->errorInfo()); 2519Syaroslav@ivinco.com exit; 2619Syaroslav@ivinco.com } 2719Syaroslav@ivinco.com 280Syaroslav@ivinco.com } 290Syaroslav@ivinco.com } 300Syaroslav@ivinco.com $this->_db = $db; 310Syaroslav@ivinco.com } 320Syaroslav@ivinco.com 3319Syaroslav@ivinco.com public function add($page, $title_text, $title, $hid='') 340Syaroslav@ivinco.com { 3519Syaroslav@ivinco.com $result = $this->_db->query("REPLACE into {$this->_table}(page, page_crc, hid, title, title_text) values(".$this->_db->quote($page).", 3612Syaroslav@ivinco.com '".crc32($page.$hid)."', 3712Syaroslav@ivinco.com ".$this->_db->quote($hid).", 3819Syaroslav@ivinco.com ".$this->_db->quote($title).", 3919Syaroslav@ivinco.com ".$this->_db->quote($title_text).")"); 4012Syaroslav@ivinco.com if (!$result) { 4112Syaroslav@ivinco.com //echo "\nPDO::errorInfo():\n"; 4212Syaroslav@ivinco.com //print_r($this->_db->errorInfo()); 4312Syaroslav@ivinco.com } 440Syaroslav@ivinco.com } 450Syaroslav@ivinco.com 460Syaroslav@ivinco.com public function getAll() 470Syaroslav@ivinco.com { 480Syaroslav@ivinco.com $result = $this->_db->query("select * from {$this->_table}"); 4912Syaroslav@ivinco.com return $result->fetchAll(PDO::FETCH_ASSOC); 500Syaroslav@ivinco.com } 510Syaroslav@ivinco.com 52*39Syaroslav@ivinco.com public function getByCrc($pageCrcList) 530Syaroslav@ivinco.com { 540Syaroslav@ivinco.com $sql = sprintf("select * from {$this->_table} where page_crc in (%s)", implode(",", $pageCrcList)); 550Syaroslav@ivinco.com $result = $this->_db->query($sql); 5612Syaroslav@ivinco.com $rows = $result->fetchAll(PDO::FETCH_ASSOC); 574Syaroslav@ivinco.com 580Syaroslav@ivinco.com $pages = array(); 590Syaroslav@ivinco.com foreach($rows as $row){ 60*39Syaroslav@ivinco.com $pages[$row['page_crc']] = array('page' => $row['page'], 'hid' => $row['hid'], 'title' => $row['title'], 'title_text' => $row['title_text']); 610Syaroslav@ivinco.com } 62*39Syaroslav@ivinco.com $results = array(); 63*39Syaroslav@ivinco.com foreach($pageCrcList as $crc){ 64*39Syaroslav@ivinco.com $results[$crc] = $pages[$crc]; 65*39Syaroslav@ivinco.com } 66*39Syaroslav@ivinco.com return $results; 67*39Syaroslav@ivinco.com } 680Syaroslav@ivinco.com} 69