Benutzer:Martinnitus/Bearbeitungsstatistik/Generator: Unterschied zwischen den Versionen

Aus Stupidedia, der sinnfreien Enzyklopädie!
Wechseln zu: Navigation, Suche
K (Änderte die Versiegelung von „Benutzer:Martinnitus/Bearbeitungsstatistik/Generator“ ([Bearbeiten=Nur bestätigte Benutzer] (unbeschränkt) [Verschieben=Nur bestätigte Benutzer] (unbeschränkt)))
K (Änderte die Versiegelung von „Benutzer:Martinnitus/Bearbeitungsstatistik/Generator“ ([Bearbeiten=Nur Diktatoren] (unbeschränkt) [Verschieben=Nur Diktatoren] (unbeschränkt)))
 
(15 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
<html>
 
<html>
<span id="keindiktator">Nur <a href="/stupi/Spezial:Administratoren" title="Spezial:Administratoren">Diktatoren</a> können die Bearbeitungsstatistik aktualisieren.</span>
+
<div id="status">Bitte warten...</div>
<input style="display: none;" type=button value="Bearbeitungsstatistik aktualisieren" id="uebertrag" />
+
<hr />
<div id="dummy" style="display: none;"></div>
+
<div id="table"></div>
<span id="wait">Bitte warten... <img src="/images/d/de/Ajax-loader.gif"></span>
 
 
<script type="text/javascript">
 
<script type="text/javascript">
 
//<nowiki>
 
//<nowiki>
$( '#dummy' ).html('{| class="wikitable sortable"\n|-\n!| Benutzername\n!| Benutzergruppen\n!| Beiträge insgesamt (ohne Gelöschte)\n!| Beiträge insgesamt\n!| Beiträge in den letzten 48 Stunden\n!| Beiträge in den letzten 7 Tagen\n!| Beiträge in den letzten 28 Tagen\n!| Erster Beitrag\n!| Letzter Beitrag\n!| Ø-Edits pro Tag\n');
+
var stat = {
var kasten = '<div style="font-weight: bold; text-align: center; padding: 10px; -webkit-border-radius: 5px; -moz-border-radius-: 5px; border-radius: 5px; background: #FFE4B5; background: -moz-linear-gradient(top, #FFE4B5 0%, #DBA23F 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#FFE4B5), color-stop(100%,#DBA23F)); background: -webkit-linear-gradient(top, #FFE4B5 0%,#DBA23F 100%); background: -o-linear-gradient(top, #FFE4B5 0%,#DBA23F 100%); background: -ms-linear-gradient(top, #FFE4B5 0%,#DBA23F 100%); background: linear-gradient(to bottom, #FFE4B5 0%,#DBA23F 100%);">';
 
var fertig = false;
 
var damals = '';
 
var differenz = '';
 
var differenztage = '';
 
var averageedit = '';
 
var users = [];
 
var group = '';
 
var username = '';
 
var editcounter = '';
 
var deletedcon = '';
 
var contrtwo = '';
 
var contrseven = '';
 
var contrthirty = '';
 
var firstcon = '';
 
var lastcon = '';
 
var firstcon2 = '';
 
var lastcon2 = '';
 
var ir = 0;
 
  
function schaltjahr(){
+
  kasten: '<div style="font-weight: bold; text-align: center; padding: 10px; -webkit-border-radius: 5px; -moz-border-radius-: 5px; border-radius: 5px; background: #FFE4B5; background: -moz-linear-gradient(top, #FFE4B5 0%, #DBA23F 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#FFE4B5), color-stop(100%,#DBA23F)); background: -webkit-linear-gradient(top, #FFE4B5 0%,#DBA23F 100%); background: -o-linear-gradient(top, #FFE4B5 0%,#DBA23F 100%); background: -ms-linear-gradient(top, #FFE4B5 0%,#DBA23F 100%); background: linear-gradient(to bottom, #FFE4B5 0%,#DBA23F 100%);">',
  if((new Date().getFullYear() % 4 === 0 && new Date().getFullYear() % 100 !== 0) || new Date().getFullYear() % 400 === 0){
+
 
  return true;
+
  text: '<table style="font-size: 0.8em; width: 100%;" class="wikitable sortable">\n<tr><th>Benutzername</th><th>Ränge</th><th>Beiträge insgesamt</th><th>Beiträge insgesamt (inkl. Gelöschte)</th><th>Beiträge in den letzten 48 Stunden</th><th>Beiträge in den letzten 7 Tagen</th><th>Beiträge in den letzten 28 Tagen</th><th>Beiträge in den letzten 365 Tagen</th><th>Artikel-Edits</th><th>Diskussions-Edits</th><th>Erster Beitrag</th><th>Letzter Beitrag</th><th>Aktive Tage</th><th>Ø-Edits pro aktivem Tag</th></tr>',
  }else{
 
  return false;
 
  }
 
}
 
  
function td(zahl){
+
  init: function(){
  if(zahl<10) return "0" + zahl;
+
      $( '#status' ).html( 'Ermittle alle User mit 1000 oder mehr Beiträgen...' );
  else return zahl;
+
      api.request( stat.req, stat.getusers, [] );
}
+
  },
 +
 
 +
  date: function( zahl ){
 +
    var t = new Date();
 +
    t.setTime( t.getTime() - zahl * 24 * 3600 * 1000 );
 +
    return $.toJSON( t ).replace( /"/g , '' ).replace( /\.[0-9]*/g, '' );
 +
  },
  
function datum(zahl){
+
  groupnames: function( groups ){
  var d = new Date().getDate(); var m = new Date().getMonth() + 1;
+
    var gnames = [];
  var monatslaenge = new Array("","31","28","31","30","31","30","31","31","30","31","30","31");
+
    $.each( groups, function(){
  if(d - zahl < 1){
+
        $.inArray( global.groups.names[ this ], ['Alle','Benutzer','Automatisch bestätigte Benutzer'] ) === -1 ? gnames.push( '[{{SERVER}}' + mw.util.getUrl( 'Spezial:Benutzer' , { group: this } ) + ' <span title="Spezial:Benutzer/' + this + '">' + global.groups.names[ this ] + '</span>]' ) : '';
  if(m === 1){ var tag = monatslaenge[12]; var monat = 12;}
+
    });
  else{ var tag = monatslaenge[m-1]; if(tag === monatslaenge[2] && schaltjahr()){tag = 29;} var monat = m - 1;}
+
    return gnames.length ? gnames.join(', ') : 'Arbeiter';
  tag = tag*1 - zahl*1 + d*1;
+
  },
  return new Date().getFullYear() + td( monat ) + td(tag) + td(new Date().getHours()) + td(new Date().getMinutes()) + td(new Date().getSeconds());
 
  }
 
  return new Date().getFullYear() +  td( m ) + td( (d-zahl) ) + td(new Date().getHours()) + td(new Date().getMinutes()) + td(new Date().getSeconds());
 
}
 
  
var inter = setInterval(function(){
+
  req: {
  aufruf(ir);
+
      action: 'query',
  ir++;
+
      list: 'allusers',
},10);
+
      auprop: 'editcount',
 +
      aulimit: 'max'
 +
  },
  
$('#uebertrag').click(function (){
+
  getusers: function( data, oldusers ){
$( '#dummy' ).append( '|}' );
+
    var users = $.merge( oldusers, api.makeArray( data ) );
  api.request({
+
    if( data['query-continue'] ){
        action: 'edit',
+
         stat.req.aufrom = users[ users.length - 1 ].name;
         title: 'Benutzer:Martinnitus/Bearbeitungsstatistik',
+
         api.request( stat.req, stat.getusers, users );
         text: kasten + 'Stand: {{subst:#time:d.m.Y}}</div>\n' + $( '#dummy' ).html(),
+
    }else{
        token: global.editToken,
+
         var usernames = [];
         summary: '[[Benutzer:Martinnitus/Bearbeitungsstatistik/Generator|Bearbeitungsstatistik aktualisiert!]]',
+
        $.each( users, function( i, user ){
      }, function(data) {
+
          if( user.editcount >= 1000 )
        if( data.error !== undefined ){
+
              usernames.push( user.name );
          alert('Fehler. Die Tabelle konnte nicht aktualisiert werden.');
+
         });
         } else {
+
        stat.getprops( usernames );
            window.open('/stupi/Benutzer:Martinnitus/Bearbeitungsstatistik','_self');
+
    }
        }
+
  },
  });
 
});
 
  
function aufruf(zahl){
+
  getprops: function( unames ){
    execute( function() {
+
      stat.usercount = unames.length;
        api.request({
+
      $.each( unames, function( i, user ){
                    action: 'query',
+
        api.request({
                    list: 'allusers',
 
                    augroup: 'hda|f|sysop',
 
                    aulimit: 'max'
 
                  },
 
            function( userdata ) {
 
                var allusers = api.makeArray( userdata );
 
                users[zahl] = allusers[zahl].name;
 
            api.request({
 
 
                 action: 'query',
 
                 action: 'query',
 
                 list: 'users',
 
                 list: 'users',
                 ususers: users[zahl],
+
                 ususers: user,
 
                 usprop: 'groups|editcount'
 
                 usprop: 'groups|editcount'
            },
+
        }, stat.groupsncount );
            function( data1 ) {
+
      });
            api.request({
+
  },
 +
 
 +
  groupsncount: function( data ){
 +
      var userdata = {
 +
        groups: stat.groupnames( api.makeArray( data )[0].groups ),
 +
        editcount: api.makeArray( data )[0].editcount,
 +
        name: api.makeArray( data )[0].name
 +
      };
 +
      userdata.reqobj = {
 +
                action: 'query',
 +
                list: 'usercontribs',
 +
                ucuser: userdata.name,
 +
                uclimit: 'max',
 +
                ucend: stat.date(2)
 +
      };
 +
      api.request( userdata.reqobj, stat.daycons, userdata );
 +
  },
 +
 
 +
  daycons: function( data, userdata ){
 +
      userdata.lastdays = userdata.lastdays ? userdata.lastdays + api.makeArray( data ).length : api.makeArray( data ).length;
 +
      if( data['query-continue'] ){
 +
        userdata.reqobj.ucstart = data['query-continue'].usercontribs.ucstart;
 +
        api.request( userdata.reqobj, stat.daycons, userdata );
 +
        return;
 +
      }
 +
      userdata.reqobj = {
 +
                action: 'query',
 +
                list: 'usercontribs',
 +
                ucuser: userdata.name,
 +
                uclimit: 'max',
 +
                ucend: stat.date(7)
 +
      }
 +
      api.request( userdata.reqobj, stat.weekcons, userdata );
 +
  },
 +
 
 +
  weekcons: function( data, userdata ){
 +
      userdata.lastweek = userdata.lastweek ? userdata.lastweek + api.makeArray( data ).length : api.makeArray( data ).length;
 +
      if( data['query-continue'] ){
 +
        userdata.reqobj.ucstart = data['query-continue'].usercontribs.ucstart;
 +
        api.request( userdata.reqobj, stat.weekcons, userdata );
 +
        return;
 +
      }
 +
      userdata.reqobj = {
 
                 action: 'query',
 
                 action: 'query',
                 list: 'deletedrevs',
+
                 list: 'usercontribs',
                 druser: users[zahl],
+
                 ucuser: userdata.name,
                 drlimit: 'max'
+
                 uclimit: 'max',
            },
+
                ucend: stat.date(28)
            function( data2 ) {
+
      };
            api.request({
+
      api.request( userdata.reqobj, stat.monthcons, userdata );
 +
  },
 +
 
 +
  monthcons: function( data, userdata ){
 +
      userdata.lastmonth = userdata.lastmonth ? userdata.lastmonth + api.makeArray( data ).length : api.makeArray( data ).length;
 +
      if( data['query-continue'] ){
 +
        userdata.reqobj.ucstart = data['query-continue'].usercontribs.ucstart;
 +
        api.request( userdata.reqobj, stat.monthcons, userdata );
 +
        return;
 +
      }
 +
      userdata.reqobj = {
 
                 action: 'query',
 
                 action: 'query',
 
                 list: 'usercontribs',
 
                 list: 'usercontribs',
                 ucuser: users[zahl],
+
                 ucuser: userdata.name,
 
                 uclimit: 'max',
 
                 uclimit: 'max',
                 ucend: datum(2)
+
                 ucend: stat.date(365)
            },
+
      };
            function( data3 ) {
+
      api.request( userdata.reqobj, stat.yearcons, userdata );
            api.request({
+
  },
 +
 
 +
  yearcons: function( data, userdata ){
 +
      userdata.lastyear = userdata.lastyear ? userdata.lastyear + api.makeArray( data ).length : api.makeArray( data ).length;
 +
      if( data['query-continue'] ){
 +
        userdata.reqobj.ucstart = data['query-continue'].usercontribs.ucstart;
 +
        api.request( userdata.reqobj, stat.yearcons, userdata );
 +
        return;
 +
      }
 +
      userdata.reqobj = {
 
                 action: 'query',
 
                 action: 'query',
 
                 list: 'usercontribs',
 
                 list: 'usercontribs',
                 ucuser: users[zahl],
+
                 ucuser: userdata.name,
 
                 uclimit: 'max',
 
                 uclimit: 'max',
                 ucend: datum(7)
+
                 ucnamespace: '0|102|104|106'
            },
+
      };
            function( data4 ) {
+
      api.request( userdata.reqobj, stat.articlecons, userdata );
            api.request({
+
  },
 +
 
 +
  articlecons: function( data, userdata ){
 +
      userdata.articles = userdata.articles ? userdata.articles + api.makeArray( data ).length : api.makeArray( data ).length;
 +
      if( data['query-continue'] ){
 +
        userdata.reqobj.ucstart = data['query-continue'].usercontribs.ucstart;
 +
        api.request( userdata.reqobj, stat.articlecons, userdata );
 +
        return;
 +
      }
 +
      userdata.reqobj = {
 
                 action: 'query',
 
                 action: 'query',
 
                 list: 'usercontribs',
 
                 list: 'usercontribs',
                 ucuser: users[zahl],
+
                 ucuser: userdata.name,
 
                 uclimit: 'max',
 
                 uclimit: 'max',
                 ucend: datum(28)
+
                 ucnamespace: '1|3|5|7|9|11|13|15|101|103|105|107|109|275'
            },
+
      };
            function( data5 ) {
+
      api.request( userdata.reqobj, stat.discons, userdata );
            api.request({
+
  },
 +
 
 +
  discons: function( data, userdata ){
 +
      userdata.dis = userdata.dis ? userdata.dis + api.makeArray( data ).length : api.makeArray( data ).length;
 +
      if( data['query-continue'] ){
 +
        userdata.reqobj.ucstart = data['query-continue'].usercontribs.ucstart;
 +
        api.request( userdata.reqobj, stat.discons, userdata );
 +
        return;
 +
      }
 +
      userdata.reqobj = {
 
                 action: 'query',
 
                 action: 'query',
 
                 list: 'usercontribs',
 
                 list: 'usercontribs',
                 ucuser: users[zahl],
+
                 ucuser: userdata.name,
 +
                uclimit: 'max',
 +
                ucnamespace: '0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|100|101|102|103|104|105|106|107|108|109|274|275'
 +
      };
 +
      userdata.dayarr = [];
 +
      userdata.days = 0;
 +
      api.request( userdata.reqobj, stat.alledits, userdata );
 +
  },
 +
 
 +
  alledits: function( data, userdata ){
 +
      userdata.all = userdata.all ? userdata.all + api.makeArray( data ).length : api.makeArray( data ).length;
 +
      $.each( api.makeArray( data ), function( i, c ){
 +
        if( $.inArray( c.timestamp.split('T')[0], userdata.dayarr ) === -1 ){
 +
            userdata.days++;
 +
            userdata.dayarr.push( c.timestamp.split('T')[0] );
 +
        }
 +
      });
 +
      if( data['query-continue'] ){
 +
        userdata.reqobj.ucstart = data['query-continue'].usercontribs.ucstart;
 +
        api.request( userdata.reqobj, stat.alledits, userdata );
 +
        return;
 +
      }
 +
      userdata.reqobj = {
 +
                action: 'query',
 +
                list: 'usercontribs',
 +
                ucuser: userdata.name,
 
                 uclimit: '1',
 
                 uclimit: '1',
                 ucdir: 'newer'
+
                 ucdir: 'newer',
            },
+
                ucprop: 'ids|timestamp'
            function( data6 ) {
+
      };
            api.request({
+
      api.request( userdata.reqobj, stat.firstedit, userdata );
 +
  },
 +
 
 +
  firstedit: function( data, userdata ){
 +
      userdata.firstcon = api.makeArray( data )[0].timestamp.split('T')[0].split('-').reverse().join('.');
 +
      userdata.firstconrevision = api.makeArray( data )[0].revid;
 +
      userdata.reqobj = {
 
                 action: 'query',
 
                 action: 'query',
 
                 list: 'usercontribs',
 
                 list: 'usercontribs',
                 ucuser: users[zahl],
+
                 ucuser: userdata.name,
                 uclimit: '1',   //<tr><th>Benutzername</th><th>Beiträge insgesamt</th><th>Beiträge insgesamt inkl. Gelöschte</th><th>Beiträge in den letzten 48 Stunden</th>
+
                 uclimit: '1',
                 ucdir: 'older' //<th>Beiträge in den letzten 7 Tagen</th><th>Beiträge in den letzten 28 Tagen</th><th>Erster Beitrag</th><th>Letzter Beitrag</th>
+
                 ucdir: 'older',
            },
+
                ucprop: 'ids|timestamp'
            function( data7 ) {
+
      };
                userinfo = api.makeArray( data1 );
+
      api.request( userdata.reqobj, stat.lastedit, userdata );
                page = userinfo[0];
+
  },
                username = page.name;
+
 
                group = '<b>' + page.groups.join('</b>, <b>') + '</b>';
+
  lastedit: function( data, userdata ){
                editcounter = page.editcount;
+
      userdata.averageedit = ( Math.round( 100 * userdata.all / userdata.days )/100 ).toFixed(2);
                deletedcon = api.makeArray( data2 ).length;
+
      userdata.lastcon = api.makeArray( data )[0].timestamp.split('T')[0].split('-').reverse().join('.');
                contrtwo = api.makeArray( data3 ).length;
+
      userdata.lastconrevision = api.makeArray( data )[0].revid;
                contrseven = api.makeArray( data4 ).length;
+
      stat.text += '\n<tr><td>[[Benutzer:' + userdata.name + '|' + userdata.name + ']]</td><td>' + userdata.groups + '</td><td>' + userdata.all + '</td><td>' + userdata.editcount + '</td><td>' + userdata.lastdays + '</td><td>' + userdata.lastweek + '</td><td>' + userdata.lastmonth + '</td><td>' + userdata.lastyear + '</td><td>' + userdata.articles + '</td><td>' + userdata.dis + '</td><td>[{{SERVER}}/stupi?diff=' + userdata.firstconrevision + ' ' + userdata.firstcon + ']</td><td>[{{SERVER}}/stupi?diff=' + userdata.lastconrevision + ' ' + userdata.lastcon + ']</td><td>' + userdata.days + '</td><td>' + userdata.averageedit + '</td></tr>';
                contrthirty = api.makeArray( data5 ).length;
+
      api.request({
                firstcon = api.makeArray( data6 )[0].timestamp;
+
          action: 'parse',
                firstcon2 = firstcon.split('T')[0].split('-')[2] + "." + firstcon.split('T')[0].split('-')[1] + "." + firstcon.split('T')[0].split('-')[0];
+
          text: stat.text + '\n</table>',
                lastcon = api.makeArray( data7 )[0].timestamp.split('T')[0];
+
          disablepp: true,
                lastcon2 = lastcon.split('-')[2] + "." + lastcon.split('-')[1] + "." + lastcon.split('-')[0];
+
          pst: true
                damals = new Date(firstcon.split('T')[0].split('-')[0], firstcon.split('T')[0].split('-')[1], firstcon.split('T')[0].split('-')[2], firstcon.split('T')[1].split(':')[0], firstcon.split('T')[1].split(':')[1], firstcon.split('T')[1].split(':')[2].split('Z')[0]);
+
      },function( data ){
                differenz = new Date() - damals;
+
          $( '#table' ).html( data.parse.text['*'] );
                differenztage = differenz/(1000*60*60*24);
+
          $( '#status' ).html( 'User ' + $( '#table table tr' ).length + ' von ' + stat.usercount + ' wird abgefragt...' );
                averageedit = Math.round(100*editcounter/differenztage)/100;
+
          if( $( '#table table tr' ).length === stat.usercount )
                $( '#dummy' ).append( '|-\n|| ' + username + '\n|| ' + group + '\n|| ' + (editcounter*1 - deletedcon*1) + '\n|| ' + editcounter + '\n|| ' + contrtwo + '\n|| ' + contrseven + '\n|| ' + contrthirty + '\n|| ' + firstcon2 + '\n|| ' + lastcon2 + '\n|| ' + averageedit + '\n' );
+
            $( '#status' ).html( $( '<input />' ).attr({
                if(zahl + 1 === allusers.length){
+
                            type: 'button',
                  $( '#wait,#keindiktator' ).hide();
+
                            value: 'Bearbeitungsstatistik aktualisieren',
                  clearInterval(inter);
+
                            onclick: 'stat.edit();'
                  $( '#uebertrag' ).show();
+
            }) );
                }
+
      });
            } );
+
  },
            } );
+
 
            } );
+
  edit: function(){
            } );
+
      api.request({
            } );
+
          action: 'edit',
            } );
+
          title: 'Benutzer:Martinnitus/Bearbeitungsstatistik',
            } );
+
          bot: true,
        } );
+
          summary: '[[Benutzer:Martinnitus/Bearbeitungsstatistik/Generator|Bearbeitungsstatistik aktualisiert]]',
    } );
+
          text: stat.kasten + '\nStand: {{subst:#time: d.m.Y, H:i}}\n</div>\n' + stat.text + '\n</table>',
}
+
          token: global.editToken
 +
      },function( data ){
 +
          if( data.error ){
 +
            alert( 'Fehler.\nCode: ' + data.error.code + ', Info: ' + data.error.info + '.' );
 +
          }else if( data.edit.result === 'Failure' ){
 +
            alert( 'Unbekannter Fehler.' );
 +
          }else{
 +
            window.location.href = mw.util.getUrl( 'Benutzer:Martinnitus/Bearbeitungsstatistik' );
 +
          }
 +
      });
 +
  }
 +
 
 +
};
 +
 
 +
execute( 'stat.init' );
 +
//</nowiki>
 
</script>
 
</script>
 
</html>
 
</html>

Aktuelle Version vom 22. November 2015, 15:35 Uhr

Bitte warten...


Linktipps: Faditiva und 3DPresso