Example #1
0
 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";
 }
Example #2
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');
 }
Example #3
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;
 }
Example #4
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);
 }
Example #5
0
 function do_url()
 {
     if (!keys_exists(Vars::$post, 'num', 'type', 'pagename')) {
         throw new PluginException('パラメータが足りません。', $this);
     }
     if (trim(Vars::$post['text']) == '') {
         redirect(Page::getinstance(Vars::$post['pagename']));
     }
     $page = Page::getinstance(Vars::$post['pagename']);
     $source = explode("\n", Page::getinstance(Vars::$post['pagename'])->getsource());
     $count = 0;
     for ($i = 0; $i < count($source); $i++) {
         if (mb_ereg('^#comment(?:\\s|\\(|{|$)', $source[$i])) {
             if ($count == Vars::$post['num']) {
                 $name = trim(Vars::$post['name']);
                 $text = mb_ereg_replace('{', '&173;', Vars::$post['text']);
                 $text = mb_ereg_replace('}', '&175;', $text);
                 $time = date('Y-m-d H:i:s', time());
                 $str = ":[[{$name}>UserPage/{$name}]] &size(80%) {{$time}}:";
                 $str .= mb_ereg("\n", $str) ? "\n#block{{$text}}" : " {$text}";
                 $n = $i + (Vars::$post['type'] == 'below' ? 1 : 0);
                 array_splice($source, $n, 0, $str);
                 $page->write(join("\n", $source));
                 setcookie('name', $name, time() + 60 * 60 * 24 * 30);
                 redirect($page);
             }
             $count++;
         }
     }
     $ret['title'] = 'error';
     $smarty = $this->getSmarty();
     $smarty->assign('text', Vars::$post['text']);
     $ret['body'] = $smarty->fetch('error.tpl.htm');
     return $ret;
 }
Example #6
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;
 }
Example #7
0
 function do_block($page, $param1, $param2)
 {
     $prefix = trim($param1);
     $pattern = '^' . mb_ereg_quote($prefix) . '/(\\d{1,4})-(\\d{2})';
     if (mb_ereg($pattern, $page->getpagename(), $m)) {
         $year = $m[1];
         $month = $m[2];
     } else {
         if (isset(Vars::$get['year']) && isset(Vars::$get['month'])) {
             $year = Vars::$get['year'];
             $month = Vars::$get['month'];
         } else {
             $year = date('Y');
             $month = date('n');
         }
     }
     $smarty = $this->getSmarty();
     $day = 1;
     $last = date('t', mktime(0, 0, 0, $month, 1, $year));
     while ($day <= $last) {
         $line = array_fill(0, 7, '&nbsp;');
         $d = date('w', mktime(0, 0, 0, $month, $day, $year));
         for (; $d < 7 && $day <= $last; $d++, $day++) {
             $p = Page::getinstance(sprintf('%s/%04d-%02d-%02d', $prefix, $year, $month, $day));
             $line[$d] = $p->isexist() ? makelink($p, $day) : $day;
         }
         $table[] = $line;
     }
     $smarty->assign('table', $table);
     $smarty->assign('year', $year);
     $smarty->assign('month', $month);
     $smarty->assign('prefix', $prefix);
     $smarty->assign('page', $page->getpagename());
     return $smarty->fetch('blogcalendar.tpl.htm');
 }
