示例#1
0
 protected function showlist()
 {
     if (isset(Vars::$get['page'])) {
         $page = Page::getinstance(Vars::$get['page']);
         $smarty = $this->getSmarty();
         $smarty->assign('pagename', $page->getpagename());
         $smarty->assign('list', $page->getbackup());
         $ret['title'] = $page->getpagename() . ' のバックアップ一覧';
         $ret['body'] = $smarty->fetch('list.tpl.htm');
         $ret['pagename'] = $page->getpagename();
     } else {
         $db = DataBase::getinstance();
         $query = "SELECT DISTINCT pagename FROM pagebackup ORDER BY pagename ASC";
         $result = $db->query($query);
         $list = array();
         while ($row = $db->fetch($result)) {
             $list[] = $row['pagename'];
         }
         $smarty = $this->getSmarty();
         $smarty->assign('list', $list);
         $ret['title'] = 'バックアップ一覧';
         $ret['body'] = $smarty->fetch('alllist.tpl.htm');
     }
     return $ret;
 }
示例#2
0
文件: rss.inc.php 项目: riaf/kinowiki
 function do_block($pagename, $param1, $param2)
 {
     $param = array_map('trim', explode(',', $param1));
     if (!isset($param[0])) {
         throw new PluginException('引数がありません', $this);
     }
     $url = $param[0];
     $expire = isset($param[1]) ? (int) $param[1] : 1;
     if ($expire == 0) {
         return $this->getrss($url);
     } else {
         $db = DataBase::getinstance();
         $db->begin();
         $_url = $db->escape($url);
         $row = $db->fetch($db->query("SELECT data,time FROM plugin_rss WHERE url = '{$_url}'"));
         if ($row == false || $row['time'] + $expire * 60 < time()) {
             $data = $this->getrss($url);
             $_data = $db->escape($data);
             $query = "INSERT OR REPLACE INTO plugin_rss (url,data,time)";
             $query .= " VALUES('{$_url}', '{$_data}', " . time() . ")";
             $db->query($query);
         } else {
             $data = $row['data'];
         }
         $db->commit();
         return $data;
     }
 }
示例#3
0
文件: ls.inc.php 项目: riaf/kinowiki
 function do_block($page, $param1, $param2)
 {
     $prefix = resolvepath(trim($param1));
     if ($prefix == '') {
         $prefix = $page->getpagename();
     }
     $prefix .= '/';
     $db = DataBase::getinstance();
     $query = "SELECT pagename FROM page";
     $query .= " WHERE pagename like '{$prefix}%'";
     $query .= " ORDER BY pagename ASC";
     $result = $db->query($query);
     $list = array();
     while ($row = $db->fetch($result)) {
         $list[] = $row['pagename'];
     }
     if ($list == array()) {
         return '';
     }
     natsort($list);
     $len = strlen($prefix);
     foreach ($list as $pagename) {
         $link[] = '<li>' . makelink(Page::getinstance($pagename), substr($pagename, $len)) . '</li>';
     }
     return "<ul>\n" . join("\n", $link) . "\n</ul>\n";
 }
示例#4
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;
 }
示例#5
0
 function do_block($page, $param1, $param2)
 {
     if (!mb_ereg('^\\s*(.+?)\\s*,\\s*(\\d+)\\s*$', $param1, $m) || $m[2] <= 0) {
         throw new PluginException('引数が正しくありません。', $this);
     }
     $home = $m[1];
     $num = $m[2];
     $p = isset(Vars::$get['p']) ? max(0, Vars::$get['p']) : 0;
     $point = $num * $p;
     $db = DataBase::getinstance();
     $pattern = $db->escape('^' . mb_ereg_quote($home) . '/(\\d+)/.+$');
     $query = "SELECT pagename,source FROM page";
     $query .= " WHERE php('mb_ereg', '{$pattern}', pagename)";
     $query .= " ORDER BY timestamp DESC";
     $query .= " LIMIT {$num} OFFSET {$point}";
     $result = $db->query($query);
     $ret = array();
     while ($row = $db->fetch($result)) {
         $ret[] = $this->includepage($row['pagename'], $row['source'], $home);
     }
     $smarty = $this->getSmarty();
     $smarty->assign('pagename', $page->getpagename());
     if ($p > 0) {
         $smarty->assign('next', $p - 1);
     }
     $smarty->assign('prev', $p + 1);
     $smarty->assign('body', join("\n", $ret));
     return $smarty->fetch('bbsviewer.tpl.htm');
 }
