diff --git a/README.md b/README.md new file mode 100644 index 0000000..ae7686f --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# TSN-Ranksystem + +![license: GPL v3](https://img.shields.io/badge/license-GPL%20v3-brightgreen.svg) ![forks](https://img.shields.io/github/forks/Newcomer1989/TSN-Ranksystem.svg) ![stars](https://img.shields.io/github/stars/Newcomer1989/TSN-Ranksystem.svg) [![GitHub issues](https://img.shields.io/github/issues/Newcomer1989/TSN-Ranksystem.svg)](https://github.com/Newcomer1989/TSN-Ranksystem/issues) + +The TSN Ranksystem is an easy to handle Level System to automatically grant ranks (servergroups) to users on a TeamSpeaks3 Server for online time or online activity. You can create your own servergroups, with permissions, icons etc. of your choice, and define these for the Ranksystem. Its open source and so its free to use under the GNU license with version 3. + +#### Official website: [TS-N.NET](http://ts-n.net/ranksystem.php) diff --git a/bootstrap/flag_icon/css/flag-icon.min.css b/bootstrap/flag_icon/css/flag-icon.min.css new file mode 100644 index 0000000..b7502d2 --- /dev/null +++ b/bootstrap/flag_icon/css/flag-icon.min.css @@ -0,0 +1 @@ +.flag-icon,.flag-icon-background{background-repeat:no-repeat;background-size:contain;background-position:50%}.flag-icon{position:relative;display:inline-block;width:1.33333333em;line-height:1em}.flag-icon:before{content:"\00a0"}.flag-icon.flag-icon-squared{width:1em}.flag-icon-ad{background-image:url(../flags/4x3/ad.svg)}.flag-icon-ad.flag-icon-squared{background-image:url(../flags/1x1/ad.svg)}.flag-icon-ae{background-image:url(../flags/4x3/ae.svg)}.flag-icon-ae.flag-icon-squared{background-image:url(../flags/1x1/ae.svg)}.flag-icon-af{background-image:url(../flags/4x3/af.svg)}.flag-icon-af.flag-icon-squared{background-image:url(../flags/1x1/af.svg)}.flag-icon-ag{background-image:url(../flags/4x3/ag.svg)}.flag-icon-ag.flag-icon-squared{background-image:url(../flags/1x1/ag.svg)}.flag-icon-ai{background-image:url(../flags/4x3/ai.svg)}.flag-icon-ai.flag-icon-squared{background-image:url(../flags/1x1/ai.svg)}.flag-icon-al{background-image:url(../flags/4x3/al.svg)}.flag-icon-al.flag-icon-squared{background-image:url(../flags/1x1/al.svg)}.flag-icon-am{background-image:url(../flags/4x3/am.svg)}.flag-icon-am.flag-icon-squared{background-image:url(../flags/1x1/am.svg)}.flag-icon-ao{background-image:url(../flags/4x3/ao.svg)}.flag-icon-ao.flag-icon-squared{background-image:url(../flags/1x1/ao.svg)}.flag-icon-aq{background-image:url(../flags/4x3/aq.svg)}.flag-icon-aq.flag-icon-squared{background-image:url(../flags/1x1/aq.svg)}.flag-icon-ar{background-image:url(../flags/4x3/ar.svg)}.flag-icon-ar.flag-icon-squared{background-image:url(../flags/1x1/ar.svg)}.flag-icon-as{background-image:url(../flags/4x3/as.svg)}.flag-icon-as.flag-icon-squared{background-image:url(../flags/1x1/as.svg)}.flag-icon-at{background-image:url(../flags/4x3/at.svg)}.flag-icon-at.flag-icon-squared{background-image:url(../flags/1x1/at.svg)}.flag-icon-au{background-image:url(../flags/4x3/au.svg)}.flag-icon-au.flag-icon-squared{background-image:url(../flags/1x1/au.svg)}.flag-icon-aw{background-image:url(../flags/4x3/aw.svg)}.flag-icon-aw.flag-icon-squared{background-image:url(../flags/1x1/aw.svg)}.flag-icon-ax{background-image:url(../flags/4x3/ax.svg)}.flag-icon-ax.flag-icon-squared{background-image:url(../flags/1x1/ax.svg)}.flag-icon-az{background-image:url(../flags/4x3/az.svg)}.flag-icon-az.flag-icon-squared{background-image:url(../flags/1x1/az.svg)}.flag-icon-ba{background-image:url(../flags/4x3/ba.svg)}.flag-icon-ba.flag-icon-squared{background-image:url(../flags/1x1/ba.svg)}.flag-icon-bb{background-image:url(../flags/4x3/bb.svg)}.flag-icon-bb.flag-icon-squared{background-image:url(../flags/1x1/bb.svg)}.flag-icon-bd{background-image:url(../flags/4x3/bd.svg)}.flag-icon-bd.flag-icon-squared{background-image:url(../flags/1x1/bd.svg)}.flag-icon-be{background-image:url(../flags/4x3/be.svg)}.flag-icon-be.flag-icon-squared{background-image:url(../flags/1x1/be.svg)}.flag-icon-bf{background-image:url(../flags/4x3/bf.svg)}.flag-icon-bf.flag-icon-squared{background-image:url(../flags/1x1/bf.svg)}.flag-icon-bg{background-image:url(../flags/4x3/bg.svg)}.flag-icon-bg.flag-icon-squared{background-image:url(../flags/1x1/bg.svg)}.flag-icon-bh{background-image:url(../flags/4x3/bh.svg)}.flag-icon-bh.flag-icon-squared{background-image:url(../flags/1x1/bh.svg)}.flag-icon-bi{background-image:url(../flags/4x3/bi.svg)}.flag-icon-bi.flag-icon-squared{background-image:url(../flags/1x1/bi.svg)}.flag-icon-bj{background-image:url(../flags/4x3/bj.svg)}.flag-icon-bj.flag-icon-squared{background-image:url(../flags/1x1/bj.svg)}.flag-icon-bl{background-image:url(../flags/4x3/bl.svg)}.flag-icon-bl.flag-icon-squared{background-image:url(../flags/1x1/bl.svg)}.flag-icon-bm{background-image:url(../flags/4x3/bm.svg)}.flag-icon-bm.flag-icon-squared{background-image:url(../flags/1x1/bm.svg)}.flag-icon-bn{background-image:url(../flags/4x3/bn.svg)}.flag-icon-bn.flag-icon-squared{background-image:url(../flags/1x1/bn.svg)}.flag-icon-bo{background-image:url(../flags/4x3/bo.svg)}.flag-icon-bo.flag-icon-squared{background-image:url(../flags/1x1/bo.svg)}.flag-icon-bq{background-image:url(../flags/4x3/bq.svg)}.flag-icon-bq.flag-icon-squared{background-image:url(../flags/1x1/bq.svg)}.flag-icon-br{background-image:url(../flags/4x3/br.svg)}.flag-icon-br.flag-icon-squared{background-image:url(../flags/1x1/br.svg)}.flag-icon-bs{background-image:url(../flags/4x3/bs.svg)}.flag-icon-bs.flag-icon-squared{background-image:url(../flags/1x1/bs.svg)}.flag-icon-bt{background-image:url(../flags/4x3/bt.svg)}.flag-icon-bt.flag-icon-squared{background-image:url(../flags/1x1/bt.svg)}.flag-icon-bv{background-image:url(../flags/4x3/bv.svg)}.flag-icon-bv.flag-icon-squared{background-image:url(../flags/1x1/bv.svg)}.flag-icon-bw{background-image:url(../flags/4x3/bw.svg)}.flag-icon-bw.flag-icon-squared{background-image:url(../flags/1x1/bw.svg)}.flag-icon-by{background-image:url(../flags/4x3/by.svg)}.flag-icon-by.flag-icon-squared{background-image:url(../flags/1x1/by.svg)}.flag-icon-bz{background-image:url(../flags/4x3/bz.svg)}.flag-icon-bz.flag-icon-squared{background-image:url(../flags/1x1/bz.svg)}.flag-icon-ca{background-image:url(../flags/4x3/ca.svg)}.flag-icon-ca.flag-icon-squared{background-image:url(../flags/1x1/ca.svg)}.flag-icon-cc{background-image:url(../flags/4x3/cc.svg)}.flag-icon-cc.flag-icon-squared{background-image:url(../flags/1x1/cc.svg)}.flag-icon-cd{background-image:url(../flags/4x3/cd.svg)}.flag-icon-cd.flag-icon-squared{background-image:url(../flags/1x1/cd.svg)}.flag-icon-cf{background-image:url(../flags/4x3/cf.svg)}.flag-icon-cf.flag-icon-squared{background-image:url(../flags/1x1/cf.svg)}.flag-icon-cg{background-image:url(../flags/4x3/cg.svg)}.flag-icon-cg.flag-icon-squared{background-image:url(../flags/1x1/cg.svg)}.flag-icon-ch{background-image:url(../flags/4x3/ch.svg)}.flag-icon-ch.flag-icon-squared{background-image:url(../flags/1x1/ch.svg)}.flag-icon-ci{background-image:url(../flags/4x3/ci.svg)}.flag-icon-ci.flag-icon-squared{background-image:url(../flags/1x1/ci.svg)}.flag-icon-ck{background-image:url(../flags/4x3/ck.svg)}.flag-icon-ck.flag-icon-squared{background-image:url(../flags/1x1/ck.svg)}.flag-icon-cl{background-image:url(../flags/4x3/cl.svg)}.flag-icon-cl.flag-icon-squared{background-image:url(../flags/1x1/cl.svg)}.flag-icon-cm{background-image:url(../flags/4x3/cm.svg)}.flag-icon-cm.flag-icon-squared{background-image:url(../flags/1x1/cm.svg)}.flag-icon-cn{background-image:url(../flags/4x3/cn.svg)}.flag-icon-cn.flag-icon-squared{background-image:url(../flags/1x1/cn.svg)}.flag-icon-co{background-image:url(../flags/4x3/co.svg)}.flag-icon-co.flag-icon-squared{background-image:url(../flags/1x1/co.svg)}.flag-icon-cr{background-image:url(../flags/4x3/cr.svg)}.flag-icon-cr.flag-icon-squared{background-image:url(../flags/1x1/cr.svg)}.flag-icon-cu{background-image:url(../flags/4x3/cu.svg)}.flag-icon-cu.flag-icon-squared{background-image:url(../flags/1x1/cu.svg)}.flag-icon-cv{background-image:url(../flags/4x3/cv.svg)}.flag-icon-cv.flag-icon-squared{background-image:url(../flags/1x1/cv.svg)}.flag-icon-cw{background-image:url(../flags/4x3/cw.svg)}.flag-icon-cw.flag-icon-squared{background-image:url(../flags/1x1/cw.svg)}.flag-icon-cx{background-image:url(../flags/4x3/cx.svg)}.flag-icon-cx.flag-icon-squared{background-image:url(../flags/1x1/cx.svg)}.flag-icon-cy{background-image:url(../flags/4x3/cy.svg)}.flag-icon-cy.flag-icon-squared{background-image:url(../flags/1x1/cy.svg)}.flag-icon-cz{background-image:url(../flags/4x3/cz.svg)}.flag-icon-cz.flag-icon-squared{background-image:url(../flags/1x1/cz.svg)}.flag-icon-de{background-image:url(../flags/4x3/de.svg)}.flag-icon-de.flag-icon-squared{background-image:url(../flags/1x1/de.svg)}.flag-icon-dj{background-image:url(../flags/4x3/dj.svg)}.flag-icon-dj.flag-icon-squared{background-image:url(../flags/1x1/dj.svg)}.flag-icon-dk{background-image:url(../flags/4x3/dk.svg)}.flag-icon-dk.flag-icon-squared{background-image:url(../flags/1x1/dk.svg)}.flag-icon-dm{background-image:url(../flags/4x3/dm.svg)}.flag-icon-dm.flag-icon-squared{background-image:url(../flags/1x1/dm.svg)}.flag-icon-do{background-image:url(../flags/4x3/do.svg)}.flag-icon-do.flag-icon-squared{background-image:url(../flags/1x1/do.svg)}.flag-icon-dz{background-image:url(../flags/4x3/dz.svg)}.flag-icon-dz.flag-icon-squared{background-image:url(../flags/1x1/dz.svg)}.flag-icon-ec{background-image:url(../flags/4x3/ec.svg)}.flag-icon-ec.flag-icon-squared{background-image:url(../flags/1x1/ec.svg)}.flag-icon-ee{background-image:url(../flags/4x3/ee.svg)}.flag-icon-ee.flag-icon-squared{background-image:url(../flags/1x1/ee.svg)}.flag-icon-eg{background-image:url(../flags/4x3/eg.svg)}.flag-icon-eg.flag-icon-squared{background-image:url(../flags/1x1/eg.svg)}.flag-icon-eh{background-image:url(../flags/4x3/eh.svg)}.flag-icon-eh.flag-icon-squared{background-image:url(../flags/1x1/eh.svg)}.flag-icon-er{background-image:url(../flags/4x3/er.svg)}.flag-icon-er.flag-icon-squared{background-image:url(../flags/1x1/er.svg)}.flag-icon-es{background-image:url(../flags/4x3/es.svg)}.flag-icon-es.flag-icon-squared{background-image:url(../flags/1x1/es.svg)}.flag-icon-et{background-image:url(../flags/4x3/et.svg)}.flag-icon-et.flag-icon-squared{background-image:url(../flags/1x1/et.svg)}.flag-icon-fi{background-image:url(../flags/4x3/fi.svg)}.flag-icon-fi.flag-icon-squared{background-image:url(../flags/1x1/fi.svg)}.flag-icon-fj{background-image:url(../flags/4x3/fj.svg)}.flag-icon-fj.flag-icon-squared{background-image:url(../flags/1x1/fj.svg)}.flag-icon-fk{background-image:url(../flags/4x3/fk.svg)}.flag-icon-fk.flag-icon-squared{background-image:url(../flags/1x1/fk.svg)}.flag-icon-fm{background-image:url(../flags/4x3/fm.svg)}.flag-icon-fm.flag-icon-squared{background-image:url(../flags/1x1/fm.svg)}.flag-icon-fo{background-image:url(../flags/4x3/fo.svg)}.flag-icon-fo.flag-icon-squared{background-image:url(../flags/1x1/fo.svg)}.flag-icon-fr{background-image:url(../flags/4x3/fr.svg)}.flag-icon-fr.flag-icon-squared{background-image:url(../flags/1x1/fr.svg)}.flag-icon-ga{background-image:url(../flags/4x3/ga.svg)}.flag-icon-ga.flag-icon-squared{background-image:url(../flags/1x1/ga.svg)}.flag-icon-gb{background-image:url(../flags/4x3/gb.svg)}.flag-icon-gb.flag-icon-squared{background-image:url(../flags/1x1/gb.svg)}.flag-icon-gd{background-image:url(../flags/4x3/gd.svg)}.flag-icon-gd.flag-icon-squared{background-image:url(../flags/1x1/gd.svg)}.flag-icon-ge{background-image:url(../flags/4x3/ge.svg)}.flag-icon-ge.flag-icon-squared{background-image:url(../flags/1x1/ge.svg)}.flag-icon-gf{background-image:url(../flags/4x3/gf.svg)}.flag-icon-gf.flag-icon-squared{background-image:url(../flags/1x1/gf.svg)}.flag-icon-gg{background-image:url(../flags/4x3/gg.svg)}.flag-icon-gg.flag-icon-squared{background-image:url(../flags/1x1/gg.svg)}.flag-icon-gh{background-image:url(../flags/4x3/gh.svg)}.flag-icon-gh.flag-icon-squared{background-image:url(../flags/1x1/gh.svg)}.flag-icon-gi{background-image:url(../flags/4x3/gi.svg)}.flag-icon-gi.flag-icon-squared{background-image:url(../flags/1x1/gi.svg)}.flag-icon-gl{background-image:url(../flags/4x3/gl.svg)}.flag-icon-gl.flag-icon-squared{background-image:url(../flags/1x1/gl.svg)}.flag-icon-gm{background-image:url(../flags/4x3/gm.svg)}.flag-icon-gm.flag-icon-squared{background-image:url(../flags/1x1/gm.svg)}.flag-icon-gn{background-image:url(../flags/4x3/gn.svg)}.flag-icon-gn.flag-icon-squared{background-image:url(../flags/1x1/gn.svg)}.flag-icon-gp{background-image:url(../flags/4x3/gp.svg)}.flag-icon-gp.flag-icon-squared{background-image:url(../flags/1x1/gp.svg)}.flag-icon-gq{background-image:url(../flags/4x3/gq.svg)}.flag-icon-gq.flag-icon-squared{background-image:url(../flags/1x1/gq.svg)}.flag-icon-gr{background-image:url(../flags/4x3/gr.svg)}.flag-icon-gr.flag-icon-squared{background-image:url(../flags/1x1/gr.svg)}.flag-icon-gs{background-image:url(../flags/4x3/gs.svg)}.flag-icon-gs.flag-icon-squared{background-image:url(../flags/1x1/gs.svg)}.flag-icon-gt{background-image:url(../flags/4x3/gt.svg)}.flag-icon-gt.flag-icon-squared{background-image:url(../flags/1x1/gt.svg)}.flag-icon-gu{background-image:url(../flags/4x3/gu.svg)}.flag-icon-gu.flag-icon-squared{background-image:url(../flags/1x1/gu.svg)}.flag-icon-gw{background-image:url(../flags/4x3/gw.svg)}.flag-icon-gw.flag-icon-squared{background-image:url(../flags/1x1/gw.svg)}.flag-icon-gy{background-image:url(../flags/4x3/gy.svg)}.flag-icon-gy.flag-icon-squared{background-image:url(../flags/1x1/gy.svg)}.flag-icon-hk{background-image:url(../flags/4x3/hk.svg)}.flag-icon-hk.flag-icon-squared{background-image:url(../flags/1x1/hk.svg)}.flag-icon-hm{background-image:url(../flags/4x3/hm.svg)}.flag-icon-hm.flag-icon-squared{background-image:url(../flags/1x1/hm.svg)}.flag-icon-hn{background-image:url(../flags/4x3/hn.svg)}.flag-icon-hn.flag-icon-squared{background-image:url(../flags/1x1/hn.svg)}.flag-icon-hr{background-image:url(../flags/4x3/hr.svg)}.flag-icon-hr.flag-icon-squared{background-image:url(../flags/1x1/hr.svg)}.flag-icon-ht{background-image:url(../flags/4x3/ht.svg)}.flag-icon-ht.flag-icon-squared{background-image:url(../flags/1x1/ht.svg)}.flag-icon-hu{background-image:url(../flags/4x3/hu.svg)}.flag-icon-hu.flag-icon-squared{background-image:url(../flags/1x1/hu.svg)}.flag-icon-id{background-image:url(../flags/4x3/id.svg)}.flag-icon-id.flag-icon-squared{background-image:url(../flags/1x1/id.svg)}.flag-icon-ie{background-image:url(../flags/4x3/ie.svg)}.flag-icon-ie.flag-icon-squared{background-image:url(../flags/1x1/ie.svg)}.flag-icon-il{background-image:url(../flags/4x3/il.svg)}.flag-icon-il.flag-icon-squared{background-image:url(../flags/1x1/il.svg)}.flag-icon-im{background-image:url(../flags/4x3/im.svg)}.flag-icon-im.flag-icon-squared{background-image:url(../flags/1x1/im.svg)}.flag-icon-in{background-image:url(../flags/4x3/in.svg)}.flag-icon-in.flag-icon-squared{background-image:url(../flags/1x1/in.svg)}.flag-icon-io{background-image:url(../flags/4x3/io.svg)}.flag-icon-io.flag-icon-squared{background-image:url(../flags/1x1/io.svg)}.flag-icon-iq{background-image:url(../flags/4x3/iq.svg)}.flag-icon-iq.flag-icon-squared{background-image:url(../flags/1x1/iq.svg)}.flag-icon-ir{background-image:url(../flags/4x3/ir.svg)}.flag-icon-ir.flag-icon-squared{background-image:url(../flags/1x1/ir.svg)}.flag-icon-is{background-image:url(../flags/4x3/is.svg)}.flag-icon-is.flag-icon-squared{background-image:url(../flags/1x1/is.svg)}.flag-icon-it{background-image:url(../flags/4x3/it.svg)}.flag-icon-it.flag-icon-squared{background-image:url(../flags/1x1/it.svg)}.flag-icon-je{background-image:url(../flags/4x3/je.svg)}.flag-icon-je.flag-icon-squared{background-image:url(../flags/1x1/je.svg)}.flag-icon-jm{background-image:url(../flags/4x3/jm.svg)}.flag-icon-jm.flag-icon-squared{background-image:url(../flags/1x1/jm.svg)}.flag-icon-jo{background-image:url(../flags/4x3/jo.svg)}.flag-icon-jo.flag-icon-squared{background-image:url(../flags/1x1/jo.svg)}.flag-icon-jp{background-image:url(../flags/4x3/jp.svg)}.flag-icon-jp.flag-icon-squared{background-image:url(../flags/1x1/jp.svg)}.flag-icon-ke{background-image:url(../flags/4x3/ke.svg)}.flag-icon-ke.flag-icon-squared{background-image:url(../flags/1x1/ke.svg)}.flag-icon-kg{background-image:url(../flags/4x3/kg.svg)}.flag-icon-kg.flag-icon-squared{background-image:url(../flags/1x1/kg.svg)}.flag-icon-kh{background-image:url(../flags/4x3/kh.svg)}.flag-icon-kh.flag-icon-squared{background-image:url(../flags/1x1/kh.svg)}.flag-icon-ki{background-image:url(../flags/4x3/ki.svg)}.flag-icon-ki.flag-icon-squared{background-image:url(../flags/1x1/ki.svg)}.flag-icon-km{background-image:url(../flags/4x3/km.svg)}.flag-icon-km.flag-icon-squared{background-image:url(../flags/1x1/km.svg)}.flag-icon-kn{background-image:url(../flags/4x3/kn.svg)}.flag-icon-kn.flag-icon-squared{background-image:url(../flags/1x1/kn.svg)}.flag-icon-kp{background-image:url(../flags/4x3/kp.svg)}.flag-icon-kp.flag-icon-squared{background-image:url(../flags/1x1/kp.svg)}.flag-icon-kr{background-image:url(../flags/4x3/kr.svg)}.flag-icon-kr.flag-icon-squared{background-image:url(../flags/1x1/kr.svg)}.flag-icon-kw{background-image:url(../flags/4x3/kw.svg)}.flag-icon-kw.flag-icon-squared{background-image:url(../flags/1x1/kw.svg)}.flag-icon-ky{background-image:url(../flags/4x3/ky.svg)}.flag-icon-ky.flag-icon-squared{background-image:url(../flags/1x1/ky.svg)}.flag-icon-kz{background-image:url(../flags/4x3/kz.svg)}.flag-icon-kz.flag-icon-squared{background-image:url(../flags/1x1/kz.svg)}.flag-icon-la{background-image:url(../flags/4x3/la.svg)}.flag-icon-la.flag-icon-squared{background-image:url(../flags/1x1/la.svg)}.flag-icon-lb{background-image:url(../flags/4x3/lb.svg)}.flag-icon-lb.flag-icon-squared{background-image:url(../flags/1x1/lb.svg)}.flag-icon-lc{background-image:url(../flags/4x3/lc.svg)}.flag-icon-lc.flag-icon-squared{background-image:url(../flags/1x1/lc.svg)}.flag-icon-li{background-image:url(../flags/4x3/li.svg)}.flag-icon-li.flag-icon-squared{background-image:url(../flags/1x1/li.svg)}.flag-icon-lk{background-image:url(../flags/4x3/lk.svg)}.flag-icon-lk.flag-icon-squared{background-image:url(../flags/1x1/lk.svg)}.flag-icon-lr{background-image:url(../flags/4x3/lr.svg)}.flag-icon-lr.flag-icon-squared{background-image:url(../flags/1x1/lr.svg)}.flag-icon-ls{background-image:url(../flags/4x3/ls.svg)}.flag-icon-ls.flag-icon-squared{background-image:url(../flags/1x1/ls.svg)}.flag-icon-lt{background-image:url(../flags/4x3/lt.svg)}.flag-icon-lt.flag-icon-squared{background-image:url(../flags/1x1/lt.svg)}.flag-icon-lu{background-image:url(../flags/4x3/lu.svg)}.flag-icon-lu.flag-icon-squared{background-image:url(../flags/1x1/lu.svg)}.flag-icon-lv{background-image:url(../flags/4x3/lv.svg)}.flag-icon-lv.flag-icon-squared{background-image:url(../flags/1x1/lv.svg)}.flag-icon-ly{background-image:url(../flags/4x3/ly.svg)}.flag-icon-ly.flag-icon-squared{background-image:url(../flags/1x1/ly.svg)}.flag-icon-ma{background-image:url(../flags/4x3/ma.svg)}.flag-icon-ma.flag-icon-squared{background-image:url(../flags/1x1/ma.svg)}.flag-icon-mc{background-image:url(../flags/4x3/mc.svg)}.flag-icon-mc.flag-icon-squared{background-image:url(../flags/1x1/mc.svg)}.flag-icon-md{background-image:url(../flags/4x3/md.svg)}.flag-icon-md.flag-icon-squared{background-image:url(../flags/1x1/md.svg)}.flag-icon-me{background-image:url(../flags/4x3/me.svg)}.flag-icon-me.flag-icon-squared{background-image:url(../flags/1x1/me.svg)}.flag-icon-mf{background-image:url(../flags/4x3/mf.svg)}.flag-icon-mf.flag-icon-squared{background-image:url(../flags/1x1/mf.svg)}.flag-icon-mg{background-image:url(../flags/4x3/mg.svg)}.flag-icon-mg.flag-icon-squared{background-image:url(../flags/1x1/mg.svg)}.flag-icon-mh{background-image:url(../flags/4x3/mh.svg)}.flag-icon-mh.flag-icon-squared{background-image:url(../flags/1x1/mh.svg)}.flag-icon-mk{background-image:url(../flags/4x3/mk.svg)}.flag-icon-mk.flag-icon-squared{background-image:url(../flags/1x1/mk.svg)}.flag-icon-ml{background-image:url(../flags/4x3/ml.svg)}.flag-icon-ml.flag-icon-squared{background-image:url(../flags/1x1/ml.svg)}.flag-icon-mm{background-image:url(../flags/4x3/mm.svg)}.flag-icon-mm.flag-icon-squared{background-image:url(../flags/1x1/mm.svg)}.flag-icon-mn{background-image:url(../flags/4x3/mn.svg)}.flag-icon-mn.flag-icon-squared{background-image:url(../flags/1x1/mn.svg)}.flag-icon-mo{background-image:url(../flags/4x3/mo.svg)}.flag-icon-mo.flag-icon-squared{background-image:url(../flags/1x1/mo.svg)}.flag-icon-mp{background-image:url(../flags/4x3/mp.svg)}.flag-icon-mp.flag-icon-squared{background-image:url(../flags/1x1/mp.svg)}.flag-icon-mq{background-image:url(../flags/4x3/mq.svg)}.flag-icon-mq.flag-icon-squared{background-image:url(../flags/1x1/mq.svg)}.flag-icon-mr{background-image:url(../flags/4x3/mr.svg)}.flag-icon-mr.flag-icon-squared{background-image:url(../flags/1x1/mr.svg)}.flag-icon-ms{background-image:url(../flags/4x3/ms.svg)}.flag-icon-ms.flag-icon-squared{background-image:url(../flags/1x1/ms.svg)}.flag-icon-mt{background-image:url(../flags/4x3/mt.svg)}.flag-icon-mt.flag-icon-squared{background-image:url(../flags/1x1/mt.svg)}.flag-icon-mu{background-image:url(../flags/4x3/mu.svg)}.flag-icon-mu.flag-icon-squared{background-image:url(../flags/1x1/mu.svg)}.flag-icon-mv{background-image:url(../flags/4x3/mv.svg)}.flag-icon-mv.flag-icon-squared{background-image:url(../flags/1x1/mv.svg)}.flag-icon-mw{background-image:url(../flags/4x3/mw.svg)}.flag-icon-mw.flag-icon-squared{background-image:url(../flags/1x1/mw.svg)}.flag-icon-mx{background-image:url(../flags/4x3/mx.svg)}.flag-icon-mx.flag-icon-squared{background-image:url(../flags/1x1/mx.svg)}.flag-icon-my{background-image:url(../flags/4x3/my.svg)}.flag-icon-my.flag-icon-squared{background-image:url(../flags/1x1/my.svg)}.flag-icon-mz{background-image:url(../flags/4x3/mz.svg)}.flag-icon-mz.flag-icon-squared{background-image:url(../flags/1x1/mz.svg)}.flag-icon-na{background-image:url(../flags/4x3/na.svg)}.flag-icon-na.flag-icon-squared{background-image:url(../flags/1x1/na.svg)}.flag-icon-nc{background-image:url(../flags/4x3/nc.svg)}.flag-icon-nc.flag-icon-squared{background-image:url(../flags/1x1/nc.svg)}.flag-icon-ne{background-image:url(../flags/4x3/ne.svg)}.flag-icon-ne.flag-icon-squared{background-image:url(../flags/1x1/ne.svg)}.flag-icon-nf{background-image:url(../flags/4x3/nf.svg)}.flag-icon-nf.flag-icon-squared{background-image:url(../flags/1x1/nf.svg)}.flag-icon-ng{background-image:url(../flags/4x3/ng.svg)}.flag-icon-ng.flag-icon-squared{background-image:url(../flags/1x1/ng.svg)}.flag-icon-ni{background-image:url(../flags/4x3/ni.svg)}.flag-icon-ni.flag-icon-squared{background-image:url(../flags/1x1/ni.svg)}.flag-icon-nl{background-image:url(../flags/4x3/nl.svg)}.flag-icon-nl.flag-icon-squared{background-image:url(../flags/1x1/nl.svg)}.flag-icon-no{background-image:url(../flags/4x3/no.svg)}.flag-icon-no.flag-icon-squared{background-image:url(../flags/1x1/no.svg)}.flag-icon-np{background-image:url(../flags/4x3/np.svg)}.flag-icon-np.flag-icon-squared{background-image:url(../flags/1x1/np.svg)}.flag-icon-nr{background-image:url(../flags/4x3/nr.svg)}.flag-icon-nr.flag-icon-squared{background-image:url(../flags/1x1/nr.svg)}.flag-icon-nu{background-image:url(../flags/4x3/nu.svg)}.flag-icon-nu.flag-icon-squared{background-image:url(../flags/1x1/nu.svg)}.flag-icon-nz{background-image:url(../flags/4x3/nz.svg)}.flag-icon-nz.flag-icon-squared{background-image:url(../flags/1x1/nz.svg)}.flag-icon-om{background-image:url(../flags/4x3/om.svg)}.flag-icon-om.flag-icon-squared{background-image:url(../flags/1x1/om.svg)}.flag-icon-pa{background-image:url(../flags/4x3/pa.svg)}.flag-icon-pa.flag-icon-squared{background-image:url(../flags/1x1/pa.svg)}.flag-icon-pe{background-image:url(../flags/4x3/pe.svg)}.flag-icon-pe.flag-icon-squared{background-image:url(../flags/1x1/pe.svg)}.flag-icon-pf{background-image:url(../flags/4x3/pf.svg)}.flag-icon-pf.flag-icon-squared{background-image:url(../flags/1x1/pf.svg)}.flag-icon-pg{background-image:url(../flags/4x3/pg.svg)}.flag-icon-pg.flag-icon-squared{background-image:url(../flags/1x1/pg.svg)}.flag-icon-ph{background-image:url(../flags/4x3/ph.svg)}.flag-icon-ph.flag-icon-squared{background-image:url(../flags/1x1/ph.svg)}.flag-icon-pk{background-image:url(../flags/4x3/pk.svg)}.flag-icon-pk.flag-icon-squared{background-image:url(../flags/1x1/pk.svg)}.flag-icon-pl{background-image:url(../flags/4x3/pl.svg)}.flag-icon-pl.flag-icon-squared{background-image:url(../flags/1x1/pl.svg)}.flag-icon-pm{background-image:url(../flags/4x3/pm.svg)}.flag-icon-pm.flag-icon-squared{background-image:url(../flags/1x1/pm.svg)}.flag-icon-pn{background-image:url(../flags/4x3/pn.svg)}.flag-icon-pn.flag-icon-squared{background-image:url(../flags/1x1/pn.svg)}.flag-icon-pr{background-image:url(../flags/4x3/pr.svg)}.flag-icon-pr.flag-icon-squared{background-image:url(../flags/1x1/pr.svg)}.flag-icon-ps{background-image:url(../flags/4x3/ps.svg)}.flag-icon-ps.flag-icon-squared{background-image:url(../flags/1x1/ps.svg)}.flag-icon-pt{background-image:url(../flags/4x3/pt.svg)}.flag-icon-pt.flag-icon-squared{background-image:url(../flags/1x1/pt.svg)}.flag-icon-pw{background-image:url(../flags/4x3/pw.svg)}.flag-icon-pw.flag-icon-squared{background-image:url(../flags/1x1/pw.svg)}.flag-icon-py{background-image:url(../flags/4x3/py.svg)}.flag-icon-py.flag-icon-squared{background-image:url(../flags/1x1/py.svg)}.flag-icon-qa{background-image:url(../flags/4x3/qa.svg)}.flag-icon-qa.flag-icon-squared{background-image:url(../flags/1x1/qa.svg)}.flag-icon-re{background-image:url(../flags/4x3/re.svg)}.flag-icon-re.flag-icon-squared{background-image:url(../flags/1x1/re.svg)}.flag-icon-ro{background-image:url(../flags/4x3/ro.svg)}.flag-icon-ro.flag-icon-squared{background-image:url(../flags/1x1/ro.svg)}.flag-icon-rs{background-image:url(../flags/4x3/rs.svg)}.flag-icon-rs.flag-icon-squared{background-image:url(../flags/1x1/rs.svg)}.flag-icon-ru{background-image:url(../flags/4x3/ru.svg)}.flag-icon-ru.flag-icon-squared{background-image:url(../flags/1x1/ru.svg)}.flag-icon-rw{background-image:url(../flags/4x3/rw.svg)}.flag-icon-rw.flag-icon-squared{background-image:url(../flags/1x1/rw.svg)}.flag-icon-sa{background-image:url(../flags/4x3/sa.svg)}.flag-icon-sa.flag-icon-squared{background-image:url(../flags/1x1/sa.svg)}.flag-icon-sb{background-image:url(../flags/4x3/sb.svg)}.flag-icon-sb.flag-icon-squared{background-image:url(../flags/1x1/sb.svg)}.flag-icon-sc{background-image:url(../flags/4x3/sc.svg)}.flag-icon-sc.flag-icon-squared{background-image:url(../flags/1x1/sc.svg)}.flag-icon-sd{background-image:url(../flags/4x3/sd.svg)}.flag-icon-sd.flag-icon-squared{background-image:url(../flags/1x1/sd.svg)}.flag-icon-se{background-image:url(../flags/4x3/se.svg)}.flag-icon-se.flag-icon-squared{background-image:url(../flags/1x1/se.svg)}.flag-icon-sg{background-image:url(../flags/4x3/sg.svg)}.flag-icon-sg.flag-icon-squared{background-image:url(../flags/1x1/sg.svg)}.flag-icon-sh{background-image:url(../flags/4x3/sh.svg)}.flag-icon-sh.flag-icon-squared{background-image:url(../flags/1x1/sh.svg)}.flag-icon-si{background-image:url(../flags/4x3/si.svg)}.flag-icon-si.flag-icon-squared{background-image:url(../flags/1x1/si.svg)}.flag-icon-sj{background-image:url(../flags/4x3/sj.svg)}.flag-icon-sj.flag-icon-squared{background-image:url(../flags/1x1/sj.svg)}.flag-icon-sk{background-image:url(../flags/4x3/sk.svg)}.flag-icon-sk.flag-icon-squared{background-image:url(../flags/1x1/sk.svg)}.flag-icon-sl{background-image:url(../flags/4x3/sl.svg)}.flag-icon-sl.flag-icon-squared{background-image:url(../flags/1x1/sl.svg)}.flag-icon-sm{background-image:url(../flags/4x3/sm.svg)}.flag-icon-sm.flag-icon-squared{background-image:url(../flags/1x1/sm.svg)}.flag-icon-sn{background-image:url(../flags/4x3/sn.svg)}.flag-icon-sn.flag-icon-squared{background-image:url(../flags/1x1/sn.svg)}.flag-icon-so{background-image:url(../flags/4x3/so.svg)}.flag-icon-so.flag-icon-squared{background-image:url(../flags/1x1/so.svg)}.flag-icon-sr{background-image:url(../flags/4x3/sr.svg)}.flag-icon-sr.flag-icon-squared{background-image:url(../flags/1x1/sr.svg)}.flag-icon-ss{background-image:url(../flags/4x3/ss.svg)}.flag-icon-ss.flag-icon-squared{background-image:url(../flags/1x1/ss.svg)}.flag-icon-st{background-image:url(../flags/4x3/st.svg)}.flag-icon-st.flag-icon-squared{background-image:url(../flags/1x1/st.svg)}.flag-icon-sv{background-image:url(../flags/4x3/sv.svg)}.flag-icon-sv.flag-icon-squared{background-image:url(../flags/1x1/sv.svg)}.flag-icon-sx{background-image:url(../flags/4x3/sx.svg)}.flag-icon-sx.flag-icon-squared{background-image:url(../flags/1x1/sx.svg)}.flag-icon-sy{background-image:url(../flags/4x3/sy.svg)}.flag-icon-sy.flag-icon-squared{background-image:url(../flags/1x1/sy.svg)}.flag-icon-sz{background-image:url(../flags/4x3/sz.svg)}.flag-icon-sz.flag-icon-squared{background-image:url(../flags/1x1/sz.svg)}.flag-icon-tc{background-image:url(../flags/4x3/tc.svg)}.flag-icon-tc.flag-icon-squared{background-image:url(../flags/1x1/tc.svg)}.flag-icon-td{background-image:url(../flags/4x3/td.svg)}.flag-icon-td.flag-icon-squared{background-image:url(../flags/1x1/td.svg)}.flag-icon-tf{background-image:url(../flags/4x3/tf.svg)}.flag-icon-tf.flag-icon-squared{background-image:url(../flags/1x1/tf.svg)}.flag-icon-tg{background-image:url(../flags/4x3/tg.svg)}.flag-icon-tg.flag-icon-squared{background-image:url(../flags/1x1/tg.svg)}.flag-icon-th{background-image:url(../flags/4x3/th.svg)}.flag-icon-th.flag-icon-squared{background-image:url(../flags/1x1/th.svg)}.flag-icon-tj{background-image:url(../flags/4x3/tj.svg)}.flag-icon-tj.flag-icon-squared{background-image:url(../flags/1x1/tj.svg)}.flag-icon-tk{background-image:url(../flags/4x3/tk.svg)}.flag-icon-tk.flag-icon-squared{background-image:url(../flags/1x1/tk.svg)}.flag-icon-tl{background-image:url(../flags/4x3/tl.svg)}.flag-icon-tl.flag-icon-squared{background-image:url(../flags/1x1/tl.svg)}.flag-icon-tm{background-image:url(../flags/4x3/tm.svg)}.flag-icon-tm.flag-icon-squared{background-image:url(../flags/1x1/tm.svg)}.flag-icon-tn{background-image:url(../flags/4x3/tn.svg)}.flag-icon-tn.flag-icon-squared{background-image:url(../flags/1x1/tn.svg)}.flag-icon-to{background-image:url(../flags/4x3/to.svg)}.flag-icon-to.flag-icon-squared{background-image:url(../flags/1x1/to.svg)}.flag-icon-tr{background-image:url(../flags/4x3/tr.svg)}.flag-icon-tr.flag-icon-squared{background-image:url(../flags/1x1/tr.svg)}.flag-icon-tt{background-image:url(../flags/4x3/tt.svg)}.flag-icon-tt.flag-icon-squared{background-image:url(../flags/1x1/tt.svg)}.flag-icon-tv{background-image:url(../flags/4x3/tv.svg)}.flag-icon-tv.flag-icon-squared{background-image:url(../flags/1x1/tv.svg)}.flag-icon-tw{background-image:url(../flags/4x3/tw.svg)}.flag-icon-tw.flag-icon-squared{background-image:url(../flags/1x1/tw.svg)}.flag-icon-tz{background-image:url(../flags/4x3/tz.svg)}.flag-icon-tz.flag-icon-squared{background-image:url(../flags/1x1/tz.svg)}.flag-icon-ua{background-image:url(../flags/4x3/ua.svg)}.flag-icon-ua.flag-icon-squared{background-image:url(../flags/1x1/ua.svg)}.flag-icon-ug{background-image:url(../flags/4x3/ug.svg)}.flag-icon-ug.flag-icon-squared{background-image:url(../flags/1x1/ug.svg)}.flag-icon-um{background-image:url(../flags/4x3/um.svg)}.flag-icon-um.flag-icon-squared{background-image:url(../flags/1x1/um.svg)}.flag-icon-us{background-image:url(../flags/4x3/us.svg)}.flag-icon-us.flag-icon-squared{background-image:url(../flags/1x1/us.svg)}.flag-icon-uy{background-image:url(../flags/4x3/uy.svg)}.flag-icon-uy.flag-icon-squared{background-image:url(../flags/1x1/uy.svg)}.flag-icon-uz{background-image:url(../flags/4x3/uz.svg)}.flag-icon-uz.flag-icon-squared{background-image:url(../flags/1x1/uz.svg)}.flag-icon-va{background-image:url(../flags/4x3/va.svg)}.flag-icon-va.flag-icon-squared{background-image:url(../flags/1x1/va.svg)}.flag-icon-vc{background-image:url(../flags/4x3/vc.svg)}.flag-icon-vc.flag-icon-squared{background-image:url(../flags/1x1/vc.svg)}.flag-icon-ve{background-image:url(../flags/4x3/ve.svg)}.flag-icon-ve.flag-icon-squared{background-image:url(../flags/1x1/ve.svg)}.flag-icon-vg{background-image:url(../flags/4x3/vg.svg)}.flag-icon-vg.flag-icon-squared{background-image:url(../flags/1x1/vg.svg)}.flag-icon-vi{background-image:url(../flags/4x3/vi.svg)}.flag-icon-vi.flag-icon-squared{background-image:url(../flags/1x1/vi.svg)}.flag-icon-vn{background-image:url(../flags/4x3/vn.svg)}.flag-icon-vn.flag-icon-squared{background-image:url(../flags/1x1/vn.svg)}.flag-icon-vu{background-image:url(../flags/4x3/vu.svg)}.flag-icon-vu.flag-icon-squared{background-image:url(../flags/1x1/vu.svg)}.flag-icon-wf{background-image:url(../flags/4x3/wf.svg)}.flag-icon-wf.flag-icon-squared{background-image:url(../flags/1x1/wf.svg)}.flag-icon-ws{background-image:url(../flags/4x3/ws.svg)}.flag-icon-ws.flag-icon-squared{background-image:url(../flags/1x1/ws.svg)}.flag-icon-ye{background-image:url(../flags/4x3/ye.svg)}.flag-icon-ye.flag-icon-squared{background-image:url(../flags/1x1/ye.svg)}.flag-icon-yt{background-image:url(../flags/4x3/yt.svg)}.flag-icon-yt.flag-icon-squared{background-image:url(../flags/1x1/yt.svg)}.flag-icon-za{background-image:url(../flags/4x3/za.svg)}.flag-icon-za.flag-icon-squared{background-image:url(../flags/1x1/za.svg)}.flag-icon-zm{background-image:url(../flags/4x3/zm.svg)}.flag-icon-zm.flag-icon-squared{background-image:url(../flags/1x1/zm.svg)}.flag-icon-zw{background-image:url(../flags/4x3/zw.svg)}.flag-icon-zw.flag-icon-squared{background-image:url(../flags/1x1/zw.svg)}.flag-icon-eu{background-image:url(../flags/4x3/eu.svg)}.flag-icon-eu.flag-icon-squared{background-image:url(../flags/1x1/eu.svg)}.flag-icon-gb-eng{background-image:url(../flags/4x3/gb-eng.svg)}.flag-icon-gb-eng.flag-icon-squared{background-image:url(../flags/1x1/gb-eng.svg)}.flag-icon-gb-sct{background-image:url(../flags/4x3/gb-sct.svg)}.flag-icon-gb-sct.flag-icon-squared{background-image:url(../flags/1x1/gb-sct.svg)}.flag-icon-gb-wls{background-image:url(../flags/4x3/gb-wls.svg)}.flag-icon-gb-wls.flag-icon-squared{background-image:url(../flags/1x1/gb-wls.svg)}.flag-icon-un{background-image:url(../flags/4x3/un.svg)}.flag-icon-un.flag-icon-squared{background-image:url(../flags/1x1/un.svg)} \ No newline at end of file diff --git a/bootstrap/flag_icon/flags/4x3/ad.svg b/bootstrap/flag_icon/flags/4x3/ad.svg new file mode 100644 index 0000000..c1148fe --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ad.svg @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ae.svg b/bootstrap/flag_icon/flags/4x3/ae.svg new file mode 100644 index 0000000..02e2942 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ae.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/af.svg b/bootstrap/flag_icon/flags/4x3/af.svg new file mode 100644 index 0000000..a331130 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/af.svg @@ -0,0 +1,431 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ag.svg b/bootstrap/flag_icon/flags/4x3/ag.svg new file mode 100644 index 0000000..05bf052 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ag.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ai.svg b/bootstrap/flag_icon/flags/4x3/ai.svg new file mode 100644 index 0000000..7a2ad93 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ai.svg @@ -0,0 +1,767 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/al.svg b/bootstrap/flag_icon/flags/4x3/al.svg new file mode 100644 index 0000000..b219956 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/al.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/am.svg b/bootstrap/flag_icon/flags/4x3/am.svg new file mode 100644 index 0000000..75ff8f0 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/am.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ao.svg b/bootstrap/flag_icon/flags/4x3/ao.svg new file mode 100644 index 0000000..499a067 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ao.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/aq.svg b/bootstrap/flag_icon/flags/4x3/aq.svg new file mode 100644 index 0000000..eb64287 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/aq.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ar.svg b/bootstrap/flag_icon/flags/4x3/ar.svg new file mode 100644 index 0000000..8a785e9 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ar.svg @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/as.svg b/bootstrap/flag_icon/flags/4x3/as.svg new file mode 100644 index 0000000..777f8d2 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/as.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/at.svg b/bootstrap/flag_icon/flags/4x3/at.svg new file mode 100644 index 0000000..8c48c72 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/at.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/au.svg b/bootstrap/flag_icon/flags/4x3/au.svg new file mode 100644 index 0000000..36da23a --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/au.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/aw.svg b/bootstrap/flag_icon/flags/4x3/aw.svg new file mode 100644 index 0000000..27270b6 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/aw.svg @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ax.svg b/bootstrap/flag_icon/flags/4x3/ax.svg new file mode 100644 index 0000000..3199030 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ax.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/az.svg b/bootstrap/flag_icon/flags/4x3/az.svg new file mode 100644 index 0000000..4ad2aa8 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/az.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ba.svg b/bootstrap/flag_icon/flags/4x3/ba.svg new file mode 100644 index 0000000..c9d7a04 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ba.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bb.svg b/bootstrap/flag_icon/flags/4x3/bb.svg new file mode 100644 index 0000000..3353c48 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bb.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bd.svg b/bootstrap/flag_icon/flags/4x3/bd.svg new file mode 100644 index 0000000..ceab30f --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bd.svg @@ -0,0 +1,4 @@ + + + + diff --git a/bootstrap/flag_icon/flags/4x3/be.svg b/bootstrap/flag_icon/flags/4x3/be.svg new file mode 100644 index 0000000..95d31de --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/be.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bf.svg b/bootstrap/flag_icon/flags/4x3/bf.svg new file mode 100644 index 0000000..4c1e343 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bf.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bg.svg b/bootstrap/flag_icon/flags/4x3/bg.svg new file mode 100644 index 0000000..19e9ba6 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bg.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bh.svg b/bootstrap/flag_icon/flags/4x3/bh.svg new file mode 100644 index 0000000..c67e017 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bh.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bi.svg b/bootstrap/flag_icon/flags/4x3/bi.svg new file mode 100644 index 0000000..94cd51a --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bi.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bj.svg b/bootstrap/flag_icon/flags/4x3/bj.svg new file mode 100644 index 0000000..e0c9814 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bj.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bl.svg b/bootstrap/flag_icon/flags/4x3/bl.svg new file mode 100644 index 0000000..5f468ab --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bl.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bm.svg b/bootstrap/flag_icon/flags/4x3/bm.svg new file mode 100644 index 0000000..7ad91b1 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bm.svg @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bn.svg b/bootstrap/flag_icon/flags/4x3/bn.svg new file mode 100644 index 0000000..256df69 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bn.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bo.svg b/bootstrap/flag_icon/flags/4x3/bo.svg new file mode 100644 index 0000000..0d9e1ba --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bo.svg @@ -0,0 +1,867 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bq.svg b/bootstrap/flag_icon/flags/4x3/bq.svg new file mode 100644 index 0000000..06006a1 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bq.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/br.svg b/bootstrap/flag_icon/flags/4x3/br.svg new file mode 100644 index 0000000..7f297bf --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/br.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bs.svg b/bootstrap/flag_icon/flags/4x3/bs.svg new file mode 100644 index 0000000..e348420 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bs.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bt.svg b/bootstrap/flag_icon/flags/4x3/bt.svg new file mode 100644 index 0000000..7db452a --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bt.svg @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bv.svg b/bootstrap/flag_icon/flags/4x3/bv.svg new file mode 100644 index 0000000..369f67c --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bv.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bw.svg b/bootstrap/flag_icon/flags/4x3/bw.svg new file mode 100644 index 0000000..7becab4 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bw.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/by.svg b/bootstrap/flag_icon/flags/4x3/by.svg new file mode 100644 index 0000000..e64abc7 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/by.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/bz.svg b/bootstrap/flag_icon/flags/4x3/bz.svg new file mode 100644 index 0000000..840eb35 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/bz.svg @@ -0,0 +1,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ca.svg b/bootstrap/flag_icon/flags/4x3/ca.svg new file mode 100644 index 0000000..024fc85 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ca.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/cc.svg b/bootstrap/flag_icon/flags/4x3/cc.svg new file mode 100644 index 0000000..4d57d2d --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/cc.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/cd.svg b/bootstrap/flag_icon/flags/4x3/cd.svg new file mode 100644 index 0000000..03e6f4c --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/cd.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/cf.svg b/bootstrap/flag_icon/flags/4x3/cf.svg new file mode 100644 index 0000000..2c57425 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/cf.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/cg.svg b/bootstrap/flag_icon/flags/4x3/cg.svg new file mode 100644 index 0000000..3a2efaa --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/cg.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ch.svg b/bootstrap/flag_icon/flags/4x3/ch.svg new file mode 100644 index 0000000..32f4506 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ch.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ci.svg b/bootstrap/flag_icon/flags/4x3/ci.svg new file mode 100644 index 0000000..b651f62 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ci.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ck.svg b/bootstrap/flag_icon/flags/4x3/ck.svg new file mode 100644 index 0000000..97f2677 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ck.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/cl.svg b/bootstrap/flag_icon/flags/4x3/cl.svg new file mode 100644 index 0000000..2af9587 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/cl.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/cm.svg b/bootstrap/flag_icon/flags/4x3/cm.svg new file mode 100644 index 0000000..8501eb8 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/cm.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/cn.svg b/bootstrap/flag_icon/flags/4x3/cn.svg new file mode 100644 index 0000000..3a48789 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/cn.svg @@ -0,0 +1,19 @@ + + + Flag of the People's Republic of China + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/co.svg b/bootstrap/flag_icon/flags/4x3/co.svg new file mode 100644 index 0000000..edf0074 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/co.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/cr.svg b/bootstrap/flag_icon/flags/4x3/cr.svg new file mode 100644 index 0000000..213db50 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/cr.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/cu.svg b/bootstrap/flag_icon/flags/4x3/cu.svg new file mode 100644 index 0000000..ce6284f --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/cu.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/cv.svg b/bootstrap/flag_icon/flags/4x3/cv.svg new file mode 100644 index 0000000..47775c2 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/cv.svg @@ -0,0 +1,16 @@ + + + The United States of America flag, produced by Daniel McRae + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/cw.svg b/bootstrap/flag_icon/flags/4x3/cw.svg new file mode 100644 index 0000000..3808d13 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/cw.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/cx.svg b/bootstrap/flag_icon/flags/4x3/cx.svg new file mode 100644 index 0000000..4bf59e6 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/cx.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/cy.svg b/bootstrap/flag_icon/flags/4x3/cy.svg new file mode 100644 index 0000000..feee5b0 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/cy.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/cz.svg b/bootstrap/flag_icon/flags/4x3/cz.svg new file mode 100644 index 0000000..bc7e8cb --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/cz.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/de.svg b/bootstrap/flag_icon/flags/4x3/de.svg new file mode 100644 index 0000000..9a1cb04 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/de.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/dj.svg b/bootstrap/flag_icon/flags/4x3/dj.svg new file mode 100644 index 0000000..7ec496e --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/dj.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/dk.svg b/bootstrap/flag_icon/flags/4x3/dk.svg new file mode 100644 index 0000000..3d07a76 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/dk.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/dm.svg b/bootstrap/flag_icon/flags/4x3/dm.svg new file mode 100644 index 0000000..3ecbabf --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/dm.svg @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/do.svg b/bootstrap/flag_icon/flags/4x3/do.svg new file mode 100644 index 0000000..1ff04be --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/do.svg @@ -0,0 +1,6748 @@ + + + The United States of America flag, produced by Daniel McRae + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/dz.svg b/bootstrap/flag_icon/flags/4x3/dz.svg new file mode 100644 index 0000000..3ed0f31 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/dz.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ec.svg b/bootstrap/flag_icon/flags/4x3/ec.svg new file mode 100644 index 0000000..260eec0 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ec.svg @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ee.svg b/bootstrap/flag_icon/flags/4x3/ee.svg new file mode 100644 index 0000000..92581ff --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ee.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/eg.svg b/bootstrap/flag_icon/flags/4x3/eg.svg new file mode 100644 index 0000000..f4eb8b3 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/eg.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/eh.svg b/bootstrap/flag_icon/flags/4x3/eh.svg new file mode 100644 index 0000000..973cb2e --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/eh.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/er.svg b/bootstrap/flag_icon/flags/4x3/er.svg new file mode 100644 index 0000000..f7f0013 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/er.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/es.svg b/bootstrap/flag_icon/flags/4x3/es.svg new file mode 100644 index 0000000..bcac275 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/es.svg @@ -0,0 +1,581 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/et.svg b/bootstrap/flag_icon/flags/4x3/et.svg new file mode 100644 index 0000000..22b891c --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/et.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/eu.svg b/bootstrap/flag_icon/flags/4x3/eu.svg new file mode 100644 index 0000000..fa99a0a --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/eu.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/fi.svg b/bootstrap/flag_icon/flags/4x3/fi.svg new file mode 100644 index 0000000..4100a4d --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/fi.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/fj.svg b/bootstrap/flag_icon/flags/4x3/fj.svg new file mode 100644 index 0000000..5390e03 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/fj.svg @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/fk.svg b/bootstrap/flag_icon/flags/4x3/fk.svg new file mode 100644 index 0000000..de926fc --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/fk.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/fm.svg b/bootstrap/flag_icon/flags/4x3/fm.svg new file mode 100644 index 0000000..3becd0e --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/fm.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/fo.svg b/bootstrap/flag_icon/flags/4x3/fo.svg new file mode 100644 index 0000000..de838d3 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/fo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/fr.svg b/bootstrap/flag_icon/flags/4x3/fr.svg new file mode 100644 index 0000000..bfbea35 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/fr.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ga.svg b/bootstrap/flag_icon/flags/4x3/ga.svg new file mode 100644 index 0000000..581c0f0 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ga.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gb-eng.svg b/bootstrap/flag_icon/flags/4x3/gb-eng.svg new file mode 100644 index 0000000..4a13564 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gb-eng.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gb-sct.svg b/bootstrap/flag_icon/flags/4x3/gb-sct.svg new file mode 100644 index 0000000..75e1925 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gb-sct.svg @@ -0,0 +1,4 @@ + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gb-wls.svg b/bootstrap/flag_icon/flags/4x3/gb-wls.svg new file mode 100644 index 0000000..736a1f0 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gb-wls.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gb.svg b/bootstrap/flag_icon/flags/4x3/gb.svg new file mode 100644 index 0000000..a331748 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gb.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gd.svg b/bootstrap/flag_icon/flags/4x3/gd.svg new file mode 100644 index 0000000..4c37871 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gd.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ge.svg b/bootstrap/flag_icon/flags/4x3/ge.svg new file mode 100644 index 0000000..a3ce6a8 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ge.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gf.svg b/bootstrap/flag_icon/flags/4x3/gf.svg new file mode 100644 index 0000000..44ad797 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gf.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gg.svg b/bootstrap/flag_icon/flags/4x3/gg.svg new file mode 100644 index 0000000..9b71caa --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gg.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gh.svg b/bootstrap/flag_icon/flags/4x3/gh.svg new file mode 100644 index 0000000..b84be43 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gh.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gi.svg b/bootstrap/flag_icon/flags/4x3/gi.svg new file mode 100644 index 0000000..62c103d --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gi.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gl.svg b/bootstrap/flag_icon/flags/4x3/gl.svg new file mode 100644 index 0000000..8fac0d6 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gl.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gm.svg b/bootstrap/flag_icon/flags/4x3/gm.svg new file mode 100644 index 0000000..6727e35 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gm.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gn.svg b/bootstrap/flag_icon/flags/4x3/gn.svg new file mode 100644 index 0000000..1745155 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gn.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gp.svg b/bootstrap/flag_icon/flags/4x3/gp.svg new file mode 100644 index 0000000..bfbea35 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gp.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gq.svg b/bootstrap/flag_icon/flags/4x3/gq.svg new file mode 100644 index 0000000..d93a1ae --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gq.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gr.svg b/bootstrap/flag_icon/flags/4x3/gr.svg new file mode 100644 index 0000000..cf417e3 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gr.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gs.svg b/bootstrap/flag_icon/flags/4x3/gs.svg new file mode 100644 index 0000000..0a25fac --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gs.svg @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + L + + + E + + + O + + + T + + + E + + + R + + + R + + + R + + + R + + + R + + + E + + + O + + + O + + + A + + + A + + + A + + + M + + + P + + + P + + + P + + + I + + + T + + + T + + + M + + + G + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gt.svg b/bootstrap/flag_icon/flags/4x3/gt.svg new file mode 100644 index 0000000..ac0f7fd --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gt.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gu.svg b/bootstrap/flag_icon/flags/4x3/gu.svg new file mode 100644 index 0000000..37b62a6 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gu.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + G + + + U + + + A + + + M + + + + + + + + G + + + U + + + A + + + M + + diff --git a/bootstrap/flag_icon/flags/4x3/gw.svg b/bootstrap/flag_icon/flags/4x3/gw.svg new file mode 100644 index 0000000..367ff0d --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gw.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/gy.svg b/bootstrap/flag_icon/flags/4x3/gy.svg new file mode 100644 index 0000000..1c6d189 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/gy.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/hk.svg b/bootstrap/flag_icon/flags/4x3/hk.svg new file mode 100644 index 0000000..7b2cc23 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/hk.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/hm.svg b/bootstrap/flag_icon/flags/4x3/hm.svg new file mode 100644 index 0000000..b6853ce --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/hm.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/hn.svg b/bootstrap/flag_icon/flags/4x3/hn.svg new file mode 100644 index 0000000..161fdcf --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/hn.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/hr.svg b/bootstrap/flag_icon/flags/4x3/hr.svg new file mode 100644 index 0000000..d578ce4 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/hr.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ht.svg b/bootstrap/flag_icon/flags/4x3/ht.svg new file mode 100644 index 0000000..d533289 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ht.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/hu.svg b/bootstrap/flag_icon/flags/4x3/hu.svg new file mode 100644 index 0000000..566d886 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/hu.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/id.svg b/bootstrap/flag_icon/flags/4x3/id.svg new file mode 100644 index 0000000..0e6a5ea --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/id.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ie.svg b/bootstrap/flag_icon/flags/4x3/ie.svg new file mode 100644 index 0000000..d5c8527 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ie.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/il.svg b/bootstrap/flag_icon/flags/4x3/il.svg new file mode 100644 index 0000000..da7900a --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/il.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/im.svg b/bootstrap/flag_icon/flags/4x3/im.svg new file mode 100644 index 0000000..b6f2c26 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/im.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/in.svg b/bootstrap/flag_icon/flags/4x3/in.svg new file mode 100644 index 0000000..97ca2b9 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/in.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/io.svg b/bootstrap/flag_icon/flags/4x3/io.svg new file mode 100644 index 0000000..c5b314e --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/io.svg @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/iq.svg b/bootstrap/flag_icon/flags/4x3/iq.svg new file mode 100644 index 0000000..cb3ac6d --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/iq.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ir.svg b/bootstrap/flag_icon/flags/4x3/ir.svg new file mode 100644 index 0000000..f7e71a5 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ir.svg @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/is.svg b/bootstrap/flag_icon/flags/4x3/is.svg new file mode 100644 index 0000000..741adbc --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/is.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/it.svg b/bootstrap/flag_icon/flags/4x3/it.svg new file mode 100644 index 0000000..eab92e6 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/it.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/je.svg b/bootstrap/flag_icon/flags/4x3/je.svg new file mode 100644 index 0000000..44231ad --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/je.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/jm.svg b/bootstrap/flag_icon/flags/4x3/jm.svg new file mode 100644 index 0000000..de2ba07 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/jm.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/jo.svg b/bootstrap/flag_icon/flags/4x3/jo.svg new file mode 100644 index 0000000..dff4635 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/jo.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/jp.svg b/bootstrap/flag_icon/flags/4x3/jp.svg new file mode 100644 index 0000000..46b8c0a --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/jp.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ke.svg b/bootstrap/flag_icon/flags/4x3/ke.svg new file mode 100644 index 0000000..bb26fe4 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ke.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/kg.svg b/bootstrap/flag_icon/flags/4x3/kg.svg new file mode 100644 index 0000000..e272135 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/kg.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/kh.svg b/bootstrap/flag_icon/flags/4x3/kh.svg new file mode 100644 index 0000000..f7eb82b --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/kh.svg @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ki.svg b/bootstrap/flag_icon/flags/4x3/ki.svg new file mode 100644 index 0000000..2db4dc2 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ki.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/km.svg b/bootstrap/flag_icon/flags/4x3/km.svg new file mode 100644 index 0000000..c59602c --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/km.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/kn.svg b/bootstrap/flag_icon/flags/4x3/kn.svg new file mode 100644 index 0000000..e8f75d4 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/kn.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/kp.svg b/bootstrap/flag_icon/flags/4x3/kp.svg new file mode 100644 index 0000000..015d7c8 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/kp.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/kr.svg b/bootstrap/flag_icon/flags/4x3/kr.svg new file mode 100644 index 0000000..b774f83 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/kr.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/kw.svg b/bootstrap/flag_icon/flags/4x3/kw.svg new file mode 100644 index 0000000..d89e893 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/kw.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ky.svg b/bootstrap/flag_icon/flags/4x3/ky.svg new file mode 100644 index 0000000..c4a3ebb --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ky.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/kz.svg b/bootstrap/flag_icon/flags/4x3/kz.svg new file mode 100644 index 0000000..7499a39 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/kz.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/la.svg b/bootstrap/flag_icon/flags/4x3/la.svg new file mode 100644 index 0000000..94a18ec --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/la.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/lb.svg b/bootstrap/flag_icon/flags/4x3/lb.svg new file mode 100644 index 0000000..0f4318e --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/lb.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/lc.svg b/bootstrap/flag_icon/flags/4x3/lc.svg new file mode 100644 index 0000000..2f7ce19 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/lc.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/li.svg b/bootstrap/flag_icon/flags/4x3/li.svg new file mode 100644 index 0000000..160bf14 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/li.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/lk.svg b/bootstrap/flag_icon/flags/4x3/lk.svg new file mode 100644 index 0000000..6fe4b5c --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/lk.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/lr.svg b/bootstrap/flag_icon/flags/4x3/lr.svg new file mode 100644 index 0000000..4c2f61e --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/lr.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ls.svg b/bootstrap/flag_icon/flags/4x3/ls.svg new file mode 100644 index 0000000..90ee3ee --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ls.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/lt.svg b/bootstrap/flag_icon/flags/4x3/lt.svg new file mode 100644 index 0000000..aea215f --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/lt.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/lu.svg b/bootstrap/flag_icon/flags/4x3/lu.svg new file mode 100644 index 0000000..10a61c9 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/lu.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/lv.svg b/bootstrap/flag_icon/flags/4x3/lv.svg new file mode 100644 index 0000000..69373c6 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/lv.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ly.svg b/bootstrap/flag_icon/flags/4x3/ly.svg new file mode 100644 index 0000000..dca3b10 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ly.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ma.svg b/bootstrap/flag_icon/flags/4x3/ma.svg new file mode 100644 index 0000000..e1c634b --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ma.svg @@ -0,0 +1,4 @@ + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mc.svg b/bootstrap/flag_icon/flags/4x3/mc.svg new file mode 100644 index 0000000..e1fc89f --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mc.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/md.svg b/bootstrap/flag_icon/flags/4x3/md.svg new file mode 100644 index 0000000..add0633 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/md.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/me.svg b/bootstrap/flag_icon/flags/4x3/me.svg new file mode 100644 index 0000000..47b2680 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/me.svg @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mf.svg b/bootstrap/flag_icon/flags/4x3/mf.svg new file mode 100644 index 0000000..bfbea35 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mf.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mg.svg b/bootstrap/flag_icon/flags/4x3/mg.svg new file mode 100644 index 0000000..85a81ec --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mg.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mh.svg b/bootstrap/flag_icon/flags/4x3/mh.svg new file mode 100644 index 0000000..9440551 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mh.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mk.svg b/bootstrap/flag_icon/flags/4x3/mk.svg new file mode 100644 index 0000000..01ec7f2 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mk.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ml.svg b/bootstrap/flag_icon/flags/4x3/ml.svg new file mode 100644 index 0000000..35c8047 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ml.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mm.svg b/bootstrap/flag_icon/flags/4x3/mm.svg new file mode 100644 index 0000000..dd4128a --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mm.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mn.svg b/bootstrap/flag_icon/flags/4x3/mn.svg new file mode 100644 index 0000000..85b7000 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mn.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mo.svg b/bootstrap/flag_icon/flags/4x3/mo.svg new file mode 100644 index 0000000..9405ef6 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mp.svg b/bootstrap/flag_icon/flags/4x3/mp.svg new file mode 100644 index 0000000..dc671b9 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mp.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mq.svg b/bootstrap/flag_icon/flags/4x3/mq.svg new file mode 100644 index 0000000..93670ef --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mq.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mr.svg b/bootstrap/flag_icon/flags/4x3/mr.svg new file mode 100644 index 0000000..2be2169 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mr.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ms.svg b/bootstrap/flag_icon/flags/4x3/ms.svg new file mode 100644 index 0000000..61ab355 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ms.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mt.svg b/bootstrap/flag_icon/flags/4x3/mt.svg new file mode 100644 index 0000000..2a2d701 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mt.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mu.svg b/bootstrap/flag_icon/flags/4x3/mu.svg new file mode 100644 index 0000000..b4745f3 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mu.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mv.svg b/bootstrap/flag_icon/flags/4x3/mv.svg new file mode 100644 index 0000000..4563a28 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mv.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mw.svg b/bootstrap/flag_icon/flags/4x3/mw.svg new file mode 100644 index 0000000..79b8e54 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mw.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mx.svg b/bootstrap/flag_icon/flags/4x3/mx.svg new file mode 100644 index 0000000..2421843 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mx.svg @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/my.svg b/bootstrap/flag_icon/flags/4x3/my.svg new file mode 100644 index 0000000..0aae6d4 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/my.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/mz.svg b/bootstrap/flag_icon/flags/4x3/mz.svg new file mode 100644 index 0000000..dfef3c7 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/mz.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/na.svg b/bootstrap/flag_icon/flags/4x3/na.svg new file mode 100644 index 0000000..3cc1577 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/na.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/nc.svg b/bootstrap/flag_icon/flags/4x3/nc.svg new file mode 100644 index 0000000..8ac2d99 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/nc.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ne.svg b/bootstrap/flag_icon/flags/4x3/ne.svg new file mode 100644 index 0000000..1acced6 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ne.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/nf.svg b/bootstrap/flag_icon/flags/4x3/nf.svg new file mode 100644 index 0000000..113157a --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/nf.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ng.svg b/bootstrap/flag_icon/flags/4x3/ng.svg new file mode 100644 index 0000000..20ebbba --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ng.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ni.svg b/bootstrap/flag_icon/flags/4x3/ni.svg new file mode 100644 index 0000000..f91bb8e --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ni.svg @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/nl.svg b/bootstrap/flag_icon/flags/4x3/nl.svg new file mode 100644 index 0000000..5951d7c --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/nl.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/no.svg b/bootstrap/flag_icon/flags/4x3/no.svg new file mode 100644 index 0000000..ae0f346 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/no.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/np.svg b/bootstrap/flag_icon/flags/4x3/np.svg new file mode 100644 index 0000000..e976ab9 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/np.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/nr.svg b/bootstrap/flag_icon/flags/4x3/nr.svg new file mode 100644 index 0000000..3efe8c3 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/nr.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/nu.svg b/bootstrap/flag_icon/flags/4x3/nu.svg new file mode 100644 index 0000000..1391d9a --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/nu.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/nz.svg b/bootstrap/flag_icon/flags/4x3/nz.svg new file mode 100644 index 0000000..1122077 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/nz.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/om.svg b/bootstrap/flag_icon/flags/4x3/om.svg new file mode 100644 index 0000000..5667129 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/om.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/pa.svg b/bootstrap/flag_icon/flags/4x3/pa.svg new file mode 100644 index 0000000..82b0c93 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/pa.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/pe.svg b/bootstrap/flag_icon/flags/4x3/pe.svg new file mode 100644 index 0000000..ee3ea7b --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/pe.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/pf.svg b/bootstrap/flag_icon/flags/4x3/pf.svg new file mode 100644 index 0000000..858e8c3 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/pf.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/pg.svg b/bootstrap/flag_icon/flags/4x3/pg.svg new file mode 100644 index 0000000..d501a52 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/pg.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ph.svg b/bootstrap/flag_icon/flags/4x3/ph.svg new file mode 100644 index 0000000..63256d7 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ph.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/pk.svg b/bootstrap/flag_icon/flags/4x3/pk.svg new file mode 100644 index 0000000..70ba6ba --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/pk.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/pl.svg b/bootstrap/flag_icon/flags/4x3/pl.svg new file mode 100644 index 0000000..2350e5c --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/pl.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/pm.svg b/bootstrap/flag_icon/flags/4x3/pm.svg new file mode 100644 index 0000000..8ac2d99 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/pm.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/pn.svg b/bootstrap/flag_icon/flags/4x3/pn.svg new file mode 100644 index 0000000..7675811 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/pn.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/pr.svg b/bootstrap/flag_icon/flags/4x3/pr.svg new file mode 100644 index 0000000..95cf1ae --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/pr.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ps.svg b/bootstrap/flag_icon/flags/4x3/ps.svg new file mode 100644 index 0000000..f6fdb84 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ps.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/pt.svg b/bootstrap/flag_icon/flags/4x3/pt.svg new file mode 100644 index 0000000..0132229 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/pt.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/pw.svg b/bootstrap/flag_icon/flags/4x3/pw.svg new file mode 100644 index 0000000..159b7e1 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/pw.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/py.svg b/bootstrap/flag_icon/flags/4x3/py.svg new file mode 100644 index 0000000..f26fc4d --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/py.svg @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/qa.svg b/bootstrap/flag_icon/flags/4x3/qa.svg new file mode 100644 index 0000000..18a0748 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/qa.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/re.svg b/bootstrap/flag_icon/flags/4x3/re.svg new file mode 100644 index 0000000..8ac2d99 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/re.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ro.svg b/bootstrap/flag_icon/flags/4x3/ro.svg new file mode 100644 index 0000000..12fe6d2 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ro.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/rs.svg b/bootstrap/flag_icon/flags/4x3/rs.svg new file mode 100644 index 0000000..011831a --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/rs.svg @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ru.svg b/bootstrap/flag_icon/flags/4x3/ru.svg new file mode 100644 index 0000000..ea2e10b --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ru.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/rw.svg b/bootstrap/flag_icon/flags/4x3/rw.svg new file mode 100644 index 0000000..e4b53ea --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/rw.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/sa.svg b/bootstrap/flag_icon/flags/4x3/sa.svg new file mode 100644 index 0000000..0aa3641 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/sa.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/sb.svg b/bootstrap/flag_icon/flags/4x3/sb.svg new file mode 100644 index 0000000..f92e859 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/sb.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/sc.svg b/bootstrap/flag_icon/flags/4x3/sc.svg new file mode 100644 index 0000000..f1f4322 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/sc.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/sd.svg b/bootstrap/flag_icon/flags/4x3/sd.svg new file mode 100644 index 0000000..b442587 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/sd.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/se.svg b/bootstrap/flag_icon/flags/4x3/se.svg new file mode 100644 index 0000000..480d60f --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/se.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/sg.svg b/bootstrap/flag_icon/flags/4x3/sg.svg new file mode 100644 index 0000000..853079f --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/sg.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/sh.svg b/bootstrap/flag_icon/flags/4x3/sh.svg new file mode 100644 index 0000000..0ae92b0 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/sh.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/si.svg b/bootstrap/flag_icon/flags/4x3/si.svg new file mode 100644 index 0000000..48ef440 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/si.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/sj.svg b/bootstrap/flag_icon/flags/4x3/sj.svg new file mode 100644 index 0000000..910d06a --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/sj.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/sk.svg b/bootstrap/flag_icon/flags/4x3/sk.svg new file mode 100644 index 0000000..e97a468 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/sk.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/sl.svg b/bootstrap/flag_icon/flags/4x3/sl.svg new file mode 100644 index 0000000..9c57c12 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/sl.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/sm.svg b/bootstrap/flag_icon/flags/4x3/sm.svg new file mode 100644 index 0000000..3a73ddb --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/sm.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + L + + + I + + + B + + + E + + + R + + + T + + + A + + + S + + + + diff --git a/bootstrap/flag_icon/flags/4x3/sn.svg b/bootstrap/flag_icon/flags/4x3/sn.svg new file mode 100644 index 0000000..a1efe38 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/sn.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/so.svg b/bootstrap/flag_icon/flags/4x3/so.svg new file mode 100644 index 0000000..bcba50f --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/so.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/sr.svg b/bootstrap/flag_icon/flags/4x3/sr.svg new file mode 100644 index 0000000..dce93c1 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/sr.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ss.svg b/bootstrap/flag_icon/flags/4x3/ss.svg new file mode 100644 index 0000000..334f681 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ss.svg @@ -0,0 +1,11 @@ + + + Flag of South Sudan + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/st.svg b/bootstrap/flag_icon/flags/4x3/st.svg new file mode 100644 index 0000000..f383b31 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/st.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/sv.svg b/bootstrap/flag_icon/flags/4x3/sv.svg new file mode 100644 index 0000000..02cab01 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/sv.svg @@ -0,0 +1,621 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/sx.svg b/bootstrap/flag_icon/flags/4x3/sx.svg new file mode 100644 index 0000000..a703bb2 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/sx.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/sy.svg b/bootstrap/flag_icon/flags/4x3/sy.svg new file mode 100644 index 0000000..aece994 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/sy.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/sz.svg b/bootstrap/flag_icon/flags/4x3/sz.svg new file mode 100644 index 0000000..a22dff2 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/sz.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/tc.svg b/bootstrap/flag_icon/flags/4x3/tc.svg new file mode 100644 index 0000000..fdb00ac --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/tc.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/td.svg b/bootstrap/flag_icon/flags/4x3/td.svg new file mode 100644 index 0000000..233efd4 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/td.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/tf.svg b/bootstrap/flag_icon/flags/4x3/tf.svg new file mode 100644 index 0000000..0c52263 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/tf.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/tg.svg b/bootstrap/flag_icon/flags/4x3/tg.svg new file mode 100644 index 0000000..9f3c694 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/tg.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/th.svg b/bootstrap/flag_icon/flags/4x3/th.svg new file mode 100644 index 0000000..6a04bb3 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/th.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/tj.svg b/bootstrap/flag_icon/flags/4x3/tj.svg new file mode 100644 index 0000000..0ab64a1 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/tj.svg @@ -0,0 +1,181 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/tk.svg b/bootstrap/flag_icon/flags/4x3/tk.svg new file mode 100644 index 0000000..99dd31a --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/tk.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/tl.svg b/bootstrap/flag_icon/flags/4x3/tl.svg new file mode 100644 index 0000000..6bc4899 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/tl.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/tm.svg b/bootstrap/flag_icon/flags/4x3/tm.svg new file mode 100644 index 0000000..cb29bf4 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/tm.svg @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/tn.svg b/bootstrap/flag_icon/flags/4x3/tn.svg new file mode 100644 index 0000000..d071a75 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/tn.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/to.svg b/bootstrap/flag_icon/flags/4x3/to.svg new file mode 100644 index 0000000..2dce6f0 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/to.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/tr.svg b/bootstrap/flag_icon/flags/4x3/tr.svg new file mode 100644 index 0000000..20bf2be --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/tr.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/tt.svg b/bootstrap/flag_icon/flags/4x3/tt.svg new file mode 100644 index 0000000..79a5dec --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/tt.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/tv.svg b/bootstrap/flag_icon/flags/4x3/tv.svg new file mode 100644 index 0000000..301fc22 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/tv.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/tw.svg b/bootstrap/flag_icon/flags/4x3/tw.svg new file mode 100644 index 0000000..3ac618e --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/tw.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/tz.svg b/bootstrap/flag_icon/flags/4x3/tz.svg new file mode 100644 index 0000000..3c96faf --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/tz.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ua.svg b/bootstrap/flag_icon/flags/4x3/ua.svg new file mode 100644 index 0000000..cbc5e01 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ua.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ug.svg b/bootstrap/flag_icon/flags/4x3/ug.svg new file mode 100644 index 0000000..4557089 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ug.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/um.svg b/bootstrap/flag_icon/flags/4x3/um.svg new file mode 100644 index 0000000..2757594 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/um.svg @@ -0,0 +1,48 @@ + + + The United States of America flag, produced by Daniel McRae + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/un.svg b/bootstrap/flag_icon/flags/4x3/un.svg new file mode 100644 index 0000000..cd41779 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/un.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/us.svg b/bootstrap/flag_icon/flags/4x3/us.svg new file mode 100644 index 0000000..2757594 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/us.svg @@ -0,0 +1,48 @@ + + + The United States of America flag, produced by Daniel McRae + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/uy.svg b/bootstrap/flag_icon/flags/4x3/uy.svg new file mode 100644 index 0000000..f5630d0 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/uy.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/uz.svg b/bootstrap/flag_icon/flags/4x3/uz.svg new file mode 100644 index 0000000..81b602d --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/uz.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/va.svg b/bootstrap/flag_icon/flags/4x3/va.svg new file mode 100644 index 0000000..91a0988 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/va.svg @@ -0,0 +1,483 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/vc.svg b/bootstrap/flag_icon/flags/4x3/vc.svg new file mode 100644 index 0000000..5587665 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/vc.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ve.svg b/bootstrap/flag_icon/flags/4x3/ve.svg new file mode 100644 index 0000000..daff4dd --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ve.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/vg.svg b/bootstrap/flag_icon/flags/4x3/vg.svg new file mode 100644 index 0000000..7995fe9 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/vg.svg @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/vi.svg b/bootstrap/flag_icon/flags/4x3/vi.svg new file mode 100644 index 0000000..b65c000 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/vi.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/vn.svg b/bootstrap/flag_icon/flags/4x3/vn.svg new file mode 100644 index 0000000..462197d --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/vn.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/vu.svg b/bootstrap/flag_icon/flags/4x3/vu.svg new file mode 100644 index 0000000..6d8cfa3 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/vu.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/wf.svg b/bootstrap/flag_icon/flags/4x3/wf.svg new file mode 100644 index 0000000..002cb38 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/wf.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ws.svg b/bootstrap/flag_icon/flags/4x3/ws.svg new file mode 100644 index 0000000..18ad14e --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ws.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/ye.svg b/bootstrap/flag_icon/flags/4x3/ye.svg new file mode 100644 index 0000000..aa173b4 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/ye.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/yt.svg b/bootstrap/flag_icon/flags/4x3/yt.svg new file mode 100644 index 0000000..8ac2d99 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/yt.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/za.svg b/bootstrap/flag_icon/flags/4x3/za.svg new file mode 100644 index 0000000..29cd993 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/za.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/zm.svg b/bootstrap/flag_icon/flags/4x3/zm.svg new file mode 100644 index 0000000..b5eab12 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/zm.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/zw.svg b/bootstrap/flag_icon/flags/4x3/zw.svg new file mode 100644 index 0000000..622e250 --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/zw.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bootstrap/flag_icon/flags/4x3/zz.svg b/bootstrap/flag_icon/flags/4x3/zz.svg new file mode 100644 index 0000000..bc4c3ee --- /dev/null +++ b/bootstrap/flag_icon/flags/4x3/zz.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/install.php b/install.php index 95afd7e..723bcd4 100644 --- a/install.php +++ b/install.php @@ -46,7 +46,7 @@ if(isset($_POST['confweb'])) { $sqlconerr = 'SQL Connection failed: '.$e->getMessage(); exit; } - if($mysqlcon->exec("INSERT INTO config (webuser,webpass,tshost,tsquery,tsvoice,tsuser,language,queryname,queryname2,grouptime,resetbydbchange,msgtouser,upcheck,uniqueid,updateinfotime,currvers,exceptuuid,exceptgroup,dateformat,showexgrp,showexcld,showcolcld,showcoluuid,showcoldbid,showcolot,showcolit,showcolat,showcolnx,showcolsg,bgcolor,hdcolor,txcolor,hvcolor,ifcolor,wncolor,sccolor,showgen,showcolrg,showcolls,slowmode,cleanclients,cleanperiod,showhighest,boost,showcolas,defchid,timezone,logpath) VALUES ('$user','$pass','localhost','10011','9987','serveradmin','en','http://ts-n.net/ranksystem.php','www.ts-n.net/ranksystem.php','31536000=>47,31536060=>50','1','1','1','xrTKhT/HDl4ea0WoFDQH2zOpmKg=,9odBYAU7z2E2feUz965sL0/MyBom=','7200','1.00','xrTKhT/HDl4ea0WoFDQH2zOpmKg=','2,6','%a days, %h hours, %i mins, %s secs','1','1','1','1','1','1','1','1','1','1','#101010','#909090','#707070','#FFFFFF','#3366CC','#CC0000','#008000','1','1','1','0','1','86400','1','','1','','Europe/Berlin','$logpath')") === false) { + if($mysqlcon->exec("INSERT INTO config (webuser,webpass,tshost,tsquery,tsvoice,tsuser,language,queryname,queryname2,grouptime,resetbydbchange,msgtouser,upcheck,uniqueid,updateinfotime,currvers,exceptuuid,exceptgroup,dateformat,showexgrp,showexcld,showcolcld,showcoluuid,showcoldbid,showcolot,showcolit,showcolat,showcolnx,showcolsg,bgcolor,hdcolor,txcolor,hvcolor,ifcolor,wncolor,sccolor,showgen,showcolrg,showcolls,slowmode,cleanclients,cleanperiod,showhighest,boost,showcolas,defchid,timezone,logpath) VALUES ('$user','$pass','localhost','10011','9987','serveradmin','en','http://ts-n.net/ranksystem.php','www.ts-n.net/ranksystem.php','31536000=>47,31536060=>50','1','1','1','xrTKhT/HDl4ea0WoFDQH2zOpmKg=,9odBYAU7z2E2feUz965sL0/MyBom=','7200','1.0.1','xrTKhT/HDl4ea0WoFDQH2zOpmKg=','2,6','%a days, %h hours, %i mins, %s secs','1','1','1','1','1','1','1','1','1','1','#101010','#909090','#707070','#FFFFFF','#3366CC','#CC0000','#008000','1','1','1','0','1','86400','1','','1','','Europe/Berlin','$logpath')") === false) { echo '',$mysqlcon->errorCode(),'
'; } else { echo''.$lang['isntwiusr'].'

'; diff --git a/jobs/bot.php b/jobs/bot.php index 6eb97a4..1c83250 100644 --- a/jobs/bot.php +++ b/jobs/bot.php @@ -1,115 +1,2 @@ #!/usr/bin/php -exec("INSERT INTO $dbname.job_log (timestamp,job_name,status) VALUES ('$timestamp','$jobname','9')") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),print_r($mysqlcon->errorInfo()),"\n"; - } else { - return $jobid = $mysqlcon->lastInsertId(); - } -} - -echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Connect to TS3 Server (Address: \"",$ts['host'],"\" Voice-Port: \"",$ts['voice'],"\" Query-Port: \"",$ts['query'],"\") ..."; -try { - $ts3 = TeamSpeak3::factory("serverquery://" . $ts['user'] . ":" . $ts['pass'] . "@" . $ts['host'] . ":" . $ts['query'] . "/?server_port=" . $ts['voice'] . "&blocking=0"); - echo " finished\n"; - - try { - usleep($slowmode); - $ts3->selfUpdate(array('client_nickname' => $queryname)); - } - catch (Exception $e) { - try { - usleep($slowmode); - $ts3->selfUpdate(array('client_nickname' => $queryname2)); - } - catch (Exception $e) { - echo "\n",DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),$lang['error'], $e->getCode(), ': ', $e->getMessage(),"\n"; - } - } - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Join to specified Channel..."; - usleep($slowmode); - $whoami = $ts3->whoami(); - if($defchid != 0) { - try { - usleep($slowmode); - $ts3->clientMove($whoami['client_id'],$defchid); - echo " finished\n"; - } catch (Exception $e) { - if($e->getCode() != 770) { - echo "\n",DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),$lang['error'], $e->getCode(), ': ', $e->getMessage(),"\n"; - } else { - echo " finished\n"; - } - } - } else { - echo " no Channel defined\n"; - } - - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Bot starts now his work!\n"; - while(1) { - usleep($slowmode); - $ts3->clientListReset(); - $allclients = $ts3->clientList(); - usleep($slowmode); - $ts3->serverInfoReset(); - $serverinfo = $ts3->serverInfo(); - if($defchid != 0) { - try { usleep($slowmode); $ts3->clientMove($whoami['client_id'],$defchid); } catch (Exception $e) {} - } - $jobid = log_mysql('calc_user',$mysqlcon); - calc_user($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$showgen,$update,$grouptime,$boostarr,$resetbydbchange,$msgtouser,$uniqueid,$updateinfotime,$currvers,$substridle,$exceptuuid,$exceptgroup,$allclients); - usleep($slowmode); - $jobid = log_mysql('get_avatars',$mysqlcon); - get_avatars($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone); - usleep($slowmode); - $jobid = log_mysql('update_groups',$mysqlcon); - update_groups($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$serverinfo); - usleep($slowmode); - $jobid = log_mysql('calc_serverstats',$mysqlcon); - calc_serverstats($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$serverinfo,$substridle,$grouptime); - usleep($slowmode); - $jobid = log_mysql('calc_userstats',$mysqlcon); - calc_userstats($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone); - usleep($slowmode); - $jobid = log_mysql('clean',$mysqlcon); - clean($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$cleanclients,$cleanperiod); - usleep($slowmode); - //check auf fehler in job_log - if(!is_file(substr(__DIR__,0,-4).'logs/pid')) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Received signal to stop. Shutting down...\n"; - exit; - } - } -} -catch (Exception $e) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),$lang['error'] . $e->getCode() . ': ' . $e->getMessage(),"\n"; - $offline_status = array(110,257,258,1024,1026,1031,1032,1033,1034,1280,1793); - if(in_array($e->getCode(), $offline_status)) { - if($mysqlcon->exec("UPDATE $dbname.stats_server SET server_status='0'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),$lang['error'],print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - } - $sqlmsg .= $e->getCode() . ': ' . $e->getMessage(); - $sqlerr++; -} -?> \ No newline at end of file +exec("INSERT INTO $dbname.job_log (timestamp,job_name,status) VALUES ('$timestamp','$jobname','9')")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),print_r($mysqlcon->errorInfo()),"\n";}else{return $jobid=$mysqlcon->lastInsertId();}}function check_shutdown($timezone){if(!is_file(substr(__DIR__,0,-4).'logs/pid')){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Received signal to stop. Shutting down...\n";exit;}}check_db($mysqlcon,$lang,$dbname,$timezone,$currvers);echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Connect to TS3 Server (Address: \"",$ts['host'],"\" Voice-Port: \"",$ts['voice'],"\" Query-Port: \"",$ts['query'],"\")...";try{$ts3=TeamSpeak3::factory("serverquery://".$ts['user'].":".$ts['pass']."@".$ts['host'].":".$ts['query']."/?server_port=".$ts['voice']."&blocking=0");echo " [done]\n";try{usleep($slowmode);$ts3->selfUpdate(array('client_nickname'=>$queryname));}catch(Exception $e){try{usleep($slowmode);$ts3->selfUpdate(array('client_nickname'=>$queryname2));}catch(Exception $e){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),$lang['error'],$e->getCode(),': ',$e->getMessage(),"\n";}}echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Join to specified Channel...";usleep($slowmode);$whoami=$ts3->whoami();if($defchid!=0){try{usleep($slowmode);$ts3->clientMove($whoami['client_id'],$defchid);echo " [done]\n";}catch(Exception $e){if($e->getCode()!=770){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),$lang['error'],$e->getCode(),': ',$e->getMessage(),"\n";}else{echo " [done]\n";}}}else{echo " no Channel defined\n";}echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Bot starts now his work!\n";$looptime=1;while(1){if($looptime<1){$loopsleep=1 - $looptime;check_shutdown($timezone);usleep($loopsleep);}$starttime=microtime(true);check_shutdown($timezone);usleep($slowmode);$ts3->clientListReset();$allclients=$ts3->clientList();check_shutdown($timezone);usleep($slowmode);$ts3->serverInfoReset();$serverinfo=$ts3->serverInfo();if($defchid!=0){try{usleep($slowmode);$ts3->clientMove($whoami['client_id'],$defchid);}catch(Exception $e){}}$jobid=log_mysql('calc_user',$mysqlcon,$timezone);calc_user($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$showgen,$update,$grouptime,$boostarr,$resetbydbchange,$msgtouser,$uniqueid,$updateinfotime,$currvers,$substridle,$exceptuuid,$exceptgroup,$allclients);check_shutdown($timezone);usleep($slowmode);$jobid=log_mysql('get_avatars',$mysqlcon,$timezone);get_avatars($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone);check_shutdown($timezone);usleep($slowmode);$jobid=log_mysql('update_groups',$mysqlcon,$timezone);update_groups($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$serverinfo);check_shutdown($timezone);usleep($slowmode);$jobid=log_mysql('calc_serverstats',$mysqlcon,$timezone);calc_serverstats($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$serverinfo,$substridle,$grouptime);check_shutdown($timezone);usleep($slowmode);$jobid=log_mysql('calc_userstats',$mysqlcon,$timezone);calc_userstats($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone);check_shutdown($timezone);usleep($slowmode);$jobid=log_mysql('clean',$mysqlcon,$timezone);clean($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$cleanclients,$cleanperiod);$looptime=microtime(true)- $starttime;}}catch(Exception $e){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),$lang['error'].$e->getCode().': '.$e->getMessage(),"\n";$offline_status=array(110,257,258,1024,1026,1031,1032,1033,1034,1280,1793);if(in_array($e->getCode(),$offline_status)){if($mysqlcon->exec("UPDATE $dbname.stats_server SET server_status='0'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),$lang['error'],print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}}$sqlmsg.=$e->getCode().': '.$e->getMessage();$sqlerr++;}?> \ No newline at end of file diff --git a/jobs/calc_serverstats.php b/jobs/calc_serverstats.php index 0016f59..b201726 100644 --- a/jobs/calc_serverstats.php +++ b/jobs/calc_serverstats.php @@ -1,317 +1 @@ -query("SELECT uuid,count,idle,platform,nation FROM $dbname.user")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 1:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $uuids = $uuids->fetchAll(); - foreach($uuids as $uuid) { - $sqlhis[$uuid['uuid']] = array( - "uuid" => $uuid['uuid'], - "count" => $uuid['count'], - "idle" => $uuid['idle'] - ); - if ($uuid['nation']!=NULL) $country_string .= $uuid['nation'] . ' '; - if ($uuid['platform']!=NULL) { - $uuid_platform = str_replace(' ','',$uuid['platform']); - $platform_string .= $uuid_platform . ' '; - } - $total_online_time = $total_online_time + $uuid['count']; - $total_active_time = $total_active_time + $uuid['count'] - $uuid['idle']; - $total_inactive_time = $total_inactive_time + $uuid['idle']; - } - - // Event Handling each 6 hours - // Duplicate users Table in snapshot Table - if(($max_entry_usersnap = $mysqlcon->query("SELECT MAX(DISTINCT(timestamp)) AS timestamp FROM $dbname.user_snapshot")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 2:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $max_entry_usersnap = $max_entry_usersnap->fetch(PDO::FETCH_ASSOC); - $diff_max_usersnap = $nowtime - $max_entry_usersnap['timestamp']; - if($diff_max_usersnap > 21600) { - if(isset($sqlhis)) { - $allinsertsnap = ''; - foreach ($sqlhis as $insertsnap) { - $allinsertsnap = $allinsertsnap . "('$nowtime','" . $insertsnap['uuid'] . "', '" . $insertsnap['count'] . "', '" . $insertsnap['idle'] . "'),"; - } - $allinsertsnap = substr($allinsertsnap, 0, -1); - if ($allinsertsnap != '') { - if($mysqlcon->exec("INSERT INTO $dbname.user_snapshot (timestamp, uuid, count, idle) VALUES $allinsertsnap") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 3:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - } - } - //Delete old Entries in user_snapshot - $deletiontime = $nowtime - 2678400; - if($mysqlcon->exec("DELETE FROM $dbname.user_snapshot WHERE timestamp=$deletiontime") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 4:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - } - - if($serverinfo['virtualserver_status']=="online") { - $server_status = 1; - } elseif($serverinfo['virtualserver_status']=="offline") { - $server_status = 2; - } elseif($serverinfo['virtualserver_status']=="virtual online") { - $server_status = 3; - } else { - $server_status = 4; - } - - // Calc Values for server stats - if(($entry_snapshot_count = $mysqlcon->query("SELECT count(DISTINCT(timestamp)) AS timestamp FROM $dbname.user_snapshot")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 5:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $entry_snapshot_count = $entry_snapshot_count->fetch(PDO::FETCH_ASSOC); - if ($entry_snapshot_count['timestamp'] > 27) { - // Calc total_online_week - if(($snapshot_count_week = $mysqlcon->query("SELECT (SELECT SUM(count) FROM $dbname.user_snapshot WHERE timestamp=(SELECT MAX(s2.timestamp) AS value1 FROM (SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 28) AS s2, $dbname.user_snapshot AS s1 WHERE s1.timestamp=s2.timestamp)) - (SELECT SUM(count) FROM $dbname.user_snapshot WHERE timestamp=(SELECT MIN(s2.timestamp) AS value2 FROM (SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 28) AS s2, $dbname.user_snapshot AS s1 WHERE s1.timestamp=s2.timestamp)) AS count")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 6:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $snapshot_count_week = $snapshot_count_week->fetch(PDO::FETCH_ASSOC); - $total_online_week = $snapshot_count_week['count']; - } else { - $total_online_week = 0; - } - if ($entry_snapshot_count['timestamp'] > 119) { - // Calc total_online_month - if(($snapshot_count_month = $mysqlcon->query("SELECT (SELECT SUM(count) FROM $dbname.user_snapshot WHERE timestamp=(SELECT MAX(s2.timestamp) AS value1 FROM (SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 120) AS s2, $dbname.user_snapshot AS s1 WHERE s1.timestamp=s2.timestamp)) - (SELECT SUM(count) FROM $dbname.user_snapshot WHERE timestamp=(SELECT MIN(s2.timestamp) AS value2 FROM (SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 120) AS s2, $dbname.user_snapshot AS s1 WHERE s1.timestamp=s2.timestamp)) AS count")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 7:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $snapshot_count_month = $snapshot_count_month->fetch(PDO::FETCH_ASSOC); - $total_online_month = $snapshot_count_month['count']; - } else { - $total_online_month = 0; - } - - $country_array = array_count_values(str_word_count($country_string, 1)); - arsort($country_array); - $country_counter = 0; - $country_nation_other = 0; - $country_nation_name_2 = 0; - $country_nation_name_3 = 0; - $country_nation_name_4 = 0; - $country_nation_name_5 = 0; - $country_nation_2 = 0; - $country_nation_3 = 0; - $country_nation_4 = 0; - $country_nation_5 = 0; - foreach ($country_array as $k => $v) { - $country_counter++; - if ($country_counter == 1) { - $country_nation_name_1 = $k; - $country_nation_1 = $v; - } elseif ($country_counter == 2) { - $country_nation_name_2 = $k; - $country_nation_2 = $v; - } elseif ($country_counter == 3) { - $country_nation_name_3 = $k; - $country_nation_3 = $v; - } elseif ($country_counter == 4) { - $country_nation_name_4 = $k; - $country_nation_4 = $v; - } elseif ($country_counter == 5) { - $country_nation_name_5 = $k; - $country_nation_5 = $v; - } else { - $country_nation_other = $country_nation_other + $v; - } - } - - $platform_array = array_count_values(str_word_count($platform_string, 1)); - $platform_other = 0; - $platform_1 = 0; - $platform_2 = 0; - $platform_3 = 0; - $platform_4 = 0; - $platform_5 = 0; - foreach ($platform_array as $k => $v) { - if ($k == "Windows") { - $platform_1 = $v; - } elseif ($k == "iOS") { - $platform_2 = $v; - } elseif ($k == "Linux") { - $platform_3 = $v; - } elseif ($k == "Android") { - $platform_4 = $v; - } elseif ($k == "OSX") { - $platform_5 = $v; - } else { - $platform_other = $platform_other + $v; - } - } - - $version_1 = 0; - $version_2 = 0; - $version_3 = 0; - $version_4 = 0; - $version_5 = 0; - $version_name_1 = 0; - $version_name_2 = 0; - $version_name_3 = 0; - $version_name_4 = 0; - $version_name_5 = 0; - $client_versions = $mysqlcon->query("SELECT version, COUNT(version) AS count FROM $dbname.user GROUP BY version ORDER BY count DESC LIMIT 5")->fetchAll(PDO::FETCH_ASSOC); - $count_version = 0; - $version_other = $mysqlcon->query("SELECT COUNT(version) AS count FROM $dbname.user ORDER BY count DESC")->fetchAll(PDO::FETCH_ASSOC); - - foreach($client_versions as $version) { - $count_version++; - if ($count_version == 1) { - $version_1 = $version['count']; - $version_name_1 = $version['version']; - } elseif ($count_version == 2) { - $version_2 = $version['count']; - $version_name_2 = $version['version']; - } elseif ($count_version == 3) { - $version_3 = $version['count']; - $version_name_3 = $version['version']; - } elseif ($count_version == 4) { - $version_4 = $version['count']; - $version_name_4 = $version['version']; - } elseif ($count_version == 5) { - $version_5 = $version['count']; - $version_name_5 = $version['version']; - } - } - $version_other = $version_other[0]['count'] - $version_1 + $version_2 + $version_3 + $version_4 + $version_5; - - $total_user = count($sqlhis); - $server_used_slots = $serverinfo['virtualserver_clientsonline'] - $serverinfo['virtualserver_queryclientsonline']; - $server_free_slots = $serverinfo['virtualserver_maxclients'] - $server_used_slots; - $server_channel_amount = $serverinfo['virtualserver_channelsonline']; - $server_ping = $serverinfo['virtualserver_total_ping']; - $server_packet_loss = $serverinfo['virtualserver_total_packetloss_total']; - $server_bytes_down = $serverinfo['connection_bytes_received_total']; - $server_bytes_up = $serverinfo['connection_bytes_sent_total']; - $server_uptime = $serverinfo['virtualserver_uptime']; - $server_id = $serverinfo['virtualserver_id']; - $server_name = $serverinfo['virtualserver_name']; - $server_pass = $serverinfo['virtualserver_flag_password']; - $server_creation_date = $serverinfo['virtualserver_created']; - $server_platform = $serverinfo['virtualserver_platform']; - $server_weblist = $serverinfo['virtualserver_weblist_enabled']; - $server_version = $serverinfo['virtualserver_version']; - - if($mysqlcon->exec("UPDATE $dbname.stats_server SET total_user='$total_user', total_online_time='$total_online_time', total_online_month='$total_online_month', total_online_week='$total_online_week', total_active_time='$total_active_time', total_inactive_time='$total_inactive_time', country_nation_name_1='$country_nation_name_1', country_nation_name_2='$country_nation_name_2', country_nation_name_3='$country_nation_name_3', country_nation_name_4='$country_nation_name_4', country_nation_name_5='$country_nation_name_5', country_nation_1='$country_nation_1', country_nation_2='$country_nation_2', country_nation_3='$country_nation_3', country_nation_4='$country_nation_4', country_nation_5='$country_nation_5', country_nation_other='$country_nation_other', platform_1='$platform_1', platform_2='$platform_2', platform_3='$platform_3', platform_4='$platform_4', platform_5='$platform_5', platform_other='$platform_other', version_name_1='$version_name_1', version_name_2='$version_name_2', version_name_3='$version_name_3', version_name_4='$version_name_4', version_name_5='$version_name_5', version_1='$version_1', version_2='$version_2', version_3='$version_3', version_4='$version_4', version_5='$version_5', version_other='$version_other', version_name_1='$version_name_1', server_status='$server_status', server_free_slots='$server_free_slots', server_used_slots='$server_used_slots', server_channel_amount='$server_channel_amount', server_ping='$server_ping', server_packet_loss='$server_packet_loss', server_bytes_down='$server_bytes_down', server_bytes_up='$server_bytes_up', server_uptime='$server_uptime', server_id='$server_id', server_name='$server_name', server_pass='$server_pass', server_creation_date='$server_creation_date', server_platform='$server_platform', server_weblist='$server_weblist', server_version='$server_version'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 8:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - - // Stats for Server Usage - if(($max_entry_serverusage = $mysqlcon->query("SELECT MAX(timestamp) AS timestamp FROM $dbname.server_usage")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 9:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlerr++; - } - $max_entry_serverusage = $max_entry_serverusage->fetch(PDO::FETCH_ASSOC); - $diff_max_serverusage = $nowtime - $max_entry_serverusage['timestamp']; - if ($max_entry_serverusage['timestamp'] == 0 || $diff_max_serverusage > 899) { // every 15 mins - if($mysqlcon->exec("INSERT INTO $dbname.server_usage (timestamp, clients, channel) VALUES ($nowtime,$server_used_slots,$server_channel_amount)") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 10:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - } - - //Calc time next rankup - $upnextuptime = $nowtime - 86400; - if(($uuidsoff = $mysqlcon->query("SELECT uuid,idle,count FROM $dbname.user WHERE online<>1 AND lastseen>$upnextuptime")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 11:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - if ($uuidsoff->rowCount() != 0) { - $uuidsoff = $uuidsoff->fetchAll(PDO::FETCH_ASSOC); - foreach($uuidsoff as $uuid) { - $idle = $uuid['idle']; - $count = $uuid['count']; - if ($substridle == 1) { - $activetime = $count - $idle; - $dtF = new DateTime("@0"); - $dtT = new DateTime("@$activetime"); - } else { - $activetime = $count; - $dtF = new DateTime("@0"); - $dtT = new DateTime("@$count"); - } - foreach ($grouptime as $time => $groupid) { - if ($activetime > $time) { - $nextup = 0; - } else { - $nextup = $time - $activetime; - } - } - $updatenextup[] = array( - "uuid" => $uuid['uuid'], - "nextup" => $nextup - ); - } - } - - if (isset($updatenextup)) { - $allupdateuuid = ''; - $allupdatenextup = ''; - foreach ($updatenextup as $updatedata) { - $allupdateuuid = $allupdateuuid . "'" . $updatedata['uuid'] . "',"; - $allupdatenextup = $allupdatenextup . "WHEN '" . $updatedata['uuid'] . "' THEN '" . $updatedata['nextup'] . "' "; - } - $allupdateuuid = substr($allupdateuuid, 0, -1); - if ($mysqlcon->exec("UPDATE $dbname.user set nextup = CASE uuid $allupdatenextup END WHERE uuid IN ($allupdateuuid)") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 12:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - } - - //Calc Rank - if($mysqlcon->exec("SET @a:=0") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 13:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - if($mysqlcon->exec("UPDATE $dbname.user u INNER JOIN (SELECT @a:=@a+1 nr,uuid FROM $dbname.user WHERE except!=1 ORDER BY count DESC) s USING (uuid) SET u.rank=s.nr") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 14:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - - $buildtime = microtime(true) - $starttime; - - if ($sqlerr == 0) { - if($mysqlcon->exec("UPDATE $dbname.job_log SET status='0', runtime='$buildtime' WHERE id='$jobid'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 15:",print_r($mysqlcon->errorInfo()),"\n"; - } - } else { - if($mysqlcon->exec("UPDATE $dbname.job_log SET status='1', err_msg='$sqlmsg', runtime='$buildtime' WHERE id='$jobid'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 16:",print_r($mysqlcon->errorInfo()),"\n"; - } - } -} -?> \ No newline at end of file +query("SELECT uuid,count,idle,platform,nation FROM $dbname.user"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 1:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$uuids=$uuids->fetchAll();foreach($uuids as $uuid){$sqlhis[$uuid['uuid']]=array("uuid"=>$uuid['uuid'],"count"=>$uuid['count'],"idle"=>$uuid['idle']);if($uuid['nation']!=NULL)$country_string.=$uuid['nation'].' ';if($uuid['platform']!=NULL){$uuid_platform=str_replace(' ','',$uuid['platform']);$platform_string.=$uuid_platform.' ';}$total_online_time=$total_online_time + $uuid['count'];$total_active_time=$total_active_time + $uuid['count'] - $uuid['idle'];$total_inactive_time=$total_inactive_time + $uuid['idle'];}if(($max_entry_usersnap=$mysqlcon->query("SELECT MAX(DISTINCT(timestamp)) AS timestamp FROM $dbname.user_snapshot"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 2:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$max_entry_usersnap=$max_entry_usersnap->fetch(PDO::FETCH_ASSOC);$diff_max_usersnap=$nowtime - $max_entry_usersnap['timestamp'];if($diff_max_usersnap>21600){if(isset($sqlhis)){$allinsertsnap='';foreach($sqlhis as $insertsnap){$allinsertsnap=$allinsertsnap."('$nowtime','".$insertsnap['uuid']."', '".$insertsnap['count']."', '".$insertsnap['idle']."'),";}$allinsertsnap=substr($allinsertsnap,0,-1);if($allinsertsnap!=''){if($mysqlcon->exec("INSERT INTO $dbname.user_snapshot (timestamp, uuid, count, idle) VALUES $allinsertsnap")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 3:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}}}$deletiontime=$nowtime - 2678400;if($mysqlcon->exec("DELETE FROM $dbname.user_snapshot WHERE timestamp=$deletiontime")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 4:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}}if($serverinfo['virtualserver_status']=="online"){$server_status=1;}elseif($serverinfo['virtualserver_status']=="offline"){$server_status=2;}elseif($serverinfo['virtualserver_status']=="virtual online"){$server_status=3;}else{$server_status=4;}if(($entry_snapshot_count=$mysqlcon->query("SELECT count(DISTINCT(timestamp)) AS timestamp FROM $dbname.user_snapshot"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 5:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$entry_snapshot_count=$entry_snapshot_count->fetch(PDO::FETCH_ASSOC);if($entry_snapshot_count['timestamp']>27){if(($snapshot_count_week=$mysqlcon->query("SELECT (SELECT SUM(count) FROM $dbname.user_snapshot WHERE timestamp=(SELECT MAX(s2.timestamp) AS value1 FROM (SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 28) AS s2, $dbname.user_snapshot AS s1 WHERE s1.timestamp=s2.timestamp)) - (SELECT SUM(count) FROM $dbname.user_snapshot WHERE timestamp=(SELECT MIN(s2.timestamp) AS value2 FROM (SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 28) AS s2, $dbname.user_snapshot AS s1 WHERE s1.timestamp=s2.timestamp)) AS count"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 6:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$snapshot_count_week=$snapshot_count_week->fetch(PDO::FETCH_ASSOC);$total_online_week=$snapshot_count_week['count'];}else{$total_online_week=0;}if($entry_snapshot_count['timestamp']>119){if(($snapshot_count_month=$mysqlcon->query("SELECT (SELECT SUM(count) FROM $dbname.user_snapshot WHERE timestamp=(SELECT MAX(s2.timestamp) AS value1 FROM (SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 120) AS s2, $dbname.user_snapshot AS s1 WHERE s1.timestamp=s2.timestamp)) - (SELECT SUM(count) FROM $dbname.user_snapshot WHERE timestamp=(SELECT MIN(s2.timestamp) AS value2 FROM (SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 120) AS s2, $dbname.user_snapshot AS s1 WHERE s1.timestamp=s2.timestamp)) AS count"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 7:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$snapshot_count_month=$snapshot_count_month->fetch(PDO::FETCH_ASSOC);$total_online_month=$snapshot_count_month['count'];}else{$total_online_month=0;}$country_array=array_count_values(str_word_count($country_string,1));arsort($country_array);$country_counter=0;$country_nation_other=0;$country_nation_name_2=0;$country_nation_name_3=0;$country_nation_name_4=0;$country_nation_name_5=0;$country_nation_2=0;$country_nation_3=0;$country_nation_4=0;$country_nation_5=0;foreach($country_array as $k=>$v){$country_counter++;if($country_counter==1){$country_nation_name_1=$k;$country_nation_1=$v;}elseif($country_counter==2){$country_nation_name_2=$k;$country_nation_2=$v;}elseif($country_counter==3){$country_nation_name_3=$k;$country_nation_3=$v;}elseif($country_counter==4){$country_nation_name_4=$k;$country_nation_4=$v;}elseif($country_counter==5){$country_nation_name_5=$k;$country_nation_5=$v;}else{$country_nation_other=$country_nation_other + $v;}}$platform_array=array_count_values(str_word_count($platform_string,1));$platform_other=0;$platform_1=0;$platform_2=0;$platform_3=0;$platform_4=0;$platform_5=0;foreach($platform_array as $k=>$v){if($k=="Windows"){$platform_1=$v;}elseif($k=="iOS"){$platform_2=$v;}elseif($k=="Linux"){$platform_3=$v;}elseif($k=="Android"){$platform_4=$v;}elseif($k=="OSX"){$platform_5=$v;}else{$platform_other=$platform_other + $v;}}$version_1=0;$version_2=0;$version_3=0;$version_4=0;$version_5=0;$version_name_1=0;$version_name_2=0;$version_name_3=0;$version_name_4=0;$version_name_5=0;$client_versions=$mysqlcon->query("SELECT version, COUNT(version) AS count FROM $dbname.user GROUP BY version ORDER BY count DESC LIMIT 5")->fetchAll(PDO::FETCH_ASSOC);$count_version=0;$version_other=$mysqlcon->query("SELECT COUNT(version) AS count FROM $dbname.user ORDER BY count DESC")->fetchAll(PDO::FETCH_ASSOC);foreach($client_versions as $version){$count_version++;if($count_version==1){$version_1=$version['count'];$version_name_1=$version['version'];}elseif($count_version==2){$version_2=$version['count'];$version_name_2=$version['version'];}elseif($count_version==3){$version_3=$version['count'];$version_name_3=$version['version'];}elseif($count_version==4){$version_4=$version['count'];$version_name_4=$version['version'];}elseif($count_version==5){$version_5=$version['count'];$version_name_5=$version['version'];}}$version_other=$version_other[0]['count'] - $version_1 + $version_2 + $version_3 + $version_4 + $version_5;$total_user=count($sqlhis);$server_used_slots=$serverinfo['virtualserver_clientsonline'] - $serverinfo['virtualserver_queryclientsonline'];$server_free_slots=$serverinfo['virtualserver_maxclients'] - $server_used_slots;$server_channel_amount=$serverinfo['virtualserver_channelsonline'];$server_ping=$serverinfo['virtualserver_total_ping'];$server_packet_loss=$serverinfo['virtualserver_total_packetloss_total'];$server_bytes_down=$serverinfo['connection_bytes_received_total'];$server_bytes_up=$serverinfo['connection_bytes_sent_total'];$server_uptime=$serverinfo['virtualserver_uptime'];$server_id=$serverinfo['virtualserver_id'];$server_name=str_replace('\\','\\\\',htmlspecialchars($serverinfo['virtualserver_name'],ENT_QUOTES));$server_pass=$serverinfo['virtualserver_flag_password'];$server_creation_date=$serverinfo['virtualserver_created'];$server_platform=$serverinfo['virtualserver_platform'];$server_weblist=$serverinfo['virtualserver_weblist_enabled'];$server_version=$serverinfo['virtualserver_version'];if($mysqlcon->exec("UPDATE $dbname.stats_server SET total_user='$total_user', total_online_time='$total_online_time', total_online_month='$total_online_month', total_online_week='$total_online_week', total_active_time='$total_active_time', total_inactive_time='$total_inactive_time', country_nation_name_1='$country_nation_name_1', country_nation_name_2='$country_nation_name_2', country_nation_name_3='$country_nation_name_3', country_nation_name_4='$country_nation_name_4', country_nation_name_5='$country_nation_name_5', country_nation_1='$country_nation_1', country_nation_2='$country_nation_2', country_nation_3='$country_nation_3', country_nation_4='$country_nation_4', country_nation_5='$country_nation_5', country_nation_other='$country_nation_other', platform_1='$platform_1', platform_2='$platform_2', platform_3='$platform_3', platform_4='$platform_4', platform_5='$platform_5', platform_other='$platform_other', version_name_1='$version_name_1', version_name_2='$version_name_2', version_name_3='$version_name_3', version_name_4='$version_name_4', version_name_5='$version_name_5', version_1='$version_1', version_2='$version_2', version_3='$version_3', version_4='$version_4', version_5='$version_5', version_other='$version_other', version_name_1='$version_name_1', server_status='$server_status', server_free_slots='$server_free_slots', server_used_slots='$server_used_slots', server_channel_amount='$server_channel_amount', server_ping='$server_ping', server_packet_loss='$server_packet_loss', server_bytes_down='$server_bytes_down', server_bytes_up='$server_bytes_up', server_uptime='$server_uptime', server_id='$server_id', server_name='$server_name', server_pass='$server_pass', server_creation_date='$server_creation_date', server_platform='$server_platform', server_weblist='$server_weblist', server_version='$server_version'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 8:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}if(($max_entry_serverusage=$mysqlcon->query("SELECT MAX(timestamp) AS timestamp FROM $dbname.server_usage"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 9:",print_r($mysqlcon->errorInfo()),"\n";$sqlerr++;}$max_entry_serverusage=$max_entry_serverusage->fetch(PDO::FETCH_ASSOC);$diff_max_serverusage=$nowtime - $max_entry_serverusage['timestamp'];if($max_entry_serverusage['timestamp']==0||$diff_max_serverusage>899){if($mysqlcon->exec("INSERT INTO $dbname.server_usage (timestamp, clients, channel) VALUES ($nowtime,$server_used_slots,$server_channel_amount)")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 10:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}}$upnextuptime=$nowtime - 86400;if(($uuidsoff=$mysqlcon->query("SELECT uuid,idle,count FROM $dbname.user WHERE online<>1 AND lastseen>$upnextuptime"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 11:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}if($uuidsoff->rowCount()!=0){$uuidsoff=$uuidsoff->fetchAll(PDO::FETCH_ASSOC);foreach($uuidsoff as $uuid){$idle=$uuid['idle'];$count=$uuid['count'];if($substridle==1){$activetime=$count - $idle;$dtF=new DateTime("@0");$dtT=new DateTime("@$activetime");}else{$activetime=$count;$dtF=new DateTime("@0");$dtT=new DateTime("@$count");}foreach($grouptime as $time=>$groupid){if($activetime>$time){$nextup=0;}else{$nextup=$time - $activetime;}}$updatenextup[]=array("uuid"=>$uuid['uuid'],"nextup"=>$nextup);}}if(isset($updatenextup)){$allupdateuuid='';$allupdatenextup='';foreach($updatenextup as $updatedata){$allupdateuuid=$allupdateuuid."'".$updatedata['uuid']."',";$allupdatenextup=$allupdatenextup."WHEN '".$updatedata['uuid']."' THEN '".$updatedata['nextup']."' ";}$allupdateuuid=substr($allupdateuuid,0,-1);if($mysqlcon->exec("UPDATE $dbname.user set nextup = CASE uuid $allupdatenextup END WHERE uuid IN ($allupdateuuid)")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 12:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}}if($mysqlcon->exec("SET @a:=0")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 13:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}if($mysqlcon->exec("UPDATE $dbname.user u INNER JOIN (SELECT @a:=@a+1 nr,uuid FROM $dbname.user WHERE except!=1 ORDER BY count DESC) s USING (uuid) SET u.rank=s.nr")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 14:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$buildtime=microtime(true)- $starttime;if($sqlerr==0){if($mysqlcon->exec("UPDATE $dbname.job_log SET status='0', runtime='$buildtime' WHERE id='$jobid'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 15:",print_r($mysqlcon->errorInfo()),"\n";}}else{if($mysqlcon->exec("UPDATE $dbname.job_log SET status='1', err_msg='$sqlmsg', runtime='$buildtime' WHERE id='$jobid'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_serverstats 16:",print_r($mysqlcon->errorInfo()),"\n";}}}?> \ No newline at end of file diff --git a/jobs/calc_user.php b/jobs/calc_user.php index 9d4b05d..9f292c4 100644 --- a/jobs/calc_user.php +++ b/jobs/calc_user.php @@ -1,357 +1 @@ -query("SELECT * FROM $dbname.job_check WHERE job_name='check_update'")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 1:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $lastupdate = $lastupdate->fetchAll(); - if ($lastupdate[0]['timestamp'] < $updatetime) { - set_error_handler(function() { }); - $newversion = file_get_contents('http://ts-n.net/ranksystem/version'); - restore_error_handler(); - if (substr($newversion, 0, 4) != substr($currvers, 0, 4) && $newversion != '') { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),$lang['upinf'],"\n"; - foreach ($uniqueid as $clientid) { - usleep($slowmode); - try { - $ts3->clientGetByUid($clientid)->message(sprintf($lang['upmsg'], $currvers, $newversion)); - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['upusrinf'], $clientid),"\n"; - } - catch (Exception $e) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['upusrerr'], $clientid),"\n"; - $sqlmsg .= $e->getCode() . ': ' . $e->getMessage(); - $sqlerr++; - } - } - } - if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp=$nowtime WHERE job_name='check_update'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 3:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - } - } - - if(($dbdata = $mysqlcon->query("SELECT * FROM $dbname.job_check WHERE job_name='calc_user_lastscan'")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 4:",print_r($mysqlcon->errorInfo()),"\n"; - exit; - } - $lastscanarr = $dbdata->fetchAll(); - $lastscan = $lastscanarr[0]['timestamp']; - if($lastscan < ($nowtime - 86400)) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Much time gone since last scan.. reset time difference to zero.\n"; - $lastscan = $nowtime; - } - if ($dbdata->rowCount() != 0) { - if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$nowtime' WHERE job_name='calc_user_lastscan'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 5:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - if(($dbuserdata = $mysqlcon->query("SELECT uuid,cldbid,count,grpid,nextup,idle,boosttime FROM $dbname.user")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 6:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $uuids = $dbuserdata->fetchAll(); - foreach($uuids as $uuid) { - $sqlhis[$uuid['uuid']] = array( - "uuid" => $uuid['uuid'], - "cldbid" => $uuid['cldbid'], - "count" => $uuid['count'], - "grpid" => $uuid['grpid'], - "nextup" => $uuid['nextup'], - "idle" => $uuid['idle'], - "boosttime" => $uuid['boosttime'] - ); - $uidarr[] = $uuid['uuid']; - } - } - unset($uuids); - - usleep($slowmode); - $yetonline[] = ''; - $insertdata = ''; - if(empty($grouptime)) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 7:",$lang['wiconferr'],"\n"; - exit; - } - krsort($grouptime); - $sumentries = 0; - $boosttime = 0; - $nextupforinsert = key($grouptime) - 1; - - foreach ($allclients as $client) { - $sumentries++; - $cldbid = $client['client_database_id']; - $ip = ip2long($client['connection_client_ip']); - $name = str_replace('\\', '\\\\', htmlspecialchars($client['client_nickname'], ENT_QUOTES)); - $uid = htmlspecialchars($client['client_unique_identifier'], ENT_QUOTES); - $cldgroup = $client['client_servergroups']; - $sgroups = explode(",", $cldgroup); - $platform=$client['client_platform']; - $nation=$client['client_country']; - $version=$client['client_version']; - $firstconnect=$client['client_created']; - if (!in_array($uid, $yetonline) && $client['client_version'] != "ServerQuery") { - $clientidle = floor($client['client_idle_time'] / 1000); - $yetonline[] = $uid; - if(in_array($uid, $exceptuuid) || array_intersect($sgroups, $exceptgroup)) { - $except = 1; - } else { - $except = 0; - } - if (in_array($uid, $uidarr)) { - $idle = $sqlhis[$uid]['idle'] + $clientidle; - $grpid = $sqlhis[$uid]['grpid']; - $nextup = $sqlhis[$uid]['nextup']; - if ($sqlhis[$uid]['cldbid'] != $cldbid && $resetbydbchange == 1) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['changedbid'], $name, $uid, $cldbid, $sqlhis[$uid]['cldbid']),"\n"; - $count = 1; - $idle = 0; - } else { - $hitboost = 0; - if($boostarr!=0) { - foreach($boostarr as $boost) { - if(in_array($boost['group'], $sgroups)) { - $boostfactor = $boost['factor']; - $hitboost = 1; - $boosttime = $sqlhis[$uid]['boosttime']; - if($sqlhis[$uid]['boosttime']==0) { - $boosttime = $nowtime; - } else { - if ($nowtime > $sqlhis[$uid]['boosttime'] + $boost['time']) { - usleep($slowmode); - try { - $ts3->serverGroupClientDel($boost['group'], $cldbid); - $boosttime = 0; - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['sgrprm'], $sqlhis[$uid]['grpid'], $name, $uid, $cldbid),"\n"; - } - catch (Exception $e) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 8:",sprintf($lang['sgrprerr'], $name, $uid, $cldbid),"\n"; - $sqlmsg .= $e->getCode() . ': ' . $e->getMessage(); - $sqlerr++; - } - } - } - $count = ($nowtime - $lastscan) * $boost['factor'] + $sqlhis[$uid]['count']; - if ($clientidle > ($nowtime - $lastscan)) { - $idle = ($nowtime - $lastscan) * $boost['factor'] + $sqlhis[$uid]['idle']; - } - } - } - } - if($boostarr == 0 or $hitboost == 0) { - $count = $nowtime - $lastscan + $sqlhis[$uid]['count']; - if ($clientidle > ($nowtime - $lastscan)) { - $idle = $nowtime - $lastscan + $sqlhis[$uid]['idle']; - } - } - } - $dtF = new DateTime("@0"); - if ($substridle == 1) { - $activetime = $count - $idle; - } else { - $activetime = $count; - } - $dtT = new DateTime("@$activetime"); - foreach ($grouptime as $time => $groupid) { - if (in_array($groupid, $sgroups)) { - $grpid = $groupid; - break; - } - } - $grpcount=0; - foreach ($grouptime as $time => $groupid) { - $grpcount++; - if ($activetime > $time && !in_array($uid, $exceptuuid) && !array_intersect($sgroups, $exceptgroup)) { - if ($sqlhis[$uid]['grpid'] != $groupid) { - if ($sqlhis[$uid]['grpid'] != 0 && in_array($sqlhis[$uid]['grpid'], $sgroups)) { - usleep($slowmode); - try { - $ts3->serverGroupClientDel($sqlhis[$uid]['grpid'], $cldbid); - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['sgrprm'], $sqlhis[$uid]['grpid'], $name, $uid, $cldbid),"\n"; - } - catch (Exception $e) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 9:",sprintf($lang['sgrprerr'], $name, $uid, $cldbid),"\n"; - $sqlmsg .= $e->getCode() . ': ' . $e->getMessage(); - $sqlerr++; - } - } - if (!in_array($groupid, $sgroups)) { - usleep($slowmode); - try { - $ts3->serverGroupClientAdd($groupid, $cldbid); - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['sgrpadd'], $groupid, $name, $uid, $cldbid),"\n"; - } - catch (Exception $e) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 10:",sprintf($lang['sgrprerr'], $name, $uid, $cldbid),"\n"; - $sqlmsg .= $e->getCode() . ': ' . $e->getMessage(); - $sqlerr++; - } - } - $grpid = $groupid; - if ($msgtouser == 1) { - usleep($slowmode); - $days = $dtF->diff($dtT)->format('%a'); - $hours = $dtF->diff($dtT)->format('%h'); - $mins = $dtF->diff($dtT)->format('%i'); - $secs = $dtF->diff($dtT)->format('%s'); - if ($substridle == 1) { - try { - $ts3->clientGetByUid($uid)->message(sprintf($lang['usermsgactive'], $days, $hours, $mins, $secs)); - } catch (Exception $e) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 11:",sprintf($lang['sgrprerr'], $name, $uid, $cldbid),"\n"; - $sqlmsg .= $e->getCode() . ': ' . $e->getMessage(); - $sqlerr++; - } - } else { - try { - $ts3->clientGetByUid($uid)->message(sprintf($lang['usermsgonline'], $days, $hours, $mins, $secs)); - } catch (Exception $e) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 12:",sprintf($lang['sgrprerr'], $name, $uid, $cldbid),"\n"; - $sqlmsg .= $e->getCode() . ': ' . $e->getMessage(); - $sqlerr++; - } - } - } - } - if($grpcount == 1) { - $nextup = 0; - } - break; - } else { - $nextup = $time - $activetime; - } - } - $updatedata[] = array( - "uuid" => $uid, - "cldbid" => $cldbid, - "count" => $count, - "ip" => $ip, - "name" => $name, - "lastseen" => $nowtime, - "grpid" => $grpid, - "nextup" => $nextup, - "idle" => $idle, - "cldgroup" => $cldgroup, - "boosttime" => $boosttime, - "platform" => $platform, - "nation" => $nation, - "version" => $version, - "except" => $except - ); - } else { - $grpid = '0'; - foreach ($grouptime as $time => $groupid) { - if (in_array($groupid, $sgroups)) { - $grpid = $groupid; - break; - } - } - $insertdata[] = array( - "uuid" => $uid, - "cldbid" => $cldbid, - "ip" => $ip, - "name" => $name, - "lastseen" => $nowtime, - "grpid" => $grpid, - "nextup" => $nextupforinsert, - "cldgroup" => $cldgroup, - "platform" => $platform, - "nation" => $nation, - "version" => $version, - "firstcon" => $firstconnect, - "except" => $except - ); - $uidarr[] = $uid; - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['adduser'], $name, $uid, $cldbid),"\n"; - } - } - } - - if($mysqlcon->exec("UPDATE $dbname.user SET online='0'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 13:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - - if ($insertdata != '') { - $allinsertdata = ''; - foreach ($insertdata as $insertarr) { - $allinsertdata = $allinsertdata . "('" . $insertarr['uuid'] . "', '" . $insertarr['cldbid'] . "', '1', '" . $insertarr['ip'] . "', '" . $insertarr['name'] . "', '" . $insertarr['lastseen'] . "', '" . $insertarr['grpid'] . "', '" . $insertarr['nextup'] . "', '" . $insertarr['cldgroup'] . "', '" . $insertarr['platform'] . "', '" . $insertarr['nation'] . "', '" . $insertarr['version'] . "', '" . $insertarr['firstcon'] . "', '" . $insertarr['except'] . "','1'),"; - } - $allinsertdata = substr($allinsertdata, 0, -1); - if ($allinsertdata != '') { - if($mysqlcon->exec("INSERT INTO $dbname.user (uuid, cldbid, count, ip, name, lastseen, grpid, nextup, cldgroup, platform, nation, version, firstcon, except, online) VALUES $allinsertdata") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 14:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - } - } - - unset($insertdata); - unset($allinsertdata); - if ($updatedata != 0) { - $allupdateuuid = ''; - $allupdatecldbid = ''; - $allupdatecount = ''; - $allupdateip = ''; - $allupdatename = ''; - $allupdatelastseen = ''; - $allupdategrpid = ''; - $allupdatenextup = ''; - $allupdateidle = ''; - $allupdatecldgroup = ''; - $allupdateboosttime = ''; - $allupdateplatform = ''; - $allupdatenation = ''; - $allupdateversion = ''; - $allupdateexcept = ''; - foreach ($updatedata as $updatearr) { - $allupdateuuid = $allupdateuuid . "'" . $updatearr['uuid'] . "',"; - $allupdatecldbid = $allupdatecldbid . "WHEN '" . $updatearr['uuid'] . "' THEN '" . $updatearr['cldbid'] . "' "; - $allupdatecount = $allupdatecount . "WHEN '" . $updatearr['uuid'] . "' THEN '" . $updatearr['count'] . "' "; - $allupdateip = $allupdateip . "WHEN '" . $updatearr['uuid'] . "' THEN '" . $updatearr['ip'] . "' "; - $allupdatename = $allupdatename . "WHEN '" . $updatearr['uuid'] . "' THEN '" . $updatearr['name'] . "' "; - $allupdatelastseen = $allupdatelastseen . "WHEN '" . $updatearr['uuid'] . "' THEN '" . $updatearr['lastseen'] . "' "; - $allupdategrpid = $allupdategrpid . "WHEN '" . $updatearr['uuid'] . "' THEN '" . $updatearr['grpid'] . "' "; - $allupdatenextup = $allupdatenextup . "WHEN '" . $updatearr['uuid'] . "' THEN '" . $updatearr['nextup'] . "' "; - $allupdateidle = $allupdateidle . "WHEN '" . $updatearr['uuid'] . "' THEN '" . $updatearr['idle'] . "' "; - $allupdatecldgroup = $allupdatecldgroup . "WHEN '" . $updatearr['uuid'] . "' THEN '" . $updatearr['cldgroup'] . "' "; - $allupdateboosttime = $allupdateboosttime . "WHEN '" . $updatearr['uuid'] . "' THEN '" . $updatearr['boosttime'] . "' "; - $allupdateplatform = $allupdateplatform . "WHEN '" . $updatearr['uuid'] . "' THEN '" . $updatearr['platform'] . "' "; - $allupdatenation = $allupdatenation . "WHEN '" . $updatearr['uuid'] . "' THEN '" . $updatearr['nation'] . "' "; - $allupdateversion = $allupdateversion . "WHEN '" . $updatearr['uuid'] . "' THEN '" . $updatearr['version'] . "' "; - $allupdateexcept = $allupdateexcept . "WHEN '" . $updatearr['uuid'] . "' THEN '" . $updatearr['except'] . "' "; - } - $allupdateuuid = substr($allupdateuuid, 0, -1); - if($mysqlcon->exec("UPDATE $dbname.user set cldbid = CASE uuid $allupdatecldbid END, count = CASE uuid $allupdatecount END, ip = CASE uuid $allupdateip END, name = CASE uuid $allupdatename END, lastseen = CASE uuid $allupdatelastseen END, grpid = CASE uuid $allupdategrpid END, nextup = CASE uuid $allupdatenextup END, idle = CASE uuid $allupdateidle END, cldgroup = CASE uuid $allupdatecldgroup END, boosttime = CASE uuid $allupdateboosttime END, platform = CASE uuid $allupdateplatform END, nation = CASE uuid $allupdatenation END, version = CASE uuid $allupdateversion END, except = CASE uuid $allupdateexcept END, online = 1 WHERE uuid IN ($allupdateuuid)") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 15:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - } - - $buildtime = microtime(true) - $starttime; - - if ($sqlerr == 0) { - if($mysqlcon->exec("UPDATE $dbname.job_log SET status='0', runtime='$buildtime' WHERE id='$jobid'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 16:",print_r($mysqlcon->errorInfo()),"\n"; - } - } else { - if($mysqlcon->exec("UPDATE $dbname.job_log SET status='1', err_msg='$sqlmsg', runtime='$buildtime' WHERE id='$jobid'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 17:",print_r($mysqlcon->errorInfo()),"\n"; - } - } -} -?> \ No newline at end of file +query("SELECT * FROM $dbname.job_check WHERE job_name='check_update'"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 1:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$lastupdate=$lastupdate->fetchAll();if($lastupdate[0]['timestamp']<$updatetime){set_error_handler(function(){});$newversion=file_get_contents('http://ts-n.net/ranksystem/version');restore_error_handler();if(substr($newversion,0,4)!=substr($currvers,0,4)&&$newversion!=''){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),$lang['upinf'],"\n";foreach($uniqueid as $clientid){check_shutdown($timezone);usleep($slowmode);try{$ts3->clientGetByUid($clientid)->message(sprintf($lang['upmsg'],$currvers,$newversion));echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['upusrinf'],$clientid),"\n";}catch(Exception $e){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['upusrerr'],$clientid),"\n";$sqlmsg.=$e->getCode().': '.$e->getMessage();$sqlerr++;}}}if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp=$nowtime WHERE job_name='check_update'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 3:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}}}if(($dbdata=$mysqlcon->query("SELECT * FROM $dbname.job_check WHERE job_name='calc_user_lastscan'"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 4:",print_r($mysqlcon->errorInfo()),"\n";exit;}$lastscanarr=$dbdata->fetchAll();$lastscan=$lastscanarr[0]['timestamp'];if($lastscan<($nowtime - 86400)){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Much time gone since last scan.. reset time difference to zero.\n";$lastscan=$nowtime;}if($dbdata->rowCount()!=0){if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$nowtime' WHERE job_name='calc_user_lastscan'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 5:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}if(($dbuserdata=$mysqlcon->query("SELECT uuid,cldbid,count,grpid,nextup,idle,boosttime FROM $dbname.user"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 6:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$uuids=$dbuserdata->fetchAll();foreach($uuids as $uuid){$sqlhis[$uuid['uuid']]=array("uuid"=>$uuid['uuid'],"cldbid"=>$uuid['cldbid'],"count"=>$uuid['count'],"grpid"=>$uuid['grpid'],"nextup"=>$uuid['nextup'],"idle"=>$uuid['idle'],"boosttime"=>$uuid['boosttime']);$uidarr[]=$uuid['uuid'];}}unset($uuids);check_shutdown($timezone);usleep($slowmode);$yetonline[]='';$insertdata='';if(empty($grouptime)){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 7:",$lang['wiconferr'],"\n";exit;}krsort($grouptime);$sumentries=0;$nextupforinsert=key($grouptime)- 1;foreach($allclients as $client){$sumentries++;$cldbid=$client['client_database_id'];$ip=ip2long($client['connection_client_ip']);$name=str_replace('\\','\\\\',htmlspecialchars($client['client_nickname'],ENT_QUOTES));$uid=htmlspecialchars($client['client_unique_identifier'],ENT_QUOTES);$cldgroup=$client['client_servergroups'];$sgroups=explode(",",$cldgroup);$platform=$client['client_platform'];$nation=$client['client_country'];$version=$client['client_version'];$firstconnect=$client['client_created'];if(!in_array($uid,$yetonline)&&$client['client_version']!="ServerQuery"){$clientidle=floor($client['client_idle_time'] / 1000);$yetonline[]=$uid;if(in_array($uid,$exceptuuid)||array_intersect($sgroups,$exceptgroup)){$except=1;}else{$except=0;}if(in_array($uid,$uidarr)){$idle=$sqlhis[$uid]['idle'] + $clientidle;$grpid=$sqlhis[$uid]['grpid'];$nextup=$sqlhis[$uid]['nextup'];if($sqlhis[$uid]['cldbid']!=$cldbid&&$resetbydbchange==1){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['changedbid'],$name,$uid,$cldbid,$sqlhis[$uid]['cldbid']),"\n";$count=1;$idle=0;}else{$hitboost=0;$boosttime=$sqlhis[$uid]['boosttime'];if($boostarr!=0){foreach($boostarr as $boost){if(in_array($boost['group'],$sgroups)){$hitboost=1;if($sqlhis[$uid]['boosttime']==0){$boosttime=$nowtime;}else{if($nowtime>$sqlhis[$uid]['boosttime'] + $boost['time']){check_shutdown($timezone);usleep($slowmode);try{$ts3->serverGroupClientDel($boost['group'],$cldbid);$boosttime=0;echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['sgrprm'],$sqlhis[$uid]['grpid'],$name,$uid,$cldbid),"\n";}catch(Exception $e){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 8:",sprintf($lang['sgrprerr'],$name,$uid,$cldbid),"\n";$sqlmsg.=$e->getCode().': '.$e->getMessage();$sqlerr++;}}}$count=($nowtime - $lastscan)* $boost['factor'] + $sqlhis[$uid]['count'];if($clientidle>($nowtime - $lastscan)){$idle=($nowtime - $lastscan)* $boost['factor'] + $sqlhis[$uid]['idle'];}}}}if($boostarr==0 or $hitboost==0){$count=$nowtime - $lastscan + $sqlhis[$uid]['count'];if($clientidle>($nowtime - $lastscan)){$idle=$nowtime - $lastscan + $sqlhis[$uid]['idle'];}}}$dtF=new DateTime("@0");if($substridle==1){$activetime=$count - $idle;}else{$activetime=$count;}$dtT=new DateTime("@$activetime");foreach($grouptime as $time=>$groupid){if(in_array($groupid,$sgroups)){$grpid=$groupid;break;}}$grpcount=0;foreach($grouptime as $time=>$groupid){$grpcount++;if($activetime>$time&&!in_array($uid,$exceptuuid)&&!array_intersect($sgroups,$exceptgroup)){if($sqlhis[$uid]['grpid']!=$groupid){if($sqlhis[$uid]['grpid']!=0&&in_array($sqlhis[$uid]['grpid'],$sgroups)){check_shutdown($timezone);usleep($slowmode);try{$ts3->serverGroupClientDel($sqlhis[$uid]['grpid'],$cldbid);echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['sgrprm'],$sqlhis[$uid]['grpid'],$name,$uid,$cldbid),"\n";}catch(Exception $e){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 9:",sprintf($lang['sgrprerr'],$name,$uid,$cldbid),"\n";$sqlmsg.=$e->getCode().': '.$e->getMessage();$sqlerr++;}}if(!in_array($groupid,$sgroups)){check_shutdown($timezone);usleep($slowmode);try{$ts3->serverGroupClientAdd($groupid,$cldbid);echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['sgrpadd'],$groupid,$name,$uid,$cldbid),"\n";}catch(Exception $e){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 10:",sprintf($lang['sgrprerr'],$name,$uid,$cldbid),"\n";$sqlmsg.=$e->getCode().': '.$e->getMessage();$sqlerr++;}}$grpid=$groupid;if($msgtouser==1){check_shutdown($timezone);usleep($slowmode);$days=$dtF->diff($dtT)->format('%a');$hours=$dtF->diff($dtT)->format('%h');$mins=$dtF->diff($dtT)->format('%i');$secs=$dtF->diff($dtT)->format('%s');if($substridle==1){try{$ts3->clientGetByUid($uid)->message(sprintf($lang['usermsgactive'],$days,$hours,$mins,$secs));}catch(Exception $e){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 11:",sprintf($lang['sgrprerr'],$name,$uid,$cldbid),"\n";$sqlmsg.=$e->getCode().': '.$e->getMessage();$sqlerr++;}}else{try{$ts3->clientGetByUid($uid)->message(sprintf($lang['usermsgonline'],$days,$hours,$mins,$secs));}catch(Exception $e){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 12:",sprintf($lang['sgrprerr'],$name,$uid,$cldbid),"\n";$sqlmsg.=$e->getCode().': '.$e->getMessage();$sqlerr++;}}}}if($grpcount==1){$nextup=0;}break;}else{$nextup=$time - $activetime;}}$updatedata[]=array("uuid"=>$uid,"cldbid"=>$cldbid,"count"=>$count,"ip"=>$ip,"name"=>$name,"lastseen"=>$nowtime,"grpid"=>$grpid,"nextup"=>$nextup,"idle"=>$idle,"cldgroup"=>$cldgroup,"boosttime"=>$boosttime,"platform"=>$platform,"nation"=>$nation,"version"=>$version,"except"=>$except);}else{$grpid='0';foreach($grouptime as $time=>$groupid){if(in_array($groupid,$sgroups)){$grpid=$groupid;break;}}$insertdata[]=array("uuid"=>$uid,"cldbid"=>$cldbid,"ip"=>$ip,"name"=>$name,"lastseen"=>$nowtime,"grpid"=>$grpid,"nextup"=>$nextupforinsert,"cldgroup"=>$cldgroup,"platform"=>$platform,"nation"=>$nation,"version"=>$version,"firstcon"=>$firstconnect,"except"=>$except);$uidarr[]=$uid;echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['adduser'],$name,$uid,$cldbid),"\n";}}}if($mysqlcon->exec("UPDATE $dbname.user SET online='0'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 13:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}if($insertdata!=''){$allinsertdata='';foreach($insertdata as $insertarr){$allinsertdata=$allinsertdata."('".$insertarr['uuid']."', '".$insertarr['cldbid']."', '1', '".$insertarr['ip']."', '".$insertarr['name']."', '".$insertarr['lastseen']."', '".$insertarr['grpid']."', '".$insertarr['nextup']."', '".$insertarr['cldgroup']."', '".$insertarr['platform']."', '".$insertarr['nation']."', '".$insertarr['version']."', '".$insertarr['firstcon']."', '".$insertarr['except']."','1'),";}$allinsertdata=substr($allinsertdata,0,-1);if($allinsertdata!=''){if($mysqlcon->exec("INSERT INTO $dbname.user (uuid, cldbid, count, ip, name, lastseen, grpid, nextup, cldgroup, platform, nation, version, firstcon, except, online) VALUES $allinsertdata")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 14:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}}}unset($insertdata);unset($allinsertdata);if($updatedata!=0){$allupdateuuid='';$allupdatecldbid='';$allupdatecount='';$allupdateip='';$allupdatename='';$allupdatelastseen='';$allupdategrpid='';$allupdatenextup='';$allupdateidle='';$allupdatecldgroup='';$allupdateboosttime='';$allupdateplatform='';$allupdatenation='';$allupdateversion='';$allupdateexcept='';foreach($updatedata as $updatearr){$allupdateuuid=$allupdateuuid."'".$updatearr['uuid']."',";$allupdatecldbid=$allupdatecldbid."WHEN '".$updatearr['uuid']."' THEN '".$updatearr['cldbid']."' ";$allupdatecount=$allupdatecount."WHEN '".$updatearr['uuid']."' THEN '".$updatearr['count']."' ";$allupdateip=$allupdateip."WHEN '".$updatearr['uuid']."' THEN '".$updatearr['ip']."' ";$allupdatename=$allupdatename."WHEN '".$updatearr['uuid']."' THEN '".$updatearr['name']."' ";$allupdatelastseen=$allupdatelastseen."WHEN '".$updatearr['uuid']."' THEN '".$updatearr['lastseen']."' ";$allupdategrpid=$allupdategrpid."WHEN '".$updatearr['uuid']."' THEN '".$updatearr['grpid']."' ";$allupdatenextup=$allupdatenextup."WHEN '".$updatearr['uuid']."' THEN '".$updatearr['nextup']."' ";$allupdateidle=$allupdateidle."WHEN '".$updatearr['uuid']."' THEN '".$updatearr['idle']."' ";$allupdatecldgroup=$allupdatecldgroup."WHEN '".$updatearr['uuid']."' THEN '".$updatearr['cldgroup']."' ";$allupdateboosttime=$allupdateboosttime."WHEN '".$updatearr['uuid']."' THEN '".$updatearr['boosttime']."' ";$allupdateplatform=$allupdateplatform."WHEN '".$updatearr['uuid']."' THEN '".$updatearr['platform']."' ";$allupdatenation=$allupdatenation."WHEN '".$updatearr['uuid']."' THEN '".$updatearr['nation']."' ";$allupdateversion=$allupdateversion."WHEN '".$updatearr['uuid']."' THEN '".$updatearr['version']."' ";$allupdateexcept=$allupdateexcept."WHEN '".$updatearr['uuid']."' THEN '".$updatearr['except']."' ";}$allupdateuuid=substr($allupdateuuid,0,-1);if($mysqlcon->exec("UPDATE $dbname.user set cldbid = CASE uuid $allupdatecldbid END, count = CASE uuid $allupdatecount END, ip = CASE uuid $allupdateip END, name = CASE uuid $allupdatename END, lastseen = CASE uuid $allupdatelastseen END, grpid = CASE uuid $allupdategrpid END, nextup = CASE uuid $allupdatenextup END, idle = CASE uuid $allupdateidle END, cldgroup = CASE uuid $allupdatecldgroup END, boosttime = CASE uuid $allupdateboosttime END, platform = CASE uuid $allupdateplatform END, nation = CASE uuid $allupdatenation END, version = CASE uuid $allupdateversion END, except = CASE uuid $allupdateexcept END, online = 1 WHERE uuid IN ($allupdateuuid)")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 15:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}}$buildtime=microtime(true)- $starttime;if($sqlerr==0){if($mysqlcon->exec("UPDATE $dbname.job_log SET status='0', runtime='$buildtime' WHERE id='$jobid'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 16:",print_r($mysqlcon->errorInfo()),"\n";}}else{if($mysqlcon->exec("UPDATE $dbname.job_log SET status='1', err_msg='$sqlmsg', runtime='$buildtime' WHERE id='$jobid'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_user 17:",print_r($mysqlcon->errorInfo()),"\n";}}}?> \ No newline at end of file diff --git a/jobs/calc_userstats.php b/jobs/calc_userstats.php index af5555a..0e55fbc 100644 --- a/jobs/calc_userstats.php +++ b/jobs/calc_userstats.php @@ -1,178 +1 @@ -query("SELECT count(*) as count FROM ((SELECT u.uuid FROM $dbname.user AS u INNER JOIN $dbname.stats_user As s On u.uuid=s.uuid) UNION (SELECT u.uuid FROM $dbname.user AS u LEFT JOIN $dbname.stats_user As s On u.uuid=s.uuid WHERE s.uuid IS NULL)) x")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 1:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $count_user = $count_user->fetchAll(PDO::FETCH_ASSOC); - $total_user = $count_user[0]['count']; - - if(($job_begin = $mysqlcon->query("SELECT timestamp FROM $dbname.job_check WHERE job_name='calc_user_limit'")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 2:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $job_begin = $job_begin->fetchAll(); - $job_begin = $job_begin[0]['timestamp']; - $job_end = ceil($total_user / 10) * 10; - if ($job_begin >= $job_end) { - $job_begin = 0; - $job_end = 10; - } else { - $job_end = $job_begin + 10; - } - - if(($uuids = $mysqlcon->query("(SELECT u.uuid,u.rank,u.cldbid FROM $dbname.user AS u INNER JOIN $dbname.stats_user As s On u.uuid=s.uuid) UNION (SELECT u.uuid,u.rank,u.cldbid FROM $dbname.user AS u LEFT JOIN $dbname.stats_user As s On u.uuid=s.uuid WHERE s.uuid IS NULL) ORDER BY cldbid ASC LIMIT $job_begin, 10")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 3:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $uuids = $uuids->fetchAll(); - foreach($uuids as $uuid) { - $sqlhis[$uuid['uuid']] = array( - "uuid" => $uuid['uuid'], - "rank" => $uuid['rank'], - "cldbid" => $uuid['cldbid'] - ); - } - - // Calc Client Stats - if ($mysqlcon->exec("UPDATE $dbname.stats_user AS t LEFT JOIN $dbname.user AS u ON t.uuid=u.uuid SET t.removed='1' WHERE u.uuid IS NULL") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 4:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - - if(($statsuserhis = $mysqlcon->query("SELECT uuid, removed FROM $dbname.stats_user")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 5:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $statsuserhis = $statsuserhis->fetchAll(); - foreach($statsuserhis as $userhis) { - $uidarrstats[$userhis['uuid']] = $userhis['removed']; - } - unset($statsuserhis); - - if(isset($sqlhis)) { - //echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Update User Stats between ",$job_begin," and ",$job_end,":\n"; - if(($userdataweekbegin = $mysqlcon->query("SELECT uuid,count,idle FROM $dbname.user_snapshot WHERE timestamp=(SELECT MIN(s2.timestamp) AS value2 FROM (SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 28) AS s2, $dbname.user_snapshot AS s1 WHERE s1.timestamp=s2.timestamp)")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 6:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $userdataweekbegin = $userdataweekbegin->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC); - if(($userdataweekend = $mysqlcon->query("SELECT uuid,count,idle FROM $dbname.user_snapshot WHERE timestamp=(SELECT MAX(s2.timestamp) AS value1 FROM (SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 28) AS s2, $dbname.user_snapshot AS s1 WHERE s1.timestamp=s2.timestamp)")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 7:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $userdataweekend = $userdataweekend->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC); - if(($userdatamonthbegin = $mysqlcon->query("SELECT uuid,count,idle FROM $dbname.user_snapshot WHERE timestamp=(SELECT MIN(s2.timestamp) AS value2 FROM (SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 120) AS s2, $dbname.user_snapshot AS s1 WHERE s1.timestamp=s2.timestamp)")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 8:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $userdatamonthbegin = $userdatamonthbegin->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC); - if(($userdatamonthend = $mysqlcon->query("SELECT uuid,count,idle FROM $dbname.user_snapshot WHERE timestamp=(SELECT MAX(s2.timestamp) AS value1 FROM (SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 120) AS s2, $dbname.user_snapshot AS s1 WHERE s1.timestamp=s2.timestamp)")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 9:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $userdatamonthend = $userdatamonthend->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC); - - $allupdateuuid = ''; - $allupdaterank = ''; - $allupdatecountw = ''; - $allupdatecountm = ''; - $allupdateidlew = ''; - $allupdateidlem = ''; - $allupdatetotac = ''; - $allupdatebase64 = ''; - $allupdatecldtup = ''; - $allupdatecldtdo = ''; - $allupdateclddes = ''; - $allinsertuserstats = ''; - - foreach ($sqlhis as $userstats) { - try { - $clientinfo = $ts3->clientInfoDb($userstats['cldbid']); - - if(isset($userdataweekend[$userstats['uuid']]) && isset($userdataweekbegin[$userstats['uuid']])) { - $count_week = $userdataweekend[$userstats['uuid']][0]['count'] - $userdataweekbegin[$userstats['uuid']][0]['count']; - $idle_week = $userdataweekend[$userstats['uuid']][0]['idle'] - $userdataweekbegin[$userstats['uuid']][0]['idle']; - } else { - $count_week = 0; - $idle_week = 0; - } - if(isset($userdatamonthend[$userstats['uuid']]) && isset($userdatamonthbegin[$userstats['uuid']])) { - $count_month = $userdatamonthend[$userstats['uuid']][0]['count'] - $userdatamonthbegin[$userstats['uuid']][0]['count']; - $idle_month = $userdatamonthend[$userstats['uuid']][0]['idle'] - $userdatamonthbegin[$userstats['uuid']][0]['idle']; - } else { - $count_month = 0; - $idle_month = 0; - } - - if(isset($uidarrstats[$userstats['uuid']])) { - $allupdateuuid = $allupdateuuid . "'" . $userstats['uuid'] . "',"; - $allupdaterank = $allupdaterank . "WHEN '" . $userstats['uuid'] . "' THEN '" . $userstats['rank'] . "' "; - $allupdatecountw = $allupdatecountw . "WHEN '" . $userstats['uuid'] . "' THEN '" . $count_week . "' "; - $allupdatecountm = $allupdatecountm . "WHEN '" . $userstats['uuid'] . "' THEN '" . $count_month . "' "; - $allupdateidlew = $allupdateidlew . "WHEN '" . $userstats['uuid'] . "' THEN '" . $idle_week . "' "; - $allupdateidlem = $allupdateidlem . "WHEN '" . $userstats['uuid'] . "' THEN '" . $idle_month . "' "; - $allupdatetotac = $allupdatetotac . "WHEN '" . $userstats['uuid'] . "' THEN '" . $clientinfo['client_totalconnections'] . "' "; - $allupdatebase64 = $allupdatebase64 . "WHEN '" . $userstats['uuid'] . "' THEN '" . $clientinfo['client_base64HashClientUID'] . "' "; - $allupdatecldtup = $allupdatecldtup . "WHEN '" . $userstats['uuid'] . "' THEN '" . $clientinfo['client_total_bytes_uploaded'] . "' "; - $allupdatecldtdo = $allupdatecldtdo . "WHEN '" . $userstats['uuid'] . "' THEN '" . $clientinfo['client_total_bytes_downloaded'] . "' "; - $allupdateclddes = $allupdateclddes . "WHEN '" . $userstats['uuid'] . "' THEN '" . $clientinfo['client_description'] . "' "; - } else { - $allinsertuserstats = $allinsertuserstats . "('" . $userstats['uuid'] . "', '" .$userstats['rank'] . "', '" . $count_week . "', '" . $count_month . "', '" . $idle_week . "', '" . $idle_month . "', '" . $clientinfo['client_totalconnections'] . "', '" . $clientinfo['client_base64HashClientUID'] . "', '" . $clientinfo['client_total_bytes_uploaded'] . "', '" . $clientinfo['client_total_bytes_downloaded'] . "', '" . $clientinfo['client_description'] . "'),"; - } - } catch (Exception $e) { - //error would be, when client is missing in ts db - } - } - - if ($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp=$job_end WHERE job_name='calc_user_limit'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 11:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - - if ($allupdateuuid != '') { - $allupdateuuid = substr($allupdateuuid, 0, -1); - if ($mysqlcon->exec("UPDATE $dbname.stats_user set rank = CASE uuid $allupdaterank END, count_week = CASE uuid $allupdatecountw END, count_month = CASE uuid $allupdatecountm END, idle_week = CASE uuid $allupdateidlew END, idle_month = CASE uuid $allupdateidlem END, total_connections = CASE uuid $allupdatetotac END, base64hash = CASE uuid $allupdatebase64 END, client_total_up = CASE uuid $allupdatecldtup END, client_total_down = CASE uuid $allupdatecldtdo END, client_description = CASE uuid $allupdateclddes END WHERE uuid IN ($allupdateuuid)") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 12:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - } - - if($allinsertuserstats != '') { - $allinsertuserstats = substr($allinsertuserstats, 0, -1); - if ($mysqlcon->exec("INSERT INTO $dbname.stats_user (uuid,rank,count_week,count_month,idle_week,idle_month,total_connections,base64hash,client_total_up,client_total_down,client_description) VALUES $allinsertuserstats") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 13:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - } - } - - $buildtime = microtime(true) - $starttime; - - if ($sqlerr == 0) { - if($mysqlcon->exec("UPDATE $dbname.job_log SET status='0', runtime='$buildtime' WHERE id='$jobid'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 14:",print_r($mysqlcon->errorInfo()),"\n"; - } - } else { - if($mysqlcon->exec("UPDATE $dbname.job_log SET status='1', err_msg='$sqlmsg', runtime='$buildtime' WHERE id='$jobid'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 15:",print_r($mysqlcon->errorInfo()),"\n"; - } - } -} -?> +query("SELECT count(*) as count FROM ((SELECT u.uuid FROM $dbname.user AS u INNER JOIN $dbname.stats_user As s On u.uuid=s.uuid) UNION (SELECT u.uuid FROM $dbname.user AS u LEFT JOIN $dbname.stats_user As s On u.uuid=s.uuid WHERE s.uuid IS NULL)) x"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 1:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$count_user=$count_user->fetchAll(PDO::FETCH_ASSOC);$total_user=$count_user[0]['count'];if(($job_begin=$mysqlcon->query("SELECT timestamp FROM $dbname.job_check WHERE job_name='calc_user_limit'"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 2:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$job_begin=$job_begin->fetchAll();$job_begin=$job_begin[0]['timestamp'];$job_end=ceil($total_user / 10)* 10;if($job_begin>=$job_end){$job_begin=0;$job_end=10;}else{$job_end=$job_begin + 10;}if(($uuids=$mysqlcon->query("(SELECT u.uuid,u.rank,u.cldbid FROM $dbname.user AS u INNER JOIN $dbname.stats_user As s On u.uuid=s.uuid) UNION (SELECT u.uuid,u.rank,u.cldbid FROM $dbname.user AS u LEFT JOIN $dbname.stats_user As s On u.uuid=s.uuid WHERE s.uuid IS NULL) ORDER BY cldbid ASC LIMIT $job_begin, 10"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 3:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$uuids=$uuids->fetchAll();foreach($uuids as $uuid){$sqlhis[$uuid['uuid']]=array("uuid"=>$uuid['uuid'],"rank"=>$uuid['rank'],"cldbid"=>$uuid['cldbid']);}if($mysqlcon->exec("UPDATE $dbname.stats_user AS t LEFT JOIN $dbname.user AS u ON t.uuid=u.uuid SET t.removed='1' WHERE u.uuid IS NULL")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 4:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}if(($statsuserhis=$mysqlcon->query("SELECT uuid, removed FROM $dbname.stats_user"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 5:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$statsuserhis=$statsuserhis->fetchAll();foreach($statsuserhis as $userhis){$uidarrstats[$userhis['uuid']]=$userhis['removed'];}unset($statsuserhis);if(isset($sqlhis)){if(($userdataweekbegin=$mysqlcon->query("SELECT uuid,count,idle FROM $dbname.user_snapshot WHERE timestamp=(SELECT MIN(s2.timestamp) AS value2 FROM (SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 28) AS s2, $dbname.user_snapshot AS s1 WHERE s1.timestamp=s2.timestamp)"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 6:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$userdataweekbegin=$userdataweekbegin->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC);if(($userdataweekend=$mysqlcon->query("SELECT uuid,count,idle FROM $dbname.user_snapshot WHERE timestamp=(SELECT MAX(s2.timestamp) AS value1 FROM (SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 28) AS s2, $dbname.user_snapshot AS s1 WHERE s1.timestamp=s2.timestamp)"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 7:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$userdataweekend=$userdataweekend->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC);if(($userdatamonthbegin=$mysqlcon->query("SELECT uuid,count,idle FROM $dbname.user_snapshot WHERE timestamp=(SELECT MIN(s2.timestamp) AS value2 FROM (SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 120) AS s2, $dbname.user_snapshot AS s1 WHERE s1.timestamp=s2.timestamp)"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 8:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$userdatamonthbegin=$userdatamonthbegin->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC);if(($userdatamonthend=$mysqlcon->query("SELECT uuid,count,idle FROM $dbname.user_snapshot WHERE timestamp=(SELECT MAX(s2.timestamp) AS value1 FROM (SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 120) AS s2, $dbname.user_snapshot AS s1 WHERE s1.timestamp=s2.timestamp)"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 9:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$userdatamonthend=$userdatamonthend->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC);$allupdateuuid='';$allupdaterank='';$allupdatecountw='';$allupdatecountm='';$allupdateidlew='';$allupdateidlem='';$allupdatetotac='';$allupdatebase64='';$allupdatecldtup='';$allupdatecldtdo='';$allupdateclddes='';$allinsertuserstats='';foreach($sqlhis as $userstats){try{$clientinfo=$ts3->clientInfoDb($userstats['cldbid']);if(isset($userdataweekend[$userstats['uuid']])&&isset($userdataweekbegin[$userstats['uuid']])){$count_week=$userdataweekend[$userstats['uuid']][0]['count'] - $userdataweekbegin[$userstats['uuid']][0]['count'];$idle_week=$userdataweekend[$userstats['uuid']][0]['idle'] - $userdataweekbegin[$userstats['uuid']][0]['idle'];}else{$count_week=0;$idle_week=0;}if(isset($userdatamonthend[$userstats['uuid']])&&isset($userdatamonthbegin[$userstats['uuid']])){$count_month=$userdatamonthend[$userstats['uuid']][0]['count'] - $userdatamonthbegin[$userstats['uuid']][0]['count'];$idle_month=$userdatamonthend[$userstats['uuid']][0]['idle'] - $userdatamonthbegin[$userstats['uuid']][0]['idle'];}else{$count_month=0;$idle_month=0;}$clientdesc=str_replace('\\','\\\\',htmlspecialchars($clientinfo['client_description'],ENT_QUOTES));if(isset($uidarrstats[$userstats['uuid']])){$allupdateuuid=$allupdateuuid."'".$userstats['uuid']."',";$allupdaterank=$allupdaterank."WHEN '".$userstats['uuid']."' THEN '".$userstats['rank']."' ";$allupdatecountw=$allupdatecountw."WHEN '".$userstats['uuid']."' THEN '".$count_week."' ";$allupdatecountm=$allupdatecountm."WHEN '".$userstats['uuid']."' THEN '".$count_month."' ";$allupdateidlew=$allupdateidlew."WHEN '".$userstats['uuid']."' THEN '".$idle_week."' ";$allupdateidlem=$allupdateidlem."WHEN '".$userstats['uuid']."' THEN '".$idle_month."' ";$allupdatetotac=$allupdatetotac."WHEN '".$userstats['uuid']."' THEN '".$clientinfo['client_totalconnections']."' ";$allupdatebase64=$allupdatebase64."WHEN '".$userstats['uuid']."' THEN '".$clientinfo['client_base64HashClientUID']."' ";$allupdatecldtup=$allupdatecldtup."WHEN '".$userstats['uuid']."' THEN '".$clientinfo['client_total_bytes_uploaded']."' ";$allupdatecldtdo=$allupdatecldtdo."WHEN '".$userstats['uuid']."' THEN '".$clientinfo['client_total_bytes_downloaded']."' ";$allupdateclddes=$allupdateclddes."WHEN '".$userstats['uuid']."' THEN '".$clientdesc."' ";}else{$allinsertuserstats=$allinsertuserstats."('".$userstats['uuid']."', '".$userstats['rank']."', '".$count_week."', '".$count_month."', '".$idle_week."', '".$idle_month."', '".$clientinfo['client_totalconnections']."', '".$clientinfo['client_base64HashClientUID']."', '".$clientinfo['client_total_bytes_uploaded']."', '".$clientinfo['client_total_bytes_downloaded']."', '".$clientdesc."'),";}}catch(Exception $e){}}if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp=$job_end WHERE job_name='calc_user_limit'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 11:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}if($allupdateuuid!=''){$allupdateuuid=substr($allupdateuuid,0,-1);if($mysqlcon->exec("UPDATE $dbname.stats_user set rank = CASE uuid $allupdaterank END, count_week = CASE uuid $allupdatecountw END, count_month = CASE uuid $allupdatecountm END, idle_week = CASE uuid $allupdateidlew END, idle_month = CASE uuid $allupdateidlem END, total_connections = CASE uuid $allupdatetotac END, base64hash = CASE uuid $allupdatebase64 END, client_total_up = CASE uuid $allupdatecldtup END, client_total_down = CASE uuid $allupdatecldtdo END, client_description = CASE uuid $allupdateclddes END WHERE uuid IN ($allupdateuuid)")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 12:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}}if($allinsertuserstats!=''){$allinsertuserstats=substr($allinsertuserstats,0,-1);if($mysqlcon->exec("INSERT INTO $dbname.stats_user (uuid,rank,count_week,count_month,idle_week,idle_month,total_connections,base64hash,client_total_up,client_total_down,client_description) VALUES $allinsertuserstats")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 13:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}}}$buildtime=microtime(true)- $starttime;if($sqlerr==0){if($mysqlcon->exec("UPDATE $dbname.job_log SET status='0', runtime='$buildtime' WHERE id='$jobid'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 14:",print_r($mysqlcon->errorInfo()),"\n";}}else{if($mysqlcon->exec("UPDATE $dbname.job_log SET status='1', err_msg='$sqlmsg', runtime='$buildtime' WHERE id='$jobid'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"calc_userstats 15:",print_r($mysqlcon->errorInfo()),"\n";}}}?> \ No newline at end of file diff --git a/jobs/check_db.php b/jobs/check_db.php new file mode 100644 index 0000000..0064b1e --- /dev/null +++ b/jobs/check_db.php @@ -0,0 +1 @@ +setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Check Database for updates...";function set_new_version($mysqlcon,$dbname,$timezone){if($mysqlcon->exec("UPDATE $dbname.config set currvers='1.0.1'")===false){echo " [failed]\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"An error happens due updating the Ranksystem Database: ",print_r($mysqlcon->errorInfo()),"\nCheck the database connection properties in other/dbconfig.php and check also the database permissions.\n";exit;}else{echo " [done]\n";}}function check_chmod($timezone){if(substr(sprintf('%o',fileperms('./icons/')),-4)!='0777'){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Write Permissions failed on folder \"icons\". Please give them a chmod 777 and try to start the Ranksystem again.\n";}if(substr(sprintf('%o',fileperms('./logs/')),-4)!='0777'){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Write Permissions failed on folder \"logs\". Please give them a chmod 777 and try to start the Ranksystem again.\n";}if(substr(sprintf('%o',fileperms('./avatars/')),-4)!='0777'){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Write Permissions failed on folder \"avatars\". Please give them a chmod 777 and try to start the Ranksystem again.\n";}}function old_files($timezone){if(is_file('install.php')){if(!unlink('install.php')){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Unnecessary file, please delete it from your webserver: install.php\n";}}if(is_file('list_rankup.php')){if(!unlink('list_rankup.php')){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Unnecessary file, please delete it from your webserver: list_rankup.php\n";}}if(is_file('lang.php')){if(!unlink('lang.php')){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Unnecessary file, please delete it from your webserver: lang.php\n";}}if(is_file('license.txt')){if(!unlink('license.txt')){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Unnecessary file, please delete it from your webserver: license.txt\n";}}if(is_file('jquerylib/jquery.ajaxQueue.js')){if(!unlink('jquerylib/jquery.ajaxQueue.js')){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Unnecessary file, please delete it from your webserver: jquerylib/jquery.ajaxQueue.js\n";}}if(is_file('jquerylib/jquery.autocomplete.js')){if(!unlink('jquerylib/jquery.autocomplete.js')){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Unnecessary file, please delete it from your webserver: jquerylib/jquery.autocomplete.js\n";}}if(is_file('jquerylib/jquery.autocomplete.min.js')){if(!unlink('jquerylib/jquery.autocomplete.min.js')){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Unnecessary file, please delete it from your webserver: jquerylib/jquery.autocomplete.min.js\n";}}if(is_file('jquerylib/jquery.bgiframe.min.js')){if(!unlink('jquerylib/jquery.bgiframe.min.js')){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Unnecessary file, please delete it from your webserver: jquerylib/jquery.bgiframe.min.js\n";}}if(is_file('jquerylib/jquery.css')){if(!unlink('jquerylib/jquery.css')){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Unnecessary file, please delete it from your webserver: jquerylib/jquery.css\n";}}if(is_file('jquerylib/localdata.js')){if(!unlink('jquerylib/localdata.js')){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Unnecessary file, please delete it from your webserver: jquerylib/localdata.js\n";}}if(is_file('jquerylib/thickbox.css')){if(!unlink('jquerylib/thickbox.css')){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Unnecessary file, please delete it from your webserver: jquerylib/thickbox.css\n";}}if(is_file('jquerylib/thickbox-compressed.js')){if(!unlink('jquerylib/thickbox-compressed.js')){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Unnecessary file, please delete it from your webserver: jquerylib/thickbox-compressed.js\n";}}}if($currvers=="1.0.1"){echo " [done]\n";old_files($timezone);check_chmod($timezone);}elseif($currvers=="1.00"){set_new_version($mysqlcon,$dbname,$timezone);old_files($timezone);check_chmod($timezone);}elseif($currvers!="1.0.1"){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Update the Ranksystem Database to version 1.01...";$errcount=1;if($mysqlcon->exec("ALTER TABLE $dbname.user ADD (boosttime bigint(11) NOT NULL default '0', rank bigint(11) NOT NULL default '0', platform text default NULL, nation text default NULL, version text default NULL, firstcon bigint(11) NOT NULL default '0', except int(1) NOT NULL default '0')")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"user\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}if($mysqlcon->exec("ALTER TABLE $dbname.config ADD (boost text default NULL, showcolas int(1) NOT NULL default '0', defchid bigint(11) NOT NULL default '0', timezone varchar(29) CHARACTER SET utf8 COLLATE utf8_unicode_ci, logpath varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci)")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"config\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}$logpath=addslashes(__DIR__."/logs/");if($mysqlcon->exec("ALTER TABLE $dbname.config MODIFY slowmode bigint(11) NOT NULL default '0'")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"config\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;if($mysqlcon->exec("UPDATE $dbname.config set defchid='0', timezome='Europe/Berlin', slowmode='0', logpath='$logpath'")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"config\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}}if($mysqlcon->exec("ALTER TABLE $dbname.groups ADD (icondate bigint(11) NOT NULL default '0')")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"groups\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}if($mysqlcon->exec("CREATE TABLE $dbname.server_usage (timestamp bigint(11) NOT NULL default '0', clients bigint(11) NOT NULL default '0', channel bigint(11) NOT NULL default '0')")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"server_usage\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}if($mysqlcon->exec("CREATE TABLE $dbname.user_snapshot (timestamp bigint(11) NOT NULL default '0', uuid varchar(29) CHARACTER SET utf8 COLLATE utf8_unicode_ci, count bigint(11) NOT NULL default '0', idle bigint(11) NOT NULL default '0')")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"user_snapshot\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}if($mysqlcon->exec("CREATE INDEX snapshot_timestamp ON $dbname.user_snapshot (timestamp)")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"snapshot_timestamp\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}if($mysqlcon->exec("CREATE TABLE $dbname.stats_server (total_user bigint(11) NOT NULL default '0', total_online_time bigint(13) NOT NULL default '0', total_online_month bigint(11) NOT NULL default '0', total_online_week bigint(11) NOT NULL default '0', total_active_time bigint(11) NOT NULL default '0', total_inactive_time bigint(11) NOT NULL default '0', country_nation_name_1 varchar(3) NOT NULL default '0', country_nation_name_2 varchar(3) NOT NULL default '0', country_nation_name_3 varchar(3) NOT NULL default '0', country_nation_name_4 varchar(3) NOT NULL default '0', country_nation_name_5 varchar(3) NOT NULL default '0', country_nation_1 bigint(11) NOT NULL default '0', country_nation_2 bigint(11) NOT NULL default '0', country_nation_3 bigint(11) NOT NULL default '0', country_nation_4 bigint(11) NOT NULL default '0', country_nation_5 bigint(11) NOT NULL default '0', country_nation_other bigint(11) NOT NULL default '0', platform_1 bigint(11) NOT NULL default '0', platform_2 bigint(11) NOT NULL default '0', platform_3 bigint(11) NOT NULL default '0', platform_4 bigint(11) NOT NULL default '0', platform_5 bigint(11) NOT NULL default '0', platform_other bigint(11) NOT NULL default '0', version_name_1 varchar(35) NOT NULL default '0', version_name_2 varchar(35) NOT NULL default '0', version_name_3 varchar(35) NOT NULL default '0', version_name_4 varchar(35) NOT NULL default '0', version_name_5 varchar(35) NOT NULL default '0', version_1 bigint(11) NOT NULL default '0', version_2 bigint(11) NOT NULL default '0', version_3 bigint(11) NOT NULL default '0', version_4 bigint(11) NOT NULL default '0', version_5 bigint(11) NOT NULL default '0', version_other bigint(11) NOT NULL default '0', server_status int(1) NOT NULL default '0', server_free_slots bigint(11) NOT NULL default '0', server_used_slots bigint(11) NOT NULL default '0', server_channel_amount bigint(11) NOT NULL default '0', server_ping bigint(11) NOT NULL default '0', server_packet_loss float (4,4), server_bytes_down bigint(11) NOT NULL default '0', server_bytes_up bigint(11) NOT NULL default '0', server_uptime bigint(11) NOT NULL default '0', server_id bigint(11) NOT NULL default '0', server_name text CHARACTER SET utf8 COLLATE utf8_unicode_ci, server_pass int(1) NOT NULL default '0', server_creation_date bigint(11) NOT NULL default '0', server_platform text CHARACTER SET utf8 COLLATE utf8_unicode_ci, server_weblist text CHARACTER SET utf8 COLLATE utf8_unicode_ci, server_version text CHARACTER SET utf8 COLLATE utf8_unicode_ci)")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"stats_server\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}if($mysqlcon->exec("CREATE TABLE $dbname.stats_user (uuid varchar(29) CHARACTER SET utf8 COLLATE utf8_unicode_ci PRIMARY KEY, removed int(1) NOT NULL default '0', rank bigint(11) NOT NULL default '0', total_connections bigint(11) NOT NULL default '0', count_week bigint(11) NOT NULL default '0', count_month bigint(11) NOT NULL default '0', idle_week bigint(11) NOT NULL default '0', idle_month bigint(11) NOT NULL default '0', achiev_count bigint(11) NOT NULL default '0', achiev_time bigint(11) NOT NULL default '0', achiev_connects bigint(11) NOT NULL default '0', achiev_battles bigint(11) NOT NULL default '0', achiev_time_perc int(3) NOT NULL default '0', achiev_connects_perc int(3) NOT NULL default '0', achiev_battles_perc int(3) NOT NULL default '0', battles_total bigint(11) NOT NULL default '0', battles_won bigint(11) NOT NULL default '0', battles_lost bigint(11) NOT NULL default '0', client_description text CHARACTER SET utf8 COLLATE utf8_unicode_ci, base64hash varchar(58) CHARACTER SET utf8 COLLATE utf8_unicode_ci, client_total_up bigint(15) NOT NULL default '0', client_total_down bigint(15) NOT NULL default '0')")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"stats_user\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}if($mysqlcon->exec("INSERT INTO $dbname.stats_server SET total_user='9999'")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"stats_server\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}if($mysqlcon->exec("CREATE TABLE $dbname.job_check (job_name varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci PRIMARY KEY, timestamp bigint(11) NOT NULL default '0')")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"job_check\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}if($mysqlcon->exec("INSERT INTO $dbname.job_check (job_name) VALUES ('calc_user_limit'),('calc_user_lastscan'),('check_update'),('check_clean')")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"job_check\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}if($mysqlcon->exec("CREATE TABLE $dbname.job_log (id bigint(11) AUTO_INCREMENT PRIMARY KEY, timestamp bigint(11) NOT NULL default '0', job_name varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci, status int(1) NOT NULL default '0', err_msg text CHARACTER SET utf8 COLLATE utf8_unicode_ci, runtime float (4,4))")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"job_log\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}if(($lastscan=$mysqlcon->query("SELECT timestamp FROM $dbname.lastscan"))===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"lastscan\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}else{$timestampls=$lastscan->fetchAll();$calc_user_lastscan=$timestampls[0]['timestamp'];if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$calc_user_lastscan' WHERE job_name='calc_user_lastscan'")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"job_check\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}elseif($mysqlcon->exec("DROP TABLE $dbname.lastscan")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"lastscan\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}}if(($lastupdate=$mysqlcon->query("SELECT timestamp FROM $dbname.upcheck"))===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"upcheck\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}else{$timestampuc=$lastupdate->fetchAll();$check_update=$timestampuc[0]['timestamp'];if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$check_update' WHERE job_name='check_update'")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"job_check\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}elseif($mysqlcon->exec("DROP TABLE $dbname.upcheck")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"upcheck\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}}if(($lastclean=$mysqlcon->query("SELECT timestamp FROM $dbname.cleanclients"))===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"upcheck\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}else{$timestamplc=$lastclean->fetchAll();$check_clean=$timestampls[0]['timestamp'];if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$check_clean' WHERE job_name='check_clean'")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"upcheck\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}elseif($mysqlcon->exec("DROP TABLE $dbname.cleanclients")===false){echo "\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"DB Update Error: table \"upcheck\" ",print_r($mysqlcon->errorInfo()),"\n";$errcount++;}}if($errcount==1){set_new_version($mysqlcon,$dbname,$timezone);old_files($timezone);check_chmod($timezone);}else{echo " [failed]\n",DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"An error happens due updating the Ranksystem Database!\nCheck the database connection properties in other/dbconfig.php and check also the database permissions.\n";exit;}}}?> \ No newline at end of file diff --git a/jobs/clean.php b/jobs/clean.php index 5ce909c..748c1da 100644 --- a/jobs/clean.php +++ b/jobs/clean.php @@ -1,118 +1 @@ -query("DELETE a FROM $dbname.job_log AS a CROSS JOIN(SELECT id FROM $dbname.job_log ORDER BY id DESC LIMIT 1 OFFSET 1000) AS b WHERE b.id>a.id") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 1:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - - // clean usersnaps older then 1 month - if($mysqlcon->query("DELETE a FROM $dbname.user_snapshot AS a CROSS JOIN(SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 1000 OFFSET 121) AS b WHERE a.timestamp=b.timestamp") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 2:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - - // clean old clients out of the database - if ($cleanclients == 1) { - $cleantime = $nowtime - $cleanperiod; - if(($lastclean = $mysqlcon->query("SELECT * FROM $dbname.job_check WHERE job_name='check_clean'")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 3:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $lastclean = $lastclean->fetchAll(); - if(($dbuserdata = $mysqlcon->query("SELECT uuid FROM $dbname.user")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 4:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - $countrs = $dbuserdata->rowCount(); - $uuids = $dbuserdata->fetchAll(); - if ($lastclean[0]['timestamp'] < $cleantime) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),$lang['clean'],"\n"; - $start=0; - $break=200; - $clientdblist=array(); - $countdel=0; - $countts=0; - while($getclientdblist=$ts3->clientListDb($start, $break)) { - $clientdblist=array_merge($clientdblist, $getclientdblist); - $start=$start+$break; - $count_tsuser=array_shift($getclientdblist); - if ($start == 100000 || $count_tsuser['count'] <= $start) { - break; - } - usleep($slowmode); - } - foreach($clientdblist as $uuidts) { - $single_uuid = $uuidts['client_unique_identifier']->toString(); - $uidarrts[$single_uuid]= 1; - } - unset($clientdblist); - - foreach($uuids as $uuid) { - if(isset($uidarrts[$uuid[0]])) { - $countts++; - } else { - $deleteuuids[] = $uuid[0]; - $countdel++; - } - } - - unset($uidarrts); - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['cleants'], $countts, $count_tsuser['count']),"\n"; - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['cleanrs'], $countrs),"\n"; - - if(isset($deleteuuids)) { - $alldeldata = ''; - foreach ($deleteuuids as $dellarr) { - $alldeldata = $alldeldata . "'" . $dellarr . "',"; - } - $alldeldata = substr($alldeldata, 0, -1); - $alldeldata = "(".$alldeldata.")"; - if ($alldeldata != '') { - if($mysqlcon->exec("DELETE FROM $dbname.user WHERE uuid IN $alldeldata") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 5:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } else { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['cleandel'], $countdel),"\n"; - if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$nowtime' WHERE job_name='check_clean'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 6:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - } - } - } else { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),$lang['cleanno'],"\n"; - if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$nowtime' WHERE job_name='check_clean'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 7:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - } - } - } - - $buildtime = microtime(true) - $starttime; - - if ($sqlerr == 0) { - if($mysqlcon->exec("UPDATE $dbname.job_log SET status='0', runtime='$buildtime' WHERE id='$jobid'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 8:",print_r($mysqlcon->errorInfo()),"\n"; - } - } else { - if($mysqlcon->exec("UPDATE $dbname.job_log SET status='1', err_msg='$sqlmsg', runtime='$buildtime' WHERE id='$jobid'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 9:",print_r($mysqlcon->errorInfo()),"\n"; - } - } -} -?> \ No newline at end of file +query("DELETE a FROM $dbname.job_log AS a CROSS JOIN(SELECT id FROM $dbname.job_log ORDER BY id DESC LIMIT 1 OFFSET 1000) AS b WHERE b.id>a.id")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 1:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}if($mysqlcon->query("DELETE a FROM $dbname.user_snapshot AS a CROSS JOIN(SELECT DISTINCT(timestamp) FROM $dbname.user_snapshot ORDER BY timestamp DESC LIMIT 1000 OFFSET 121) AS b WHERE a.timestamp=b.timestamp")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 2:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}if($cleanclients==1){$cleantime=$nowtime - $cleanperiod;if(($lastclean=$mysqlcon->query("SELECT * FROM $dbname.job_check WHERE job_name='check_clean'"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 3:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$lastclean=$lastclean->fetchAll();if(($dbuserdata=$mysqlcon->query("SELECT uuid FROM $dbname.user"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 4:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}$countrs=$dbuserdata->rowCount();$uuids=$dbuserdata->fetchAll();if($lastclean[0]['timestamp']<$cleantime){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),$lang['clean'],"\n";$start=0;$break=200;$clientdblist=array();$countdel=0;$countts=0;while($getclientdblist=$ts3->clientListDb($start,$break)){$clientdblist=array_merge($clientdblist,$getclientdblist);$start=$start+$break;$count_tsuser=array_shift($getclientdblist);if($start==100000||$count_tsuser['count']<=$start){break;}check_shutdown($timezone);usleep($slowmode);}foreach($clientdblist as $uuidts){$single_uuid=$uuidts['client_unique_identifier']->toString();$uidarrts[$single_uuid]=1;}unset($clientdblist);foreach($uuids as $uuid){if(isset($uidarrts[$uuid[0]])){$countts++;}else{$deleteuuids[]=$uuid[0];$countdel++;}}unset($uidarrts);echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['cleants'],$countts,$count_tsuser['count']),"\n";echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['cleanrs'],$countrs),"\n";if(isset($deleteuuids)){$alldeldata='';foreach($deleteuuids as $dellarr){$alldeldata=$alldeldata."'".$dellarr."',";}$alldeldata=substr($alldeldata,0,-1);$alldeldata="(".$alldeldata.")";if($alldeldata!=''){if($mysqlcon->exec("DELETE FROM $dbname.user WHERE uuid IN $alldeldata")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 5:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}else{echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),sprintf($lang['cleandel'],$countdel),"\n";if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$nowtime' WHERE job_name='check_clean'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 6:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}}}}else{echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),$lang['cleanno'],"\n";if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$nowtime' WHERE job_name='check_clean'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 7:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}}}}$buildtime=microtime(true)- $starttime;if($sqlerr==0){if($mysqlcon->exec("UPDATE $dbname.job_log SET status='0', runtime='$buildtime' WHERE id='$jobid'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 8:",print_r($mysqlcon->errorInfo()),"\n";}}else{if($mysqlcon->exec("UPDATE $dbname.job_log SET status='1', err_msg='$sqlmsg', runtime='$buildtime' WHERE id='$jobid'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"clean 9:",print_r($mysqlcon->errorInfo()),"\n";}}}?> \ No newline at end of file diff --git a/jobs/get_avatars.php b/jobs/get_avatars.php index f0a445f..fc94402 100644 --- a/jobs/get_avatars.php +++ b/jobs/get_avatars.php @@ -1,63 +1 @@ -channelFileList($cid="0", $cpw="", $path="/"); - } catch (Exception $e) { - if ($e->getCode() != 1281) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"get_avatars 1:",$e->getCode(),': ',"Error by getting Avatarlist: ",$e->getMessage(),"\n"; - $sqlmsg .= $e->getCode() . ': ' . "Error by getting Avatarlist: " . $e->getMessage(); - $sqlerr++; - } - } - $fsfilelist = opendir(substr(__DIR__,0,-4).'avatars/'); - while (false !== ($fsfile = readdir($fsfilelist))) { - if ($fsfile != '.' && $fsfile != '..') { - $fsfilelistarray[$fsfile] = filemtime(substr(__DIR__,0,-4).'avatars/'.$fsfile); - } - } - - if (isset($tsfilelist)) { - foreach($tsfilelist as $tsfile) { - $fullfilename = '/'.$tsfile['name']; - $uuidasbase16 = substr($tsfile['name'],7); - if (!isset($fsfilelistarray[$uuidasbase16.'.png']) || $tsfile['datetime']>$fsfilelistarray[$uuidasbase16.'.png']) { - if (substr($tsfile['name'],0,7) == 'avatar_') { - try { - usleep($slowmode); - $avatar = $ts3->transferInitDownload($clientftfid="5",$cid="0",$name=$fullfilename,$cpw="", $seekpos=0); - $transfer = TeamSpeak3::factory("filetransfer://" . $avatar["host"] . ":" . $avatar["port"]); - $tsfile = $transfer->download($avatar["ftkey"], $avatar["size"]); - $avatarfilepath = substr(__DIR__,0,-4).'avatars/'.$uuidasbase16.'.png'; - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Download avatar: ",$fullfilename,"\n"; - file_put_contents($avatarfilepath, $tsfile); - $count++; - } - catch (Exception $e) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"get_avatars 2:",$e->getCode(),': ',"Error by download Avatar: ",$e->getMessage(),"\n"; - $sqlmsg .= $e->getCode() . ': ' . "Error by download Avatar: " . $e->getMessage(); - $sqlerr++; - } - } - } - } - } - - $buildtime = microtime(true) - $starttime; - - if ($sqlerr == 0) { - if($mysqlcon->exec("UPDATE $dbname.job_log SET status='0', runtime='$buildtime' WHERE id='$jobid'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"get_avatars 3:",print_r($mysqlcon->errorInfo()),"\n"; - } - } else { - if($mysqlcon->exec("UPDATE $dbname.job_log SET status='1', err_msg='$sqlmsg', runtime='$buildtime' WHERE id='$jobid'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"get_avatars 4:",print_r($mysqlcon->errorInfo()),"\n"; - } - } -} -?> \ No newline at end of file +channelFileList($cid="0",$cpw="",$path="/");}catch(Exception $e){if($e->getCode()!=1281){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"get_avatars 1:",$e->getCode(),': ',"Error by getting Avatarlist: ",$e->getMessage(),"\n";$sqlmsg.=$e->getCode().': '."Error by getting Avatarlist: ".$e->getMessage();$sqlerr++;}}$fsfilelist=opendir(substr(__DIR__,0,-4).'avatars/');while(false!==($fsfile=readdir($fsfilelist))){if($fsfile!='.'&&$fsfile!='..'){$fsfilelistarray[$fsfile]=filemtime(substr(__DIR__,0,-4).'avatars/'.$fsfile);}}if(isset($tsfilelist)){foreach($tsfilelist as $tsfile){$fullfilename='/'.$tsfile['name'];$uuidasbase16=substr($tsfile['name'],7);if(!isset($fsfilelistarray[$uuidasbase16.'.png'])||$tsfile['datetime']>$fsfilelistarray[$uuidasbase16.'.png']){if(substr($tsfile['name'],0,7)=='avatar_'){try{check_shutdown($timezone);usleep($slowmode);$avatar=$ts3->transferInitDownload($clientftfid="5",$cid="0",$name=$fullfilename,$cpw="",$seekpos=0);$transfer=TeamSpeak3::factory("filetransfer://".$avatar["host"].":".$avatar["port"]);$tsfile=$transfer->download($avatar["ftkey"],$avatar["size"]);$avatarfilepath=substr(__DIR__,0,-4).'avatars/'.$uuidasbase16.'.png';echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Download avatar: ",$fullfilename,"\n";file_put_contents($avatarfilepath,$tsfile);$count++;}catch(Exception $e){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"get_avatars 2:",$e->getCode(),': ',"Error by download Avatar: ",$e->getMessage(),"\n";$sqlmsg.=$e->getCode().': '."Error by download Avatar: ".$e->getMessage();$sqlerr++;}}}}}$buildtime=microtime(true)- $starttime;if($sqlerr==0){if($mysqlcon->exec("UPDATE $dbname.job_log SET status='0', runtime='$buildtime' WHERE id='$jobid'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"get_avatars 3:",print_r($mysqlcon->errorInfo()),"\n";}}else{if($mysqlcon->exec("UPDATE $dbname.job_log SET status='1', err_msg='$sqlmsg', runtime='$buildtime' WHERE id='$jobid'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"get_avatars 4:",print_r($mysqlcon->errorInfo()),"\n";}}}?> \ No newline at end of file diff --git a/jobs/update_groups.php b/jobs/update_groups.php index 250a681..37d3ddd 100644 --- a/jobs/update_groups.php +++ b/jobs/update_groups.php @@ -1,206 +1 @@ -channelFileList($cid="0", $cpw="", $path="/icons/"); - } catch (Exception $e) { - if ($e->getCode() != 1281) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 1:",$e->getCode(),': ',"Error by getting servergrouplist: ",$e->getMessage(),"\n"; - $sqlmsg .= $e->getCode() . ': ' . "Error by getting servergrouplist: " . $e->getMessage(); - $sqlerr++; - } - } - - foreach($iconlist as $icon) { - $iconid = "i".substr($icon['name'], 5); - $iconarr[$iconid] = $icon['datetime']; - } - - try { - usleep($slowmode); - $ts3->serverGroupListReset(); - $ts3groups = $ts3->serverGroupList(); - } catch (Exception $e) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 3:",$e->getCode(),': ',"Error by getting servergrouplist: ",$e->getMessage(),"\n"; - $sqlmsg .= $e->getCode() . ': ' . "Error by getting servergrouplist: " . $e->getMessage(); - $sqlerr++; - } - - if(($dbgroups = $mysqlcon->query("SELECT * FROM $dbname.groups")) === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 2:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - if ($dbgroups->rowCount() == 0) { - $sqlhisgroup = "empty"; - } else { - $servergroups = $dbgroups->fetchAll(PDO::FETCH_ASSOC); - foreach($servergroups as $servergroup) { - $sqlhisgroup[$servergroup['sgid']] = array ( - "sgid" => $servergroup['sgid'], - "iconid" => $servergroup['iconid'], - "sgidname" => $servergroup['sgidname'], - "icondate" => $servergroup['icondate'] - ); - } - } - - // ServerIcon - $sIconId = $serverinfo['virtualserver_icon_id']; - $sIconId = ($sIconId < 0) ? (pow(2, 32)) - ($sIconId * -1) : $sIconId; - $sIconFile = 0; - if (!isset($sqlhisgroup['0']) || $sqlhisgroup['0']['iconid'] != $sIconId || $iconarr["i".$sIconId] > $sqlhisgroup['0']['icondate']) { - if($sIconId > 600) { - try { - usleep($slowmode); - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Download new ServerIcon\n"; - $sIconFile = $ts3->iconDownload(); - file_put_contents(substr(dirname(__FILE__),0,-4) . "icons/servericon.png", $sIconFile); - } catch (Exception $e) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 1:",$e->getCode(),': ',"Error by downloading Icon: ",$e->getMessage(),"\n"; - $sqlmsg .= $e->getCode() . ': ' . "Error by downloading Icon: " . $e->getMessage(); - $sqlerr++; - } - } - if (!isset($sqlhisgroup['0'])) { - $insertgroups[] = array( - "sgid" => "0", - "sgidname" => "ServerIcon", - "iconid" => $sIconId, - "icon" => $sIconFile, - "icondate" => $iconarr["i".$sIconId] - ); - } else { - $updategroups[] = array( - "sgid" => "0", - "sgidname" => "ServerIcon", - "iconid" => $sIconId, - "icon" => $sIconFile, - "icondate" => $iconarr["i".$sIconId] - ); - } - } - - // GroupIcons - foreach ($ts3groups as $servergroup) { - $tsgroupids[] = $servergroup['sgid']; - $sgid = $servergroup['sgid']; - $gefunden = 2; - $iconid = $servergroup['iconid']; - $iconid = ($iconid < 0) ? (pow(2, 32)) - ($iconid * -1) : $iconid; - $iconfile = 0; - if($iconid > 600) { - if (!isset($sqlhisgroup[$sgid]) || $sqlhisgroup[$sgid]['iconid'] != $iconid || $iconarr["i".$iconid] > $sqlhisgroup[$sgid]['icondate']) { - try { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Download new ServerGroupIcon for group ",$servergroup['name']," with ID: ",$sgid,"\n"; - $iconfile = $servergroup->iconDownload(); - file_put_contents(substr(dirname(__FILE__),0,-4) . "icons/" . $sgid . ".png", $iconfile); - } catch (Exception $e) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 4:",$e->getCode(),': ',"Error by downloading Icon: ",$e->getMessage(),"\n"; - $sqlmsg .= $e->getCode() . ': ' . "Error by downloading Icon: " . $e->getMessage(); - $sqlerr++; - } - } - } - $sgname = str_replace('\\', '\\\\', htmlspecialchars($servergroup['name'], ENT_QUOTES)); - if ($sqlhisgroup != "empty") { - foreach ($sqlhisgroup as $groups) { - if ($groups['sgid'] == $sgid) { - $gefunden = 1; - $updategroups[] = array( - "sgid" => $sgid, - "sgidname" => $sgname, - "iconid" => $iconid, - "icon" => $iconfile, - "icondate" => $iconarr["i".$iconid] - ); - break; - } - } - if ($gefunden != 1) { - $insertgroups[] = array( - "sgid" => $servergroup['sgid'], - "sgidname" => $sgname, - "iconid" => $iconid, - "icon" => $iconfile, - "icondate" => $iconarr["i".$iconid] - ); - } - } else { - $insertgroups[] = array( - "sgid" => $servergroup['sgid'], - "sgidname" => $sgname, - "iconid" => $iconid, - "icon" => $iconfile, - "icondate" => $iconarr["i".$iconid] - ); - } - } - - if (isset($insertgroups)) { - $allinsertdata = ''; - foreach ($insertgroups as $insertarr) { - if($insertarr['sgidname'] != "ServerIcon" && $insertarr['icondate'] != 0) { - $allinsertdata = $allinsertdata . "('" . $insertarr['sgid'] . "', '" . $insertarr['sgidname'] . "', '" . $insertarr['iconid'] . "', '" . $insertarr['icondate'] . "'),"; - } - } - $allinsertdata = substr($allinsertdata, 0, -1); - if ($allinsertdata != '') { - if($mysqlcon->exec("INSERT INTO $dbname.groups (sgid, sgidname, iconid, icondate) VALUES $allinsertdata") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 5:",$allinsertdata,print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - } - } - - if (isset($updategroups)) { - $allsgids = ''; - $allupdatesgid = ''; - $allupdateiconid = ''; - foreach ($updategroups as $updatedata) { - $allsgids = $allsgids . "'" . $updatedata['sgid'] . "',"; - $allupdatesgid = $allupdatesgid . "WHEN '" . $updatedata['sgid'] . "' THEN '" . $updatedata['sgidname'] . "' "; - $allupdateiconid = $allupdateiconid . "WHEN '" . $updatedata['sgid'] . "' THEN '" . $updatedata['iconid'] . "' "; - $allupdatedate = $allupdatedate . "WHEN '" . $updatedata['sgid'] . "' THEN '" . $updatedata['icondate'] . "' "; - } - $allsgids = substr($allsgids, 0, -1); - if($mysqlcon->exec("UPDATE $dbname.groups set sgidname = CASE sgid $allupdatesgid END, iconid = CASE sgid $allupdateiconid END, icondate = CASE sgid $allupdatedate END WHERE sgid IN ($allsgids)") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 6:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - } - - foreach ($sqlhisgroup as $groups) { - if(!in_array($groups['sgid'], $tsgroupids) && $groups['sgid'] != 0) { - $delsgroupids = $delsgroupids . "'" . $groups['sgid'] . "',"; - } - } - - if(isset($delsgroupids)) { - $delsgroupids = substr($delsgroupids, 0, -1); - if($mysqlcon->exec("DELETE FROM groups WHERE sgid IN ($delsgroupids)") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 7:",print_r($mysqlcon->errorInfo()),"\n"; - $sqlmsg .= print_r($mysqlcon->errorInfo()); - $sqlerr++; - } - } - - $buildtime = microtime(true) - $starttime; - - if ($sqlerr == 0) { - if($mysqlcon->exec("UPDATE $dbname.job_log SET status='0', runtime='$buildtime' WHERE id='$jobid'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 8:",print_r($mysqlcon->errorInfo()),"\n"; - } - } else { - if($mysqlcon->exec("UPDATE $dbname.job_log SET status='1', err_msg='$sqlmsg', runtime='$buildtime' WHERE id='$jobid'") === false) { - echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 9:",print_r($mysqlcon->errorInfo()),"\n"; - } - } -} -?> \ No newline at end of file +channelFileList($cid="0",$cpw="",$path="/icons/");}catch(Exception $e){if($e->getCode()!=1281){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 1:",$e->getCode(),': ',"Error by getting servergrouplist: ",$e->getMessage(),"\n";$sqlmsg.=$e->getCode().': '."Error by getting servergrouplist: ".$e->getMessage();$sqlerr++;}}foreach($iconlist as $icon){$iconid="i".substr($icon['name'],5);$iconarr[$iconid]=$icon['datetime'];}try{check_shutdown($timezone);usleep($slowmode);$ts3->serverGroupListReset();$ts3groups=$ts3->serverGroupList();}catch(Exception $e){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 2:",$e->getCode(),': ',"Error by getting servergrouplist: ",$e->getMessage(),"\n";$sqlmsg.=$e->getCode().': '."Error by getting servergrouplist: ".$e->getMessage();$sqlerr++;}if(($dbgroups=$mysqlcon->query("SELECT * FROM $dbname.groups"))===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 3:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}if($dbgroups->rowCount()==0){$sqlhisgroup="empty";}else{$servergroups=$dbgroups->fetchAll(PDO::FETCH_ASSOC);foreach($servergroups as $servergroup){$sqlhisgroup[$servergroup['sgid']]=array("sgid"=>$servergroup['sgid'],"iconid"=>$servergroup['iconid'],"sgidname"=>$servergroup['sgidname'],"icondate"=>$servergroup['icondate']);}}$sIconId=$serverinfo['virtualserver_icon_id'];$sIconId=($sIconId<0)?(pow(2,32))-($sIconId * -1):$sIconId;$sIconFile=0;if(!isset($sqlhisgroup['0'])||$sqlhisgroup['0']['iconid']!=$sIconId||$iconarr["i".$sIconId]>$sqlhisgroup['0']['icondate']){if($sIconId>600){try{check_shutdown($timezone);usleep($slowmode);echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Download new ServerIcon\n";$sIconFile=$ts3->iconDownload();file_put_contents(substr(dirname(__FILE__),0,-4)."icons/servericon.png",$sIconFile);}catch(Exception $e){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 4:",$e->getCode(),': ',"Error by downloading Icon: ",$e->getMessage(),"\n";$sqlmsg.=$e->getCode().': '."Error by downloading Icon: ".$e->getMessage();$sqlerr++;}}if(!isset($sqlhisgroup['0'])){$insertgroups[]=array("sgid"=>"0","sgidname"=>"ServerIcon","iconid"=>$sIconId,"icon"=>$sIconFile,"icondate"=>$iconarr["i".$sIconId]);}else{$updategroups[]=array("sgid"=>"0","sgidname"=>"ServerIcon","iconid"=>$sIconId,"icon"=>$sIconFile,"icondate"=>$iconarr["i".$sIconId]);}}foreach($ts3groups as $servergroup){$tsgroupids[]=$servergroup['sgid'];$sgid=$servergroup['sgid'];$sgname=str_replace('\\','\\\\',htmlspecialchars($servergroup['name'],ENT_QUOTES));$gefunden=2;$iconid=$servergroup['iconid'];$iconid=($iconid<0)?(pow(2,32))-($iconid * -1):$iconid;$iconfile=0;if($iconid>600){if(!isset($sqlhisgroup[$sgid])||$sqlhisgroup[$sgid]['iconid']!=$iconid||$iconarr["i".$iconid]>$sqlhisgroup[$sgid]['icondate']){try{echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Download new ServerGroupIcon for group ",$sgname," with ID: ",$sgid,"\n";$iconfile=$servergroup->iconDownload();file_put_contents(substr(dirname(__FILE__),0,-4)."icons/".$sgid.".png",$iconfile);}catch(Exception $e){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 5:",$e->getCode(),': ',"Error by downloading Icon: ",$e->getMessage(),"\n";$sqlmsg.=$e->getCode().': '."Error by downloading Icon: ".$e->getMessage();$sqlerr++;}}}if($sqlhisgroup!="empty"){foreach($sqlhisgroup as $groups){if($groups['sgid']==$sgid){$gefunden=1;$updategroups[]=array("sgid"=>$sgid,"sgidname"=>$sgname,"iconid"=>$iconid,"icon"=>$iconfile,"icondate"=>$iconarr["i".$iconid]);break;}}if($gefunden!=1){$insertgroups[]=array("sgid"=>$servergroup['sgid'],"sgidname"=>$sgname,"iconid"=>$iconid,"icon"=>$iconfile,"icondate"=>$iconarr["i".$iconid]);}}else{$insertgroups[]=array("sgid"=>$servergroup['sgid'],"sgidname"=>$sgname,"iconid"=>$iconid,"icon"=>$iconfile,"icondate"=>$iconarr["i".$iconid]);}}if(isset($insertgroups)){$allinsertdata='';foreach($insertgroups as $insertarr){$allinsertdata=$allinsertdata."('".$insertarr['sgid']."', '".$insertarr['sgidname']."', '".$insertarr['iconid']."', '".$insertarr['icondate']."'),";}$allinsertdata=substr($allinsertdata,0,-1);if($allinsertdata!=''){if($mysqlcon->exec("INSERT INTO $dbname.groups (sgid, sgidname, iconid, icondate) VALUES $allinsertdata")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 6:",$allinsertdata,print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}}}if(isset($updategroups)){$allsgids='';$allupdatesgid='';$allupdateiconid='';$allupdatedate='';foreach($updategroups as $updatedata){$allsgids=$allsgids."'".$updatedata['sgid']."',";$allupdatesgid=$allupdatesgid."WHEN '".$updatedata['sgid']."' THEN '".$updatedata['sgidname']."' ";$allupdateiconid=$allupdateiconid."WHEN '".$updatedata['sgid']."' THEN '".$updatedata['iconid']."' ";$allupdatedate=$allupdatedate."WHEN '".$updatedata['sgid']."' THEN '".$updatedata['icondate']."' ";}$allsgids=substr($allsgids,0,-1);if($mysqlcon->exec("UPDATE $dbname.groups set sgidname = CASE sgid $allupdatesgid END, iconid = CASE sgid $allupdateiconid END, icondate = CASE sgid $allupdatedate END WHERE sgid IN ($allsgids)")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 7:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}}if(isset($sqlhisgroup)){foreach($sqlhisgroup as $groups){if(!in_array($groups['sgid'],$tsgroupids)&&$groups['sgid']!=0){$delsgroupids=$delsgroupids."'".$groups['sgid']."',";}}}if(isset($delsgroupids)){$delsgroupids=substr($delsgroupids,0,-1);if($mysqlcon->exec("DELETE FROM groups WHERE sgid IN ($delsgroupids)")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 8:",print_r($mysqlcon->errorInfo()),"\n";$sqlmsg.=print_r($mysqlcon->errorInfo());$sqlerr++;}}$buildtime=microtime(true)- $starttime;if($sqlerr==0){if($mysqlcon->exec("UPDATE $dbname.job_log SET status='0', runtime='$buildtime' WHERE id='$jobid'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 9:",print_r($mysqlcon->errorInfo()),"\n";}}else{if($mysqlcon->exec("UPDATE $dbname.job_log SET status='1', err_msg='$sqlmsg', runtime='$buildtime' WHERE id='$jobid'")===false){echo DateTime::createFromFormat('U.u',number_format(microtime(true),6,'.',''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"update_groups 10:",print_r($mysqlcon->errorInfo()),"\n";}}}?> \ No newline at end of file diff --git a/languages/core_de.php b/languages/core_de.php index 20ccafa..c7b848c 100644 --- a/languages/core_de.php +++ b/languages/core_de.php @@ -1,351 +1 @@ - wurde nun zum Ranksystem hinzugefügt."; -$lang['alrup'] = "Das Ranksystem ist bereits up to date. Bitte lösche diese Datei von deinem Webserver!"; -$lang['changedbid'] = "User %s (eindeutige Client-ID: %s) hat eine neue TeamSpeak Client-Datenbank-ID (%s). Ersetze die alte Client-Datenbank-ID (%s) und setze die gesammelte Zeiten zurück"; -$lang['crawl'] = "Scanne nach verbundenen Usern und sammle die online Zeit..."; -$lang['clean'] = "Scanne nach Usern, welche zu löschen sind..."; -$lang['cleanc'] = "Clientlöschung"; -$lang['cleancdesc'] = "Mit dieser Funktion werden alte Clients aus dem Ranksystem gelöscht.

Hierzu wird die TeamSpeak Datenbank mit dem Ranksystem abgeglichen. Clients, welche nicht mehr in der TeamSpeak Datenbank existieren, werden aus dem Ranksystem gelöscht.

Diese Funktion kann nur genutzt werden, wenn der 'Slowmode' deaktiviert ist!


Zur automatischen Bereinigung der TeamSpeak Datenbank kann der ClientCleaner genutzt werden:
http://ts-n.net/clientcleaner.php"; -$lang['cleandel'] = "Es wurden %s Clients aus der Ranksystem-Datenbank gelöscht, da sie nicht mehr in der TeamSpeak Datenbank vorhanden sind."; -$lang['cleanno'] = "Es gab nicht zu löschen..."; -$lang['cleanp'] = "Löschintervall"; -$lang['cleanpdesc'] = "Bestimme einen Intervall, wie of die 'Clientlöschung' laufen soll.

Angabe der Zeit in Sekunden!

Empfohlen wird die Clientlöschung nur einmal am Tag laufen zu lassen, da für größere Datenbanken die Laufzeit extrem steigt."; -$lang['cleanrs'] = "Clients in der Ranksystem Datenbank: %s"; -$lang['cleants'] = "Clients in der TeamSpeak Datenbank gefunden: %s (von %s)"; -$lang['days'] = "Tage"; -$lang['dbconerr'] = "Verbindung zur MySQL-Datenbank gescheitert: "; -$lang['delcldgrpif'] = "Fehler beim Löschen der Servergruppen aus der Datenbank: %s"; -$lang['delcldgrpsc'] = "Knowledge der Servergruppen für %s User erfolgreich gelöscht."; -$lang['delclientsif'] = "%s Clients aus der Ranksystem Datenbank gelöscht!"; -$lang['delclientssc'] = "%s Clients aus der Ranksystem Datenbank erfolgreich gelöscht!"; -$lang['errlogin'] = "Benutzername und/oder Passwort sind falsch! Versuche es erneut..."; -$lang['error'] = "Fehler "; -$lang['errremgrp'] = "Fehler beim Entfernen des Users mit der eindeutigen Client-ID %s aus der Servergruppe mit der Servergruppen-Datenbank-ID %s!"; -$lang['errremdb'] = "Fehler beim Löschen des Users mit der eindeutigen Client-ID % aus der Ranksystem Datenbank!"; -$lang['errsel'] = "Fehler bei der Auswahl der Bedingungen!
ausgewählte User: %s
Option 'lösche Clients': %s
Option 'ges. online Zeit': %s"; -$lang['errukwn'] = "Unbekannter Fehler aufgetreten!"; -$lang['errupcount'] = "Fehler beim Überschreiben der ges. online Zeit %s bei User mit der eindeutigen Client-ID %s!"; -$lang['firstuse'] = "Scheint der erste Lauf zu sein. Starte loggen der Userhistorie..."; -$lang['highest'] = "höchster Rang erreicht"; -$lang['instdb'] = "Installiere Datenbank:"; -$lang['instdberr'] = "Fehler beim Erstellen der Datenbank: "; -$lang['instdbsubm'] = "Datenbank einrichten"; -$lang['instdbsuc'] = "Datenbank %s wurde erfolgreich angelegt."; -$lang['insttb'] = "Installiere Tabellen:"; -$lang['insttberr'] = "Fehler beim Erstellen der Tabelle: "; -$lang['insttbsuc'] = "Tabelle %s wurde erfolgreich angelegt."; -$lang['isntwicfg'] = "Die Datenbankkonfigurationen konnten nicht gespeichert werden! Bitte versehe die 'other/dbconfig.php' mit einem chmod 0777 und versuche es anschließend erneut."; -$lang['isntwichm'] = "Bitte versehe die 'other/dbconfig.php' und die Ordner 'avatars/', 'icons/' und 'logs/' mit den nötigen Dateiberechtigungen. Hierfür je die Berechtigung auf einem chmod 0777 setzen. Anschließend versuche es erneut (Seite neu laden)."; -$lang['isntwidb'] = "Trage deine Datenbank Einstellungen ein:"; -$lang['isntwidberr'] = "Bitte überprüfe, ob alle Felder korrekt ausgefüllt wurden!"; -$lang['isntwidbhost'] = "DB Hostadresse:"; -$lang['isntwidbhostdesc'] = "Datenbank Server Adresse
(IP oder DNS)"; -$lang['isntwidbmsg'] = "Datenbank-Fehler: "; -$lang['isntwidbname'] = "DB Name:"; -$lang['isntwidbnamedesc'] = "Name der Datenbank"; -$lang['isntwidbpass'] = "DB Passwort:"; -$lang['isntwidbpassdesc'] = "Passwort für die Datenbank"; -$lang['isntwidbtype'] = "DB Typ:"; -$lang['isntwidbtypedesc'] = "Datenbank Typ

Der benötigte PDO Treiber muss installiert sein.
Für mehr Informationen beachte die Anforderungen auf http://ts-n.net/ranksystem.php"; -$lang['isntwidbusr'] = "DB Benutzer:"; -$lang['isntwidbusrdesc'] = "Username für die Datenbank"; -$lang['isntwidel'] = "Bitte lösche noch die Datei 'install.php' und alle 'update_x-xx.php' Dateien vom Webserver und öffne danach das %s um das Ranksystem zu konfigurieren!"; -$lang['isntwiusr'] = "Benutzer für das Webinterface wurde erfolgreich erstellt."; -$lang['isntwiusrcr'] = "erstelle Zugang"; -$lang['isntwiusrdesc'] = "Gib einen frei wählbaren Benutzer und ein Passwort für das Webinterface ein. Mit dem Webinterface wird das Ranksystem konfiguriert."; -$lang['isntwiusrh'] = "Zugang - Webinterface"; -$lang['listacsg'] = "atkuelle Servergruppe"; -$lang['listcldbid'] = "Client-Datenbank-ID"; -$lang['listexgrp'] = "Ist vom Ranksystem ausgeschlossen (Servergruppen-Ausnahmen)."; -$lang['listexuid'] = "Ist vom Ranksystem ausgeschlossen (Client-Ausnahmen)."; -$lang['listip'] = "IP Adresse"; -$lang['listnick'] = "Client-Name"; -$lang['listnxsg'] = "nächste Servergruppe"; -$lang['listnxup'] = "nächster Rang"; -$lang['listrank'] = "Rang"; -$lang['listseen'] = "zuletzt gesehen"; -$lang['listsuma'] = "ges. aktive Zeit"; -$lang['listsumi'] = "ges. idle Zeit"; -$lang['listsumo'] = "ges. online Zeit"; -$lang['listtime'] = "%s Tag(e), %s Std., %s Min., %s Sek."; -$lang['listuid'] = "eindeutige Client-ID"; -$lang['new'] = "neu"; -$lang['nocount'] = "User %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) ist ein Query-User oder ist mehrmals online (nur erste Verbindung zählt) -> diese wird nicht gewertet!"; -$lang['noentry'] = "Keine Einträge gefunden.."; -$lang['pass'] = "Passwort: "; -$lang['queryname'] = "Erster Botname ist bereits in Verwendung. Versuche zweiten Botnamen zu nutzen..."; -$lang['sccrmcld'] = "User mit der eindeutigen Client-ID %s wurde erfolgreich aus der Ranksystem Datenbank gelöscht."; -$lang['sccupcount'] = "User mit der eindeutigen Client-ID %s erhielt erfolgreich ein neue ges. online Zeit von %s."; -$lang['setontime'] = "ges. online Zeit"; -$lang['setontimedesc'] = "Gib eine neue ges. online Zeit ein, welche bei den zuvor selektierten Usern hinterlegt werden soll. Mit dieser wird die alte ges. online Zeit überschrieben.

Die eingegeben ges. online Zeit wird für die nächsten Rangsteigerungen berücksichtigt."; -$lang['sgrpadd'] = "Servergruppe %s zu User %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) hinzugefügt."; -$lang['sgrprerr'] = "Es ist ein Problem mit den Servergruppen des Users %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) aufgetreten!"; -$lang['sgrprm'] = "Servergruppe %s von User %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) entfernt."; -$lang['sitegen'] = "Seite generiert in %s Sekunden mit %s Clients."; -$lang['sitegenl'] = "Seite generiert in %s Sekunden mit %s Clients (davon %s angezeigt; %s betroffen von Ausnahmeregeln; %s im höchsten Rang)."; -$lang['stix0001'] = "Server Statistiken"; -$lang['stix0002'] = "Alle User"; -$lang['stix0003'] = "zeige Liste aller User"; -$lang['stix0004'] = "Online Zeit / Total"; -$lang['stix0005'] = "zeige Top User aller Zeiten"; -$lang['stix0006'] = "zeige Top User des Monats"; -$lang['stix0007'] = "zeige Top User der Woche"; -$lang['stix0008'] = "Server Nutzung"; -$lang['stix0009'] = "der letzten 7 Tage"; -$lang['stix0010'] = "der letzten 30 Tage"; -$lang['stix0011'] = "der letzten 24 Stunden"; -$lang['stix0012'] = "wähle Zeitraum"; -$lang['stix0013'] = "letzten 24 Stunden"; -$lang['stix0014'] = "letzte Woche"; -$lang['stix0015'] = "letzer Monat"; -$lang['stix0016'] = "User: Aktive / Inaktive Zeit"; -$lang['stix0017'] = "User: Versionen"; -$lang['stix0018'] = "User: Nationalitäten"; -$lang['stix0019'] = "User: Plattformen"; -$lang['stix0020'] = "Server Details"; -$lang['stix0023'] = "Server Status"; -$lang['stix0024'] = "Online"; -$lang['stix0025'] = "Offline"; -$lang['stix0026'] = "User (Online / Max)"; -$lang['stix0027'] = "Anzahl aller Channel"; -$lang['stix0028'] = "Server Ping (Mittelwert)"; -$lang['stix0029'] = "Eingehende Daten insg."; -$lang['stix0030'] = "Ausgehende Daten insg."; -$lang['stix0031'] = "Server online seit"; -$lang['stix0032'] = "vor Offlineschaltung:"; -$lang['stix0033'] = "00 Tage, 00 Stunden, 00 Min., 00 Sek."; -$lang['stix0034'] = "Paketverlust (Mittelwert)"; -$lang['stix0035'] = " "; -$lang['stix0036'] = "Server Name"; -$lang['stix0037'] = "Server Adresse (Host Adresse : Port)"; -$lang['stix0038'] = "Server Passwort"; -$lang['stix0039'] = "Nein (Öffentlich)"; -$lang['stix0040'] = "Ja (Privat)"; -$lang['stix0041'] = "Server ID"; -$lang['stix0042'] = "Server Plattform"; -$lang['stix0043'] = "Server Version"; -$lang['stix0044'] = "Server Erstelldatum (dd/mm/yyyy)"; -$lang['stix0045'] = "Report an Serverliste"; -$lang['stix0046'] = "Aktiv"; -$lang['stix0047'] = "Deaktiviert"; -$lang['stix0048'] = "nicht genügend Daten ..."; -$lang['stix0049'] = "Online Zeit / letzter Monat"; -$lang['stix0050'] = "Online Zeit / letzte Woche"; -$lang['stmy0001'] = "Meine Statistiken"; -$lang['stmy0002'] = "Rank"; -$lang['stmy0003'] = "Datenbank ID:"; -$lang['stmy0004'] = "Eindeutige Client ID:"; -$lang['stmy0005'] = "Insg. Verbunden zum TS"; -$lang['stmy0006'] = "Startzeitpunkt der Statistiken:"; -$lang['stmy0007'] = "Gesamte online Zeit:"; -$lang['stmy0008'] = "Online Zeit der letzten 7 Tage:"; -$lang['stmy0009'] = "Online Zeit der letzten 30 Tage:"; -$lang['stmy0010'] = "Errungenschaften:"; -$lang['stmy0011'] = "Fortschritt Errungenschaft Zeit"; -$lang['stmy0012'] = "Zeit: Legendary"; -$lang['stmy0013'] = "Da du bereits %s Stunden auf dem Server online bist."; -$lang['stmy0014'] = "Abgeschlossen"; -$lang['stmy0015'] = "Zeit: Gold"; -$lang['stmy0016'] = "% errreicht für Legendary"; -$lang['stmy0017'] = "Zeit: Silver"; -$lang['stmy0018'] = "% errreicht für Gold"; -$lang['stmy0019'] = "Zeit: Bronze"; -$lang['stmy0020'] = "% errreicht für Silver"; -$lang['stmy0021'] = "Zeit: Unranked"; -$lang['stmy0022'] = "% errreicht für Bronze"; -$lang['stmy0023'] = "Fortschritt Errungenschaft Verbindungen"; -$lang['stmy0024'] = "Verbindungen: Legendary"; -$lang['stmy0025'] = "Da du bereits %s Verbindungen zum Server hergestellt hast."; -$lang['stmy0026'] = "Verbindungen: Gold"; -$lang['stmy0027'] = "Verbindungen: Silver"; -$lang['stmy0028'] = "Verbindungen: Bronze"; -$lang['stmy0029'] = "Verbindungen: Unranked"; -$lang['stnv0001'] = "Server News"; -$lang['stnv0002'] = "Schließen"; -$lang['stnv0003'] = "Client Informationen aktualisieren"; -$lang['stnv0004'] = "Benutze diese Funktion, wenn sich deine TS3 Daten geändert haben, wie z.B. dein Username."; -$lang['stnv0005'] = "Du musst hierfür mit dem TS3 Server verbunden sein!"; -$lang['stnv0006'] = "Aktualisieren"; -$lang['stnv0007'] = "Battle Area - Page Content"; -$lang['stnv0008'] = "You can challenge other users in a battle between two users or two teams."; -$lang['stnv0009'] = "While the battle is active the online time of the teams/users will be counted."; -$lang['stnv0010'] = "When the battle ends the team/user with the highest online time wins."; -$lang['stnv0011'] = "(The regular battling time is 48 hours)"; -$lang['stnv0012'] = "The winning team/user will recieve a price, which the user can use whenever the user wants."; -$lang['stnv0013'] = "It will be displayed on the My Statistics tab."; -$lang['stnv0014'] = "(Could be online time boost(2x) for 8 hours, instant online time (4 hours), etc."; -$lang['stnv0015'] = "These boosts can be used for example to climb in the top users of the week)"; -$lang['stnv0016'] = "nicht verfügbar"; -$lang['stnv0017'] = "Du bist nicht mit dem TS3 Server verbunden, daher können kein Daten angezeigt werden."; -$lang['stnv0018'] = "Bitte verbinde dich mit dem TS3 Server und aktualisiere anschließend die Session über den Aktualisierungs-Button oben rechts in der Ecke."; -$lang['stnv0019'] = "Statistiken - Inhaltserläuterung"; -$lang['stnv0020'] = "Diese Seite zeigt u.a. eine Übersicht deiner persönlichen Statistiken und Aktivität auf dem TS3 Server."; -$lang['stnv0021'] = "Die Informationen wurden gesammelt seit Beginn des Ranksystems, nicht seit Beginn des TS3 Servers."; -$lang['stnv0022'] = "Die Seite erhält ihre Daten aus einer Datenbank. Es ist also möglich, dass die angezeigten Werte von den live Werten abweichen."; -$lang['stnv0023'] = "Die Werte innerhalb der Donut-Charts können von der Anzahl der User abweichen. Hintergrund ist, dass die Daten in älteren Versionen des Ranksystems nicht gesammelt wurden."; -$lang['stnv0024'] = "Ranksystem - Statistiken"; -$lang['stnv0025'] = "Anzahl Einträge"; -$lang['stnv0026'] = "alle"; -$lang['stnv0027'] = "Die Informationen auf dieser Seite scheinen veraltet! Es scheint, das Ranksystem ist nicht mehr mit dem TS3 verbunden."; -$lang['stnv0028'] = "(Keine Verbindung zum TS3!)"; -$lang['stnv0029'] = "Rank-Liste"; -$lang['stnv0030'] = "Ranksystem Info"; -$lang['stri0001'] = "Ranksystem Informationen"; -$lang['stri0002'] = "Was ist das Ranksystem?"; -$lang['stri0003'] = "Ein TS3 Bot, der automatisch Servergruppen an User für online Zeit oder aktive Zeit auf einem TeamSpeak 3 Server zuweist. Weiterhin sammelt es diverse Statistiken und stellt diese hier dar."; -$lang['stri0004'] = "Wer hat das Ranksystem erstellt?"; -$lang['stri0005'] = "Wann wurde das Ranksystem erstellt?"; -$lang['stri0006'] = "Erste Alpha Version: 05/10/2014."; -$lang['stri0007'] = "Erste Beta Version: 01/02/2015."; -$lang['stri0008'] = "Die neuste Version kannst du auf der Ranksystem Website sehen."; -$lang['stri0009'] = "Wie wurde das Ranksystem erstellt?"; -$lang['stri0010'] = "Das Ranksystem basiert auf"; -$lang['stri0011'] = "Es nutzt weiterhin die folgenden Programmbibliotheken:"; -$lang['stri0012'] = "Ein spezieller Danke ergeht an:"; -$lang['stri0013'] = "sergey - für die russische Übersertzung"; -$lang['stri0014'] = "Bejamin Frost - für die Initialisierung des Bootstrap Designs"; -$lang['sttw0001'] = "Top User"; -$lang['sttw0002'] = "der Woche"; -$lang['sttw0003'] = "mit %s Stunden online Zeit"; -$lang['sttw0004'] = "Top 10 im Vergleich"; -$lang['sttw0005'] = "Stunden (definiert 100 %)"; -$lang['sttw0006'] = "%s Stunden (%s%)"; -$lang['sttw0007'] = "Top 10 Statistiken"; -$lang['sttw0008'] = "Top 10 vs Andere; Online Zeit"; -$lang['sttw0009'] = "Top 10 Vs Others; Aktive Zeit"; -$lang['sttw0010'] = "Top 10 Vs Others; Inaktive Zeit"; -$lang['sttw0011'] = "Top 10 (in Stunden)"; -$lang['sttw0012'] = "Andere %s User (in Stunden)"; -$lang['sttm0001'] = "des Monats"; -$lang['stta0001'] = "aller Zeiten"; -$lang['updb'] = "Das Update muss nur ausgeführt werden, wenn das Ranksystem bereits mit einer älteren Version als %s genutzt wird!

Führe das Update nur einmal aus und lösche danach die 'update_%s.php' sofort von deinem Webserver.


Update Datenbank:
"; -$lang['updel'] = "Bitte lösche die folgenden Dateien vom Hauptverzeichnis des Ranksystems, sofern sie existieren:
%s"; -$lang['upinf'] = "Eine neue Version des Ranksystems ist verfügbar. Informiere Clients auf dem Server..."; -$lang['upmov'] = "Bitte verschiebe die Datei \'%s\' in das Unterverzeichnis \'%s\' und überschreibe dabei die dort vorhandene Datei!"; -$lang['upmsg'] = "\nHey, eine neue Version des [B]Ranksystems[/B] ist verfügbar!\n\naktuelle Version: %s\n[B]neue Version: %s[/B]\n\nBitte schaue auf unsere Homepage für weitere Informationen [URL]http://ts-n.net/ranksystem.php[/URL]."; -$lang['upsucc'] = "Datenbank-Update erfolgreich durchgeführt"; -$lang['upuser'] = "User %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) erhält eine neue ges. online Zeit von %s (davon aktiv: %s)."; -$lang['upuserboost'] = "User %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) erhält eine neue ges. online Zeit von %s (davon aktiv: %s) [BOOST %sx]."; -$lang['upusrerr'] = "Die eindeutige Client-ID %s konnte auf dem TeamSpeak nicht erreicht werden!"; -$lang['upusrinf'] = "User %s wurde erfolgreich benachrichtigt."; -$lang['user'] = "Benutzername: "; -$lang['usermsgactive'] = "\nHey, du bist im Rang gestiegen, da du eine Aktivität von %s Tagen, %s Stunden, %s Minuten und %s Sekunden erreicht hast."; -$lang['usermsgonline'] = "\nHey, du bist im Rang gestiegen, da du bereits %s Tage, %s Stunden, %s Minuten und %s Sekunden online warst."; -$lang['wiaction'] = "ausführen"; -$lang['wibgco'] = "Hintergrundfarbe:"; -$lang['wibgcodesc'] = "Lege eine Hintergrundfarbe fest
(gültiger HTML Code; muss mit # beginnen)"; -$lang['wiboost'] = "Boost"; -$lang['wiboostdesc'] = "Gebe einen User auf dem TeamSpeak Server eine Servergruppe (ist manuell zu erstellen), welche hier für das Ranksystem als Boost Gruppe deklariert werden kann. Definiere hierfür noch einen Faktor (z.B. 2x) und eine Zeit, wie lange der Boost gewährt werden soll.
Umso höher der Faktor, umso schneller erreicht ein User den nächst höheren Rang.
Ist die Zeit abgelaufen, so wird dem betroffenen User die Servergruppe automatisch entfernt. Die Zeit beginnt in dem Moment zu laufen, in dem der User die Servergruppe erhält.

Servergruppen-ID => Faktor => Zeit (in Sekunden)

Beispiel:
12=>2=>6000,13=>3=>2500,14=>5=>600

Hier werden den Usern in der Servergruppe mit der ID 12 dem Faktor 2 für 6000 Sekunden, den Usern in der Servergruppe 13 dem Faktor 3 für 2500 Sekunden gewährt, und so weiter..."; -$lang['wichdbid'] = "Client-Datenbank-ID Reset"; -$lang['wichdbiddesc'] = "Setzt die online Zeit eines Users zurück, wenn sich seine TeamSpeak Client-Datenbank-ID ändert.

Beispiel:
Wird ein Client vom TeamSpeak Server gelöscht, so erhält er mit der nächsten Verbindung zum Server eine neue Client-Datenbank-ID."; -$lang['wiconferr'] = "Es ist ein Fehler in der Konfiguration des Ranksystems. Bitte prüfe im Webinterface die Kern-Einstellungen auf Richtigkeit. Besonders sollte die Einstellung 'Rangsteigerung' geprüft werden!"; -$lang['widaform'] = "Datumsformat"; -$lang['widaformdesc'] = "Gebe ein Datumsformat zur Anzeige vor.

Beispiel:
%a Tage, %h Std., %i Min., %s Sek."; -$lang['widbcfgsuc'] = "Datenbank Einstellungen erfolgreich gespeichert."; -$lang['widbcfgerr'] = "Fehler beim Speichern der Datenbank Einstellungen! Verbindung zur Datenbank oder speichern der 'other/dbconfig.php' nicht möglich."; -$lang['widelcld'] = "lösche Clients"; -$lang['widelcldgrp'] = "Servergruppen zurücksetzen"; -$lang['widelcldgrpdesc'] = "Das Ranksystem merkt sich die vergebenen Servergruppen, sodass nicht mit jedem Lauf der worker.php diese nochmals überprüft bzw. vergeben werden.

Mit dieser Funktion ist es möglich, dieses Wissen einmalig zurückzusetzen. Dadurch versucht das Ranksystem alle User (welche auf dem TS3 Server online sind) in die aktuell gültige Servergruppe zu setzen.
Für jeden User, welcher eine Servergruppe erhält bzw. in der vorhanden verbleibt, wird die Wissensdatenbank wie zu Anfang beschrieben wieder aufgebaut.

Diese Funktion kann hilreich sein, wenn sich User nicht in der Servergruppe befinden, welche für die jeweilige online Zeit vorgesehen ist.

Achtung: Bitte diese Funktion in einem Moment ausführen, in dem für nächsten Minuten kein Rankup ansteht!!! Das Ranksystem kann dann nämlich die alten Gruppen entfernen, da es hiervon nichts mehr weiß ;-)"; -$lang['widelclddesc'] = "Lösche zuvor selektierte User aus der Ranksystem Datenbank.

Hiermit bleiben die Userdaten auf dem TeamSpeak Server unberührt!"; -$lang['widelsg'] = "entferne aus Servergruppen"; -$lang['widelsgdesc'] = "Wähle, ob Clients auch aus den Servergruppen entfernt werden sollen, wenn sie aus der Ranksystem Datenbank gelöscht werden.

Es werden nur Servergruppen beachtet, welche das Ranksystem betreffen!"; -$lang['wideltime'] = "Löschzeitraum"; -$lang['wideltimedesc'] = "Lösche alte Clients aus aus der Ranksystem Datenbank.
Gib eine Zeit in Sekunden ein, welche ein User nicht mehr online war, damit er gelöscht wird.

0 - löscht alle User aus dem Ranksystem

Hiermit bleiben die Userdaten auf dem TeamSpeak Server unberührt!"; -$lang['wiexgrp'] = "Servergruppen-Ausnahmen"; -$lang['wiexgrpdesc'] = "Eine Komma getrennte Liste von Servergruppen-IDs, welche nicht am Ranksystem teilnehmen sollen.

User in mindestens einer dieser Gruppen sind von Rangsteigerungen ausgenommen."; -$lang['wiexuid'] = "Client-Ausnahmen"; -$lang['wiexuiddesc'] = "Eine Komma getrennte Liste von eindeutigen Client-IDs, welche nicht am Ranksystem teilnehmen sollen.

Aufgelistete User sind von Rangsteigerungen ausgenommen."; -$lang['wigrptime'] = "Rangsteigerung"; -$lang['wigrptimedesc'] = "Definiere hier, nach welcher Zeit ein User automatisch in eine vorgegebene Servergruppe gelangen soll.

Zeit (Sekunden)=>Servergruppen ID

Entscheidend hierfür ist die online Zeit des User bzw. wenn 'Idlezeit' aktiv, dann die aktive Zeit.

Jeder Eintrag ist vom nächsten durch ein Komma zu separieren.

Die Zeiten sind kummulativ zu hinterlegen.

Beispiel:
60=>9,120=>10,180=>11

Hier werden die User nach 60 Sekunden in die Servergruppe 9, nach wiederum 60 Sekunden in die Servergruppe 10, usw..., hinzugefügt."; -$lang['wihdco'] = "Überschriftenfarbe:"; -$lang['wihdcodesc'] = "Lege eine Überschriftenfarbe fest.
(gültiger HTML Code; muss mit # beginnen)"; -$lang['wihl'] = "Webinterface - Ranksystem"; -$lang['wihladm'] = "Admin Liste"; -$lang['wihlcfg'] = "Kern-Einstellungen"; -$lang['wihlclg'] = "Clients editieren (Global)"; -$lang['wihlcls'] = "Clients edidieren (Selektiv)"; -$lang['wihldb'] = "Datenbank-Einstellungen"; -$lang['wihlsty'] = "Style-Einstellungen"; -$lang['wihlts'] = "TeamSpeak-Einstellungen"; -$lang['wihvco'] = "Hoverfarbe:"; -$lang['wihvcodesc'] = "Lege eine Hoverfarbe fest.
(gültiger HTML Code; muss mit # beginnen)"; -$lang['wiifco'] = "Infotextfarbe:"; -$lang['wiifcodesc'] = "Lege eine Infotextfarbe fest.
(gültiger HTML Code; muss mit # beginnen)"; -$lang['wilogout'] = "Abmelden"; -$lang['wilog'] = "Log-Pfad"; -$lang['wilogdesc'] = "Pfad in dem das Logfile des Ranksystems geschrieben werden soll.

Beispiel:
/var/logs/ranksystem/

Beachte, dass der Webuser Schreibrechte in dem Verzeichnis hat."; -$lang['wimsgusr'] = "Benachrichtigung"; -$lang['wimsgusrdesc'] = "Informiere den User per privater Textnachricht über seine Rangsteigerung.

Definiere die Nachricht in der 'lang.php'
(usermsgonline bzw. usermsgactive)"; -$lang['wiscco'] = "Erfolgsmeldungsfarbe:"; -$lang['wisccodesc'] = "Lege eine Erfolgsmeldungsfarbe fest.
(gültiger HTML Code; muss mit # beginnen)"; -$lang['wiselcld'] = "selektiere User"; -$lang['wiselclddesc'] = "Wähle User anhand des letzt bekannten Usernamen aus. Hierfür einfach losschreiben.
Mehrfachselektionen sind kommagetrennt möglich, welche automatisch vorgenommen werden.

Mit den selektierten Usern kann im nächsten Schritt eine Aktion gewählt werden."; -$lang['wishcolas'] = "aktuelle Servergruppe"; -$lang['wishcolasdesc'] = "Zeige Spalte 'aktuelle Servergruppe' in der list_rankup.php"; -$lang['wishcolat'] = "aktive Zeit"; -$lang['wishcolatdesc'] = "Zeige Spalte 'ges. aktive Zeit' in der list_rankup.php"; -$lang['wishcolcld'] = "Client-Name"; -$lang['wishcolclddesc'] = "Zeige Spalte 'Client-Name' in der list_rankup.php"; -$lang['wishcoldbid'] = "Datenbank-ID"; -$lang['wishcoldbiddesc'] = "Zeige Spalte 'Client-Datenbank-ID' in der list_rankup.php"; -$lang['wishcolit'] = "idle Zeit"; -$lang['wishcolitdesc'] = "Zeige Spalte 'ges. idle Zeit' in der list_rankup.php"; -$lang['wishcolls'] = "zuletzt gesehen"; -$lang['wishcollsdesc'] = "Zeige Spalte 'zuletzt gesehen' in der list_rankup.php"; -$lang['wishcolnx'] = "nächster rank up"; -$lang['wishcolnxdesc'] = "Zeige Spalte 'nächster Rang' in der list_rankup.php"; -$lang['wishcolot'] = "online Zeit"; -$lang['wishcolotdesc'] = "Zeige Spalte 'ges. online Zeit' in der list_rankup.php"; -$lang['wishcolrg'] = "Rang"; -$lang['wishcolrgdesc'] = "Zeige Spalte 'Rang' in der list_rankup.php"; -$lang['wishcolsg'] = "nächste Servergruppe"; -$lang['wishcolsgdesc'] = "Zeige Spalte 'nächste Servergruppe' in der list_rankup.php"; -$lang['wishcoluuid'] = "Client-ID"; -$lang['wishcoluuiddesc'] = "Zeige Spalte 'eindeutige Client-ID' in der list_rankup.php"; -$lang['wishexcld'] = "ausgeschl. Clients"; -$lang['wishexclddesc'] = "Zeige User in der list_rankup.php, welche über die 'Client-Ausnahmen' nicht am Ranksystem teilnehmen."; -$lang['wishexgrp'] = "ausgeschl. Servergruppen"; -$lang['wishexgrpdesc'] = "Zeige User in der list_rankup.php, welche über die 'Servergruppen-Ausnahmen' nicht am Ranksystem teilnehmen."; -$lang['wishgen'] = "Seitengenerierung"; -$lang['wishgendesc'] = "Zeige die Zeit, welche zur Generierung der Seite benötigt wird, am Ende der Seite."; -$lang['wishhicld'] = "User in höchestem Rang"; -$lang['wishhiclddesc'] = "Zeige User in der list_rankup.php, welche den höchsten Rang errreicht haben."; -$lang['wisupidle'] = "Idlezeit"; -$lang['wisupidledesc'] = "Ist diese Funktion aktiv, wird die 'ges. idle Zeit' eines Users von der 'ges. online Zeit' abgezogen. Anstelle der 'ges. online Zeit' wird somit die vorgenannte Differenz für Rangsteigerungen herangezogen."; -$lang['wisvconf'] = "speichern"; -$lang['wisvsuc'] = "Änderungen erfolgreich gesichert!"; -$lang['witime'] = "Zeitzone"; -$lang['witimedesc'] = "Wähle die Zeitzone, die für den Sever gilt."; -$lang['wits3dch'] = "Default Channel"; -$lang['wits3dchdesc'] = "Die channel-ID, mit der sich der Bot verbindet.

In diesem Channel wechselt der Bot nach dem Verbinden mit dem TeamSpeak Server."; -$lang['wits3host'] = "TS3 Hostadresse"; -$lang['wits3hostdesc'] = "TeamSpeak 3 Server Adresse
(IP oder DNS)"; -$lang['wits3sm'] = "Slowmode"; -$lang['wits3smdesc'] = "Mit dem Slowmode werden die Query-Anfragen an den TeamSpeak Server reduziert. Dies schützt vor einem Ban aufgrund von flooding.
TeamSpeak Query Befehle werden mit dieser Funktion verzögert abgeschickt.

!!! AUCH REDUZIERT ER DIE CPU USAGE !!!

Die Aktivierung ist nicht empfohlen, wenn nicht benötigt. Die Verzögerung (delay) erhöht die Laufzeit eines Durchgangs des Bots, dadurch wird er unpräziser."; -$lang['wits3qnm'] = "Botname"; -$lang['wits3qnm2'] = "2. Botname"; -$lang['wits3qnm2desc'] = "Ein zweiter Botname, falls der erste bereits genutzt wird."; -$lang['wits3qnmdesc'] = "Der Name, mit dem die Query-Verbindung augebaut werden soll.
Der Name kann frei gewählt werden."; -$lang['wits3querpw'] = "TS3 Query-Passwort"; -$lang['wits3querpwdesc'] = "TeamSpeak 3 Query Passwort
Passwort des Query Benutzers"; -$lang['wits3querusr'] = "TS3 Query-Benutzer"; -$lang['wits3querusrdesc'] = "TeamSpeak 3 Query Benutzername
Standard ist serveradmin
Natürlich kann auch ein gesonderter Query-Benutzer erstellt und genutzt werden.
Die benötigten Rechte sind hier aufgelistet:
http://ts-n.net/ranksystem.php"; -$lang['wits3query'] = "TS3 Query-Port"; -$lang['wits3querydesc'] = "TeamSpeak 3 Query Port
Standard ist 10011 (TCP)
andere Werte sollten in der 'ts3server.ini' zu finden sein."; -$lang['wits3voice'] = "TS3 Voice-Port"; -$lang['wits3voicedesc'] = "TeamSpeak 3 Voice Port
Standard ist 9987 (UDP)
Dieser Port wird zum Verbinden mit dem TS3 Client genutzt."; -$lang['witxco'] = "Textfarbe:"; -$lang['witxcodesc'] = "Lege eine Textfarbe fest.
(gültiger HTML Code; muss mit # beginnen)"; -$lang['wiupcheck'] = "Update-Prüfung"; -$lang['wiupcheckdesc'] = "Ist die Update-Prüfung aktiv, werden nachfolgend genannte User mit einer privaten Textnachricht informiert, sobald ein Update verfügbar ist."; -$lang['wiuptime'] = "Prüfungsintervall"; -$lang['wiuptimedesc'] = "Gib an alle wie viel Sekunden das Ranksystem prüfen soll, ob ein Update verfügbar ist.
Beachte, bei jeder Prüfung werden die hinterlegten User über ein verfügbares Update benachrichtigt. Ist kein hinterlegter User online, wird mit dem nächsten Intervall versucht zu benachrichtigen."; -$lang['wiupuid'] = "Empfänger"; -$lang['wiupuiddesc'] = "Eine Komma getrennte Liste von eindeutigen Client-IDs, welche via privater Textnachricht auf dem TeamSpeak über ein Update informiert werden sollen."; -$lang['wiversion'] = "(verwendete Version %s)"; -$lang['wivlang'] = "Sprache"; -$lang['wivlangdesc'] = "Sprache des Ranksystems

de - Deutsch
en - english
ru - русский"; -$lang['wiwnco'] = "Warntextfarbe:"; -$lang['wiwncodesc'] = "Lege eine Warntextfarbe fest.
(gültiger HTML Code; muss mit # beginnen)"; -?> \ No newline at end of file + wurde nun zum Ranksystem hinzugefügt.";$lang['alrup']="Das Ranksystem ist bereits up to date. Bitte lösche diese Datei von deinem Webserver!";$lang['changedbid']="User %s (eindeutige Client-ID: %s) hat eine neue TeamSpeak Client-Datenbank-ID (%s). Ersetze die alte Client-Datenbank-ID (%s) und setze die gesammelte Zeiten zurück";$lang['crawl']="Scanne nach verbundenen Usern und sammle die online Zeit...";$lang['clean']="Scanne nach Usern, welche zu löschen sind...";$lang['cleanc']="Clientlöschung";$lang['cleancdesc']="Mit dieser Funktion werden alte Clients aus dem Ranksystem gelöscht.

Hierzu wird die TeamSpeak Datenbank mit dem Ranksystem abgeglichen. Clients, welche nicht mehr in der TeamSpeak Datenbank existieren, werden aus dem Ranksystem gelöscht.

Diese Funktion kann nur genutzt werden, wenn der 'Slowmode' deaktiviert ist!


Zur automatischen Bereinigung der TeamSpeak Datenbank kann der ClientCleaner genutzt werden:
http://ts-n.net/clientcleaner.php";$lang['cleandel']="Es wurden %s Clients aus der Ranksystem-Datenbank gelöscht, da sie nicht mehr in der TeamSpeak Datenbank vorhanden sind.";$lang['cleanno']="Es gab nicht zu löschen...";$lang['cleanp']="Löschintervall";$lang['cleanpdesc']="Bestimme einen Intervall, wie of die 'Clientlöschung' laufen soll.

Angabe der Zeit in Sekunden!

Empfohlen wird die Clientlöschung nur einmal am Tag laufen zu lassen, da für größere Datenbanken die Laufzeit extrem steigt.";$lang['cleanrs']="Clients in der Ranksystem Datenbank: %s";$lang['cleants']="Clients in der TeamSpeak Datenbank gefunden: %s (von %s)";$lang['days']="Tage";$lang['dbconerr']="Verbindung zur MySQL-Datenbank gescheitert: ";$lang['delcldgrpif']="Fehler beim Löschen der Servergruppen aus der Datenbank: %s";$lang['delcldgrpsc']="Knowledge der Servergruppen für %s User erfolgreich gelöscht.";$lang['delclientsif']="%s Clients aus der Ranksystem Datenbank gelöscht!";$lang['delclientssc']="%s Clients aus der Ranksystem Datenbank erfolgreich gelöscht!";$lang['errlogin']="Benutzername und/oder Passwort sind falsch! Versuche es erneut...";$lang['error']="Fehler ";$lang['errremgrp']="Fehler beim Entfernen des Users mit der eindeutigen Client-ID %s aus der Servergruppe mit der Servergruppen-Datenbank-ID %s!";$lang['errremdb']="Fehler beim Löschen des Users mit der eindeutigen Client-ID % aus der Ranksystem Datenbank!";$lang['errsel']="Fehler bei der Auswahl der Bedingungen!
ausgewählte User: %s
Option 'lösche Clients': %s
Option 'ges. online Zeit': %s";$lang['errukwn']="Unbekannter Fehler aufgetreten!";$lang['errupcount']="Fehler beim Überschreiben der ges. online Zeit %s bei User mit der eindeutigen Client-ID %s!";$lang['firstuse']="Scheint der erste Lauf zu sein. Starte loggen der Userhistorie...";$lang['highest']="höchster Rang erreicht";$lang['instdb']="Installiere Datenbank:";$lang['instdberr']="Fehler beim Erstellen der Datenbank: ";$lang['instdbsubm']="Datenbank einrichten";$lang['instdbsuc']="Datenbank %s wurde erfolgreich angelegt.";$lang['insttb']="Installiere Tabellen:";$lang['insttberr']="Fehler beim Erstellen der Tabelle: ";$lang['insttbsuc']="Tabelle %s wurde erfolgreich angelegt.";$lang['isntwicfg']="Die Datenbankkonfigurationen konnten nicht gespeichert werden! Bitte versehe die 'other/dbconfig.php' mit einem chmod 0777 und versuche es anschließend erneut.";$lang['isntwichm']="Bitte versehe die 'other/dbconfig.php' und die Ordner 'avatars/', 'icons/' und 'logs/' mit den nötigen Dateiberechtigungen. Hierfür je die Berechtigung auf einem chmod 0777 setzen. Anschließend versuche es erneut (Seite neu laden).";$lang['isntwidb']="Trage deine Datenbank Einstellungen ein:";$lang['isntwidberr']="Bitte überprüfe, ob alle Felder korrekt ausgefüllt wurden!";$lang['isntwidbhost']="DB Hostadresse:";$lang['isntwidbhostdesc']="Datenbank Server Adresse
(IP oder DNS)";$lang['isntwidbmsg']="Datenbank-Fehler: ";$lang['isntwidbname']="DB Name:";$lang['isntwidbnamedesc']="Name der Datenbank";$lang['isntwidbpass']="DB Passwort:";$lang['isntwidbpassdesc']="Passwort für die Datenbank";$lang['isntwidbtype']="DB Typ:";$lang['isntwidbtypedesc']="Datenbank Typ

Der benötigte PDO Treiber muss installiert sein.
Für mehr Informationen beachte die Anforderungen auf http://ts-n.net/ranksystem.php";$lang['isntwidbusr']="DB Benutzer:";$lang['isntwidbusrdesc']="Username für die Datenbank";$lang['isntwidel']="Bitte lösche noch die Datei 'install.php' und alle 'update_x-xx.php' Dateien vom Webserver und öffne danach das %s um das Ranksystem zu konfigurieren!";$lang['isntwiusr']="Benutzer für das Webinterface wurde erfolgreich erstellt.";$lang['isntwiusrcr']="erstelle Zugang";$lang['isntwiusrdesc']="Gib einen frei wählbaren Benutzer und ein Passwort für das Webinterface ein. Mit dem Webinterface wird das Ranksystem konfiguriert.";$lang['isntwiusrh']="Zugang - Webinterface";$lang['listacsg']="atkuelle Servergruppe";$lang['listcldbid']="Client-Datenbank-ID";$lang['listexgrp']="Ist vom Ranksystem ausgeschlossen (Servergruppen-Ausnahmen).";$lang['listexuid']="Ist vom Ranksystem ausgeschlossen (Client-Ausnahmen).";$lang['listip']="IP Adresse";$lang['listnick']="Client-Name";$lang['listnxsg']="nächste Servergruppe";$lang['listnxup']="nächster Rang";$lang['listrank']="Rang";$lang['listseen']="zuletzt gesehen";$lang['listsuma']="ges. aktive Zeit";$lang['listsumi']="ges. idle Zeit";$lang['listsumo']="ges. online Zeit";$lang['listtime']="%s Tag(e), %s Std., %s Min., %s Sek.";$lang['listuid']="eindeutige Client-ID";$lang['new']="neu";$lang['nocount']="User %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) ist ein Query-User oder ist mehrmals online (nur erste Verbindung zählt) -> diese wird nicht gewertet!";$lang['noentry']="Keine Einträge gefunden..";$lang['pass']="Passwort: ";$lang['queryname']="Erster Botname ist bereits in Verwendung. Versuche zweiten Botnamen zu nutzen...";$lang['sccrmcld']="User mit der eindeutigen Client-ID %s wurde erfolgreich aus der Ranksystem Datenbank gelöscht.";$lang['sccupcount']="User mit der eindeutigen Client-ID %s erhielt erfolgreich ein neue ges. online Zeit von %s.";$lang['setontime']="ges. online Zeit";$lang['setontimedesc']="Gib eine neue ges. online Zeit ein, welche bei den zuvor selektierten Usern hinterlegt werden soll. Mit dieser wird die alte ges. online Zeit überschrieben.

Die eingegeben ges. online Zeit wird für die nächsten Rangsteigerungen berücksichtigt.";$lang['sgrpadd']="Servergruppe %s zu User %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) hinzugefügt.";$lang['sgrprerr']="Es ist ein Problem mit den Servergruppen des Users %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) aufgetreten!";$lang['sgrprm']="Servergruppe %s von User %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) entfernt.";$lang['sitegen']="Seite generiert in %s Sekunden mit %s Clients.";$lang['sitegenl']="Seite generiert in %s Sekunden mit %s Clients (davon %s angezeigt; %s betroffen von Ausnahmeregeln; %s im höchsten Rang).";$lang['stix0001']="Server Statistiken";$lang['stix0002']="Anzahl User";$lang['stix0003']="zeige Liste aller User";$lang['stix0004']="Online Zeit aller User / Total";$lang['stix0005']="zeige Top User aller Zeiten";$lang['stix0006']="zeige Top User des Monats";$lang['stix0007']="zeige Top User der Woche";$lang['stix0008']="Server Nutzung";$lang['stix0009']="der letzten 7 Tage";$lang['stix0010']="der letzten 30 Tage";$lang['stix0011']="der letzten 24 Stunden";$lang['stix0012']="wähle Zeitraum";$lang['stix0013']="letzten 24 Stunden";$lang['stix0014']="letzte Woche";$lang['stix0015']="letzer Monat";$lang['stix0016']="Aktive / Inaktive Zeit (aller User)";$lang['stix0017']="Versionen (aller User)";$lang['stix0018']="Nationalitäten (aller User)";$lang['stix0019']="Plattformen (aller User)";$lang['stix0020']="Server Details";$lang['stix0023']="Server Status";$lang['stix0024']="Online";$lang['stix0025']="Offline";$lang['stix0026']="User (Online / Max)";$lang['stix0027']="Anzahl aller Channel";$lang['stix0028']="Server Ping (Mittelwert)";$lang['stix0029']="Eingehende Daten insg.";$lang['stix0030']="Ausgehende Daten insg.";$lang['stix0031']="Server online seit";$lang['stix0032']="vor Offlineschaltung:";$lang['stix0033']="00 Tage, 00 Stunden, 00 Min., 00 Sek.";$lang['stix0034']="Paketverlust (Mittelwert)";$lang['stix0035']=" ";$lang['stix0036']="Server Name";$lang['stix0037']="Server Adresse (Host Adresse : Port)";$lang['stix0038']="Server Passwort";$lang['stix0039']="Nein (Öffentlich)";$lang['stix0040']="Ja (Privat)";$lang['stix0041']="Server ID";$lang['stix0042']="Server Plattform";$lang['stix0043']="Server Version";$lang['stix0044']="Server Erstelldatum (dd/mm/yyyy)";$lang['stix0045']="Report an Serverliste";$lang['stix0046']="Aktiv";$lang['stix0047']="Deaktiviert";$lang['stix0048']="nicht genügend Daten ...";$lang['stix0049']="Online Zeit aller User / Monat";$lang['stix0050']="Online Zeit aller User / Woche";$lang['stix0051']="TeamSpeak hat gefailed, daher kein Erstelldatum...";$lang['stmy0001']="Meine Statistiken";$lang['stmy0002']="Rank";$lang['stmy0003']="Datenbank ID:";$lang['stmy0004']="Eindeutige Client ID:";$lang['stmy0005']="Insg. Verbunden zum TS";$lang['stmy0006']="Startzeitpunkt der Statistiken:";$lang['stmy0007']="Gesamte online Zeit:";$lang['stmy0008']="Online Zeit der letzten 7 Tage:";$lang['stmy0009']="Online Zeit der letzten 30 Tage:";$lang['stmy0010']="Errungenschaften:";$lang['stmy0011']="Fortschritt Errungenschaft Zeit";$lang['stmy0012']="Zeit: Legendär";$lang['stmy0013']="Da du bereits %s Stunden auf dem Server online bist.";$lang['stmy0014']="Abgeschlossen";$lang['stmy0015']="Zeit: Gold";$lang['stmy0016']="% erreicht für Legendär";$lang['stmy0017']="Zeit: Silber";$lang['stmy0018']="% errreicht für Gold";$lang['stmy0019']="Zeit: Bronze";$lang['stmy0020']="% errreicht für Silber";$lang['stmy0021']="Zeit: Unranked";$lang['stmy0022']="% errreicht für Bronze";$lang['stmy0023']="Fortschritt Errungenschaft Verbindungen";$lang['stmy0024']="Verbindungen: Legendär";$lang['stmy0025']="Da du bereits %s zum Server verbunden warst.";$lang['stmy0026']="Verbindungen: Gold";$lang['stmy0027']="Verbindungen: Silber";$lang['stmy0028']="Verbindungen: Bronze";$lang['stmy0029']="Verbindungen: Unranked";$lang['stnv0001']="Server News";$lang['stnv0002']="Schließen";$lang['stnv0003']="Client Informationen aktualisieren";$lang['stnv0004']="Benutze diese Funktion, wenn sich deine TS3 Daten geändert haben, wie z.B. dein Username.";$lang['stnv0005']="Du musst hierfür mit dem TS3 Server verbunden sein!";$lang['stnv0006']="Aktualisieren";$lang['stnv0007']="Battle Area - Page Content";$lang['stnv0008']="You can challenge other users in a battle between two users or two teams.";$lang['stnv0009']="While the battle is active the online time of the teams/users will be counted.";$lang['stnv0010']="When the battle ends the team/user with the highest online time wins.";$lang['stnv0011']="(The regular battling time is 48 hours)";$lang['stnv0012']="The winning team/user will recieve a price, which the user can use whenever the user wants.";$lang['stnv0013']="It will be displayed on the My Statistics tab.";$lang['stnv0014']="(Could be online time boost(2x) for 8 hours, instant online time (4 hours), etc.";$lang['stnv0015']="These boosts can be used for example to climb in the top users of the week)";$lang['stnv0016']="nicht verfügbar";$lang['stnv0017']="Du bist nicht mit dem TS3 Server verbunden, daher können kein Daten angezeigt werden.";$lang['stnv0018']="Bitte verbinde dich mit dem TS3 Server und aktualisiere anschließend die Session über den Aktualisierungs-Button oben rechts in der Ecke.";$lang['stnv0019']="Statistiken - Inhaltserläuterung";$lang['stnv0020']="Diese Seite zeigt u.a. eine Übersicht deiner persönlichen Statistiken und Aktivität auf dem TS3 Server.";$lang['stnv0021']="Die Informationen wurden gesammelt seit Beginn des Ranksystems, nicht seit Beginn des TS3 Servers.";$lang['stnv0022']="Die Seite erhält ihre Daten aus einer Datenbank. Es ist also möglich, dass die angezeigten Werte von den live Werten abweichen.";$lang['stnv0023']="Die Werte innerhalb der Donut-Charts können von der Anzahl der User abweichen. Hintergrund ist, dass die Daten in älteren Versionen des Ranksystems nicht gesammelt wurden.";$lang['stnv0024']="Ranksystem - Statistiken";$lang['stnv0025']="Anzahl Einträge";$lang['stnv0026']="alle";$lang['stnv0027']="Die Informationen auf dieser Seite scheinen veraltet! Es scheint, das Ranksystem ist nicht mehr mit dem TS3 verbunden.";$lang['stnv0028']="(Keine Verbindung zum TS3!)";$lang['stnv0029']="Rank-Liste";$lang['stnv0030']="Ranksystem Info";$lang['stnv0031']="DE - Deutsch";$lang['stnv0032']="EN - English";$lang['stnv0033']="RU - русский";$lang['stri0001']="Ranksystem Informationen";$lang['stri0002']="Was ist das Ranksystem?";$lang['stri0003']="Ein TS3 Bot, der automatisch Servergruppen an User für online Zeit oder aktive Zeit auf einem TeamSpeak 3 Server zuweist. Weiterhin sammelt es diverse Statistiken und stellt diese hier dar.";$lang['stri0004']="Wer hat das Ranksystem erstellt?";$lang['stri0005']="Wann wurde das Ranksystem erstellt?";$lang['stri0006']="Erste Alpha Version: 05/10/2014.";$lang['stri0007']="Erste Beta Version: 01/02/2015.";$lang['stri0008']="Die neuste Version kannst du auf der Ranksystem Website sehen.";$lang['stri0009']="Wie wurde das Ranksystem erstellt?";$lang['stri0010']="Das Ranksystem basiert auf";$lang['stri0011']="Es nutzt weiterhin die folgenden Programmbibliotheken:";$lang['stri0012']="Ein spezieller Danke ergeht an:";$lang['stri0013']="sergey - für die russische Übersertzung";$lang['stri0014']="Bejamin Frost - für die Initialisierung des Bootstrap Designs";$lang['sttw0001']="Top User";$lang['sttw0002']="der Woche";$lang['sttw0003']="mit %s Stunden online Zeit";$lang['sttw0004']="Top 10 im Vergleich";$lang['sttw0005']="Stunden (definiert 100 %)";$lang['sttw0006']="%s Stunden (%s%)";$lang['sttw0007']="Top 10 Statistiken";$lang['sttw0008']="Top 10 vs Andere; Online Zeit";$lang['sttw0009']="Top 10 Vs Others; Aktive Zeit";$lang['sttw0010']="Top 10 Vs Others; Inaktive Zeit";$lang['sttw0011']="Top 10 (in Stunden)";$lang['sttw0012']="Andere %s User (in Stunden)";$lang['sttm0001']="des Monats";$lang['stta0001']="aller Zeiten";$lang['updb']="Das Update muss nur ausgeführt werden, wenn das Ranksystem bereits mit einer älteren Version als %s genutzt wird!

Führe das Update nur einmal aus und lösche danach die 'update_%s.php' sofort von deinem Webserver.


Update Datenbank:
";$lang['updel']="Bitte lösche die folgenden Dateien vom Hauptverzeichnis des Ranksystems, sofern sie existieren:
%s";$lang['upinf']="Eine neue Version des Ranksystems ist verfügbar. Informiere Clients auf dem Server...";$lang['upmov']="Bitte verschiebe die Datei \'%s\' in das Unterverzeichnis \'%s\' und überschreibe dabei die dort vorhandene Datei!";$lang['upmsg']="\nHey, eine neue Version des [B]Ranksystems[/B] ist verfügbar!\n\naktuelle Version: %s\n[B]neue Version: %s[/B]\n\nBitte schaue auf unsere Homepage für weitere Informationen [URL]http://ts-n.net/ranksystem.php[/URL].";$lang['upsucc']="Datenbank-Update erfolgreich durchgeführt";$lang['upuser']="User %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) erhält eine neue ges. online Zeit von %s (davon aktiv: %s).";$lang['upuserboost']="User %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) erhält eine neue ges. online Zeit von %s (davon aktiv: %s) [BOOST %sx].";$lang['upusrerr']="Die eindeutige Client-ID %s konnte auf dem TeamSpeak nicht erreicht werden!";$lang['upusrinf']="User %s wurde erfolgreich benachrichtigt.";$lang['user']="Benutzername: ";$lang['usermsgactive']="\nHey, du bist im Rang gestiegen, da du eine Aktivität von %s Tagen, %s Stunden, %s Minuten und %s Sekunden erreicht hast.";$lang['usermsgonline']="\nHey, du bist im Rang gestiegen, da du bereits %s Tage, %s Stunden, %s Minuten und %s Sekunden online warst.";$lang['wiaction']="ausführen";$lang['wibgco']="Hintergrundfarbe:";$lang['wibgcodesc']="Lege eine Hintergrundfarbe fest
(gültiger HTML Code; muss mit # beginnen)";$lang['wiboost']="Boost";$lang['wiboostdesc']="Gebe einen User auf dem TeamSpeak Server eine Servergruppe (ist manuell zu erstellen), welche hier für das Ranksystem als Boost Gruppe deklariert werden kann. Definiere hierfür noch einen Faktor (z.B. 2x) und eine Zeit, wie lange der Boost gewährt werden soll.
Umso höher der Faktor, umso schneller erreicht ein User den nächst höheren Rang.
Ist die Zeit abgelaufen, so wird dem betroffenen User die Servergruppe automatisch entfernt. Die Zeit beginnt in dem Moment zu laufen, in dem der User die Servergruppe erhält.

Servergruppen-ID => Faktor => Zeit (in Sekunden)

Beispiel:
12=>2=>6000,13=>3=>2500,14=>5=>600

Hier werden den Usern in der Servergruppe mit der ID 12 dem Faktor 2 für 6000 Sekunden, den Usern in der Servergruppe 13 dem Faktor 3 für 2500 Sekunden gewährt, und so weiter...";$lang['wichdbid']="Client-Datenbank-ID Reset";$lang['wichdbiddesc']="Setzt die online Zeit eines Users zurück, wenn sich seine TeamSpeak Client-Datenbank-ID ändert.

Beispiel:
Wird ein Client vom TeamSpeak Server gelöscht, so erhält er mit der nächsten Verbindung zum Server eine neue Client-Datenbank-ID.";$lang['wiconferr']="Es ist ein Fehler in der Konfiguration des Ranksystems. Bitte prüfe im Webinterface die Kern-Einstellungen auf Richtigkeit. Besonders sollte die Einstellung 'Rangsteigerung' geprüft werden!";$lang['widaform']="Datumsformat";$lang['widaformdesc']="Gebe ein Datumsformat zur Anzeige vor.

Beispiel:
%a Tage, %h Std., %i Min., %s Sek.";$lang['widbcfgsuc']="Datenbank Einstellungen erfolgreich gespeichert.";$lang['widbcfgerr']="Fehler beim Speichern der Datenbank Einstellungen! Verbindung zur Datenbank oder speichern der 'other/dbconfig.php' nicht möglich.";$lang['widelcld']="lösche Clients";$lang['widelcldgrp']="Servergruppen zurücksetzen";$lang['widelcldgrpdesc']="Das Ranksystem merkt sich die vergebenen Servergruppen, sodass nicht mit jedem Lauf der worker.php diese nochmals überprüft bzw. vergeben werden.

Mit dieser Funktion ist es möglich, dieses Wissen einmalig zurückzusetzen. Dadurch versucht das Ranksystem alle User (welche auf dem TS3 Server online sind) in die aktuell gültige Servergruppe zu setzen.
Für jeden User, welcher eine Servergruppe erhält bzw. in der vorhanden verbleibt, wird die Wissensdatenbank wie zu Anfang beschrieben wieder aufgebaut.

Diese Funktion kann hilreich sein, wenn sich User nicht in der Servergruppe befinden, welche für die jeweilige online Zeit vorgesehen ist.

Achtung: Bitte diese Funktion in einem Moment ausführen, in dem für nächsten Minuten kein Rankup ansteht!!! Das Ranksystem kann dann nämlich die alten Gruppen entfernen, da es hiervon nichts mehr weiß ;-)";$lang['widelclddesc']="Lösche zuvor selektierte User aus der Ranksystem Datenbank.

Hiermit bleiben die Userdaten auf dem TeamSpeak Server unberührt!";$lang['widelsg']="entferne aus Servergruppen";$lang['widelsgdesc']="Wähle, ob Clients auch aus den Servergruppen entfernt werden sollen, wenn sie aus der Ranksystem Datenbank gelöscht werden.

Es werden nur Servergruppen beachtet, welche das Ranksystem betreffen!";$lang['wideltime']="Löschzeitraum";$lang['wideltimedesc']="Lösche alte Clients aus aus der Ranksystem Datenbank.
Gib eine Zeit in Sekunden ein, welche ein User nicht mehr online war, damit er gelöscht wird.

0 - löscht alle User aus dem Ranksystem

Hiermit bleiben die Userdaten auf dem TeamSpeak Server unberührt!";$lang['wiexgrp']="Servergruppen-Ausnahmen";$lang['wiexgrpdesc']="Eine Komma getrennte Liste von Servergruppen-IDs, welche nicht am Ranksystem teilnehmen sollen.

User in mindestens einer dieser Gruppen sind von Rangsteigerungen ausgenommen.";$lang['wiexuid']="Client-Ausnahmen";$lang['wiexuiddesc']="Eine Komma getrennte Liste von eindeutigen Client-IDs, welche nicht am Ranksystem teilnehmen sollen.

Aufgelistete User sind von Rangsteigerungen ausgenommen.";$lang['wigrptime']="Rangsteigerung";$lang['wigrptimedesc']="Definiere hier, nach welcher Zeit ein User automatisch in eine vorgegebene Servergruppe gelangen soll.

Zeit (Sekunden)=>Servergruppen ID

Entscheidend hierfür ist die online Zeit des User bzw. wenn 'Idlezeit' aktiv, dann die aktive Zeit.

Jeder Eintrag ist vom nächsten durch ein Komma zu separieren.

Die Zeiten sind kummulativ zu hinterlegen.

Beispiel:
60=>9,120=>10,180=>11

Hier werden die User nach 60 Sekunden in die Servergruppe 9, nach wiederum 60 Sekunden in die Servergruppe 10, usw..., hinzugefügt.";$lang['wihdco']="Überschriftenfarbe:";$lang['wihdcodesc']="Lege eine Überschriftenfarbe fest.
(gültiger HTML Code; muss mit # beginnen)";$lang['wihl']="Webinterface - Ranksystem";$lang['wihladm']="Admin Liste";$lang['wihlcfg']="Kern-Einstellungen";$lang['wihlclg']="Clients editieren (Global)";$lang['wihlcls']="Clients edidieren (Selektiv)";$lang['wihldb']="Datenbank-Einstellungen";$lang['wihlsty']="Style-Einstellungen";$lang['wihlts']="TeamSpeak-Einstellungen";$lang['wihvco']="Hoverfarbe:";$lang['wihvcodesc']="Lege eine Hoverfarbe fest.
(gültiger HTML Code; muss mit # beginnen)";$lang['wiifco']="Infotextfarbe:";$lang['wiifcodesc']="Lege eine Infotextfarbe fest.
(gültiger HTML Code; muss mit # beginnen)";$lang['wilogout']="Abmelden";$lang['wilog']="Log-Pfad";$lang['wilogdesc']="Pfad in dem das Logfile des Ranksystems geschrieben werden soll.

Beispiel:
/var/logs/ranksystem/

Beachte, dass der Webuser Schreibrechte in dem Verzeichnis hat.";$lang['wimsgusr']="Benachrichtigung";$lang['wimsgusrdesc']="Informiere den User per privater Textnachricht über seine Rangsteigerung.

Definiere die Nachricht in der 'lang.php'
(usermsgonline bzw. usermsgactive)";$lang['wiscco']="Erfolgsmeldungsfarbe:";$lang['wisccodesc']="Lege eine Erfolgsmeldungsfarbe fest.
(gültiger HTML Code; muss mit # beginnen)";$lang['wiselcld']="selektiere User";$lang['wiselclddesc']="Wähle User anhand des letzt bekannten Usernamen aus. Hierfür einfach losschreiben.
Mehrfachselektionen sind kommagetrennt möglich, welche automatisch vorgenommen werden.

Mit den selektierten Usern kann im nächsten Schritt eine Aktion gewählt werden.";$lang['wishcolas']="aktuelle Servergruppe";$lang['wishcolasdesc']="Zeige Spalte 'aktuelle Servergruppe' in der list_rankup.php";$lang['wishcolat']="aktive Zeit";$lang['wishcolatdesc']="Zeige Spalte 'ges. aktive Zeit' in der list_rankup.php";$lang['wishcolcld']="Client-Name";$lang['wishcolclddesc']="Zeige Spalte 'Client-Name' in der list_rankup.php";$lang['wishcoldbid']="Datenbank-ID";$lang['wishcoldbiddesc']="Zeige Spalte 'Client-Datenbank-ID' in der list_rankup.php";$lang['wishcolit']="idle Zeit";$lang['wishcolitdesc']="Zeige Spalte 'ges. idle Zeit' in der list_rankup.php";$lang['wishcolls']="zuletzt gesehen";$lang['wishcollsdesc']="Zeige Spalte 'zuletzt gesehen' in der list_rankup.php";$lang['wishcolnx']="nächster rank up";$lang['wishcolnxdesc']="Zeige Spalte 'nächster Rang' in der list_rankup.php";$lang['wishcolot']="online Zeit";$lang['wishcolotdesc']="Zeige Spalte 'ges. online Zeit' in der list_rankup.php";$lang['wishcolrg']="Rang";$lang['wishcolrgdesc']="Zeige Spalte 'Rang' in der list_rankup.php";$lang['wishcolsg']="nächste Servergruppe";$lang['wishcolsgdesc']="Zeige Spalte 'nächste Servergruppe' in der list_rankup.php";$lang['wishcoluuid']="Client-ID";$lang['wishcoluuiddesc']="Zeige Spalte 'eindeutige Client-ID' in der list_rankup.php";$lang['wishexcld']="ausgeschl. Clients";$lang['wishexclddesc']="Zeige User in der list_rankup.php, welche über die 'Client-Ausnahmen' nicht am Ranksystem teilnehmen.";$lang['wishexgrp']="ausgeschl. Servergruppen";$lang['wishexgrpdesc']="Zeige User in der list_rankup.php, welche über die 'Servergruppen-Ausnahmen' nicht am Ranksystem teilnehmen.";$lang['wishgen']="Seitengenerierung";$lang['wishgendesc']="Zeige die Zeit, welche zur Generierung der Seite benötigt wird, am Ende der Seite.";$lang['wishhicld']="User in höchestem Rang";$lang['wishhiclddesc']="Zeige User in der list_rankup.php, welche den höchsten Rang errreicht haben.";$lang['wisupidle']="Idlezeit";$lang['wisupidledesc']="Ist diese Funktion aktiv, wird die 'ges. idle Zeit' eines Users von der 'ges. online Zeit' abgezogen. Anstelle der 'ges. online Zeit' wird somit die vorgenannte Differenz für Rangsteigerungen herangezogen.";$lang['wisvconf']="speichern";$lang['wisvsuc']="Änderungen erfolgreich gesichert!";$lang['witime']="Zeitzone";$lang['witimedesc']="Wähle die Zeitzone, die für den Sever gilt.";$lang['wits3dch']="Default Channel";$lang['wits3dchdesc']="Die channel-ID, mit der sich der Bot verbindet.

In diesem Channel wechselt der Bot nach dem Verbinden mit dem TeamSpeak Server.";$lang['wits3host']="TS3 Hostadresse";$lang['wits3hostdesc']="TeamSpeak 3 Server Adresse
(IP oder DNS)";$lang['wits3sm']="Slowmode";$lang['wits3smdesc']="Mit dem Slowmode werden die Query-Anfragen an den TeamSpeak Server reduziert. Dies schützt vor einem Ban aufgrund von flooding.
TeamSpeak Query Befehle werden mit dieser Funktion verzögert abgeschickt.

!!! AUCH REDUZIERT ER DIE CPU USAGE !!!

Die Aktivierung ist nicht empfohlen, wenn nicht benötigt. Die Verzögerung (delay) erhöht die Laufzeit eines Durchgangs des Bots, dadurch wird er unpräziser.";$lang['wits3qnm']="Botname";$lang['wits3qnm2']="2. Botname";$lang['wits3qnm2desc']="Ein zweiter Botname, falls der erste bereits genutzt wird.";$lang['wits3qnmdesc']="Der Name, mit dem die Query-Verbindung augebaut werden soll.
Der Name kann frei gewählt werden.";$lang['wits3querpw']="TS3 Query-Passwort";$lang['wits3querpwdesc']="TeamSpeak 3 Query Passwort
Passwort des Query Benutzers";$lang['wits3querusr']="TS3 Query-Benutzer";$lang['wits3querusrdesc']="TeamSpeak 3 Query Benutzername
Standard ist serveradmin
Natürlich kann auch ein gesonderter Query-Benutzer erstellt und genutzt werden.
Die benötigten Rechte sind hier aufgelistet:
http://ts-n.net/ranksystem.php";$lang['wits3query']="TS3 Query-Port";$lang['wits3querydesc']="TeamSpeak 3 Query Port
Standard ist 10011 (TCP)
andere Werte sollten in der 'ts3server.ini' zu finden sein.";$lang['wits3voice']="TS3 Voice-Port";$lang['wits3voicedesc']="TeamSpeak 3 Voice Port
Standard ist 9987 (UDP)
Dieser Port wird zum Verbinden mit dem TS3 Client genutzt.";$lang['witxco']="Textfarbe:";$lang['witxcodesc']="Lege eine Textfarbe fest.
(gültiger HTML Code; muss mit # beginnen)";$lang['wiupcheck']="Update-Prüfung";$lang['wiupcheckdesc']="Ist die Update-Prüfung aktiv, werden nachfolgend genannte User mit einer privaten Textnachricht informiert, sobald ein Update verfügbar ist.";$lang['wiuptime']="Prüfungsintervall";$lang['wiuptimedesc']="Gib an alle wie viel Sekunden das Ranksystem prüfen soll, ob ein Update verfügbar ist.
Beachte, bei jeder Prüfung werden die hinterlegten User über ein verfügbares Update benachrichtigt. Ist kein hinterlegter User online, wird mit dem nächsten Intervall versucht zu benachrichtigen.";$lang['wiupuid']="Empfänger";$lang['wiupuiddesc']="Eine Komma getrennte Liste von eindeutigen Client-IDs, welche via privater Textnachricht auf dem TeamSpeak über ein Update informiert werden sollen.";$lang['wiversion']="(verwendete Version %s)";$lang['wivlang']="Sprache";$lang['wivlangdesc']="Sprache des Ranksystems

de - Deutsch
en - english
ru - русский";$lang['wiwnco']="Warntextfarbe:";$lang['wiwncodesc']="Lege eine Warntextfarbe fest.
(gültiger HTML Code; muss mit # beginnen)";?> \ No newline at end of file diff --git a/languages/core_en.php b/languages/core_en.php index 2735261..8fd6415 100644 --- a/languages/core_en.php +++ b/languages/core_en.php @@ -1,13 +1,13 @@ added to the Ranksystem now."; +$lang['adduser'] = "User %s (unique Client-ID: %s; Client-database-ID %s) is unknown -> added to the Ranksystem now."; $lang['alrup'] = "You already updated your database. Please delete this file from your webspace!"; $lang['changedbid'] = "User %s (unique Client-ID: %s) got a new TeamSpeak Client-database-ID (%s). Update the old Client-database-ID (%s) and reset collected times!"; $lang['crawl'] = "Scan for connected user and count the activity..."; $lang['clean'] = "Scan for clients, which have to delete..."; $lang['cleanc'] = "clean clients"; -$lang['cleancdesc'] = "With this function the old clients in the Ranksystem gets deleted.

To this end, the Ranksystem sychronized with the TeamSpeak database. Clients, which does not exist in TeamSpeak will be deleted from the Ranksystem.

This function is only enabled when the 'Slowmode' is deactivated!


For automatic adjustment of the TeamSpeak database the ClientCleaner can be used:
http://ts-n.net/clientcleaner.php"; -$lang['cleandel'] = "There were %s clients deleted out of the Ranksystem database, cause they were no longer exist in the TeamSpeak database."; +$lang['cleancdesc'] = "With this function the old clients in the Ranksystem get deleted.

To this end, the Ranksystem sychronized with the TeamSpeak database. Clients, which do not exist in TeamSpeak, will be deleted from the Ranksystem.

This function is only enabled when the 'Slowmode' is deactivated!


For automatic adjustment of the TeamSpeak database the ClientCleaner can be used:
http://ts-n.net/clientcleaner.php"; +$lang['cleandel'] = "There were %s clients deleted out of the Ranksystem database, cause they were no longer existing in the TeamSpeak database."; $lang['cleanno'] = "There were nothing to delete..."; $lang['cleanp'] = "clean period"; $lang['cleanpdesc'] = "Set a time that has to elapse before the 'clean clients' runs next.

Set a time in seconds.

Recommended is once a day, cause the client cleaning needs much time for bigger databases."; @@ -15,30 +15,30 @@ $lang['cleanrs'] = "Clients in the Ranksystem database: %s"; $lang['cleants'] = "Clients found in the TeamSpeak database: %s (of %s)"; $lang['days'] = "days"; $lang['dbconerr'] = "Failed to connect to MySQL-Database: "; -$lang['delcldgrpif'] = "Error by removing the knowledge for servergroups: %s"; +$lang['delcldgrpif'] = "Error while removing the knowledge for servergroups: %s"; $lang['delcldgrpsc'] = "Knowledge about servergroups for %s User successfully removed."; $lang['delclientsif'] = "%s Clients deleted out of the Ranksystem database!"; $lang['delclientssc'] = "%s Clients successfully deleted out of the Ranksystem database!"; $lang['errlogin'] = "Username and/or password are incorrect! Try again..."; $lang['error'] = "Error "; -$lang['errremgrp'] = "Error by removing user with unique Client-ID %s out of the servergroup with servergroup-database-ID %s!"; -$lang['errremdb'] = "Error by removing user with unique Client-ID % out of the Ranksystem database!"; -$lang['errsel'] = "Error by choosing the selections with
selected client: %s
option 'delete clients': %s
option 'sum. online time': %s"; -$lang['errukwn'] = "Unkown error happens!"; -$lang['errupcount'] = "Error by renewing the summary online time of %s by user with the unique Client-ID %s"; +$lang['errremgrp'] = "Error while removing user with unique Client-ID %s out of the servergroup with servergroup-database-ID %s!"; +$lang['errremdb'] = "Error while removing user with unique Client-ID % out of the Ranksystem database!"; +$lang['errsel'] = "Error while choosing the selections with
selected client: %s
option 'delete clients': %s
option 'sum. online time': %s"; +$lang['errukwn'] = "An unknown error has occurred!"; +$lang['errupcount'] = "Error while renewing the summary online time of %s by user with the unique Client-ID %s"; $lang['firstuse'] = "Seems to be the first run. Start logging the Userhistory..."; $lang['highest'] = "highest rank reached"; $lang['instdb'] = "Install database:"; -$lang['instdberr'] = "Error by creating the database: "; +$lang['instdberr'] = "Error while creating the database: "; $lang['instdbsubm'] = "Create database"; $lang['instdbsuc'] = "Database %s successfully created."; $lang['insttb'] = "Install Tables:"; -$lang['insttberr'] = "Error by creating table: "; +$lang['insttberr'] = "Error while creating table: "; $lang['insttbsuc'] = "Table %s successfully created."; $lang['isntwicfg'] = "Can't save the database configuration! Please edit the 'other/dbconfig.php' with a chmod 0777 and try again after."; $lang['isntwichm'] = "Please edit the 'other/dbconfig.php', and the folders 'avatars/', 'icons/' and 'logs/' with the needed permissions. Therefore edit the chmod to 0777. After it try again (reload the page)."; $lang['isntwidb'] = "Enter your database settings:"; -$lang['isntwidberr'] = "Please check, if you filled out all fields and the values are correctly!"; +$lang['isntwidberr'] = "Please check if you filled out all fields correctly!"; $lang['isntwidbhost'] = "DB Hostaddress:"; $lang['isntwidbhostdesc'] = "Database server address
(IP or DNS)"; $lang['isntwidbmsg'] = "Database error: "; @@ -47,13 +47,13 @@ $lang['isntwidbnamedesc'] = "Name of database"; $lang['isntwidbpass'] = "DB Password:"; $lang['isntwidbpassdesc'] = "Password to access the database"; $lang['isntwidbtype'] = "DB Type:"; -$lang['isntwidbtypedesc'] = "Database type

You have to install the needed PDO Driver.
For more informations look at requirements on http://ts-n.net/ranksystem.php"; +$lang['isntwidbtypedesc'] = "Database type

You have to install the needed PDO Driver.
For more informations have look at the requirements on http://ts-n.net/ranksystem.php"; $lang['isntwidbusr'] = "DB User:"; $lang['isntwidbusrdesc'] = "User to access the database"; -$lang['isntwidel'] = "Please delete the file 'install.php' and all 'update_x-xx.php' files from your webserver and open the %s to config the Ranksystem!"; +$lang['isntwidel'] = "Please delete the file 'install.php' and all 'update_x-xx.php' files from your webserver and open the %s to configure the Ranksystem!"; $lang['isntwiusr'] = "User for the webinterface successfully created."; $lang['isntwiusrcr'] = "create access"; -$lang['isntwiusrdesc'] = "Enter an username and password for access the webinterface. With the webinterface you can configurate the ranksytem."; +$lang['isntwiusrdesc'] = "Enter a username and password for access the webinterface. With the webinterface you can configurate the ranksytem."; $lang['isntwiusrh'] = "Access - Webinterface"; $lang['listacsg'] = "actual servergroup"; $lang['listcldbid'] = "Client-database-ID"; @@ -74,114 +74,115 @@ $lang['new'] = "new"; $lang['nocount'] = "User %s (unique Client-ID: %s; Client-database-ID %s) is a query-user or is several times online (only first connection counts) -> this will not count!"; $lang['noentry'] = "No entries found.."; $lang['pass'] = "Password: "; -$lang['queryname'] = "First Botname already in use. Try with second Botname..."; -$lang['sccrmcld'] = "User with unique Client-ID %s successfull removed out of the Ranksystem database."; +$lang['queryname'] = "First Botname already in use. Trying with second Botname..."; +$lang['sccrmcld'] = "User with unique Client-ID %s successfull removed from the Ranksystem database."; $lang['sccupcount'] = "User with the unique Client-ID %s successfull overwritten with a summary online time of %s."; $lang['setontime'] = "sum. online time"; -$lang['setontimedesc'] = "Enter a new summary online time, which should be set to the previous selected clients. With this gets the old summary online overwritten.

The entered summary online time will be considered for the rank up."; +$lang['setontimedesc'] = "Enter a new summary online time, which should be set to the previous selected clients. With this the old summary online gets overwritten.

The entered summary online time will be considered for the rank up."; $lang['sgrpadd'] = "Grant servergroup %s to user %s (unique Client-ID: %s; Client-database-ID %s)."; $lang['sgrprerr'] = "It happened a problem with the servergroup of the user %s (unique Client-ID: %s; Client-database-ID %s)!"; $lang['sgrprm'] = "Removed servergroup %s from user %s (unique Client-ID: %s; Client-database-ID %s)."; $lang['sitegen'] = "Site generated in %s seconds with %s clients."; $lang['sitegenl'] = "Site generated in %s seconds with %s clients (thereof %s displayed; %s affected by exception rules; %s in highest rank)."; -$lang['stix0001'] = "Server Statistics"; -$lang['stix0002'] = "Total Users"; -$lang['stix0003'] = "View Details"; -$lang['stix0004'] = "Online Time / Total"; -$lang['stix0005'] = "View Top Of All Time"; -$lang['stix0006'] = "View Top Of The Month"; -$lang['stix0007'] = "View Top Of The Week"; -$lang['stix0008'] = "Server Usage"; -$lang['stix0009'] = "In The Last 7 Days"; -$lang['stix0010'] = "In The Last 30 Days"; -$lang['stix0011'] = "In The Last 24 Hours"; +$lang['stix0001'] = "Server statistics"; +$lang['stix0002'] = "Total users"; +$lang['stix0003'] = "View details"; +$lang['stix0004'] = "Online time of all user / Total"; +$lang['stix0005'] = "View top of all time"; +$lang['stix0006'] = "View top of the month"; +$lang['stix0007'] = "View top of the week"; +$lang['stix0008'] = "Server usage"; +$lang['stix0009'] = "In the last 7 days"; +$lang['stix0010'] = "In the last 30 days"; +$lang['stix0011'] = "In the last 24 hours"; $lang['stix0012'] = "select period"; -$lang['stix0013'] = "Last Day"; -$lang['stix0014'] = "Last Week"; -$lang['stix0015'] = "Last Month"; -$lang['stix0016'] = "Client Active / Inactive Time"; -$lang['stix0017'] = "Client Versions"; -$lang['stix0018'] = "Client Nationalities"; -$lang['stix0019'] = "Client Platforms"; -$lang['stix0020'] = "Current Statistics"; -$lang['stix0021'] = "Requested Information"; +$lang['stix0013'] = "Last day"; +$lang['stix0014'] = "Last week"; +$lang['stix0015'] = "Last month"; +$lang['stix0016'] = "Active / inactive time (of all clients)"; +$lang['stix0017'] = "Versions (of all clients)"; +$lang['stix0018'] = "Nationalities (of all clients)"; +$lang['stix0019'] = "Platforms (of all clients)"; +$lang['stix0020'] = "Current statistics"; +$lang['stix0021'] = "Requested information"; $lang['stix0022'] = "Result"; -$lang['stix0023'] = "Server Status"; +$lang['stix0023'] = "Server status"; $lang['stix0024'] = "Online"; $lang['stix0025'] = "Offline"; $lang['stix0026'] = "Clients (Online / Max)"; -$lang['stix0027'] = "Amount Of Channels"; -$lang['stix0028'] = "Average Server Ping"; -$lang['stix0029'] = "Total Bytes Received"; -$lang['stix0030'] = "Total Bytes Sent"; -$lang['stix0031'] = "Server Uptime"; +$lang['stix0027'] = "Amount of channels"; +$lang['stix0028'] = "Average server ping"; +$lang['stix0029'] = "Total bytes received"; +$lang['stix0030'] = "Total bytes sent"; +$lang['stix0031'] = "Server uptime"; $lang['stix0032'] = "before offline:"; $lang['stix0033'] = "00 Days, 00 Hours, 00 Mins, 00 Secs"; -$lang['stix0034'] = "Average Packet Loss"; -$lang['stix0035'] = "Overall Statistics"; -$lang['stix0036'] = "Server Name"; -$lang['stix0037'] = "Server Address (Host Address : Port)"; -$lang['stix0038'] = "Server Password"; -$lang['stix0039'] = "No (Server is Public)"; -$lang['stix0040'] = "Yes (Server Is Private)"; +$lang['stix0034'] = "Average packet loss"; +$lang['stix0035'] = "Overall statistics"; +$lang['stix0036'] = "Server name"; +$lang['stix0037'] = "Server address (Host Address : Port)"; +$lang['stix0038'] = "Server password"; +$lang['stix0039'] = "No (Server is public)"; +$lang['stix0040'] = "Yes (Server Is private)"; $lang['stix0041'] = "Server ID"; -$lang['stix0042'] = "Server Platform"; -$lang['stix0043'] = "Server Version"; -$lang['stix0044'] = "Server Creation Date (dd/mm/yyyy)"; -$lang['stix0045'] = "Report To Server List"; +$lang['stix0042'] = "Server platform"; +$lang['stix0043'] = "Server version"; +$lang['stix0044'] = "Server creation date (dd/mm/yyyy)"; +$lang['stix0045'] = "Report to server list"; $lang['stix0046'] = "Activated"; -$lang['stix0047'] = "Not Activated"; +$lang['stix0047'] = "Not activated"; $lang['stix0048'] = "not enough data yet..."; -$lang['stix0049'] = "Online Time / Last Month"; -$lang['stix0050'] = "Online Time / Last Week"; -$lang['stmy0001'] = "My Statistics"; +$lang['stix0049'] = "Online time of all user / month"; +$lang['stix0050'] = "Online time of all user / week"; +$lang['stix0051'] = "TeamSpeak has failed, so no creation date..."; +$lang['stmy0001'] = "My statistics"; $lang['stmy0002'] = "Rank"; $lang['stmy0003'] = "Database ID:"; $lang['stmy0004'] = "Unique ID:"; -$lang['stmy0005'] = "Total Connections To The Server:"; -$lang['stmy0006'] = "Start Date For Statistics:"; -$lang['stmy0007'] = "Total Online Time:"; -$lang['stmy0008'] = "Online Time Last 7 Days:"; -$lang['stmy0009'] = "Online Time Last 30 Days:"; -$lang['stmy0010'] = "Achievements Completed:"; -$lang['stmy0011'] = "Time Achievement Progress"; +$lang['stmy0005'] = "Total connections to the server:"; +$lang['stmy0006'] = "Start date for statistics:"; +$lang['stmy0007'] = "Total online time:"; +$lang['stmy0008'] = "Online time last 7 days:"; +$lang['stmy0009'] = "Online time last 30 days:"; +$lang['stmy0010'] = "Achievements completed:"; +$lang['stmy0011'] = "Time achievement progress"; $lang['stmy0012'] = "Time: Legendary"; -$lang['stmy0013'] = "Because You Have A Online Time Of %s hours."; -$lang['stmy0014'] = "Progress Completed"; +$lang['stmy0013'] = "Because you have an online time of %s hours."; +$lang['stmy0014'] = "Progress completed"; $lang['stmy0015'] = "Time: Gold"; -$lang['stmy0016'] = "% Completed For Legendary"; +$lang['stmy0016'] = "% Completed for Legendary"; $lang['stmy0017'] = "Time: Silver"; -$lang['stmy0018'] = "% Completed For Gold"; +$lang['stmy0018'] = "% Completed for Gold"; $lang['stmy0019'] = "Time: Bronze"; -$lang['stmy0020'] = "% Completed For Silver"; +$lang['stmy0020'] = "% Completed for Silver"; $lang['stmy0021'] = "Time: Unranked"; -$lang['stmy0022'] = "% Completed For Bronze"; -$lang['stmy0023'] = "Connection Achievement Progress"; +$lang['stmy0022'] = "% Completed for Bronze"; +$lang['stmy0023'] = "Connection achievement progress"; $lang['stmy0024'] = "Connects: Legendary"; -$lang['stmy0025'] = "Because You Connected %s Times To The Server."; +$lang['stmy0025'] = "Because You connected %s times to the server."; $lang['stmy0026'] = "Connects: Gold"; $lang['stmy0027'] = "Connects: Silver"; $lang['stmy0028'] = "Connects: Bronze"; $lang['stmy0029'] = "Connects: Unranked"; -$lang['stnv0001'] = "Server News"; +$lang['stnv0001'] = "Server news"; $lang['stnv0002'] = "Close"; -$lang['stnv0003'] = "Refresh Client Information"; -$lang['stnv0004'] = "Only use this Refresh, when your TS3 information got changed, such as your TS3 username"; -$lang['stnv0005'] = "It only works, when you are connected to the TS3 Server at the same time"; +$lang['stnv0003'] = "Refresh client information"; +$lang['stnv0004'] = "Only use this refresh, when your TS3 information got changed, such as your TS3 username"; +$lang['stnv0005'] = "It only works, when you are connected to the TS3 server at the same time"; $lang['stnv0006'] = "Refresh"; -$lang['stnv0007'] = "Battle Area - Page Content"; +$lang['stnv0007'] = "Battle area - Page content"; $lang['stnv0008'] = "You can challenge other users in a battle between two users or two teams."; $lang['stnv0009'] = "While the battle is active the online time of the teams/users will be counted."; $lang['stnv0010'] = "When the battle ends the team/user with the highest online time wins."; $lang['stnv0011'] = "(The regular battling time is 48 hours)"; $lang['stnv0012'] = "The winning team/user will recieve a price, which the user can use whenever the user wants."; -$lang['stnv0013'] = "It will be displayed on the My Statistics tab."; +$lang['stnv0013'] = "It will be displayed on the My statistics tab."; $lang['stnv0014'] = "(Could be online time boost(2x) for 8 hours, instant online time (4 hours), etc."; $lang['stnv0015'] = "These boosts can be used for example to climb in the top users of the week)"; $lang['stnv0016'] = "Not available"; -$lang['stnv0017'] = "You are not connected to the TS3 Server, so it cant display any data for you."; +$lang['stnv0017'] = "You are not connected to the TS3 Server, so it can't display any data for you."; $lang['stnv0018'] = "Please connect to the TS3 Server and then Refresh your Session by pressing the blue Refresh Button at the top-right corner."; -$lang['stnv0019'] = "My Statistics - Page Content"; +$lang['stnv0019'] = "My statistics - Page content"; $lang['stnv0020'] = "This page contains a overall summary of your personal statistics and activity on the server."; $lang['stnv0021'] = "The informations are collected since the beginning of the Ranksystem, they are not since the beginning of the TeamSpeak server."; $lang['stnv0022'] = "This page receives its values out of a database. So the values might be delayed a bit."; @@ -189,41 +190,44 @@ $lang['stnv0023'] = "The sum inside of the donut charts may differ to th $lang['stnv0024'] = "Ranksystem - Statistics"; $lang['stnv0025'] = "Limit entries"; $lang['stnv0026'] = "all"; -$lang['stnv0027'] = "The Informations on this site could be outdated! It seems the Ranksystem is no more connected to the TeamSpeak."; -$lang['stnv0028'] = "(Not Connected To TS3!)"; +$lang['stnv0027'] = "The informations on this site could be outdated! It seems the Ranksystem is no more connected to the TeamSpeak."; +$lang['stnv0028'] = "(Not connected to TS3!)"; $lang['stnv0029'] = "List Rankup"; -$lang['stnv0030'] = "Ranksystem Info"; -$lang['stri0001'] = "Ranksystem Information"; -$lang['stri0002'] = "What Is The Ranksystem?"; +$lang['stnv0030'] = "Ranksystem info"; +$lang['stnv0031'] = "DE - Deutsch"; +$lang['stnv0032'] = "EN - English"; +$lang['stnv0033'] = "RU - русский"; +$lang['stri0001'] = "Ranksystem information"; +$lang['stri0002'] = "What is the Ranksystem?"; $lang['stri0003'] = "A TS3 Bot, which automatically grant ranks (servergroups) to user on a TeamSpeak 3 Server for online time or online activity. It also gathers informations and statistics about the user and displays the result on this site."; -$lang['stri0004'] = "Who Created The Ranksystem?"; -$lang['stri0005'] = "When Did The Ranksystem Created?"; +$lang['stri0004'] = "Who created the Ranksystem?"; +$lang['stri0005'] = "When the Ranksystem was Created?"; $lang['stri0006'] = "First alpha release: 05/10/2014."; $lang['stri0007'] = "First beta release: 01/02/2015."; $lang['stri0008'] = "You can see the newest version on the Ranksystem Website."; -$lang['stri0009'] = "How Did The Ranksystem Created?"; +$lang['stri0009'] = "How was the Ranksystem created?"; $lang['stri0010'] = "The Ranksystem is coded in"; $lang['stri0011'] = "It uses also the following libraries:"; $lang['stri0012'] = "Special Thanks To:"; $lang['stri0013'] = "sergey - for russian translation"; $lang['stri0014'] = "Bejamin Frost - for initialisation the bootstrap design"; -$lang['sttw0001'] = "Top Users"; -$lang['sttw0002'] = "Of The Week"; -$lang['sttw0003'] = "With %s Hours Online Time"; -$lang['sttw0004'] = "Top 10 Compared"; +$lang['sttw0001'] = "Top users"; +$lang['sttw0002'] = "Of the week"; +$lang['sttw0003'] = "With %s hours online time"; +$lang['sttw0004'] = "Top 10 compared"; $lang['sttw0005'] = "Hours (Defines 100 %)"; -$lang['sttw0006'] = "%s Hours (%s%)"; +$lang['sttw0006'] = "%s hours (%s%)"; $lang['sttw0007'] = "Top 10 Statistics"; -$lang['sttw0008'] = "Top 10 Vs Others In Online Time"; -$lang['sttw0009'] = "Top 10 Vs Others In Active Time"; -$lang['sttw0010'] = "Top 10 Vs Others In Inactive Time"; -$lang['sttw0011'] = "Top 10 (in Hours)"; -$lang['sttw0012'] = "Other %s Users (in Hours)"; -$lang['sttm0001'] = "Of The Month"; -$lang['stta0001'] = "Of All Time"; -$lang['updb'] = "You have only to run this, if you want to update the Ranksystem from an older version to %s!

Run this once time and delete the update_%s.php file after from your webserver.


Update Database:
"; +$lang['sttw0008'] = "Top 10 vs others in online time"; +$lang['sttw0009'] = "Top 10 vs others in active time"; +$lang['sttw0010'] = "Top 10 vs others in inactive time"; +$lang['sttw0011'] = "Top 10 (in hours)"; +$lang['sttw0012'] = "Other %s users (in hours)"; +$lang['sttm0001'] = "Of the month"; +$lang['stta0001'] = "Of all time"; +$lang['updb'] = "You only have to run this if you want to update the Ranksystem from an older version to %s!

Run this once time and delete the update_%s.php file after from your webserver.


Update Database:
"; $lang['updel'] = "Please remove the following files from the root directory of the ranksystem, if they are still existing:
%s"; -$lang['upinf'] = "A new Version of the Ranksystem is available; Inform Clients on Server..."; +$lang['upinf'] = "A new Version of the Ranksystem is available; Inform clients on server..."; $lang['upmov'] = "Please move the \'%s\' into the subfolder \'%s\' and overwrite the existing one!"; $lang['upmsg'] = "\nHey, a new version of the [B]Ranksystem[/B] is available!\n\ncurrent version: %s\n[B]new version: %s[/B]\n\nPlease check out our site for more informations [URL]http://ts-n.net/ranksystem.php[/URL]."; $lang['upsucc'] = "Database update successfully executed."; @@ -251,25 +255,25 @@ $lang['widelcldgrp'] = "renew groups"; $lang['widelcldgrpdesc'] = "The Ranksystem remember the given servergroups, so it don't need to give/check this with every run of the worker.php again.

With this function you can remove once time the knowledge of given servergroups. In effect the ranksystem try to give all clients (which are on the TS3 server online) the servergroup of the actual rank.
For each client, which gets the group or stay in group, the Ranksystem remember this like described at beginning.

This function can be helpful, when user are not in the servergroup, they should be for the defined online time.

Attention: Run this in a moment, where the next few minutes no rankups become due!!! The Ranksystem can't remove the old group, cause he can't remember ;-)"; $lang['widelclddesc'] = "Delete the before selected clients out of the Ranksystem database.

With this deletion are the clients on the TeamSpeak Server untouched."; $lang['widelsg'] = "remove out of servergroups"; -$lang['widelsgdesc'] = "Choose, if the clients should also be removed out of the last known servergroup, when you delete clients out of the Ranksystem database.

It will only considered servergroups, which concerned the Ranksystem"; +$lang['widelsgdesc'] = "Choose if the clients should also be removed out of the last known servergroup, when you delete clients out of the Ranksystem database.

It will only considered servergroups, which concerned the Ranksystem"; $lang['wideltime'] = "Deletiontime"; $lang['wideltimedesc'] = "Clean old clients out of the Ranksystem database.
Entry a time in seconds which a client was not seen to delete it.

0 - deletes all clients out of the Ranksystem

The Userdatas on the TeamSpeak server are with this untouched!"; $lang['wiexgrp'] = "servergroup exception"; -$lang['wiexgrpdesc'] = "A comma seperate list of servergroup-IDs, which should not conside for the Ranksystem.
User in at least one of this servergroups IDs will be ignored for the rank up."; +$lang['wiexgrpdesc'] = "A comma seperated list of servergroup-IDs, which should not conside for the Ranksystem.
User in at least one of this servergroups IDs will be ignored for the rank up."; $lang['wiexuid'] = "client exception"; -$lang['wiexuiddesc'] = "A comma seperate list of unique Client-IDs, which should not conside for the Ranksystem.
User in this list will be ignored for the rank up."; +$lang['wiexuiddesc'] = "A comma seperated list of unique Client-IDs, which should not conside for the Ranksystem.
User in this list will be ignored for the rank up."; $lang['wigrptime'] = "rank up"; $lang['wigrptimedesc'] = "Define here after which time a user should get automatically a predefined servergroup.

time (seconds)=>servergroup ID

Important for this is the online time of an user or if 'Idletime' is active, the active time.

Each entry have to separate from next with a comma.

The time must be entered cumulative

Example:
60=>9,120=>10,180=>11

On this a user get after 60 seconds the servergroup 9, in turn after 60 seconds the servergroup 10, and so on..."; $lang['wihdco'] = "Headline color:"; $lang['wihdcodesc'] = "Define a headline color.
(valid HTML Code; have to beginn with # )"; $lang['wihl'] = "Webinterface - Ranksystem"; $lang['wihladm'] = "admin list"; -$lang['wihlcfg'] = "Core Settings"; -$lang['wihlclg'] = "edit clients (global)"; -$lang['wihlcls'] = "edit clients (selective)"; -$lang['wihldb'] = "Database Settings"; -$lang['wihlsty'] = "Style Settings"; -$lang['wihlts'] = "TeamSpeak Settings"; +$lang['wihlcfg'] = "Core settings"; +$lang['wihlclg'] = "Edit clients (global)"; +$lang['wihlcls'] = "Edit clients (selective)"; +$lang['wihldb'] = "Database settings"; +$lang['wihlsty'] = "Style settings"; +$lang['wihlts'] = "TeamSpeak settings"; $lang['wihvco'] = "Hover color:"; $lang['wihvcodesc'] = "Define a hover color.
(valid HTML Code; have to beginn with # )"; $lang['wiifco'] = "Infotext color:"; @@ -350,4 +354,4 @@ $lang['wivlang'] = "Language"; $lang['wivlangdesc'] = "Language for the Ranksystem

de - Deutsch
en - English
ru - русский"; $lang['wiwnco'] = "Warntext color:"; $lang['wiwncodesc'] = "Define a warntext color.
(valid HTML Code; have to beginn with # )"; -?> \ No newline at end of file +?> diff --git a/languages/core_ru.php b/languages/core_ru.php index c52caee..97898b6 100644 --- a/languages/core_ru.php +++ b/languages/core_ru.php @@ -1,353 +1 @@ - добавлен к Ранг Системе."; -$lang['alrup'] = "Вы уже обновили свою базу данных. Пожалуйста, удалите этот файл из своего веб-сервера!"; -$lang['changedbid'] = "Пользователь %s (Уникальный ID клиента: %s) получил новый TeamSpeak Client-database-ID (%s). Обновление старой Client-database-ID (%s) и сброс collected times!"; -$lang['crawl'] = "Сканирование активности подключенных пользователей..."; -$lang['clean'] = "Сканирование пользователей, которых должен удалить..."; -$lang['cleanc'] = "чистка пользователей"; -$lang['cleancdesc'] = "С включением этой функцией старые пользователи в Ranksystem будут удалены.

С этой целью, Ranksystem синхронизируется с базой данных TeamSpeak. Пользователи, которых не существует в TeamSpeak, будут удалены из Ranksystem.

Эта функция работает когда 'Slowmode' дезактивирован!


Для автоматического регулирования базы данных может использоваться TeamSpeak ClientCleaner:
http://ts-n.net/clientcleaner.php"; -$lang['cleandel'] = "%s пользователя удаленны из базы данных Ranksystem, так как они больше не существуют в базе данных TeamSpeak."; -$lang['cleanno'] = "Никого не было, чтобы было что удалить..."; -$lang['cleanp'] = "период отчистки"; -$lang['cleanpdesc'] = "Укажите время, которое должно пройти перед запуском 'чистка пользователей'.

Устанавливается в секундах.

Для больших баз данных рекомендуется использовать один раз в день."; -$lang['cleanrs'] = "Пользователи в базе данных Ranksystem: %s"; -$lang['cleants'] = "Пользователи найдены в базе данных TeamSpeak: %s (at %s)"; -$lang['days'] = "days"; -$lang['dbconerr'] = "Ошибка подключения к базе данных MySQL: "; -$lang['delcldgrpif'] = "Ошибка by removing the knowledge for servergroups: %s"; -$lang['delcldgrpsc'] = "Данные о сервер группах для пользователя %s успешно удалена."; -$lang['delclientsif'] = "%s Клиент(ов) удалено из базы данных Ранг Системы!"; -$lang['delclientssc'] = "%s Клиент(ов) успешно удалено из базы данных Ранг Системы!"; -$lang['errlogin'] = "Логин и/или пароль не верны! Попробуйте снова..."; -$lang['error'] = "Ошибка "; -$lang['errremgrp'] = "Ошибка удаления пользователя с уникальным идентификатором UID: %s из сервер группы SID: %s!"; -$lang['errremdb'] = "Ошибка удаления пользователя с уникальным идентификатором UID % из базы данных Ранг Системы!"; -$lang['errsel'] = "Error by choosing the selections with
selected client: %s
option 'delete clients': %s
option 'sum. online time': %s"; -$lang['errukwn'] = "Произошла неизвестная ошибка!"; -$lang['errupcount'] = "Ошибка подсчета суммарного времени подключения %s пользователя с UCI %s"; -$lang['firstuse'] = "Кажется это первый запуск. Начинаю вести Историю Пользователей..."; -$lang['highest'] = "высокий Ранг достигнут"; -$lang['instdb'] = "Установка Базы данных:"; -$lang['instdberr'] = "Ошибка создания базы данных: "; -$lang['instdbsubm'] = "Создание Базы данных"; -$lang['instdbsuc'] = "База данных %s успешно создана."; -$lang['insttb'] = "Установка Базы Данных:"; -$lang['insttberr'] = "Ошибка при установке таблиц: "; -$lang['insttbsuc'] = "Таблица %s успешно создана."; -$lang['isntwicfg'] = "Не получилось записать настройки базы данных! Пожалуйста установите права на запись 'other/dbconfig.php' chmod 0777 и попробуйте снова."; -$lang['isntwichm'] = "Please edit the 'other/dbconfig.php', and the folders 'avatars/', 'icons/' and 'logs/' with the needed permissions. Therefore edit the chmod to 0777. After it try again (reload the page)."; -$lang['isntwidb'] = "Укажите настройки для подключения к базе данных:"; -$lang['isntwidberr'] = "Пожалуйста, проверьте, все ли поля были заполнены а так же корректность заполнения!"; -$lang['isntwidbhost'] = "Адрес Базы Данных:"; -$lang['isntwidbhostdesc'] = "Адрес сервера Базы Данных
(IP or DNS)"; -$lang['isntwidbmsg'] = "Ошибка Данных: "; -$lang['isntwidbname'] = "Имя Базы Данных:"; -$lang['isntwidbnamedesc'] = "Название Базы Данных"; -$lang['isntwidbpass'] = "Пароль Базы Данных:"; -$lang['isntwidbpassdesc'] = "Пароль для подключения к базе данных"; -$lang['isntwidbtype'] = "Тип Базы Данных:"; -$lang['isntwidbtypedesc'] = "Тип Базы Данных

У вас должен быть установлен PDO Драйвер.
Для получения дополнительной информации см. http://ts-n.net/ranksystem.php"; -$lang['isntwidbusr'] = "Пользователь Базы Данных:"; -$lang['isntwidbusrdesc'] = "Пользователь с доступом к Базе Данных"; -$lang['isntwidel'] = "Пожалуйста удалите файл 'install.php' и файлы 'update_x-xx.php' с вашего Веб-Сервера и откройте %s для настройки Ранг Системы!"; -$lang['isntwiusr'] = "Пользователь Веб-Панели успешно создан."; -$lang['isntwiusrcr'] = "создание доступа"; -$lang['isntwiusrdesc'] = "Введите имя пользователя и пароль для доступа в Веб-Панель. С помощью Веб-Панели вы сможете настроить ранг систему."; -$lang['isntwiusrh'] = "Доступ - Веб-Панель"; -$lang['listacsg'] = "ток сервер группа"; -$lang['listcldbid'] = "ID клиента в базе данных"; -$lang['listexgrp'] = "Не учитывается Ранг Системой (исключения по сервергруппам)."; -$lang['listexuid'] = "Не учитывается Ранг Системой (исключения по клиентам)."; -$lang['listip'] = "IP адрес"; -$lang['listnick'] = "Ник"; -$lang['listnxsg'] = "Следующая сервер группа"; -$lang['listnxup'] = "Следующий Ранг через"; -$lang['listrank'] = "П\Н"; -$lang['listseen'] = "последняя активность"; -$lang['listsuma'] = "Сумм. время активности"; -$lang['listsumi'] = "Сумм. время простоя"; -$lang['listsumo'] = "Сумм. время подключения"; -$lang['listtime'] = "%s день(й), %s час(ов), %s мин., %s сек."; -$lang['listuid'] = "Уникальный ID клиента"; -$lang['new'] = "новый"; -$lang['nocount'] = "Пользователь %s (Уникальный Клиент ID: %s; Клиент ID %s) это query-пользователь (постоянно первое подключение) -> не будет учитываться!"; -$lang['noentry'] = "Записей не найдено.."; -$lang['pass'] = "Пароль: "; -$lang['queryname'] = "Первый Botname уже используется. Попробуйте вторым Botname..."; -$lang['sccrmcld'] = "Пользователь с уникальным ID %s успешно удален из базы данных Ранг Системы."; -$lang['sccupcount'] = "Пользователь с уникальным ID %s успешно переписан с итоговым временем онлайн %s."; -$lang['setontime'] = "сумм. время подключения"; -$lang['setontimedesc'] = "Укажите новое суммарное время подключения для выбранных клиентов. С этим изминением пользователь получит указанное время подключения.

Указанное время подключения будет учтено Ранг Системой."; -$lang['sgrpadd'] = "Выдана сервер группа %s пользователю %s (Уникальный ID клиента: %s; ID в базе данных: %s)."; -$lang['sgrprerr'] = "Что то пошло не так, проблема с сервер группой пользователя %s (Уникальный ID клиента:: %s; ID в базе данных %s)!"; -$lang['sgrprm'] = "С пользователя %s (Уникальный ID клиента: %s; ID в базе данных: %s) удалена сервер-группа %s."; -$lang['sitegen'] = "Страница генерирована за %s секунд. %s пользователей."; -$lang['sitegenl'] = "Страница генерирована за %s секунд с %s пользователями ( %s пользователей показанно; %s игнорируются по правилам исключения; %s высокого ранга)."; -$lang['stix0001'] = "Server Statistics"; -$lang['stix0002'] = "Total Users"; -$lang['stix0003'] = "View Details"; -$lang['stix0004'] = "Online Time / Total"; -$lang['stix0005'] = "View Top Of All Time"; -$lang['stix0006'] = "View Top Of The Month"; -$lang['stix0007'] = "View Top Of The Week"; -$lang['stix0008'] = "Server Usage"; -$lang['stix0009'] = "In The Last 7 Days"; -$lang['stix0010'] = "In The Last 30 Days"; -$lang['stix0011'] = "In The Last 24 Hours"; -$lang['stix0012'] = "select period"; -$lang['stix0013'] = "Last Day"; -$lang['stix0014'] = "Last Week"; -$lang['stix0015'] = "Last Month"; -$lang['stix0016'] = "Client Active / Inactive Time"; -$lang['stix0017'] = "Client Versions"; -$lang['stix0018'] = "Client Nationalities"; -$lang['stix0019'] = "Client Platforms"; -$lang['stix0020'] = "Current Statistics"; -$lang['stix0021'] = "Requested Information"; -$lang['stix0022'] = "Result"; -$lang['stix0023'] = "Server Status"; -$lang['stix0024'] = "Online"; -$lang['stix0025'] = "Offline"; -$lang['stix0026'] = "Clients (Online / Max)"; -$lang['stix0027'] = "Amount Of Channels"; -$lang['stix0028'] = "Average Server Ping"; -$lang['stix0029'] = "Total Bytes Received"; -$lang['stix0030'] = "Total Bytes Sent"; -$lang['stix0031'] = "Server Uptime"; -$lang['stix0032'] = "before offline:"; -$lang['stix0033'] = "00 Days, 00 Hours, 00 Mins, 00 Secs"; -$lang['stix0034'] = "Average Packet Loss"; -$lang['stix0035'] = "Overall Statistics"; -$lang['stix0036'] = "Server Name"; -$lang['stix0037'] = "Server Address (Host Address : Port)"; -$lang['stix0038'] = "Server Password"; -$lang['stix0039'] = "No (Server is Public)"; -$lang['stix0040'] = "Yes (Server Is Private)"; -$lang['stix0041'] = "Server ID"; -$lang['stix0042'] = "Server Platform"; -$lang['stix0043'] = "Server Version"; -$lang['stix0044'] = "Server Creation Date (dd/mm/yyyy)"; -$lang['stix0045'] = "Report To Server List"; -$lang['stix0046'] = "Activated"; -$lang['stix0047'] = "Not Activated"; -$lang['stix0048'] = "not enough data yet..."; -$lang['stix0049'] = "Online Time / Last Month"; -$lang['stix0050'] = "Online Time / Last Week"; -$lang['stmy0001'] = "My Statistics"; -$lang['stmy0002'] = "Rank"; -$lang['stmy0003'] = "Database ID:"; -$lang['stmy0004'] = "Unique ID:"; -$lang['stmy0005'] = "Total Connections To The Server:"; -$lang['stmy0006'] = "Start Date For Statistics:"; -$lang['stmy0007'] = "Total Online Time:"; -$lang['stmy0008'] = "Online Time Last 7 Days:"; -$lang['stmy0009'] = "Online Time Last 30 Days:"; -$lang['stmy0010'] = "Achievements Completed:"; -$lang['stmy0011'] = "Time Achievement Progress"; -$lang['stmy0012'] = "Time: Legendary"; -$lang['stmy0013'] = "Because You Have A Online Time Of %s hours."; -$lang['stmy0014'] = "Progress Completed"; -$lang['stmy0015'] = "Time: Gold"; -$lang['stmy0016'] = "% Completed For Legendary"; -$lang['stmy0017'] = "Time: Silver"; -$lang['stmy0018'] = "% Completed For Gold"; -$lang['stmy0019'] = "Time: Bronze"; -$lang['stmy0020'] = "% Completed For Silver"; -$lang['stmy0021'] = "Time: Unranked"; -$lang['stmy0022'] = "% Completed For Bronze"; -$lang['stmy0023'] = "Connection Achievement Progress"; -$lang['stmy0024'] = "Connects: Legendary"; -$lang['stmy0025'] = "Because You Connected %s Times To The Server."; -$lang['stmy0026'] = "Connects: Gold"; -$lang['stmy0027'] = "Connects: Silver"; -$lang['stmy0028'] = "Connects: Bronze"; -$lang['stmy0029'] = "Connects: Unranked"; -$lang['stnv0001'] = "Server News"; -$lang['stnv0002'] = "Close"; -$lang['stnv0003'] = "Refresh Client Information"; -$lang['stnv0004'] = "Only use this Refresh, when your TS3 information got changed, such as your TS3 username"; -$lang['stnv0005'] = "It only works, when you are connected to the TS3 Server at the same time"; -$lang['stnv0006'] = "Refresh"; -$lang['stnv0007'] = "Battle Area - Page Content"; -$lang['stnv0008'] = "You can challenge other users in a battle between two users or two teams."; -$lang['stnv0009'] = "While the battle is active the online time of the teams/users will be counted."; -$lang['stnv0010'] = "When the battle ends the team/user with the highest online time wins."; -$lang['stnv0011'] = "(The regular battling time is 48 hours)"; -$lang['stnv0012'] = "The winning team/user will recieve a price, which the user can use whenever the user wants."; -$lang['stnv0013'] = "It will be displayed on the My Statistics tab."; -$lang['stnv0014'] = "(Could be online time boost(2x) for 8 hours, instant online time (4 hours), etc."; -$lang['stnv0015'] = "These boosts can be used for example to climb in the top users of the week)"; -$lang['stnv0016'] = "Not available"; -$lang['stnv0017'] = "You are not connected to the TS3 Server, so it cant display any data for you."; -$lang['stnv0018'] = "Please connect to the TS3 Server and then Refresh your Session by pressing the blue Refresh Button at the top-right corner."; -$lang['stnv0019'] = "My Statistics - Page Content"; -$lang['stnv0020'] = "This page contains a overall summary of your personal statistics and activity on the server."; -$lang['stnv0021'] = "The informations are collected since the beginning of the Ranksystem, they are not since the beginning of the TeamSpeak server."; -$lang['stnv0022'] = "This page receives its values out of a database. So the values might be delayed a bit."; -$lang['stnv0023'] = "The sum inside of the donut charts may differ to the amount of 'Total user'. The reason is that this data weren't collected with older versions of the Ranksystem."; -$lang['stnv0024'] = "Ranksystem - Statistics"; -$lang['stnv0025'] = "Limit entries"; -$lang['stnv0026'] = "all"; -$lang['stnv0027'] = "The Informations on this site could be outdated! It seems the Ranksystem is no more connected to the TeamSpeak."; -$lang['stnv0028'] = "(Not Connected To TS3!)"; -$lang['stnv0029'] = "List Rankup"; -$lang['stnv0030'] = "Ranksystem Info"; -$lang['stri0001'] = "Ranksystem Information"; -$lang['stri0002'] = "What Is The Ranksystem?"; -$lang['stri0003'] = "A TS3 Bot, which automatically grant ranks (servergroups) to user on a TeamSpeak 3 Server for online time or online activity. It also gathers informations and statistics about the user and displays the result on this site."; -$lang['stri0004'] = "Who Created The Ranksystem?"; -$lang['stri0005'] = "When Did The Ranksystem Created?"; -$lang['stri0006'] = "First alpha release: 05/10/2014."; -$lang['stri0007'] = "First beta release: 01/02/2015."; -$lang['stri0008'] = "You can see the newest version on the Ranksystem Website."; -$lang['stri0009'] = "How Did The Ranksystem Created?"; -$lang['stri0010'] = "The Ranksystem is coded in"; -$lang['stri0011'] = "It uses also the following libraries:"; -$lang['stri0012'] = "Special Thanks To:"; -$lang['stri0013'] = "sergey - for russian translation"; -$lang['stri0014'] = "Bejamin Frost - for initialisation the bootstrap design"; -$lang['sttw0001'] = "Top Users"; -$lang['sttw0002'] = "Of The Week"; -$lang['sttw0003'] = "With %s Hours Online Time"; -$lang['sttw0004'] = "Top 10 Compared"; -$lang['sttw0005'] = "Hours (Defines 100 %)"; -$lang['sttw0006'] = "%s Hours (%s%)"; -$lang['sttw0007'] = "Top 10 Statistics"; -$lang['sttw0008'] = "Top 10 Vs Others In Online Time"; -$lang['sttw0009'] = "Top 10 Vs Others In Active Time"; -$lang['sttw0010'] = "Top 10 Vs Others In Inactive Time"; -$lang['sttw0011'] = "Top 10 (in Hours)"; -$lang['sttw0012'] = "Other %s Users (in Hours)"; -$lang['sttm0001'] = "Of The Month"; -$lang['stta0001'] = "Of All Time"; -$lang['updb'] = "Запустите это, если вы хотите обновить Ranksystem с более старой версии до версии %s!

Запустите это один раз после чего удалите update_%s.php файлы с вашего вебсервера.


Обновление Базы данных:
"; -$lang['updel'] = "Пожалуйста, удалите следующие файлы из корня ranksystem, если они все еще существуют:
%s"; -$lang['upinf'] = "Доступна новая версия Ранг Системы; Сообщаю Клиентам на Сервере..."; -$lang['upmov'] = "Пожалуйста, переместите \'%s\' в подпапку \'%s\' и перепишите существующий!"; -$lang['upmsg'] = "\nЭй, доступна новая версия [B]Ранг Системы[/B]!\n\nтекущая версия: %s\n[B]новая версия: %s[/B]\n\nПожалуйста посетите наш сайт [URL]http://ts-n.net/ranksystem.php[/URL] для получения более подробной информации."; -$lang['upsucc'] = "Обновление базы данных успешно выполнено."; -$lang['upuser'] = "Пользователь %s (Уникальный ID клиента: %s; ID в базе данных: %s) получает новое количество (сумм. время подключения) из %s (thereof active %s)."; -$lang['upuserboost'] = "Пользователь %s (Уникальный ID клиента: %s; ID в базе данных: %s) получает новое количество (сумм. время подключения) из %s (thereof active %s) [BOOST %sx]."; -$lang['upusrerr'] = "Пользователь с уникальным ID %s не был найден (не правильно указан Уникальный ID или пользователь в настоящий момент не подключен к серверу Teamspeak)!"; -$lang['upusrinf'] = "Пользователь %s был успешно информирован."; -$lang['user'] = "Логин: "; -$lang['usermsgactive'] = "\nЭй, вы получили новый Ранг, так как были активны в течении %s дней, %s часов, %s минут и %s секунд."; -$lang['usermsgonline'] = "\nЭй, вы получили новый Ранг, так как были онлайн в течении %s дней, %s часов, %s минут и %s секунд."; -$lang['wiaction'] = "выполнить"; -$lang['wibgco'] = "Цвет фона:"; -$lang['wibgcodesc'] = "Укажите код цвета фона.
(только HTML код; должно начинаться с # )"; -$lang['wiboost'] = "повышение"; -$lang['wiboostdesc'] = "Give an user on your TeamSpeak server a servergroup (have to be created manually), which you can declare here as boost group. Define also a factor which should be used (for example 2x) and a time, how long the boost should be rated.
The higher the factor, the faster an user reaches the next higher rank.
Is the time expired, the boost servergroup get automatically removed from the concerned user. The time starts running as soon as the user gets the servergroup.

servergroup ID => factor => time (in seconds)

Each entry have to separate from next with a comma.

Example:
12=>2=>6000,13=>3=>2500,14=>5=>600

On this an user in servergroup 12 get the factor 2 for the next 6000 seconds, an user in servergroup 13 get the factor 3 for 2500 seconds, and so on..."; -$lang['wichdbid'] = "Client-database-ID reset"; -$lang['wichdbiddesc'] = "Сбрасывает время онлайн пользователя, если его ID в базы данных клиента TeamSpeak изменился.

Пример:
Если пользователь удален из БД сервера TeamSpeak, то, новый ID базы данных клиента будет записан со следующим подключением к серверу."; -$lang['wiconferr'] = "Есть ошибка в конфигурации Ranksystem. Пожалуйста, зайдите в Веб Панель и проверте настройки раздела 'Настройка Ранг Системы'. Особенно проверьте 'Ранги'!"; -$lang['widaform'] = "Формат даты"; -$lang['widaformdesc'] = "Выберите формат показа даты.

Пример:
%a дней, %h часов, %i минут, %s секунд"; -$lang['widbcfgsuc'] = "Настройки Базы Данных успешно сохранены."; -$lang['widbcfgerr'] = "Ошибка сохранения настроек базы данных! Ошибка подключения, проверте на правильность настроек 'other/dbconfig.php'"; -$lang['widelcld'] = "удаление пользователей"; -$lang['widelcldgrp'] = "renew groups"; -$lang['widelcldgrpdesc'] = "The Ranksystem remember the given servergroups, so it don't need to give/check this with every run of the worker.php again.

With this function you can remove once time the knowledge of given servergroups. In effect the ranksystem try to give all clients (which are on the TS3 server online) the servergroup of the actual rank.
For each client, which gets the group or stay in group, the Ranksystem remember this like described at beginning.

This function can be helpful, when user are not in the servergroup, they should be for the defined online time.

Attention: Run this in a moment, where the next few minutes no rankups become due!!! The Ranksystem can't remove the old group, cause he can't remember ;-)"; -$lang['widelclddesc'] = "Удаление выбранных клиентов из базы данных Ранг-Системы.

Клиент непосредственно на сервере Teamspeak не будет удален."; -$lang['widelsg'] = "удаление из сервер групп"; -$lang['widelsgdesc'] = "Выберите, если клиенты должны также быть удалены из последней известной Сервер-группы, когда Вы удаляете клиентов из базы данных Ранг Системы.

Будет затронуты только те сервер группы, которые указанны в настройках Ранг Системы"; -$lang['wideltime'] = "Время удаления"; -$lang['wideltimedesc'] = "Отчистка базы данных Ранг Системы от старых клиентов.
Entry a time in seconds which a client was not seen to delete it.

0 - deletes all clients out of the Ranksystem

При этом база данных пользователей на сервере TeamSpeak затронута не будет!"; -$lang['wiexgrp'] = "Исключения сервер групп"; -$lang['wiexgrpdesc'] = "Укажите через запятую какие сервер группы будут игнорироваться Ранг Системой.
Если пользователь находится хоты бы в одной из этих групп то Ранг Система будет игнорировать его."; -$lang['wiexuid'] = "Исключения CID"; -$lang['wiexuiddesc'] = "Укажите через запятую уникальные идентификаторы клиентов (Client-IDs), которых будет игнорировать Ранг Система.
Пользователи в этом списке будет проигнорированы Ранг Системой."; -$lang['wigrptime'] = "Ранги"; -$lang['wigrptimedesc'] = "Укажите через какой промежуток времени будет выданная сервер группа.

Время (в секундах)=>номер сервер группы SID

Важным условием для этого, является учет времени онлайн пользователя или если включен учет 'Время простоя'.

Каждый параметр должен разделяться запятой.

Так же время должно быть указанно по 'нарастающей'

Пример:
60=>9,120=>10,180=>11

По истечению 60 секунд пользователь получает сервер группу под SID 9, по истечению еще 120 секунд пользователь получает сервер группу SID 10, и так далее..."; -$lang['wihdco'] = "Цвет заголовка:"; -$lang['wihdcodesc'] = "Укажите код цвета заголовка.
(только HTML код; должно начинаться с # )"; -$lang['wihl'] = "Веб Панель - Система Рангов"; -$lang['wihladm'] = "Лист Администратора"; -$lang['wihlcfg'] = "Настройка Ранг Системы"; -$lang['wihlclg'] = "Редактирование клиентов (глобальное)"; -$lang['wihlcls'] = "Редактирование клиентов (выборочное)"; -$lang['wihldb'] = "Настройки Базы Данных"; -$lang['wihlsty'] = "Настройки стиля"; -$lang['wihlts'] = "Настройка поключения к TeamSpeak"; -$lang['wihvco'] = "Цвет Hover:"; -$lang['wihvcodesc'] = "Укажите код цвета hover.
(только HTML код; должно начинаться с # )"; -$lang['wiifco'] = "Цвет Текста оповещения:"; -$lang['wiifcodesc'] = "Укажите код цвета Текста оповещения.
(только HTML код; должно начинаться с # )"; -$lang['wilogout'] = "Выход"; -$lang['wilog'] = "Logpath"; -$lang['wilogdesc'] = "Path of the log file of the Ranksystem.

Example:
/var/logs/ranksystem/

Be sure, the webuser has the write-permissions to the logpath."; -$lang['wimsgusr'] = "Уведомление"; -$lang['wimsgusrdesc'] = "Сообщение пользователю о повышение ранга.
Отредактируйте сообщение в 'lang.php'
(usermsgonline или usermsgactive)"; -$lang['wiscco'] = "Цвет Successtext:"; -$lang['wisccodesc'] = "Укажите код цвета success-text.
(только HTML код; должно начинаться с # )"; -$lang['wiselcld'] = "Выбор клиентов"; -$lang['wiselclddesc'] = "Выберите клиентов последним известным именем пользователя. Для этого Вы только должны начать печатать.
Выбор нескольких пользователей - отделенная запятая, которая ставится системой автоматически.

With the selection you can choose with the next step an action."; -$lang['wishcolas'] = "ток сервер группа"; -$lang['wishcolasdesc'] = "Показ колонки 'ток сервер группа' в list_rankup.php"; -$lang['wishcolat'] = "Время активности"; -$lang['wishcolatdesc'] = "Показ колонки 'суммарное время активности' в list_rankup.php"; -$lang['wishcolcld'] = "Ник клиента"; -$lang['wishcolclddesc'] = "Показ колонки 'Ник клиента' в list_rankup.php"; -$lang['wishcoldbid'] = "ID в Базе данных"; -$lang['wishcoldbiddesc'] = "Показ колонки 'ID в Базе данных' в list_rankup.php"; -$lang['wishcolit'] = "Время простоя"; -$lang['wishcolitdesc'] = "Показ колонки 'суммарное время простоя' в list_rankup.php"; -$lang['wishcolls'] = "Последний раз замечен"; -$lang['wishcollsdesc'] = "Показ колонки 'Последний раз замечен' в list_rankup.php"; -$lang['wishcolnx'] = "Следующий Ранг"; -$lang['wishcolnxdesc'] = "Показ колонки 'Следующий Ранг' в list_rankup.php"; -$lang['wishcolot'] = "Время подключения"; -$lang['wishcolotdesc'] = "Показ колонки 'суммарное время подключения' в list_rankup.php"; -$lang['wishcolrg'] = "П\Н"; -$lang['wishcolrgdesc'] = "Показ колонки 'Порядковый номер' в list_rankup.php"; -$lang['wishcolsg'] = "Следующая сервер группа"; -$lang['wishcolsgdesc'] = "Показ колонки 'следующая сервер группа' в list_rankup.php"; -$lang['wishcoluuid'] = "Client-ID"; -$lang['wishcoluuiddesc'] = "Показ колонки 'уникальный ID клиента' в list_rankup.php"; -$lang['wishexcld'] = "Пользователи исключения"; -$lang['wishexclddesc'] = "Показывать пользователий в list_rankup.php,
которые исключены по параметру uniqueID."; -$lang['wishexgrp'] = "Группы исключения"; -$lang['wishexgrpdesc'] = "Показывать пользователий в list_rankup.php, которые находятся в списке 'исключение клиента' и не должы учитываться Системой Рангов."; -$lang['wishgen'] = "Sitegen"; -$lang['wishgendesc'] = "Показывать время генерации списка в конце страницы."; -$lang['wishhicld'] = "Пользователи с высоким рангом"; -$lang['wishhiclddesc'] = "Показывать пользователий в list_rankup.php, который достиг высшего уровня в Ranksystem."; -$lang['wisupidle'] = "Время простоя"; -$lang['wisupidledesc'] = "Если эта функция активна, 'сумм. время простоя' будет основанием от 'сумм. время подключения'. Вместо 'сумм. время подключения', предыдущая вычитание будет рассматриваться на повышение Ранга."; -$lang['wisvconf'] = "сохранить"; -$lang['wisvsuc'] = "Изменения успешно сохранены!"; -$lang['witime'] = "Timezone"; -$lang['witimedesc'] = "Select the timezone the server is hosted."; -$lang['wits3dch'] = "Default Channel"; -$lang['wits3dchdesc'] = "The channel-ID, the bot should connect with.

The Bot will join this channel after connecting to the TeamSpeak server."; -$lang['wits3host'] = "TS3 Hostaddress"; -$lang['wits3hostdesc'] = "Адрес TeamSpeak 3 Сервера
(IP или DNS)"; -$lang['wits3sm'] = "Замедленный режим"; -$lang['wits3smdesc'] = "With the Slowmode you can reduce \"spam\" of query commands to the TeamSpeak server. This prevent bans in case of flood.
TeamSpeak Query commands get delayed with this function.

!!! ALSO IT REDUCE THE CPU USAGE !!!

The activation is not recommended, if not required. The delay increases the duration of the Bot, which makes it imprecisely."; -$lang['wits3qnm'] = "Botname"; -$lang['wits3qnm2'] = "2е Botname"; -$lang['wits3qnm2desc'] = "Это Botname, будет использоваться если первое уже занято."; -$lang['wits3qnmdesc'] = "Имя, под которым будет сидеть Ранг система.
Убедитесь что оно не занято."; -$lang['wits3querpw'] = "TS3 Query-Пароль"; -$lang['wits3querpwdesc'] = "TeamSpeak 3 query Пароль
Ваш пароль от query пользователя."; -$lang['wits3querusr'] = "TS3 Query-Логин"; -$lang['wits3querusrdesc'] = "TeamSpeak 3 query Логин
По умолчанию: serveradmin
Конечно вы можете указать другой логин для Ranksystem.
Необходимые разрешения привилегий вы можете найти на:
http://ts-n.net/ranksystem.php"; -$lang['wits3query'] = "TS3 Query-Порт"; -$lang['wits3querydesc'] = "TeamSpeak 3 query Порт
По умолчанию: 10011 (TCP)
Если порт изменен, то укажите его согласно настройкам из 'ts3server.ini'."; -$lang['wits3voice'] = "TS3 Voice-Порт"; -$lang['wits3voicedesc'] = "TeamSpeak 3 voice Порт
По умолчанию: 9987 (UDP)
Этот порт используется Teamspeak3 клиентом для подключения к серверу."; -$lang['witxco'] = "Цвет текста:"; -$lang['witxcodesc'] = "Укажите код цвета текста.
(только HTML код; должно начинаться с # )"; -$lang['wiupcheck'] = "Проверка обновлений"; -$lang['wiupcheckdesc'] = "Если проверка обнолений включена, то пользователь получит приватное сообщение, когда обновление доступно."; -$lang['wiuptime'] = "Интервал проверки"; -$lang['wiuptimedesc'] = "Введите здесь через сколько секунд Ранг Система должна проверить наличие обновлений.
Внимание, после каждой проверки перечисленные пользователь получает уведомление. Если ни один из перечисленных пользователей не онлайн, Система Рангов будет пытаться уведомить пользователей со следующего интервала сканирования."; -$lang['wiupuid'] = "Получатель"; -$lang['wiupuiddesc'] = "Укажите через запятую уникальные ID клиентов, которые будут проинформированы о доступных обновлениях посредством приватного сообщения через TeamSpeak."; -$lang['wiversion'] = "(текущая версия %s)"; -$lang['wivlang'] = "Язык"; -$lang['wivlangdesc'] = "Язык Ранг Системы

de - Немецкий
en - Английский
ru - Русский"; -$lang['wiwnco'] = "Цвет текста предупреждений:"; -$lang['wiwncodesc'] = "Укажите цвет текста предупреждения.
(только HTML код; должно начинаться с # )"; -?> \ No newline at end of file + добавлен к Ранг Системе.";$lang['alrup']="Вы уже обновили свою базу данных. Пожалуйста, удалите этот файл из своего веб-сервера!";$lang['changedbid']="Пользователь %s (Уникальный ID клиента: %s) получил новый TeamSpeak Client-database-ID (%s). Обновление старой Client-database-ID (%s) и сброс collected times!";$lang['crawl']="Сканирование активности подключенных пользователей...";$lang['clean']="Сканирование пользователей, которых должен удалить...";$lang['cleanc']="чистка пользователей";$lang['cleancdesc']="С включением этой функцией старые пользователи в Ranksystem будут удалены.

С этой целью, Ranksystem синхронизируется с базой данных TeamSpeak. Пользователи, которых не существует в TeamSpeak, будут удалены из Ranksystem.

Эта функция работает когда 'Slowmode' дезактивирован!


Для автоматического регулирования базы данных может использоваться TeamSpeak ClientCleaner:
http://ts-n.net/clientcleaner.php";$lang['cleandel']="%s пользователя удаленны из базы данных Ranksystem, так как они больше не существуют в базе данных TeamSpeak.";$lang['cleanno']="Никого не было, чтобы было что удалить...";$lang['cleanp']="период отчистки";$lang['cleanpdesc']="Укажите время, которое должно пройти перед запуском 'чистка пользователей'.

Устанавливается в секундах.

Для больших баз данных рекомендуется использовать один раз в день.";$lang['cleanrs']="Пользователи в базе данных Ranksystem: %s";$lang['cleants']="Пользователи найдены в базе данных TeamSpeak: %s (at %s)";$lang['days']="days";$lang['dbconerr']="Ошибка подключения к базе данных MySQL: ";$lang['delcldgrpif']="Ошибка by removing the knowledge for servergroups: %s";$lang['delcldgrpsc']="Данные о сервер группах для пользователя %s успешно удалена.";$lang['delclientsif']="%s Клиент(ов) удалено из базы данных Ранг Системы!";$lang['delclientssc']="%s Клиент(ов) успешно удалено из базы данных Ранг Системы!";$lang['errlogin']="Логин и/или пароль не верны! Попробуйте снова...";$lang['error']="Ошибка ";$lang['errremgrp']="Ошибка удаления пользователя с уникальным идентификатором UID: %s из сервер группы SID: %s!";$lang['errremdb']="Ошибка удаления пользователя с уникальным идентификатором UID % из базы данных Ранг Системы!";$lang['errsel']="Error by choosing the selections with
selected client: %s
option 'delete clients': %s
option 'sum. online time': %s";$lang['errukwn']="Произошла неизвестная ошибка!";$lang['errupcount']="Ошибка подсчета суммарного времени подключения %s пользователя с UCI %s";$lang['firstuse']="Кажется это первый запуск. Начинаю вести Историю Пользователей...";$lang['highest']="высокий Ранг достигнут";$lang['instdb']="Установка Базы данных:";$lang['instdberr']="Ошибка создания базы данных: ";$lang['instdbsubm']="Создание Базы данных";$lang['instdbsuc']="База данных %s успешно создана.";$lang['insttb']="Установка Базы Данных:";$lang['insttberr']="Ошибка при установке таблиц: ";$lang['insttbsuc']="Таблица %s успешно создана.";$lang['isntwicfg']="Не получилось записать настройки базы данных! Пожалуйста установите права на запись 'other/dbconfig.php' chmod 0777 и попробуйте снова.";$lang['isntwichm']="Please edit the 'other/dbconfig.php', and the folders 'avatars/', 'icons/' and 'logs/' with the needed permissions. Therefore edit the chmod to 0777. After it try again (reload the page).";$lang['isntwidb']="Укажите настройки для подключения к базе данных:";$lang['isntwidberr']="Пожалуйста, проверьте, все ли поля были заполнены а так же корректность заполнения!";$lang['isntwidbhost']="Адрес Базы Данных:";$lang['isntwidbhostdesc']="Адрес сервера Базы Данных
(IP or DNS)";$lang['isntwidbmsg']="Ошибка Данных: ";$lang['isntwidbname']="Имя Базы Данных:";$lang['isntwidbnamedesc']="Название Базы Данных";$lang['isntwidbpass']="Пароль Базы Данных:";$lang['isntwidbpassdesc']="Пароль для подключения к базе данных";$lang['isntwidbtype']="Тип Базы Данных:";$lang['isntwidbtypedesc']="Тип Базы Данных

У вас должен быть установлен PDO Драйвер.
Для получения дополнительной информации см. http://ts-n.net/ranksystem.php";$lang['isntwidbusr']="Пользователь Базы Данных:";$lang['isntwidbusrdesc']="Пользователь с доступом к Базе Данных";$lang['isntwidel']="Пожалуйста удалите файл 'install.php' и файлы 'update_x-xx.php' с вашего Веб-Сервера и откройте %s для настройки Ранг Системы!";$lang['isntwiusr']="Пользователь Веб-Панели успешно создан.";$lang['isntwiusrcr']="создание доступа";$lang['isntwiusrdesc']="Введите имя пользователя и пароль для доступа в Веб-Панель. С помощью Веб-Панели вы сможете настроить ранг систему.";$lang['isntwiusrh']="Доступ - Веб-Панель";$lang['listacsg']="ток сервер группа";$lang['listcldbid']="ID клиента в базе данных";$lang['listexgrp']="Не учитывается Ранг Системой (исключения по сервергруппам).";$lang['listexuid']="Не учитывается Ранг Системой (исключения по клиентам).";$lang['listip']="IP адрес";$lang['listnick']="Ник";$lang['listnxsg']="Следующая сервер группа";$lang['listnxup']="Следующий Ранг через";$lang['listrank']="П\Н";$lang['listseen']="последняя активность";$lang['listsuma']="Сумм. время активности";$lang['listsumi']="Сумм. время простоя";$lang['listsumo']="Сумм. время подключения";$lang['listtime']="%s день(й), %s час(ов), %s мин., %s сек.";$lang['listuid']="Уникальный ID клиента";$lang['new']="новый";$lang['nocount']="Пользователь %s (Уникальный Клиент ID: %s; Клиент ID %s) это query-пользователь (постоянно первое подключение) -> не будет учитываться!";$lang['noentry']="Записей не найдено..";$lang['pass']="Пароль: ";$lang['queryname']="Первый Botname уже используется. Попробуйте вторым Botname...";$lang['sccrmcld']="Пользователь с уникальным ID %s успешно удален из базы данных Ранг Системы.";$lang['sccupcount']="Пользователь с уникальным ID %s успешно переписан с итоговым временем онлайн %s.";$lang['setontime']="сумм. время подключения";$lang['setontimedesc']="Укажите новое суммарное время подключения для выбранных клиентов. С этим изминением пользователь получит указанное время подключения.

Указанное время подключения будет учтено Ранг Системой.";$lang['sgrpadd']="Выдана сервер группа %s пользователю %s (Уникальный ID клиента: %s; ID в базе данных: %s).";$lang['sgrprerr']="Что то пошло не так, проблема с сервер группой пользователя %s (Уникальный ID клиента:: %s; ID в базе данных %s)!";$lang['sgrprm']="С пользователя %s (Уникальный ID клиента: %s; ID в базе данных: %s) удалена сервер-группа %s.";$lang['sitegen']="Страница генерирована за %s секунд. %s пользователей.";$lang['sitegenl']="Страница генерирована за %s секунд с %s пользователями ( %s пользователей показанно; %s игнорируются по правилам исключения; %s высокого ранга).";$lang['stix0001']="Server Statistics";$lang['stix0002']="Total Users";$lang['stix0003']="View Details";$lang['stix0004']="Online Time Of All User / Total";$lang['stix0005']="View Top Of All Time";$lang['stix0006']="View Top Of The Month";$lang['stix0007']="View Top Of The Week";$lang['stix0008']="Server Usage";$lang['stix0009']="In The Last 7 Days";$lang['stix0010']="In The Last 30 Days";$lang['stix0011']="In The Last 24 Hours";$lang['stix0012']="select period";$lang['stix0013']="Last Day";$lang['stix0014']="Last Week";$lang['stix0015']="Last Month";$lang['stix0016']="Active / Inactive Time (Of All Clients)";$lang['stix0017']="Versions (Of All Clients)";$lang['stix0018']="Nationalities (Of All Clients)";$lang['stix0019']="Platforms (Of All Clients)";$lang['stix0020']="Current Statistics";$lang['stix0021']="Requested Information";$lang['stix0022']="Result";$lang['stix0023']="Server Status";$lang['stix0024']="Online";$lang['stix0025']="Offline";$lang['stix0026']="Clients (Online / Max)";$lang['stix0027']="Amount Of Channels";$lang['stix0028']="Average Server Ping";$lang['stix0029']="Total Bytes Received";$lang['stix0030']="Total Bytes Sent";$lang['stix0031']="Server Uptime";$lang['stix0032']="before offline:";$lang['stix0033']="00 Days, 00 Hours, 00 Mins, 00 Secs";$lang['stix0034']="Average Packet Loss";$lang['stix0035']="Overall Statistics";$lang['stix0036']="Server Name";$lang['stix0037']="Server Address (Host Address : Port)";$lang['stix0038']="Server Password";$lang['stix0039']="No (Server is Public)";$lang['stix0040']="Yes (Server Is Private)";$lang['stix0041']="Server ID";$lang['stix0042']="Server Platform";$lang['stix0043']="Server Version";$lang['stix0044']="Server Creation Date (dd/mm/yyyy)";$lang['stix0045']="Report To Server List";$lang['stix0046']="Activated";$lang['stix0047']="Not Activated";$lang['stix0048']="not enough data yet...";$lang['stix0049']="Online Time Of All User / Last Month";$lang['stix0050']="Online Time Of All User / Last Week";$lang['stix0051']="TeamSpeak has failed, so no creation date...";$lang['stmy0001']="My Statistics";$lang['stmy0002']="Rank";$lang['stmy0003']="Database ID:";$lang['stmy0004']="Unique ID:";$lang['stmy0005']="Total Connections To The Server:";$lang['stmy0006']="Start Date For Statistics:";$lang['stmy0007']="Total Online Time:";$lang['stmy0008']="Online Time Last 7 Days:";$lang['stmy0009']="Online Time Last 30 Days:";$lang['stmy0010']="Achievements Completed:";$lang['stmy0011']="Time Achievement Progress";$lang['stmy0012']="Time: Legendary";$lang['stmy0013']="Because You Have A Online Time Of %s hours.";$lang['stmy0014']="Progress Completed";$lang['stmy0015']="Time: Gold";$lang['stmy0016']="% Completed For Legendary";$lang['stmy0017']="Time: Silver";$lang['stmy0018']="% Completed For Gold";$lang['stmy0019']="Time: Bronze";$lang['stmy0020']="% Completed For Silver";$lang['stmy0021']="Time: Unranked";$lang['stmy0022']="% Completed For Bronze";$lang['stmy0023']="Connection Achievement Progress";$lang['stmy0024']="Connects: Legendary";$lang['stmy0025']="Because You Connected %s Times To The Server.";$lang['stmy0026']="Connects: Gold";$lang['stmy0027']="Connects: Silver";$lang['stmy0028']="Connects: Bronze";$lang['stmy0029']="Connects: Unranked";$lang['stnv0001']="Server News";$lang['stnv0002']="Close";$lang['stnv0003']="Refresh Client Information";$lang['stnv0004']="Only use this Refresh, when your TS3 information got changed, such as your TS3 username";$lang['stnv0005']="It only works, when you are connected to the TS3 Server at the same time";$lang['stnv0006']="Refresh";$lang['stnv0007']="Battle Area - Page Content";$lang['stnv0008']="You can challenge other users in a battle between two users or two teams.";$lang['stnv0009']="While the battle is active the online time of the teams/users will be counted.";$lang['stnv0010']="When the battle ends the team/user with the highest online time wins.";$lang['stnv0011']="(The regular battling time is 48 hours)";$lang['stnv0012']="The winning team/user will recieve a price, which the user can use whenever the user wants.";$lang['stnv0013']="It will be displayed on the My Statistics tab.";$lang['stnv0014']="(Could be online time boost(2x) for 8 hours, instant online time (4 hours), etc.";$lang['stnv0015']="These boosts can be used for example to climb in the top users of the week)";$lang['stnv0016']="Not available";$lang['stnv0017']="You are not connected to the TS3 Server, so it cant display any data for you.";$lang['stnv0018']="Please connect to the TS3 Server and then Refresh your Session by pressing the blue Refresh Button at the top-right corner.";$lang['stnv0019']="My Statistics - Page Content";$lang['stnv0020']="This page contains a overall summary of your personal statistics and activity on the server.";$lang['stnv0021']="The informations are collected since the beginning of the Ranksystem, they are not since the beginning of the TeamSpeak server.";$lang['stnv0022']="This page receives its values out of a database. So the values might be delayed a bit.";$lang['stnv0023']="The sum inside of the donut charts may differ to the amount of 'Total user'. The reason is that this data weren't collected with older versions of the Ranksystem.";$lang['stnv0024']="Ranksystem - Statistics";$lang['stnv0025']="Limit entries";$lang['stnv0026']="all";$lang['stnv0027']="The Informations on this site could be outdated! It seems the Ranksystem is no more connected to the TeamSpeak.";$lang['stnv0028']="(Not Connected To TS3!)";$lang['stnv0029']="List Rankup";$lang['stnv0030']="Ranksystem Info";$lang['stnv0031']="DE - Deutsch";$lang['stnv0032']="EN - English";$lang['stnv0033']="RU - русский";$lang['stri0001']="Ranksystem Information";$lang['stri0002']="What Is The Ranksystem?";$lang['stri0003']="A TS3 Bot, which automatically grant ranks (servergroups) to user on a TeamSpeak 3 Server for online time or online activity. It also gathers informations and statistics about the user and displays the result on this site.";$lang['stri0004']="Who Created The Ranksystem?";$lang['stri0005']="When Did The Ranksystem Created?";$lang['stri0006']="First alpha release: 05/10/2014.";$lang['stri0007']="First beta release: 01/02/2015.";$lang['stri0008']="You can see the newest version on the Ranksystem Website.";$lang['stri0009']="How Did The Ranksystem Created?";$lang['stri0010']="The Ranksystem is coded in";$lang['stri0011']="It uses also the following libraries:";$lang['stri0012']="Special Thanks To:";$lang['stri0013']="sergey - for russian translation";$lang['stri0014']="Bejamin Frost - for initialisation the bootstrap design";$lang['sttw0001']="Top Users";$lang['sttw0002']="Of The Week";$lang['sttw0003']="With %s Hours Online Time";$lang['sttw0004']="Top 10 Compared";$lang['sttw0005']="Hours (Defines 100 %)";$lang['sttw0006']="%s Hours (%s%)";$lang['sttw0007']="Top 10 Statistics";$lang['sttw0008']="Top 10 Vs Others In Online Time";$lang['sttw0009']="Top 10 Vs Others In Active Time";$lang['sttw0010']="Top 10 Vs Others In Inactive Time";$lang['sttw0011']="Top 10 (in Hours)";$lang['sttw0012']="Other %s Users (in Hours)";$lang['sttm0001']="Of The Month";$lang['stta0001']="Of All Time";$lang['updb']="Запустите это, если вы хотите обновить Ranksystem с более старой версии до версии %s!

Запустите это один раз после чего удалите update_%s.php файлы с вашего вебсервера.


Обновление Базы данных:
";$lang['updel']="Пожалуйста, удалите следующие файлы из корня ranksystem, если они все еще существуют:
%s";$lang['upinf']="Доступна новая версия Ранг Системы; Сообщаю Клиентам на Сервере...";$lang['upmov']="Пожалуйста, переместите \'%s\' в подпапку \'%s\' и перепишите существующий!";$lang['upmsg']="\nЭй, доступна новая версия [B]Ранг Системы[/B]!\n\nтекущая версия: %s\n[B]новая версия: %s[/B]\n\nПожалуйста посетите наш сайт [URL]http://ts-n.net/ranksystem.php[/URL] для получения более подробной информации.";$lang['upsucc']="Обновление базы данных успешно выполнено.";$lang['upuser']="Пользователь %s (Уникальный ID клиента: %s; ID в базе данных: %s) получает новое количество (сумм. время подключения) из %s (thereof active %s).";$lang['upuserboost']="Пользователь %s (Уникальный ID клиента: %s; ID в базе данных: %s) получает новое количество (сумм. время подключения) из %s (thereof active %s) [BOOST %sx].";$lang['upusrerr']="Пользователь с уникальным ID %s не был найден (не правильно указан Уникальный ID или пользователь в настоящий момент не подключен к серверу Teamspeak)!";$lang['upusrinf']="Пользователь %s был успешно информирован.";$lang['user']="Логин: ";$lang['usermsgactive']="\nЭй, вы получили новый Ранг, так как были активны в течении %s дней, %s часов, %s минут и %s секунд.";$lang['usermsgonline']="\nЭй, вы получили новый Ранг, так как были онлайн в течении %s дней, %s часов, %s минут и %s секунд.";$lang['wiaction']="выполнить";$lang['wibgco']="Цвет фона:";$lang['wibgcodesc']="Укажите код цвета фона.
(только HTML код; должно начинаться с # )";$lang['wiboost']="повышение";$lang['wiboostdesc']="Give an user on your TeamSpeak server a servergroup (have to be created manually), which you can declare here as boost group. Define also a factor which should be used (for example 2x) and a time, how long the boost should be rated.
The higher the factor, the faster an user reaches the next higher rank.
Is the time expired, the boost servergroup get automatically removed from the concerned user. The time starts running as soon as the user gets the servergroup.

servergroup ID => factor => time (in seconds)

Each entry have to separate from next with a comma.

Example:
12=>2=>6000,13=>3=>2500,14=>5=>600

On this an user in servergroup 12 get the factor 2 for the next 6000 seconds, an user in servergroup 13 get the factor 3 for 2500 seconds, and so on...";$lang['wichdbid']="Client-database-ID reset";$lang['wichdbiddesc']="Сбрасывает время онлайн пользователя, если его ID в базы данных клиента TeamSpeak изменился.

Пример:
Если пользователь удален из БД сервера TeamSpeak, то, новый ID базы данных клиента будет записан со следующим подключением к серверу.";$lang['wiconferr']="Есть ошибка в конфигурации Ranksystem. Пожалуйста, зайдите в Веб Панель и проверте настройки раздела 'Настройка Ранг Системы'. Особенно проверьте 'Ранги'!";$lang['widaform']="Формат даты";$lang['widaformdesc']="Выберите формат показа даты.

Пример:
%a дней, %h часов, %i минут, %s секунд";$lang['widbcfgsuc']="Настройки Базы Данных успешно сохранены.";$lang['widbcfgerr']="Ошибка сохранения настроек базы данных! Ошибка подключения, проверте на правильность настроек 'other/dbconfig.php'";$lang['widelcld']="удаление пользователей";$lang['widelcldgrp']="renew groups";$lang['widelcldgrpdesc']="The Ranksystem remember the given servergroups, so it don't need to give/check this with every run of the worker.php again.

With this function you can remove once time the knowledge of given servergroups. In effect the ranksystem try to give all clients (which are on the TS3 server online) the servergroup of the actual rank.
For each client, which gets the group or stay in group, the Ranksystem remember this like described at beginning.

This function can be helpful, when user are not in the servergroup, they should be for the defined online time.

Attention: Run this in a moment, where the next few minutes no rankups become due!!! The Ranksystem can't remove the old group, cause he can't remember ;-)";$lang['widelclddesc']="Удаление выбранных клиентов из базы данных Ранг-Системы.

Клиент непосредственно на сервере Teamspeak не будет удален.";$lang['widelsg']="удаление из сервер групп";$lang['widelsgdesc']="Выберите, если клиенты должны также быть удалены из последней известной Сервер-группы, когда Вы удаляете клиентов из базы данных Ранг Системы.

Будет затронуты только те сервер группы, которые указанны в настройках Ранг Системы";$lang['wideltime']="Время удаления";$lang['wideltimedesc']="Отчистка базы данных Ранг Системы от старых клиентов.
Entry a time in seconds which a client was not seen to delete it.

0 - deletes all clients out of the Ranksystem

При этом база данных пользователей на сервере TeamSpeak затронута не будет!";$lang['wiexgrp']="Исключения сервер групп";$lang['wiexgrpdesc']="Укажите через запятую какие сервер группы будут игнорироваться Ранг Системой.
Если пользователь находится хоты бы в одной из этих групп то Ранг Система будет игнорировать его.";$lang['wiexuid']="Исключения CID";$lang['wiexuiddesc']="Укажите через запятую уникальные идентификаторы клиентов (Client-IDs), которых будет игнорировать Ранг Система.
Пользователи в этом списке будет проигнорированы Ранг Системой.";$lang['wigrptime']="Ранги";$lang['wigrptimedesc']="Укажите через какой промежуток времени будет выданная сервер группа.

Время (в секундах)=>номер сервер группы SID

Важным условием для этого, является учет времени онлайн пользователя или если включен учет 'Время простоя'.

Каждый параметр должен разделяться запятой.

Так же время должно быть указанно по 'нарастающей'

Пример:
60=>9,120=>10,180=>11

По истечению 60 секунд пользователь получает сервер группу под SID 9, по истечению еще 120 секунд пользователь получает сервер группу SID 10, и так далее...";$lang['wihdco']="Цвет заголовка:";$lang['wihdcodesc']="Укажите код цвета заголовка.
(только HTML код; должно начинаться с # )";$lang['wihl']="Веб Панель - Система Рангов";$lang['wihladm']="Лист Администратора";$lang['wihlcfg']="Настройка Ранг Системы";$lang['wihlclg']="Редактирование клиентов (глобальное)";$lang['wihlcls']="Редактирование клиентов (выборочное)";$lang['wihldb']="Настройки Базы Данных";$lang['wihlsty']="Настройки стиля";$lang['wihlts']="Настройка поключения к TeamSpeak";$lang['wihvco']="Цвет Hover:";$lang['wihvcodesc']="Укажите код цвета hover.
(только HTML код; должно начинаться с # )";$lang['wiifco']="Цвет Текста оповещения:";$lang['wiifcodesc']="Укажите код цвета Текста оповещения.
(только HTML код; должно начинаться с # )";$lang['wilogout']="Выход";$lang['wilog']="Logpath";$lang['wilogdesc']="Path of the log file of the Ranksystem.

Example:
/var/logs/ranksystem/

Be sure, the webuser has the write-permissions to the logpath.";$lang['wimsgusr']="Уведомление";$lang['wimsgusrdesc']="Сообщение пользователю о повышение ранга.
Отредактируйте сообщение в 'lang.php'
(usermsgonline или usermsgactive)";$lang['wiscco']="Цвет Successtext:";$lang['wisccodesc']="Укажите код цвета success-text.
(только HTML код; должно начинаться с # )";$lang['wiselcld']="Выбор клиентов";$lang['wiselclddesc']="Выберите клиентов последним известным именем пользователя. Для этого Вы только должны начать печатать.
Выбор нескольких пользователей - отделенная запятая, которая ставится системой автоматически.

With the selection you can choose with the next step an action.";$lang['wishcolas']="ток сервер группа";$lang['wishcolasdesc']="Показ колонки 'ток сервер группа' в list_rankup.php";$lang['wishcolat']="Время активности";$lang['wishcolatdesc']="Показ колонки 'суммарное время активности' в list_rankup.php";$lang['wishcolcld']="Ник клиента";$lang['wishcolclddesc']="Показ колонки 'Ник клиента' в list_rankup.php";$lang['wishcoldbid']="ID в Базе данных";$lang['wishcoldbiddesc']="Показ колонки 'ID в Базе данных' в list_rankup.php";$lang['wishcolit']="Время простоя";$lang['wishcolitdesc']="Показ колонки 'суммарное время простоя' в list_rankup.php";$lang['wishcolls']="Последний раз замечен";$lang['wishcollsdesc']="Показ колонки 'Последний раз замечен' в list_rankup.php";$lang['wishcolnx']="Следующий Ранг";$lang['wishcolnxdesc']="Показ колонки 'Следующий Ранг' в list_rankup.php";$lang['wishcolot']="Время подключения";$lang['wishcolotdesc']="Показ колонки 'суммарное время подключения' в list_rankup.php";$lang['wishcolrg']="П\Н";$lang['wishcolrgdesc']="Показ колонки 'Порядковый номер' в list_rankup.php";$lang['wishcolsg']="Следующая сервер группа";$lang['wishcolsgdesc']="Показ колонки 'следующая сервер группа' в list_rankup.php";$lang['wishcoluuid']="Client-ID";$lang['wishcoluuiddesc']="Показ колонки 'уникальный ID клиента' в list_rankup.php";$lang['wishexcld']="Пользователи исключения";$lang['wishexclddesc']="Показывать пользователий в list_rankup.php,
которые исключены по параметру uniqueID.";$lang['wishexgrp']="Группы исключения";$lang['wishexgrpdesc']="Показывать пользователий в list_rankup.php, которые находятся в списке 'исключение клиента' и не должы учитываться Системой Рангов.";$lang['wishgen']="Sitegen";$lang['wishgendesc']="Показывать время генерации списка в конце страницы.";$lang['wishhicld']="Пользователи с высоким рангом";$lang['wishhiclddesc']="Показывать пользователий в list_rankup.php, который достиг высшего уровня в Ranksystem.";$lang['wisupidle']="Время простоя";$lang['wisupidledesc']="Если эта функция активна, 'сумм. время простоя' будет основанием от 'сумм. время подключения'. Вместо 'сумм. время подключения', предыдущая вычитание будет рассматриваться на повышение Ранга.";$lang['wisvconf']="сохранить";$lang['wisvsuc']="Изменения успешно сохранены!";$lang['witime']="Timezone";$lang['witimedesc']="Select the timezone the server is hosted.";$lang['wits3dch']="Default Channel";$lang['wits3dchdesc']="The channel-ID, the bot should connect with.

The Bot will join this channel after connecting to the TeamSpeak server.";$lang['wits3host']="TS3 Hostaddress";$lang['wits3hostdesc']="Адрес TeamSpeak 3 Сервера
(IP или DNS)";$lang['wits3sm']="Замедленный режим";$lang['wits3smdesc']="With the Slowmode you can reduce \"spam\" of query commands to the TeamSpeak server. This prevent bans in case of flood.
TeamSpeak Query commands get delayed with this function.

!!! ALSO IT REDUCE THE CPU USAGE !!!

The activation is not recommended, if not required. The delay increases the duration of the Bot, which makes it imprecisely.";$lang['wits3qnm']="Botname";$lang['wits3qnm2']="2е Botname";$lang['wits3qnm2desc']="Это Botname, будет использоваться если первое уже занято.";$lang['wits3qnmdesc']="Имя, под которым будет сидеть Ранг система.
Убедитесь что оно не занято.";$lang['wits3querpw']="TS3 Query-Пароль";$lang['wits3querpwdesc']="TeamSpeak 3 query Пароль
Ваш пароль от query пользователя.";$lang['wits3querusr']="TS3 Query-Логин";$lang['wits3querusrdesc']="TeamSpeak 3 query Логин
По умолчанию: serveradmin
Конечно вы можете указать другой логин для Ranksystem.
Необходимые разрешения привилегий вы можете найти на:
http://ts-n.net/ranksystem.php";$lang['wits3query']="TS3 Query-Порт";$lang['wits3querydesc']="TeamSpeak 3 query Порт
По умолчанию: 10011 (TCP)
Если порт изменен, то укажите его согласно настройкам из 'ts3server.ini'.";$lang['wits3voice']="TS3 Voice-Порт";$lang['wits3voicedesc']="TeamSpeak 3 voice Порт
По умолчанию: 9987 (UDP)
Этот порт используется Teamspeak3 клиентом для подключения к серверу.";$lang['witxco']="Цвет текста:";$lang['witxcodesc']="Укажите код цвета текста.
(только HTML код; должно начинаться с # )";$lang['wiupcheck']="Проверка обновлений";$lang['wiupcheckdesc']="Если проверка обнолений включена, то пользователь получит приватное сообщение, когда обновление доступно.";$lang['wiuptime']="Интервал проверки";$lang['wiuptimedesc']="Введите здесь через сколько секунд Ранг Система должна проверить наличие обновлений.
Внимание, после каждой проверки перечисленные пользователь получает уведомление. Если ни один из перечисленных пользователей не онлайн, Система Рангов будет пытаться уведомить пользователей со следующего интервала сканирования.";$lang['wiupuid']="Получатель";$lang['wiupuiddesc']="Укажите через запятую уникальные ID клиентов, которые будут проинформированы о доступных обновлениях посредством приватного сообщения через TeamSpeak.";$lang['wiversion']="(текущая версия %s)";$lang['wivlang']="Язык";$lang['wivlangdesc']="Язык Ранг Системы

de - Немецкий
en - Английский
ru - Русский";$lang['wiwnco']="Цвет текста предупреждений:";$lang['wiwncodesc']="Укажите цвет текста предупреждения.
(только HTML код; должно начинаться с # )";?> \ No newline at end of file diff --git a/languages/nations_de.php b/languages/nations_de.php index 7501b49..ec814b4 100644 --- a/languages/nations_de.php +++ b/languages/nations_de.php @@ -1,250 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/languages/nations_en.php b/languages/nations_en.php index b301687..b1f332a 100644 --- a/languages/nations_en.php +++ b/languages/nations_en.php @@ -1,250 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/other/config.php b/other/config.php index fe1ee97..e2f36c1 100644 --- a/other/config.php +++ b/other/config.php @@ -1 +1 @@ -'SET NAMES utf8',PDO::ATTR_PERSISTENT=>true);}else{$dboptions=array();}try{$mysqlcon=new PDO($dbserver,$db['user'],$db['pass'],$dboptions);}catch(PDOException $e){$sqlconerr="SQL Connection failed: ".$e->getMessage()."\n";echo $sqlconerr;exit;}if(($config=$mysqlcon->query("SELECT * FROM config"))===false){$bgcolor='#101010';$hdcolor='#909090';$txcolor='#707070';$hvcolor='#FFFFFF';$ifcolor='#3366CC';$wncolor='#CC0000';$sccolor='#008000';$showgen='1';}else{$config=$config->fetchAll();$ts['host']=$config[0]['tshost'];$ts['query']=$config[0]['tsquery'];$ts['voice']=$config[0]['tsvoice'];$ts['user']=$config[0]['tsuser'];$ts['pass']=$config[0]['tspass'];$webuser=$config[0]['webuser'];$webpass=$config[0]['webpass'];$language=$config[0]['language'];$queryname=$config[0]['queryname'];$queryname2=$config[0]['queryname2'];$slowmode=$config[0]['slowmode'];if(empty($config[0]['grouptime'])){$grouptime=null;}else{$grouptimearr=explode(',',$config[0]['grouptime']);foreach($grouptimearr as $entry){list($key,$value)=explode('=>',$entry);$grouptime[$key]=$value;}}if(empty($config[0]['boost'])){$boost=null;}else{$boostexp=explode(',',$config[0]['boost']);foreach($boostexp as $entry){list($key,$value1,$value2)=explode('=>',$entry);$boostarr[$key]=array("group"=>$key,"factor"=>$value1,"time"=>$value2);}}$resetbydbchange=$config[0]['resetbydbchange'];$msgtouser=$config[0]['msgtouser'];$update=$config[0]['upcheck'];$uniqueid=explode(',',$config[0]['uniqueid']);$updateinfotime=$config[0]['updateinfotime'];$currvers=$config[0]['currvers'];$substridle=$config[0]['substridle'];$exceptuuid=explode(',',$config[0]['exceptuuid']);$exceptgroup=explode(',',$config[0]['exceptgroup']);$timeformat=$config[0]['dateformat'];$showexgrp=$config[0]['showexgrp'];$showexcld=$config[0]['showexcld'];$showhighest=$config[0]['showhighest'];$showcolrg=$config[0]['showcolrg'];$showcolcld=$config[0]['showcolcld'];$showcoluuid=$config[0]['showcoluuid'];$showcoldbid=$config[0]['showcoldbid'];$showcolls=$config[0]['showcolls'];$showcolot=$config[0]['showcolot'];$showcolit=$config[0]['showcolit'];$showcolat=$config[0]['showcolat'];$showcolas=$config[0]['showcolas'];$showcolnx=$config[0]['showcolnx'];$showcolsg=$config[0]['showcolsg'];$bgcolor=$config[0]['bgcolor'];$hdcolor=$config[0]['hdcolor'];$txcolor=$config[0]['txcolor'];$hvcolor=$config[0]['hvcolor'];$ifcolor=$config[0]['ifcolor'];$wncolor=$config[0]['wncolor'];$sccolor=$config[0]['sccolor'];$showgen=$config[0]['showgen'];$cleanclients=$config[0]['cleanclients'];$cleanperiod=$config[0]['cleanperiod'];$defchid=$config[0]['defchid'];$logpath=$config[0]['logpath'];if($config[0]['timezone']==0){$timezone="Europe/Berlin";}else{$timezone=$config[0]['timezone'];}date_default_timezone_set($timezone);}if(!isset($language)||$language=="en"){require_once(substr(dirname(__FILE__),0,-5).'languages/core_en.php');}elseif($language=="de"){require_once(substr(dirname(__FILE__),0,-5).'languages/core_de.php');}elseif($language=="ru"){require_once(substr(dirname(__FILE__),0,-5).'languages/core_ru.php');}?> \ No newline at end of file +'SET NAMES utf8',PDO::ATTR_PERSISTENT=>true);}else{$dboptions=array();}try{$mysqlcon=new PDO($dbserver,$db['user'],$db['pass'],$dboptions);}catch(PDOException $e){$sqlconerr="SQL Connection failed: ".$e->getMessage()."\n";echo $sqlconerr;exit;}if(($config=$mysqlcon->query("SELECT * FROM config"))===false){$bgcolor='#101010';$hdcolor='#909090';$txcolor='#707070';$hvcolor='#FFFFFF';$ifcolor='#3366CC';$wncolor='#CC0000';$sccolor='#008000';$showgen='1';}else{$config=$config->fetchAll();$ts['host']=$config[0]['tshost'];$ts['query']=$config[0]['tsquery'];$ts['voice']=$config[0]['tsvoice'];$ts['user']=$config[0]['tsuser'];$ts['pass']=$config[0]['tspass'];$webuser=$config[0]['webuser'];$webpass=$config[0]['webpass'];if(!isset($_GET["lang"])){if(isset($_SESSION['language'])){$language=$_SESSION['language'];}else{$language=$config[0]['language'];}}elseif($_GET["lang"]=="de"){$language="de";$_SESSION['language']="de";}elseif($_GET["lang"]=="ru"){$language="ru";$_SESSION['language']="ru";}else{$language="en";$_SESSION['language']="en";}$queryname=$config[0]['queryname'];$queryname2=$config[0]['queryname2'];$slowmode=$config[0]['slowmode'];if(empty($config[0]['grouptime'])){$grouptime=null;}else{$grouptimearr=explode(',',$config[0]['grouptime']);foreach($grouptimearr as $entry){list($key,$value)=explode('=>',$entry);$grouptime[$key]=$value;}}if(empty($config[0]['boost'])){$boostarr=null;}else{$boostexp=explode(',',$config[0]['boost']);foreach($boostexp as $entry){list($key,$value1,$value2)=explode('=>',$entry);$boostarr[$key]=array("group"=>$key,"factor"=>$value1,"time"=>$value2);}}$resetbydbchange=$config[0]['resetbydbchange'];$msgtouser=$config[0]['msgtouser'];$update=$config[0]['upcheck'];$uniqueid=explode(',',$config[0]['uniqueid']);$updateinfotime=$config[0]['updateinfotime'];$currvers=$config[0]['currvers'];$substridle=$config[0]['substridle'];$exceptuuid=explode(',',$config[0]['exceptuuid']);$exceptgroup=explode(',',$config[0]['exceptgroup']);$timeformat=$config[0]['dateformat'];$showexgrp=$config[0]['showexgrp'];$showexcld=$config[0]['showexcld'];$showhighest=$config[0]['showhighest'];$showcolrg=$config[0]['showcolrg'];$showcolcld=$config[0]['showcolcld'];$showcoluuid=$config[0]['showcoluuid'];$showcoldbid=$config[0]['showcoldbid'];$showcolls=$config[0]['showcolls'];$showcolot=$config[0]['showcolot'];$showcolit=$config[0]['showcolit'];$showcolat=$config[0]['showcolat'];$showcolas=$config[0]['showcolas'];$showcolnx=$config[0]['showcolnx'];$showcolsg=$config[0]['showcolsg'];$bgcolor=$config[0]['bgcolor'];$hdcolor=$config[0]['hdcolor'];$txcolor=$config[0]['txcolor'];$hvcolor=$config[0]['hvcolor'];$ifcolor=$config[0]['ifcolor'];$wncolor=$config[0]['wncolor'];$sccolor=$config[0]['sccolor'];$showgen=$config[0]['showgen'];$cleanclients=$config[0]['cleanclients'];$cleanperiod=$config[0]['cleanperiod'];$defchid=$config[0]['defchid'];$logpath=$config[0]['logpath'];if($config[0]['timezone']==NULL){$timezone="Europe/Berlin";}else{$timezone=$config[0]['timezone'];}date_default_timezone_set($timezone);}if(!isset($language)||$language=="en"){require_once(substr(dirname(__FILE__),0,-5).'languages/core_en.php');}elseif($language=="de"){require_once(substr(dirname(__FILE__),0,-5).'languages/core_de.php');}elseif($language=="ru"){require_once(substr(dirname(__FILE__),0,-5).'languages/core_ru.php');}?> \ No newline at end of file diff --git a/other/search.php b/other/search.php index d5622b4..0f1bd9b 100644 --- a/other/search.php +++ b/other/search.php @@ -1 +1 @@ -query("SELECT * FROM user ORDER BY online DESC");$items=array();$dbuserlist=$dbuserlist->fetchAll();foreach($dbuserlist as $userlist){$items[$userlist['name']]=$userlist['uuid'];}foreach($items as $key=>$value){if(strpos(strtolower($key),$q)!==false){$key=str_replace('|','|',$key);echo "$key|$value\n";}}?>; \ No newline at end of file +query("SELECT * FROM $dbname.user ORDER BY online DESC");$items=array();$dbuserlist=$dbuserlist->fetchAll();foreach($dbuserlist as $userlist){$items[$userlist['name']]=$userlist['uuid'];}foreach($items as $key=>$value){if(strpos(strtolower($key),$q)!==false){$key=str_replace('|','|',$key);echo "$key|$value\n";}}?>; \ No newline at end of file diff --git a/other/session.php b/other/session.php index 9b28945..8ad4490 100644 --- a/other/session.php +++ b/other/session.php @@ -1,43 +1 @@ -query("SELECT u.uuid,u.cldbid,u.name,u.ip,u.firstcon,s.total_connections FROM $dbname.user as u LEFT JOIN $dbname.stats_user as s ON u.uuid=s.uuid WHERE online='1';")->fetchAll(); - $_SESSION['connected'] = 0; - $_SESSION['serverport'] = $voiceport; - foreach ($allclients as $client) { - if ($hpclientip == $client['ip']) { - $_SESSION['tsuid'] = $client['uuid']; - $_SESSION['tscldbid'] = $client['cldbid']; - $_SESSION['tsname'] = $client['name']; - if ($client['firstcon'] == 0) { - $_SESSION['tscreated'] = "unkown"; - } else { - $_SESSION['tscreated'] = date('d-m-Y',$client['firstcon']); - } - if ($client['total_connections'] != NULL) { - $_SESSION['tsconnections'] = $client['total_connections']; - } else { - $_SESSION['tsconnections'] = 0; - } - $convert = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p'); - $uuidasbase16 = ''; - for ($i = 0; $i < 20; $i++) { - $char = ord(substr(base64_decode($_SESSION['tsuid']), $i, 1)); - $uuidasbase16 .= $convert[($char & 0xF0) >> 4]; - $uuidasbase16 .= $convert[$char & 0x0F]; - } - if(is_file('../avatars/'.$uuidasbase16.'.png')) { - $_SESSION['tsavatar'] = $uuidasbase16.'.png'; - } else { - $_SESSION['tsavatar'] = "none"; - } - $_SESSION['connected'] = 1; - break; - } - } -} -?> \ No newline at end of file +query("SELECT u.uuid,u.cldbid,u.name,u.ip,u.firstcon,s.total_connections FROM $dbname.user as u LEFT JOIN $dbname.stats_user as s ON u.uuid=s.uuid WHERE online='1';")->fetchAll();$_SESSION['connected']=0;$_SESSION['serverport']=$voiceport;foreach($allclients as $client){if($hpclientip==$client['ip']){$_SESSION['tsuid']=$client['uuid'];$_SESSION['tscldbid']=$client['cldbid'];$_SESSION['tsname']=$client['name'];if($client['firstcon']==0){$_SESSION['tscreated']="unkown";}else{$_SESSION['tscreated']=date('d-m-Y',$client['firstcon']);}if($client['total_connections']!=NULL){$_SESSION['tsconnections']=$client['total_connections'];}else{$_SESSION['tsconnections']=0;}$convert=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p');$uuidasbase16='';for($i=0;$i<20;$i++){$char=ord(substr(base64_decode($_SESSION['tsuid']),$i,1));$uuidasbase16.=$convert[($char & 0xF0)>> 4];$uuidasbase16.=$convert[$char & 0x0F];}if(is_file('../avatars/'.$uuidasbase16.'.png')){$_SESSION['tsavatar']=$uuidasbase16.'.png';}else{$_SESSION['tsavatar']="none";}$_SESSION['connected']=1;$_SESSION['language']=$language;break;}}}?> \ No newline at end of file diff --git a/other/webinterface_list.php b/other/webinterface_list.php index 1b134cb..21ec730 100644 --- a/other/webinterface_list.php +++ b/other/webinterface_list.php @@ -1,17 +1,13 @@ -query("SELECT * FROM config"); -$configs = $configs->fetch(PDO::FETCH_ASSOC); - -echo ' - - - - +query("SELECT * FROM config");$configs=$configs->fetch(PDO::FETCH_ASSOC);echo '
', $lang['wilogout'], '
', $lang['wihl'], '
', sprintf($lang['wiversion'], $configs['currvers']), '
', $alert, '
+ + + +
',$lang['wilogout'],'
',$lang['wihl'],'
',sprintf($lang['wiversion'],$configs['currvers']),'
',$alert,'
-
 
- ', $lang['wihlts'], ' + ',$lang['wihlts'],'
 
- ', $lang['wihldb'], ' + ',$lang['wihldb'],'
 
- ', $lang['wihlcfg'], ' + ',$lang['wihlcfg'],'
 
- ', $lang['wihlsty'], ' + ',$lang['wihlsty'],'
 
 
- ', $lang['wihladm'], ' + ',$lang['wihladm'],'
 
- ', $lang['wihlcls'], ' + ',$lang['wihlcls'],'
 
- ', $lang['wihlclg'], ' + ',$lang['wihlclg'],'
'; -?> \ No newline at end of file +';?> \ No newline at end of file diff --git a/server-news b/server-news index c42d784..4049789 100644 --- a/server-news +++ b/server-news @@ -1,3 +1,3 @@ Message
-This is a example Message.
-Edit this Message by editing the file "server-news" on your webspace. \ No newline at end of file +This is an example Message.
+Change this Message by editing the file "server-news" on your webspace. \ No newline at end of file diff --git a/stats/index.php b/stats/index.php index 2499a63..5f5edaf 100644 --- a/stats/index.php +++ b/stats/index.php @@ -1,440 +1 @@ -query("SELECT * FROM $dbname.stats_server"); -$sql_res = $sql->fetchAll(); - -$server_usage_sql = $mysqlcon->query("SELECT * FROM $dbname.server_usage ORDER BY(timestamp) DESC LIMIT 0, 47"); -$server_usage_sql_res = $server_usage_sql->fetchAll(); - -if(isset($_GET['usage'])) { - if ($_GET["usage"] == 'week') { - $usage = 'week'; - } elseif ($_GET["usage"] == 'month') { - $usage = 'month'; - } else { - $usage = 'day'; - } -} else { - $usage = 'day'; -} -require_once('nav.php'); -?> -
- -
- - -
-
-

- - - - -

-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
- - - -
-
-
-
-
-
-
- -
-
-
'.$lang['days'].'';?>
-
-
-
-
- - - -
-
-
-
-
-
-
- -
-
-
'.$lang['days'].'';?>
-
-
-
-
- - - -
-
-
-
-
-
-
- -
-
-
'.$lang['days'].'';?>
-
-
-
-
- - - -
-
-
- -
-
-
-
-
-
-

  

-
- -
-
-
-
-
-
-
-
- - -
-
-
-
-

 

-
-
-
-
-
-
-
-
-
-

 

-
-
-
-
-
-
-
-
-
-

 

-
-
-
-
-
-
-
-
-
-

 

-
-
-
-
-
-
-
- -
-
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'.$lang['stix0024'].'' : ''.$lang['stix0025'].''; ?>
'.$lang['stix0032'].' '.(new DateTime("@0"))->diff(new DateTime("@".$sql_res[0]['server_uptime']))->format($timeformat).')' : $lang['stix0033']; ?>
-
-
-
-

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
servericon' : $sql_res[0]['server_name']) ?>
'.$lang['stix0046'].'' : $lang['stix0047'] ?>
-
-
-
-
- - -
- - - - - - - - - \ No newline at end of file +query("SELECT * FROM $dbname.stats_server");$sql_res=$sql->fetchAll();$server_usage_sql=$mysqlcon->query("SELECT * FROM $dbname.server_usage ORDER BY(timestamp) DESC LIMIT 0, 47");$server_usage_sql_res=$server_usage_sql->fetchAll();if(isset($_GET['usage'])){if($_GET["usage"]=='week'){$usage='week';}elseif($_GET["usage"]=='month'){$usage='month';}else{$usage='day';}}else{$usage='day';}require_once('nav.php');?>
'.$lang['days'].'';?>
'.$lang['days'].'';?>
'.$lang['days'].'';?>

 

 

 

 

'.$lang['stix0024'].'';}else{echo ''.$lang['stix0025'].'';}?>
'.$lang['stix0032'].' '.(new DateTime("@0"))->diff($serveruptime)->format($timeformat).')';}else{echo $lang['stix0033'];}?>

servericon';}else{echo $sql_res[0]['server_name'];}?>
'.$lang['stix0046'].'';}else{echo $lang['stix0047'];}?>
\ No newline at end of file diff --git a/stats/info.php b/stats/info.php index 7848008..4cc1462 100644 --- a/stats/info.php +++ b/stats/info.php @@ -1,82 +1 @@ - -
- -
- - -
-
-

- -

-
-
-
-
-

-

-
-
-
-
-
-

-

The Ranksystem was coded by Newcomer1989 Copyright © 2009-2016 TeamSpeak Sponsoring TS-N.NET. All rights reserved.

-
-
-
-
-
-

-

-

-

-
-
-
-
-
-

-

-

PHP - Copyright © 2001-2016 the PHP Group


-

-

jQuery v2.2.0 - Copyright © 2016 The jQuery Foundation

-

jQuery Autocomplete plugin 1.1 - Copyright © 2009 Jörn Zaefferer

-

Font Awesome 4.2.0 - Copyright © davegandy

-

Ajax Queue Plugin - Copyright © 2013 Corey Frang

-

TeamSpeak 3 PHP Framework 1.1.23 - Copyright © 2010 Planet TeamSpeak

-

Bootstrap 3.3.6 - Copyright © 2011-2016 Twitter, Inc.

-

morris.js - Copyright © 2013 Olly Smith

-

Raphaël 2.1.4 - JavaScript Vector Library - Copyright © 2008-2012 Dmitry Baranovskiy

-

SB Admin Bootstrap Admin Template - Copyright © 2013-2016 Blackrock Digital LLC.

-
-
-
-
-
-

-

-

-
-
-
-
- -
- - - - - \ No newline at end of file +


The Ranksystem was coded by Newcomer1989 Copyright © 2009-2016 TeamSpeak Sponsoring TS-N.NET. All rights reserved.



PHP - Copyright © 2001-2016 the PHP Group


jQuery v2.2.0 - Copyright © 2016 The jQuery Foundation

jQuery Autocomplete plugin 1.1 - Copyright © 2009 Jörn Zaefferer

Font Awesome 4.2.0 - Copyright © davegandy

flag-icon-css - Copyright © 2016 lipis

Ajax Queue Plugin - Copyright © 2013 Corey Frang

TeamSpeak 3 PHP Framework 1.1.23 - Copyright © 2010 Planet TeamSpeak

Bootstrap 3.3.6 - Copyright © 2011-2016 Twitter, Inc.

morris.js - Copyright © 2013 Olly Smith

Raphaël 2.1.4 - JavaScript Vector Library - Copyright © 2008-2012 Dmitry Baranovskiy

SB Admin Bootstrap Admin Template - Copyright © 2013-2016 Blackrock Digital LLC.



\ No newline at end of file diff --git a/stats/list_rankup.php b/stats/list_rankup.php index 659b147..fd6f39f 100644 --- a/stats/list_rankup.php +++ b/stats/list_rankup.php @@ -1,400 +1 @@ -query("SELECT * FROM $dbname.user $searchmysql"); -$sumentries = $dbdata_full->rowCount(); - -if(!isset($_GET["user"])) { - $user_pro_seite = 50; -} elseif($_GET['user'] == "all") { - $user_pro_seite = $sumentries; -} else { - $user_pro_seite = $_GET["user"]; -} - -$start = $seite * $user_pro_seite - $user_pro_seite; - -if ($keysort == 'active' && $keyorder == 'asc') { - $dbdata = $mysqlcon->query("SELECT uuid,cldbid,rank,count,name,idle,cldgroup,online,nextup,lastseen,ip,grpid FROM $dbname.user $searchmysql ORDER BY (count - idle) LIMIT $start, $user_pro_seite"); -} elseif ($keysort == 'active' && $keyorder == 'desc') { - $dbdata = $mysqlcon->query("SELECT uuid,cldbid,rank,count,name,idle,cldgroup,online,nextup,lastseen,ip,grpid FROM $dbname.user $searchmysql ORDER BY (idle - count) LIMIT $start, $user_pro_seite"); -} else { - $dbdata = $mysqlcon->query("SELECT uuid,cldbid,rank,count,name,idle,cldgroup,online,nextup,lastseen,ip,grpid FROM $dbname.user $searchmysql ORDER BY $keysort $keyorder LIMIT $start, $user_pro_seite"); -} -$seiten_anzahl_gerundet = ceil($sumentries / $user_pro_seite); - -function pagination($keysort,$keyorder,$user_pro_seite,$seiten_anzahl_gerundet,$seite,$language,$getstring) { - ?> - - fetchAll(); -foreach($uuids as $uuid) { - $sqlhis[$uuid['uuid']] = array( - "cldbid" => $uuid['cldbid'], - "rank" => $uuid['rank'], - "count" => $uuid['count'], - "name" => $uuid['name'], - "idle" => $uuid['idle'], - "cldgroup" => $uuid['cldgroup'], - "online" => $uuid['online'], - "nextup" => $uuid['nextup'], - "lastseen" => $uuid['lastseen'], - "ip" => $uuid['ip'], - "grpid" => $uuid['grpid'] - ); - $uidarr[] = $uuid['uuid']; - $countentries = $countentries + 1; -} -if(!$dbdata = $mysqlcon->query("SELECT * FROM $dbname.job_check WHERE job_name='calc_user_lastscan'")) { - $err_msg = ''.$mysqlcon->errorCode().'
'; -} - -$lastscan = $dbdata->fetchAll(); -$scantime = $lastscan[0]['timestamp']; -$livetime = time() - $scantime; -$dbgroups = $mysqlcon->query("SELECT * FROM $dbname.groups"); -$servergroups = $dbgroups->fetchAll(PDO::FETCH_ASSOC); -foreach($servergroups as $servergroup) { - $sqlhisgroup[$servergroup['sgid']] = $servergroup['sgidname']; - if(file_exists('../icons/'.$servergroup['sgid'].'.png')) { - $sqlhisgroup_file[$servergroup['sgid']] = true; - } else { - $sqlhisgroup_file[$servergroup['sgid']] = false; - } -} -if($adminlogin == 1) { - switch ($keyorder) { - case "asc": - $keyorder2 = "desc&admin=true"; - break; - case "desc": - $keyorder2 = "asc&admin=true"; - } -} else { - switch ($keyorder) { - case "asc": - $keyorder2 = "desc"; - break; - case "desc": - $keyorder2 = "asc"; - } -} -?> -
- -
- - -
- - - - ' , $lang['listrank'] , ''; - if ($showcolcld == 1 || $adminlogin == 1) - echo ($keysort == 'name') ? '' : ''; - if ($showcoluuid == 1 || $adminlogin == 1) - echo ''; - if ($showcoldbid == 1 || $adminlogin == 1) - echo ''; - if ($adminlogin == 1) - echo ''; - if ($showcolls == 1 || $adminlogin == 1) - echo ''; - if ($showcolot == 1 || $adminlogin == 1) - echo ''; - if ($showcolit == 1 || $adminlogin == 1) - echo ''; - if ($showcolat == 1 || $adminlogin == 1) - echo ''; - if ($showcolas == 1 || $adminlogin == 1) - echo ''; - if ($showcolnx == 1 || $adminlogin == 1) - echo ($keysort == 'nextup') ? '' : ''; - if ($showcolsg == 1 || $adminlogin == 1) - echo ''; - echo ''; - ksort($grouptime); - $countgrp = count($grouptime); - if ($countentries > 0) { - $countrank=($seite-1)*$user_pro_seite; - $exceptgrp=0; - $exceptcld=0; - $highest=0; - $countallsum=0; - foreach ($uidarr as $uid) { - $cldgroup = $sqlhis[$uid]['cldgroup']; - $lastseen = $sqlhis[$uid]['lastseen']; - $count = $sqlhis[$uid]['count']; - $idle = $sqlhis[$uid]['idle']; - $status = $sqlhis[$uid]['online']; - $nextup = $sqlhis[$uid]['nextup']; - $sgroups = explode(",", $cldgroup); - $active = $count - $idle; - if ($substridle == 1) { - $activetime = $count - $idle; - } else { - $activetime = $count; - } - $grpcount=0; - $countallsum++; - foreach ($grouptime as $time => $groupid) { - $grpcount++; - if (array_intersect($sgroups, $exceptgroup) && $showexgrp != 1 && $adminlogin != 1) { - $exceptgrp++; - break; - } - if (in_array($uid, $exceptuuid) && $showexcld != 1 && $adminlogin != 1) { - $exceptcld++; - break; - } - if ($activetime < $time || $grpcount == $countgrp && $nextup == 0 && $showhighest == 1 || $grpcount == $countgrp && $nextup == 0 && $adminlogin == 1) { - if($nextup == 0 && $grpcount == $countgrp) { - $neededtime = 0; - } elseif ($status == 1) { - $neededtime = $time - $activetime - $livetime; - } else { - $neededtime = $time - $activetime; - } - echo ''; - if ($showcolrg == 1 || $adminlogin == 1) { - $countrank++; - echo ''; - } - if ($adminlogin == 1) { - echo ''; - } elseif ($showcolcld == 1) { - echo ''; - } - if ($adminlogin == 1) { - echo ''; - } elseif ($showcoluuid == 1) { - echo ''; - } - if ($showcoldbid == 1 || $adminlogin == 1) - echo ''; - if ($adminlogin == 1) - echo ''; - if ($showcolls == 1 || $adminlogin == 1) { - echo ''; - } - if ($showcolot == 1 || $adminlogin == 1) { - echo ''; - } elseif ($sqlhisgroup_file[$sqlhis[$uid]['grpid']]===true) { - echo ''; - } else { - echo ''; - } - } - if ($showcolnx == 1 || $adminlogin == 1) { - echo ''; - } elseif (!in_array($uid, $exceptuuid) && !array_intersect($sgroups, $exceptgroup)) { - $timecount = 0; - echo $timecount , ''; - } elseif (in_array($uid, $exceptuuid)) { - echo $lang['listexuid'] , ''; - } elseif (array_intersect($sgroups, $exceptgroup)) { - echo $lang['listexgrp'] , ''; - } else { - echo $lang['errukwn'], ''; - } - } - if ($showcolsg == 1 || $adminlogin == 1) { - if ($grpcount == $countgrp && $nextup == 0 && $showhighest == 1 || $grpcount == $countgrp && $nextup == 0 && $adminlogin == 1) { - echo ''; - $highest++; - } elseif ($sqlhisgroup_file[$groupid]===true) { - echo ''; - } else { - echo ''; - } - } - echo ''; - break; - } elseif ($grpcount == $countgrp && $nextup == 0) { - $highest++; - } - } - } - } else { - echo ''; - } - echo '
' . $lang['listnick'] . '' . $lang['listnick'] . '' , $lang['listuid'] , '' , $lang['listcldbid'] , '' , $lang['listip'] , '' , $lang['listseen'] , '' , $lang['listsumo'] , '' , $lang['listsumi'] , '' , $lang['listsuma'] , '' , $lang['listacsg'] , '' . $lang['listnxup'] . '' . $lang['listnxup'] . '' , $lang['listnxsg'] , '
' , $sqlhis[$uid]['rank'] , '' , $sqlhis[$uid]['name'] , '' , $sqlhis[$uid]['name'] , '' , $uid , '' , $uid , '' , $sqlhis[$uid]['cldbid'] , '' , long2ip($sqlhis[$uid]['ip']) , '' , date('Y-m-d H:i:s',$lastseen); - echo ''; - $dtF = new DateTime("@0"); - $dtT = new DateTime("@$count"); - $timecount = $dtF->diff($dtT)->format($timeformat); - echo $timecount; - } - if ($showcolit == 1 || $adminlogin == 1) { - echo ''; - $dtF = new DateTime("@0"); - $dtT = new DateTime("@$idle"); - $timecount = $dtF->diff($dtT)->format($timeformat); - echo $timecount; - } - if ($showcolat == 1 || $adminlogin == 1) { - echo ''; - $dtF = new DateTime("@0"); - $dtT = new DateTime("@$active"); - $timecount = $dtF->diff($dtT)->format($timeformat); - echo $timecount; - } - if ($showcolas == 1 || $adminlogin == 1) { - $usergroupid = $sqlhis[$uid]['grpid']; - if ($sqlhis[$uid]['grpid'] == 0) { - echo 'groupicon  ' , $sqlhisgroup[$usergroupid] , '' , $sqlhisgroup[$usergroupid] , ''; - $dtF = new DateTime("@0"); - $dtT = new DateTime("@$neededtime"); - $timecount = $dtF->diff($dtT)->format($timeformat); - if (!in_array($uid, $exceptuuid) && !array_intersect($sgroups, $exceptgroup) && $neededtime > 0) { - echo $timecount , '',$lang['highest'],'groupicon  ' , $sqlhisgroup[$groupid] , '' , $sqlhisgroup[$groupid] , '
' , $lang['noentry'] , '
'; - if($user_pro_seite != "all") { - pagination($keysort,$keyorder,$user_pro_seite,$seiten_anzahl_gerundet,$seite,$language,$getstring); - } - if ($showgen == 1 || $adminlogin == 1) { - $except = $exceptgrp + $exceptcld; - $notvisible = 0; - if ($showexgrp != 1) { $notvisible = $exceptgrp; } - if ($showexcld != 1) { $notvisible = $notvisible + $exceptcld; } - if ($showhighest != 1) { $notvisible = $notvisible + $highest; } - $displayed = $countallsum - $notvisible; - $buildtime = microtime(true) - $starttime; - ?> - - -
- - -
- - - - - - - - \ No newline at end of file +query("SELECT * FROM $dbname.user $searchmysql");$sumentries=$dbdata_full->rowCount();if(!isset($_GET["user"])){$user_pro_seite=50;}elseif($_GET['user']=="all"){$user_pro_seite=$sumentries;}else{$user_pro_seite=$_GET["user"];}$start=$seite * $user_pro_seite - $user_pro_seite;if($keysort=='active'&&$keyorder=='asc'){$dbdata=$mysqlcon->query("SELECT uuid,cldbid,rank,count,name,idle,cldgroup,online,nextup,lastseen,ip,grpid FROM $dbname.user $searchmysql ORDER BY (count - idle) LIMIT $start, $user_pro_seite");}elseif($keysort=='active'&&$keyorder=='desc'){$dbdata=$mysqlcon->query("SELECT uuid,cldbid,rank,count,name,idle,cldgroup,online,nextup,lastseen,ip,grpid FROM $dbname.user $searchmysql ORDER BY (idle - count) LIMIT $start, $user_pro_seite");}else{$dbdata=$mysqlcon->query("SELECT uuid,cldbid,rank,count,name,idle,cldgroup,online,nextup,lastseen,ip,grpid FROM $dbname.user $searchmysql ORDER BY $keysort $keyorder LIMIT $start, $user_pro_seite");}$seiten_anzahl_gerundet=ceil($sumentries / $user_pro_seite);function pagination($keysort,$keyorder,$user_pro_seite,$seiten_anzahl_gerundet,$seite,$language,$getstring){?> fetchAll();foreach($uuids as $uuid){$sqlhis[$uuid['uuid']]=array("cldbid"=>$uuid['cldbid'],"rank"=>$uuid['rank'],"count"=>$uuid['count'],"name"=>$uuid['name'],"idle"=>$uuid['idle'],"cldgroup"=>$uuid['cldgroup'],"online"=>$uuid['online'],"nextup"=>$uuid['nextup'],"lastseen"=>$uuid['lastseen'],"ip"=>$uuid['ip'],"grpid"=>$uuid['grpid']);$uidarr[]=$uuid['uuid'];$countentries=$countentries + 1;}if(!$dbdata=$mysqlcon->query("SELECT * FROM $dbname.job_check WHERE job_name='calc_user_lastscan'")){$err_msg=''.$mysqlcon->errorCode().'
';}$lastscan=$dbdata->fetchAll();$scantime=$lastscan[0]['timestamp'];$livetime=time()- $scantime;$dbgroups=$mysqlcon->query("SELECT * FROM $dbname.groups");$servergroups=$dbgroups->fetchAll(PDO::FETCH_ASSOC);foreach($servergroups as $servergroup){$sqlhisgroup[$servergroup['sgid']]=$servergroup['sgidname'];if(file_exists('../icons/'.$servergroup['sgid'].'.png')){$sqlhisgroup_file[$servergroup['sgid']]=true;}else{$sqlhisgroup_file[$servergroup['sgid']]=false;}}if($adminlogin==1){switch($keyorder){case "asc":$keyorder2="desc&admin=true";break;case "desc":$keyorder2="asc&admin=true";}}else{switch($keyorder){case "asc":$keyorder2="desc";break;case "desc":$keyorder2="asc";}}?>
',$lang['listrank'],'';if($showcolcld==1||$adminlogin==1)echo($keysort=='name')?'':'';if($showcoluuid==1||$adminlogin==1)echo '';if($showcoldbid==1||$adminlogin==1)echo '';if($adminlogin==1)echo '';if($showcolls==1||$adminlogin==1)echo '';if($showcolot==1||$adminlogin==1)echo '';if($showcolit==1||$adminlogin==1)echo '';if($showcolat==1||$adminlogin==1)echo '';if($showcolas==1||$adminlogin==1)echo '';if($showcolnx==1||$adminlogin==1)echo($keysort=='nextup')?'':'';if($showcolsg==1||$adminlogin==1)echo '';echo '';ksort($grouptime);$countgrp=count($grouptime);if($countentries>0){$countrank=($seite-1)*$user_pro_seite;$exceptgrp=0;$exceptcld=0;$highest=0;$countallsum=0;foreach($uidarr as $uid){$cldgroup=$sqlhis[$uid]['cldgroup'];$lastseen=$sqlhis[$uid]['lastseen'];$count=$sqlhis[$uid]['count'];$idle=$sqlhis[$uid]['idle'];$status=$sqlhis[$uid]['online'];$nextup=$sqlhis[$uid]['nextup'];$sgroups=explode(",",$cldgroup);$active=$count - $idle;if($substridle==1){$activetime=$count - $idle;}else{$activetime=$count;}$grpcount=0;$countallsum++;foreach($grouptime as $time=>$groupid){$grpcount++;if(array_intersect($sgroups,$exceptgroup)&&$showexgrp!=1&&$adminlogin!=1){$exceptgrp++;break;}if(in_array($uid,$exceptuuid)&&$showexcld!=1&&$adminlogin!=1){$exceptcld++;break;}if($activetime<$time||$grpcount==$countgrp&&$nextup==0&&$showhighest==1||$grpcount==$countgrp&&$nextup==0&&$adminlogin==1){if($nextup==0&&$grpcount==$countgrp){$neededtime=0;}elseif($status==1){$neededtime=$time - $activetime - $livetime;}else{$neededtime=$time - $activetime;}echo '';if($showcolrg==1||$adminlogin==1){$countrank++;echo '';}if($adminlogin==1){echo '';}elseif($showcolcld==1){echo '';}if($adminlogin==1){echo '';}elseif($showcoluuid==1){echo '';}if($showcoldbid==1||$adminlogin==1)echo '';if($adminlogin==1)echo '';if($showcolls==1||$adminlogin==1){echo '';}if($showcolot==1||$adminlogin==1){echo '';}elseif($sqlhisgroup_file[$sqlhis[$uid]['grpid']]===true){echo '';}else{echo '';}}if($showcolnx==1||$adminlogin==1){echo '';}elseif(!in_array($uid,$exceptuuid)&&!array_intersect($sgroups,$exceptgroup)){$timecount=0;echo $timecount,'';}elseif(in_array($uid,$exceptuuid)){echo $lang['listexuid'],'';}elseif(array_intersect($sgroups,$exceptgroup)){echo $lang['listexgrp'],'';}else{echo $lang['errukwn'],'';}}if($showcolsg==1||$adminlogin==1){if($grpcount==$countgrp&&$nextup==0&&$showhighest==1||$grpcount==$countgrp&&$nextup==0&&$adminlogin==1){echo '';$highest++;}elseif($sqlhisgroup_file[$groupid]===true){echo '';}else{echo '';}}echo '';break;}elseif($grpcount==$countgrp&&$nextup==0){$highest++;}}}}else{echo '';}echo '
'.$lang['listnick'].''.$lang['listnick'].'',$lang['listuid'],'',$lang['listcldbid'],'',$lang['listip'],'',$lang['listseen'],'',$lang['listsumo'],'',$lang['listsumi'],'',$lang['listsuma'],'',$lang['listacsg'],''.$lang['listnxup'].''.$lang['listnxup'].'',$lang['listnxsg'],'
',$sqlhis[$uid]['rank'],'',$sqlhis[$uid]['name'],'',$sqlhis[$uid]['name'],'',$uid,'',$uid,'',$sqlhis[$uid]['cldbid'],'',long2ip($sqlhis[$uid]['ip']),'',date('Y-m-d H:i:s',$lastseen);echo '';$dtF=new DateTime("@0");$dtT=new DateTime("@$count");$timecount=$dtF->diff($dtT)->format($timeformat);echo $timecount;}if($showcolit==1||$adminlogin==1){echo '';$dtF=new DateTime("@0");$dtT=new DateTime("@$idle");$timecount=$dtF->diff($dtT)->format($timeformat);echo $timecount;}if($showcolat==1||$adminlogin==1){echo '';$dtF=new DateTime("@0");$dtT=new DateTime("@$active");$timecount=$dtF->diff($dtT)->format($timeformat);echo $timecount;}if($showcolas==1||$adminlogin==1){$usergroupid=$sqlhis[$uid]['grpid'];if($sqlhis[$uid]['grpid']==0){echo 'groupicon  ',$sqlhisgroup[$usergroupid],'',$sqlhisgroup[$usergroupid],'';$dtF=new DateTime("@0");$dtT=new DateTime("@$neededtime");$timecount=$dtF->diff($dtT)->format($timeformat);if(!in_array($uid,$exceptuuid)&&!array_intersect($sgroups,$exceptgroup)&&$neededtime>0){echo $timecount,'',$lang['highest'],'groupicon  ',$sqlhisgroup[$groupid],'',$sqlhisgroup[$groupid],'
',$lang['noentry'],'
';if($user_pro_seite!="all"){pagination($keysort,$keyorder,$user_pro_seite,$seiten_anzahl_gerundet,$seite,$language,$getstring);}if($showgen==1||$adminlogin==1){$except=$exceptgrp + $exceptcld;$notvisible=0;if($showexgrp!=1){$notvisible=$exceptgrp;}if($showexcld!=1){$notvisible=$notvisible + $exceptcld;}if($showhighest!=1){$notvisible=$notvisible + $highest;}$displayed=$countallsum - $notvisible;$buildtime=microtime(true)- $starttime;?>
\ No newline at end of file diff --git a/stats/my_stats.php b/stats/my_stats.php index da0d5bc..77c5155 100644 --- a/stats/my_stats.php +++ b/stats/my_stats.php @@ -1,317 +1 @@ -query("SELECT * FROM $dbname.user $searchmysql"); -$dbdata_fetched = $dbdata->fetchAll(); -$count_hours = round($dbdata_fetched[0]['count']/3600); - -$stats_user = $mysqlcon->query("SELECT * FROM $dbname.stats_user WHERE uuid='$getstring'"); -$stats_user = $stats_user->fetchAll(); - -if (isset($stats_user[0]['count_week'])) $count_week = $stats_user[0]['count_week']; else $count_week = 0; -$dtF = new DateTime("@0"); $dtT = new DateTime("@$count_week"); $count_week = $dtF->diff($dtT)->format($timeformat); -if (isset($stats_user[0]['count_month'])) $count_month = $stats_user[0]['count_month']; else $count_month = 0; -$dtF = new DateTime("@0"); $dtT = new DateTime("@$count_month"); $count_month = $dtF->diff($dtT)->format($timeformat); -if (isset($dbdata_fetched[0]['count'])) $count_total = $dbdata_fetched[0]['count']; else $count_total = 0; -$dtF = new DateTime("@0"); $dtT = new DateTime("@$count_total"); $count_total = $dtF->diff($dtT)->format($timeformat); - -$time_for_bronze = 50; -$time_for_silver = 100; -$time_for_gold = 250; -$time_for_legendary = 500; - -$connects_for_bronze = 10; -$connects_for_silver = 50; -$connects_for_gold = 100; -$connects_for_legendary = 250; - -$achievements_done = 0; - -if($count_hours >= $time_for_legendary) { - $achievements_done = $achievements_done + 4; -} elseif($count_hours >= $time_for_gold) { - $achievements_done = $achievements_done + 3; -} elseif($count_hours >= $time_for_silver) { - $achievements_done = $achievements_done + 2; -} else { - $achievements_done = $achievements_done + 1; -} -if($_SESSION['tsconnections'] >= $connects_for_legendary) { - $achievements_done = $achievements_done + 4; -} elseif($_SESSION['tsconnections'] >= $connects_for_gold) { - $achievements_done = $achievements_done + 3; -} elseif($_SESSION['tsconnections'] >= $connects_for_silver) { - $achievements_done = $achievements_done + 2; -} else { - $achievements_done = $achievements_done + 1; -} - -function get_percentage($max_value, $value) { - return (round(($value/$max_value)*100)); -} -require_once('nav.php'); -?> -
- -
- - -
-
-

- - - - -

-
-
-
-
-
-
-
-
-
-
-
-
- '; - } else { - echo ''; - } - ?> -
-
-
- -
-
-
-

- = $time_for_legendary) { ?> -
-
-
-
-
- -
-
-
-
-
-
-
-
- -
-
- = $time_for_gold) { ?> -
-
-
-
-
- -
-
-
-
-
-
-
-
- -
-
- = $time_for_silver) { ?> -
-
-
-
-
- -
-
-
-
-
-
-
-
- -
-
- = $time_for_bronze) { ?> -
-
-
-
-
- -
-
-
-
-
-
-
-
- -
-
- -
-
-
-
-
- -
-
-
-
-
-
-
-
- -
-
- -
-
-

- = $connects_for_legendary) { ?> -
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
- = $connects_for_gold) { ?> -
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
- = $connects_for_silver) { ?> -
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
- = $connects_for_bronze) { ?> -
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
- -
-
-
- - -
- - - - - - \ No newline at end of file +query("SELECT * FROM $dbname.user $searchmysql");$dbdata_fetched=$dbdata->fetchAll();$count_hours=round($dbdata_fetched[0]['count']/3600);$stats_user=$mysqlcon->query("SELECT * FROM $dbname.stats_user WHERE uuid='$getstring'");$stats_user=$stats_user->fetchAll();if(isset($stats_user[0]['count_week']))$count_week=$stats_user[0]['count_week'];else $count_week=0;$dtF=new DateTime("@0");$dtT=new DateTime("@$count_week");$count_week=$dtF->diff($dtT)->format($timeformat);if(isset($stats_user[0]['count_month']))$count_month=$stats_user[0]['count_month'];else $count_month=0;$dtF=new DateTime("@0");$dtT=new DateTime("@$count_month");$count_month=$dtF->diff($dtT)->format($timeformat);if(isset($dbdata_fetched[0]['count']))$count_total=$dbdata_fetched[0]['count'];else $count_total=0;$dtF=new DateTime("@0");$dtT=new DateTime("@$count_total");$count_total=$dtF->diff($dtT)->format($timeformat);$time_for_bronze=50;$time_for_silver=100;$time_for_gold=250;$time_for_legendary=500;$connects_for_bronze=50;$connects_for_silver=100;$connects_for_gold=250;$connects_for_legendary=500;$achievements_done=0;if($count_hours>=$time_for_legendary){$achievements_done=$achievements_done + 4;}elseif($count_hours>=$time_for_gold){$achievements_done=$achievements_done + 3;}elseif($count_hours>=$time_for_silver){$achievements_done=$achievements_done + 2;}else{$achievements_done=$achievements_done + 1;}if($_SESSION['tsconnections']>=$connects_for_legendary){$achievements_done=$achievements_done + 4;}elseif($_SESSION['tsconnections']>=$connects_for_gold){$achievements_done=$achievements_done + 3;}elseif($_SESSION['tsconnections']>=$connects_for_silver){$achievements_done=$achievements_done + 2;}else{$achievements_done=$achievements_done + 1;}function get_percentage($max_value,$value){return(round(($value/$max_value)*100));}require_once('nav.php');?>
';}else{echo '';}?>

=$time_for_legendary){?>
=$time_for_gold){?>
=$time_for_silver){?>
=$time_for_bronze){?>

=$connects_for_legendary){?>
=$connects_for_gold){?>
=$connects_for_silver){?>
=$connects_for_bronze){?>
\ No newline at end of file diff --git a/stats/nav.php b/stats/nav.php index 8432557..7ceedec 100644 --- a/stats/nav.php +++ b/stats/nav.php @@ -1,243 +1 @@ - - - - - - - - - - TS-N.NET Ranksystem - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -'; break; - case 1: echo '
'; break; - case 2: echo '
'; break; - case 3: echo '
'; break; - } - echo '',$msg,'
'; -} -?> \ No newline at end of file +>TS-N.NET Ranksystem
';break;case 1:echo '
';break;case 2:echo '
';break;case 3:echo '
';break;}echo '',$msg,'
';}?> \ No newline at end of file diff --git a/stats/top_all.php b/stats/top_all.php index 26c3016..130f21b 100644 --- a/stats/top_all.php +++ b/stats/top_all.php @@ -1,391 +1 @@ -query("SELECT uuid,name,count,idle,grpid,online FROM $dbname.user ORDER BY (count - idle) DESC"); -} else { - $dbdata = $mysqlcon->query("SELECT uuid,name,count,idle,grpid,online FROM $dbname.user ORDER BY count DESC"); -} -$sumentries = $dbdata->rowCount() - 10; -$db_arr = $dbdata->fetchAll(); -$count10 = 0; -$top10_sum = 0; -$top10_idle_sum = 0; - - -foreach ($db_arr as $client) { - $sgroups = explode(",", $client['grpid']); - if (!in_array($client['uuid'], $exceptuuid) && !array_intersect($sgroups, $exceptgroup)) { - if ($count10 == 10) break; - if ($substridle == 1) { - $hours = $client['count'] - $client['idle']; - } else { - $hours = $client['count']; - } - $top10_sum = round(($client['count']/3600)) + $top10_sum; - $top10_idle_sum = round(($client['idle']/3600)) + $top10_idle_sum; - $client_data[$count10] = array( - 'name' => $client['name'], - 'count' => $hours, - 'online' => $client['online'] - ); - $count10++; - } -} - -for($count10 = $count10; $count10 <= 10; $count10++) { - $client_data[$count10] = array( - 'name' => "unkown", - 'count' => "0", - 'online' => "0" - ); -} - -$all_sum_data = $mysqlcon->query("SELECT SUM(count) FROM $dbname.user"); -$all_sum_data_res = $all_sum_data->fetchAll(); -$others_sum = round(($all_sum_data_res[0][0]/3600)) - $top10_sum; - -$all_idle_sum_data = $mysqlcon->query("SELECT SUM(idle) FROM $dbname.user"); -$all_idle_sum_data_res = $all_idle_sum_data->fetchAll(); -$others_idle_sum = round(($all_idle_sum_data_res[0][0]/3600)) - $top10_idle_sum; - -function get_percentage($max_value, $value) { - return (round(($value/$max_value)*100)); -} -require_once('nav.php'); -?> -
- -
- - -
-
-

- - -

-
-
- -
-
-
-
-
-
-

#1st

-

-
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-

#2nd

-

-
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-

#3rd

-

-
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
- #4th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
- #5th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
- #6th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #7th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #8th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #9th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #10th -
-
-
>
-
-
-
-
-
-
-
- -
-
-

-

#1 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#2 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#3 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#4 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#5 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#6 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#7 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#8 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#9 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#10 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-
-
-
-
-

-
-
-
-

 

-
-
-
-
-
-
-
- -
-
-

 

-
-
-
-
-
-
-
- -
-
-

 

-
-
-
-
-
-
-
-
-
- - -
- - -
- - - - - - - \ No newline at end of file +query("SELECT uuid,name,count,idle,cldgroup,online FROM $dbname.user ORDER BY (count - idle) DESC");}else{$dbdata=$mysqlcon->query("SELECT uuid,name,count,idle,cldgroup,online FROM $dbname.user ORDER BY count DESC");}$sumentries=$dbdata->rowCount()- 10;$db_arr=$dbdata->fetchAll();$count10=0;$top10_sum=0;$top10_idle_sum=0;foreach($db_arr as $client){$sgroups=explode(",",$client['cldgroup']);if(!in_array($client['uuid'],$exceptuuid)&&!array_intersect($sgroups,$exceptgroup)){if($count10==10)break;if($substridle==1){$hours=$client['count'] - $client['idle'];}else{$hours=$client['count'];}$top10_sum=round(($client['count']/3600))+ $top10_sum;$top10_idle_sum=round(($client['idle']/3600))+ $top10_idle_sum;$client_data[$count10]=array('name'=>$client['name'],'count'=>$hours,'online'=>$client['online']);$count10++;}}for($count10=$count10;$count10<=10;$count10++){$client_data[$count10]=array('name'=>"unkown",'count'=>"0",'online'=>"0");}$all_sum_data=$mysqlcon->query("SELECT SUM(count) FROM $dbname.user");$all_sum_data_res=$all_sum_data->fetchAll();$others_sum=round(($all_sum_data_res[0][0]/3600))- $top10_sum;$all_idle_sum_data=$mysqlcon->query("SELECT SUM(idle) FROM $dbname.user");$all_idle_sum_data_res=$all_idle_sum_data->fetchAll();$others_idle_sum=round(($all_idle_sum_data_res[0][0]/3600))- $top10_idle_sum;function get_percentage($max_value,$value){return(round(($value/$max_value)*100));}require_once('nav.php');?>

#1st

>

#2nd

>

#3rd

>
#4th
>
#5th
>
#6th
>

#7th
>

#8th
>

#9th
>

#10th
>

#1 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#2 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#3 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#4 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#5 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#6 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#7 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#8 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#9 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#10 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

 

 

 

\ No newline at end of file diff --git a/stats/top_month.php b/stats/top_month.php index b4f5852..4e0cbd7 100644 --- a/stats/top_month.php +++ b/stats/top_month.php @@ -1,390 +1 @@ -query("SELECT s.uuid,s.count_month,s.idle_month,u.name,u.online,u.grpid FROM $dbname.stats_user AS s INNER JOIN $dbname.user AS u ON s.uuid = u.uuid WHERE s.removed='0' ORDER BY (s.count_month - s.idle_month) DESC"); -} else { - $dbdata = $mysqlcon->query("SELECT s.uuid,s.count_month,s.idle_month,u.name,u.online,u.grpid FROM $dbname.stats_user AS s INNER JOIN $dbname.user AS u ON s.uuid = u.uuid WHERE s.removed='0' ORDER BY s.count_month DESC"); -} -$sumentries = $dbdata->rowCount() - 10; -$db_arr = $dbdata->fetchAll(); -$count10 = 0; -$top10_sum = 0; -$top10_idle_sum = 0; - - -foreach ($db_arr as $client) { - $sgroups = explode(",", $client['grpid']); - if (!in_array($client['uuid'], $exceptuuid) && !array_intersect($sgroups, $exceptgroup)) { - if ($count10 == 10) break; - if ($substridle == 1) { - $hours = $client['count_month'] - $client['idle_month']; - } else { - $hours = $client['count_month']; - } - $top10_sum = round(($client['count_month']/3600)) + $top10_sum; - $top10_idle_sum = round(($client['idle_month']/3600)) + $top10_idle_sum; - $client_data[$count10] = array( - 'name' => $client['name'], - 'count' => $hours, - 'online' => $client['online'] - ); - $count10++; - } -} - -for($count10 = $count10; $count10 <= 10; $count10++) { - $client_data[$count10] = array( - 'name' => "unkown", - 'count' => "0", - 'online' => "0" - ); -} - -$all_sum_data = $mysqlcon->query("SELECT SUM(count_month) FROM $dbname.stats_user"); -$all_sum_data_res = $all_sum_data->fetchAll(); -$others_sum = round(($all_sum_data_res[0][0]/3600)) - $top10_sum; - -$all_idle_sum_data = $mysqlcon->query("SELECT SUM(idle_month) FROM $dbname.stats_user"); -$all_idle_sum_data_res = $all_idle_sum_data->fetchAll(); -$others_idle_sum = round(($all_idle_sum_data_res[0][0]/3600)) - $top10_idle_sum; - -function get_percentage($max_value, $value) { - return (round(($value/$max_value)*100)); -} -require_once('nav.php'); -?> -
- -
- - -
-
-

- - -

-
-
- -
-
-
-
-
-
-

#1st

-

-
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-

#2nd

-

-
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-

#3rd

-

-
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
- #4th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
- #5th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
- #6th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #7th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #8th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #9th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #10th -
-
-
>
-
-
-
-
-
-
-
- -
-
-

-

#1 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#2 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#3 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#4 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#5 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#6 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#7 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#8 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#9 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#10 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-
-
-
-
-

-
-
-
-

 

-
-
-
-
-
-
-
- -
-
-

 

-
-
-
-
-
-
-
- -
-
-

 

-
-
-
-
-
-
-
-
-
- - -
- - -
- - - - < - - \ No newline at end of file +query("SELECT s.uuid,s.count_month,s.idle_month,u.name,u.online,u.cldgroup FROM $dbname.stats_user AS s INNER JOIN $dbname.user AS u ON s.uuid = u.uuid WHERE s.removed='0' ORDER BY (s.count_month - s.idle_month) DESC");}else{$dbdata=$mysqlcon->query("SELECT s.uuid,s.count_month,s.idle_month,u.name,u.online,u.cldgroup FROM $dbname.stats_user AS s INNER JOIN $dbname.user AS u ON s.uuid = u.uuid WHERE s.removed='0' ORDER BY s.count_month DESC");}$sumentries=$dbdata->rowCount()- 10;$db_arr=$dbdata->fetchAll();$count10=0;$top10_sum=0;$top10_idle_sum=0;foreach($db_arr as $client){$sgroups=explode(",",$client['cldgroup']);if(!in_array($client['uuid'],$exceptuuid)&&!array_intersect($sgroups,$exceptgroup)){if($count10==10)break;if($substridle==1){$hours=$client['count_month'] - $client['idle_month'];}else{$hours=$client['count_month'];}$top10_sum=round(($client['count_month']/3600))+ $top10_sum;$top10_idle_sum=round(($client['idle_month']/3600))+ $top10_idle_sum;$client_data[$count10]=array('name'=>$client['name'],'count'=>$hours,'online'=>$client['online']);$count10++;}}for($count10=$count10;$count10<=10;$count10++){$client_data[$count10]=array('name'=>"unkown",'count'=>"0",'online'=>"0");}$all_sum_data=$mysqlcon->query("SELECT SUM(count_month) FROM $dbname.stats_user");$all_sum_data_res=$all_sum_data->fetchAll();$others_sum=round(($all_sum_data_res[0][0]/3600))- $top10_sum;$all_idle_sum_data=$mysqlcon->query("SELECT SUM(idle_month) FROM $dbname.stats_user");$all_idle_sum_data_res=$all_idle_sum_data->fetchAll();$others_idle_sum=round(($all_idle_sum_data_res[0][0]/3600))- $top10_idle_sum;function get_percentage($max_value,$value){return(round(($value/$max_value)*100));}require_once('nav.php');?>

#1st

>

#2nd

>

#3rd

>
#4th
>
#5th
>
#6th
>

#7th
>

#8th
>

#9th
>

#10th
>

#1 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#2 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#3 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#4 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#5 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#6 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#7 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#8 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#9 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#10 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

 

 

 

< \ No newline at end of file diff --git a/stats/top_week.php b/stats/top_week.php index a8093a7..212655b 100644 --- a/stats/top_week.php +++ b/stats/top_week.php @@ -1,391 +1 @@ -query("SELECT s.uuid,s.count_week,s.idle_week,u.name,u.online,u.grpid FROM $dbname.stats_user AS s INNER JOIN $dbname.user AS u ON s.uuid = u.uuid WHERE s.removed='0' ORDER BY (s.count_week - s.idle_week) DESC"); -} else { - $dbdata = $mysqlcon->query("SELECT s.uuid,s.count_week,s.idle_week,u.name,u.online,u.grpid FROM $dbname.stats_user AS s INNER JOIN $dbname.user AS u ON s.uuid = u.uuid WHERE s.removed='0' ORDER BY s.count_week DESC"); -} -$sumentries = $dbdata->rowCount() - 10; -$db_arr = $dbdata->fetchAll(); -$count10 = 0; -$top10_sum = 0; -$top10_idle_sum = 0; - - -foreach ($db_arr as $client) { - $sgroups = explode(",", $client['grpid']); - if (!in_array($client['uuid'], $exceptuuid) && !array_intersect($sgroups, $exceptgroup)) { - if ($count10 == 10) break; - if ($substridle == 1) { - $hours = $client['count_week'] - $client['idle_week']; - } else { - $hours = $client['count_week']; - } - $top10_sum = round(($client['count_week']/3600)) + $top10_sum; - $top10_idle_sum = round(($client['idle_week']/3600)) + $top10_idle_sum; - $client_data[$count10] = array( - 'name' => $client['name'], - 'count' => $hours, - 'online' => $client['online'] - ); - $count10++; - } -} - -for($count10 = $count10; $count10 <= 10; $count10++) { - $client_data[$count10] = array( - 'name' => "unkown", - 'count' => "0", - 'online' => "0" - ); -} - -$all_sum_data = $mysqlcon->query("SELECT SUM(count_week) FROM $dbname.stats_user"); -$all_sum_data_res = $all_sum_data->fetchAll(); -$others_sum = round(($all_sum_data_res[0][0]/3600)) - $top10_sum; - -$all_idle_sum_data = $mysqlcon->query("SELECT SUM(idle_week) FROM $dbname.stats_user"); -$all_idle_sum_data_res = $all_idle_sum_data->fetchAll(); -$others_idle_sum = round(($all_idle_sum_data_res[0][0]/3600)) - $top10_idle_sum; - -function get_percentage($max_value, $value) { - return (round(($value/$max_value)*100)); -} -require_once('nav.php'); -?> -
- -
- - -
-
-

- - -

-
-
- -
-
-
-
-
-
-

#1st

-

-
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-

#2nd

-

-
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-

#3rd

-

-
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
- #4th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
- #5th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
- #6th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #7th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #8th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #9th -
-
-
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- #10th -
-
-
>
-
-
-
-
-
-
-
- -
-
-

-

#1 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#2 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#3 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#4 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#5 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#6 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#7 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#8 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#9 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-

#10 '.$lang['stix0024'].')' : ' (Status: '.$lang['stix0025'].')' ?>

-
-
-
-
-
-
-
-
-

-
-
-
-

 

-
-
-
-
-
-
-
- -
-
-

 

-
-
-
-
-
-
-
- -
-
-

 

-
-
-
-
-
-
-
-
-
- - -
- - -
- - - - - - - \ No newline at end of file +query("SELECT s.uuid,s.count_week,s.idle_week,u.name,u.online,u.cldgroup FROM $dbname.stats_user AS s INNER JOIN $dbname.user AS u ON s.uuid = u.uuid WHERE s.removed='0' ORDER BY (s.count_week - s.idle_week) DESC");}else{$dbdata=$mysqlcon->query("SELECT s.uuid,s.count_week,s.idle_week,u.name,u.online,u.cldgroup FROM $dbname.stats_user AS s INNER JOIN $dbname.user AS u ON s.uuid = u.uuid WHERE s.removed='0' ORDER BY s.count_week DESC");}$sumentries=$dbdata->rowCount()- 10;$db_arr=$dbdata->fetchAll();$count10=0;$top10_sum=0;$top10_idle_sum=0;foreach($db_arr as $client){$sgroups=explode(",",$client['cldgroup']);if(!in_array($client['uuid'],$exceptuuid)&&!array_intersect($sgroups,$exceptgroup)){if($count10==10)break;if($substridle==1){$hours=$client['count_week'] - $client['idle_week'];}else{$hours=$client['count_week'];}$top10_sum=round(($client['count_week']/3600))+ $top10_sum;$top10_idle_sum=round(($client['idle_week']/3600))+ $top10_idle_sum;$client_data[$count10]=array('name'=>$client['name'],'count'=>$hours,'online'=>$client['online']);$count10++;}}for($count10=$count10;$count10<=10;$count10++){$client_data[$count10]=array('name'=>"unkown",'count'=>"0",'online'=>"0");}$all_sum_data=$mysqlcon->query("SELECT SUM(count_week) FROM $dbname.stats_user");$all_sum_data_res=$all_sum_data->fetchAll();$others_sum=round(($all_sum_data_res[0][0]/3600))- $top10_sum;$all_idle_sum_data=$mysqlcon->query("SELECT SUM(idle_week) FROM $dbname.stats_user");$all_idle_sum_data_res=$all_idle_sum_data->fetchAll();$others_idle_sum=round(($all_idle_sum_data_res[0][0]/3600))- $top10_idle_sum;function get_percentage($max_value,$value){return(round(($value/$max_value)*100));}require_once('nav.php');?>

#1st

>

#2nd

>

#3rd

>
#4th
>
#5th
>
#6th
>

#7th
>

#8th
>

#9th
>

#10th
>

#1 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#2 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#3 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#4 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#5 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#6 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#7 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#8 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#9 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

#10 '.$lang['stix0024'].')':' (Status: '.$lang['stix0025'].')'?>

 

 

 

\ No newline at end of file diff --git a/update_1-00.php b/update_1-00.php deleted file mode 100644 index fcfc205..0000000 --- a/update_1-00.php +++ /dev/null @@ -1,182 +0,0 @@ - - - - TS-N.NET ranksystem - Update 1.00 - - - - -'.$lang['alrup'].'
'; - if(file_exists('install.php') or glob('update*.php')) { - unlink('install.php'); - $unlinkfiles = glob('update*.php'); - if(array_map('unlink',$unlinkfiles) === true) { - echo ''.sprintf($lang['updel'],'install.php
update*.php
').'
'; - $redurl = 'http://'.$_SERVER["HTTP_HOST"].str_replace(str_replace($_SERVER['PHP_SELF'], '', $_SERVER['SCRIPT_FILENAME']), '', __DIR__).'/webinterface.php'; - header("Location: " . $redurl); - } - } -} elseif (!is_writable('./other/dbconfig.php') || substr(sprintf('%o', fileperms('./icons/')), -4)!='0777' || substr(sprintf('%o', fileperms('./avatars/')), -4)!='0777' || substr(sprintf('%o', fileperms('./logs/')), -4)!='0777') { - echo '',$lang['isntwichm'],''; -} else { - echo sprintf($lang['updb'],'1.00','1-00'); - echo '
'; -} - -if(isset($_POST['updateranksystem'])) { - $errcount = 1; - if($mysqlcon->exec("ALTER TABLE $dbname.user ADD (boosttime bigint(11) NOT NULL default '0', rank bigint(11) NOT NULL default '0', platform text default NULL, nation text default NULL, version text default NULL, firstcon bigint(11) NOT NULL default '0', except int(1) NOT NULL default '0')") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } - if($mysqlcon->exec("ALTER TABLE $dbname.config ADD (boost text default NULL, showcolas int(1) NOT NULL default '0', defchid bigint(11) NOT NULL default '0', timezone varchar(29) CHARACTER SET utf8 COLLATE utf8_unicode_ci, logpath varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci)") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } - $logpath = addslashes(__DIR__."/logs/"); - if($mysqlcon->exec("ALTER TABLE $dbname.config MODIFY slowmode bigint(11) NOT NULL default '0'") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - if($mysqlcon->exec("UPDATE $dbname.config set defchid='0', timezome='Europe/Berlin', slowmode='0', logpath='$logpath'") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } - } - if($mysqlcon->exec("ALTER TABLE $dbname.groups ADD (icondate bigint(11) NOT NULL default '0')") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } - if($mysqlcon->exec("CREATE TABLE $dbname.server_usage (timestamp bigint(11) NOT NULL default '0', clients bigint(11) NOT NULL default '0', channel bigint(11) NOT NULL default '0')") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } - if($mysqlcon->exec("CREATE TABLE $dbname.user_snapshot (timestamp bigint(11) NOT NULL default '0', uuid varchar(29) CHARACTER SET utf8 COLLATE utf8_unicode_ci, count bigint(11) NOT NULL default '0', idle bigint(11) NOT NULL default '0')") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } - if($mysqlcon->exec("CREATE INDEX snapshot_timestamp ON $dbname.user_snapshot (timestamp)") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } - if($mysqlcon->exec("CREATE TABLE $dbname.stats_server (total_user bigint(11) NOT NULL default '0', total_online_time bigint(13) NOT NULL default '0', total_online_month bigint(11) NOT NULL default '0', total_online_week bigint(11) NOT NULL default '0', total_active_time bigint(11) NOT NULL default '0', total_inactive_time bigint(11) NOT NULL default '0', country_nation_name_1 varchar(3) NOT NULL default '0', country_nation_name_2 varchar(3) NOT NULL default '0', country_nation_name_3 varchar(3) NOT NULL default '0', country_nation_name_4 varchar(3) NOT NULL default '0', country_nation_name_5 varchar(3) NOT NULL default '0', country_nation_1 bigint(11) NOT NULL default '0', country_nation_2 bigint(11) NOT NULL default '0', country_nation_3 bigint(11) NOT NULL default '0', country_nation_4 bigint(11) NOT NULL default '0', country_nation_5 bigint(11) NOT NULL default '0', country_nation_other bigint(11) NOT NULL default '0', platform_1 bigint(11) NOT NULL default '0', platform_2 bigint(11) NOT NULL default '0', platform_3 bigint(11) NOT NULL default '0', platform_4 bigint(11) NOT NULL default '0', platform_5 bigint(11) NOT NULL default '0', platform_other bigint(11) NOT NULL default '0', version_name_1 varchar(35) NOT NULL default '0', version_name_2 varchar(35) NOT NULL default '0', version_name_3 varchar(35) NOT NULL default '0', version_name_4 varchar(35) NOT NULL default '0', version_name_5 varchar(35) NOT NULL default '0', version_1 bigint(11) NOT NULL default '0', version_2 bigint(11) NOT NULL default '0', version_3 bigint(11) NOT NULL default '0', version_4 bigint(11) NOT NULL default '0', version_5 bigint(11) NOT NULL default '0', version_other bigint(11) NOT NULL default '0', server_status int(1) NOT NULL default '0', server_free_slots bigint(11) NOT NULL default '0', server_used_slots bigint(11) NOT NULL default '0', server_channel_amount bigint(11) NOT NULL default '0', server_ping bigint(11) NOT NULL default '0', server_packet_loss float (4,4), server_bytes_down bigint(11) NOT NULL default '0', server_bytes_up bigint(11) NOT NULL default '0', server_uptime bigint(11) NOT NULL default '0', server_id bigint(11) NOT NULL default '0', server_name text CHARACTER SET utf8 COLLATE utf8_unicode_ci, server_pass int(1) NOT NULL default '0', server_creation_date bigint(11) NOT NULL default '0', server_platform text CHARACTER SET utf8 COLLATE utf8_unicode_ci, server_weblist text CHARACTER SET utf8 COLLATE utf8_unicode_ci, server_version text CHARACTER SET utf8 COLLATE utf8_unicode_ci)") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } - if($mysqlcon->exec("CREATE TABLE $dbname.stats_user (uuid varchar(29) CHARACTER SET utf8 COLLATE utf8_unicode_ci PRIMARY KEY, removed int(1) NOT NULL default '0', rank bigint(11) NOT NULL default '0', total_connections bigint(11) NOT NULL default '0', count_week bigint(11) NOT NULL default '0', count_month bigint(11) NOT NULL default '0', idle_week bigint(11) NOT NULL default '0', idle_month bigint(11) NOT NULL default '0', achiev_count bigint(11) NOT NULL default '0', achiev_time bigint(11) NOT NULL default '0', achiev_connects bigint(11) NOT NULL default '0', achiev_battles bigint(11) NOT NULL default '0', achiev_time_perc int(3) NOT NULL default '0', achiev_connects_perc int(3) NOT NULL default '0', achiev_battles_perc int(3) NOT NULL default '0', battles_total bigint(11) NOT NULL default '0', battles_won bigint(11) NOT NULL default '0', battles_lost bigint(11) NOT NULL default '0', client_description text CHARACTER SET utf8 COLLATE utf8_unicode_ci, base64hash varchar(58) CHARACTER SET utf8 COLLATE utf8_unicode_ci, client_total_up bigint(15) NOT NULL default '0', client_total_down bigint(15) NOT NULL default '0')") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } - if($mysqlcon->exec("INSERT INTO $dbname.stats_server SET total_user='9999'") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } - if($mysqlcon->exec("CREATE TABLE $dbname.job_check (job_name varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci PRIMARY KEY, timestamp bigint(11) NOT NULL default '0')") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } - if($mysqlcon->exec("INSERT INTO $dbname.job_check (job_name) VALUES ('calc_user_limit'),('calc_user_lastscan'),('check_update'),('check_clean')") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } - if($mysqlcon->exec("CREATE TABLE $dbname.job_log (id bigint(11) AUTO_INCREMENT PRIMARY KEY, timestamp bigint(11) NOT NULL default '0', job_name varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci, status int(1) NOT NULL default '0', err_msg text CHARACTER SET utf8 COLLATE utf8_unicode_ci, runtime float (4,4))") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } - if(($lastscan = $mysqlcon->query("SELECT timestamp FROM $dbname.lastscan")) === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } else { - $timestampls = $lastscan->fetchAll(); - $calc_user_lastscan = $timestampls[0]['timestamp']; - if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$calc_user_lastscan' WHERE job_name='calc_user_lastscan'") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } elseif($mysqlcon->exec("DROP TABLE $dbname.lastscan") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } - } - if(($lastupdate = $mysqlcon->query("SELECT timestamp FROM $dbname.upcheck")) === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } else { - $timestampuc = $lastupdate->fetchAll(); - $check_update = $timestampuc[0]['timestamp']; - if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$check_update' WHERE job_name='check_update'") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } elseif($mysqlcon->exec("DROP TABLE $dbname.upcheck") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } - } - if(($lastclean = $mysqlcon->query("SELECT timestamp FROM $dbname.cleanclients")) === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } else { - $timestamplc = $lastclean->fetchAll(); - $check_clean = $timestampls[0]['timestamp']; - if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$check_clean' WHERE job_name='check_clean'") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } elseif($mysqlcon->exec("DROP TABLE $dbname.cleanclients") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } - } - if ($errcount == 1) { - if($mysqlcon->exec("UPDATE $dbname.config set currvers='1.00'") === false) { - echo $lang['insttberr'].''.print_r($mysqlcon->errorInfo()).'.'; - $errcount++; - } else { - echo''.$lang['upsucc'].'

'; - if(file_exists('install.php') or glob('update*.php')) { - unlink('install.php'); - $unlinkfiles = glob('update*.php'); - if(array_map('unlink',$unlinkfiles) === true) { - echo ''.sprintf($lang['updel'],'install.php
update*.php
').'
'; - $redurl = 'http://'.$_SERVER["HTTP_HOST"].str_replace(str_replace($_SERVER['PHP_SELF'], '', $_SERVER['SCRIPT_FILENAME']), '', __DIR__).'/webinterface.php'; - header("Location: " . $redurl); - } - } - } - } else { - echo "Error by Updating the Database for the Ranksystem. Please run the following SQL Statements yourself and be sure all works correctly:

- ALTER TABLE $dbname.user ADD (boosttime bigint(11) NOT NULL default '0', rank bigint(11) NOT NULL default '0', platform text default NULL, nation text default NULL, version text default NULL, firstcon bigint(11) NOT NULL default '0', except int(1) NOT NULL default '0');
- ALTER TABLE $dbname.config ADD (boost text default NULL, showcolas int(1) NOT NULL default '0', defchid bigint(11) NOT NULL default '0', timezone varchar(29) CHARACTER SET utf8 COLLATE utf8_unicode_ci, logpath varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci))
- ALTER TABLE $dbname.config MODIFY slowmode bigint(11) NOT NULL default '0';
- UPDATE $dbname.config set defchid='0', timezome='Europe/Berlin', slowmode='0', logpath='$logpath';
- ALTER TABLE g$dbname.roups ADD (icondate bigint(11) NOT NULL default '0');
- CREATE TABLE $dbname.server_usage (timestamp bigint(11) NOT NULL default '0', clients bigint(11) NOT NULL default '0', channel bigint(11) NOT NULL default '0');
- CREATE TABLE $dbname.user_snapshot (timestamp bigint(11) NOT NULL default '0', uuid varchar(29) CHARACTER SET utf8 COLLATE utf8_unicode_ci, count bigint(11) NOT NULL default '0', idle bigint(11) NOT NULL default '0');
- CREATE INDEX $dbname.snapshot_timestamp ON user_snapshot (timestamp);
- CREATE TABLE $dbname.stats_server (total_user bigint(11) NOT NULL default '0', total_online_time bigint(13) NOT NULL default '0', total_online_month bigint(11) NOT NULL default '0', total_online_week bigint(11) NOT NULL default '0', total_active_time bigint(11) NOT NULL default '0', total_inactive_time bigint(11) NOT NULL default '0', country_nation_name_1 varchar(3) NOT NULL default '0', country_nation_name_2 varchar(3) NOT NULL default '0', country_nation_name_3 varchar(3) NOT NULL default '0', country_nation_name_4 varchar(3) NOT NULL default '0', country_nation_name_5 varchar(3) NOT NULL default '0', country_nation_1 bigint(11) NOT NULL default '0', country_nation_2 bigint(11) NOT NULL default '0', country_nation_3 bigint(11) NOT NULL default '0', country_nation_4 bigint(11) NOT NULL default '0', country_nation_5 bigint(11) NOT NULL default '0', country_nation_other bigint(11) NOT NULL default '0', platform_1 bigint(11) NOT NULL default '0', platform_2 bigint(11) NOT NULL default '0', platform_3 bigint(11) NOT NULL default '0', platform_4 bigint(11) NOT NULL default '0', platform_5 bigint(11) NOT NULL default '0', platform_other bigint(11) NOT NULL default '0', version_name_1 varchar(35) NOT NULL default '0', version_name_2 varchar(35) NOT NULL default '0', version_name_3 varchar(35) NOT NULL default '0', version_name_4 varchar(35) NOT NULL default '0', version_name_5 varchar(35) NOT NULL default '0', version_1 bigint(11) NOT NULL default '0', version_2 bigint(11) NOT NULL default '0', version_3 bigint(11) NOT NULL default '0', version_4 bigint(11) NOT NULL default '0', version_5 bigint(11) NOT NULL default '0', version_other bigint(11) NOT NULL default '0', server_status int(1) NOT NULL default '0', server_free_slots bigint(11) NOT NULL default '0', server_used_slots bigint(11) NOT NULL default '0', server_channel_amount bigint(11) NOT NULL default '0', server_ping bigint(11) NOT NULL default '0', server_packet_loss float (4,4), server_bytes_down bigint(11) NOT NULL default '0', server_bytes_up bigint(11) NOT NULL default '0', server_uptime bigint(11) NOT NULL default '0', server_id bigint(11) NOT NULL default '0', server_name text CHARACTER SET utf8 COLLATE utf8_unicode_ci, server_pass int(1) NOT NULL default '0', server_creation_date bigint(11) NOT NULL default '0', server_platform text CHARACTER SET utf8 COLLATE utf8_unicode_ci, server_weblist text CHARACTER SET utf8 COLLATE utf8_unicode_ci, server_version text CHARACTER SET utf8 COLLATE utf8_unicode_ci);
- CREATE TABLE $dbname.stats_user (uuid varchar(29) CHARACTER SET utf8 COLLATE utf8_unicode_ci PRIMARY KEY, removed int(1) NOT NULL default '0', rank bigint(11) NOT NULL default '0', total_connections bigint(11) NOT NULL default '0', count_week bigint(11) NOT NULL default '0', count_month bigint(11) NOT NULL default '0', idle_week bigint(11) NOT NULL default '0', idle_month bigint(11) NOT NULL default '0', achiev_count bigint(11) NOT NULL default '0', achiev_time bigint(11) NOT NULL default '0', achiev_connects bigint(11) NOT NULL default '0', achiev_battles bigint(11) NOT NULL default '0', achiev_time_perc int(3) NOT NULL default '0', achiev_connects_perc int(3) NOT NULL default '0', achiev_battles_perc int(3) NOT NULL default '0', battles_total bigint(11) NOT NULL default '0', battles_won bigint(11) NOT NULL default '0', battles_lost bigint(11) NOT NULL default '0', client_description text CHARACTER SET utf8 COLLATE utf8_unicode_ci, base64hash varchar(58) CHARACTER SET utf8 COLLATE utf8_unicode_ci, client_total_up bigint(15) NOT NULL default '0', client_total_down bigint(15) NOT NULL default '0');
- INSERT INTO $dbname.stats_server SET total_user='9999';
- CREATE TABLE $dbname.job_check (job_name varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci PRIMARY KEY, timestamp bigint(11) NOT NULL default '0');
- INSERT INTO $dbname.job_check (job_name) VALUES ('calc_user_limit'),('calc_user_lastscan'),('check_update'),('check_clean');
- CREATE TABLE $dbname.job_log (id bigint(11) AUTO_INCREMENT PRIMARY KEY, timestamp bigint(11) NOT NULL default '0', job_name varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci, status int(1) NOT NULL default '0', err_msg text CHARACTER SET utf8 COLLATE utf8_unicode_ci, runtime float (4,4));
- SELECT timestamp FROM lastscan; -- take this value and input in next SQL instead of ###VALUE1###
-
- UPDATE $dbname.job_check SET timestamp='###VALUE1###' WHERE job_name='calc_user_lastscan';
- DROP TABLE $dbname.lastscan;
- SELECT timestamp FROM $dbname.upcheck; -- take this value and input in next SQL instead of ###VALUE2###
-
- UPDATE $dbname.job_check SET timestamp='###VALUE2###' WHERE job_name='check_update';
- DROP TABLE $dbname.upcheck;
- SELECT timestamp FROM $dbname.cleanclients; -- take this value and input in next SQL instead of ###VALUE3###
-
- UPDATE $dbname.job_check SET timestamp='###VALUE3###' WHERE job_name='check_clean';
- DROP TABLE $dbname.cleanclients;
- UPDATE $dbname.config set currvers='1.00';
- "; - } -} -?> - - \ No newline at end of file diff --git a/webinterface.php b/webinterface.php index 37153ff..1049b18 100644 --- a/webinterface.php +++ b/webinterface.php @@ -1,331 +1,7 @@ - - - - - TS-N.NET Ranksystem - Webinterface - - - - - - -'; -$starttime = microtime(true); -require_once('other/config.php'); -$alert = " "; -if (isset($_POST['changeclients'])) { - $selectedclients = $_POST['selectedclients']; - echo $selectedclients; - echo '
'; - $selecteduuids = $_POST['selecteduuids']; - echo $selecteduuids; -} -if (isset($_POST['updatets'])) { - $tshost = $_POST['tshost']; - $tsquery = $_POST['tsquery']; - $tsvoice = $_POST['tsvoice']; - $tsuser = $_POST['tsuser']; - $tspass = $_POST['tspass']; - $queryname = $_POST['queryname']; - $queryname2 = $_POST['queryname2']; - $defchid = $_POST['defchid']; - $timezone = $_POST['timezone']; - $slowmode = $_POST['slowmode']; - if ($mysqlcon->exec("UPDATE config set tshost='$tshost',tsquery='$tsquery',tsvoice='$tsvoice',tsuser='$tsuser',tspass='$tspass',queryname='$queryname',queryname2='$queryname2',slowmode='$slowmode',defchid='$defchid',timezone='$timezone'") === false) { - $alert = '' . $mysqlcon->errorCode() . '
'; - } else { - exec("php ".__DIR__."/worker.php restart"); - $alert = '' . $lang['wisvsuc'] . ''; - } - require_once('other/webinterface_list.php'); -} -if (isset($_POST['updatecore'])) { - $grouptime = $_POST['grouptime']; - if (isset($_POST['resetbydbchange'])) $resetbydbchange = 1; else $resetbydbchange = 0; - if (isset($_POST['msgtouser'])) $msgtouser = 1; else $msgtouser = 0; - if (isset($_POST['cleanclients'])) $cleanclients = 1; else $cleanclients = 0; - if (isset($_POST['upcheck'])) $upcheck = 1; else $upcheck = 0; - $cleanperiod = $_POST['cleanperiod']; - $uniqueid = $_POST['uniqueid']; - $boost = $_POST['boost']; - $updateinfotime = $_POST['updateinfotime']; - $logpath = addslashes($_POST['logpath']); - if (isset($_POST['substridle'])) $substridle = 1; else $substridle = 0; - $exceptuuid = $_POST['exceptuuid']; - $exceptgroup = $_POST['exceptgroup']; - if ($mysqlcon->exec("UPDATE config set grouptime='$grouptime',resetbydbchange='$resetbydbchange',msgtouser='$msgtouser',cleanclients='$cleanclients',cleanperiod='$cleanperiod',upcheck='$upcheck',uniqueid='$uniqueid',updateinfotime='$updateinfotime',substridle='$substridle',exceptuuid='$exceptuuid',exceptgroup='$exceptgroup',boost='$boost',logpath='$logpath'") === false) { - $alert = '' . $mysqlcon->errorCode() . '
'; - } else { - exec("php ".__DIR__."/worker.php restart"); - $alert = '' . $lang['wisvsuc'] . ''; - } - require_once('other/webinterface_list.php'); -} -if (isset($_POST['updatestyle'])) { - $language = $_POST['languagedb']; - $dateformat = $_POST['dateformat']; - if (isset($_POST['showexgrp'])) $showexgrp = 1; else $showexgrp = 0; - if (isset($_POST['showexcld'])) $showexcld = 1; else $showexcld = 0; - if (isset($_POST['showhighest'])) $showhighest = 1; else $showhighest = 0; - if (isset($_POST['showcolrg'])) $showcolrg = 1; else $showcolrg = 0; - if (isset($_POST['showcolcld'])) $showcolcld = 1; else $showcolcld = 0; - if (isset($_POST['showcoluuid'])) $showcoluuid = 1; else $showcoluuid = 0; - if (isset($_POST['showcoldbid'])) $showcoldbid = 1; else $showcoldbid = 0; - if (isset($_POST['showcolls'])) $showcolls = 1; else $showcolls = 0; - if (isset($_POST['showcolot'])) $showcolot = 1; else $showcolot = 0; - if (isset($_POST['showcolit'])) $showcolit = 1; else $showcolit = 0; - if (isset($_POST['showcolat'])) $showcolat = 1; else $showcolat = 0; - if (isset($_POST['showcolas'])) $showcolas = 1; else $showcolas = 0; - if (isset($_POST['showcolnx'])) $showcolnx = 1; else $showcolnx = 0; - if (isset($_POST['showcolsg'])) $showcolsg = 1; else $showcolsg = 0; - $bgcolor = $_POST['bgcolor']; - $hdcolor = $_POST['hdcolor']; - $txcolor = $_POST['txcolor']; - $hvcolor = $_POST['hvcolor']; - $ifcolor = $_POST['ifcolor']; - $wncolor = $_POST['wncolor']; - $sccolor = $_POST['sccolor']; - if (isset($_POST['showgen'])) $showgen = 1; else $showgen = 0; - include('lang.php'); - if ($mysqlcon->exec("UPDATE config set language='$language',dateformat='$dateformat',showexgrp='$showexgrp',showexcld='$showexcld',showhighest='$showhighest',showcolrg='$showcolrg',showcolcld='$showcolcld',showcoluuid='$showcoluuid',showcoldbid='$showcoldbid',showcolls='$showcolls',showcolot='$showcolot',showcolit='$showcolit',showcolat='$showcolat',showcolas='$showcolas',showcolnx='$showcolnx',showcolsg='$showcolsg',bgcolor='$bgcolor',hdcolor='$hdcolor',txcolor='$txcolor',hvcolor='$hvcolor',ifcolor='$ifcolor',wncolor='$wncolor',sccolor='$sccolor',showgen='$showgen'") === false) { - $alert = '' . $mysqlcon->errorCode() . '
'; - } else { - $alert = '' . $lang['wisvsuc'] . ''; - } - require_once('other/webinterface_list.php'); -} -if (isset($_POST['selectivclients'])) { - $seluuid = $_POST['selecteduuids']; - $uuidarr = explode(',', $seluuid); - $counttime = $_POST['counttime']; - if (isset($_POST['delclients']) && $seluuid != '' && $counttime == 0) { - require_once('ts3_lib/TeamSpeak3.php'); - $ts3_VirtualServer = TeamSpeak3::factory("serverquery://" . $ts['user'] . ":" . $ts['pass'] . "@" . $ts['host'] . ":" . $ts['query'] . "/?server_port=" . $ts['voice']); - try { - $ts3_VirtualServer->selfUpdate(array( - 'client_nickname' => $queryname - )); - } - catch (Exception $e) { - try { - $ts3_VirtualServer->selfUpdate(array( - 'client_nickname' => $queryname2 - )); - } - catch (Exception $e) { - echo $lang['error'], $e->getCode(), ': ', $e->getMessage(); - } - } - foreach ($uuidarr as $uuid) { - if (isset($_POST['delsrvgrp'])) { - $dbremsgrp = $mysqlcon->query("SELECT cldbid,grpid from user where uuid='$uuid'"); - while ($remsgrp = $dbremsgrp->fetch(PDO::FETCH_ASSOC)) { - if ($remsgrp['grpid'] != 0) { - try { - $ts3_VirtualServer->serverGroupClientDel($remsgrp['grpid'], $remsgrp['cldbid']); - } - catch (Exception $e) { - $alert = $alert . '' . sprintf($lang['errremgrp'], $uuid, $remsgrp['grpid']) . $e->getCode() . ': ' . $e->getMessage() . '
'; - } - } - } - } - if ($mysqlcon->exec("DELETE FROM user WHERE uuid='$uuid'") === false) { - $alert = $alert . '' . sprintf($lang['errremdb'], $uuid) . $mysqlcon->errorCode() . '
'; - } else { - $alert = $alert . '' . sprintf($lang['sccrmcld'], $uuid) . '
'; - } - } - } elseif ($_POST['delclients'] == "" && $seluuid != '' && $counttime != 0) { - $dtF = new DateTime("@0"); - $dtT = new DateTime("@$counttime"); - $timecount = $dtF->diff($dtT)->format($timeformat); - foreach ($uuidarr as $uuid) { - if ($mysqlcon->exec("UPDATE user SET count='$counttime' WHERE uuid='$uuid'") === false) { - $alert = $alert . '' . sprintf($lang['errupcount'], $timecount, $uuid) . $mysqlcon->errorCode() . '
'; - } else { - $alert = $alert . '' . sprintf($lang['sccupcount'], $uuid, $timecount) . '
'; - } - } - } else { - echo $_POST['delclients']; - $alert = '' . sprintf($lang['errsel'], $seluuid, $_POST['delclients'], $counttime) . ''; - } - require_once('other/webinterface_list.php'); -} -if (isset($_POST['globalclients'])) { - if(isset($_POST['delcldgrps'])) { - $selectbefore = $mysqlcon->query("SELECT * FROM user WHERE grpid!='0'"); - $before = $selectbefore->rowCount(); - if($mysqlcon->exec("UPDATE user SET grpid='0'") && $selectbefore->rowCount() != 0) { - $alert = '' . sprintf($lang['delcldgrpsc'], $before) . ''; - } elseif($selectbefore->rowCount() == 0) { - $alert = '' . sprintf($lang['delcldgrpsc'], $before) . ''; - } else { - $alert = '' . sprintf($lang['delcldgrpif'], $selectbefore->errorCode()) . ''; - } - } else { - $selectbefore = $mysqlcon->query("SELECT * FROM user"); - $before = $selectbefore->rowCount(); - $cleantime = time() - $_POST['cleantime']; - if (isset($_POST['delsrvgrp'])) { - require_once('ts3_lib/TeamSpeak3.php'); - $ts3_VirtualServer = TeamSpeak3::factory("serverquery://" . $ts['user'] . ":" . $ts['pass'] . "@" . $ts['host'] . ":" . $ts['query'] . "/?server_port=" . $ts['voice']); - try { - $ts3_VirtualServer->selfUpdate(array( - 'client_nickname' => $queryname - )); - } - catch (Exception $e) { - try { - $ts3_VirtualServer->selfUpdate(array( - 'client_nickname' => $queryname2 - )); - } - catch (Exception $e) { - echo $lang['error'], $e->getCode(), ': ', $e->getMessage(); - } - } - $dbremsgrp = $mysqlcon->query("SELECT cldbid,grpid from user where lastseen<'$cleantime'"); - $dbremsgrp = $dbremsgrp->fetchAll(); - foreach ($dbremsgrp as $remsgrp) { - if ($remsgrp['grpid'] != 0) { - $ts3_VirtualServer->serverGroupClientDel($remsgrp['grpid'], $remsgrp['cldbid']); - } - } - } - if ($_POST['cleantime'] < 1) { - $dbcount = $mysqlcon->exec("DELETE from user"); - } else { - $dbcount = $mysqlcon->exec("DELETE from user where lastseen<'$cleantime'"); - } - $selectafter = $mysqlcon->query("SELECT * from user"); - $after = $selectafter->rowCount(); - $countdel = $before - $after; - if ($countdel == 0) { - $alert = '' . sprintf($lang['delclientsif'], $countdel) . ''; - } else { - $alert = '' . sprintf($lang['delclientssc'], $countdel) . ''; - } - } - require_once('other/webinterface_list.php'); -} -if (isset($_POST['updatetdbsettings'])) { -$newconfig=' TS-N.NET Ranksystem - Webinterface ';$starttime=microtime(true);require_once('other/config.php');$alert=" ";if(isset($_POST['changeclients'])){$selectedclients=$_POST['selectedclients'];echo $selectedclients;echo '
';$selecteduuids=$_POST['selecteduuids'];echo $selecteduuids;}if(isset($_POST['updatets'])){$tshost=$_POST['tshost'];$tsquery=$_POST['tsquery'];$tsvoice=$_POST['tsvoice'];$tsuser=$_POST['tsuser'];$tspass=$_POST['tspass'];$queryname=$_POST['queryname'];$queryname2=$_POST['queryname2'];$defchid=$_POST['defchid'];$timezone=$_POST['timezone'];$slowmode=$_POST['slowmode'];if($mysqlcon->exec("UPDATE $dbname.config set tshost='$tshost',tsquery='$tsquery',tsvoice='$tsvoice',tsuser='$tsuser',tspass='$tspass',queryname='$queryname',queryname2='$queryname2',slowmode='$slowmode',defchid='$defchid',timezone='$timezone'")===false){$alert=''.$mysqlcon->errorCode().'
';}else{exec("php ".__DIR__."/worker.php restart");$alert=''.$lang['wisvsuc'].'';}require_once('other/webinterface_list.php');}if(isset($_POST['updatecore'])){$grouptime=$_POST['grouptime'];if(isset($_POST['resetbydbchange']))$resetbydbchange=1;else $resetbydbchange=0;if(isset($_POST['msgtouser']))$msgtouser=1;else $msgtouser=0;if(isset($_POST['cleanclients']))$cleanclients=1;else $cleanclients=0;if(isset($_POST['upcheck']))$upcheck=1;else $upcheck=0;$cleanperiod=$_POST['cleanperiod'];$uniqueid=$_POST['uniqueid'];$boost=$_POST['boost'];$updateinfotime=$_POST['updateinfotime'];$logpath=addslashes($_POST['logpath']);if(isset($_POST['substridle']))$substridle=1;else $substridle=0;$exceptuuid=$_POST['exceptuuid'];$exceptgroup=$_POST['exceptgroup'];if($mysqlcon->exec("UPDATE $dbname.config set grouptime='$grouptime',resetbydbchange='$resetbydbchange',msgtouser='$msgtouser',cleanclients='$cleanclients',cleanperiod='$cleanperiod',upcheck='$upcheck',uniqueid='$uniqueid',updateinfotime='$updateinfotime',substridle='$substridle',exceptuuid='$exceptuuid',exceptgroup='$exceptgroup',boost='$boost',logpath='$logpath'")===false){$alert=''.$mysqlcon->errorCode().'
';}else{exec("php ".__DIR__."/worker.php restart");$alert=''.$lang['wisvsuc'].'';}require_once('other/webinterface_list.php');}if(isset($_POST['updatestyle'])){$language=$_POST['languagedb'];$dateformat=$_POST['dateformat'];if(isset($_POST['showexgrp']))$showexgrp=1;else $showexgrp=0;if(isset($_POST['showexcld']))$showexcld=1;else $showexcld=0;if(isset($_POST['showhighest']))$showhighest=1;else $showhighest=0;if(isset($_POST['showcolrg']))$showcolrg=1;else $showcolrg=0;if(isset($_POST['showcolcld']))$showcolcld=1;else $showcolcld=0;if(isset($_POST['showcoluuid']))$showcoluuid=1;else $showcoluuid=0;if(isset($_POST['showcoldbid']))$showcoldbid=1;else $showcoldbid=0;if(isset($_POST['showcolls']))$showcolls=1;else $showcolls=0;if(isset($_POST['showcolot']))$showcolot=1;else $showcolot=0;if(isset($_POST['showcolit']))$showcolit=1;else $showcolit=0;if(isset($_POST['showcolat']))$showcolat=1;else $showcolat=0;if(isset($_POST['showcolas']))$showcolas=1;else $showcolas=0;if(isset($_POST['showcolnx']))$showcolnx=1;else $showcolnx=0;if(isset($_POST['showcolsg']))$showcolsg=1;else $showcolsg=0;$bgcolor=$_POST['bgcolor'];$hdcolor=$_POST['hdcolor'];$txcolor=$_POST['txcolor'];$hvcolor=$_POST['hvcolor'];$ifcolor=$_POST['ifcolor'];$wncolor=$_POST['wncolor'];$sccolor=$_POST['sccolor'];if(isset($_POST['showgen']))$showgen=1;else $showgen=0;include('lang.php');if($mysqlcon->exec("UPDATE $dbname.config set language='$language',dateformat='$dateformat',showexgrp='$showexgrp',showexcld='$showexcld',showhighest='$showhighest',showcolrg='$showcolrg',showcolcld='$showcolcld',showcoluuid='$showcoluuid',showcoldbid='$showcoldbid',showcolls='$showcolls',showcolot='$showcolot',showcolit='$showcolit',showcolat='$showcolat',showcolas='$showcolas',showcolnx='$showcolnx',showcolsg='$showcolsg',bgcolor='$bgcolor',hdcolor='$hdcolor',txcolor='$txcolor',hvcolor='$hvcolor',ifcolor='$ifcolor',wncolor='$wncolor',sccolor='$sccolor',showgen='$showgen'")===false){$alert=''.$mysqlcon->errorCode().'
';}else{$alert=''.$lang['wisvsuc'].'';}require_once('other/webinterface_list.php');}if(isset($_POST['selectivclients'])){$seluuid=$_POST['selecteduuids'];$uuidarr=explode(',',$seluuid);$counttime=$_POST['counttime'];if(isset($_POST['delclients'])&&$seluuid!=''&&$counttime==0){require_once('ts3_lib/TeamSpeak3.php');$ts3_VirtualServer=TeamSpeak3::factory("serverquery://".$ts['user'].":".$ts['pass']."@".$ts['host'].":".$ts['query']."/?server_port=".$ts['voice']);try{$ts3_VirtualServer->selfUpdate(array('client_nickname'=>$queryname));}catch(Exception $e){try{$ts3_VirtualServer->selfUpdate(array('client_nickname'=>$queryname2));}catch(Exception $e){echo $lang['error'],$e->getCode(),': ',$e->getMessage();}}foreach($uuidarr as $uuid){if(isset($_POST['delsrvgrp'])){$dbremsgrp=$mysqlcon->query("SELECT cldbid,grpid from $dbname.user where uuid='$uuid'");while($remsgrp=$dbremsgrp->fetch(PDO::FETCH_ASSOC)){if($remsgrp['grpid']!=0){try{$ts3_VirtualServer->serverGroupClientDel($remsgrp['grpid'],$remsgrp['cldbid']);}catch(Exception $e){$alert=$alert.''.sprintf($lang['errremgrp'],$uuid,$remsgrp['grpid']).$e->getCode().': '.$e->getMessage().'
';}}}}if($mysqlcon->exec("DELETE FROM $dbname.user WHERE uuid='$uuid'")===false){$alert=$alert.''.sprintf($lang['errremdb'],$uuid).$mysqlcon->errorCode().'
';}else{$alert=$alert.''.sprintf($lang['sccrmcld'],$uuid).'
';}}}elseif($_POST['delclients']==""&&$seluuid!=''&&$counttime!=0){$dtF=new DateTime("@0");$dtT=new DateTime("@$counttime");$timecount=$dtF->diff($dtT)->format($timeformat);foreach($uuidarr as $uuid){if($mysqlcon->exec("UPDATE $dbname.user SET count='$counttime' WHERE uuid='$uuid'")===false){$alert=$alert.''.sprintf($lang['errupcount'],$timecount,$uuid).$mysqlcon->errorCode().'
';}else{$alert=$alert.''.sprintf($lang['sccupcount'],$uuid,$timecount).'
';}}}else{echo $_POST['delclients'];$alert=''.sprintf($lang['errsel'],$seluuid,$_POST['delclients'],$counttime).'';}require_once('other/webinterface_list.php');}if(isset($_POST['globalclients'])){if(isset($_POST['delcldgrps'])){$selectbefore=$mysqlcon->query("SELECT * FROM $dbname.user WHERE grpid!='0'");$before=$selectbefore->rowCount();if($mysqlcon->exec("UPDATE $dbname.user SET grpid='0'")&&$selectbefore->rowCount()!=0){$alert=''.sprintf($lang['delcldgrpsc'],$before).'';}elseif($selectbefore->rowCount()==0){$alert=''.sprintf($lang['delcldgrpsc'],$before).'';}else{$alert=''.sprintf($lang['delcldgrpif'],$selectbefore->errorCode()).'';}}else{$selectbefore=$mysqlcon->query("SELECT * FROM $dbname.user");$before=$selectbefore->rowCount();$cleantime=time()- $_POST['cleantime'];if(isset($_POST['delsrvgrp'])){require_once('ts3_lib/TeamSpeak3.php');$ts3_VirtualServer=TeamSpeak3::factory("serverquery://".$ts['user'].":".$ts['pass']."@".$ts['host'].":".$ts['query']."/?server_port=".$ts['voice']);try{$ts3_VirtualServer->selfUpdate(array('client_nickname'=>$queryname));}catch(Exception $e){try{$ts3_VirtualServer->selfUpdate(array('client_nickname'=>$queryname2));}catch(Exception $e){echo $lang['error'],$e->getCode(),': ',$e->getMessage();}}$dbremsgrp=$mysqlcon->query("SELECT cldbid,grpid from $dbname.user where lastseen<'$cleantime'");$dbremsgrp=$dbremsgrp->fetchAll();foreach($dbremsgrp as $remsgrp){if($remsgrp['grpid']!=0){$ts3_VirtualServer->serverGroupClientDel($remsgrp['grpid'],$remsgrp['cldbid']);}}}if($_POST['cleantime']<1){$dbcount=$mysqlcon->exec("DELETE from $dbname.user");}else{$dbcount=$mysqlcon->exec("DELETE from $dbname.user where lastseen<'$cleantime'");}$selectafter=$mysqlcon->query("SELECT * from $dbname.user");$after=$selectafter->rowCount();$countdel=$before - $after;if($countdel==0){$alert=''.sprintf($lang['delclientsif'],$countdel).'';}else{$alert=''.sprintf($lang['delclientssc'],$countdel).'';}}require_once('other/webinterface_list.php');}if(isset($_POST['updatetdbsettings'])){$newconfig=''; - $dbserver = $_POST['dbtype'].':host='.$_POST['dbhost'].';dbname='.$_POST['dbname']; - try { - $mysqlcon = new PDO($dbserver, $_POST['dbuser'], $_POST['dbpass']); - $handle=fopen('./other/dbconfig.php','w'); - if(!fwrite($handle,$newconfig)) - { - $alert = '' . sprintf($lang['widbcfgerr']) . ''; - } else { - exec("php ".__DIR__."/worker.php restart"); - $alert = '' . sprintf($lang['widbcfgsuc']) . ''; - } - fclose($handle); - } catch (PDOException $e) { - $alert = '' . sprintf($lang['widbcfgerr']) . ''; - } - require_once('other/webinterface_list.php'); -} -if (file_exists('install.php') || file_exists('update_0-02.php') || file_exists('update_0-10.php')) { - echo sprintf($lang['isntwidel'], "webinterface.php"); -} else { - if (isset($_GET['logout']) == "true") { - session_destroy(); - header("location:webinterface.php"); - } elseif (isset($_POST['abschicken']) || isset($_SESSION['username'])) { - if (isset($_SESSION['username']) || ($_POST['username'] == $webuser && $_POST['password'] == $webpass)) { - $_SESSION['username'] = $webuser; - set_error_handler(function() { }); - $newversion = file_get_contents('http://ts-n.net/ranksystem/version'); - restore_error_handler(); - if (substr($newversion, 0, 4) != substr($currvers, 0, 4) && $newversion != '') { - $alert = 'Update available!'; - } - require_once('other/webinterface_list.php'); - } else { - $showerrlogin = 1; - require_once('other/webinterface_login.php'); - } - } else { - session_destroy(); - require_once('other/webinterface_login.php'); - } -} -?> \ No newline at end of file +?>';$dbserver=$_POST['dbtype'].':host='.$_POST['dbhost'].';dbname='.$_POST['dbname'];try{$mysqlcon=new PDO($dbserver,$_POST['dbuser'],$_POST['dbpass']);$handle=fopen('./other/dbconfig.php','w');if(!fwrite($handle,$newconfig)){$alert=''.sprintf($lang['widbcfgerr']).'';}else{exec("php ".__DIR__."/worker.php restart");$alert=''.sprintf($lang['widbcfgsuc']).'';}fclose($handle);}catch(PDOException $e){$alert=''.sprintf($lang['widbcfgerr']).'';}require_once('other/webinterface_list.php');}if(file_exists('install.php')||file_exists('update_0-02.php')||file_exists('update_0-10.php')){echo sprintf($lang['isntwidel'],"webinterface.php");}else{if(isset($_GET['logout'])=="true"){session_destroy();header("location:webinterface.php");}elseif(isset($_POST['abschicken'])||isset($_SESSION['username'])){if(isset($_SESSION['username'])||($_POST['username']==$webuser&&$_POST['password']==$webpass)){$_SESSION['username']=$webuser;set_error_handler(function(){});$newversion=file_get_contents('http://ts-n.net/ranksystem/version');restore_error_handler();if(substr($newversion,0,4)!=substr($currvers,0,4)&&$newversion!=''){$alert='Update available!';}require_once('other/webinterface_list.php');}else{$showerrlogin=1;require_once('other/webinterface_login.php');}}else{session_destroy();require_once('other/webinterface_login.php');}}?> \ No newline at end of file diff --git a/worker.php b/worker.php index 5b4be5d..8e3d0d0 100644 --- a/worker.php +++ b/worker.php @@ -1,197 +1 @@ -nul", $result); - if(isset($result[1]) && is_numeric($result[1])) { - return TRUE; - } else { - return FALSE; - } - } else { - if (file_exists($GLOBALS['pidfile'])) { - preg_match_all('!\d+!', file_get_contents($GLOBALS['pidfile']), $pid); - exec("wmic process where 'Name='php.exe' and processid='".$pid[0][0]."'' get processid", $result); - if(isset($result[1]) && is_numeric($result[1])) { - return TRUE; - } else { - return FALSE; - } - } else { - return FALSE; - } - } - } else { - if(!empty($pid)) { - $check_pid = "ps ".$pid; - $result = shell_exec($check_pid); - if (count(preg_split("/\n/", $result)) > 2) { - return TRUE; - } else { - return FALSE; - } - } else { - if (file_exists($GLOBALS['pidfile'])) { - $check_pid = "ps ".file_get_contents($GLOBALS['pidfile']); - $result = shell_exec($check_pid); - if (count(preg_split("/\n/", $result)) > 2) { - return TRUE; - } else { - return FALSE; - } - } else { - return FALSE; - } - } - } -} - -function start() { - if (substr(php_uname(), 0, 7) == "Windows") { - if (checkProcess() == FALSE) { - echo "Starting the Ranksystem Bot."; - $cmd = "php ".dirname(__FILE__)."\jobs\bot.php >> ".$GLOBALS['logfile']; - pclose(popen("start /B ". $cmd, "r")); - exec("wmic process where 'Name='php.exe' and commandline LIKE '%jobs\\\\bot.php%'' get processid", $pid); - if(isset($pid[1]) && is_numeric($pid[1])) { - exec("echo ".$pid[1]." > ".$GLOBALS['pidfile']); - echo " [OK]\n"; - } else { - echo " [Failed]\n"; - } - } else { - echo "The Ranksystem is already running.\n"; - } - $GLOBALS['exec'] = TRUE; - } else { - if (checkProcess() == FALSE) { - echo "Starting the Ranksystem Bot."; - exec("php ".dirname(__FILE__)."/jobs/bot.php >> ".$GLOBALS['logfile']." 2>&1 & echo $! > ".$GLOBALS['pidfile']); - if (checkProcess() == FALSE) { - echo " [Failed]\n"; - } else { - echo " [OK]\n"; - } - } else { - echo "The Ranksystem is already running.\n"; - } - $GLOBALS['exec'] = TRUE; - } -} - -function stop() { - if (substr(php_uname(), 0, 7) == "Windows") { - if (checkProcess() == TRUE) { - echo "Stopping the Ranksystem Bot.\n"; - preg_match_all('!\d+!', file_get_contents($GLOBALS['pidfile']), $pid); - exec("del /F ".$GLOBALS['pidfile']); - echo "Wait until Bot is down"; - $count_check=0; - while (checkProcess($pid[0][0]) == TRUE) { - sleep(1); - echo "."; - $count_check ++; - if($count_check > 5) { - break; - } - } - if (checkProcess($pid[0][0]) == TRUE) { - echo " [Failed]\n"; - } else { - echo " [OK]\n"; - } - } else { - echo "The Ranksystem seems not running.\n"; - } - $GLOBALS['exec'] = TRUE; - } else { - if (checkProcess() == TRUE) { - echo "Stopping the Ranksystem Bot.\n"; - $pid = file_get_contents($GLOBALS['pidfile']); - exec("rm -f ".$GLOBALS['pidfile']); - echo "Wait until Bot is down"; - $count_check=0; - while (checkProcess($pid) == TRUE) { - sleep(1); - echo "."; - $count_check ++; - if($count_check > 5) { - break; - } - } - if (checkProcess($pid) == TRUE) { - echo " [Failed]\n"; - } else { - echo " [OK]\n"; - } - } else { - echo "The Ranksystem seems not running.\n"; - } - $GLOBALS['exec'] = TRUE; - } -} - -function check() { - if (substr(php_uname(), 0, 7) == "Windows") { - if (checkProcess() == FALSE) { - if (file_exists($GLOBALS['pidfile'])) { - exec("del /F ".$GLOBALS['pidfile']); - } - start(); - } - $GLOBALS['exec'] = TRUE; - } else { - if (checkProcess() == FALSE) { - if (file_exists($GLOBALS['pidfile'])) { - exec("rm -f ".$GLOBALS['pidfile']); - } - start(); - } - $GLOBALS['exec'] = TRUE; - } -} - -function restart() { - stop(); - start(); - $GLOBALS['exec'] = TRUE; -} - -function status() { - if (checkProcess() == FALSE) { - echo "The Ranksystem does not seem to run.\n"; - } else { - echo "The Ranksystem seems to be running.\n"; - } - $GLOBALS['exec'] = TRUE; -} - -function help() { - echo " Usage: php worker.php {start|stop|restart|check|status}\n\n", - "\t* start \t\t [start Ranksystem Bot]\n", - "\t* stop \t\t [stop Ranksystem Bot]\n", - "\t* restart \t\t [restart Ranksystem Bot]\n", - "\t* check \t\t [check Ranksystem Bot is running; if not, start it; no output if all is ok]\n", - "\t* status \t\t [output status Ranksystem Bot]\n"; - $GLOBALS['exec'] = TRUE; -} - -if (isset($_SERVER['argv'][1]) == 0) { - help(); -} else { - $cmd = $_SERVER['argv'][1]; - if ($cmd == 'start') start(); - if ($cmd == 'stop') stop(); - if ($cmd == 'restart') restart(); - if ($cmd == 'check') check(); - if ($cmd == 'status') status(); - if ($cmd == 'help') help(); - - if ($GLOBALS['exec'] == FALSE) echo " Error parameter '$cmd' not valid. Type \"php worker.php help\" to get a list of valid parameter.\n"; -} -?> \ No newline at end of file +nul",$result);if(isset($result[1])&&is_numeric($result[1])){return TRUE;}else {return FALSE;}}else {if(file_exists($GLOBALS['pidfile'])){preg_match_all('!\d+!',file_get_contents($GLOBALS['pidfile']),$pid);exec("wmic process where 'Name='php.exe' and processid='".$pid[0][0]."'' get processid",$result);if(isset($result[1])&&is_numeric($result[1])){return TRUE;}else {return FALSE;}}else {return FALSE;}}}else {if(!empty($pid)){$check_pid="ps ".$pid;$result=shell_exec($check_pid);if(count(preg_split("/\n/",$result))>2){return TRUE;}else {return FALSE;}}else {if(file_exists($GLOBALS['pidfile'])){$check_pid="ps ".file_get_contents($GLOBALS['pidfile']);$result=shell_exec($check_pid);if(count(preg_split("/\n/",$result))>2){return TRUE;}else {return FALSE;}}else {return FALSE;}}}}function start(){if(substr(php_uname(),0,7)=="Windows"){if(checkProcess()==FALSE){echo "Starting the Ranksystem Bot.";$cmd="php ".dirname(__FILE__)."\jobs\bot.php >> ".$GLOBALS['logfile'];pclose(popen("start /B ".$cmd,"r"));exec("wmic process where 'Name='php.exe' and commandline LIKE '%jobs\\\\bot.php%'' get processid",$pid);if(isset($pid[1])&&is_numeric($pid[1])){exec("echo ".$pid[1]." > ".$GLOBALS['pidfile']);echo " [OK]\n";}else {echo " [Failed]\n";}}else {echo "The Ranksystem is already running.\n";}$GLOBALS['exec']=TRUE;}else {if(checkProcess()==FALSE){echo "Starting the Ranksystem Bot.";exec("php ".dirname(__FILE__)."/jobs/bot.php >> ".$GLOBALS['logfile']." 2>&1 & echo $! > ".$GLOBALS['pidfile']);if(checkProcess()==FALSE){echo " [Failed]\n";}else {echo " [OK]\n";}}else {echo "The Ranksystem is already running.\n";}$GLOBALS['exec']=TRUE;}}function stop(){if(substr(php_uname(),0,7)=="Windows"){if(checkProcess()==TRUE){echo "Stopping the Ranksystem Bot.\n";preg_match_all('!\d+!',file_get_contents($GLOBALS['pidfile']),$pid);exec("del /F ".$GLOBALS['pidfile']);echo "Wait until Bot is down";$count_check=0;while(checkProcess($pid[0][0])==TRUE){sleep(1);echo ".";$count_check++;if($count_check>10){exec("taskkill /F /PID ".$pid[0][0]);break;}}if(checkProcess($pid[0][0])==TRUE){echo " [Failed]\n";}else {echo " [OK]\n";}}else {echo "The Ranksystem seems not running.\n";}$GLOBALS['exec']=TRUE;}else {if(checkProcess()==TRUE){echo "Stopping the Ranksystem Bot.\n";$pid=file_get_contents($GLOBALS['pidfile']);exec("rm -f ".$GLOBALS['pidfile']);echo "Wait until Bot is down";$count_check=0;while(checkProcess($pid)==TRUE){sleep(1);echo ".";$count_check++;if($count_check>10){exec("kill -9 ".$pid);break;}}if(checkProcess($pid)==TRUE){echo " [Failed]\n";}else {echo " [OK]\n";}}else {echo "The Ranksystem seems not running.\n";}$GLOBALS['exec']=TRUE;}}function check(){if(substr(php_uname(),0,7)=="Windows"){if(checkProcess()==FALSE){if(file_exists($GLOBALS['pidfile'])){exec("del /F ".$GLOBALS['pidfile']);}start();}$GLOBALS['exec']=TRUE;}else {if(checkProcess()==FALSE){if(file_exists($GLOBALS['pidfile'])){exec("rm -f ".$GLOBALS['pidfile']);}start();}$GLOBALS['exec']=TRUE;}}function restart(){stop();start();$GLOBALS['exec']=TRUE;}function status(){if(checkProcess()==FALSE){echo "The Ranksystem does not seem to run.\n";}else {echo "The Ranksystem seems to be running.\n";}$GLOBALS['exec']=TRUE;}function help(){echo " Usage: php worker.php {start|stop|restart|check|status}\n\n","\t* start \t\t [start Ranksystem Bot]\n","\t* stop \t\t [stop Ranksystem Bot]\n","\t* restart \t\t [restart Ranksystem Bot]\n","\t* check \t\t [check Ranksystem Bot is running; if not, start it; no output if all is ok]\n","\t* status \t\t [output status Ranksystem Bot]\n";$GLOBALS['exec']=TRUE;}if(isset($_SERVER['argv'][1])==0){help();}else {$cmd=$_SERVER['argv'][1];if($cmd=='start')start();if($cmd=='stop')stop();if($cmd=='restart')restart();if($cmd=='check')check();if($cmd=='status')status();if($cmd=='help')help();if($GLOBALS['exec']==FALSE)echo " Error parameter '$cmd' not valid. Type \"php worker.php help\" to get a list of valid parameter.\n";}?> \ No newline at end of file