• R/O
  • SSH
  • HTTPS

zerochplus: Commit


Commit MetaInfo

Revisão518 (tree)
Hora2014-04-13 19:49:39
Autoriroiro

Mensagem de Log

codes 0ch_ownercmd

Mudança Sumário

Diff

--- codes/0ch_ownercmd.pl (revision 517)
+++ codes/0ch_ownercmd.pl (revision 518)
@@ -70,23 +70,63 @@
7070 # 書き込み直前の処理
7171 if ($type&16) {
7272
73+ # 属性情報を読み込む
7374 $Threads->LoadAttr($Sys);
7475
7576 # ユーザー識別IDを取得 (表示されるIDとは別)
7677 my $clientid = $Sys->Get('KOYUU');
7778
79+ # スレ主かどうか
80+ my $isowner = 0;
81+
7882 # スレ立て時の処理
7983 if ($Sys->Equal('MODE', 1)) {
84+
85+ $isowner = 1;
86+
87+ # メール欄を取得
88+ my $mail = $Form->Get('mail');
89+ # メール欄からパスワードを取得
90+ if ($mail =~ s/!owner:([^:]+)://g) {
91+ # メール欄を再設定
92+ $Form->Set('mail', $mail);
93+ # パスワードを記録
94+ $Threads->SetAttr($threadid, 'ownerpass', $1);
95+ }
96+
8097 # スレ主の識別IDを記録
8198 $Threads->SetAttr($threadid, 'owner', $clientid);
8299 $Threads->SaveAttr($Sys);
100+
101+ # レス時の処理
102+ } else {
103+
104+ # スレ主の識別IDを取得
105+ my $owner = $Threads->GetAttr($threadid, 'owner');
106+ # 記録されたパスワードを取得
107+ my $pass = $Threads->GetAttr($threadid, 'ownerpass');
108+ # メール欄を取得
109+ my $mail = $Form->Get('mail');
110+
111+ # ユーザーがスレ主と同じ識別IDなら
112+ if ($clientid eq $owner) {
113+ $isowner = 1;
114+
115+ # そうでなければパスワードによる判定
116+ } elsif ($mail =~ s/!owner:([^:]+)://g) {
117+ # メール欄を再設定
118+ $Form->Set('mail', $mail);
119+ # パスワードを照合
120+ if ($pass ne '' && $pass eq $1) {
121+ $isowner = 1;
122+ }
123+ }
83124 }
84125
85- # スレ主の識別IDを取得
86- my $owner = $Threads->GetAttr($threadid, 'owner');
126+ $this->SetConf('isowner', $isowner);
87127
88- # ユーザーがスレ主と同じならコマンド処理
89- if ($clientid eq $owner) {
128+ # スレ主ならコマンド処理
129+ if ($isowner) {
90130
91131 # メール欄を取得
92132 my $mail = $Form->Get('mail');
@@ -96,21 +136,22 @@
96136 # 書き込み直後の処理
97137 } elsif ($type&32) {
98138
139+ # スレッド情報を再読み込み
99140 $Threads->Load($Sys);
100- $Threads->LoadAttr($Sys);
141+ #$Threads->LoadAttr($Sys);
101142
102- # ユーザー識別IDを取得
103- my $clientid = $Sys->Get('KOYUU');
143+ # スレッド情報を変更したかどうか
144+ my $modified = 0;
104145
105- # スレ主の識別IDを取得
106- my $owner = $Threads->GetAttr($threadid, 'owner');
146+ # スレ主かどうか
147+ my $isowner = $this->GetConf('isowner', $isowner);
107148
108- # メール欄を取得
109- my $mail = $Form->Get('mail');
110-
111- # ユーザーがスレ主と同じならコマンド処理
112- if ($clientid eq $owner) {
149+ # スレ主ならコマンド処理
150+ if ($isowner) {
113151
152+ # メール欄を取得
153+ my $mail = $Form->Get('mail');
154+
114155 # メール欄に「!pool」でdat落ち処理
115156 if ($mail =~ /!pool/ && $this->GetConf('enable_pool')) {
116157 #$Threads->Save($Sys);
@@ -119,6 +160,7 @@
119160 $Pools->Add($threadid, $Threads->Get('SUBJECT', $threadid), $Threads->Get('RES', $threadid));
120161 $Pools->Save($Sys);
121162 $Threads->Delete($threadid);
163+ $modified = 1;
122164
123165 require './module/earendil.pl';
124166 my $path = $Sys->Get('BBSPATH') . '/' . $Sys->Get('BBS');
@@ -136,7 +178,12 @@
136178 }
137179 }
138180
139- $Threads->Save($Sys);
181+ # スレッド情報を再保存
182+ if ($modified) {
183+ $Threads->Save($Sys);
184+ } else {
185+ $Threads->Close();
186+ }
140187
141188 }
142189
Show on old repository browser