予定表 BBS _WRITEBYNAKAX

kifubbs改造部分の公開

をここに書いていきますね


  • おしごとも気掛かりなことにひと区切りついたことだし、こっちもやっていかないとな -- nakax 2006-05-11 (木) 19:30:25

編集ファイル

とりあえず3ファイルほど修正します。

init.inc.php

  • 以下の項目を付け加えてください
    // sage メール欄に sage と含まれた文字列が書かれた場合、「あげない」機能
    define('KIFUBBS_SAGE', 'sage');
    //define('KIFUBBS_SAGE', ''); 	//無効
    
    // fusianasan メール欄に fusianasan と含まれた文字列が書かれた場合 IPアドレスをさらす機能
    define('KIFUBBS_FUSIANASAN', 'fusianasan');
    //define('KIFUBBS_FUSIANASAN', '');	// 無効

display.inc.php

  • get_col関数を修正します
    • トリップ計算は 2chBBSさんから一部いただいています。ありがとうございます。
      	function get_col($col, $ismain)
      	{
      		if($ismain){
      			$str[] = '<h2>' . htmlspecialchars($col->subject) . '</h2>';
      		}
      		/* $str[] = '<span class="name">【' . make_link($col->name) . '】</span>'; */
      		//$str[] = '<span class="name">' . make_link($col->name) . '</span>';
      		
      		// 表示時にトリップ計算
      		$name = $col->name;
      		if(strstr($name,'◆')){
      			$name = $name . 'トリップ詐称';
      		}elseif(strstr($name,"#")){
      			$pass = substr($name,strpos($name,"#") + 1);
      			$pass = str_replace('&#44;',',',$pass);
      			$salt = substr($pass . "H." , 1 , 2);
      			$salt = ereg_replace("[^\.-z]", "." , $salt);
      			$salt = strtr($salt,":;<=>?@[\\]^_`","ABCDEFGabcdef");
      			$name2 = substr($name , 0, strpos($name,"#"));
      			$name = $name2 . ' ◆' . substr(crypt($pass,$salt),-10);
      		}
      		$str[] = '<span class="name">' . make_link($name) . '</span>';
      
      		if($col->mail != null){
      			$str[] = '<span class="mail"><a href="mailto:' . htmlspecialchars($col->mail) . '">[mail]</a></span>';
      		}
      		if($col->url != null){
      			$str[] = '<span class="url"><a href="' . htmlspecialchars($col->url) . '">[url]</a></span>';
      		}
      		$str[] = '<span class="number"> - No.' . $col->num . '</span>';
      		$str[] = '<span class="timestamp">' . $col->date . ' ' . $col->time . '</span>';
      		if($ismain){
      			$str[] = '<span class="res"><input type="hidden" name="kifubbs_resto" value="' . $col->num . '" /><input type="hidden" name="kifubbs_command" value="showres" /><input type="submit" value="返信" /></span>';
      		}
      		//if($this->vars['states']['adminmode'] == true){
      		if($this->vars['states']['adminmode'] == true || ( KIFUBBS_FUSIANASAN != '' && ereg(KIFUBBS_FUSIANASAN,$col->mail) )){
      			$str[] = '<span class="ipaddress">' . $col->ip . ' - ' . htmlspecialchars($col->host) . '</span>';
      		}

db_mysql.inc.php

  • 修正がいくつかあるので、diff をとってみました。これでわかるかな?
    *** kifubbs.1.5.1.org\kifubbs\db_mysql.inc.php	Mon Mar 29 22:15:02 2004
    --- kifubbs\kifubbs\db_mysql.inc.php	Tue May 16 22:21:28 2006
    ***************
    *** 250,255 ****
    --- 250,256 ----
      		}
      		
      		//親記事のタイムスタンプを更新する
    + 		if(! ereg(KIFUBBS_SAGE,$mail)){		// sage が含まれていなければ更新する
      		    if($resto != null){
      			$query  = 'UPDATE ' . $this->table;
      			$query .= ' SET timestamp = NOW()';
    ***************
    *** 260,265 ****
    --- 261,267 ----
      				$this->error = 'SQL文送信時に何らかの失敗をし、最新記事の並べ換えができませんでした。' . mysql_error();
      			}
      		    }
    + 		}
      		return true;
      	}
      	
    ***************
    *** 321,327 ****
    --- 323,331 ----
      		$query .= " time = '$time',";
      		$query .= " ip = '$ip',";
      		$query .= " host = '$host',";
    + 		if(! ereg(KIFUBBS_SAGE,$mail)){		// sage が含まれていなければ更新する
      			$query .= " timestamp = NOW(),";
    + 		}
      		$query .= " kifu = $kifu";
      		$query .= " WHERE num = $num";
      		
    ***************
    *** 366,374 ****
    --- 370,388 ----
      	 */
      	function getlist($n = -1)
      	{
    + /*
      		$query  = 'SELECT num, subject FROM ' . $this->table;
      		$query .= ' WHERE (resto is null AND delflug = "false")';
      		$query .= ' ORDER BY timestamp DESC';
    + */
    + 
    + 		$query  = 'SELECT s.num, s.subject, COUNT(r.resto) + 1 count';
    + 		$query .= ' FROM ' . $this->table . ' s,' . $this->table . ' r ';
    + 		$query .= ' WHERE s.delflug = "false" AND r.delflug = "false"';
    + 		$query .= ' AND (r.resto = s.num OR s.resto IS NULL and r.resto IS NULL)';
    + 		$query .= ' GROUP BY s.num, s.subject';
    + 		$query .= ' ORDER BY s.timestamp DESC';
    + 
      		if($n != -1){
      			$query .= ' LIMIT ' . addslashes($n);
      		}
    ***************
    *** 381,387 ****
    --- 395,404 ----
      		
      		$ret = null;
      		while($row = mysql_fetch_array($result)){
    + 			/*
      			$ret[] = array('num' => $row['num'], 'subject' => $this->autostripslashes($row['subject']));
    + 			*/
    + 			$ret[] = array('num' => $row['num'], 'subject' => $this->autostripslashes($row['subject']) . '(' . $this->autostripslashes($row['count']) . ')' );
      		}
      		mysql_free_result($result);
      		return $ret;

コメント

  • なにか問題ありそうだったら教えてくださいませ。 -- nakax 2006-05-16 (火) 23:04:22


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-11-16 (月) 22:39:05 (2926d)