예제 #1
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('\\[', '[', $_data, 'm');
             $_data = mb_ereg_replace('\\]', ']', $_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);
 }
예제 #2
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');
 }