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; }
/** * KinoWikiクラスのインスタンスとは関係のないものの初期化。 */ static function init() { //内部エンコードの設定 mb_internal_encoding('UTF-8'); mb_regex_encoding('UTF-8'); //SCRIPTURLの設定 if ($_SERVER['SERVER_PORT'] == 443) { $protocol = 'https'; $port = ''; } else { $protocol = 'http'; $port = $_SERVER['SERVER_PORT'] != 80 ? ":{$_SERVER['SERVER_PORT']}" : ''; } define('SCRIPTDIR', $protocol . '://' . $_SERVER['SERVER_NAME'] . $port . mb_substr($_SERVER['SCRIPT_NAME'], 0, mb_strrpos($_SERVER['SCRIPT_NAME'], '/') + 1)); define('SCRIPTURL', $protocol . '://' . $_SERVER['SERVER_NAME'] . $port . $_SERVER['SCRIPT_NAME']); //テーブルが用意されているかチェックし、用意されていなければ用意する。 $isinstalled = self::installcheck(); //各クラスの初期化 Vars::init(); AutoLink::init(); BackLink::init(); FuzzyLink::init(); Mail::init(); //テーブルが用意されていなかった場合、初期ページを書き込む if (!$isinstalled) { self::installpage(); } }
/** * Initialize objects except BitWiki class */ static function init() { // set internal encodings. mb_internal_encoding('UTF-8'); mb_regex_encoding('UTF-8'); // set SCRIPTURL if ($_SERVER['SERVER_PORT'] == 443) { $protocol = 'https'; $port = ''; } else { $protocol = 'http'; $port = $_SERVER['SERVER_PORT'] != 80 ? ":{$_SERVER['SERVER_PORT']}" : ''; } define('SCRIPTDIR', $protocol . '://' . $_SERVER['SERVER_NAME'] . $port . mb_substr($_SERVER['SCRIPT_NAME'], 0, mb_strrpos($_SERVER['SCRIPT_NAME'], '/') + 1)); define('SCRIPTURL', $protocol . '://' . $_SERVER['SERVER_NAME'] . $port . $_SERVER['SCRIPT_NAME']); // check if table is already prepared and create when not exists. $isinstalled = self::installcheck(); // insntaciate classes Vars::init(); AutoLink::init(); BackLink::init(); FuzzyLink::init(); Mail::init(); // install initialize page when table is not prepared. if (!$isinstalled) { self::installpage(); } }
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; }