Example #8
0
 function do_url()
 {
     if (!keys_exists(Vars::$post, 'num', 'pagename')) {
         throw new PluginException('パラメータが足りません。', $this);
     }
     if (trim(Vars::$post['text']) == '') {
         redirect(Page::getinstance(Vars::$post['pagename']));
     }
     $page = Page::getinstance(Vars::$post['pagename']);
     $source = explode("\n", Page::getinstance(Vars::$post['pagename'])->getsource());
     $count = 0;
     for ($i = 0; $i < count($source); $i++) {
         if (mb_ereg('^#bbsres(?:\\s|\\(|{|$)', $source[$i])) {
             if ($count == Vars::$post['num']) {
                 $name = isset(Vars::$post['name']) ? trim(Vars::$post['name']) : '';
                 $smarty = $this->getSmarty();
                 $smarty->assign('name', $name);
                 $smarty->assign('text', Vars::$post['text']);
                 $smarty->assign('timestamp', time());
                 array_splice($source, $i, 0, $smarty->fetch('bbsres.tpl'));
                 $page->write(join("\n", $source));
                 setcookie('name', trim($name), time() + 60 * 60 * 24 * 30);
                 redirect($page);
             }
             $count++;
         }
     }
     $ret['title'] = 'error';
     $smarty = $this->getSmarty();
     $smarty->assign('text', Vars::$post['text']);
     $ret['body'] = $smarty->fetch('error.tpl.htm');
     return $ret;
 }
Example #9
0
 protected function includepage($pagename)
 {
     $source = mb_ereg_replace('#blognavi', '', Page::getinstance($pagename)->getsource());
     $smarty = $this->getSmarty();
     $smarty->assign('title', $pagename);
     $smarty->assign('body', convert_block($source, $pagename));
     return $smarty->fetch('include.tpl.htm');
 }
Example #10
0
 function doing()
 {
     $keywords = 'penis|buy|vimax|sonia|online|cheap|lady|a href|' . 'sex|viagra';
     if (preg_match('/.*(' . $keywords . ')/i', trim(Vars::$post['text']))) {
         redirect(Page::getinstance(Vars::$post['pagename']));
         //$this->getSmarty()->display('spam.tpl.html');
         exit;
     }
 }
Example #11
0
 function update($page, $arg)
 {
     if (!$page->isexist() && $page->isexist(1)) {
         $mailflag = Mail::getinstance()->setsending(false);
         $logpage = Page::getinstance(self::LOGPAGE);
         $log = '-' . date('Y-m-d (D) H:i:s') . ' [[' . $page->getpagename() . ']]';
         $logpage->write($log . "\n" . $logpage->getsource());
         Mail::getinstance()->setsending($mailflag);
     }
 }
Example #12
0
 /**
  * ignoreリストを構築する。
  */
 protected function makeignorelist()
 {
     $this->ignorelist = array();
     $page = Page::getinstance(self::ignorelistpage);
     $lines = explode("\n", $page->getsource());
     foreach ($lines as $str) {
         if (mb_ereg('^-\\[\\[(.+)\\]\\]', $str, $m)) {
             $this->ignorelist[] = $m[1];
         }
     }
 }
Example #13
0
 function do_block($page, $param1, $param2)
 {
     $p = Page::getinstance($param1);
     if (!$p->isexist() || $p->isnull()) {
         return '<p class="warning">ページがありません。</p>';
     }
     $smarty = $this->getSmarty();
     $smarty->assign('title', $p->getpagename());
     $smarty->assign('body', convert_Page($p));
     return $smarty->fetch('include.tpl.htm');
 }
Example #14
0
 function do_inline($page, $param1, $param2)
 {
     mb_ereg('^(.*?)(?:\\s*,\\s*(.*?))?$', trim($param1), $m);
     $file = $m[1];
     $page = $m[2] == '' ? $page : Page::getinstance($m[2]);
     if (!Attach::getinstance($page)->isexist($file)) {
         return '<span class="warning">ファイルがありません</span>';
     }
     $url = SCRIPTURL . '?cmd=attach' . '&amp;param=download' . '&amp;page=' . rawurlencode($page->getpagename()) . '&amp;file=' . rawurlencode($file);
     return '<a href="' . $url . '">' . htmlspecialchars($file) . '</a>';
 }
Example #15
0
 function do_url()
 {
     if (isset(Vars::$get['param']) && Vars::$get['param'] == 'restruct') {
         return $this->restruct();
     } else {
         if (isset(Vars::$get['page'])) {
             return $this->showall(Page::getinstance(Vars::$get['page']));
         }
     }
     throw new CommandException('パラメータがちがいます', $this);
 }
