如何在每个页面的顶部添加特定行(Mediawiki)

时间:2017-04-12 12:33:40

标签: php mediawiki

我想将VoteNY扩展添加到我的wiki中,因此所有用户都可以相互评价。此扩展需要行

<vote type="1"></vote>

在每个应该可投票的页面上。 现在我尝试最初以编程方式在每页(~10000页)之上写这些行。我已经找到一个钩子来创建新文章时添加该行。但是每一页都应该有这一行。

这是我到目前为止所做的:

<?php
$TitleList = [];    
# get the edit ticket
$jsn = file_get_contents('http://wiki/api.php?action=query&meta=tokens&format=json');
$json_a = json_decode($jsn, true);
$token = $json_a['query']['tokens']['csrftoken'];

# populate the list of all pages
$urlGET = 'http://wiki/api.php?action=query&list=allpages&format=json';
$json = file_get_contents($urlGET);
$json_b = json_decode( $json ,true);
foreach  ($json_b['query']['allpages'] as $page)
{
    array_push($TitleList, $page['title']);
}

# //add the line on top of every page
foreach ($TitleList as $title)
{
    $data = array(
        'action'      => 'edit',
        'title'       => $title,
        'prependtext' => '<vote type="1"></vote>',
        'token'       => $token);
    # Create a connection
    $url = 'http://wiki/api.php?';
    $ch = curl_init($url);
    # Form data string, automatically urlencode
    $postString = http_build_query($data, '', '&');
    # Setting our options
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    # Get the response
    $response = curl_exec($ch);
    curl_close($ch);            
    echo($response);    
}

到目前为止这是可行的。但是我认识到&list=allpages没有给我所有的页面(40%缺少)我的wiki。

1 个答案:

答案 0 :(得分:-1)

感谢评论中的提示和提示。我设法让脚本运行正常。我编辑了我的问题。