http://s23.org/wikistats/rank.php[edit]
- This script returns the ranking of a Wikimedia Foundation project when sorted by size.*
<HighlightSyntax> <?php
- Wikistats by mutante - 2010-01-23 - S23 Wiki - http://s23.org
- for Danny_B
- <Danny_B> position of such wiktionary in all wiktionaries <space> number of all wiktionaries <space> position of such wiktionary in all wmf wikis <space> number of all wmf wikis
- the second wish was for the following behavior:
- position.php?family=wiktionaries&position=42 RETURN: cs
- position.php?family=wmfwikis&position=1 RETURN: enwiki
require_once("config.php"); mysql_connect("$dbhost", "$dbname", "$dbpass") or die(mysql_error()); mysql_select_db("$dbdatabase") or die(mysql_error()); $count=1; $arcount=0; $lang_check="FALSE"; $languages=array();
if (isset($_GET['lang'])) { $lang=$_GET['lang']; $lang=mysql_real_escape_string($lang); }
$query = "select prefix,lang from wikipedias where prefix is not null order by prefix asc"; $result = mysql_query("$query") or die(mysql_error());
while($row = mysql_fetch_array( $result )) {
$languages[$arcount]=$row[prefix]." - ".$row[lang]; $arcount++; if ($row[prefix]==$lang) { $lang_check="OK"; }
}
if (isset($_GET['lang']) AND $lang_check=="OK"){ $lang=$lang; } elseif (isset($_GET['lang']) AND $lang_check!="OK") { echo "This language does not exist (as a wikipedia)."; exit(1); } else {
echo "<html><body>
This script returns the ranking of a Wikimedia foundation project when sorted by size.
(feature requested by Danny_B\n\nimplemented by mutante (2010/01))
usage:
?family=[project family]\n\n?lang=[language]
<form action=rank.php method='get'>project family can be one of: \nw, wikt, n, b, q, s, v\n\n(<a href=\"http://meta.wikimedia.org/wiki/Help:Interwiki_linking#Project_titles_and_shortcuts\">interwiki shortcuts</a>) ";
echo "<select name=\"family\">
<option value=\"w\">w - wikipedia</option>
<option value=\"wikt\">wikt - wiktionary</option>
<option value=\"n\">n - wikinews</option>
<option value=\"b\">b - wikibooks</option>
<option value=\"q\">q - wikiquote</option>
<option value=\"s\">s - wikisource</option>
<option value=\"v\">v - wikiversity</option>
</select>";
echo "
language should be a language prefix that exists as a wikipedia subdomain: <select name=\"lang\">";
foreach ($languages as $language) {
$langprefix=explode(" - ",$language);
$langprefix=$langprefix[0];
echo "<option value=\"$langprefix\">$language</option>\n";
}
echo "</select>
<input type='submit' value='submit' /></form>
output:
<lang.project> <rank within project> <number of wikis in project> <global rank> <global number of wikis>
en.wikipedia 1 272 1 761
examples:
<a href=\"rank.php?family=w&lang=es\">?family=w&lang=en</a> (Spanish Wikipedia)
<a href=\"rank.php?family=wikt&lang=en\">?family=wikt&lang=de</a> (English Wiktionary)
<a href=\"rank.php?family=v&lang=ru\">?family=v&lang=ru</a> (Russian Wikiversity)
Complete tables can be found in <a href=\"http://s23.org/wikistats/\">wikistats</a>
<a href=\"http://s23.org/wiki/Wikistats/rank\">source</a> of this page";
exit(0); }
if (isset($_GET['family'])) {
switch ($_GET['family']){ case "w": $table="wikipedias"; $family="wikipedia"; break; case "wikt": $table="wiktionaries"; $family="wiktionary"; break; case "n": $table="wikinews"; $family="wikinews"; break; case "b": $table="wikibooks"; $family="wikibooks"; break; case "q": $table="wikiquotes"; $family="wikiquote"; break; case "s": $table="wikisources"; $family="wikisource"; break; case "v": $table="wikiversity"; $family="wikiversity"; break; case "special": $table="wmspecials"; $family="wmf"; break; default:
echo "
project family does not exist.\n\nplease use one of: w, wikt, n, b, q, s, v.\n\nlike the shortcuts from http://meta.wikimedia.org/wiki/Help:Interwiki_linking"; exit(1); } } else { $table="wiktionaries"; $family="wiktionary"; } # echo "table $table family $family \n"; $query = "select id,prefix from $table where prefix is not null order by good desc,total desc"; $result = mysql_query("$query") or die(mysql_error()); $num_rows = mysql_num_rows($result); while($row = mysql_fetch_array( $result )) { if ($row[prefix]==$lang) { $rank_project=$count; $number_project=$num_rows; } $count++; } $count=1; $query = <<<FNORD (select prefix,good,lang,loclang,total,edits,admins,users,images,ts,'wikipedias' as type from wikipedias where prefix is not null) union all (select prefix,good,lang,loclang,total,edits,admins,users,images,ts,'wikisources' as type from wikisources) union all (select prefix,good,lang,loclang,total,edits,admins,users,images,ts,'wiktionaries' as type from wiktionaries) union all (select prefix,good,lang,loclang,total,edits,admins,users,images,ts,'wikiquotes' as type from wikiquotes) union all (select prefix,good,lang,loclang,total,edits,admins,users,images,ts,'wikibooks' as type from wikibooks) union all (select prefix,good,lang,loclang,total,edits,admins,users,images,ts,'wikinews' as type from wikinews) union all (select url,good,lang,loclang,total,edits,admins,users,images,ts,'wmspecials' as type from wmspecials) union all (select prefix,good,lang,loclang,total,edits,admins,users,images,ts,'wikiversity' as type from wikiversity) order by good desc,total desc; FNORD; $result = mysql_query("$query") or die(mysql_error()); $num_rows = mysql_num_rows($result); while($row = mysql_fetch_array( $result )) { if ($row[prefix]==$lang AND $row[type]==$table) { $rank_global=$count; $number_global=$num_rows; $type=$row[type]; } $count++; } echo "$lang.$family $rank_project $number_project $rank_global $number_global\n"; if ($rank_project==""){ echo "\n! this language version does not seem to exist yet in this project"; } mysql_close(); ?> </HighlightSyntax> == query that calculates the rank within mysql == mysql> SELECT v1.prefix, v1.good, COUNT(v2.good) AS Rank FROM wiktionaries v1 JOIN wiktionaries v2 ON v1.good < v2.good OR (v1.good=v2.good and v1.prefix = v2.prefix) GROUP BY v1.prefix, v1.good ORDER BY v1.good DESC, v1.prefix DESC; <pre> +------------+---------+------+ | prefix | good | Rank | +------------+---------+------+ | fr | 1570222 | 1 | | en | 1562659 | 2 | | lt | 407265 | 3 | | tr | 266041 | 4 | | zh | 252700 | 5 | | ru | 233132 | 6 | | vi | 228403 | 7 | | io | 164196 | 8 | | pl | 145690 | 9 | | el | 143529 | 10 | | fi | 138091 | 11 | | hu | 134541 | 12 | | no | 123168 | 13 | | ta | 104478 | 14 | | it | 102817 | 15 | | de | 101149 | 16 | | pt | 99506 | 17 | | sv | 96828 | 18 | | ko | 88217 | 19 | | nl | 65993 | 20 | | lo | 60653 | 21 | | ja | 49056 | 22 | | ku | 48111 | 23 | | ar | 47408 | 24 | | kn | 42800 | 25 | | es | 42335 | 26 | | ro | 37434 | 27 | | et | 35740 | 28 | | id | 34875 | 29 | | te | 34716 | 30 | | gl | 28682 | 31 | | bg | 26345 | 32 | | uk | 24701 | 33 | | ca | 24075 | 34 | | vo | 22045 | 35 | | ml | 21371 | 36 | | is | 16587 | 37 | | fa | 16462 | 38 | | li | 16281 | 39 | | sr | 15240 | 40 | | af | 14546 | 41 | | cs | 13610 | 42 | | sw | 12997 | 43 | | fy | 12738 | 44 | | th | 12682 | 45 | | scn | 12669 | 46 | | simple | 12561 | 47 | | br | 12074 | 48 | | oc | 11635 | 49 | | he | 9818 | 50 | | sl | 7110 | 51 | | hy | 6995 | 52 | | sq | 6714 | 53 | | tt | 6643 | 54 | | la | 6402 | 55 | | hr | 6292 | 56 | | zh-min-nan | 5922 | 57 | | da | 5516 | 58 | | tk | 4231 | 59 | | ast | 4230 | 60 | | wa | 4053 | 61 | | ur | 3839 | 62 | | hsb | 3666 | 63 | | kk | 3514 | 64 | | ky | 3261 | 65 | | wo | 2689 | 66 | | eo | 2251 | 67 | | ang | 2194 | 68 | | hi | 1840 | 69 | | ga | 1707 | 70 | | gn | 1698 | 71 | | az | 1680 | 72 | | ia | 1672 | 73 | | co | 1619 | 74 | | sk | 1430 | 75 | | csb | 1393 | 76 | | st | 1387 | 77 | | ms | 1360 | 78 | | mr | 1304 | 79 | | ka | 1294 | 80 | | tl | 1260 | 81 | | ne | 1219 | 82 | | nds | 1033 | 83 | | kl | 1023 | 84 | | sd | 840 | 85 | | ug | 824 | 86 | | ti | 751 | 87 | | eu | 694 | 88 | | mk | 666 | 89 | | cy | 638 | 90 | | ps | 582 | 91 | | an | 576 | 92 | | sh | 531 | 93 | | my | 530 | 94 | | lv | 512 | 95 | | bn | 510 | 96 | | gu | 480 | 97 | | mg | 429 | 98 | | km | 428 | 99 | | ts | 358 | 100 | | qu | 350 | 101 | | bs | 329 | 102 | | fo | 323 | 103 | | am | 316 | 104 | | rw | 306 | 105 | | chr | 247 | 106 | | su | 236 | 107 | | om | 203 | 108 | | mn | 202 | 109 | | nah | 194 | 110 | | ie | 183 | 111 | | yi | 178 | 112 | | be | 171 | 113 | | iu | 167 | 114 | | gd | 141 | 115 | | tg | 135 | 116 | | nn | 133 | 117 | | si | 132 | 118 | | zu | 128 | 119 | | pa | 122 | 120 | | dv | 120 | 121 | | mt | 119 | 122 | | kw | 114 | 123 | | tpi | 110 | 124 | | gv | 108 | 125 | | roa-rup | 101 | 126 | | mi | 92 | 127 | | sg | 91 | 128 | | jv | 90 | 129 | | uz | 86 | 130 | | ik | 82 | 131 | | so | 71 | 132 | | ha | 59 | 133 | | ss | 46 | 134 | | sa | 43 | 135 | | na | 41 | 136 | | ay | 41 | 136 | | jbo | 31 | 138 | | tn | 22 | 139 | | sm | 21 | 140 | | as | 21 | 140 | | lb | 17 | 142 | | ks | 16 | 143 | | fj | 14 | 144 | | ln | 12 | 145 | | mo | 11 | 146 | | za | 8 | 147 | | pi | 6 | 148 | | xh | 5 | 149 | | mh | 5 | 149 | | ba | 5 | 149 | | sn | 4 | 152 | | or | 4 | 152 | | bh | 4 | 152 | | ak | 4 | 152 | | yo | 3 | 156 | | rn | 3 | 156 | | bm | 3 | 156 | | bi | 3 | 156 | | av | 3 | 156 | | to | 2 | 161 | | ab | 2 | 161 | | aa | 2 | 161 | | tw | 1 | 164 | | dz | 1 | 164 | | tokipona | 0 | 166 | | sc | 0 | 166 | | rm | 0 | 166 | | cr | 0 | 166 | | ch | 0 | 166 | | bo | 0 | 166 | | als | 0 | 166 | +------------+---------+------+ 172 rows in set (0.03 sec)
From http://www.artfulsoftware.com/infotree/queries.php?&bw=1024#460