initial commit
This commit is contained in:
commit
c518e3ae4c
4 changed files with 156 additions and 0 deletions
31
extension.json
Normal file
31
extension.json
Normal file
|
@ -0,0 +1,31 @@
|
|||
{
|
||||
"name": "MyRelatedArticle",
|
||||
"version": "0.0.0",
|
||||
"author": [
|
||||
"Tan, Kian-ting"
|
||||
],
|
||||
"url": "",
|
||||
"descriptionmsg": "my-related-article-desc",
|
||||
"license-name": "MIT",
|
||||
"type": "other",
|
||||
"AutoloadClasses": {
|
||||
"MyRelatedArticle": "includes/MyRelatedArticle.php"
|
||||
},
|
||||
|
||||
"SpecialPages": {
|
||||
"MyRelatedArticle": "MyRelatedArticle"
|
||||
},
|
||||
"MessagesDirs": {
|
||||
"MyRelatedArticle": [
|
||||
"i18n"
|
||||
]
|
||||
},
|
||||
"manifest_version": 2,
|
||||
"requires": {
|
||||
"MediaWiki": ">= 1.36.0",
|
||||
"platform": {
|
||||
"php": ">= 5.6"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
5
i18n/en.json
Normal file
5
i18n/en.json
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"my-related-article": "My Related Article",
|
||||
"my-related-article-desc": "show related articles",
|
||||
"my-related-article-summary": "show related articles in the category or the parent cateygory of it."
|
||||
}
|
6
i18n/qqq.json
Normal file
6
i18n/qqq.json
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"my-related-article": "My Related Article,
|
||||
"my-related-article-desc": "show related articles",
|
||||
"my-related-article-summary": "show related articles in the
|
||||
category or the parent cateygory of it."}
|
||||
|
114
includes/MyRelatedArticle.php
Normal file
114
includes/MyRelatedArticle.php
Normal file
|
@ -0,0 +1,114 @@
|
|||
<?php
|
||||
|
||||
use MediaWiki\MediaWikiServices;
|
||||
|
||||
|
||||
|
||||
|
||||
class MyRelatedArticle extends SpecialPage {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
function __construct() {
|
||||
parent::__construct( 'MyRelatedArticle' );
|
||||
$this->mIncludable = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
function execute( $par ) {
|
||||
global $wgOut;
|
||||
|
||||
|
||||
$homepage = file_get_contents('https://kianting.info/wiki/api.php?action=query&format=json&prop=categories&titles='.$par);
|
||||
$jsonResult = json_decode($homepage, true);
|
||||
|
||||
$categoryArray = array();
|
||||
|
||||
foreach ($jsonResult["query"]["pages"] as $k1 => $v1){
|
||||
foreach($v1["categories"] as $k2 => $v2){
|
||||
array_push($categoryArray, $v2["title"]);
|
||||
}
|
||||
}
|
||||
|
||||
$articleArray = array();
|
||||
|
||||
foreach ($categoryArray as $i => $category){
|
||||
$query = file_get_contents('https://kianting.info/wiki/api.php?action=query&cmtype=page&list=categorymembers&cmtitle='.$category.'&format=json');
|
||||
$jsonResult = json_decode($query, true);
|
||||
foreach ($jsonResult["query"]["categorymembers"] as $i => $article){
|
||||
array_push($articleArray, $article["title"]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(count($articleArray)<5){
|
||||
$parentCategoryArray = array();
|
||||
|
||||
|
||||
foreach ($categoryArray as $i => $category){
|
||||
$query = file_get_contents('https://kianting.info/wiki/api.php?action=query&format=json&prop=categories&titles='.$category);
|
||||
$jsonResult = json_decode($query, true);
|
||||
|
||||
foreach ($jsonResult["query"]["pages"] as $k1 => $v1){
|
||||
foreach($v1["categories"] as $k2 => $v2){
|
||||
array_push($parentCategoryArray, $v2["title"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($parentCategoryArray as $i => $category){
|
||||
$query = file_get_contents('https://kianting.info/wiki/api.php?action=query&cmtype=page&list=categorymembers&cmtitle='.$category.'&format=json');
|
||||
$jsonResult = json_decode($query, true);
|
||||
foreach ($jsonResult["query"]["categorymembers"] as $i => $article){
|
||||
array_push($articleArray, $article["title"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
$articleArray = array_diff($articleArray, array($par));
|
||||
|
||||
|
||||
$selectedArray = array();
|
||||
|
||||
|
||||
|
||||
|
||||
if (count($articleArray) > 5){
|
||||
|
||||
foreach( array_rand($articleArray, 5) as $key ) {
|
||||
array_push($selectedArray, $articleArray[$key]);
|
||||
}
|
||||
}else{
|
||||
$selectedArray = $articleArray;
|
||||
}
|
||||
|
||||
# addWikiMsg
|
||||
|
||||
$outputContent = "== 關聯條目 ==\n";
|
||||
|
||||
foreach ($selectedArray as $i => $article){
|
||||
$outputContent = $outputContent. "* [[" . $article . "]]\n";
|
||||
}
|
||||
|
||||
|
||||
$wgOut->addWikiTextAsInterface($outputContent);
|
||||
# echo( $json_result["query"]["pages"][644]);
|
||||
#$wgOut->addHTML($outputContent);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in a new issue