Example #16
0
 public function do_url()
 {
     if (!isset(Vars::$get['page'])) {
         throw new CommandException('パラメータが足りません。', $this);
     }
     $page = Page::getinstance(Vars::$get['page']);
     $ret['title'] = $page->getpagename() . ' の変更点';
     $smarty = $this->getSmarty();
     $smarty->assign('diff', diff($page->getsource(1), $page->getsource(0)));
     $ret['body'] = $smarty->fetch('diff.tpl.htm');
     $ret['pagename'] = $page->getpagename();
     return $ret;
 }
Example #17
0
 function do_url()
 {
     if (empty(Vars::$get['page']) || empty(Vars::$get['file'])) {
         exit;
     }
     if (!mb_ereg('\\.(.+?)$', Vars::$get['file'], $m) || empty(self::$type[$m[1]])) {
         exit;
     }
     $file = AttachedFile::getinstance(Vars::$get['file'], Page::getinstance(Vars::$get['page']));
     header('Content-Type: ' . self::$type[$m[1]]);
     header('Content-Length: ' . $file->getsize());
     echo $file->getdata();
     exit;
 }
Example #18
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');
 }
Example #19
0
 function do_url()
 {
     if (!isset(Vars::$get['page'])) {
         throw new PluginException('パラメータが足りません。', $this);
     }
     $page = Page::getinstance(Vars::$get['page']);
     if (isset(Vars::$post['url']) && count(Vars::$post['url']) > 0 && isset(Vars::$post['password'])) {
         if (md5(Vars::$post['password']) == ADMINPASS) {
             return $this->delete($page, Vars::$post['url']);
         } else {
             return $this->show($page, Vars::$post['url']);
         }
     }
     return $this->show($page);
 }
Example #20
0
 function update($obj, $arg)
 {
     if (is_array($arg) && $arg[0] == 'write') {
         $page = $arg[1];
         if ($page->isexist(0) && !$page->isexist(1)) {
             //新規の場合
             if (mb_ereg('^(.*)/.+?$', $page->getpagename(), $m)) {
                 $parent = Page::getinstance($m[1]);
                 $template = Page::getinstance(self::template);
                 if (!$parent->isexist() && $template->isexist()) {
                     $parent->write($template->getsource());
                 }
             }
         }
     }
 }
Example #21
0
 private function write()
 {
     if (!keys_exists(Vars::$post, 'title', 'url', 'comment')) {
         return $this->makeerrormessage_url('引数が足りません。');
     }
     $title = trim(Vars::$post['title']);
     $url = trim(Vars::$post['url']);
     $comment = trim(Vars::$post['comment']);
     if ($title == '') {
         $title = 'no title';
     }
     $page = Page::getinstance($this->pagename_prefix . '/' . date('Y-m-d'));
     $source[] = ':' . mb_ereg_replace(':', '&#x3a;', $title) . ':' . $url;
     $source[] = mb_ereg_replace("[\r\n]+", "\n", $comment);
     $page->write($page->getsource() . "\n" . linetrim(join("\n", $source)));
     redirect($page);
 }
Example #22
0
 protected function rename($page, $newname)
 {
     if (!isset(Vars::$post['password']) || md5(Vars::$post['password']) != ADMINPASS) {
         return $this->showform($page, Vars::$post['newname']);
     }
     $newpage = Page::getinstance(Vars::$post['newname']);
     $smarty = $this->getSmarty();
     $smarty->assign('pagename', $page->getpagename());
     $smarty->assign('newname', $newpage->getpagename());
     $ret['title'] = 'ページ名の変更';
     if ($this->_rename($page, $newpage)) {
         $ret['body'] = $smarty->fetch('success.tpl.htm');
     } else {
         $ret['body'] = $smarty->fetch('failed.tpl.htm');
     }
     return $ret;
 }
