2013-03-29 51 views
0

我實現了一個mediawiki網站,但不幸的是有人通過數千用戶創建了數千頁。我如何刪除除mediawiki之外的所有用戶創建的所有wiki頁面

我可以運行哪個查詢來刪除除這些用戶以外的所有頁面?

Mediawiki頁面位於mediawiki databse的wiki_page和wiki_text中,但沒有關於誰創建這些頁面的字段。

+0

我想你必須看看'revision'表。或者可能是'recentchanges',如果頁面是最近創建的。也有可能爲此目的進行一些擴展。 – svick

+1

見http://webmasters.stackexchange.com/questions/9194/mass-deletion-of-spam-revisions-in-mediawiki/45486 –

+0

哦,我的上帝,這是一個很長的程序,但如果沒有其他選擇,咱們試試吧!謝謝 – Pitone

回答

0

我會這樣做的愚蠢的方式。

  1. 從列出的所有特殊頁面標題:所有頁或使用您特別創建https://code.google.com/p/wikiteam/ dumpgenerator.py
  2. 列出所有的標題:捐款和一些正則表達式過濾或使用的WebAPI
  3. 從1取下2使用例如comm命令
  4. 從PyWikipediaBot或deletebatch.php或具有相同名稱的擴展名中使用delete.py刪除所有標題。

1-3可以用任何其他方式替換,以使您更加適應的列表(包括數據庫查詢和WebAPI),或者取決於創建垃圾郵件的時間/方式的最近更改。如果有一個標題模式,你可以使用Nuke擴展。

+0

我的問題是第一點。我應該做哪個查詢?我檢查數據庫,但我沒有可以運行的文章表:SELECT * FROM table WHERE用戶不是「我」,因爲沒有現場用戶。沒有在wiki_text表中,也沒有在wiki_pages表中。 – Pitone

0

我也在處理這個問題。我發現了一些代碼來阻止用戶的創建和編輯,因此它不應該再次發生,但我並不期望逐個刪除所有的垃圾...

將以下內容複製到您的LocalSettings.php

# Prevent new user registrations by anyone 
$wgGroupPermissions['*']['createaccount'] = false; 
$wgGroupPermissions['sysop']['createaccount'] = false; 

# Disable anonymous editing 
$wgGroupPermissions['*']['edit'] = false; 

# Prevent new user registrations except by sysops 
$wgGroupPermissions['*']['createaccount'] = false; 

$wgGroupPermissions['*']['edit'] = false; 
$wgGroupPermissions['user']['edit'] = false; 
$wgGroupPermissions['sysop']['edit'] = true; 
相關問題