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); }
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'); }