Example #1
0
 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;
 }
Example #2
0
 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;
 }
Example #3
0
 /**
  * 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();
     }
 }
Example #4
0
 /**
  * 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();
     }
 }
Example #5
0
 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;
 }