示例#6
0
 function doing()
 {
     $db = DataBase::getinstance();
     $db->begin();
     if (!$db->istable('plugin_counter')) {
         $db->exec(file_get_contents(PLUGIN_DIR . 'counter/counter.sql'));
     }
     $_pagename = $db->escape($this->getcurrentPage()->getpagename());
     $query = "SELECT total,today,yesterday,date FROM plugin_counter";
     $query .= " WHERE pagename = '{$_pagename}'";
     $count = $db->fetch($db->query($query));
     $time = time();
     $date = date('Y-m-d', $time);
     if ($count == null || $date != $count['date']) {
         $yesterday = date('Y-m-d', $time - 24 * 60 * 60);
         $count['total'] = isset($count['total']) ? $count['total'] + 1 : 1;
         $count['yesterday'] = isset($count['date']) && $count['date'] == $yesterday ? $count['today'] : 0;
         $count['today'] = 1;
         $query = "INSERT OR REPLACE INTO plugin_counter";
         $query .= " (pagename, total, today, yesterday, date)";
         $query .= " VALUES('{$_pagename}', {$count['total']}, {$count['today']}, {$count['yesterday']}, '{$date}')";
     } else {
         $count['total']++;
         $count['today']++;
         $query = "UPDATE plugin_counter";
         $query .= " SET total = total + 1, today = today + 1";
         $query .= " WHERE pagename = '{$_pagename}'";
     }
     $db->query($query);
     self::$count = $count;
     $db->commit();
 }
示例#7
0
 public function do_url()
 {
     $num = isset(Vars::$get['recent']) && Vars::$get['recent'] > 0 ? (int) Vars::$get['recent'] : 15;
     $db = DataBase::getinstance();
     $query = "SELECT pagename,timestamp FROM page";
     if (isset(Vars::$get['exp']) && trim(Vars::$get['exp']) != '') {
         $_inc = $db->escape(Vars::$get['exp']);
         $query .= " WHERE php('mb_ereg', '{$_inc}', pagename)";
     } else {
         if (isset(Vars::$get['include']) && trim(Vars::$get['include']) != '') {
             $_inc = $db->escape(glob2ereg(Vars::$get['include']));
             $query .= " WHERE php('mb_ereg', '{$_inc}', pagename)";
         }
     }
     $query .= " ORDER BY timestamp DESC, pagename ASC LIMIT {$num}";
     $result = $db->query($query);
     $list = array();
     while ($row = $db->fetch($result)) {
         $item['timestamp'] = $row['timestamp'];
         $item['pagename'] = $row['pagename'];
         $item['url'] = getURL(Page::getinstance($row['pagename']));
         $list[] = $item;
     }
     $smarty = $this->getSmarty();
     $smarty->assign('rssurl', SCRIPTURL . '?' . htmlspecialchars($_SERVER['QUERY_STRING']));
     $smarty->assign('sitename', SITENAME);
     $smarty->assign('baseurl', SCRIPTURL);
     $smarty->assign('list', $list);
     header('Content-Type: application/xml; charset=UTF-8');
     header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $item['timestamp'][0]) . ' GMT');
     $smarty->display('rss10.tpl.htm');
     exit;
 }
