Exemplo n.º 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;
 }
Exemplo n.º 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;
 }
Exemplo n.º 3
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;
 }