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