示例#8
0
 function do_url()
 {
     if (!keys_exists(Vars::$post, 'base', 'config')) {
         throw new PluginException('パラメータが足りません', $this);
     }
     $source = Page::getinstance(':config/plugin/tracker/' . Vars::$post['config'] . '/page')->getsource();
     foreach (Vars::$post as $key => $data) {
         if (mb_strpos($key, 'param_') === 0) {
             $name = '[' . mb_substr($key, 6) . ']';
             $_data = trim($data);
             $_data = mb_ereg_replace('\\[', '&#x5b;', $_data, 'm');
             $_data = mb_ereg_replace('\\]', '&#x5d;', $_data, 'm');
             $replace[$name] = $_data;
         }
     }
     $replace['[_date]'] = date('Y-m-d H:i:s');
     $replace['[_base]'] = Vars::$post['base'];
     foreach ($replace as $name => $data) {
         $source = mb_ereg_replace(mb_ereg_quote($name), $data, $source, 'm');
     }
     $db = DataBase::getinstance();
     self::$sqlite_pattern = '^' . mb_ereg_quote(Vars::$post['base']) . '/(\\d+)';
     $db->create_aggregate('plugin_tracker_maxnum', array('Plugin_tracker', 'sqlite_maxnum'), array('Plugin_tracker', 'sqlite_maxnum_finalize'), 1);
     $row = $db->fetch($db->query("SELECT plugin_tracker_maxnum(pagename) FROM page"));
     $num = $row[0] + 1;
     $title = isset(Vars::$post['param_title']) && trim(Vars::$post['param_title']) != '' ? '/' . trim(Vars::$post['param_title']) : '';
     $page = Page::getinstance(Vars::$post['base'] . '/' . $num . $title);
     $page->write($source);
     redirect($page);
 }
示例#9
0
 public function do_url()
 {
     if (!isset(Vars::$get['blogname']) || trim(Vars::$get['blogname']) == '') {
         throw new PluginException('パラメータが足りません。', $this);
     }
     $blogname = trim(Vars::$get['blogname']);
     $num = isset(Vars::$get['recent']) && Vars::$get['recent'] > 0 ? (int) Vars::$get['recent'] : 15;
     $db = DataBase::getinstance();
     $_exp = $db->escape('^' . mb_ereg_quote($blogname) . '/\\d{4}-\\d{2}-\\d{2}/');
     $query = "SELECT pagename,timestamp FROM page";
     $query .= " WHERE php('mb_ereg', '{$_exp}', pagename)";
     $query .= " ORDER BY timestamp DESC, pagename ASC LIMIT {$num}";
     $result = $db->query($query);
     $list = array();
     $prefixsize = mb_strlen($blogname . '/9999-99-99/');
     while ($row = $db->fetch($result)) {
         $item['timestamp'] = $row['timestamp'];
         $item['pagename'] = mb_substr($row['pagename'], $prefixsize);
         $item['url'] = getURL(Page::getinstance($row['pagename']));
         $list[] = $item;
     }
     $smarty = $this->getSmarty();
     $smarty->assign('rssurl', SCRIPTURL . '?' . htmlspecialchars($_SERVER['QUERY_STRING']));
     $smarty->assign('sitename', SITENAME);
     $smarty->assign('blogurl', getURL(Page::getinstance($blogname)));
     $smarty->assign('blogname', $blogname);
     $smarty->assign('list', $list);
     header('Content-Type: application/xml; charset=UTF-8');
     header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $item['timestamp'][0]) . ' GMT');
     $smarty->display('blogrss10.tpl.htm');
     exit;
 }
示例#10
0
 function do_block($page, $param1, $param2)
 {
     $num = (int) trim($param1) > 0 ? (int) trim($param1) : 15;
     $exp = array();
     foreach (array_map('trim', explode("\n", $param2)) as $s) {
         if ($s != '') {
             $exp[] = $s;
         }
     }
     $db = DataBase::getinstance();
     $query = "SELECT pagename,timestamp FROM page";
     if ($exp != array()) {
         $_exp = $db->escape('(?:' . join('|', $exp) . ')');
         $query .= " WHERE php('mb_ereg', '{$_exp}', pagename) = 0";
     }
     $query .= " ORDER BY timestamp DESC, pagename ASC LIMIT {$num}";
     $result = $db->query($query);
     $list = array();
     while ($row = $db->fetch($result)) {
         $list[date('Y-m-d', $row['timestamp'])][] = makelink(Page::getinstance($row['pagename']));
     }
     $smarty = $this->getSmarty();
     $smarty->assign('list', $list);
     return $smarty->fetch('recent.tpl.htm');
 }
