protected function kino1tokino2() { set_time_limit(0); $unconverted = array(); $db = DataBase::getinstance(); $db->begin(); $_path = $db->escape(realpath(DATA_DIR . WIKIID . '.db.kino1')); $db->exec("ATTACH DATABASE '{$_path}' as kino1"); $query = 'SELECT pagename FROM kino1.page'; $query .= ' WHERE pagename IN (SELECT pagename FROM purepage)'; $unconverted = $db->fetchsinglearray($db->query($query)); $query = 'INSERT INTO purepage'; $query .= ' SELECT pagename, NULL, source, timestamp, timestamp FROM kino1.page'; $query .= ' WHERE pagename NOT IN (SELECT pagename FROM purepage)'; $db->exec($query); AutoLink::getinstance()->refresh(); $db->exec('DELETE FROM pagebackup'); $query = 'SELECT main.attach.pagename, main.attach.filename FROM attach'; $query .= ' INNER JOIN kino1.attach ON main.attach.pagename = kino1.attach.pagename AND main.attach.filename = kino1.attach.filename'; $result = $db->query($query); while ($row = $db->fetch($result)) { $unconverted[] = "{$row['main.attach.pagename']} の添付ファイル {$row['main.attach.filename']}"; } $query = 'INSERT OR IGNORE INTO attach'; $query .= ' SELECT * FROM kino1.attach'; $db->exec($query); $db->commit(); $db->exec("DETACH DATABASE kino1"); return $unconverted; }
protected function puki2kino() { set_time_limit(0); $unconverted = array(); $db = DataBase::getinstance(); $db->begin(); $dir = opendir(DATA_DIR . 'wiki'); while (($filename = readdir($dir)) !== false) { $path = DATA_DIR . 'wiki/' . $filename; if (!is_file($path) || !preg_match('/^(.+)\\.txt$/', $filename, $m)) { continue; } $eucname = substr(pack('H*', '20202020' . $m[1]), 4); $pagename = mb_convert_encoding($eucname, 'UTF-8', 'EUC-JP'); $_pagename = $db->escape($pagename); $_source = $db->escape(mb_convert_encoding(file_get_contents($path), 'UTF-8', 'EUC-JP')); $query = "INSERT OR IGNORE INTO purepage"; $query .= " VALUES('{$_pagename}', null, '{$_source}'," . time() . "," . time() . ")"; $db->query($query); if ($db->changes() == 0) { $unconverted[] = $pagename; } } AutoLink::getinstance()->refresh(); $dir = opendir(DATA_DIR . 'attach'); while (($filename = readdir($dir)) !== false) { $path = DATA_DIR . 'attach/' . $filename; if (!is_file($path) || !preg_match('/^([0-9A-F]+)_([0-9A-F]+)$/', $filename, $m)) { continue; } $eucname = substr(pack('H*', '20202020' . $m[1]), 4); $pagename = mb_convert_encoding($eucname, 'UTF-8', 'EUC-JP'); $eucfilename = substr(pack('H*', '20202020' . $m[2]), 4); $filename = mb_convert_encoding($eucfilename, 'UTF-8', 'EUC-JP'); $_pagename = $db->escape($pagename); $_filename = $db->escape($filename); $bin = file_get_contents($path); $_data = $db->escape($bin); $_size = strlen($bin); $query = "INSERT OR IGNORE INTO attach"; $query .= " (pagename, filename, binary, size, timestamp, count)"; $query .= " VALUES('{$_pagename}', '{$_filename}', '{$_data}', {$_size}, " . time() . ", 0)"; $db->query($query); if ($db->changes() == 0) { $unconverted[] = "{$pagename} の添付ファイル {$filename}"; } } $db->commit(); return $unconverted; }
public static function parse(&$str, $context) { $list[] = $context->pagename; $list[] = getdirname($context->pagename); $list[] = ''; foreach ($list as $dir) { $exp = AutoLink::getinstance()->getexpression($dir); if ($exp != '' && mb_ereg("^{$exp}", $str, $m)) { $str = _substr($str, strlen($m[0])); return new T_AutoLink($m[0], $context, $dir . '/' . $m[0]); } } return null; }