OSDN Git Service

履歴を残す設定の場合に管理者がバックアップファイルを削除できるようにした。
authortakezoe <takezoe@users.osdn.me>
Thu, 15 Sep 2011 03:11:29 +0000 (03:11 +0000)
committertakezoe <takezoe@users.osdn.me>
Thu, 15 Sep 2011 03:11:29 +0000 (03:11 +0000)
lib/Wiki/DefaultStorage.pm
plugin/core/Diff.pm

index ba3c09a..6149497 100644 (file)
@@ -429,6 +429,22 @@ sub backup_type {
 
 #==============================================================================
 # <p>
+# ¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë¤òºï½ü¤·¤Þ¤¹¡£
+# </p>
+#==============================================================================
+sub delete_backup_files {
+       my $self = shift;
+       my $wiki = shift;
+       my $page = shift;
+       
+       my @files = glob($wiki->config('backup_dir')."/".Util::url_encode($page).".*.bak");
+       foreach my $file (@files){
+               unlink($file);
+       }
+}
+
+#==============================================================================
+# <p>
 # À¤Âå¥Ð¥Ã¥¯¥¢¥Ã¥×¤ò¹Ô¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë¥Ð¥Ã¥¯¥¢¥Ã¥×»þ¹ï¤Î°ìÍ÷¤ò¼èÆÀ¤·¤Þ¤¹¡£
 # £±À¤Âå¤Î¤ß¥Ð¥Ã¥¯¥¢¥Ã¥×¤ÎÀßÄê¤ÇÆ°ºî¤·¤Æ¤¤¤ë¾ì¹ç¤Ïundef¤òÊÖ¤·¤Þ¤¹¡£
 # </p>
index bb49de3..d7eb5d2 100644 (file)
@@ -36,21 +36,41 @@ sub do_action {
                return $self->rollback($wiki, $pagename, $cgi->param('rollback'));
                
        } elsif($wiki->{storage}->backup_type eq 'all'){
-               if($cgi->param('generation') eq '' && $cgi->param('diff') eq ''){
+               my $login = $wiki->get_login_info();
+               if(defined($login) && $login->{'type'} == 0 && $cgi->param('clear') ne ''){
+                       # ÍúÎò¤Î¥¯¥ê¥¢
+                       $self->clear_history($wiki, $pagename);
+                       return $self->show_history($wiki, $pagename);
+                       
+               } elsif($cgi->param('generation') eq '' && $cgi->param('diff') eq ''){
+                       # ÍúÎò¤òɽ¼¨
                        return $self->show_history($wiki, $pagename);
                        
                } else {
                        if($cgi->param('generation') ne ''){
+                               # »ØÄꤷ¤¿¥ê¥Ó¥¸¥ç¥ó¤Ç¤Îº¹Ê¬¤òɽ¼¨
                                return $self->show_diff($wiki, $pagename, '', $cgi->param('generation'));
                        }
+                       # »ØÄꤷ¤¿¥ê¥Ó¥¸¥ç¥ó´Ö¤Îº¹Ê¬¤òɽ¼¨
                        return $self->show_diff($wiki, $pagename, $cgi->param('from'), $cgi->param('to'));
                }
        } else {
+               # ºÇ¸å¤Î¹¹¿·¤Îº¹Ê¬¤òɽ¼¨
                return $self->show_diff($wiki, $pagename, '', 0);
        }
 }
 
 #==============================================================================
+# ÍúÎò¤Î¥¯¥ê¥¢
+#==============================================================================
+sub clear_history {
+       my $self = shift;
+       my $wiki = shift;
+       my $page = shift;
+       $wiki->{storage}->delete_backup_files($wiki, $page);
+}
+
+#==============================================================================
 # ÍúÎò¤«¤é¥Ú¡¼¥¸¤òÉü¸µ
 #==============================================================================
 sub rollback {
@@ -121,10 +141,17 @@ sub show_history {
                $buf .=  "</li>\n";
                $count++;
        }
-       return $buf."</ul>".
-       "<input type=\"hidden\" name=\"page\" value=\"".Util::escapeHTML($page)."\">".
-       "<input type=\"hidden\" name=\"action\" value=\"DIFF\">".
-       "<input type=\"submit\" name=\"diff\" value=\"ÁªÂò¤·¤¿¥ê¥Ó¥¸¥ç¥ó´Ö¤Îº¹Ê¬¤òɽ¼¨\"></form>\n";
+       
+       $buf .= "</ul>".
+               "<input type=\"hidden\" name=\"page\" value=\"".Util::escapeHTML($page)."\">".
+               "<input type=\"hidden\" name=\"action\" value=\"DIFF\">".
+               "<input type=\"submit\" name=\"diff\" value=\"ÁªÂò¤·¤¿¥ê¥Ó¥¸¥ç¥ó´Ö¤Îº¹Ê¬¤òɽ¼¨\">\n";
+       
+       my $login = $wiki->get_login_info();
+       if(defined($login) && $login->{'type'} == 0){
+               $buf .= "<input type=\"submit\" name=\"clear\" value=\"ÍúÎò¤òºï½ü\">\n";
+       }
+       return $buf."</form>\n";
 }
 
 #==============================================================================