config file '".htmlspecialchars($configname)."' is not exist."); } $config->config_name = $configname; $addline = join('', addline_get_source($config->page)); $addline = rtrim($addline); if ( $block_plugin ){ $postdata = addline_block($addline,$postdata_old,$addline_no,$above); } else { $postdata = addline_inline($addline,$postdata_old,$addline_no,$above); } $title = $_title_updated; $body = ''; if (md5(@join('',$postdata_old)) != $vars['digest']) { $title = $_addline_messages['title_collided']; $body = $_addline_messages['msg_collided'] . make_pagelink($refer); } // $body = $postdata; // debug // foreach ( $vars as $k=>$v ){$body .= "[$k:$v]&br;";} page_write($refer,$postdata); $retvars['msg'] = $title; $retvars['body'] = $body; // $post['page'] = $get['page'] = $vars['page'] = $refer; $post['refer'] = $get['refer'] = $vars['refer'] = $refer; return $retvars; } function addline_block($addline,$postdata_old,$addline_no,$above) { $postdata = ''; $addline_ct = 0; foreach ($postdata_old as $line) { if (!$above) $postdata .= $line; if (preg_match('/^#addline/',$line) and $addline_ct++ == $addline_no) { $postdata = rtrim($postdata)."\n$addline\n"; if ($above) $postdata .= "\n"; } if ($above) $postdata .= $line; } return $postdata; } function addline_inline($addline,$postdata_old,$addline_no,$above) { $postdata = ''; $addline_ct = 0; $skipflag = 0; foreach ($postdata_old as $line) { if ( $skipflag || substr($line,0,1) == ' ' || substr($line,0,2) == '//' ){ $postdata .= $line; continue; } $ct = preg_match_all('/&addline\([^();]*\)({[^{};]*})?;/',$line, $out); if ( $ct ){ for($i=0; $i < $ct; $i++){ if ($addline_ct++ == $addline_no ){ if ( $above == 3 ){ // before $line = preg_replace('/(&addline\([^();]*\)({[^{};]*})?;)/', $addline.'$1',$line,1); } else if ( $above == 2 ){ //after $line = preg_replace('/(&addline\([^();]*\)({[^{};]*})?;)/','$1'.$addline,$line,1); } else if ( $above == 1 ){ // above $line = $addline . "\n" . $line; } else if ( $above == 0 ){ //below $line .= $addline . "\n"; } $skipflag = 1; break; } else if ( $above == 2 || $above == 3 ){ $line = preg_replace('/&addline(\([^();]*\)({[^{};]*})?);/','&___addline$1___;',$line,1); } } if ( $above == 2 || $above == 3 ){ $line = preg_replace('/&___addline(\([^();]*\)({[^{};]*})?)___;/','&addline$1;',$line); } } $postdata .= $line; } return $postdata; } function addline_get_source($page) // tracker.inc.phpのtracker_listから { $source = get_source($page); // 見出しの固有ID部を削除 $source = preg_replace('/^(\*{1,3}.*)\[#[A-Za-z][\w-]+\](.*)$/m','$1$2',$source); // #freezeを削除 return preg_replace('/^#freeze\s*$/m','',$source); } ?>