示例#11
0
 function do_url()
 {
     $db = DataBase::getinstance();
     $list = $db->fetchsinglearray($db->query('SELECT pagename FROM page'));
     mb_natcasesort($list);
     $smarty = $this->getSmarty();
     $smarty->assign('pagelist', $list);
     $ret['title'] = 'ページ一覧';
     $ret['body'] = $smarty->fetch('list.tpl.htm');
     return $ret;
 }
示例#12
0
 function do_block($page, $param1, $param2)
 {
     $smarty = $this->getSmarty();
     $db = DataBase::getinstance();
     $query = "SELECT pagename, count(linker) AS pagecount, sum(times) AS total";
     $query .= " FROM page LEFT JOIN linklist ON linked = pagename";
     $query .= " GROUP BY pagename";
     $query .= " ORDER BY pagecount DESC, total DESC, pagename ASC";
     $result = $db->query($query);
     while ($row = $db->fetch($result)) {
         $smarty->append('list', $row);
     }
     return $smarty->fetch('list.tpl.htm');
 }
示例#13
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;
 }
示例#14
0
 protected function __construct($home)
 {
     $this->home = $home;
     $db = DataBase::getinstance();
     $_pattern = $db->escape('^' . mb_ereg_quote($home) . '/\\d{4}-\\d{2}-\\d{2}$');
     $query = "SELECT pagename FROM page";
     $query .= " WHERE php('mb_ereg', '{$_pattern}', pagename)";
     $result = $db->query($query);
     $this->datepage = array();
     while ($row = $db->fetch($result)) {
         $this->datepage[] = $row['pagename'];
     }
     sort($this->datepage);
 }
示例#15
0
 function do_block($page, $param1, $param2)
 {
     $arg = array_map('trim', explode(',', $param1));
     $base = isset($arg[0]) && $arg[0] != '' ? $arg[0] : $page->getpagename();
     $config = isset($arg[1]) && $arg[1] != '' ? $arg[1] : 'default';
     $this->sortkey = isset($arg[2]) ? array_slice($arg, 2) : array();
     $configpagename = ':config/plugin/tracker/' . $config;
     $configdata = Plugin_tracker::Page2data(Page::getinstance($configpagename));
     $this->type2name = array();
     foreach ($configdata['form'] as $name => $line) {
         if (mb_ereg('\\[(.+?)\\]', $line[0], $m)) {
             $this->type2name[$m[1]] = $name;
         }
     }
     $this->selectorder = $this->getselectorderlist($configdata);
     $bgcolorlist = $this->getbgcolorlist($configdata);
     $list = array();
     $db = DataBase::getinstance();
     $query = 'SELECT pagename, source FROM page';
     $query .= ' WHERE pagename like \'' . $db->escape($base) . '%\'';
     $query .= ' ORDER BY timestamp DESC';
     $result = $db->query($query);
     while ($row = $db->fetch($result)) {
         if (!mb_ereg('^' . mb_ereg_quote($base) . '/(\\d+)/(.+)$', $row[0], $m)) {
             continue;
         }
         $item = array();
         $item['var']['_page'] = $row[0];
         $item['var']['_num'] = $m[1];
         $item['var']['_title'] = $m[2];
         foreach (explode("\n", $row[1]) as $line) {
             if (mb_ereg('^[-ー・](.+?)[\\t  ]*[::][\\t  ]*(.+?)[\\t  ]*$', $line, $m)) {
                 if (!isset($item[$m[1]])) {
                     $item['var'][$m[1]] = $m[2];
                     $item['bgcolor'][$m[1]] = isset($bgcolorlist[$m[1]][$m[2]]) ? $bgcolorlist[$m[1]][$m[2]] : null;
                 }
             }
         }
         $list[] = $item;
     }
     usort($list, array($this, 'cmp'));
     $smarty = $this->getSmarty();
     $smarty->assign('list', $list);
     if (trim($param2) == '') {
         return '<p class="warning">表示項目を指定してください</p>';
     }
     $smarty->assign('varname', array_map('trim', explode(',', $param2)));
     return $smarty->fetch('trackerlist.tpl.htm');
 }
