Skip to content

Instantly share code, notes, and snippets.

@stwalkerster
Last active August 29, 2015 14:02
Show Gist options
  • Save stwalkerster/5c1c0c0030e5aea7c009 to your computer and use it in GitHub Desktop.
Save stwalkerster/5c1c0c0030e5aea7c009 to your computer and use it in GitHub Desktop.
Supercount XML changes
a:12:{s:6:"replag";s:8:"0.000000";s:11:"API Version";s:3:"1.5";s:13:"executiontime";a:2:{s:6:"replag";a:2:{s:5:"total";d:0.01;s:7:"queries";a:1:{i:0;a:3:{s:4:"time";d:0.01;s:5:"query";s:129:"SELECT UNIX_TIMESTAMP() - UNIX_TIMESTAMP(rc_timestamp) as replag FROM recentchanges_userindex ORDER BY rc_timestamp DESC LIMIT 1;";s:6:"result";s:9:"succeeded";}}}s:11:"basic_stats";a:2:{s:7:"queries";a:2:{i:0;a:3:{s:4:"time";d:0.02;s:5:"query";s:76:"SELECT COUNT(*) AS count FROM archive_userindex WHERE (`ar_user` ='851859');";s:6:"result";s:9:"succeeded";}i:1;a:3:{s:4:"time";d:0.11;s:5:"query";s:202:"SELECT rev_timestamp, page_title, page_namespace FROM revision_userindex JOIN page ON page_id = rev_page WHERE (`rev_user` = '851859') AND `rev_timestamp` > 1 ORDER BY rev_timestamp ASC LIMIT 0,2695596;";s:6:"result";s:9:"succeeded";}}s:5:"total";d:0.25;}}s:15:"editcountlimits";a:1:{i:0;d:2695596;}s:14:"monthly_counts";a:102:{s:7:"2006/01";a:2:{s:5:"total";i:5;i:0;i:5;}s:7:"2006/02";a:3:{i:0;i:15;s:5:"total";i:16;i:4;i:1;}s:7:"2006/03";a:6:{i:0;i:6;s:5:"total";i:23;i:1;i:1;i:2;i:13;i:3;i:1;i:4;i:2;}s:7:"2006/04";a:4:{i:0;i:3;s:5:"total";i:6;i:2;i:2;i:4;i:1;}s:7:"2006/05";a:2:{s:5:"total";i:1;i:1;i:1;}s:7:"2006/06";a:2:{s:5:"total";i:1;i:0;i:1;}s:7:"2006/07";a:1:{s:5:"total";i:0;}s:7:"2006/08";a:3:{i:0;i:3;s:5:"total";i:5;i:1;i:2;}s:7:"2006/09";a:7:{s:5:"total";i:26;i:0;i:7;i:1;i:10;i:2;i:3;i:3;i:2;i:4;i:3;i:5;i:1;}s:7:"2006/10";a:4:{i:0;i:3;s:5:"total";i:6;i:3;i:1;i:4;i:2;}s:7:"2006/11";a:3:{s:5:"total";i:2;i:1;i:1;i:2;i:1;}s:7:"2006/12";a:2:{s:5:"total";i:2;i:2;i:2;}s:7:"2007/01";a:1:{s:5:"total";i:0;}s:7:"2007/02";a:2:{s:5:"total";i:4;i:0;i:4;}s:7:"2007/03";a:7:{s:5:"total";i:391;i:0;i:201;i:1;i:9;i:2;i:39;i:3;i:131;i:4;i:9;i:15;i:2;}s:7:"2007/04";a:9:{i:0;i:373;s:5:"total";i:571;i:1;i:5;i:2;i:41;i:3;i:142;i:4;i:6;i:10;i:2;i:14;i:1;i:100;i:1;}s:7:"2007/05";a:9:{i:0;i:96;s:5:"total";i:260;i:1;i:1;i:2;i:34;i:3;i:104;i:4;i:20;i:5;i:2;i:10;i:2;i:12;i:1;}s:7:"2007/06";a:12:{s:5:"total";i:368;i:0;i:106;i:1;i:12;i:2;i:51;i:3;i:114;i:4;i:73;i:5;i:1;i:6;i:1;i:9;i:2;i:10;i:6;i:11;i:1;i:100;i:1;}s:7:"2007/07";a:9:{s:5:"total";i:165;i:0;i:57;i:1;i:4;i:2;i:20;i:3;i:57;i:4;i:23;i:5;i:1;i:10;i:2;i:14;i:1;}s:7:"2007/08";a:12:{s:5:"total";i:872;i:0;i:414;i:1;i:4;i:2;i:86;i:3;i:255;i:4;i:92;i:5;i:9;i:6;i:3;i:10;i:4;i:11;i:3;i:14;i:1;i:15;i:1;}s:7:"2007/09";a:7:{s:5:"total";i:236;i:0;i:111;i:1;i:4;i:2;i:8;i:3;i:93;i:4;i:17;i:10;i:3;}s:7:"2007/10";a:8:{i:0;i:113;s:5:"total";i:206;i:1;i:4;i:2;i:7;i:3;i:58;i:4;i:16;i:10;i:6;i:100;i:2;}s:7:"2007/11";a:6:{i:0;i:48;s:5:"total";i:205;i:2;i:4;i:3;i:67;i:4;i:85;i:5;i:1;}s:7:"2007/12";a:7:{i:0;i:3;s:5:"total";i:44;i:1;i:1;i:2;i:5;i:3;i:26;i:4;i:7;i:10;i:2;}s:7:"2008/01";a:8:{s:5:"total";i:369;i:0;i:105;i:1;i:6;i:2;i:42;i:3;i:179;i:4;i:34;i:6;i:1;i:11;i:2;}s:7:"2008/02";a:9:{s:5:"total";i:592;i:0;i:283;i:1;i:6;i:2;i:4;i:3;i:269;i:4;i:24;i:5;i:2;i:10;i:3;i:101;i:1;}s:7:"2008/03";a:10:{s:5:"total";i:1661;i:0;i:715;i:1;i:4;i:2;i:47;i:3;i:789;i:4;i:89;i:5;i:7;i:10;i:6;i:14;i:2;i:100;i:2;}s:7:"2008/04";a:11:{s:5:"total";i:1701;i:0;i:722;i:1;i:8;i:2;i:14;i:3;i:909;i:4;i:32;i:5;i:1;i:6;i:3;i:10;i:3;i:14;i:1;i:100;i:8;}s:7:"2008/05";a:9:{i:0;i:160;s:5:"total";i:515;i:1;i:5;i:2;i:33;i:3;i:285;i:4;i:22;i:5;i:3;i:6;i:1;i:10;i:6;}s:7:"2008/06";a:8:{i:0;i:207;s:5:"total";i:537;i:1;i:2;i:2;i:36;i:3;i:245;i:4;i:43;i:10;i:3;i:11;i:1;}s:7:"2008/07";a:6:{i:0;i:8;s:5:"total";i:40;i:1;i:1;i:2;i:9;i:3;i:20;i:4;i:2;}s:7:"2008/08";a:8:{s:5:"total";i:253;i:0;i:109;i:1;i:8;i:2;i:6;i:3;i:105;i:4;i:22;i:5;i:2;i:10;i:1;}s:7:"2008/09";a:9:{i:0;i:133;s:5:"total";i:365;i:1;i:1;i:2;i:45;i:3;i:159;i:4;i:13;i:5;i:12;i:10;i:1;i:11;i:1;}s:7:"2008/10";a:7:{s:5:"total";i:1059;i:0;i:491;i:1;i:14;i:2;i:27;i:3;i:496;i:4;i:29;i:10;i:2;}s:7:"2008/11";a:10:{s:5:"total";i:218;i:0;i:14;i:1;i:5;i:2;i:99;i:3;i:79;i:4;i:15;i:5;i:2;i:8;i:1;i:9;i:1;i:10;i:2;}s:7:"2008/12";a:11:{s:5:"total";i:234;i:0;i:57;i:2;i:27;i:3;i:107;i:4;i:28;i:5;i:3;i:8;i:1;i:10;i:1;i:11;i:1;i:14;i:8;i:15;i:1;}s:7:"2009/01";a:8:{i:0;i:96;s:5:"total";i:290;i:1;i:4;i:2;i:38;i:3;i:141;i:4;i:7;i:5;i:1;i:10;i:3;}s:7:"2009/02";a:9:{s:5:"total";i:112;i:0;i:5;i:1;i:7;i:2;i:27;i:3;i:59;i:4;i:9;i:5;i:1;i:8;i:2;i:10;i:2;}s:7:"2009/03";a:6:{s:5:"total";i:37;i:1;i:2;i:2;i:18;i:3;i:10;i:4;i:6;i:5;i:1;}s:7:"2009/04";a:6:{i:0;i:8;s:5:"total";i:60;i:2;i:11;i:3;i:35;i:4;i:5;i:5;i:1;}s:7:"2009/05";a:7:{s:5:"total";i:243;i:0;i:91;i:1;i:2;i:2;i:8;i:3;i:127;i:4;i:14;i:10;i:1;}s:7:"2009/06";a:8:{s:5:"total";i:114;i:0;i:51;i:1;i:3;i:2;i:5;i:3;i:48;i:4;i:5;i:11;i:1;i:14;i:1;}s:7:"2009/07";a:6:{s:5:"total";i:89;i:0;i:33;i:2;i:9;i:3;i:39;i:4;i:7;i:6;i:1;}s:7:"2009/08";a:5:{s:5:"total";i:13;i:0;i:2;i:3;i:7;i:4;i:3;i:5;i:1;}s:7:"2009/09";a:5:{i:0;i:4;s:5:"total";i:22;i:2;i:5;i:3;i:11;i:4;i:2;}s:7:"2009/10";a:6:{s:5:"total";i:11;i:0;i:1;i:1;i:1;i:2;i:2;i:3;i:6;i:4;i:1;}s:7:"2009/11";a:5:{i:0;i:14;s:5:"total";i:32;i:2;i:2;i:3;i:11;i:4;i:5;}s:7:"2009/12";a:3:{s:5:"total";i:2;i:2;i:1;i:3;i:1;}s:7:"2010/01";a:2:{s:5:"total";i:2;i:3;i:2;}s:7:"2010/02";a:3:{s:5:"total";i:3;i:3;i:2;i:7;i:1;}s:7:"2010/03";a:5:{s:5:"total";i:96;i:0;i:41;i:2;i:5;i:3;i:43;i:4;i:7;}s:7:"2010/04";a:7:{s:5:"total";i:54;i:0;i:18;i:1;i:1;i:2;i:1;i:3;i:25;i:4;i:8;i:5;i:1;}s:7:"2010/05";a:6:{i:0;i:71;s:5:"total";i:151;i:1;i:2;i:3;i:70;i:4;i:5;i:5;i:3;}s:7:"2010/06";a:7:{i:0;i:39;s:5:"total";i:92;i:2;i:22;i:3;i:9;i:4;i:19;i:5;i:2;i:11;i:1;}s:7:"2010/07";a:7:{i:0;i:3;s:5:"total";i:25;i:1;i:3;i:2;i:1;i:3;i:9;i:4;i:7;i:5;i:2;}s:7:"2010/08";a:7:{i:0;i:13;s:5:"total";i:71;i:2;i:9;i:3;i:25;i:4;i:21;i:5;i:2;i:10;i:1;}s:7:"2010/09";a:5:{s:5:"total";i:5;i:0;i:1;i:1;i:1;i:3;i:2;i:5;i:1;}s:7:"2010/10";a:6:{i:0;i:4;s:5:"total";i:72;i:1;i:2;i:2;i:19;i:3;i:25;i:4;i:22;}s:7:"2010/11";a:7:{s:5:"total";i:39;i:0;i:4;i:1;i:1;i:2;i:19;i:3;i:8;i:4;i:5;i:5;i:2;}s:7:"2010/12";a:4:{i:0;i:5;s:5:"total";i:13;i:2;i:3;i:3;i:5;}s:7:"2011/01";a:9:{i:0;i:12;s:5:"total";i:74;i:1;i:3;i:2;i:9;i:3;i:28;i:4;i:10;i:7;i:2;i:10;i:9;i:11;i:1;}s:7:"2011/02";a:9:{i:0;i:234;s:5:"total";i:515;i:1;i:6;i:2;i:9;i:3;i:241;i:4;i:22;i:6;i:1;i:10;i:1;i:14;i:1;}s:7:"2011/03";a:5:{i:0;i:9;s:5:"total";i:28;i:2;i:3;i:3;i:6;i:4;i:10;}s:7:"2011/04";a:7:{i:0;i:5;s:5:"total";i:23;i:1;i:2;i:2;i:1;i:3;i:9;i:4;i:5;i:10;i:1;}s:7:"2011/05";a:9:{s:5:"total";i:234;i:0;i:78;i:1;i:8;i:2;i:18;i:3;i:92;i:4;i:34;i:5;i:1;i:10;i:2;i:14;i:1;}s:7:"2011/06";a:7:{i:0;i:1;s:5:"total";i:51;i:2;i:36;i:3;i:8;i:4;i:4;i:8;i:1;i:11;i:1;}s:7:"2011/07";a:3:{i:0;i:1;s:5:"total";i:2;i:4;i:1;}s:7:"2011/08";a:1:{s:5:"total";i:0;}s:7:"2011/09";a:2:{s:5:"total";i:2;i:3;i:2;}s:7:"2011/10";a:4:{i:0;i:7;s:5:"total";i:10;i:3;i:2;i:4;i:1;}s:7:"2011/11";a:1:{s:5:"total";i:0;}s:7:"2011/12";a:3:{i:0;i:5;s:5:"total";i:7;i:1;i:2;}s:7:"2012/01";a:2:{s:5:"total";i:1;i:0;i:1;}s:7:"2012/02";a:3:{s:5:"total";i:6;i:3;i:5;i:4;i:1;}s:7:"2012/03";a:3:{s:5:"total";i:3;i:3;i:2;i:4;i:1;}s:7:"2012/04";a:7:{s:5:"total";i:68;i:0;i:12;i:1;i:1;i:2;i:9;i:3;i:32;i:4;i:10;i:5;i:4;}s:7:"2012/05";a:6:{s:5:"total";i:216;i:0;i:48;i:2;i:88;i:3;i:73;i:4;i:3;i:6;i:4;}s:7:"2012/06";a:9:{i:0;i:11;s:5:"total";i:48;i:1;i:2;i:2;i:4;i:3;i:20;i:4;i:6;i:5;i:2;i:6;i:2;i:8;i:1;}s:7:"2012/07";a:6:{i:0;i:14;s:5:"total";i:30;i:1;i:1;i:2;i:5;i:3;i:7;i:4;i:3;}s:7:"2012/08";a:4:{i:0;i:2;s:5:"total";i:5;i:3;i:1;i:4;i:2;}s:7:"2012/09";a:1:{s:5:"total";i:0;}s:7:"2012/10";a:1:{s:5:"total";i:0;}s:7:"2012/11";a:2:{s:5:"total";i:1;i:4;i:1;}s:7:"2012/12";a:1:{s:5:"total";i:0;}s:7:"2013/01";a:5:{i:0;i:1;s:5:"total";i:5;i:3;i:2;i:4;i:1;i:5;i:1;}s:7:"2013/02";a:5:{s:5:"total";i:11;i:0;i:1;i:2;i:2;i:3;i:5;i:4;i:3;}s:7:"2013/03";a:8:{i:0;i:3;s:5:"total";i:37;i:2;i:8;i:3;i:15;i:4;i:3;i:5;i:1;i:8;i:1;i:828;i:6;}s:7:"2013/04";a:6:{i:0;i:4;s:5:"total";i:27;i:2;i:3;i:3;i:7;i:4;i:9;i:5;i:4;}s:7:"2013/05";a:4:{s:5:"total";i:11;i:2;i:5;i:3;i:5;i:5;i:1;}s:7:"2013/06";a:3:{s:5:"total";i:4;i:3;i:1;i:4;i:3;}s:7:"2013/07";a:2:{s:5:"total";i:1;i:3;i:1;}s:7:"2013/08";a:3:{s:5:"total";i:3;i:2;i:1;i:3;i:2;}s:7:"2013/09";a:2:{s:5:"total";i:1;i:0;i:1;}s:7:"2013/10";a:2:{s:5:"total";i:2;i:4;i:2;}s:7:"2013/11";a:4:{s:5:"total";i:7;i:3;i:4;i:4;i:1;i:5;i:2;}s:7:"2013/12";a:4:{s:5:"total";i:7;i:3;i:5;i:4;i:1;i:10;i:1;}s:7:"2014/01";a:6:{i:0;i:1;s:5:"total";i:22;i:1;i:10;i:2;i:1;i:3;i:8;i:4;i:2;}s:7:"2014/02";a:5:{i:0;i:3;s:5:"total";i:22;i:1;i:2;i:2;i:5;i:3;i:12;}s:7:"2014/03";a:3:{s:5:"total";i:4;i:3;i:3;i:4;i:1;}s:7:"2014/04";a:4:{i:0;i:1;s:5:"total";i:12;i:3;i:9;i:4;i:2;}s:7:"2014/05";a:4:{s:5:"total";i:8;i:2;i:1;i:3;i:5;i:4;i:2;}s:7:"2014/06";a:3:{i:0;i:1;s:5:"total";i:6;i:3;i:5;}}s:9:"top_pages";a:18:{i:0;a:10:{s:17:"Stargate_(device)";i:26;s:13:"David_Vignoni";i:10;s:8:"Ima_Hogg";i:9;s:32:"St_Ambrose_Barlow_RC_High_School";i:8;s:5:"Alana";i:7;s:12:"G_A_Vadivelu";i:6;s:7:"Fluendo";i:6;s:21:"Kirkbie_Kendal_School";i:5;s:13:"Kinda_Hibrawi";i:5;s:16:"Hurricane_Bawbag";i:5;}i:1;a:10:{s:45:"2009_United_Nations_Climate_Change_Conference";i:4;s:6:"Kendal";i:4;s:7:"ESPNews";i:3;s:23:"Verona_(disambiguation)";i:3;s:18:"Conceptions_of_God";i:3;s:11:"Shaftesbury";i:2;s:11:"Gabby_Logan";i:2;s:15:"Carly_Corinthos";i:2;s:12:"Nicola_Roxon";i:2;s:3:"LOL";i:2;}i:2;a:10:{s:12:"Stwalkerster";i:153;s:22:"Stwalkerster/Helpmebot";i:153;s:20:"Stwalkerster/Sandbox";i:109;s:20:"Stwalkerster/Nav_Bar";i:53;s:17:"Stwalkerster/Desk";i:50;s:23:"Stwalkerster/huggle.css";i:35;s:19:"Stwalkerster/TopBar";i:30;s:27:"Stwalkerster/Exam_Timetable";i:30;s:11:"Stwalkerbot";i:23;s:22:"Stwalkerster/Userboxes";i:21;}i:3;a:10:{s:12:"Stwalkerster";i:413;s:7:"Vilnisr";i:28;s:20:"Stwalkerster/Sandbox";i:23;s:13:"62.30.249.131";i:11;s:17:"Joseph_A._Spadaro";i:10;s:26:"Stwalkerster/Archive_index";i:9;s:24:"Charineeimagebkk/Sandbox";i:8;s:6:"Rom_s3";i:8;s:4:"MC10";i:8;s:22:"Stwalkerster/Helpmebot";i:7;}i:4;a:10:{s:44:"Administrator_intervention_against_vandalism";i:144;s:9:"Help_desk";i:125;s:24:"Request_an_account/Guide";i:53;s:40:"Requests_for_permissions/Account_creator";i:37;s:16:"Huggle/Whitelist";i:28;s:24:"Village_pump_(technical)";i:23;s:27:"New_contributors'_help_page";i:18;s:37:"Requests_for_adminship/Stwalkerster_2";i:18;s:37:"Administrators'_noticeboard/Incidents";i:16;s:24:"Village_pump_(proposals)";i:14;}i:5;a:10:{s:18:"Request_an_account";i:17;s:33:"Request_an_account/Administrators";i:10;s:24:"Request_an_account/Guide";i:5;s:24:"Requests_for_permissions";i:4;s:15:"Account_creator";i:4;s:37:"Usernames_for_administrator_attention";i:2;s:37:"Template_messages/User_talk_namespace";i:2;s:25:"AutoWikiBrowser/CheckPage";i:2;s:43:"Files_for_upload/Wizard/License-Copyrighted";i:1;s:23:"Flagged_revisions/Trial";i:1;}i:6;a:10:{s:21:"BlackAndWhiteTown.jpg";i:2;s:14:"Blood_Feud.jpg";i:1;s:14:"Bloodforge.jpg";i:1;s:25:"Durdans_Hospital_Logo.jpg";i:1;s:14:"WirralRUFC.jpg";i:1;s:35:"Cultural_venues_in_Metz,_France.jpg";i:1;s:12:"TOS_logo.png";i:1;s:33:"Bradwall_population_1801-2001.jpg";i:1;s:39:"Private_message_flood_2006_freenode.PNG";i:1;s:30:"Best_World_Book_cover_1963.jpg";i:1;}i:7;a:3:{s:26:"Burlington_Rail_Bridge.jpg";i:1;s:22:"Keokuk_Rail_Bridge.jpg";i:1;s:41:"Ejaculation_Educational_Demonstration.OGG";i:1;}i:8;a:6:{s:36:"Titleblacklist-forbidden-new-account";i:2;s:11:"Blockiptext";i:1;s:38:"Abusefilter-warning-spambot-newaccount";i:1;s:16:"Signupend/en-acc";i:1;s:10:"Histlegend";i:1;s:18:"Ipbreason-dropdown";i:1;}i:9;a:3:{s:10:"Histlegend";i:1;s:10:"Revertpage";i:1;s:17:"Nosuchsectiontext";i:1;}i:10;a:10:{s:21:"Vandalism_information";i:10;s:2:"X1";i:4;s:39:"Infobox_FIRST_LEGO_League_Challenge/doc";i:3;s:35:"Infobox_FIRST_LEGO_League_Challenge";i:3;s:13:"Busy_weekdays";i:3;s:27:"WikiProject_Cartoon_Network";i:3;s:23:"Infobox_housing_project";i:3;s:21:"Wikification_progress";i:2;s:15:"Transwiki/dated";i:2;s:20:"Infobox_rail_company";i:2;}i:11;a:10:{s:27:"WikiProject_Christian_Metal";i:2;s:15:"Expand_Japanese";i:1;s:11:"GeoTemplate";i:1;s:19:"Wikipedia_languages";i:1;s:6:"Wikify";i:1;s:5:"Tasks";i:1;s:22:"Infobox_musical_artist";i:1;s:11:"Team_sports";i:1;s:6:"Steels";i:1;s:11:"Policy_list";i:1;}i:12;a:1:{s:21:"Contents/Browse/Links";i:1;}i:14;a:10:{s:39:"Scottish_Conservative_Party_politicians";i:2;s:30:"Conservative_and_Unionist_MSPs";i:1;s:52:"Scottish_Conservative_and_Unionist_Party_politicians";i:1;s:14:"Stasi_officers";i:1;s:14:"Scottish_spies";i:1;s:16:"Edit_window_help";i:1;s:35:"Universities_and_colleges_in_Jaipur";i:1;s:40:"Scottish_Conservative_and_Unionist_Party";i:1;s:27:"Scottish_Conservative_Party";i:1;s:22:"Branches_of_psychology";i:1;}i:15;a:3:{s:38:"Wikipedia_articles_in_need_of_updating";i:2;s:26:"Judges_in_Northern_Ireland";i:1;s:17:"Cossack_uprisings";i:1;}i:100;a:10:{s:4:"Arts";i:3;s:10:"Royal_Navy";i:2;s:7:"Animals";i:1;s:7:"Science";i:1;s:9:"Geography";i:1;s:33:"Technology/Selected_biographies/1";i:1;s:20:"History/WikiProjects";i:1;s:38:"History/Featured_picture/October,_2007";i:1;s:30:"Current_events/2007_October_23";i:1;s:33:"Arts/Featured_picture/March,_2008";i:1;}i:101;a:1:{s:16:"Featured_content";i:1;}i:828;a:1:{s:25:"Sandbox/stwalkerster/cols";i:6;}}s:16:"namespace_totals";a:18:{i:0;i:5533;i:1;i:185;i:2;i:1118;i:3;i:6030;i:4;i:1012;i:5;i:81;i:6;i:17;i:7;i:3;i:8;i:7;i:9;i:3;i:10;i:76;i:11;i:13;i:12;i:1;i:14;i:17;i:15;i:4;i:100;i:14;i:101;i:1;i:828;i:6;}s:9:"firstedit";s:21:"Jan 31, 2006 21:03:59";s:12:"unique_count";i:10096;s:9:"liveedits";i:14121;s:12:"deletededits";s:4:"1790";s:10:"totaledits";i:15911;}
<?php
$data = unserialize(file_get_contents(__DIR__ . "/data.sphp"));
function indent($x, $c){ return str_repeat($x, $c); }
// Convert data to a neat XML format using custom parsing.
// This XML formatter is only compatible with this tool.
function XML_format( $data, $tindent = 4 ) {
$indent = "";
for( $i = 0; $i < $tindent; $i++ ) $indent .= " ";
$tindent = 0;
$XMLstring = indent( $indent, $tindent )."<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
if( isset( $data['API Version'] ) ) $XMLstring .= indent( $indent, $tindent )."<api version=\"{$data['API Version']}\">\n";
else $XMLstring .= indent( $indent, $tindent )."<api>\n";
$tindent++;
if( isset( $data['missinguser'] ) ) $XMLstring .= indent( $indent, $tindent )."<error code=\"missinguser\">{$data['missinguser']}</error>\n";
if( isset( $data['missingproject'] ) ) $XMLstring .= indent( $indent, $tindent )."<error code=\"missingproject\">{$data['missingproject']}</error>\n";
if( isset( $data['noconnection'] ) ) $XMLstring .= indent( $indent, $tindent )."<error code=\"noconnection\">{$data['noconnection']}</error>\n";
if( isset( $data['ratelimit'] ) ) $XMLstring .= indent( $indent, $tindent )."<error code=\"ratelimit\">{$data['ratelimit']}</error>\n";
if( isset( $data['notauser'] ) ) $XMLstring .= indent( $indent, $tindent )."<error code=\"notauser\">{$data['notauser']}</error>\n";
if( isset( $data['excluded_users'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<error code=\"excluded_users\"";
foreach( $data['excluded_users']['users'] as $id=>$user ) {
$XMLstring .= " user$id=\"$user\"";
}
$XMLstring .= ">{$data['excluded_users']['message']}</error>\n";
}
if( isset( $data['messages'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<messages>\n";
$tindent++;
foreach( $data['messages'] as $code=>$messages ) {
foreach( $messages as $message ) {
$XMLstring .= indent( $indent, $tindent )."<$code>$message</$code>\n";
}
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</messages>\n";
}
if( isset( $data['firstedit'] ) || isset( $data['deleted_firstedit'] ) || isset( $data['true_firstedit'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<firstedits>\n";
$tindent++;
if( isset( $data['firstedit'] ) ) $XMLstring .= indent( $indent, $tindent )."<live>".date( 'c', strtotime( $data['firstedit'] ) )."</live>\n";
if( isset( $data['deleted_firstedit'] ) ) $XMLstring .= indent( $indent, $tindent )."<deleted>".date( 'c', strtotime( $data['deleted_firstedit'] ) )."</deleted>\n";
if( isset( $data['true_firstedit'] ) ) $XMLstring .= indent( $indent, $tindent )."<real>".date( 'c', strtotime( $data['true_firstedit'] ) )."</real>\n";
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</firstedits>\n";
}
if( isset( $data['liveedits'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<counts>\n";
$tindent++;
if( isset( $data['liveedits'] ) || isset( $data['unique_count'] ) || isset( $data['namespace_totals'] ) || isset( $data['monthly_counts'] ) )
{
$XMLstring .= indent( $indent, $tindent )."<live";
if( isset( $data['liveedits'] ) ) $XMLstring .= " edits=\"{$data['liveedits']}\"";
if( isset( $data['unique_count'] ) ) $XMLstring .= " UniquePages=\"{$data['unique_count']}\"";
if( !isset( $data['monthly_counts'] ) & !isset( $data['namespace_totals'] ) ) $XMLstring .= " />\n";
else {
$XMLstring .= ">\n";
$tindent++;
if( isset( $data['namespace_totals'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<namespace_totals>\n";
$tindent++;
foreach( $data['namespace_totals'] as $id=>$count ) {
$XMLstring .= indent( $indent, $tindent )."<ns id=\"$id\">$count</ns>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</namespace_totals>\n";
}
if( isset( $data['monthly_counts'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<monthly_counts>\n";
$tindent++;
foreach( $data['monthly_counts'] as $month=>$breakdown ) {
if( isset( $breakdown['total'] ) ) {
$total = $breakdown['total'];
unset( $breakdown['total'] );
} elseif( isset( $total ) ) unset( $total );
$month = explode( '/', $month );
$XMLstring .= indent( $indent, $tindent )."<month year=\"{$month[0]}\" month=\"{$month[1]}\"";
if( isset( $total ) ) $XMLstring .= " total=\"$total\"";
$XMLstring .= ">\n";
$tindent++;
foreach( $breakdown as $id=>$count ) {
$XMLstring .= indent( $indent, $tindent )."<ns id=\"$id\">$count</ns>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</month>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</monthly_counts>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</live>\n";
}
}
if( isset( $data['deletededits'] ) || isset( $data['deleted_unique_count'] ) || isset( $data['deleted_namespace_totals'] ) || isset( $data['deleted_monthly_counts'] ) )
{
$XMLstring .= indent( $indent, $tindent )."<deleted";
if( isset( $data['deletededits'] ) ) $XMLstring .= " edits=\"{$data['deletededits']}\"";
if( isset( $data['deleted_unique_count'] ) ) $XMLstring .= " UniquePages=\"{$data['deleted_unique_count']}\"";
if( !isset( $data['deleted_monthly_counts'] ) & !isset( $data['deleted_namespace_totals'] ) ) $XMLstring .= " />\n";
else {
$XMLstring .= ">\n";
$tindent++;
if( isset( $data['deleted_namespace_totals'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<namespace_totals>\n";
$tindent++;
foreach( $data['deleted_namespace_totals'] as $id=>$count ) {
$XMLstring .= indent( $indent, $tindent )."<ns id=\"$id\">$count</ns>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</namespace_totals>\n";
}
if( isset( $data['deleted_monthly_counts'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<monthly_counts>\n";
$tindent++;
foreach( $data['deleted_monthly_counts'] as $month=>$breakdown ) {
if( isset( $breakdown['total'] ) ) {
$total = $breakdown['total'];
unset( $breakdown['total'] );
} elseif( isset( $total ) ) unset( $total );
$month = explode( '/', $month );
$XMLstring .= indent( $indent, $tindent )."<month year=\"{$month[0]}\" month=\"{$month[1]}\"";
if( isset( $total ) ) $XMLstring .= " total=\"$total\"";
$XMLstring .= ">\n";
$tindent++;
foreach( $breakdown as $id=>$count ) {
$XMLstring .= indent( $indent, $tindent )."<ns id=\"$id\">$count</ns>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</month>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</monthly_counts>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</deleted>\n";
}
}
if( isset( $data['totaledits'] ) || isset( $data['total_unique_count'] ) || isset( $data['total_namespace_totals'] ) || isset( $data['total_monthly_counts'] ) )
{
$XMLstring .= indent( $indent, $tindent )."<total";
if( isset( $data['totaledits'] ) ) $XMLstring .= " edits=\"{$data['totaledits']}\"";
if( isset( $data['total_unique_count'] ) ) $XMLstring .= " UniquePages=\"{$data['total_unique_count']}\"";
if( !isset( $data['total_monthly_counts'] ) & !isset( $data['total_namespace_totals'] ) ) $XMLstring .= " />\n";
else {
$XMLstring .= ">\n";
$tindent++;
if( isset( $data['total_namespace_totals'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<namespace_totals>\n";
$tindent++;
foreach( $data['total_namespace_totals'] as $id=>$count ) {
$XMLstring .= indent( $indent, $tindent )."<ns id=\"$id\">$count</ns>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</namespace_totals>\n";
}
if( isset( $data['total_monthly_counts'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<monthly_counts>\n";
$tindent++;
foreach( $data['total_monthly_counts'] as $month=>$breakdown ) {
if( isset( $breakdown['total'] ) ) {
$total = $breakdown['total'];
unset( $breakdown['total'] );
} elseif( isset( $total ) ) unset( $total );
$month = explode( '/', $month );
$XMLstring .= indent( $indent, $tindent )."<month year=\"{$month[0]}\" month=\"{$month[1]}\"";
if( isset( $total ) ) $XMLstring .= " total=\"$total\"";
$XMLstring .= ">\n";
$tindent++;
foreach( $breakdown as $id=>$count ) {
$XMLstring .= indent( $indent, $tindent )."<ns id=\"$id\">$count</ns>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</month>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</monthly_counts>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</total>\n";
}
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</counts>\n";
}
if( isset( $data['top_pages'] ) || isset( $data['deleted_top_pages'] ) || isset( $data['total_top_pages'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<top_pages>\n";
$tindent++;
if( isset( $data['top_pages'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<live>\n";
$tindent++;
foreach( $data['top_pages'] as $id=>$pages ) {
$XMLstring .= indent( $indent, $tindent )."<ns id=\"$id\">\n";
$tindent++;
foreach( $pages as $pagename=>$edits ) {
$XMLstring .= indent( $indent, $tindent )."<page name=\"$pagename\">$edits</page>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</ns>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</live>\n";
}
if( isset( $data['deleted_top_pages'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<deleted>\n";
$tindent++;
foreach( $data['deleted_top_pages'] as $id=>$pages ) {
$XMLstring .= indent( $indent, $tindent )."<ns id=\"$id\">\n";
$tindent++;
foreach( $pages as $pagename=>$edits ) {
$XMLstring .= indent( $indent, $tindent )."<page name=\"$pagename\">$edits</page>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</ns>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</deleted>\n";
}
if( isset( $data['total_top_pages'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<all>\n";
$tindent++;
foreach( $data['total_top_pages'] as $id=>$pages ) {
$XMLstring .= indent( $indent, $tindent )."<ns id=\"$id\">\n";
$tindent++;
foreach( $pages as $pagename=>$edits ) {
$XMLstring .= indent( $indent, $tindent )."<page name=\"$pagename\">$edits</page>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</ns>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</all>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</top_pages>\n";
}
if( isset( $data['replag'] ) ) $XMLstring .= indent( $indent, $tindent )."<replag>{$data['replag']}</replag>\n";
if( isset( $data['usergroups'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<groups>\n";
$tindent++;
foreach( $data['usergroups'] as $group ) {
$XMLstring .= indent( $indent, $tindent )."<g>$group</g>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</groups>\n";
}
if( isset( $data['namespaces'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<namespaces>\n";
$tindent++;
foreach( $data['namespaces'] as $namespace ) {
$XMLstring .= indent( $indent, $tindent )."<ns id=\"{$namespace['id']}\" case=\"{$namespace['case']}\"";
if( isset( $namespace['subpages'] ) ) $XMLstring .= " subpages=\"{$namespace['subpages']}\"";
if( isset( $namespace['canonical'] ) ) $XMLstring .= " canonical=\"{$namespace['canonical']}\"";
if( isset( $namespace['content'] ) ) $XMLstring .= " content=\"{$namespace['content']}\"";
$XMLstring .= " xml:space=\"preserve\"";
if( empty( $namespace['*'] ) ) $XMLstring .= " />\n";
else $XMLstring .= ">{$namespace['*']}</ns>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</namespaces>\n";
}
if( isset( $data['executiontime'] ) ) {
$XMLstring .= indent( $indent, $tindent )."<execution_time>\n";
$tindent++;
foreach( $data['executiontime'] as $function=>$queries ) {
$XMLstring .= indent( $indent, $tindent )."<$function time=\"{$queries['total']}\"";
if( isset( $queries['queries'] ) && count( $queries['queries'] > 0 ) ) {
$XMLstring .= ">\n";
$tindent++;
foreach( $queries['queries'] as $query ) {
$XMLstring .= indent( $indent, $tindent )."<query time=\"{$query['time']}\" result=\"{$query['result']}\">{$query['query']}</query>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</$function>\n";
} else $XMLstring .=" />\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</execution_time>\n";
}
$tindent--;
$XMLstring .= indent( $indent, $tindent )."</api>";
return $XMLstring;
}
echo XML_format($data);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment