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; 120Syaroslav@ivinco.com public function __construct() 130Syaroslav@ivinco.com { 140Syaroslav@ivinco.com global $conf; 150Syaroslav@ivinco.com 16119Syaroslav $dataPath = fullpath($conf['savedir']); 17119Syaroslav if (!@file_exists($dataPath)) { 18119Syaroslav $dataPath = fullpath(DOKU_INC . $conf['savedir']); 19119Syaroslav } 20119Syaroslav $this->_dbpath = $dataPath . '/sphinxsearch/' . $this->_database; 21119Syaroslav 22119Syaroslav 23119Syaroslav if (false != ($db = new PDO("sqlite:" . $this->_dbpath))) { 240Syaroslav@ivinco.com $q = @$db->query("SELECT 1 FROM {$this->_table} limit 1"); 250Syaroslav@ivinco.com if ($q === false) { 2619Syaroslav@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))"); 2719Syaroslav@ivinco.com if (!$result) { 2819Syaroslav@ivinco.com echo "\nPDO::errorInfo():\n"; 2919Syaroslav@ivinco.com print_r($db->errorInfo()); 3019Syaroslav@ivinco.com exit; 3119Syaroslav@ivinco.com } 3219Syaroslav@ivinco.com } 330Syaroslav@ivinco.com } else { 34119Syaroslav echo "\nPDO::errorInfo():\n"; 35119Syaroslav print_r($db->errorInfo()); 36119Syaroslav exit; 37119Syaroslav } 380Syaroslav@ivinco.com $this->_db = $db; 390Syaroslav@ivinco.com } 400Syaroslav@ivinco.com 410Syaroslav@ivinco.com public function add($page, $title_text, $title, $hid = '') 4219Syaroslav@ivinco.com { 430Syaroslav@ivinco.com $result = $this->_db->query("REPLACE into {$this->_table}(page, page_crc, hid, title, title_text) values(" . $this->_db->quote($page) . ", 4419Syaroslav@ivinco.com '" . sprintf('%u', crc32($page . $hid)) . "', 45*121Syaroslav@ivinco.com " . $this->_db->quote($hid) . ", 4612Syaroslav@ivinco.com " . $this->_db->quote($title) . ", 4719Syaroslav@ivinco.com " . $this->_db->quote($title_text) . ")"); 4819Syaroslav@ivinco.com if (!$result) { 4912Syaroslav@ivinco.com echo "\nPDO::errorInfo():\n"; 5056Syaroslav@ivinco.com print_r($this->_db->errorInfo()); 5156Syaroslav@ivinco.com } 5212Syaroslav@ivinco.com } 530Syaroslav@ivinco.com 540Syaroslav@ivinco.com public function getAll() 550Syaroslav@ivinco.com { 560Syaroslav@ivinco.com $result = $this->_db->query("select * from {$this->_table}"); 570Syaroslav@ivinco.com return $result->fetchAll(PDO::FETCH_ASSOC); 5812Syaroslav@ivinco.com } 590Syaroslav@ivinco.com 600Syaroslav@ivinco.com public function getByCrc($pageCrcList) 6139Syaroslav@ivinco.com { 620Syaroslav@ivinco.com $sql = sprintf("select * from {$this->_table} where page_crc in (%s)", implode(",", $pageCrcList)); 630Syaroslav@ivinco.com $result = $this->_db->query($sql); 640Syaroslav@ivinco.com $rows = $result->fetchAll(PDO::FETCH_ASSOC); 6512Syaroslav@ivinco.com 664Syaroslav@ivinco.com $pages = array(); 670Syaroslav@ivinco.com foreach ($rows as $row) { 680Syaroslav@ivinco.com $pages[$row['page_crc']] = array('page' => $row['page'], 'hid' => $row['hid'], 'title' => $row['title'], 'title_text' => $row['title_text']); 6939Syaroslav@ivinco.com } 700Syaroslav@ivinco.com $results = array(); 7139Syaroslav@ivinco.com foreach ($pageCrcList as $crc) { 7239Syaroslav@ivinco.com $results[$crc] = $pages[$crc]; 7339Syaroslav@ivinco.com } 7439Syaroslav@ivinco.com return $results; 7539Syaroslav@ivinco.com } 7639Syaroslav@ivinco.com} 770Syaroslav@ivinco.com