私のウィキで保護されていないすべてのページのリストを取得する方法を探しています。MediaWiki には、すべてのページのリストを表示するための特別なページと、保護されたページのリストを表示するための特別なページがあります。基本的に 2 つのリストを比較して、保護されていないページを出力するスクリプトを作成する方法はありますか?
注: C++、C、Java、Python の経験はありますが、PHP で書いたことは一度もありません...
最も簡単な方法は次のとおりです。(自分で $allPages と $protectedPages のリストを設定します)
$allPages = array('url1', 'url2', 'url3');
$protectedPages = array('url2');
// this array_diff() will give you the an array of the difference in each array
$unprotectedPages = array_diff($allPages, $protectedPages);
print_r($unprotectedPages);
それがあなたのウィキなら、特別なページにこだわる必要はありません。データベースを見て、次のようなことができます。
SELECT page_namespace, page_title
FROM page p JOIN page_restrictions pr ON p.page_id = pr.page_id;