示例#16
0
 function do_block($page, $param1, $param2)
 {
     $db = DataBase::getinstance();
     $query = "SELECT pagename FROM allpage";
     $query .= " WHERE pagename LIKE ':%' OR pagename LIKE '%/:%";
     $query .= " ORDER BY pagename ASC";
     $result = $db->query($query);
     $list = $db->fetchsinglearray($result);
     if ($list == array()) {
         return '';
     }
     natsort($list);
     foreach ($list as $pagename) {
         $link[] = '<li>' . makelink($pagename) . '</li>';
     }
     return "<ul>\n" . join("\n", $link) . "\n</ul>\n";
 }
示例#17
0
 function do_block($page, $param1, $param2)
 {
     $home = trim($param1) != '' ? Page::getinstance(trim($param1)) : Page::getinstance(dirname($page->getpagename()));
     if ($home->isnull()) {
         throw new PluginException('パラメータが正しくありません', $this);
     }
     $db = DataBase::getinstance();
     $_home = $db->escape($home->getpagename());
     $query = "SELECT pagename FROM page";
     $query .= " WHERE pagename like '{$_home}/%'";
     $query .= " ORDER BY pagename ASC";
     $result = $db->query($query);
     $list = array();
     while ($row = $db->fetch($result)) {
         $list[] = $row['pagename'];
     }
     if ($list == array()) {
         return '';
     }
     natsort($list);
     $here = array_search($page->getpagename(), $list);
     if ($here === false) {
         throw new PluginException('現在のページが見つかりません', $this);
     }
     $prev = $here > 0 ? $list[$here - 1] : null;
     $next = isset($list[$here + 1]) ? $list[$here + 1] : null;
     $str[] = '<div class="plugin_navi">';
     if ($prev != null) {
         $str[] = '[' . makelink($prev, $this->prevmes) . ']';
     } else {
         $str[] = '[' . htmlspecialchars($this->prevmes) . ']';
     }
     if ($next != null) {
         $str[] = '[' . makelink($next, $this->nextmes) . ']';
     } else {
         $str[] = '[' . htmlspecialchars($this->nextmes) . ']';
     }
     $str[] = '[' . makelink($home, $this->homemes) . ']';
     $str[] = '</div>';
     return join("\n", $str);
 }
示例#18
0
 public function do_url()
 {
     //numはフィードに含める項目数。
     //GET引数でrecent(>0)が与えられればnumとして採用。そうでなければnum=15とする。
     $num = isset(Vars::$get['recent']) && Vars::$get['recent'] > 0 ? (int) Vars::$get['recent'] : 15;
     $db = DataBase::getinstance();
     $query = "SELECT pagename,timestamp FROM page";
     //GET引数に正規表現exp(またはワイルドカードパターンinclude)が設定され、
     //かつ空でないなら、exp(またはinclude)と一致するページだけを検索。
     if (isset(Vars::$get['exp']) && trim(Vars::$get['exp']) != '') {
         $_inc = $db->escape(Vars::$get['exp']);
         $query .= " WHERE php('mb_ereg', '{$_inc}', pagename)";
     } else {
         if (isset(Vars::$get['include']) && trim(Vars::$get['include']) != '') {
             $_inc = $db->escape(glob2ereg(Vars::$get['include']));
             $query .= " WHERE php('mb_ereg', '{$_inc}', pagename)";
         }
     }
     $query .= " ORDER BY timestamp DESC, pagename ASC LIMIT {$num}";
     $result = $db->query($query);
     $list = array();
     while ($row = $db->fetch($result)) {
         $item['timestamp'] = $row['timestamp'];
         $item['pagename'] = $row['pagename'];
         $_p = Page::getinstance($row['pagename']);
         $item['url'] = getURL($_p);
         $item['description'] = htmlspecialchars(convert_Page($_p));
         $list[] = $item;
     }
     $smarty = $this->getSmarty();
     $smarty->assign('list', $list);
     $smarty->assign('rssurl', SCRIPTURL . '?' . htmlspecialchars($_SERVER['QUERY_STRING']));
     $smarty->assign('sitename', SITENAME);
     $smarty->assign('baseurl', SCRIPTURL);
     header('Content-Type: application/xml; charset=UTF-8');
     header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $item['timestamp'][0]) . ' GMT');
     $smarty->display('rss20.tpl.htm');
     exit;
 }
