■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 最新50 [PR]ぜろちゃんねるプラス[PR]  
レス数が1000を超えています。残念ながら全部は表示しません。

ぜろちゃんねるスクリプトを改造するスレ

669 :名無しさん@ぜろちゃんねる:2006/07/05(水) 03:15:17 ID:???0
http://0ch.mine.nu/test/read.cgi/jikken/1120050851/829 の後半を見て
ちょっと弄ってみました。

test060227 thread.res.pl

(1)
my @log,$log; Load_log($Sys,\@log); Check_dat($Dat,\@log); $log = @log;
require('./module/galadriel.pl');

(2)
if ($log && $Dat->Size() - $i <= $log) {Add_log(\$elem[3],\$log[$log - ($Dat->Size() - $i)]);}

(3)
if ($log && $Dat->Size() - $num <= $log) {Add_log(\$elem[3],\$log[$log - ($Dat->Size() - $num)]);}


238〜241行目、358〜361行目、418〜421行目の、

# レス一覧を出力
(略)
@elem = split(/<>/,$$pRes);

を、それぞれ(1)(2)、(1)(3)、(1)(3)で挟む。

↓続く

670 :名無しさん@ぜろちゃんねる:2006/07/05(水) 03:15:40 ID:???0
適当なところに以下を追加。
sub Load_log{
my ($Sys,$log) = @_;
my $logPath = $Sys->Get('BBSPATH') . '/' . $Sys->Get('BBS') . '/log/' . $Sys->Get('KEY') . '.cgi';
eval{ if (-e $logPath){
open(LOGFILE,"< $logPath");
binmode(LOGFILE);
@$log = <LOGFILE>;
close(LOGFILE);
}};
}
sub Add_log{
my ($elem,$logline) = @_;
chomp($$logline);
if($$logline eq 'Over'){$$elem .="<br>[$$logline]"; return;}
my @logline = split(/<>/, $$logline);
$logline[0] = GALADRIEL::GetDateFromSerial(undef,$logline[0],0);
$logline[1] .= 'byte';
$logline = join('<>', @logline);
$$elem .="<br>[$logline]";
}
sub Check_dat{
my ($Dat,$log) = @_;
my $pRes = $Dat->Get($Dat->Size() - 1);
if ((split(/<>/, $$pRes))[2] =~ m/Over/i ){
push(@$log, 'Over');
}
}

↓続く

671 :名無しさん@ぜろちゃんねる:2006/07/05(水) 03:17:22 ID:???0
上手くいけば、レス削除画面で、
レス書き込みログ保存分だけ、↓こんなふうに表示されます。

 11:名無しさん@ぜろちゃんねる:2006/07/05(水) 21:10:10
    test
    [2006/07/05 21:10<>4byte<>0ch BBS 2006-02-27<>(ホスト)]

しかしスレッド内に透明あぼ〜んがあるとズレます。

672 :名無しさん@ぜろちゃんねる:2006/07/10(月) 23:50:12 ID:???0
>>671
ありがとう!!
助かりました!!
ただ今後、
できれば透明あぼーんありでも対応してもらえると助かります。

673 :名無しさん@ぜろちゃんねる:2006/07/12(水) 03:44:41 ID:???0
datとlogに記録された時間を照合して、合わなかったら透明あぼーんがあったとみなして、
その分のログを除外する、とすると、

(1)
my @log,$log; Load_log($Sys,\@log); $log = @log; if($log){Check_dat($Sys,$Dat,\@log,\$log)};
require('./module/galadriel.pl');


sub Check_dat{
my ($Sys,$Dat,$log,$lognum) = @_;
my $pRes = $Dat->Get($Dat->Size() - 1);
my $over = 'Over';
if ((split(/<>/, $$pRes))[2] =~ m/Over/i ){
push(@$log, $over); $$lognum++;
}
my ($Setting,$abone);
require('./module/isildur.pl');
$Setting = new ISILDUR;
$Setting->Load($Sys);
$abone = $Setting->Get('BBS_DELETE_NAME');
use Time::Local;
my $logline, @res, $wtime;
$f = $$lognum;
while($f){
$pRes = $Dat->Get($Dat->Size() - $$lognum + $f - 1);
@res = split(/<>/,$$pRes);
$logline = $$log[$f - 1];
if($res[2] ne $abone && $logline ne $over){
$res[2] =~ /(\d{4})\/(\d{2})\/(\d{2}).*? (\d{2}):(\d{2}):(\d{2})/;
$wtime = timelocal($6,$5,$4,$3,$2 - 1,$1 - 1900);
if(abs($wtime - (split(/<>/, $logline))[0]) > 0){splice(@$log, $f - 1, 1); $$lognum--;}
}
$f--;
}
}

一見、上手く行ったように見えるかもしれないけど、たぶん不具合出るよ。
datとlogに書き込まれるのは同時じゃないからね。
一切、責任は持ちません。

674 :名無しさん@ぜろちゃんねる:2006/07/12(水) 03:53:19 ID:???0
ついで。
透明あぼーんをしてスレッドのレス数が減った場合、
同時にsubject.txtを更新する。

sub FunctionResDelete


push(@$pLog,$abone);

return 0;



push(@$pLog,$abone);
if (!$mode){
require('./module/baggins.pl');
$Threads = new BILBO;
$Threads->Load($Sys);
$Threads->Update($Sys);
$Threads->Save($Sys);
push(@$pLog,"スレッド情報(subject.txt)を更新しました。");
}
return 0;

243KB
READ.CGI - 0ch+ BBS 0.7.5 20220323
ぜろちゃんねるプラス