예제 #1
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');
 }