示例#19
0
 /**
  * ページ名を変更する(ソースコードを移動する)。
  * 
  * @param	Page	$page	変更前ページ
  * @param	Page	$newpage	変更後ページ
  * @return	bool	成功すればtrue。
  */
 protected function _rename($page, $newpage)
 {
     if ($newpage->isexist()) {
         return false;
     }
     $db = DataBase::getinstance();
     $db->begin();
     $mail = Mail::getinstance();
     $old = $mail->setsending(false);
     $newpage->write($page->getsource());
     $page->write('');
     $mail->setsending($old);
     try {
         Attach::getinstance($page)->move($newpage);
     } catch (DBException $e) {
         $db->rollback();
         return false;
     }
     $this->notify(array($page, $newpage));
     $this->mail($page, $newpage);
     $db->commit();
     return true;
 }
示例#20
0
 function do_url()
 {
     if (!isset(Vars::$post['bbsname']) || Vars::$post['bbsname'] == '') {
         throw new PluginException('パラメータが足りません。', $this);
     }
     if (!isset(Vars::$post['text']) || Vars::$post['text'] == '') {
         redirect(Page::getinstance(isset(Vars::$post['pagename']) ? Vars::$post['pagename'] : ''));
     }
     $db = DataBase::getinstance();
     self::$sqlite_pattern = '^' . mb_ereg_quote(Vars::$post['bbsname']) . '/(\\d+)/.+$';
     $db->create_aggregate('maxbbsnum', array('Plugin_bbs', 'sqlite_maxbbsnum'), array('Plugin_bbs', 'sqlite_maxbbsnum_finalize'), 1);
     $row = $db->fetch($db->query("SELECT maxbbsnum(pagename) FROM page"));
     $num = $row[0] + 1;
     $subject = isset(Vars::$post['subject']) && trim(Vars::$post['subject']) != '' ? trim(Vars::$post['subject']) : '(無題)';
     $page = Page::getinstance(Vars::$post['bbsname'] . "/{$num}/{$subject}");
     $smarty = $this->getSmarty();
     $smarty->assign('timestamp', time());
     $name = isset(Vars::$post['name']) ? trim(Vars::$post['name']) : '';
     $smarty->assign('name', $name);
     $smarty->assign('text', Vars::$post['text']);
     $page->write($smarty->fetch('bbs.tpl'));
     setcookie('name', $name, time() + 60 * 60 * 24 * 30);
     redirect($page);
 }
示例#21
0
 protected function listpage()
 {
     $db = DataBase::getinstance();
     $smarty = $this->getSmarty();
     $query = "SELECT DISTINCT pagename FROM attach ORDER BY pagename ASC";
     $result = $db->query($query);
     while ($row = $db->fetch($result)) {
         $smarty->append('list', $row['pagename']);
     }
     $ret['title'] = '添付ファイルを持つページ一覧';
     $ret['body'] = $smarty->fetch('listpage.tpl.htm');
     return $ret;
 }
示例#22
0
 /**
  * 検索クエリ実行。
  * 
  * @return	array(string)
  */
 protected function _search($query)
 {
     $db = DataBase::getinstance();
     $result = $db->query($query);
     $ret = array();
     while ($row = $db->fetch($result)) {
         $ret[] = $row['pagename'];
     }
     return $ret;
 }
示例#23
0
 protected function getcol($col)
 {
     $db = DataBase::getinstance();
     $_filename = $db->escape($this->filename);
     $_pagename = $db->escape($this->page->getpagename());
     $query = "SELECT {$col} FROM attach";
     $query .= " WHERE (pagename = '{$_pagename}' AND filename = '{$_filename}')";
     $row = $db->fetch($db->query($query));
     return $row != false ? $row[$col] : false;
 }