Example #23
0
 function do_inline($page, $param1, $param2)
 {
     mb_ereg('^(.*?)(?:\\s*,\\s*(.*?))?$', trim($param1), $m);
     $file = $m[1];
     $page = $m[2] == '' ? $page : Page::getinstance($m[2]);
     if (!Attach::getinstance($page)->isexist($file)) {
         return '<span class="warning">ファイルがありません</span>';
     }
     if (!mb_ereg('\\.(.+?)$', $file, $m) || !isset(Plugin_image::$type[$m[1]])) {
         return '<span class="warning">.' . htmlspecialchars($m[1]) . 'には対応していません</span>';
     }
     $url = SCRIPTURL . '?plugin=image&amp;page=' . rawurlencode($page->getpagename()) . '&amp;file=' . rawurlencode($file);
     if ($m[1] == 'swf') {
         $smarty = new PluginSmarty('image');
         $smarty->assign('url', $url);
         return $smarty->fetch('swf.tpl.htm');
     } else {
         return '<img src="' . $url . '" />';
     }
 }
Example #24
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);
 }
Example #25
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;
 }
Example #26
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);
 }
Example #27
0
 /**
  * つづき元のページに登録する。
  */
 protected function _write_continue()
 {
     if (!mb_ereg('^.+?/.+?/.+$', $this->continuefrom)) {
         return;
     }
     $continueon = "[[{$this->subject}>{$this->pagename}]]";
     $page = Page::getinstance($this->continuefrom);
     $old = $page->getsource();
     $old = mb_ereg_replace("(#right{\n)((?:.|\n)+?}\n----\n)", "\\1&#x5b;{$continueon}&#x5d;につづく\n\\2", $old);
     $page->write($old, true);
 }
Example #28
0
 protected function change_attach($attach, $arg)
 {
     if ($arg[0] == 'rename') {
         $head = '添付ファイルの名前が変更されました。';
         $body[] = '旧ファイル名:' . $arg[1];
         $body[] = '新ファイル名:' . $arg[2];
     }
     if ($arg[0] == 'move') {
         $from = Attach::getinstance(Page::getinstance($arg[1]))->getlist();
         $to = Attach::getinstance(Page::getinstance($arg[2]))->getlist();
         if ($from == array() && $to == array()) {
             //添付ファイルがない場合は何もしない
             return;
         }
         $head = '添付ファイルの添付先が変更されました。';
         $body[] = '旧ページ名:' . $arg[1];
         $body[] = '新ページ名:' . $arg[2];
         $body[] = '';
         $body[] = '以下のファイルが新ページに添付されています。';
         $body[] = join("\n", $to);
         $body[] = '以下のファイルが旧ページ添付されています。';
         $body[] = join("\n", $from);
     } else {
         return;
     }
     $subject = '[' . SITENAME . '] ' . $attach->getpage()->getpagename();
     $text[] = $head;
     $text[] = $this->geturl($attach->getpage());
     $text[] = '----------------------------------------------------------------------';
     $text[] = join("\n", $body);
     sendmail($subject, join("\n", $text));
 }
Example #29
0
 /**
  * あいまいリンク用ページリストを作り直す。
  */
 function restruct()
 {
     $db = DataBase::getinstance();
     $db->begin();
     $db->query('DROP TABLE fuzzylink_list');
     $db->exec(file_get_contents(HIDEABLE_DIR . 'sql/fuzzylink.sql'));
     $result = $db->query('SELECT pagename FROM page');
     while ($row = $db->fetch($result)) {
         $this->addpage(Page::getinstance($row['pagename']));
     }
     $this->refresh();
     $db->commit();
 }
Example #30
0
 function visitT_InlineTag($e)
 {
     try {
         $plugin = Plugin::getPlugin($e->getpluginname());
         return $plugin->do_inlinetag(Page::getinstance($e->getcontext()->pagename), $e->getparam1(), $e->getparam2());
     } catch (NoExistPluginException $exc) {
         return nl2br(htmlspecialchars($e->getsource()));
     } catch (PluginException $exc) {
         return '<span class="warning">' . htmlspecialchars($exc->getMessage()) . '</span>';
     }
 }