示例#24
0
 /**
  * 受信済みReferrerを取得する。
  */
 protected function getlist($page)
 {
     $db = DataBase::getinstance();
     $_pagename = $db->escape($page->getpagename());
     $query = "SELECT url, count FROM plugin_referrer";
     $query .= " WHERE pagename = '{$_pagename}'";
     $query .= " ORDER BY count DESC";
     return $db->fetchall($db->query($query));
 }
示例#25
0
 /**
  * 該当のレコードから値を取得する。
  * 
  * @param	string	$result	結果のカラム。
  * @param	int	$num	0の時は現在のものを、1以上の時はバックアップのものを取得する。
  * @return	mixed	結果のカラムの値。無い場合はnullを返す。
  */
 protected function getresult($result, $num = 0)
 {
     $db = DataBase::getinstance();
     $_pagename = $db->escape($this->pagename);
     if ($num == 0) {
         $query = "SELECT {$result} FROM allpage";
         $query .= " WHERE pagename = '{$_pagename}'";
     } else {
         $_num = $num - 1;
         $query = "SELECT {$result} FROM pagebackup";
         $query .= " WHERE pagename = '{$_pagename}'";
         $query .= " ORDER BY number DESC LIMIT 1 OFFSET {$_num}";
     }
     $row = $db->fetch($db->query($query));
     return $row !== false ? $row[0] : null;
 }
示例#26
0
 /**
  * 逆リンクを全て更新する。
  */
 function refreshall()
 {
     $db = DataBase::getinstance();
     $db->begin();
     $db->query("DELETE FROM linklist");
     $result = $db->query("SELECT pagename FROM page");
     while ($row = $db->fetch($result)) {
         $this->refreshlinker(Page::getinstance($row['pagename']));
     }
     $db->commit();
 }
示例#27
0
 /**
  * 投稿記事の保存。
  */
 protected function write()
 {
     if (mb_ereg('^' . mb_ereg_quote($this->blogname) . '/.+?/(.+)$', $this->continuefrom, $m)) {
         $continuefrom = "[[{$m[1]}>{$this->continuefrom}]]";
     } else {
         $continuefrom = '';
     }
     $catlist = '';
     foreach ($this->categories as $c) {
         $catlist .= "&#x5b;[[{$c}>{$this->categorypagename}/{$c}]]&#x5d;";
     }
     $smarty = $this->getSmarty();
     $smarty->assign('subject', $this->subject);
     $smarty->assign('text', $this->text);
     $smarty->assign('categorylist', $catlist);
     $smarty->assign('timestamp', time());
     $smarty->assign('continuefrom', $continuefrom);
     $smarty->assign('pagename', $this->pagename);
     $source = $smarty->fetch('blog.tpl');
     //autolsプラグインと衝突しないように、書き込み順に注意。
     DataBase::getinstance()->begin();
     $this->_write_datepage();
     Page::getinstance($this->pagename)->write($source);
     $this->_write_category();
     $this->_write_continue();
     DataBase::getinstance()->commit();
 }
示例#28
0
 /**
  * オートリンク用正規表現を作り直す。
  */
 function refresh()
 {
     $db = DataBase::getinstance();
     $db->query("DELETE FROM autolink");
     $this->expression = array();
 }
示例#29
0
 /**
  * あいまいリンク用リストからページを削除する。
  */
 protected function delpage($page)
 {
     $db = DataBase::getinstance();
     $_pagename = $db->escape($page->getpagename());
     $db->query("DELETE FROM fuzzylink_list WHERE pagename = '{$_pagename}'");
 }
示例#30
0
 /**
  * データベースがインストールされているかチェックし、インストールを行う。
  * 
  * @return	bool	インストールされていればtrue。
  */
 private static function installcheck()
 {
     $db = DataBase::getinstance();
     if ($db->istable('purepage')) {
         return true;
     } else {
         $db->exec(file_get_contents(HIDEABLE_DIR . 'sql/kinowiki.sql'));
         $dir = opendir(HIDEABLE_DIR . '/sql');
         while (($filename = readdir($dir)) !== false) {
             $path = HIDEABLE_DIR . '/sql/' . $filename;
             if (!is_file($path) || $filename == 'kinowiki.sql') {
                 continue;
             }
             $db->exec(file_get_contents($path));
         }
         return false;
     }
 }