Changeset 3409411
- Timestamp:
- 12/03/2025 11:46:29 AM (4 months ago)
- Location:
- multisite-language-switcher
- Files:
-
- 1590 added
- 10 deleted
- 130 edited
- 1 copied
-
tags/2.10.0 (copied) (copied from multisite-language-switcher/trunk)
-
tags/2.10.0/MultisiteLanguageSwitcher.php (modified) (9 diffs)
-
tags/2.10.0/assets (added)
-
tags/2.10.0/assets/blueprints (added)
-
tags/2.10.0/assets/blueprints/blueprints.json (added)
-
tags/2.10.0/assets/css (added)
-
tags/2.10.0/assets/css-flags (added)
-
tags/2.10.0/assets/css-flags/css (added)
-
tags/2.10.0/assets/css-flags/css/flag-icon.css (added)
-
tags/2.10.0/assets/css-flags/css/flag-icon.min.css (added)
-
tags/2.10.0/assets/css-flags/flags (added)
-
tags/2.10.0/assets/css-flags/flags.php (added)
-
tags/2.10.0/assets/css-flags/flags/1x1 (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ad.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ae.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/af.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ag.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ai.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/al.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/am.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ao.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/aq.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ar.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/as.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/at.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/au.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/aw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ax.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/az.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ba.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bb.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bd.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/be.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bf.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bh.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bi.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bj.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bl.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bo.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bq.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/br.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bs.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bt.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bv.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/by.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/bz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ca.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/cc.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/cd.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/cf.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/cg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ch.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ci.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ck.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/cl.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/cm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/cn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/co.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/cr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/cu.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/cv.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/cw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/cx.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/cy.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/cz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/de.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/dj.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/dk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/dm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/do.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/dz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ec.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ee.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/eg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/eh.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/er.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/es-ca.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/es.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/et.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/eu.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/fi.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/fj.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/fk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/fm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/fo.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/fr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ga.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gb-eng.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gb-nir.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gb-sct.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gb-wls.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gb.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gd.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ge.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gf.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gh.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gi.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gl.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gp.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gq.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gs.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gt.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gu.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/gy.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/hk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/hm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/hn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/hr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ht.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/hu.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/id.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ie.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/il.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/im.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/in.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/io.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/iq.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ir.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/is.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/it.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/je.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/jm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/jo.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/jp.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ke.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/kg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/kh.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ki.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/km.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/kn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/kp.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/kr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/kw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ky.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/kz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/la.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/lb.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/lc.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/li.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/lk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/lr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ls.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/lt.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/lu.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/lv.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ly.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ma.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mc.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/md.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/me.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mf.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mh.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ml.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mo.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mp.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mq.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ms.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mt.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mu.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mv.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mx.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/my.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/mz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/na.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/nc.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ne.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/nf.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ng.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ni.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/nl.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/no.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/np.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/nr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/nu.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/nz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/om.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/pa.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/pe.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/pf.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/pg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ph.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/pk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/pl.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/pm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/pn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/pr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ps.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/pt.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/pw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/py.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/qa.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/re.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ro.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/rs.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ru.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/rw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/sa.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/sb.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/sc.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/sd.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/se.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/sg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/sh.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/si.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/sj.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/sk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/sl.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/sm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/sn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/so.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/sr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ss.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/st.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/sv.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/sx.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/sy.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/sz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/tc.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/td.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/tf.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/tg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/th.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/tj.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/tk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/tl.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/tm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/tn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/to.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/tr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/tt.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/tv.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/tw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/tz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ua.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ug.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/um.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/un.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/us.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/uy.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/uz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/va.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/vc.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ve.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/vg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/vi.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/vn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/vu.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/wf.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ws.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/xk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/ye.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/yt.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/za.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/zm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/1x1/zw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3 (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ad.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ae.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/af.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ag.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ai.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/al.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/am.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ao.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/aq.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ar.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/as.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/at.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/au.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/aw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ax.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/az.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ba.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bb.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bd.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/be.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bf.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bh.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bi.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bj.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bl.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bo.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bq.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/br.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bs.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bt.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bv.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/by.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/bz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ca.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/cc.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/cd.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/cf.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/cg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ch.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ci.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ck.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/cl.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/cm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/cn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/co.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/cr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/cu.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/cv.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/cw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/cx.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/cy.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/cz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/de.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/dj.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/dk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/dm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/do.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/dz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ec.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ee.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/eg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/eh.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/er.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/es-ca.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/es.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/et.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/eu.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/fi.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/fj.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/fk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/fm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/fo.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/fr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ga.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gb-eng.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gb-nir.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gb-sct.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gb-wls.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gb.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gd.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ge.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gf.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gh.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gi.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gl.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gp.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gq.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gs.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gt.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gu.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/gy.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/hk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/hm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/hn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/hr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ht.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/hu.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/id.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ie.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/il.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/im.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/in.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/io.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/iq.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ir.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/is.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/it.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/je.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/jm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/jo.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/jp.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ke.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/kg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/kh.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ki.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/km.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/kn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/kp.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/kr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/kw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ky.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/kz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/la.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/lb.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/lc.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/li.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/lk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/lr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ls.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/lt.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/lu.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/lv.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ly.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ma.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mc.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/md.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/me.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mf.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mh.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ml.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mo.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mp.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mq.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ms.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mt.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mu.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mv.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mx.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/my.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/mz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/na.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/nc.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ne.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/nf.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ng.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ni.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/nl.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/no.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/np.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/nr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/nu.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/nz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/om.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/pa.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/pe.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/pf.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/pg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ph.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/pk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/pl.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/pm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/pn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/pr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ps.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/pt.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/pw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/py.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/qa.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/re.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ro.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/rs.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ru.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/rw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/sa.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/sb.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/sc.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/sd.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/se.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/sg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/sh.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/si.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/sj.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/sk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/sl.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/sm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/sn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/so.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/sr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ss.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/st.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/sv.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/sx.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/sy.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/sz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/tc.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/td.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/tf.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/tg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/th.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/tj.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/tk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/tl.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/tm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/tn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/to.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/tr.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/tt.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/tv.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/tw.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/tz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ua.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ug.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/um.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/un.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/us.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/uy.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/uz.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/va.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/vc.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ve.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/vg.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/vi.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/vn.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/vu.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/wf.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ws.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/xk.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/ye.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/yt.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/za.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/zm.svg (added)
-
tags/2.10.0/assets/css-flags/flags/4x3/zw.svg (added)
-
tags/2.10.0/assets/css/index.php (added)
-
tags/2.10.0/assets/css/msls.css (added)
-
tags/2.10.0/assets/css/msls.less (added)
-
tags/2.10.0/assets/flags (added)
-
tags/2.10.0/assets/flags/ad.png (added)
-
tags/2.10.0/assets/flags/ae.png (added)
-
tags/2.10.0/assets/flags/af.png (added)
-
tags/2.10.0/assets/flags/ag.png (added)
-
tags/2.10.0/assets/flags/ai.png (added)
-
tags/2.10.0/assets/flags/al.png (added)
-
tags/2.10.0/assets/flags/am.png (added)
-
tags/2.10.0/assets/flags/an.png (added)
-
tags/2.10.0/assets/flags/ao.png (added)
-
tags/2.10.0/assets/flags/ar.png (added)
-
tags/2.10.0/assets/flags/arableague.png (added)
-
tags/2.10.0/assets/flags/as.png (added)
-
tags/2.10.0/assets/flags/at.png (added)
-
tags/2.10.0/assets/flags/au.png (added)
-
tags/2.10.0/assets/flags/aw.png (added)
-
tags/2.10.0/assets/flags/ax.png (added)
-
tags/2.10.0/assets/flags/az.png (added)
-
tags/2.10.0/assets/flags/ba.png (added)
-
tags/2.10.0/assets/flags/bb.png (added)
-
tags/2.10.0/assets/flags/bd.png (added)
-
tags/2.10.0/assets/flags/be.png (added)
-
tags/2.10.0/assets/flags/bf.png (added)
-
tags/2.10.0/assets/flags/bg.png (added)
-
tags/2.10.0/assets/flags/bh.png (added)
-
tags/2.10.0/assets/flags/bi.png (added)
-
tags/2.10.0/assets/flags/bj.png (added)
-
tags/2.10.0/assets/flags/bm.png (added)
-
tags/2.10.0/assets/flags/bn.png (added)
-
tags/2.10.0/assets/flags/bo.png (added)
-
tags/2.10.0/assets/flags/br.png (added)
-
tags/2.10.0/assets/flags/bs.png (added)
-
tags/2.10.0/assets/flags/bt.png (added)
-
tags/2.10.0/assets/flags/bv.png (added)
-
tags/2.10.0/assets/flags/bw.png (added)
-
tags/2.10.0/assets/flags/by.png (added)
-
tags/2.10.0/assets/flags/bz.png (added)
-
tags/2.10.0/assets/flags/ca.png (added)
-
tags/2.10.0/assets/flags/catalonia.png (added)
-
tags/2.10.0/assets/flags/cc.png (added)
-
tags/2.10.0/assets/flags/cd.png (added)
-
tags/2.10.0/assets/flags/cf.png (added)
-
tags/2.10.0/assets/flags/cg.png (added)
-
tags/2.10.0/assets/flags/ch.png (added)
-
tags/2.10.0/assets/flags/ci.png (added)
-
tags/2.10.0/assets/flags/ck.png (added)
-
tags/2.10.0/assets/flags/cl.png (added)
-
tags/2.10.0/assets/flags/cm.png (added)
-
tags/2.10.0/assets/flags/cn.png (added)
-
tags/2.10.0/assets/flags/co.png (added)
-
tags/2.10.0/assets/flags/cr.png (added)
-
tags/2.10.0/assets/flags/cs.png (added)
-
tags/2.10.0/assets/flags/cu.png (added)
-
tags/2.10.0/assets/flags/cv.png (added)
-
tags/2.10.0/assets/flags/cx.png (added)
-
tags/2.10.0/assets/flags/cy.png (added)
-
tags/2.10.0/assets/flags/cz.png (added)
-
tags/2.10.0/assets/flags/de.png (added)
-
tags/2.10.0/assets/flags/dj.png (added)
-
tags/2.10.0/assets/flags/dk.png (added)
-
tags/2.10.0/assets/flags/dm.png (added)
-
tags/2.10.0/assets/flags/do.png (added)
-
tags/2.10.0/assets/flags/dz.png (added)
-
tags/2.10.0/assets/flags/ec.png (added)
-
tags/2.10.0/assets/flags/ee.png (added)
-
tags/2.10.0/assets/flags/eg.png (added)
-
tags/2.10.0/assets/flags/eh.png (added)
-
tags/2.10.0/assets/flags/england.png (added)
-
tags/2.10.0/assets/flags/er.png (added)
-
tags/2.10.0/assets/flags/es.png (added)
-
tags/2.10.0/assets/flags/et.png (added)
-
tags/2.10.0/assets/flags/europeanunion.png (added)
-
tags/2.10.0/assets/flags/fam.png (added)
-
tags/2.10.0/assets/flags/fi.png (added)
-
tags/2.10.0/assets/flags/fj.png (added)
-
tags/2.10.0/assets/flags/fk.png (added)
-
tags/2.10.0/assets/flags/flags.php (added)
-
tags/2.10.0/assets/flags/fm.png (added)
-
tags/2.10.0/assets/flags/fo.png (added)
-
tags/2.10.0/assets/flags/fr.png (added)
-
tags/2.10.0/assets/flags/ga.png (added)
-
tags/2.10.0/assets/flags/gb.png (added)
-
tags/2.10.0/assets/flags/gd.png (added)
-
tags/2.10.0/assets/flags/ge.png (added)
-
tags/2.10.0/assets/flags/gf.png (added)
-
tags/2.10.0/assets/flags/gh.png (added)
-
tags/2.10.0/assets/flags/gi.png (added)
-
tags/2.10.0/assets/flags/gl.png (added)
-
tags/2.10.0/assets/flags/gm.png (added)
-
tags/2.10.0/assets/flags/gn.png (added)
-
tags/2.10.0/assets/flags/gp.png (added)
-
tags/2.10.0/assets/flags/gq.png (added)
-
tags/2.10.0/assets/flags/gr.png (added)
-
tags/2.10.0/assets/flags/gs.png (added)
-
tags/2.10.0/assets/flags/gt.png (added)
-
tags/2.10.0/assets/flags/gu.png (added)
-
tags/2.10.0/assets/flags/gw.png (added)
-
tags/2.10.0/assets/flags/gy.png (added)
-
tags/2.10.0/assets/flags/hk.png (added)
-
tags/2.10.0/assets/flags/hm.png (added)
-
tags/2.10.0/assets/flags/hn.png (added)
-
tags/2.10.0/assets/flags/hr.png (added)
-
tags/2.10.0/assets/flags/ht.png (added)
-
tags/2.10.0/assets/flags/hu.png (added)
-
tags/2.10.0/assets/flags/id.png (added)
-
tags/2.10.0/assets/flags/ie.png (added)
-
tags/2.10.0/assets/flags/il.png (added)
-
tags/2.10.0/assets/flags/in.png (added)
-
tags/2.10.0/assets/flags/index.php (added)
-
tags/2.10.0/assets/flags/io.png (added)
-
tags/2.10.0/assets/flags/iq.png (added)
-
tags/2.10.0/assets/flags/ir.png (added)
-
tags/2.10.0/assets/flags/is.png (added)
-
tags/2.10.0/assets/flags/it.png (added)
-
tags/2.10.0/assets/flags/jm.png (added)
-
tags/2.10.0/assets/flags/jo.png (added)
-
tags/2.10.0/assets/flags/jp.png (added)
-
tags/2.10.0/assets/flags/ke.png (added)
-
tags/2.10.0/assets/flags/kg.png (added)
-
tags/2.10.0/assets/flags/kh.png (added)
-
tags/2.10.0/assets/flags/ki.png (added)
-
tags/2.10.0/assets/flags/km.png (added)
-
tags/2.10.0/assets/flags/kn.png (added)
-
tags/2.10.0/assets/flags/kp.png (added)
-
tags/2.10.0/assets/flags/kr.png (added)
-
tags/2.10.0/assets/flags/kw.png (added)
-
tags/2.10.0/assets/flags/ky.png (added)
-
tags/2.10.0/assets/flags/kz.png (added)
-
tags/2.10.0/assets/flags/la.png (added)
-
tags/2.10.0/assets/flags/lb.png (added)
-
tags/2.10.0/assets/flags/lc.png (added)
-
tags/2.10.0/assets/flags/li.png (added)
-
tags/2.10.0/assets/flags/lk.png (added)
-
tags/2.10.0/assets/flags/lr.png (added)
-
tags/2.10.0/assets/flags/ls.png (added)
-
tags/2.10.0/assets/flags/lt.png (added)
-
tags/2.10.0/assets/flags/lu.png (added)
-
tags/2.10.0/assets/flags/lv.png (added)
-
tags/2.10.0/assets/flags/ly.png (added)
-
tags/2.10.0/assets/flags/ma.png (added)
-
tags/2.10.0/assets/flags/mc.png (added)
-
tags/2.10.0/assets/flags/md.png (added)
-
tags/2.10.0/assets/flags/me.png (added)
-
tags/2.10.0/assets/flags/mg.png (added)
-
tags/2.10.0/assets/flags/mh.png (added)
-
tags/2.10.0/assets/flags/mk.png (added)
-
tags/2.10.0/assets/flags/ml.png (added)
-
tags/2.10.0/assets/flags/mm.png (added)
-
tags/2.10.0/assets/flags/mn.png (added)
-
tags/2.10.0/assets/flags/mo.png (added)
-
tags/2.10.0/assets/flags/mp.png (added)
-
tags/2.10.0/assets/flags/mq.png (added)
-
tags/2.10.0/assets/flags/mr.png (added)
-
tags/2.10.0/assets/flags/ms.png (added)
-
tags/2.10.0/assets/flags/mt.png (added)
-
tags/2.10.0/assets/flags/mu.png (added)
-
tags/2.10.0/assets/flags/mv.png (added)
-
tags/2.10.0/assets/flags/mw.png (added)
-
tags/2.10.0/assets/flags/mx.png (added)
-
tags/2.10.0/assets/flags/my.png (added)
-
tags/2.10.0/assets/flags/mz.png (added)
-
tags/2.10.0/assets/flags/na.png (added)
-
tags/2.10.0/assets/flags/nc.png (added)
-
tags/2.10.0/assets/flags/ne.png (added)
-
tags/2.10.0/assets/flags/nf.png (added)
-
tags/2.10.0/assets/flags/ng.png (added)
-
tags/2.10.0/assets/flags/ni.png (added)
-
tags/2.10.0/assets/flags/nl.png (added)
-
tags/2.10.0/assets/flags/no.png (added)
-
tags/2.10.0/assets/flags/np.png (added)
-
tags/2.10.0/assets/flags/nr.png (added)
-
tags/2.10.0/assets/flags/nu.png (added)
-
tags/2.10.0/assets/flags/nz.png (added)
-
tags/2.10.0/assets/flags/om.png (added)
-
tags/2.10.0/assets/flags/pa.png (added)
-
tags/2.10.0/assets/flags/pe.png (added)
-
tags/2.10.0/assets/flags/pf.png (added)
-
tags/2.10.0/assets/flags/pg.png (added)
-
tags/2.10.0/assets/flags/ph.png (added)
-
tags/2.10.0/assets/flags/pk.png (added)
-
tags/2.10.0/assets/flags/pl.png (added)
-
tags/2.10.0/assets/flags/pm.png (added)
-
tags/2.10.0/assets/flags/pn.png (added)
-
tags/2.10.0/assets/flags/pr.png (added)
-
tags/2.10.0/assets/flags/ps.png (added)
-
tags/2.10.0/assets/flags/pt.png (added)
-
tags/2.10.0/assets/flags/pw.png (added)
-
tags/2.10.0/assets/flags/py.png (added)
-
tags/2.10.0/assets/flags/qa.png (added)
-
tags/2.10.0/assets/flags/re.png (added)
-
tags/2.10.0/assets/flags/ro.png (added)
-
tags/2.10.0/assets/flags/rs.png (added)
-
tags/2.10.0/assets/flags/ru.png (added)
-
tags/2.10.0/assets/flags/rw.png (added)
-
tags/2.10.0/assets/flags/sa.png (added)
-
tags/2.10.0/assets/flags/sb.png (added)
-
tags/2.10.0/assets/flags/sc.png (added)
-
tags/2.10.0/assets/flags/scotland.png (added)
-
tags/2.10.0/assets/flags/sd.png (added)
-
tags/2.10.0/assets/flags/se.png (added)
-
tags/2.10.0/assets/flags/sg.png (added)
-
tags/2.10.0/assets/flags/sh.png (added)
-
tags/2.10.0/assets/flags/si.png (added)
-
tags/2.10.0/assets/flags/sj.png (added)
-
tags/2.10.0/assets/flags/sk.png (added)
-
tags/2.10.0/assets/flags/sl.png (added)
-
tags/2.10.0/assets/flags/sm.png (added)
-
tags/2.10.0/assets/flags/sn.png (added)
-
tags/2.10.0/assets/flags/so.png (added)
-
tags/2.10.0/assets/flags/sr.png (added)
-
tags/2.10.0/assets/flags/st.png (added)
-
tags/2.10.0/assets/flags/sv.png (added)
-
tags/2.10.0/assets/flags/sy.png (added)
-
tags/2.10.0/assets/flags/sz.png (added)
-
tags/2.10.0/assets/flags/tc.png (added)
-
tags/2.10.0/assets/flags/td.png (added)
-
tags/2.10.0/assets/flags/tf.png (added)
-
tags/2.10.0/assets/flags/tg.png (added)
-
tags/2.10.0/assets/flags/th.png (added)
-
tags/2.10.0/assets/flags/tj.png (added)
-
tags/2.10.0/assets/flags/tk.png (added)
-
tags/2.10.0/assets/flags/tl.png (added)
-
tags/2.10.0/assets/flags/tm.png (added)
-
tags/2.10.0/assets/flags/tn.png (added)
-
tags/2.10.0/assets/flags/to.png (added)
-
tags/2.10.0/assets/flags/tr.png (added)
-
tags/2.10.0/assets/flags/tt.png (added)
-
tags/2.10.0/assets/flags/tv.png (added)
-
tags/2.10.0/assets/flags/tw.png (added)
-
tags/2.10.0/assets/flags/tz.png (added)
-
tags/2.10.0/assets/flags/ua.png (added)
-
tags/2.10.0/assets/flags/ug.png (added)
-
tags/2.10.0/assets/flags/um.png (added)
-
tags/2.10.0/assets/flags/us.png (added)
-
tags/2.10.0/assets/flags/uy.png (added)
-
tags/2.10.0/assets/flags/uz.png (added)
-
tags/2.10.0/assets/flags/va.png (added)
-
tags/2.10.0/assets/flags/vc.png (added)
-
tags/2.10.0/assets/flags/ve.png (added)
-
tags/2.10.0/assets/flags/vg.png (added)
-
tags/2.10.0/assets/flags/vi.png (added)
-
tags/2.10.0/assets/flags/vn.png (added)
-
tags/2.10.0/assets/flags/vu.png (added)
-
tags/2.10.0/assets/flags/wales.png (added)
-
tags/2.10.0/assets/flags/wf.png (added)
-
tags/2.10.0/assets/flags/ws.png (added)
-
tags/2.10.0/assets/flags/ye.png (added)
-
tags/2.10.0/assets/flags/yt.png (added)
-
tags/2.10.0/assets/flags/za.png (added)
-
tags/2.10.0/assets/flags/zm.png (added)
-
tags/2.10.0/assets/flags/zw.png (added)
-
tags/2.10.0/assets/images (added)
-
tags/2.10.0/assets/images/index.php (added)
-
tags/2.10.0/assets/images/link_add.png (added)
-
tags/2.10.0/assets/images/link_edit.png (added)
-
tags/2.10.0/assets/js (added)
-
tags/2.10.0/assets/js/index.php (added)
-
tags/2.10.0/assets/js/msls-widget-block (added)
-
tags/2.10.0/assets/js/msls-widget-block/block.json (added)
-
tags/2.10.0/assets/js/msls-widget-block/index.asset.php (added)
-
tags/2.10.0/assets/js/msls-widget-block/index.js (added)
-
tags/2.10.0/assets/js/msls-widget-block/render.php (added)
-
tags/2.10.0/assets/js/msls.js (added)
-
tags/2.10.0/composer.json (added)
-
tags/2.10.0/css (deleted)
-
tags/2.10.0/css-flags (deleted)
-
tags/2.10.0/flags (deleted)
-
tags/2.10.0/images (deleted)
-
tags/2.10.0/includes/Component/Icon.php (modified) (3 diffs)
-
tags/2.10.0/includes/Component/Icon/IconLabel.php (modified) (1 diff)
-
tags/2.10.0/includes/Component/Icon/IconPng.php (modified) (1 diff)
-
tags/2.10.0/includes/Component/Icon/IconSvg.php (modified) (1 diff)
-
tags/2.10.0/includes/Component/Input/Select.php (modified) (1 diff)
-
tags/2.10.0/includes/Component/Input/Text.php (modified) (1 diff)
-
tags/2.10.0/includes/Component/Wrapper.php (modified) (1 diff)
-
tags/2.10.0/includes/ContentImport/AttachmentPathFinder.php (modified) (3 diffs)
-
tags/2.10.0/includes/ContentImport/ContentImporter.php (modified) (13 diffs)
-
tags/2.10.0/includes/ContentImport/ImportCoordinates.php (modified) (1 diff)
-
tags/2.10.0/includes/ContentImport/ImportLogger.php (modified) (3 diffs)
-
tags/2.10.0/includes/ContentImport/Importers/BaseImporter.php (modified) (2 diffs)
-
tags/2.10.0/includes/ContentImport/Importers/ImportersBaseFactory.php (modified) (2 diffs)
-
tags/2.10.0/includes/ContentImport/Importers/PostThumbnail/Linking.php (modified) (1 diff)
-
tags/2.10.0/includes/ContentImport/Importers/Terms/ShallowDuplicating.php (modified) (2 diffs)
-
tags/2.10.0/includes/ContentImport/Importers/WithRequestPostAttributes.php (modified) (1 diff)
-
tags/2.10.0/includes/ContentImport/LogWriters/AdminNoticeLogger.php (modified) (2 diffs)
-
tags/2.10.0/includes/ContentImport/MetaBox.php (modified) (3 diffs)
-
tags/2.10.0/includes/ContentImport/Service.php (modified) (2 diffs)
-
tags/2.10.0/includes/Map/HrefLang.php (modified) (3 diffs)
-
tags/2.10.0/includes/MslsAdmin.php (modified) (8 diffs)
-
tags/2.10.0/includes/MslsAdminBar.php (modified) (5 diffs)
-
tags/2.10.0/includes/MslsAdminIcon.php (modified) (1 diff)
-
tags/2.10.0/includes/MslsAdminIconTaxonomy.php (modified) (1 diff)
-
tags/2.10.0/includes/MslsBlock.php (modified) (2 diffs)
-
tags/2.10.0/includes/MslsBlog.php (modified) (9 diffs)
-
tags/2.10.0/includes/MslsBlogCollection.php (modified) (5 diffs)
-
tags/2.10.0/includes/MslsCli.php (modified) (1 diff)
-
tags/2.10.0/includes/MslsContentFilter.php (modified) (2 diffs)
-
tags/2.10.0/includes/MslsContentTypes.php (modified) (1 diff)
-
tags/2.10.0/includes/MslsCustomColumn.php (modified) (2 diffs)
-
tags/2.10.0/includes/MslsCustomFilter.php (modified) (1 diff)
-
tags/2.10.0/includes/MslsLink.php (modified) (2 diffs)
-
tags/2.10.0/includes/MslsMain.php (modified) (6 diffs)
-
tags/2.10.0/includes/MslsMetaBox.php (modified) (6 diffs)
-
tags/2.10.0/includes/MslsOptions.php (modified) (5 diffs)
-
tags/2.10.0/includes/MslsOptionsPost.php (modified) (3 diffs)
-
tags/2.10.0/includes/MslsOptionsQuery.php (modified) (3 diffs)
-
tags/2.10.0/includes/MslsOptionsQueryAuthor.php (modified) (1 diff)
-
tags/2.10.0/includes/MslsOptionsQueryDay.php (modified) (1 diff)
-
tags/2.10.0/includes/MslsOptionsQueryMonth.php (modified) (1 diff)
-
tags/2.10.0/includes/MslsOptionsQueryPostType.php (modified) (1 diff)
-
tags/2.10.0/includes/MslsOptionsQueryYear.php (modified) (2 diffs)
-
tags/2.10.0/includes/MslsOptionsTax.php (modified) (2 diffs)
-
tags/2.10.0/includes/MslsOptionsTaxTerm.php (modified) (3 diffs)
-
tags/2.10.0/includes/MslsOutput.php (modified) (9 diffs)
-
tags/2.10.0/includes/MslsPlugin.php (modified) (3 diffs)
-
tags/2.10.0/includes/MslsPostTag.php (modified) (8 diffs)
-
tags/2.10.0/includes/MslsPostTagClassic.php (modified) (5 diffs)
-
tags/2.10.0/includes/MslsPostType.php (modified) (2 diffs)
-
tags/2.10.0/includes/MslsRegistry.php (modified) (1 diff)
-
tags/2.10.0/includes/MslsRegistryInstance.php (modified) (1 diff)
-
tags/2.10.0/includes/MslsRequest.php (modified) (4 diffs)
-
tags/2.10.0/includes/MslsShortCode.php (modified) (1 diff)
-
tags/2.10.0/includes/MslsSqlCacher.php (modified) (5 diffs)
-
tags/2.10.0/includes/MslsTaxonomy.php (modified) (1 diff)
-
tags/2.10.0/includes/MslsWidget.php (modified) (2 diffs)
-
tags/2.10.0/includes/Query/AbstractQuery.php (modified) (1 diff)
-
tags/2.10.0/includes/Query/TranslatedPostIdQuery.php (modified) (1 diff)
-
tags/2.10.0/includes/deprectated.php (added)
-
tags/2.10.0/includes/index.php (modified) (1 diff)
-
tags/2.10.0/index.php (modified) (1 diff)
-
tags/2.10.0/js (deleted)
-
tags/2.10.0/languages/index.php (modified) (1 diff)
-
tags/2.10.0/vendor/composer/installed.php (modified) (2 diffs)
-
tags/2.10.0/vendor/composer/installers/composer.json (added)
-
tags/2.10.0/vendor/composer/platform_check.php (modified) (1 diff)
-
trunk/MultisiteLanguageSwitcher.php (modified) (9 diffs)
-
trunk/assets (added)
-
trunk/assets/blueprints (added)
-
trunk/assets/blueprints/blueprints.json (added)
-
trunk/assets/css (added)
-
trunk/assets/css-flags (added)
-
trunk/assets/css-flags/css (added)
-
trunk/assets/css-flags/css/flag-icon.css (added)
-
trunk/assets/css-flags/css/flag-icon.min.css (added)
-
trunk/assets/css-flags/flags (added)
-
trunk/assets/css-flags/flags.php (added)
-
trunk/assets/css-flags/flags/1x1 (added)
-
trunk/assets/css-flags/flags/1x1/ad.svg (added)
-
trunk/assets/css-flags/flags/1x1/ae.svg (added)
-
trunk/assets/css-flags/flags/1x1/af.svg (added)
-
trunk/assets/css-flags/flags/1x1/ag.svg (added)
-
trunk/assets/css-flags/flags/1x1/ai.svg (added)
-
trunk/assets/css-flags/flags/1x1/al.svg (added)
-
trunk/assets/css-flags/flags/1x1/am.svg (added)
-
trunk/assets/css-flags/flags/1x1/ao.svg (added)
-
trunk/assets/css-flags/flags/1x1/aq.svg (added)
-
trunk/assets/css-flags/flags/1x1/ar.svg (added)
-
trunk/assets/css-flags/flags/1x1/as.svg (added)
-
trunk/assets/css-flags/flags/1x1/at.svg (added)
-
trunk/assets/css-flags/flags/1x1/au.svg (added)
-
trunk/assets/css-flags/flags/1x1/aw.svg (added)
-
trunk/assets/css-flags/flags/1x1/ax.svg (added)
-
trunk/assets/css-flags/flags/1x1/az.svg (added)
-
trunk/assets/css-flags/flags/1x1/ba.svg (added)
-
trunk/assets/css-flags/flags/1x1/bb.svg (added)
-
trunk/assets/css-flags/flags/1x1/bd.svg (added)
-
trunk/assets/css-flags/flags/1x1/be.svg (added)
-
trunk/assets/css-flags/flags/1x1/bf.svg (added)
-
trunk/assets/css-flags/flags/1x1/bg.svg (added)
-
trunk/assets/css-flags/flags/1x1/bh.svg (added)
-
trunk/assets/css-flags/flags/1x1/bi.svg (added)
-
trunk/assets/css-flags/flags/1x1/bj.svg (added)
-
trunk/assets/css-flags/flags/1x1/bl.svg (added)
-
trunk/assets/css-flags/flags/1x1/bm.svg (added)
-
trunk/assets/css-flags/flags/1x1/bn.svg (added)
-
trunk/assets/css-flags/flags/1x1/bo.svg (added)
-
trunk/assets/css-flags/flags/1x1/bq.svg (added)
-
trunk/assets/css-flags/flags/1x1/br.svg (added)
-
trunk/assets/css-flags/flags/1x1/bs.svg (added)
-
trunk/assets/css-flags/flags/1x1/bt.svg (added)
-
trunk/assets/css-flags/flags/1x1/bv.svg (added)
-
trunk/assets/css-flags/flags/1x1/bw.svg (added)
-
trunk/assets/css-flags/flags/1x1/by.svg (added)
-
trunk/assets/css-flags/flags/1x1/bz.svg (added)
-
trunk/assets/css-flags/flags/1x1/ca.svg (added)
-
trunk/assets/css-flags/flags/1x1/cc.svg (added)
-
trunk/assets/css-flags/flags/1x1/cd.svg (added)
-
trunk/assets/css-flags/flags/1x1/cf.svg (added)
-
trunk/assets/css-flags/flags/1x1/cg.svg (added)
-
trunk/assets/css-flags/flags/1x1/ch.svg (added)
-
trunk/assets/css-flags/flags/1x1/ci.svg (added)
-
trunk/assets/css-flags/flags/1x1/ck.svg (added)
-
trunk/assets/css-flags/flags/1x1/cl.svg (added)
-
trunk/assets/css-flags/flags/1x1/cm.svg (added)
-
trunk/assets/css-flags/flags/1x1/cn.svg (added)
-
trunk/assets/css-flags/flags/1x1/co.svg (added)
-
trunk/assets/css-flags/flags/1x1/cr.svg (added)
-
trunk/assets/css-flags/flags/1x1/cu.svg (added)
-
trunk/assets/css-flags/flags/1x1/cv.svg (added)
-
trunk/assets/css-flags/flags/1x1/cw.svg (added)
-
trunk/assets/css-flags/flags/1x1/cx.svg (added)
-
trunk/assets/css-flags/flags/1x1/cy.svg (added)
-
trunk/assets/css-flags/flags/1x1/cz.svg (added)
-
trunk/assets/css-flags/flags/1x1/de.svg (added)
-
trunk/assets/css-flags/flags/1x1/dj.svg (added)
-
trunk/assets/css-flags/flags/1x1/dk.svg (added)
-
trunk/assets/css-flags/flags/1x1/dm.svg (added)
-
trunk/assets/css-flags/flags/1x1/do.svg (added)
-
trunk/assets/css-flags/flags/1x1/dz.svg (added)
-
trunk/assets/css-flags/flags/1x1/ec.svg (added)
-
trunk/assets/css-flags/flags/1x1/ee.svg (added)
-
trunk/assets/css-flags/flags/1x1/eg.svg (added)
-
trunk/assets/css-flags/flags/1x1/eh.svg (added)
-
trunk/assets/css-flags/flags/1x1/er.svg (added)
-
trunk/assets/css-flags/flags/1x1/es-ca.svg (added)
-
trunk/assets/css-flags/flags/1x1/es.svg (added)
-
trunk/assets/css-flags/flags/1x1/et.svg (added)
-
trunk/assets/css-flags/flags/1x1/eu.svg (added)
-
trunk/assets/css-flags/flags/1x1/fi.svg (added)
-
trunk/assets/css-flags/flags/1x1/fj.svg (added)
-
trunk/assets/css-flags/flags/1x1/fk.svg (added)
-
trunk/assets/css-flags/flags/1x1/fm.svg (added)
-
trunk/assets/css-flags/flags/1x1/fo.svg (added)
-
trunk/assets/css-flags/flags/1x1/fr.svg (added)
-
trunk/assets/css-flags/flags/1x1/ga.svg (added)
-
trunk/assets/css-flags/flags/1x1/gb-eng.svg (added)
-
trunk/assets/css-flags/flags/1x1/gb-nir.svg (added)
-
trunk/assets/css-flags/flags/1x1/gb-sct.svg (added)
-
trunk/assets/css-flags/flags/1x1/gb-wls.svg (added)
-
trunk/assets/css-flags/flags/1x1/gb.svg (added)
-
trunk/assets/css-flags/flags/1x1/gd.svg (added)
-
trunk/assets/css-flags/flags/1x1/ge.svg (added)
-
trunk/assets/css-flags/flags/1x1/gf.svg (added)
-
trunk/assets/css-flags/flags/1x1/gg.svg (added)
-
trunk/assets/css-flags/flags/1x1/gh.svg (added)
-
trunk/assets/css-flags/flags/1x1/gi.svg (added)
-
trunk/assets/css-flags/flags/1x1/gl.svg (added)
-
trunk/assets/css-flags/flags/1x1/gm.svg (added)
-
trunk/assets/css-flags/flags/1x1/gn.svg (added)
-
trunk/assets/css-flags/flags/1x1/gp.svg (added)
-
trunk/assets/css-flags/flags/1x1/gq.svg (added)
-
trunk/assets/css-flags/flags/1x1/gr.svg (added)
-
trunk/assets/css-flags/flags/1x1/gs.svg (added)
-
trunk/assets/css-flags/flags/1x1/gt.svg (added)
-
trunk/assets/css-flags/flags/1x1/gu.svg (added)
-
trunk/assets/css-flags/flags/1x1/gw.svg (added)
-
trunk/assets/css-flags/flags/1x1/gy.svg (added)
-
trunk/assets/css-flags/flags/1x1/hk.svg (added)
-
trunk/assets/css-flags/flags/1x1/hm.svg (added)
-
trunk/assets/css-flags/flags/1x1/hn.svg (added)
-
trunk/assets/css-flags/flags/1x1/hr.svg (added)
-
trunk/assets/css-flags/flags/1x1/ht.svg (added)
-
trunk/assets/css-flags/flags/1x1/hu.svg (added)
-
trunk/assets/css-flags/flags/1x1/id.svg (added)
-
trunk/assets/css-flags/flags/1x1/ie.svg (added)
-
trunk/assets/css-flags/flags/1x1/il.svg (added)
-
trunk/assets/css-flags/flags/1x1/im.svg (added)
-
trunk/assets/css-flags/flags/1x1/in.svg (added)
-
trunk/assets/css-flags/flags/1x1/io.svg (added)
-
trunk/assets/css-flags/flags/1x1/iq.svg (added)
-
trunk/assets/css-flags/flags/1x1/ir.svg (added)
-
trunk/assets/css-flags/flags/1x1/is.svg (added)
-
trunk/assets/css-flags/flags/1x1/it.svg (added)
-
trunk/assets/css-flags/flags/1x1/je.svg (added)
-
trunk/assets/css-flags/flags/1x1/jm.svg (added)
-
trunk/assets/css-flags/flags/1x1/jo.svg (added)
-
trunk/assets/css-flags/flags/1x1/jp.svg (added)
-
trunk/assets/css-flags/flags/1x1/ke.svg (added)
-
trunk/assets/css-flags/flags/1x1/kg.svg (added)
-
trunk/assets/css-flags/flags/1x1/kh.svg (added)
-
trunk/assets/css-flags/flags/1x1/ki.svg (added)
-
trunk/assets/css-flags/flags/1x1/km.svg (added)
-
trunk/assets/css-flags/flags/1x1/kn.svg (added)
-
trunk/assets/css-flags/flags/1x1/kp.svg (added)
-
trunk/assets/css-flags/flags/1x1/kr.svg (added)
-
trunk/assets/css-flags/flags/1x1/kw.svg (added)
-
trunk/assets/css-flags/flags/1x1/ky.svg (added)
-
trunk/assets/css-flags/flags/1x1/kz.svg (added)
-
trunk/assets/css-flags/flags/1x1/la.svg (added)
-
trunk/assets/css-flags/flags/1x1/lb.svg (added)
-
trunk/assets/css-flags/flags/1x1/lc.svg (added)
-
trunk/assets/css-flags/flags/1x1/li.svg (added)
-
trunk/assets/css-flags/flags/1x1/lk.svg (added)
-
trunk/assets/css-flags/flags/1x1/lr.svg (added)
-
trunk/assets/css-flags/flags/1x1/ls.svg (added)
-
trunk/assets/css-flags/flags/1x1/lt.svg (added)
-
trunk/assets/css-flags/flags/1x1/lu.svg (added)
-
trunk/assets/css-flags/flags/1x1/lv.svg (added)
-
trunk/assets/css-flags/flags/1x1/ly.svg (added)
-
trunk/assets/css-flags/flags/1x1/ma.svg (added)
-
trunk/assets/css-flags/flags/1x1/mc.svg (added)
-
trunk/assets/css-flags/flags/1x1/md.svg (added)
-
trunk/assets/css-flags/flags/1x1/me.svg (added)
-
trunk/assets/css-flags/flags/1x1/mf.svg (added)
-
trunk/assets/css-flags/flags/1x1/mg.svg (added)
-
trunk/assets/css-flags/flags/1x1/mh.svg (added)
-
trunk/assets/css-flags/flags/1x1/mk.svg (added)
-
trunk/assets/css-flags/flags/1x1/ml.svg (added)
-
trunk/assets/css-flags/flags/1x1/mm.svg (added)
-
trunk/assets/css-flags/flags/1x1/mn.svg (added)
-
trunk/assets/css-flags/flags/1x1/mo.svg (added)
-
trunk/assets/css-flags/flags/1x1/mp.svg (added)
-
trunk/assets/css-flags/flags/1x1/mq.svg (added)
-
trunk/assets/css-flags/flags/1x1/mr.svg (added)
-
trunk/assets/css-flags/flags/1x1/ms.svg (added)
-
trunk/assets/css-flags/flags/1x1/mt.svg (added)
-
trunk/assets/css-flags/flags/1x1/mu.svg (added)
-
trunk/assets/css-flags/flags/1x1/mv.svg (added)
-
trunk/assets/css-flags/flags/1x1/mw.svg (added)
-
trunk/assets/css-flags/flags/1x1/mx.svg (added)
-
trunk/assets/css-flags/flags/1x1/my.svg (added)
-
trunk/assets/css-flags/flags/1x1/mz.svg (added)
-
trunk/assets/css-flags/flags/1x1/na.svg (added)
-
trunk/assets/css-flags/flags/1x1/nc.svg (added)
-
trunk/assets/css-flags/flags/1x1/ne.svg (added)
-
trunk/assets/css-flags/flags/1x1/nf.svg (added)
-
trunk/assets/css-flags/flags/1x1/ng.svg (added)
-
trunk/assets/css-flags/flags/1x1/ni.svg (added)
-
trunk/assets/css-flags/flags/1x1/nl.svg (added)
-
trunk/assets/css-flags/flags/1x1/no.svg (added)
-
trunk/assets/css-flags/flags/1x1/np.svg (added)
-
trunk/assets/css-flags/flags/1x1/nr.svg (added)
-
trunk/assets/css-flags/flags/1x1/nu.svg (added)
-
trunk/assets/css-flags/flags/1x1/nz.svg (added)
-
trunk/assets/css-flags/flags/1x1/om.svg (added)
-
trunk/assets/css-flags/flags/1x1/pa.svg (added)
-
trunk/assets/css-flags/flags/1x1/pe.svg (added)
-
trunk/assets/css-flags/flags/1x1/pf.svg (added)
-
trunk/assets/css-flags/flags/1x1/pg.svg (added)
-
trunk/assets/css-flags/flags/1x1/ph.svg (added)
-
trunk/assets/css-flags/flags/1x1/pk.svg (added)
-
trunk/assets/css-flags/flags/1x1/pl.svg (added)
-
trunk/assets/css-flags/flags/1x1/pm.svg (added)
-
trunk/assets/css-flags/flags/1x1/pn.svg (added)
-
trunk/assets/css-flags/flags/1x1/pr.svg (added)
-
trunk/assets/css-flags/flags/1x1/ps.svg (added)
-
trunk/assets/css-flags/flags/1x1/pt.svg (added)
-
trunk/assets/css-flags/flags/1x1/pw.svg (added)
-
trunk/assets/css-flags/flags/1x1/py.svg (added)
-
trunk/assets/css-flags/flags/1x1/qa.svg (added)
-
trunk/assets/css-flags/flags/1x1/re.svg (added)
-
trunk/assets/css-flags/flags/1x1/ro.svg (added)
-
trunk/assets/css-flags/flags/1x1/rs.svg (added)
-
trunk/assets/css-flags/flags/1x1/ru.svg (added)
-
trunk/assets/css-flags/flags/1x1/rw.svg (added)
-
trunk/assets/css-flags/flags/1x1/sa.svg (added)
-
trunk/assets/css-flags/flags/1x1/sb.svg (added)
-
trunk/assets/css-flags/flags/1x1/sc.svg (added)
-
trunk/assets/css-flags/flags/1x1/sd.svg (added)
-
trunk/assets/css-flags/flags/1x1/se.svg (added)
-
trunk/assets/css-flags/flags/1x1/sg.svg (added)
-
trunk/assets/css-flags/flags/1x1/sh.svg (added)
-
trunk/assets/css-flags/flags/1x1/si.svg (added)
-
trunk/assets/css-flags/flags/1x1/sj.svg (added)
-
trunk/assets/css-flags/flags/1x1/sk.svg (added)
-
trunk/assets/css-flags/flags/1x1/sl.svg (added)
-
trunk/assets/css-flags/flags/1x1/sm.svg (added)
-
trunk/assets/css-flags/flags/1x1/sn.svg (added)
-
trunk/assets/css-flags/flags/1x1/so.svg (added)
-
trunk/assets/css-flags/flags/1x1/sr.svg (added)
-
trunk/assets/css-flags/flags/1x1/ss.svg (added)
-
trunk/assets/css-flags/flags/1x1/st.svg (added)
-
trunk/assets/css-flags/flags/1x1/sv.svg (added)
-
trunk/assets/css-flags/flags/1x1/sx.svg (added)
-
trunk/assets/css-flags/flags/1x1/sy.svg (added)
-
trunk/assets/css-flags/flags/1x1/sz.svg (added)
-
trunk/assets/css-flags/flags/1x1/tc.svg (added)
-
trunk/assets/css-flags/flags/1x1/td.svg (added)
-
trunk/assets/css-flags/flags/1x1/tf.svg (added)
-
trunk/assets/css-flags/flags/1x1/tg.svg (added)
-
trunk/assets/css-flags/flags/1x1/th.svg (added)
-
trunk/assets/css-flags/flags/1x1/tj.svg (added)
-
trunk/assets/css-flags/flags/1x1/tk.svg (added)
-
trunk/assets/css-flags/flags/1x1/tl.svg (added)
-
trunk/assets/css-flags/flags/1x1/tm.svg (added)
-
trunk/assets/css-flags/flags/1x1/tn.svg (added)
-
trunk/assets/css-flags/flags/1x1/to.svg (added)
-
trunk/assets/css-flags/flags/1x1/tr.svg (added)
-
trunk/assets/css-flags/flags/1x1/tt.svg (added)
-
trunk/assets/css-flags/flags/1x1/tv.svg (added)
-
trunk/assets/css-flags/flags/1x1/tw.svg (added)
-
trunk/assets/css-flags/flags/1x1/tz.svg (added)
-
trunk/assets/css-flags/flags/1x1/ua.svg (added)
-
trunk/assets/css-flags/flags/1x1/ug.svg (added)
-
trunk/assets/css-flags/flags/1x1/um.svg (added)
-
trunk/assets/css-flags/flags/1x1/un.svg (added)
-
trunk/assets/css-flags/flags/1x1/us.svg (added)
-
trunk/assets/css-flags/flags/1x1/uy.svg (added)
-
trunk/assets/css-flags/flags/1x1/uz.svg (added)
-
trunk/assets/css-flags/flags/1x1/va.svg (added)
-
trunk/assets/css-flags/flags/1x1/vc.svg (added)
-
trunk/assets/css-flags/flags/1x1/ve.svg (added)
-
trunk/assets/css-flags/flags/1x1/vg.svg (added)
-
trunk/assets/css-flags/flags/1x1/vi.svg (added)
-
trunk/assets/css-flags/flags/1x1/vn.svg (added)
-
trunk/assets/css-flags/flags/1x1/vu.svg (added)
-
trunk/assets/css-flags/flags/1x1/wf.svg (added)
-
trunk/assets/css-flags/flags/1x1/ws.svg (added)
-
trunk/assets/css-flags/flags/1x1/xk.svg (added)
-
trunk/assets/css-flags/flags/1x1/ye.svg (added)
-
trunk/assets/css-flags/flags/1x1/yt.svg (added)
-
trunk/assets/css-flags/flags/1x1/za.svg (added)
-
trunk/assets/css-flags/flags/1x1/zm.svg (added)
-
trunk/assets/css-flags/flags/1x1/zw.svg (added)
-
trunk/assets/css-flags/flags/4x3 (added)
-
trunk/assets/css-flags/flags/4x3/ad.svg (added)
-
trunk/assets/css-flags/flags/4x3/ae.svg (added)
-
trunk/assets/css-flags/flags/4x3/af.svg (added)
-
trunk/assets/css-flags/flags/4x3/ag.svg (added)
-
trunk/assets/css-flags/flags/4x3/ai.svg (added)
-
trunk/assets/css-flags/flags/4x3/al.svg (added)
-
trunk/assets/css-flags/flags/4x3/am.svg (added)
-
trunk/assets/css-flags/flags/4x3/ao.svg (added)
-
trunk/assets/css-flags/flags/4x3/aq.svg (added)
-
trunk/assets/css-flags/flags/4x3/ar.svg (added)
-
trunk/assets/css-flags/flags/4x3/as.svg (added)
-
trunk/assets/css-flags/flags/4x3/at.svg (added)
-
trunk/assets/css-flags/flags/4x3/au.svg (added)
-
trunk/assets/css-flags/flags/4x3/aw.svg (added)
-
trunk/assets/css-flags/flags/4x3/ax.svg (added)
-
trunk/assets/css-flags/flags/4x3/az.svg (added)
-
trunk/assets/css-flags/flags/4x3/ba.svg (added)
-
trunk/assets/css-flags/flags/4x3/bb.svg (added)
-
trunk/assets/css-flags/flags/4x3/bd.svg (added)
-
trunk/assets/css-flags/flags/4x3/be.svg (added)
-
trunk/assets/css-flags/flags/4x3/bf.svg (added)
-
trunk/assets/css-flags/flags/4x3/bg.svg (added)
-
trunk/assets/css-flags/flags/4x3/bh.svg (added)
-
trunk/assets/css-flags/flags/4x3/bi.svg (added)
-
trunk/assets/css-flags/flags/4x3/bj.svg (added)
-
trunk/assets/css-flags/flags/4x3/bl.svg (added)
-
trunk/assets/css-flags/flags/4x3/bm.svg (added)
-
trunk/assets/css-flags/flags/4x3/bn.svg (added)
-
trunk/assets/css-flags/flags/4x3/bo.svg (added)
-
trunk/assets/css-flags/flags/4x3/bq.svg (added)
-
trunk/assets/css-flags/flags/4x3/br.svg (added)
-
trunk/assets/css-flags/flags/4x3/bs.svg (added)
-
trunk/assets/css-flags/flags/4x3/bt.svg (added)
-
trunk/assets/css-flags/flags/4x3/bv.svg (added)
-
trunk/assets/css-flags/flags/4x3/bw.svg (added)
-
trunk/assets/css-flags/flags/4x3/by.svg (added)
-
trunk/assets/css-flags/flags/4x3/bz.svg (added)
-
trunk/assets/css-flags/flags/4x3/ca.svg (added)
-
trunk/assets/css-flags/flags/4x3/cc.svg (added)
-
trunk/assets/css-flags/flags/4x3/cd.svg (added)
-
trunk/assets/css-flags/flags/4x3/cf.svg (added)
-
trunk/assets/css-flags/flags/4x3/cg.svg (added)
-
trunk/assets/css-flags/flags/4x3/ch.svg (added)
-
trunk/assets/css-flags/flags/4x3/ci.svg (added)
-
trunk/assets/css-flags/flags/4x3/ck.svg (added)
-
trunk/assets/css-flags/flags/4x3/cl.svg (added)
-
trunk/assets/css-flags/flags/4x3/cm.svg (added)
-
trunk/assets/css-flags/flags/4x3/cn.svg (added)
-
trunk/assets/css-flags/flags/4x3/co.svg (added)
-
trunk/assets/css-flags/flags/4x3/cr.svg (added)
-
trunk/assets/css-flags/flags/4x3/cu.svg (added)
-
trunk/assets/css-flags/flags/4x3/cv.svg (added)
-
trunk/assets/css-flags/flags/4x3/cw.svg (added)
-
trunk/assets/css-flags/flags/4x3/cx.svg (added)
-
trunk/assets/css-flags/flags/4x3/cy.svg (added)
-
trunk/assets/css-flags/flags/4x3/cz.svg (added)
-
trunk/assets/css-flags/flags/4x3/de.svg (added)
-
trunk/assets/css-flags/flags/4x3/dj.svg (added)
-
trunk/assets/css-flags/flags/4x3/dk.svg (added)
-
trunk/assets/css-flags/flags/4x3/dm.svg (added)
-
trunk/assets/css-flags/flags/4x3/do.svg (added)
-
trunk/assets/css-flags/flags/4x3/dz.svg (added)
-
trunk/assets/css-flags/flags/4x3/ec.svg (added)
-
trunk/assets/css-flags/flags/4x3/ee.svg (added)
-
trunk/assets/css-flags/flags/4x3/eg.svg (added)
-
trunk/assets/css-flags/flags/4x3/eh.svg (added)
-
trunk/assets/css-flags/flags/4x3/er.svg (added)
-
trunk/assets/css-flags/flags/4x3/es-ca.svg (added)
-
trunk/assets/css-flags/flags/4x3/es.svg (added)
-
trunk/assets/css-flags/flags/4x3/et.svg (added)
-
trunk/assets/css-flags/flags/4x3/eu.svg (added)
-
trunk/assets/css-flags/flags/4x3/fi.svg (added)
-
trunk/assets/css-flags/flags/4x3/fj.svg (added)
-
trunk/assets/css-flags/flags/4x3/fk.svg (added)
-
trunk/assets/css-flags/flags/4x3/fm.svg (added)
-
trunk/assets/css-flags/flags/4x3/fo.svg (added)
-
trunk/assets/css-flags/flags/4x3/fr.svg (added)
-
trunk/assets/css-flags/flags/4x3/ga.svg (added)
-
trunk/assets/css-flags/flags/4x3/gb-eng.svg (added)
-
trunk/assets/css-flags/flags/4x3/gb-nir.svg (added)
-
trunk/assets/css-flags/flags/4x3/gb-sct.svg (added)
-
trunk/assets/css-flags/flags/4x3/gb-wls.svg (added)
-
trunk/assets/css-flags/flags/4x3/gb.svg (added)
-
trunk/assets/css-flags/flags/4x3/gd.svg (added)
-
trunk/assets/css-flags/flags/4x3/ge.svg (added)
-
trunk/assets/css-flags/flags/4x3/gf.svg (added)
-
trunk/assets/css-flags/flags/4x3/gg.svg (added)
-
trunk/assets/css-flags/flags/4x3/gh.svg (added)
-
trunk/assets/css-flags/flags/4x3/gi.svg (added)
-
trunk/assets/css-flags/flags/4x3/gl.svg (added)
-
trunk/assets/css-flags/flags/4x3/gm.svg (added)
-
trunk/assets/css-flags/flags/4x3/gn.svg (added)
-
trunk/assets/css-flags/flags/4x3/gp.svg (added)
-
trunk/assets/css-flags/flags/4x3/gq.svg (added)
-
trunk/assets/css-flags/flags/4x3/gr.svg (added)
-
trunk/assets/css-flags/flags/4x3/gs.svg (added)
-
trunk/assets/css-flags/flags/4x3/gt.svg (added)
-
trunk/assets/css-flags/flags/4x3/gu.svg (added)
-
trunk/assets/css-flags/flags/4x3/gw.svg (added)
-
trunk/assets/css-flags/flags/4x3/gy.svg (added)
-
trunk/assets/css-flags/flags/4x3/hk.svg (added)
-
trunk/assets/css-flags/flags/4x3/hm.svg (added)
-
trunk/assets/css-flags/flags/4x3/hn.svg (added)
-
trunk/assets/css-flags/flags/4x3/hr.svg (added)
-
trunk/assets/css-flags/flags/4x3/ht.svg (added)
-
trunk/assets/css-flags/flags/4x3/hu.svg (added)
-
trunk/assets/css-flags/flags/4x3/id.svg (added)
-
trunk/assets/css-flags/flags/4x3/ie.svg (added)
-
trunk/assets/css-flags/flags/4x3/il.svg (added)
-
trunk/assets/css-flags/flags/4x3/im.svg (added)
-
trunk/assets/css-flags/flags/4x3/in.svg (added)
-
trunk/assets/css-flags/flags/4x3/io.svg (added)
-
trunk/assets/css-flags/flags/4x3/iq.svg (added)
-
trunk/assets/css-flags/flags/4x3/ir.svg (added)
-
trunk/assets/css-flags/flags/4x3/is.svg (added)
-
trunk/assets/css-flags/flags/4x3/it.svg (added)
-
trunk/assets/css-flags/flags/4x3/je.svg (added)
-
trunk/assets/css-flags/flags/4x3/jm.svg (added)
-
trunk/assets/css-flags/flags/4x3/jo.svg (added)
-
trunk/assets/css-flags/flags/4x3/jp.svg (added)
-
trunk/assets/css-flags/flags/4x3/ke.svg (added)
-
trunk/assets/css-flags/flags/4x3/kg.svg (added)
-
trunk/assets/css-flags/flags/4x3/kh.svg (added)
-
trunk/assets/css-flags/flags/4x3/ki.svg (added)
-
trunk/assets/css-flags/flags/4x3/km.svg (added)
-
trunk/assets/css-flags/flags/4x3/kn.svg (added)
-
trunk/assets/css-flags/flags/4x3/kp.svg (added)
-
trunk/assets/css-flags/flags/4x3/kr.svg (added)
-
trunk/assets/css-flags/flags/4x3/kw.svg (added)
-
trunk/assets/css-flags/flags/4x3/ky.svg (added)
-
trunk/assets/css-flags/flags/4x3/kz.svg (added)
-
trunk/assets/css-flags/flags/4x3/la.svg (added)
-
trunk/assets/css-flags/flags/4x3/lb.svg (added)
-
trunk/assets/css-flags/flags/4x3/lc.svg (added)
-
trunk/assets/css-flags/flags/4x3/li.svg (added)
-
trunk/assets/css-flags/flags/4x3/lk.svg (added)
-
trunk/assets/css-flags/flags/4x3/lr.svg (added)
-
trunk/assets/css-flags/flags/4x3/ls.svg (added)
-
trunk/assets/css-flags/flags/4x3/lt.svg (added)
-
trunk/assets/css-flags/flags/4x3/lu.svg (added)
-
trunk/assets/css-flags/flags/4x3/lv.svg (added)
-
trunk/assets/css-flags/flags/4x3/ly.svg (added)
-
trunk/assets/css-flags/flags/4x3/ma.svg (added)
-
trunk/assets/css-flags/flags/4x3/mc.svg (added)
-
trunk/assets/css-flags/flags/4x3/md.svg (added)
-
trunk/assets/css-flags/flags/4x3/me.svg (added)
-
trunk/assets/css-flags/flags/4x3/mf.svg (added)
-
trunk/assets/css-flags/flags/4x3/mg.svg (added)
-
trunk/assets/css-flags/flags/4x3/mh.svg (added)
-
trunk/assets/css-flags/flags/4x3/mk.svg (added)
-
trunk/assets/css-flags/flags/4x3/ml.svg (added)
-
trunk/assets/css-flags/flags/4x3/mm.svg (added)
-
trunk/assets/css-flags/flags/4x3/mn.svg (added)
-
trunk/assets/css-flags/flags/4x3/mo.svg (added)
-
trunk/assets/css-flags/flags/4x3/mp.svg (added)
-
trunk/assets/css-flags/flags/4x3/mq.svg (added)
-
trunk/assets/css-flags/flags/4x3/mr.svg (added)
-
trunk/assets/css-flags/flags/4x3/ms.svg (added)
-
trunk/assets/css-flags/flags/4x3/mt.svg (added)
-
trunk/assets/css-flags/flags/4x3/mu.svg (added)
-
trunk/assets/css-flags/flags/4x3/mv.svg (added)
-
trunk/assets/css-flags/flags/4x3/mw.svg (added)
-
trunk/assets/css-flags/flags/4x3/mx.svg (added)
-
trunk/assets/css-flags/flags/4x3/my.svg (added)
-
trunk/assets/css-flags/flags/4x3/mz.svg (added)
-
trunk/assets/css-flags/flags/4x3/na.svg (added)
-
trunk/assets/css-flags/flags/4x3/nc.svg (added)
-
trunk/assets/css-flags/flags/4x3/ne.svg (added)
-
trunk/assets/css-flags/flags/4x3/nf.svg (added)
-
trunk/assets/css-flags/flags/4x3/ng.svg (added)
-
trunk/assets/css-flags/flags/4x3/ni.svg (added)
-
trunk/assets/css-flags/flags/4x3/nl.svg (added)
-
trunk/assets/css-flags/flags/4x3/no.svg (added)
-
trunk/assets/css-flags/flags/4x3/np.svg (added)
-
trunk/assets/css-flags/flags/4x3/nr.svg (added)
-
trunk/assets/css-flags/flags/4x3/nu.svg (added)
-
trunk/assets/css-flags/flags/4x3/nz.svg (added)
-
trunk/assets/css-flags/flags/4x3/om.svg (added)
-
trunk/assets/css-flags/flags/4x3/pa.svg (added)
-
trunk/assets/css-flags/flags/4x3/pe.svg (added)
-
trunk/assets/css-flags/flags/4x3/pf.svg (added)
-
trunk/assets/css-flags/flags/4x3/pg.svg (added)
-
trunk/assets/css-flags/flags/4x3/ph.svg (added)
-
trunk/assets/css-flags/flags/4x3/pk.svg (added)
-
trunk/assets/css-flags/flags/4x3/pl.svg (added)
-
trunk/assets/css-flags/flags/4x3/pm.svg (added)
-
trunk/assets/css-flags/flags/4x3/pn.svg (added)
-
trunk/assets/css-flags/flags/4x3/pr.svg (added)
-
trunk/assets/css-flags/flags/4x3/ps.svg (added)
-
trunk/assets/css-flags/flags/4x3/pt.svg (added)
-
trunk/assets/css-flags/flags/4x3/pw.svg (added)
-
trunk/assets/css-flags/flags/4x3/py.svg (added)
-
trunk/assets/css-flags/flags/4x3/qa.svg (added)
-
trunk/assets/css-flags/flags/4x3/re.svg (added)
-
trunk/assets/css-flags/flags/4x3/ro.svg (added)
-
trunk/assets/css-flags/flags/4x3/rs.svg (added)
-
trunk/assets/css-flags/flags/4x3/ru.svg (added)
-
trunk/assets/css-flags/flags/4x3/rw.svg (added)
-
trunk/assets/css-flags/flags/4x3/sa.svg (added)
-
trunk/assets/css-flags/flags/4x3/sb.svg (added)
-
trunk/assets/css-flags/flags/4x3/sc.svg (added)
-
trunk/assets/css-flags/flags/4x3/sd.svg (added)
-
trunk/assets/css-flags/flags/4x3/se.svg (added)
-
trunk/assets/css-flags/flags/4x3/sg.svg (added)
-
trunk/assets/css-flags/flags/4x3/sh.svg (added)
-
trunk/assets/css-flags/flags/4x3/si.svg (added)
-
trunk/assets/css-flags/flags/4x3/sj.svg (added)
-
trunk/assets/css-flags/flags/4x3/sk.svg (added)
-
trunk/assets/css-flags/flags/4x3/sl.svg (added)
-
trunk/assets/css-flags/flags/4x3/sm.svg (added)
-
trunk/assets/css-flags/flags/4x3/sn.svg (added)
-
trunk/assets/css-flags/flags/4x3/so.svg (added)
-
trunk/assets/css-flags/flags/4x3/sr.svg (added)
-
trunk/assets/css-flags/flags/4x3/ss.svg (added)
-
trunk/assets/css-flags/flags/4x3/st.svg (added)
-
trunk/assets/css-flags/flags/4x3/sv.svg (added)
-
trunk/assets/css-flags/flags/4x3/sx.svg (added)
-
trunk/assets/css-flags/flags/4x3/sy.svg (added)
-
trunk/assets/css-flags/flags/4x3/sz.svg (added)
-
trunk/assets/css-flags/flags/4x3/tc.svg (added)
-
trunk/assets/css-flags/flags/4x3/td.svg (added)
-
trunk/assets/css-flags/flags/4x3/tf.svg (added)
-
trunk/assets/css-flags/flags/4x3/tg.svg (added)
-
trunk/assets/css-flags/flags/4x3/th.svg (added)
-
trunk/assets/css-flags/flags/4x3/tj.svg (added)
-
trunk/assets/css-flags/flags/4x3/tk.svg (added)
-
trunk/assets/css-flags/flags/4x3/tl.svg (added)
-
trunk/assets/css-flags/flags/4x3/tm.svg (added)
-
trunk/assets/css-flags/flags/4x3/tn.svg (added)
-
trunk/assets/css-flags/flags/4x3/to.svg (added)
-
trunk/assets/css-flags/flags/4x3/tr.svg (added)
-
trunk/assets/css-flags/flags/4x3/tt.svg (added)
-
trunk/assets/css-flags/flags/4x3/tv.svg (added)
-
trunk/assets/css-flags/flags/4x3/tw.svg (added)
-
trunk/assets/css-flags/flags/4x3/tz.svg (added)
-
trunk/assets/css-flags/flags/4x3/ua.svg (added)
-
trunk/assets/css-flags/flags/4x3/ug.svg (added)
-
trunk/assets/css-flags/flags/4x3/um.svg (added)
-
trunk/assets/css-flags/flags/4x3/un.svg (added)
-
trunk/assets/css-flags/flags/4x3/us.svg (added)
-
trunk/assets/css-flags/flags/4x3/uy.svg (added)
-
trunk/assets/css-flags/flags/4x3/uz.svg (added)
-
trunk/assets/css-flags/flags/4x3/va.svg (added)
-
trunk/assets/css-flags/flags/4x3/vc.svg (added)
-
trunk/assets/css-flags/flags/4x3/ve.svg (added)
-
trunk/assets/css-flags/flags/4x3/vg.svg (added)
-
trunk/assets/css-flags/flags/4x3/vi.svg (added)
-
trunk/assets/css-flags/flags/4x3/vn.svg (added)
-
trunk/assets/css-flags/flags/4x3/vu.svg (added)
-
trunk/assets/css-flags/flags/4x3/wf.svg (added)
-
trunk/assets/css-flags/flags/4x3/ws.svg (added)
-
trunk/assets/css-flags/flags/4x3/xk.svg (added)
-
trunk/assets/css-flags/flags/4x3/ye.svg (added)
-
trunk/assets/css-flags/flags/4x3/yt.svg (added)
-
trunk/assets/css-flags/flags/4x3/za.svg (added)
-
trunk/assets/css-flags/flags/4x3/zm.svg (added)
-
trunk/assets/css-flags/flags/4x3/zw.svg (added)
-
trunk/assets/css/index.php (added)
-
trunk/assets/css/msls.css (added)
-
trunk/assets/css/msls.less (added)
-
trunk/assets/flags (added)
-
trunk/assets/flags/ad.png (added)
-
trunk/assets/flags/ae.png (added)
-
trunk/assets/flags/af.png (added)
-
trunk/assets/flags/ag.png (added)
-
trunk/assets/flags/ai.png (added)
-
trunk/assets/flags/al.png (added)
-
trunk/assets/flags/am.png (added)
-
trunk/assets/flags/an.png (added)
-
trunk/assets/flags/ao.png (added)
-
trunk/assets/flags/ar.png (added)
-
trunk/assets/flags/arableague.png (added)
-
trunk/assets/flags/as.png (added)
-
trunk/assets/flags/at.png (added)
-
trunk/assets/flags/au.png (added)
-
trunk/assets/flags/aw.png (added)
-
trunk/assets/flags/ax.png (added)
-
trunk/assets/flags/az.png (added)
-
trunk/assets/flags/ba.png (added)
-
trunk/assets/flags/bb.png (added)
-
trunk/assets/flags/bd.png (added)
-
trunk/assets/flags/be.png (added)
-
trunk/assets/flags/bf.png (added)
-
trunk/assets/flags/bg.png (added)
-
trunk/assets/flags/bh.png (added)
-
trunk/assets/flags/bi.png (added)
-
trunk/assets/flags/bj.png (added)
-
trunk/assets/flags/bm.png (added)
-
trunk/assets/flags/bn.png (added)
-
trunk/assets/flags/bo.png (added)
-
trunk/assets/flags/br.png (added)
-
trunk/assets/flags/bs.png (added)
-
trunk/assets/flags/bt.png (added)
-
trunk/assets/flags/bv.png (added)
-
trunk/assets/flags/bw.png (added)
-
trunk/assets/flags/by.png (added)
-
trunk/assets/flags/bz.png (added)
-
trunk/assets/flags/ca.png (added)
-
trunk/assets/flags/catalonia.png (added)
-
trunk/assets/flags/cc.png (added)
-
trunk/assets/flags/cd.png (added)
-
trunk/assets/flags/cf.png (added)
-
trunk/assets/flags/cg.png (added)
-
trunk/assets/flags/ch.png (added)
-
trunk/assets/flags/ci.png (added)
-
trunk/assets/flags/ck.png (added)
-
trunk/assets/flags/cl.png (added)
-
trunk/assets/flags/cm.png (added)
-
trunk/assets/flags/cn.png (added)
-
trunk/assets/flags/co.png (added)
-
trunk/assets/flags/cr.png (added)
-
trunk/assets/flags/cs.png (added)
-
trunk/assets/flags/cu.png (added)
-
trunk/assets/flags/cv.png (added)
-
trunk/assets/flags/cx.png (added)
-
trunk/assets/flags/cy.png (added)
-
trunk/assets/flags/cz.png (added)
-
trunk/assets/flags/de.png (added)
-
trunk/assets/flags/dj.png (added)
-
trunk/assets/flags/dk.png (added)
-
trunk/assets/flags/dm.png (added)
-
trunk/assets/flags/do.png (added)
-
trunk/assets/flags/dz.png (added)
-
trunk/assets/flags/ec.png (added)
-
trunk/assets/flags/ee.png (added)
-
trunk/assets/flags/eg.png (added)
-
trunk/assets/flags/eh.png (added)
-
trunk/assets/flags/england.png (added)
-
trunk/assets/flags/er.png (added)
-
trunk/assets/flags/es.png (added)
-
trunk/assets/flags/et.png (added)
-
trunk/assets/flags/europeanunion.png (added)
-
trunk/assets/flags/fam.png (added)
-
trunk/assets/flags/fi.png (added)
-
trunk/assets/flags/fj.png (added)
-
trunk/assets/flags/fk.png (added)
-
trunk/assets/flags/flags.php (added)
-
trunk/assets/flags/fm.png (added)
-
trunk/assets/flags/fo.png (added)
-
trunk/assets/flags/fr.png (added)
-
trunk/assets/flags/ga.png (added)
-
trunk/assets/flags/gb.png (added)
-
trunk/assets/flags/gd.png (added)
-
trunk/assets/flags/ge.png (added)
-
trunk/assets/flags/gf.png (added)
-
trunk/assets/flags/gh.png (added)
-
trunk/assets/flags/gi.png (added)
-
trunk/assets/flags/gl.png (added)
-
trunk/assets/flags/gm.png (added)
-
trunk/assets/flags/gn.png (added)
-
trunk/assets/flags/gp.png (added)
-
trunk/assets/flags/gq.png (added)
-
trunk/assets/flags/gr.png (added)
-
trunk/assets/flags/gs.png (added)
-
trunk/assets/flags/gt.png (added)
-
trunk/assets/flags/gu.png (added)
-
trunk/assets/flags/gw.png (added)
-
trunk/assets/flags/gy.png (added)
-
trunk/assets/flags/hk.png (added)
-
trunk/assets/flags/hm.png (added)
-
trunk/assets/flags/hn.png (added)
-
trunk/assets/flags/hr.png (added)
-
trunk/assets/flags/ht.png (added)
-
trunk/assets/flags/hu.png (added)
-
trunk/assets/flags/id.png (added)
-
trunk/assets/flags/ie.png (added)
-
trunk/assets/flags/il.png (added)
-
trunk/assets/flags/in.png (added)
-
trunk/assets/flags/index.php (added)
-
trunk/assets/flags/io.png (added)
-
trunk/assets/flags/iq.png (added)
-
trunk/assets/flags/ir.png (added)
-
trunk/assets/flags/is.png (added)
-
trunk/assets/flags/it.png (added)
-
trunk/assets/flags/jm.png (added)
-
trunk/assets/flags/jo.png (added)
-
trunk/assets/flags/jp.png (added)
-
trunk/assets/flags/ke.png (added)
-
trunk/assets/flags/kg.png (added)
-
trunk/assets/flags/kh.png (added)
-
trunk/assets/flags/ki.png (added)
-
trunk/assets/flags/km.png (added)
-
trunk/assets/flags/kn.png (added)
-
trunk/assets/flags/kp.png (added)
-
trunk/assets/flags/kr.png (added)
-
trunk/assets/flags/kw.png (added)
-
trunk/assets/flags/ky.png (added)
-
trunk/assets/flags/kz.png (added)
-
trunk/assets/flags/la.png (added)
-
trunk/assets/flags/lb.png (added)
-
trunk/assets/flags/lc.png (added)
-
trunk/assets/flags/li.png (added)
-
trunk/assets/flags/lk.png (added)
-
trunk/assets/flags/lr.png (added)
-
trunk/assets/flags/ls.png (added)
-
trunk/assets/flags/lt.png (added)
-
trunk/assets/flags/lu.png (added)
-
trunk/assets/flags/lv.png (added)
-
trunk/assets/flags/ly.png (added)
-
trunk/assets/flags/ma.png (added)
-
trunk/assets/flags/mc.png (added)
-
trunk/assets/flags/md.png (added)
-
trunk/assets/flags/me.png (added)
-
trunk/assets/flags/mg.png (added)
-
trunk/assets/flags/mh.png (added)
-
trunk/assets/flags/mk.png (added)
-
trunk/assets/flags/ml.png (added)
-
trunk/assets/flags/mm.png (added)
-
trunk/assets/flags/mn.png (added)
-
trunk/assets/flags/mo.png (added)
-
trunk/assets/flags/mp.png (added)
-
trunk/assets/flags/mq.png (added)
-
trunk/assets/flags/mr.png (added)
-
trunk/assets/flags/ms.png (added)
-
trunk/assets/flags/mt.png (added)
-
trunk/assets/flags/mu.png (added)
-
trunk/assets/flags/mv.png (added)
-
trunk/assets/flags/mw.png (added)
-
trunk/assets/flags/mx.png (added)
-
trunk/assets/flags/my.png (added)
-
trunk/assets/flags/mz.png (added)
-
trunk/assets/flags/na.png (added)
-
trunk/assets/flags/nc.png (added)
-
trunk/assets/flags/ne.png (added)
-
trunk/assets/flags/nf.png (added)
-
trunk/assets/flags/ng.png (added)
-
trunk/assets/flags/ni.png (added)
-
trunk/assets/flags/nl.png (added)
-
trunk/assets/flags/no.png (added)
-
trunk/assets/flags/np.png (added)
-
trunk/assets/flags/nr.png (added)
-
trunk/assets/flags/nu.png (added)
-
trunk/assets/flags/nz.png (added)
-
trunk/assets/flags/om.png (added)
-
trunk/assets/flags/pa.png (added)
-
trunk/assets/flags/pe.png (added)
-
trunk/assets/flags/pf.png (added)
-
trunk/assets/flags/pg.png (added)
-
trunk/assets/flags/ph.png (added)
-
trunk/assets/flags/pk.png (added)
-
trunk/assets/flags/pl.png (added)
-
trunk/assets/flags/pm.png (added)
-
trunk/assets/flags/pn.png (added)
-
trunk/assets/flags/pr.png (added)
-
trunk/assets/flags/ps.png (added)
-
trunk/assets/flags/pt.png (added)
-
trunk/assets/flags/pw.png (added)
-
trunk/assets/flags/py.png (added)
-
trunk/assets/flags/qa.png (added)
-
trunk/assets/flags/re.png (added)
-
trunk/assets/flags/ro.png (added)
-
trunk/assets/flags/rs.png (added)
-
trunk/assets/flags/ru.png (added)
-
trunk/assets/flags/rw.png (added)
-
trunk/assets/flags/sa.png (added)
-
trunk/assets/flags/sb.png (added)
-
trunk/assets/flags/sc.png (added)
-
trunk/assets/flags/scotland.png (added)
-
trunk/assets/flags/sd.png (added)
-
trunk/assets/flags/se.png (added)
-
trunk/assets/flags/sg.png (added)
-
trunk/assets/flags/sh.png (added)
-
trunk/assets/flags/si.png (added)
-
trunk/assets/flags/sj.png (added)
-
trunk/assets/flags/sk.png (added)
-
trunk/assets/flags/sl.png (added)
-
trunk/assets/flags/sm.png (added)
-
trunk/assets/flags/sn.png (added)
-
trunk/assets/flags/so.png (added)
-
trunk/assets/flags/sr.png (added)
-
trunk/assets/flags/st.png (added)
-
trunk/assets/flags/sv.png (added)
-
trunk/assets/flags/sy.png (added)
-
trunk/assets/flags/sz.png (added)
-
trunk/assets/flags/tc.png (added)
-
trunk/assets/flags/td.png (added)
-
trunk/assets/flags/tf.png (added)
-
trunk/assets/flags/tg.png (added)
-
trunk/assets/flags/th.png (added)
-
trunk/assets/flags/tj.png (added)
-
trunk/assets/flags/tk.png (added)
-
trunk/assets/flags/tl.png (added)
-
trunk/assets/flags/tm.png (added)
-
trunk/assets/flags/tn.png (added)
-
trunk/assets/flags/to.png (added)
-
trunk/assets/flags/tr.png (added)
-
trunk/assets/flags/tt.png (added)
-
trunk/assets/flags/tv.png (added)
-
trunk/assets/flags/tw.png (added)
-
trunk/assets/flags/tz.png (added)
-
trunk/assets/flags/ua.png (added)
-
trunk/assets/flags/ug.png (added)
-
trunk/assets/flags/um.png (added)
-
trunk/assets/flags/us.png (added)
-
trunk/assets/flags/uy.png (added)
-
trunk/assets/flags/uz.png (added)
-
trunk/assets/flags/va.png (added)
-
trunk/assets/flags/vc.png (added)
-
trunk/assets/flags/ve.png (added)
-
trunk/assets/flags/vg.png (added)
-
trunk/assets/flags/vi.png (added)
-
trunk/assets/flags/vn.png (added)
-
trunk/assets/flags/vu.png (added)
-
trunk/assets/flags/wales.png (added)
-
trunk/assets/flags/wf.png (added)
-
trunk/assets/flags/ws.png (added)
-
trunk/assets/flags/ye.png (added)
-
trunk/assets/flags/yt.png (added)
-
trunk/assets/flags/za.png (added)
-
trunk/assets/flags/zm.png (added)
-
trunk/assets/flags/zw.png (added)
-
trunk/assets/images (added)
-
trunk/assets/images/index.php (added)
-
trunk/assets/images/link_add.png (added)
-
trunk/assets/images/link_edit.png (added)
-
trunk/assets/js (added)
-
trunk/assets/js/index.php (added)
-
trunk/assets/js/msls-widget-block (added)
-
trunk/assets/js/msls-widget-block/block.json (added)
-
trunk/assets/js/msls-widget-block/index.asset.php (added)
-
trunk/assets/js/msls-widget-block/index.js (added)
-
trunk/assets/js/msls-widget-block/render.php (added)
-
trunk/assets/js/msls.js (added)
-
trunk/composer.json (added)
-
trunk/css (deleted)
-
trunk/css-flags (deleted)
-
trunk/flags (deleted)
-
trunk/images (deleted)
-
trunk/includes/Component/Icon.php (modified) (3 diffs)
-
trunk/includes/Component/Icon/IconLabel.php (modified) (1 diff)
-
trunk/includes/Component/Icon/IconPng.php (modified) (1 diff)
-
trunk/includes/Component/Icon/IconSvg.php (modified) (1 diff)
-
trunk/includes/Component/Input/Select.php (modified) (1 diff)
-
trunk/includes/Component/Input/Text.php (modified) (1 diff)
-
trunk/includes/Component/Wrapper.php (modified) (1 diff)
-
trunk/includes/ContentImport/AttachmentPathFinder.php (modified) (3 diffs)
-
trunk/includes/ContentImport/ContentImporter.php (modified) (13 diffs)
-
trunk/includes/ContentImport/ImportCoordinates.php (modified) (1 diff)
-
trunk/includes/ContentImport/ImportLogger.php (modified) (3 diffs)
-
trunk/includes/ContentImport/Importers/BaseImporter.php (modified) (2 diffs)
-
trunk/includes/ContentImport/Importers/ImportersBaseFactory.php (modified) (2 diffs)
-
trunk/includes/ContentImport/Importers/PostThumbnail/Linking.php (modified) (1 diff)
-
trunk/includes/ContentImport/Importers/Terms/ShallowDuplicating.php (modified) (2 diffs)
-
trunk/includes/ContentImport/Importers/WithRequestPostAttributes.php (modified) (1 diff)
-
trunk/includes/ContentImport/LogWriters/AdminNoticeLogger.php (modified) (2 diffs)
-
trunk/includes/ContentImport/MetaBox.php (modified) (3 diffs)
-
trunk/includes/ContentImport/Service.php (modified) (2 diffs)
-
trunk/includes/Map/HrefLang.php (modified) (3 diffs)
-
trunk/includes/MslsAdmin.php (modified) (8 diffs)
-
trunk/includes/MslsAdminBar.php (modified) (5 diffs)
-
trunk/includes/MslsAdminIcon.php (modified) (1 diff)
-
trunk/includes/MslsAdminIconTaxonomy.php (modified) (1 diff)
-
trunk/includes/MslsBlock.php (modified) (2 diffs)
-
trunk/includes/MslsBlog.php (modified) (9 diffs)
-
trunk/includes/MslsBlogCollection.php (modified) (5 diffs)
-
trunk/includes/MslsCli.php (modified) (1 diff)
-
trunk/includes/MslsContentFilter.php (modified) (2 diffs)
-
trunk/includes/MslsContentTypes.php (modified) (1 diff)
-
trunk/includes/MslsCustomColumn.php (modified) (2 diffs)
-
trunk/includes/MslsCustomFilter.php (modified) (1 diff)
-
trunk/includes/MslsLink.php (modified) (2 diffs)
-
trunk/includes/MslsMain.php (modified) (6 diffs)
-
trunk/includes/MslsMetaBox.php (modified) (6 diffs)
-
trunk/includes/MslsOptions.php (modified) (5 diffs)
-
trunk/includes/MslsOptionsPost.php (modified) (3 diffs)
-
trunk/includes/MslsOptionsQuery.php (modified) (3 diffs)
-
trunk/includes/MslsOptionsQueryAuthor.php (modified) (1 diff)
-
trunk/includes/MslsOptionsQueryDay.php (modified) (1 diff)
-
trunk/includes/MslsOptionsQueryMonth.php (modified) (1 diff)
-
trunk/includes/MslsOptionsQueryPostType.php (modified) (1 diff)
-
trunk/includes/MslsOptionsQueryYear.php (modified) (2 diffs)
-
trunk/includes/MslsOptionsTax.php (modified) (2 diffs)
-
trunk/includes/MslsOptionsTaxTerm.php (modified) (3 diffs)
-
trunk/includes/MslsOutput.php (modified) (9 diffs)
-
trunk/includes/MslsPlugin.php (modified) (3 diffs)
-
trunk/includes/MslsPostTag.php (modified) (8 diffs)
-
trunk/includes/MslsPostTagClassic.php (modified) (5 diffs)
-
trunk/includes/MslsPostType.php (modified) (2 diffs)
-
trunk/includes/MslsRegistry.php (modified) (1 diff)
-
trunk/includes/MslsRegistryInstance.php (modified) (1 diff)
-
trunk/includes/MslsRequest.php (modified) (4 diffs)
-
trunk/includes/MslsShortCode.php (modified) (1 diff)
-
trunk/includes/MslsSqlCacher.php (modified) (5 diffs)
-
trunk/includes/MslsTaxonomy.php (modified) (1 diff)
-
trunk/includes/MslsWidget.php (modified) (2 diffs)
-
trunk/includes/Query/AbstractQuery.php (modified) (1 diff)
-
trunk/includes/Query/TranslatedPostIdQuery.php (modified) (1 diff)
-
trunk/includes/deprectated.php (added)
-
trunk/includes/index.php (modified) (1 diff)
-
trunk/index.php (modified) (1 diff)
-
trunk/js (deleted)
-
trunk/languages/index.php (modified) (1 diff)
-
trunk/vendor/composer/installed.php (modified) (2 diffs)
-
trunk/vendor/composer/installers/composer.json (added)
-
trunk/vendor/composer/platform_check.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
multisite-language-switcher/tags/2.10.0/MultisiteLanguageSwitcher.php
r3287198 r3409411 3 3 * Multisite Language Switcher Plugin 4 4 * 5 * @copyright Copyright (C) 2011-2022, Dennis Ploetner, re@lloc.de6 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 or later7 * @wordpress-plugin8 *9 5 * Plugin Name: Multisite Language Switcher 10 * Version: 2. 9.66 * Version: 2.10.0 11 7 * Plugin URI: http://msls.co/ 12 8 * Description: A simple but powerful plugin that will help you to manage the relations of your contents in a multilingual multisite-installation. … … 29 25 * along with this program; if not, write to the Free Software 30 26 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 27 * 28 * @copyright Copyright (C) 2011-2022, Dennis Ploetner, re@lloc.de 29 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 or later 30 * @wordpress-plugin 31 * @package msls 31 32 */ 32 33 … … 41 42 */ 42 43 if ( ! defined( 'MSLS_PLUGIN_VERSION' ) ) { 43 define( 'MSLS_PLUGIN_VERSION', '2. 9.6' );44 define( 'MSLS_PLUGIN_VERSION', '2.10.0' ); 44 45 define( 'MSLS_PLUGIN_PATH', plugin_basename( __FILE__ ) ); 45 46 define( 'MSLS_PLUGIN__FILE__', __FILE__ ); 46 47 48 require_once __DIR__ . '/includes/deprectated.php'; 49 47 50 /** 48 51 * Get the output for using the links to the translations in your code 49 52 * 50 53 * @package Msls 51 *52 54 * @param mixed $attr 53 * 54 * @return string 55 */ 56 function get_the_msls( $attr ): string { 55 * @return string 56 */ 57 function msls_get_switcher( $attr ): string { 57 58 $arr = is_array( $attr ) ? $attr : array(); 58 59 $obj = apply_filters( 'msls_get_output', null ); … … 76 77 * @param string[] $arr 77 78 */ 78 function the_msls( array $arr = array() ): void {79 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped80 echo get_the_msls( $arr );79 function msls_the_switcher( array $arr = array() ): void { 80 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped 81 echo msls_get_switcher( $arr ); 81 82 } 82 83 … … 88 89 * @return string 89 90 */ 90 function get_msls_flag_url( string $locale ): string {91 function msls_get_flag_url( string $locale ): string { 91 92 return ( new \lloc\Msls\MslsOptions() )->get_flag_url( $locale ); 92 93 } … … 96 97 * 97 98 * @param string $locale 98 * 99 * @return string 100 */ 101 function get_msls_blog_description( string $locale, string $default = '' ): string { 99 * @param string $preset 100 * 101 * @return string 102 */ 103 function msls_get_blog_description( string $locale, string $preset = '' ): string { 102 104 $blog = msls_blog( $locale ); 103 105 104 return $blog ? $blog->get_description() : $ default;106 return $blog ? $blog->get_description() : $preset; 105 107 } 106 108 … … 109 111 * 110 112 * @param string $locale 111 * @param string $ default112 * 113 * @return string 114 */ 115 function get_msls_permalink( string $locale, string $default = '' ): string {113 * @param string $preset 114 * 115 * @return string 116 */ 117 function msls_get_permalink( string $locale, string $preset = '' ): string { 116 118 $url = null; 117 119 $blog = msls_blog( $locale ); … … 122 124 } 123 125 124 return $url ?? $ default;126 return $url ?? $preset; 125 127 } 126 128 … … 236 238 * @return void 237 239 */ 238 if ( ! function_exists( '__return_void' ) ) { 239 function __return_void(): void { 240 } 240 function msls_return_void(): void { 241 241 } 242 242 -
multisite-language-switcher/tags/2.10.0/includes/Component/Icon.php
r3167915 r3409411 19 19 */ 20 20 public function __construct() { 21 if ( $this->get_include() ) {22 $this->map = include $this->get_include(); 23 }21 $filePath = $this->get_include(); 22 23 $this->map = ! is_null( $filePath ) && is_readable( $filePath ) ? require $filePath : array(); 24 24 } 25 25 … … 32 32 */ 33 33 protected function maybe( string $language, string $prefix = '', string $postfix = '' ): string { 34 if ( 5 == strlen( $language ) ) {34 if ( 5 === strlen( $language ) ) { 35 35 $language = strtolower( substr( $language, - 2 ) ); 36 36 } … … 40 40 41 41 /** 42 * @return string42 * @return ?string 43 43 */ 44 abstract protected function get_include(): string; 44 protected function get_include(): ?string { 45 return null; 46 } 45 47 46 48 /** -
multisite-language-switcher/tags/2.10.0/includes/Component/Icon/IconLabel.php
r3287198 r3409411 13 13 14 14 /** 15 * @return string16 */17 protected function get_include(): string {18 return '';19 }20 21 /**22 15 * @param string $language 23 16 * -
multisite-language-switcher/tags/2.10.0/includes/Component/Icon/IconPng.php
r3167915 r3409411 13 13 final class IconPng extends Icon { 14 14 15 const FLAGS_FILE = ' flags/flags.php';15 const FLAGS_FILE = 'assets/flags/flags.php'; 16 16 17 17 /** -
multisite-language-switcher/tags/2.10.0/includes/Component/Icon/IconSvg.php
r3167915 r3409411 13 13 final class IconSvg extends Icon { 14 14 15 const FLAGS_FILE = ' css-flags/flags.php';15 const FLAGS_FILE = 'assets/css-flags/flags.php'; 16 16 17 17 /** -
multisite-language-switcher/tags/2.10.0/includes/Component/Input/Select.php
r3167915 r3409411 20 20 21 21 /** 22 * @param string $key Name and ID of the form-element 23 * @param mixed[] $arr Options as a ssociative array24 * @param ?string $selected Values which should be selected 22 * @param string $key Name and ID of the form-element. 23 * @param mixed[] $arr Options as an associative array. 24 * @param ?string $selected Values which should be selected. 25 25 */ 26 26 public function __construct( string $key, array $arr, ?string $selected = null ) { -
multisite-language-switcher/tags/2.10.0/includes/Component/Input/Text.php
r3199861 r3409411 33 33 * @param string|null $value 34 34 * @param int $size 35 * @param bool $read only35 * @param bool $read_only 36 36 */ 37 public function __construct( string $key, ?string $value, int $size = self::DEFAULT_SIZE, bool $read only = false ) {37 public function __construct( string $key, ?string $value, int $size = self::DEFAULT_SIZE, bool $read_only = false ) { 38 38 $this->key = $key; 39 39 $this->value = $value; 40 40 $this->size = $size; 41 $this->readonly = $read only ? ' readonly="readonly"' : '';41 $this->readonly = $read_only ? ' readonly="readonly"' : ''; 42 42 } 43 43 -
multisite-language-switcher/tags/2.10.0/includes/Component/Wrapper.php
r3167915 r3409411 5 5 final class Wrapper extends Component { 6 6 7 /** 8 * @var string 9 */ 7 10 protected string $element; 8 11 12 /** 13 * @var string 14 */ 9 15 protected string $content; 10 16 -
multisite-language-switcher/tags/2.10.0/includes/ContentImport/AttachmentPathFinder.php
r3287198 r3409411 11 11 /** 12 12 * @param array<string, array<string, mixed>> $sources 13 * @param mixed $size Array14 * @param string $image Src15 * @param mixed $image Meta16 * @param int $attachment Id13 * @param mixed $size_array 14 * @param string $image_src 15 * @param mixed $image_meta 16 * @param int $attachment_id 17 17 * 18 18 * @return array<string, mixed> 19 19 */ 20 public function filter_srcset( array $sources, $sizeArray, $imageSrc, $imageMeta, $attachmentId ): array { 21 if ( ! $msls_imported = $this->has_import_data( $attachmentId ) ) { 20 public function filter_srcset( array $sources, $size_array, $image_src, $image_meta, $attachment_id ): array { 21 $msls_imported = $this->has_import_data( $attachment_id ); 22 if ( ! $msls_imported ) { 22 23 return $sources; 23 24 } … … 28 29 } 29 30 30 $extension = '.' . pathinfo( $source_post->guid, PATHINFO_EXTENSION );31 $pattern = '/(-[\\d]+x[\\d]+)*' . preg_quote( $extension, '/' ) . '$/';32 $src WithoutExtension = preg_replace( $pattern, '', $imageSrc );31 $extension = '.' . pathinfo( $source_post->guid, PATHINFO_EXTENSION ); 32 $pattern = '/(-[\\d]+x[\\d]+)*' . preg_quote( $extension, '/' ) . '$/'; 33 $src_without_extension = preg_replace( $pattern, '', $image_src ); 33 34 34 35 foreach ( $sources as $key => &$value ) { 35 36 preg_match( $pattern, $value['url'], $matches ); 36 37 $w_and_h = ! empty( $matches[1] ) ? $matches[1] : ''; 37 $value['url'] = $src WithoutExtension . $w_and_h . $extension;38 $value['url'] = $src_without_extension . $w_and_h . $extension; 38 39 } 39 40 … … 72 73 */ 73 74 public function filter_attachment_url( $url, $attachment_id ) { 74 if ( ! $msls_imported = $this->has_import_data( $attachment_id ) ) { 75 $msls_imported = $this->has_import_data( $attachment_id ); 76 if ( ! $msls_imported ) { 75 77 return $url; 76 78 } -
multisite-language-switcher/tags/2.10.0/includes/ContentImport/ContentImporter.php
r3287198 r3409411 22 22 use WithRequestPostAttributes; 23 23 24 const MSLS_BEFORE_IMPORT_ACTION = 'msls_content_import_before_import'; 25 26 const MSLS_AFTER_IMPORT_ACTION = 'msls_content_import_after_import'; 27 24 28 /** 25 29 * @var MslsMain 26 30 */ 27 protected $main; 31 protected MslsMain $main; 32 33 /** 34 * @var ImportLogger|null 35 */ 28 36 protected ?ImportLogger $logger = null; 37 38 /** 39 * @var Relations|null 40 */ 29 41 protected ?Relations $relations = null; 30 42 … … 32 44 * @var bool Whether the class should handle requests or not. 33 45 */ 34 protected $handle = true;46 protected bool $handle = true; 35 47 36 48 /** 37 49 * @var int The ID of the post the class created while handling the request, if any. 38 50 */ 39 protected $has_created_post = 0;51 protected int $has_created_post = 0; 40 52 41 53 /** … … 45 57 */ 46 58 public function __construct( ?MslsMain $main = null ) { 47 $this->main = $main ?: MslsMain::create();48 } 49 50 /** 51 * @return \lloc\Msls\ContentImport\ImportLogger52 */ 53 public function get_logger() {59 $this->main = ! is_null( $main ) ? $main : MslsMain::create(); 60 } 61 62 /** 63 * @return ?ImportLogger 64 */ 65 public function get_logger(): ?ImportLogger { 54 66 return $this->logger; 55 67 } 56 68 57 69 /** 58 * @param \lloc\Msls\ContentImport\ImportLogger $logger59 */ 60 public function set_logger( $logger ): void {70 * @param ImportLogger $logger 71 */ 72 public function set_logger( ImportLogger $logger ): void { 61 73 $this->logger = $logger; 62 74 } 63 75 64 76 /** 65 * @return \lloc\Msls\ContentImport\Relations66 */ 67 public function get_relations() {77 * @return ?Relations 78 */ 79 public function get_relations(): ?Relations { 68 80 return $this->relations; 69 81 } 70 82 71 83 /** 72 * @param \lloc\Msls\ContentImport\Relations $relations73 */ 74 public function set_relations( $relations ): void {84 * @param Relations $relations 85 */ 86 public function set_relations( Relations $relations ): void { 75 87 $this->relations = $relations; 76 88 } … … 84 96 */ 85 97 public function handle_import( array $data = array() ) { 86 if ( ! $this->pre_flight_check() || false === $sources = $this->parse_sources() ) { 98 $sources = $this->parse_sources(); 99 if ( ! $this->pre_flight_check() || false === $sources ) { 87 100 return $data; 88 101 } … … 90 103 list( $source_blog_id, $source_post_id ) = $sources; 91 104 92 if ( $source_blog_id === get_current_blog_id()) {105 if ( get_current_blog_id() === $source_blog_id ) { 93 106 return $data; 94 107 } … … 148 161 } 149 162 163 // phpcs:ignore WordPress.Security.NonceVerification.Missing 150 164 if ( ! isset( $_POST['msls_import'] ) ) { 151 165 return false; … … 225 239 $this->handle( true ); 226 240 227 $this->has_created_post = $post_id ?: false;241 $this->has_created_post = $post_id > 0 ? $post_id : false; 228 242 229 243 restore_current_blog(); … … 240 254 $this->handle = $handle; 241 255 242 // also prevent MSLS from saving256 // Also, prevent MSLS from saving. 243 257 if ( false === $handle ) { 244 add_action( 'msls_main_save', ' __return_void' );258 add_action( 'msls_main_save', 'msls_return_void' ); 245 259 } else { 246 remove_action( 'msls_main_save', ' __return_void' );260 remove_action( 'msls_main_save', 'msls_return_void' ); 247 261 } 248 262 } … … 268 282 * @param ImportCoordinates $import_coordinates 269 283 */ 270 do_action( 'msls_content_import_before_import', $import_coordinates );284 do_action( self::MSLS_BEFORE_IMPORT_ACTION, $import_coordinates ); 271 285 272 286 /** … … 329 343 * @since TBD 330 344 */ 331 do_action( 'msls_content_import_after_import', $import_coordinates, $this->logger, $this->relations );345 do_action( self::MSLS_AFTER_IMPORT_ACTION, $import_coordinates, $this->logger, $this->relations ); 332 346 333 347 /** … … 356 370 protected function update_inserted_blog_post_data( $blog_id, $post_id, array $data ) { 357 371 $data['ID'] = $post_id; 358 $data['post_status'] = empty( $data['post_status'] ) || $data['post_status'] === 'auto-draft'372 $data['post_status'] = empty( $data['post_status'] ) || 'auto-draft' === $data['post_status'] 359 373 ? 'draft' 360 374 : $data['post_status']; … … 372 386 switch_to_blog( $dest_blog_id ); 373 387 $edit_post_link = html_entity_decode( get_edit_post_link( $post_id ) ); 374 wp_ redirect( $edit_post_link );388 wp_safe_redirect( $edit_post_link ); 375 389 die(); 376 390 } … … 382 396 * the context of a content import as it will be populated. 383 397 * 384 * @param bool $ empty398 * @param bool $is_empty 385 399 * 386 400 * @return bool 387 401 */ 388 public function filter_empty( $ empty ) {402 public function filter_empty( $is_empty ) { 389 403 if ( ! $this->main->verify_nonce() ) { 390 return $empty; 391 } 392 404 return $is_empty; 405 } 406 407 // phpcs:ignore WordPress.Security.NonceVerification.Missing 393 408 if ( ! isset( $_POST['msls_import'] ) ) { 394 return $ empty;409 return $is_empty; 395 410 } 396 411 -
multisite-language-switcher/tags/2.10.0/includes/ContentImport/ImportCoordinates.php
r3287198 r3409411 65 65 } 66 66 67 if ( $this->source_lang !== MslsBlogCollection::get_blog_language( $this->source_blog_id )) {67 if ( MslsBlogCollection::get_blog_language( $this->source_blog_id ) !== $this->source_lang ) { 68 68 return false; 69 69 } 70 if ( $this->dest_lang !== MslsBlogCollection::get_blog_language( $this->dest_blog_id )) {70 if ( MslsBlogCollection::get_blog_language( $this->dest_blog_id ) !== $this->dest_lang ) { 71 71 return false; 72 72 } -
multisite-language-switcher/tags/2.10.0/includes/ContentImport/ImportLogger.php
r3287198 r3409411 8 8 class ImportLogger { 9 9 10 /** 11 * @var string 12 */ 10 13 protected string $levels_delimiter = '/'; 11 14 … … 63 66 $log_writer = apply_filters( 'msls_content_import_log_writer', $default_log_writer, $this->import_coordinates ); 64 67 if ( empty( $log_writer ) ) { 65 // we assume that was done on purpose to prevent logging68 // We assume that was done on purpose to prevent logging. 66 69 return; 67 70 } … … 72 75 73 76 if ( ! $log_writer instanceof LogWriter ) { 74 // something is fishy, let's use the default one77 // Something is fishy, let's use the default one. 75 78 $log_writer = $default_log_writer; 76 79 } -
multisite-language-switcher/tags/2.10.0/includes/ContentImport/Importers/BaseImporter.php
r3287198 r3409411 27 27 * BaseImporter constructor. 28 28 * 29 * @param ImportCoordinates $import_coordinates 29 30 * @param ImportLogger|null $logger 30 31 * @param Relations|null $relations … … 36 37 ) { 37 38 $this->import_coordinates = $import_coordinates; 38 $this->logger = $logger ?: new ImportLogger( $this->import_coordinates );39 $this->relations = $relations ?: new Relations( $this->import_coordinates );39 $this->logger = ! is_null( $logger ) ? $logger : new ImportLogger( $this->import_coordinates ); 40 $this->relations = ! is_null( $relations ) ? $relations : new Relations( $this->import_coordinates ); 40 41 } 41 42 -
multisite-language-switcher/tags/2.10.0/includes/ContentImport/Importers/ImportersBaseFactory.php
r3199861 r3409411 20 20 21 21 /** 22 * Creates an Importer instance based on the provided ImportCoordinates. 23 * 24 * @param ImportCoordinates $import_coordinates The coordinates for the import operation. 25 * 22 26 * @return Importer 27 * 28 * @throws \RuntimeException If the TYPE constant is not defined in the child class. 23 29 */ 24 30 public function make( ImportCoordinates $import_coordinates ) { 25 31 if ( static::TYPE === self::TYPE ) { 26 // this is a developer-land exception, no need to localize it32 // This is a developer-land exception, no need to localize it. 27 33 throw new \RuntimeException( 'Importers factories should define their own type' ); 28 34 } … … 54 60 55 61 $first = count( $map ) > 0 ? reset( $map ) : null; 56 $slug = $import_coordinates->get_importer_for( $type ) ?: $first;62 $slug = $import_coordinates->get_importer_for( $type ); 57 63 58 // if there is some incoherence return the null-doing base importer 64 if ( is_null( $slug ) ) { 65 $slug = $first; 66 } 67 68 // If there is some incoherence, return the null-doing base importer. 59 69 $class = ! empty( $slug ) && isset( $map[ $slug ] ) ? $map[ $slug ] : BaseImporter::class; 60 70 -
multisite-language-switcher/tags/2.10.0/includes/ContentImport/Importers/PostThumbnail/Linking.php
r3199861 r3409411 61 61 switch_to_blog( $this->import_coordinates->dest_blog_id ); 62 62 63 if ( $source_post_thumbnail_attachment instanceof \WP_Post ) { 64 // in some instances the folder sep. `/` might be duplicated, we de-duplicate it 65 array_walk( 66 $source_upload_dir, 67 function ( &$entry ) { 68 $entry = str_replace( '//', '/', $entry ); 69 } 70 ); 71 $source_uploads_dir = untrailingslashit( 72 str_replace( 73 $source_upload_dir['subdir'], 74 '', 75 $source_upload_dir['path'] 76 ) 77 ); 78 $source_post_thumbnail_file = $source_uploads_dir . '/' . $source_post_thumbnail_meta['_wp_attached_file']; 63 // In some instances, the folder sep. `/` might be duplicated, we de-duplicate it. 64 array_walk( 65 $source_upload_dir, 66 function ( &$entry ) { 67 $entry = str_replace( '//', '/', $entry ); 68 } 69 ); 70 $source_uploads_dir = untrailingslashit( 71 str_replace( 72 $source_upload_dir['subdir'], 73 '', 74 $source_upload_dir['path'] 75 ) 76 ); 77 $source_post_thumbnail_file = $source_uploads_dir . '/' . $source_post_thumbnail_meta['_wp_attached_file']; 79 78 80 // Check the type of file. We'll use this as the 'post_mime_type'.81 $filetype = wp_check_filetype( basename( $source_post_thumbnail_file ), null );79 // Check the type of file. We'll use this as the 'post_mime_type'. 80 $filetype = wp_check_filetype( basename( $source_post_thumbnail_file ), null ); 82 81 83 // Prepare an array of post data for the attachment. 84 $attachment = array( 85 'guid' => $source_post_thumbnail_attachment->guid, 86 'post_mime_type' => $filetype['type'], 87 'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $source_post_thumbnail_file ) ), 88 'post_content' => '', 89 'post_status' => 'inherit', 82 // Prepare an array of post data for the attachment. 83 $attachment = array( 84 'guid' => $source_post_thumbnail_attachment->guid, 85 'post_mime_type' => $filetype['type'], 86 'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $source_post_thumbnail_file ) ), 87 'post_content' => '', 88 'post_status' => 'inherit', 89 ); 90 91 $found = get_posts( 92 array( 93 'post_type' => 'attachment', 94 'title' => $attachment['post_title'], 95 ) 96 ); 97 if ( isset( $found[0]->ID ) ) { 98 $dest_post_thumbnail_id = $found[0]->ID; 99 $this->logger->log_success( 'post-thumbnail/existing', $dest_post_thumbnail_id ); 100 } else { 101 // Insert the attachment. 102 $dest_post_thumbnail_id = wp_insert_attachment( 103 $attachment, 104 $source_post_thumbnail_file, 105 $dest_post_id 90 106 ); 91 107 92 $existing_criteria = array( 93 'post_type' => 'attachment', 94 'title' => $attachment['post_title'], 95 ); 108 if ( empty( $dest_post_thumbnail_id ) ) { 109 $this->logger->log_error( 'post-thumbnail/created', $dest_post_thumbnail_id ); 110 } else { 111 $this->logger->log_success( 'post-thumbnail/created', $dest_post_thumbnail_id ); 112 } 96 113 97 $found = get_posts( $existing_criteria ); 114 // The `_wp_attached_file` meta has been set before, so we skip it. 115 unset( $source_post_thumbnail_meta['_wp_attached_file'] ); 98 116 99 if ( $found && $found[0] instanceof \WP_Post ) { 100 $dest_post_thumbnail_id = $found[0]->ID; 101 $this->logger->log_success( 'post-thumbnail/existing', $dest_post_thumbnail_id ); 102 } else { 103 // Insert the attachment. 104 $dest_post_thumbnail_id = wp_insert_attachment( 105 $attachment, 106 $source_post_thumbnail_file, 107 $dest_post_id 108 ); 109 110 if ( empty( $dest_post_thumbnail_id ) ) { 111 $this->logger->log_error( 'post-thumbnail/created', $dest_post_thumbnail_id ); 112 } else { 113 $this->logger->log_success( 'post-thumbnail/created', $dest_post_thumbnail_id ); 114 } 115 116 // the `_wp_attached_file` meta has been set before, so we skip it 117 unset( $source_post_thumbnail_meta['_wp_attached_file'] ); 118 119 foreach ( $source_post_thumbnail_meta as $key => $value ) { 120 add_post_meta( $dest_post_thumbnail_id, $key, $value, true ); 121 } 117 foreach ( $source_post_thumbnail_meta as $key => $value ) { 118 add_post_meta( $dest_post_thumbnail_id, $key, $value, true ); 122 119 } 123 120 -
multisite-language-switcher/tags/2.10.0/includes/ContentImport/Importers/Terms/ShallowDuplicating.php
r3287198 r3409411 80 80 81 81 if ( is_array( $added ) && ! count( array_filter( $added ) ) ) { 82 // while we think the term translation exists it might not, let's create it82 // While we think the term translation exists it might not, let's create it. 83 83 $dest_term_id = $this->create_local_term( $term, $msls_term, $dest_lang ); 84 84 … … 87 87 } 88 88 89 // and try again89 // And try again. 90 90 $added = $this->update_object_terms( $dest_post_id, $dest_term_id, $term->taxonomy ); 91 91 } -
multisite-language-switcher/tags/2.10.0/includes/ContentImport/Importers/WithRequestPostAttributes.php
r3167915 r3409411 24 24 * Returns the post type read from `$_REQUEST['post_type']` if any, or a default post type. 25 25 * 26 * @param string $ default The default post type to return if none is specified in the `$_REQUEST` super-global.26 * @param string $preset The default post type to return if none is specified in the `$_REQUEST` super-global. 27 27 * 28 28 * @return string Either the post type read from the `$_REQUEST` super-global, or the default value. 29 \ *30 29 */ 31 protected function read_post_type_from_request( $ default = 'post' ) {32 $request = MslsRequest::get_request( array( 'post_type' ), $ default );30 protected function read_post_type_from_request( $preset = 'post' ) { 31 $request = MslsRequest::get_request( array( 'post_type' ), $preset ); 33 32 34 33 return $request['post_type']; -
multisite-language-switcher/tags/2.10.0/includes/ContentImport/LogWriters/AdminNoticeLogger.php
r3199861 r3409411 9 9 class AdminNoticeLogger extends MslsRegistryInstance implements LogWriter { 10 10 11 /** 12 * The transient where the last import log will be stored. 13 * 14 * @var string 15 */ 11 16 protected string $transient = 'msls_last_import_log'; 12 17 … … 138 143 * Shows the last log that was written. 139 144 * 140 * @param bool $ echo145 * @param bool $output 141 146 * 142 147 * @return ?string 143 148 */ 144 public function show_last_log( $echo = true ): ?string { 145 if ( ! ( $html = get_transient( $this->transient ) ) ) { 149 public function show_last_log( $output = true ): ?string { 150 $html = get_transient( $this->transient ); 151 if ( ! $html ) { 146 152 return null; 147 153 } 148 154 149 if ( $ echo) {155 if ( $output ) { 150 156 echo wp_kses( $html, Component::get_allowed_html() ); 151 157 } 152 158 153 // we've shown it, no reason to keep it159 // We've shown it, no reason to keep it. 154 160 delete_transient( $this->transient ); 155 161 -
multisite-language-switcher/tags/2.10.0/includes/ContentImport/MetaBox.php
r3199861 r3409411 103 103 array( 104 104 'modal' => true, 105 'width' => 770, // meh, just a guess on *most* devices105 'width' => 770, // Meh, just a guess on *most* devices. 106 106 'height' => 770, 107 107 'inlineId' => 'msls-import-dialog-' . str_replace( '|', '-', $data['msls_import'] ), … … 121 121 122 122 /** 123 * @param bool $ echo123 * @param bool $output 124 124 * @param array<string, mixed> $data 125 125 * 126 126 * @return string 127 127 */ 128 protected function inline_thickbox_html( $ echo= true, array $data = array() ): string {128 protected function inline_thickbox_html( $output = true, array $data = array() ): string { 129 129 if ( ! isset( $data['msls_import'] ) ) { 130 130 return ''; … … 187 187 $html = ob_get_clean(); 188 188 189 if ( $ echo) {189 if ( $output ) { 190 190 echo wp_kses( $html, Component::get_allowed_html() ); 191 191 } -
multisite-language-switcher/tags/2.10.0/includes/ContentImport/Service.php
r3167915 r3409411 61 61 add_filter( 62 62 'wp_insert_post_empty_content', 63 function ( $ empty) {64 return ContentImporter::instance()->filter_empty( $ empty);63 function ( $bare ) { 64 return ContentImporter::instance()->filter_empty( $bare ); 65 65 } 66 66 ); … … 75 75 add_filter( 76 76 'wp_calculate_image_srcset', 77 function ( $sources, $size Array, $imageSrc, $imageMeta, $attachmentId ) {77 function ( $sources, $size_array, $image_src, $image_meta, $attachment_id ) { 78 78 return AttachmentPathFinder::instance()->filter_srcset( 79 79 $sources, 80 $size Array,81 $image Src,82 $image Meta,83 $attachment Id80 $size_array, 81 $image_src, 82 $image_meta, 83 $attachment_id 84 84 ); 85 85 }, -
multisite-language-switcher/tags/2.10.0/includes/Map/HrefLang.php
r3287198 r3409411 11 11 */ 12 12 class HrefLang { 13 14 const MSLS_HEAD_HREFLANG_HOOK = 'msls_head_hreflang'; 13 15 14 16 /** … … 27 29 28 30 foreach ( $map as $alpha2 => $languages ) { 29 if ( 1 == count( $languages ) ) {31 if ( 1 === count( $languages ) ) { 30 32 $this->map[ $languages[0] ] = $alpha2; 31 33 } else { … … 65 67 * @since 0.9.9 66 68 */ 67 return (string) apply_filters( 'msls_head_hreflang', $language );69 return (string) apply_filters( self::MSLS_HEAD_HREFLANG_HOOK, $language ); 68 70 } 69 71 } -
multisite-language-switcher/tags/2.10.0/includes/MslsAdmin.php
r3287198 r3409411 27 27 final class MslsAdmin extends MslsMain { 28 28 29 const MSLS_REGISTER_ACTION = 'msls_admin_register'; 30 31 const MSLS_ACTION_PREFIX = 'msls_admin_'; 32 33 /** 34 * Maximum number of users in the reference user select box 35 * 36 * @var int 37 */ 29 38 public const MAX_REFERENCE_USERS = 100; 30 39 … … 87 96 public function __call( $method, $args ) { 88 97 $parts = explode( '_', $method, 2 ); 89 if ( count( $parts ) > 0&& 'rewrite' === $parts[0] ) {98 if ( 2 === count( $parts ) && 'rewrite' === $parts[0] ) { 90 99 $this->render_rewrite( $parts[1] ); 91 100 return; … … 136 145 ); 137 146 $message = sprintf( $format, esc_url( admin_url( $this->get_options_page_link() ) ) ); 138 } elseif ( 1 == count( $this->options->get_available_languages() ) ) {147 } elseif ( 1 === count( $this->options->get_available_languages() ) ) { 139 148 /* translators: %1$s: URL to a page at WordPress.orgs */ 140 149 $format = __( … … 188 197 foreach ( $this->collection->get_plugin_active_blogs() as $blog ) { 189 198 $admin_url = get_admin_url( $blog->userblog_id, $this->get_options_page_link() ); 190 $current = $blog->userblog_id == $this->collection->get_current_blog_id() ? ' class="current"' : '';199 $current = $blog->userblog_id === $this->collection->get_current_blog_id() ? ' class="current"' : ''; 191 200 192 201 $arr[] = sprintf( '<a href="%1$s"%2$s>%3$s</a>', $admin_url, $current, $blog->get_title( $icon_type ) ); … … 227 236 * @since 1.0 228 237 */ 229 do_action( 'msls_admin_register', __CLASS__ );238 do_action( self::MSLS_REGISTER_ACTION, __CLASS__ ); 230 239 } 231 240 … … 326 335 * @since 2.4.4 327 336 */ 328 do_action( "msls_admin_{$section}", __CLASS__, $section );337 do_action( self::MSLS_ACTION_PREFIX . $section, __CLASS__, $section ); 329 338 330 339 return count( $map ); … … 385 394 ); 386 395 387 // phpcs:ignore WordPress. Security.EscapeOutput388 trigger_error( sprintf( esc_html( $format ), strval( self::MAX_REFERENCE_USERS) ) );396 // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error 397 trigger_error( esc_html( sprintf( $format, strval( self::MAX_REFERENCE_USERS ) ) ) ); 389 398 } 390 399 … … 435 444 * Validates input before saving it 436 445 * 437 * @param array<string, mixed> $arr Values of the submitted form 446 * @param array<string, mixed> $arr Values of the submitted form. 438 447 * 439 448 * @return array<string, mixed> -
multisite-language-switcher/tags/2.10.0/includes/MslsAdminBar.php
r3287198 r3409411 5 5 class MslsAdminBar { 6 6 7 /** 8 * @var string 9 */ 7 10 protected string $icon_type; 8 11 12 /** 13 * @var MslsBlogCollection 14 */ 9 15 protected MslsBlogCollection $blog_collection; 10 16 17 /** 18 * @param MslsOptions $options 19 * @param MslsBlogCollection $blog_collection 20 */ 11 21 public function __construct( MslsOptions $options, MslsBlogCollection $blog_collection ) { 12 22 $this->icon_type = $options->get_icon_type(); … … 14 24 } 15 25 26 /** 27 * @return void 28 */ 16 29 public static function init(): void { 17 30 $obj = new MslsAdminBar( msls_options(), msls_blog_collection() ); … … 24 37 /** 25 38 * Callback that updates the admin bar with the blog information 39 * 40 * @param \WP_Admin_Bar $wp_admin_bar 41 * 42 * @return void 26 43 */ 27 44 public function update_admin_bar( \WP_Admin_Bar $wp_admin_bar ): void { … … 40 57 /** 41 58 * Adds node information to an existing node 59 * 60 * @param \WP_Admin_Bar $wp_admin_bar 61 * @param string $node_id 62 * @param string $title 63 * 64 * @return bool 42 65 */ 43 66 public function add_node( \WP_Admin_Bar $wp_admin_bar, string $node_id, string $title ): bool { … … 61 84 * 62 85 * It uses a blavatar icon as prefix if $blavatar is set to true 86 * 87 * @param MslsBlog|null $blog 88 * @param bool $blavatar 89 * 90 * @return string|null 63 91 */ 64 92 protected function get_title( ?MslsBlog $blog, bool $blavatar = false ): ?string { -
multisite-language-switcher/tags/2.10.0/includes/MslsAdminIcon.php
r3287198 r3409411 117 117 */ 118 118 public function set_path(): MslsAdminIcon { 119 if ( 'post' != $this->type ) {119 if ( 'post' !== $this->type ) { 120 120 $query_vars = array( 'post_type' => $this->type ); 121 121 $this->path = add_query_arg( $query_vars, $this->path ); -
multisite-language-switcher/tags/2.10.0/includes/MslsAdminIconTaxonomy.php
r3287198 r3409411 42 42 $post_type = MslsTaxonomy::instance()->get_post_type(); 43 43 44 $post_type !== '' && $args['post_type'] = $post_type; 44 if ( '' !== $post_type ) { 45 $args['post_type'] = $post_type; 46 } 45 47 46 48 $this->path = add_query_arg( $args, $this->path ); -
multisite-language-switcher/tags/2.10.0/includes/MslsBlock.php
r3287198 r3409411 5 5 class MslsBlock { 6 6 7 /** 8 * The options instance. 9 * 10 * @var MslsOptions 11 */ 7 12 protected MslsOptions $options; 8 13 … … 30 35 } 31 36 32 register_block_type( MslsPlugin::plugin_dir_path( ' js/msls-widget-block' ) );37 register_block_type( MslsPlugin::plugin_dir_path( 'assets/js/msls-widget-block' ) ); 33 38 34 39 return true; -
multisite-language-switcher/tags/2.10.0/includes/MslsBlog.php
r3287198 r3409411 11 11 class MslsBlog { 12 12 13 const MSLS_GET_PERMALINK_HOOK = 'msls_blog_get_permalink'; 14 15 const WP_ADMIN_BAR_SHOW_SITE_ICONS_HOOK = 'wp_admin_bar_show_site_icons'; 16 13 17 /** 14 18 * WordPress generates such an object … … 91 95 * Gets the language stored in this object 92 96 * 93 * @param string $ default94 * 95 * @return string 96 */ 97 public function get_language( $ default = 'en_US' ) {98 return empty( $this->language ) ? $ default : $this->language;97 * @param string $preset 98 * 99 * @return string 100 */ 101 public function get_language( $preset = 'en_US' ) { 102 return empty( $this->language ) ? $preset : $this->language; 99 103 } 100 104 … … 116 120 */ 117 121 public function get_url( $options ) { 118 if ( $this->obj->userblog_id == msls_blog_collection()->get_current_blog_id()) {122 if ( msls_blog_collection()->get_current_blog_id() === $this->obj->userblog_id ) { 119 123 return $options->get_current_link(); 120 124 } … … 128 132 * @return ?string 129 133 */ 130 protected function get_permalink( $options ) {134 protected function get_permalink( OptionsInterface $options ) { 131 135 $url = null; 132 136 … … 135 139 switch_to_blog( $this->obj->userblog_id ); 136 140 137 if ( is_object( $options ) && method_exists( 138 $options, 139 'has_value' 140 ) && ( $is_home || $options->has_value( $this->get_language() ) ) ) { 141 $url = apply_filters( 'mlsl_blog_get_permalink', $options->get_permalink( $this->get_language() ), $this ); 141 if ( $is_home || $options->has_value( $this->get_language() ) ) { 142 $url = apply_filters( self::MSLS_GET_PERMALINK_HOOK, $options->get_permalink( $this->get_language() ), $this ); 142 143 } 143 144 … … 155 156 * @return int 156 157 */ 157 public static function _cmp( $a, $b ) {158 if ( $a == $b ) {158 public static function internal_cmp( $a, $b ) { 159 if ( $a === $b ) { 159 160 return 0; 160 161 } … … 172 173 */ 173 174 public static function language( MslsBlog $a, MslsBlog $b ) { 174 return self:: _cmp( $a->get_language(), $b->get_language() );175 return self::internal_cmp( $a->get_language(), $b->get_language() ); 175 176 } 176 177 … … 184 185 */ 185 186 public static function description( MslsBlog $a, MslsBlog $b ) { 186 return self:: _cmp( $a->get_description(), $b->get_description() );187 return self::internal_cmp( $a->get_description(), $b->get_description() ); 187 188 } 188 189 … … 192 193 public function get_blavatar(): string { 193 194 $blavatar_html = '<div class="blavatar"></div>'; 194 $show_site_icons = apply_filters( 'wp_admin_bar_show_site_icons', true );195 $show_site_icons = apply_filters( self::WP_ADMIN_BAR_SHOW_SITE_ICONS_HOOK, true ); 195 196 196 197 switch_to_blog( $this->obj->userblog_id ); -
multisite-language-switcher/tags/2.10.0/includes/MslsBlogCollection.php
r3287198 r3409411 75 75 foreach ( $blogs_collection as $blog ) { 76 76 $description = false; 77 if ( $blog->userblog_id == $this->current_blog_id ) {77 if ( $blog->userblog_id === $this->current_blog_id ) { 78 78 $description = $options->description; 79 79 } elseif ( ! $this->is_plugin_active( $blog->userblog_id ) ) { … … 153 153 154 154 foreach ( $this->get_objects() as $item ) { 155 if ( $language == $item->get_language() ) {155 if ( $language === $item->get_language() ) { 156 156 $blog = $item; 157 157 break; … … 253 253 $plugins = get_blog_option( $blog_id, 'active_plugins', array() ); 254 254 255 return in_array( $path, $plugins );255 return in_array( $path, $plugins, true ); 256 256 } 257 257 … … 325 325 * 326 326 * @param int $blog_id 327 * @param string $ default327 * @param string $preset 328 328 * 329 329 * @return string 330 330 */ 331 public static function get_blog_language( $blog_id = null, $ default = 'en_US' ) {331 public static function get_blog_language( $blog_id = null, $preset = 'en_US' ) { 332 332 if ( null === $blog_id ) { 333 333 $blog_id = get_current_blog_id(); … … 336 336 $language = (string) get_blog_option( $blog_id, 'WPLANG' ); 337 337 338 return '' !== $language ? $language : $ default;338 return '' !== $language ? $language : $preset; 339 339 } 340 340 } -
multisite-language-switcher/tags/2.10.0/includes/MslsCli.php
r3287198 r3409411 29 29 * $ wp msls blog <locale> 30 30 * 31 * @param string[] $args32 * @param array<string, string> $assoc_args31 * @param string[] $args 32 * 33 33 * @return void 34 34 */ 35 public function blog( $args , $assoc_args): void {35 public function blog( $args ): void { 36 36 list( $locale ) = $args; 37 37 $blog = msls_blog( $locale ); -
multisite-language-switcher/tags/2.10.0/includes/MslsContentFilter.php
r3287198 r3409411 5 5 class MslsContentFilter { 6 6 7 /** 8 * The options instance. 9 * 10 * @var MslsOptions 11 */ 7 12 protected MslsOptions $options; 8 13 … … 71 76 } 72 77 73 if ( 1 == count( $links ) ) {78 if ( 1 === count( $links ) ) { 74 79 return $links[0]; 75 80 } -
multisite-language-switcher/tags/2.10.0/includes/MslsContentTypes.php
r3287198 r3409411 32 32 $_request = MslsRequest::get_request( array( 'taxonomy' ) ); 33 33 34 return '' != $_request['taxonomy'] ? MslsTaxonomy::instance() : MslsPostType::instance();34 return '' !== $_request['taxonomy'] ? MslsTaxonomy::instance() : MslsPostType::instance(); 35 35 } 36 36 -
multisite-language-switcher/tags/2.10.0/includes/MslsCustomColumn.php
r3287198 r3409411 48 48 $language = $blog->get_language(); 49 49 $icon_type = $this->options->get_icon_type(); 50 $icon = ( new MslsAdminIcon() )->set_language( $language )->set_icon_type( $icon_type ); 50 51 51 $icon = ( new MslsAdminIcon() )->set_language( $language )->set_icon_type( $icon_type ); 52 53 if ( $post_id = get_the_ID() ) { 52 $post_id = get_the_ID(); 53 if ( false !== $post_id ) { 54 54 $icon->set_id( $post_id ); 55 55 $icon->set_origin_language( 'it_IT' ); … … 73 73 */ 74 74 public function td( $column_name, $item_id ): void { 75 if ( 'mslscol' == $column_name ) {75 if ( 'mslscol' === $column_name ) { 76 76 $blogs = $this->collection->get(); 77 77 $origin_language = MslsBlogCollection::get_blog_language(); -
multisite-language-switcher/tags/2.10.0/includes/MslsCustomFilter.php
r3287198 r3409411 79 79 $sql_cache = MslsSqlCacher::create( __CLASS__, __METHOD__ ); 80 80 81 // load post we need to exclude (they already have a translation) from search query81 // Load post we need to exclude (they already have a translation) from search query. 82 82 $query->query_vars['post__not_in'] = ( new TranslatedPostIdQuery( $sql_cache ) )( $blog->get_language() ); 83 83 -
multisite-language-switcher/tags/2.10.0/includes/MslsLink.php
r3287198 r3409411 18 18 19 19 /** 20 * Gets all link types as a rray with "id => name"-items20 * Gets all link types as an array with "id => name"-items 21 21 * 22 22 * @return string[] … … 74 74 * @param LinkInterface $obj 75 75 * @param int $display 76 *77 * @return LinkInterface78 76 */ 79 77 $obj = apply_filters( 'msls_link_create', $obj, $display ); 80 if ( $obj instanceof LinkInterface ) {81 return $obj;82 }83 78 } 84 79 -
multisite-language-switcher/tags/2.10.0/includes/MslsMain.php
r3287198 r3409411 11 11 */ 12 12 class MslsMain { 13 14 const MSLS_SAVE_ACTION = 'msls_main_save'; 13 15 14 16 /** … … 49 51 if ( defined( 'WP_DEBUG' ) && WP_DEBUG === true ) { 50 52 if ( is_array( $message ) || is_object( $message ) ) { 53 // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_print_r 51 54 $message = print_r( $message, true ); 52 55 } 53 56 57 // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log 54 58 error_log( 'MSLS Debug: ' . $message ); 55 59 } … … 128 132 */ 129 133 protected function save( $object_id, $class_name ): void { 130 if ( has_action( 'msls_main_save') ) {134 if ( has_action( self::MSLS_SAVE_ACTION ) ) { 131 135 /** 132 136 * Calls completely customized save-routine … … 137 141 * @since 0.9.9 138 142 */ 139 do_action( 'msls_main_save', $object_id, $class_name );143 do_action( self::MSLS_SAVE_ACTION, $object_id, $class_name ); 140 144 141 145 return; … … 153 157 $temp = $options->get_arr(); 154 158 155 if ( 0 != $msla->get_val( $language ) ) {159 if ( 0 !== $msla->get_val( $language ) ) { 156 160 $options->save( $msla->get_arr( $language ) ); 157 161 } else { … … 165 169 $larr_id = $msla->get_val( $language ); 166 170 167 if ( 0 != $larr_id ) {171 if ( 0 !== $larr_id ) { 168 172 $options = new $class_name( $larr_id ); 169 173 $options->save( $msla->get_arr( $language ) ); -
multisite-language-switcher/tags/2.10.0/includes/MslsMetaBox.php
r3287198 r3409411 6 6 use lloc\Msls\Component\Wrapper; 7 7 use lloc\Msls\ContentImport\MetaBox as ContentImportMetaBox; 8 use WP_Post; 8 9 9 10 /** … … 76 77 public static function get_suggested_fields( MslsJson $json, array $args ): MslsJson { 77 78 /** 78 * Overrides the query-args for the suggestfields in the MetaBox79 * Overrides the query-args for the 'suggest' fields in the MetaBox 79 80 * 80 81 * @param array $args<string, mixed> … … 88 89 * Manipulates the WP_Post object before using it 89 90 * 90 * @param \WP_Post $post91 * @param WP_Post $post 91 92 * 92 93 * @since 0.9.9 93 94 */ 94 95 $post = apply_filters( 'msls_meta_box_suggest_post', $post ); 95 if ( is_object( $post ) ) { 96 $json->add( $post->ID, get_the_title( $post ) ); 97 } 96 97 $json->add( $post->ID, get_the_title( $post ) ); 98 98 } 99 99 … … 226 226 echo ( new Wrapper( 'ul', $lis ) )->render(); 227 227 228 // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited 228 229 $post = $temp; 229 230 } else { … … 304 305 $icon_type = $this->options->get_icon_type(); 305 306 $icon = MslsAdminIcon::create()->set_language( $language )->set_icon_type( $icon_type ); 306 307 $value = $title = ''; 307 $value = ''; 308 $title = ''; 309 308 310 if ( $my_data->has_value( $language ) ) { 309 311 $icon->set_href( (int) $my_data->$language ); … … 334 336 ); 335 337 338 // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited 336 339 $post = $temp; 337 340 } else { -
multisite-language-switcher/tags/2.10.0/includes/MslsOptions.php
r3287198 r3409411 29 29 class MslsOptions extends MslsGetSet implements OptionsInterface { 30 30 31 const MSLS_GET_POSTLINK_HOOK = 'msls_get_postlink'; 32 31 33 public const PREFIX = 'msls'; 32 34 public const SEPARATOR = ''; 33 35 36 /** 37 * The name of the option in the database 38 * 39 * @var string 40 */ 34 41 protected string $name; 35 protected bool $exists = false; 42 43 /** 44 * Indicates whether the option exists in the database 45 * 46 * @var bool 47 */ 48 protected bool $exists = false; 49 50 /** 51 * Autoload option 52 * 53 * @var bool 54 */ 36 55 protected bool $autoload = true; 37 56 … … 83 102 } 84 103 85 add_filter( 'msls_get_postlink', array( $options, 'check_for_blog_slug' ), 10, 2 );104 add_filter( self::MSLS_GET_POSTLINK_HOOK, array( $options, 'check_for_blog_slug' ), 10, 2 ); 86 105 87 106 return $options; … … 134 153 * 135 154 * @param int $index 136 * @param mixed $ default155 * @param mixed $preset 137 156 * 138 157 * @return mixed 139 158 */ 140 public function get_arg( int $index, $ default = null ) {141 $arg = $this->args[ $index ] ?? $ default;142 143 settype( $arg, gettype( $ default ) );159 public function get_arg( int $index, $preset = null ) { 160 $arg = $this->args[ $index ] ?? $preset; 161 162 settype( $arg, gettype( $preset ) ); 144 163 145 164 return $arg; … … 211 230 ); 212 231 213 return '' != $postlink ? $postlink : home_url( '/' );232 return '' !== $postlink ? $postlink : home_url( '/' ); 214 233 } 215 234 … … 311 330 */ 312 331 public function get_flag_url( $language ) { 313 $url = ! is_admin() && isset( $this->image_url ) ? $this->__get( 'image_url' ) : $this->get_url( ' flags' );332 $url = ! is_admin() && isset( $this->image_url ) ? $this->__get( 'image_url' ) : $this->get_url( 'assets/flags' ); 314 333 315 334 /** -
multisite-language-switcher/tags/2.10.0/includes/MslsOptionsPost.php
r3167915 r3409411 12 12 public const SEPARATOR = '_'; 13 13 14 /** 15 * @var bool 16 */ 14 17 protected bool $autoload = false; 15 18 … … 27 30 28 31 $post = get_post( (int) $this->__get( $language ) ); 29 if ( is_null( $post ) || 'publish' != $post->post_status ) {32 if ( is_null( $post ) || 'publish' !== $post->post_status ) { 30 33 return ''; 31 34 } … … 38 41 $post_link = get_permalink( $post ); 39 42 40 $post_link = apply_filters_deprecated( 'check_url', array( $post_link, $this ), '2.7.1', 'msls_get_postlink');43 $post_link = apply_filters_deprecated( 'check_url', array( $post_link, $this ), '2.7.1', MslsOptions::MSLS_GET_POSTLINK_HOOK ); 41 44 42 return apply_filters( 'msls_get_postlink', $post_link, $this );45 return apply_filters( MslsOptions::MSLS_GET_POSTLINK_HOOK, $post_link, $this ); 43 46 } 44 47 -
multisite-language-switcher/tags/2.10.0/includes/MslsOptionsQuery.php
r3287198 r3409411 17 17 public ?bool $with_front = true; 18 18 19 /** 20 * @var MslsSqlCacher 21 */ 19 22 protected MslsSqlCacher $sql_cache; 20 23 … … 35 38 * Factory method 36 39 * 37 * @param int $id This parameter is unused here 40 * @param int $id This parameter is unused here. 38 41 * 39 42 * @return ?MslsOptionsQuery … … 72 75 $post_link = $this->get_current_link(); 73 76 if ( ! empty( $post_link ) ) { 74 $post_link = apply_filters_deprecated( 'check_url', array( $post_link, $this ), '2.7.1', 'msls_get_postlink');77 $post_link = apply_filters_deprecated( 'check_url', array( $post_link, $this ), '2.7.1', MslsOptions::MSLS_GET_POSTLINK_HOOK ); 75 78 76 return apply_filters( 'msls_get_postlink', $post_link, $this );79 return apply_filters( MslsOptions::MSLS_GET_POSTLINK_HOOK, $post_link, $this ); 77 80 } 78 81 } -
multisite-language-switcher/tags/2.10.0/includes/MslsOptionsQueryAuthor.php
r3287198 r3409411 12 12 class MslsOptionsQueryAuthor extends MslsOptionsQuery { 13 13 14 /** 15 * The author ID for which the posts count is queried. 16 * 17 * @var int 18 */ 14 19 protected int $author_id; 15 20 -
multisite-language-switcher/tags/2.10.0/includes/MslsOptionsQueryDay.php
r3287198 r3409411 12 12 class MslsOptionsQueryDay extends MslsOptionsQuery { 13 13 14 /** 15 * @var int 16 */ 14 17 protected int $year; 15 18 19 /** 20 * @var int 21 */ 16 22 protected int $monthnum; 23 24 /** 25 * @var int 26 */ 17 27 protected int $day; 18 28 -
multisite-language-switcher/tags/2.10.0/includes/MslsOptionsQueryMonth.php
r3287198 r3409411 12 12 class MslsOptionsQueryMonth extends MslsOptionsQuery { 13 13 14 /** 15 * @var int 16 */ 14 17 protected int $year; 15 18 19 /** 20 * @var int 21 */ 16 22 protected int $monthnum; 17 23 -
multisite-language-switcher/tags/2.10.0/includes/MslsOptionsQueryPostType.php
r3287198 r3409411 10 10 class MslsOptionsQueryPostType extends MslsOptionsQuery { 11 11 12 /** 13 * The post type for which the options are queried. 14 * 15 * @var string 16 */ 12 17 protected string $post_type; 13 18 -
multisite-language-switcher/tags/2.10.0/includes/MslsOptionsQueryYear.php
r3287198 r3409411 12 12 class MslsOptionsQueryYear extends MslsOptionsQuery { 13 13 14 /** 15 * The year for which the posts count is queried. 16 * 17 * @var int 18 */ 14 19 protected int $year; 15 20 21 /** 22 * Constructor. 23 * 24 * @param MslsSqlCacher $sql_cache The SQL Cacher instance. 25 */ 16 26 public function __construct( MslsSqlCacher $sql_cache ) { 17 27 parent::__construct( $sql_cache ); … … 20 30 } 21 31 32 /** 33 * Get the parameters for this query. 34 * 35 * @return array<string, mixed> 36 */ 22 37 public static function get_params(): array { 23 38 return array( -
multisite-language-switcher/tags/2.10.0/includes/MslsOptionsTax.php
r3287198 r3409411 12 12 public const SEPARATOR = '_term_'; 13 13 14 /** 15 * @var bool 16 */ 14 17 protected bool $autoload = false; 15 18 … … 89 92 } 90 93 91 $post_link = apply_filters_deprecated( 'check_url', array( $post_link, $this ), '2.7.1', 'msls_get_postlink');94 $post_link = apply_filters_deprecated( 'check_url', array( $post_link, $this ), '2.7.1', MslsOptions::MSLS_GET_POSTLINK_HOOK ); 92 95 93 return apply_filters( 'msls_get_postlink', $post_link, $this );96 return apply_filters( MslsOptions::MSLS_GET_POSTLINK_HOOK, $post_link, $this ); 94 97 } 95 98 -
multisite-language-switcher/tags/2.10.0/includes/MslsOptionsTaxTerm.php
r3287198 r3409411 22 22 23 23 public function handle_rewrite(): OptionsTaxInterface { 24 add_filter( 'msls_get_postlink', array( $this, 'check_base' ), 9, 2 );24 add_filter( MslsOptions::MSLS_GET_POSTLINK_HOOK, array( $this, 'check_base' ), 9, 2 ); 25 25 26 26 return $this; … … 44 44 $base_option = self::get_base_option(); 45 45 46 if ( $base_defined != $base_option ) {46 if ( $base_defined !== $base_option ) { 47 47 $search = '/' . $base_defined . '/'; 48 48 $replace = '/' . $base_option . '/'; … … 70 70 71 71 public static function get_base_option(): string { 72 $base_option = get_option( static::BASE_OPTION, '' ); 73 74 return $base_option ?: static::BASE_DEFINED; 72 return get_option( static::BASE_OPTION, static::BASE_DEFINED ); 75 73 } 76 74 } -
multisite-language-switcher/tags/2.10.0/includes/MslsOutput.php
r3287198 r3409411 11 11 */ 12 12 class MslsOutput extends MslsMain { 13 14 const MSLS_ALTERNATE_LINKS_HOOK = 'msls_output_get_alternate_links'; 15 16 const MSLS_ALTERNATE_LINKS_ARR_HOOK = 'msls_output_get_alternate_links_arr'; 17 18 const MSLS_ALTERNATE_LINKS_DEFAULT_HOOK = 'msls_output_get_alternate_links_default'; 19 20 const MSLS_GET_HOOK = 'msls_output_get'; 21 22 const MSLS_NO_TRANSLATION_FOUND_HOOK = 'msls_output_no_translation_found'; 23 24 const MSLS_GET_TAGS_HOOK = 'msls_output_get_tags'; 25 13 26 14 27 public static function init(): object { … … 64 77 } 65 78 66 if ( has_filter( 'msls_output_get') ) {79 if ( has_filter( self::MSLS_GET_HOOK ) ) { 67 80 /** 68 81 * Returns HTML-link for an item of the output-arr … … 74 87 * @since 0.9.8 75 88 */ 76 $arr[] = (string) apply_filters( 'msls_output_get', $url, $link, $is_current_blog );89 $arr[] = (string) apply_filters( self::MSLS_GET_HOOK, $url, $link, $is_current_blog ); 77 90 } else { 78 91 $arr[] = sprintf( … … 80 93 $url, 81 94 $link->txt, 82 $is_current_blog ? ' class="current_language" ' : '',95 $is_current_blog ? ' class="current_language" aria-current="page"' : '', 83 96 $link 84 97 ); … … 96 109 */ 97 110 public function get_alternate_links() { 98 $blogs = msls_blog_collection();99 $h lObj= new HrefLang( $blogs );100 $options = MslsOptions::create();101 $arr = array();102 $default = '';111 $blogs = msls_blog_collection(); 112 $href_lang = new HrefLang( $blogs ); 113 $options = MslsOptions::create(); 114 $arr = array(); 115 $default = ''; 103 116 104 117 foreach ( $blogs->get_objects() as $blog ) { 105 $url = apply_filters( 'mlsl_output_get_alternate_links', $blog->get_url( $options ), $blog );118 $url = apply_filters( self::MSLS_ALTERNATE_LINKS_HOOK, $blog->get_url( $options ), $blog ); 106 119 if ( is_null( $url ) ) { 107 120 continue; 108 121 } 109 122 110 $hreflang = $h lObj->get( $blog->get_language() );123 $hreflang = $href_lang->get( $blog->get_language() ); 111 124 $format = '<link rel="alternate" href="%1$s" hreflang="%2$s" />'; 112 125 … … 119 132 120 133 if ( 1 === count( $arr ) ) { 121 return apply_filters( 'mlsl_output_get_alternate_links_default', $default );122 } 123 124 $arr = (array) apply_filters( 'mlsl_output_get_alternate_links_arr', $arr );134 return apply_filters( self::MSLS_ALTERNATE_LINKS_DEFAULT_HOOK, $default ); 135 } 136 137 $arr = (array) apply_filters( self::MSLS_ALTERNATE_LINKS_ARR_HOOK, $arr ); 125 138 126 139 return implode( PHP_EOL, $arr ); … … 135 148 $arr = $this->get( $this->options->display, false, isset( $this->options->only_with_translation ) ); 136 149 if ( empty( $arr ) ) { 137 return apply_filters( 'msls_output_no_translation_found', '' );150 return apply_filters( self::MSLS_NO_TRANSLATION_FOUND_HOOK, '' ); 138 151 } 139 152 … … 166 179 * @since 1.0 167 180 */ 168 $this->tags = (array) apply_filters( 'msls_output_get_tags', $this->tags );181 $this->tags = (array) apply_filters( self::MSLS_GET_TAGS_HOOK, $this->tags ); 169 182 } 170 183 … … 199 212 } 200 213 201 return MslsOptions::class != get_class( $thing ) && ! $thing->has_value( $language ) && $exists;214 return MslsOptions::class !== get_class( $thing ) && ! $thing->has_value( $language ) && $exists; 202 215 } 203 216 } -
multisite-language-switcher/tags/2.10.0/includes/MslsPlugin.php
r3287198 r3409411 34 34 public static function init(): void { 35 35 $obj = new self( msls_options() ); 36 37 add_action( 'init', array( $obj, 'init_i18n_support' ) );38 36 39 37 register_activation_hook( self::file(), array( __CLASS__, 'activate' ) ); … … 115 113 116 114 $ver = defined( 'MSLS_PLUGIN_VERSION' ) ? constant( 'MSLS_PLUGIN_VERSION' ) : false; 117 $folder = defined( 'SCRIPT_DEBUG' ) && constant( 'SCRIPT_DEBUG' ) ? 'src' : ' js';118 119 wp_enqueue_style( 'msls-styles', self::plugins_url( ' css/msls.css' ), array(), $ver );120 wp_enqueue_style( 'msls-flags', self::plugins_url( ' css-flags/css/flag-icon.min.css' ), array(), $ver );115 $folder = defined( 'SCRIPT_DEBUG' ) && constant( 'SCRIPT_DEBUG' ) ? 'src' : 'assets/js'; 116 117 wp_enqueue_style( 'msls-styles', self::plugins_url( 'assets/css/msls.css' ), array(), $ver ); 118 wp_enqueue_style( 'msls-flags', self::plugins_url( 'assets/css-flags/css/flag-icon.min.css' ), array(), $ver ); 121 119 122 120 if ( $this->options->activate_autocomplete ) { … … 168 166 public static function path(): string { 169 167 return defined( 'MSLS_PLUGIN_PATH' ) ? constant( 'MSLS_PLUGIN_PATH' ) : ''; 170 }171 172 /**173 * Load textdomain174 *175 * The method should be executed always on init because we have some translatable string in the frontend too.176 */177 public function init_i18n_support(): void {178 load_plugin_textdomain( 'multisite-language-switcher', false, self::dirname( '/languages/' ) );179 168 } 180 169 -
multisite-language-switcher/tags/2.10.0/includes/MslsPostTag.php
r3287198 r3409411 1 1 <?php declare( strict_types=1 ); 2 3 /**4 * MslsPostTag5 *6 * @author Dennis Ploetner <re@lloc.de>7 */8 2 9 3 namespace lloc\Msls; … … 18 12 class MslsPostTag extends MslsMain { 19 13 20 const EDIT_ACTION = 'msls_post_tag_edit_input';21 const ADD_ACTION = 'msls_post_tag_add_input';14 const MSLS_EDIT_INPUT_ACTION = 'msls_post_tag_edit_input'; 15 const MSLS_ADD_INPUT_ACTION = 'msls_post_tag_add_input'; 22 16 23 17 /** … … 85 79 86 80 $taxonomy = msls_content_types()->acl_request(); 87 if ( '' != $taxonomy ) {81 if ( '' !== $taxonomy ) { 88 82 add_action( "{$taxonomy}_add_form_fields", array( $obj, 'add_input' ) ); 89 83 add_action( "{$taxonomy}_edit_form_fields", array( $obj, 'edit_input' ), 10, 2 ); … … 99 93 */ 100 94 public function add_input( string $taxonomy ): void { 101 if ( did_action( self:: ADD_ACTION ) ) {95 if ( did_action( self::MSLS_ADD_INPUT_ACTION ) ) { 102 96 return; 103 97 } … … 115 109 echo '</div>'; 116 110 117 do_action( self:: ADD_ACTION, $taxonomy );111 do_action( self::MSLS_ADD_INPUT_ACTION, $taxonomy ); 118 112 } 119 113 … … 125 119 */ 126 120 public function edit_input( \WP_Term $tag, string $taxonomy ): void { 127 if ( did_action( self:: EDIT_ACTION ) ) {121 if ( did_action( self::MSLS_EDIT_INPUT_ACTION ) ) { 128 122 return; 129 123 } … … 149 143 $this->the_input( $tag, $title_format, $item_format ); 150 144 151 do_action( self:: EDIT_ACTION, $tag, $taxonomy );145 do_action( self::MSLS_EDIT_INPUT_ACTION, $tag, $taxonomy ); 152 146 } 153 147 … … 185 179 $icon_type = $this->options->get_icon_type(); 186 180 $icon = MslsAdminIcon::create()->set_language( $language )->set_icon_type( $icon_type ); 187 188 $value = $title = ''; 181 $value = ''; 182 $title = ''; 183 189 184 if ( $mydata->has_value( $language ) ) { 190 185 $term = get_term( $mydata->$language, $type ); -
multisite-language-switcher/tags/2.10.0/includes/MslsPostTagClassic.php
r3287198 r3409411 12 12 class MslsPostTagClassic extends MslsPostTag { 13 13 14 const EDIT_ACTION = 'msls_post_tag_classic_edit_input';15 const ADD_ACTION = 'msls_post_tag_classic_add_input';14 const MSLS_EDIT_INPUT_ACTION = 'msls_post_tag_classic_edit_input'; 15 const MSLS_ADD_INPUT_ACTION = 'msls_post_tag_classic_add_input'; 16 16 17 17 /** … … 21 21 */ 22 22 public function add_input( string $taxonomy ): void { 23 if ( did_action( self:: ADD_ACTION ) ) {23 if ( did_action( self::MSLS_ADD_INPUT_ACTION ) ) { 24 24 return; 25 25 } … … 37 37 echo '</div>'; 38 38 39 do_action( self:: ADD_ACTION, $taxonomy );39 do_action( self::MSLS_ADD_INPUT_ACTION, $taxonomy ); 40 40 } 41 41 … … 47 47 */ 48 48 public function edit_input( \WP_Term $tag, string $taxonomy ): void { 49 if ( did_action( self:: EDIT_ACTION ) ) {49 if ( did_action( self::MSLS_EDIT_INPUT_ACTION ) ) { 50 50 return; 51 51 } … … 69 69 $this->the_input( $tag, $title_format, $item_format ); 70 70 71 do_action( self:: EDIT_ACTION, $tag, $taxonomy );71 do_action( self::MSLS_EDIT_INPUT_ACTION, $tag, $taxonomy ); 72 72 } 73 73 -
multisite-language-switcher/tags/2.10.0/includes/MslsPostType.php
r3287198 r3409411 24 24 public static function get(): array { 25 25 $types = array_merge( 26 array( 'post', 'page' ), // we don't need attachment, revision or nav_menu_item here26 array( 'post', 'page' ), // We don't need attachment, revision or nav_menu_item here. 27 27 get_post_types( 28 28 array( … … 43 43 $post_type = ! empty( $request['post_type'] ) ? esc_attr( $request['post_type'] ) : 'post'; 44 44 45 return in_array( $post_type, $this->get() ) ? $post_type : '';45 return in_array( $post_type, $this->get(), true ) ? $post_type : ''; 46 46 } 47 47 -
multisite-language-switcher/tags/2.10.0/includes/MslsRegistry.php
r3287198 r3409411 51 51 */ 52 52 public static function instance(): self { 53 if ( self::$instance === null) {53 if ( null === self::$instance ) { 54 54 self::$instance = new self(); 55 55 } -
multisite-language-switcher/tags/2.10.0/includes/MslsRegistryInstance.php
r3287198 r3409411 17 17 public static function instance() { 18 18 $class = get_called_class(); 19 $obj = MslsRegistry::get_object( $class ); 19 20 20 if ( ! ( $obj = MslsRegistry::get_object( $class ) )) {21 if ( ! $obj ) { 21 22 $obj = new $class(); 22 23 -
multisite-language-switcher/tags/2.10.0/includes/MslsRequest.php
r3287198 r3409411 6 6 7 7 /** 8 * @param string $name 9 * 8 10 * @return array<int, int> 11 * 12 * @throws \InvalidArgumentException No field with the given name exists. 9 13 */ 10 14 public static function get_config( string $name ): array { … … 31 35 32 36 /** 33 * @return mixed 37 * @param string $var_name 38 * @param int|null $input_type 39 * 40 * @return ?mixed 34 41 */ 35 42 public static function get_var( string $var_name, ?int $input_type = null ) { … … 50 57 /** 51 58 * @param string $name 52 * @param mixed $ default59 * @param mixed $preset 53 60 * 54 61 * @return mixed 55 62 */ 56 public static function get( string $name, $ default ) {57 return self::has_var( $name ) ? self::get_var( $name ) : $ default;63 public static function get( string $name, $preset ) { 64 return self::has_var( $name ) ? self::get_var( $name ) : $preset; 58 65 } 59 66 … … 79 86 * 80 87 * @param string[] $keys 81 * @param mixed $ default88 * @param mixed $preset 82 89 * 83 90 * @return array<string, mixed> 84 91 */ 85 public static function get_request( array $keys, $ default = '' ): array {92 public static function get_request( array $keys, $preset = '' ): array { 86 93 $values = array(); 87 94 88 95 foreach ( $keys as $key ) { 89 96 list( , $filter ) = self::get_config( $key ); 90 $values[ $key ] = $ default;97 $values[ $key ] = $preset; 91 98 92 99 if ( filter_has_var( INPUT_POST, $key ) ) { -
multisite-language-switcher/tags/2.10.0/includes/MslsShortCode.php
r3287198 r3409411 7 7 public static function init(): void { 8 8 add_shortcode( 'sc_msls_widget', array( __CLASS__, 'render_widget' ) ); 9 add_shortcode( 'sc_msls', ' get_the_msls' );9 add_shortcode( 'sc_msls', 'msls_get_switcher' ); 10 10 } 11 11 -
multisite-language-switcher/tags/2.10.0/includes/MslsSqlCacher.php
r3287198 r3409411 23 23 24 24 /** 25 * Cache group 25 * Cache group for the SQL cacher 26 26 */ 27 27 const CACHE_GROUP = 'msls-cache-group'; 28 28 29 29 /** 30 * Database object30 * @var \wpdb 31 31 */ 32 32 protected \wpdb $db; 33 33 34 34 /** 35 * Key for the cached result-set35 * @var string 36 36 */ 37 37 protected string $cache_key; … … 39 39 /** 40 40 * Expiration time for the cache in seconds 41 * 42 * @var int 41 43 */ 42 44 protected int $expire; … … 44 46 /** 45 47 * Constructor 48 * 49 * @param \wpdb $db The WordPress database object. 50 * @param string $cache_key The cache key to use for storing results. 51 * @param int $expire The expiration time for the cache in seconds. Default is 0 (no expiration). 46 52 */ 47 53 public function __construct( \wpdb $db, string $cache_key, int $expire = 0 ) { … … 71 77 * Magic __get 72 78 * 79 * @param string $name 80 * 73 81 * @return mixed 74 82 */ … … 86 94 */ 87 95 public function __call( string $method, array $args ) { 88 if ( 'get_' != substr( $method, 0, 4 ) ) {96 if ( 'get_' !== substr( $method, 0, 4 ) ) { 89 97 return call_user_func_array( array( $this->db, $method ), $args ); 90 98 } -
multisite-language-switcher/tags/2.10.0/includes/MslsTaxonomy.php
r3287198 r3409411 31 31 public static function get(): array { 32 32 $types = array_merge( 33 array( 'category', 'post_tag' ), // no 'post_link' here33 array( 'category', 'post_tag' ), // No 'post_link' here. 34 34 get_taxonomies( 35 35 array( -
multisite-language-switcher/tags/2.10.0/includes/MslsWidget.php
r3287198 r3409411 11 11 */ 12 12 class MslsWidget extends \WP_Widget { 13 14 const MSLS_ALTERNATIVE_CONTENT_HOOK = 'msls_widget_alternative_content'; 13 15 14 16 public const ID_BASE = 'mslswidget'; … … 54 56 if ( '' === $content ) { 55 57 $text = __( 'No available translations found', 'multisite-language-switcher' ); 56 $content = apply_filters( 'msls_widget_alternative_content', $text );58 $content = apply_filters( self::MSLS_ALTERNATIVE_CONTENT_HOOK, $text ); 57 59 } 58 60 -
multisite-language-switcher/tags/2.10.0/includes/Query/AbstractQuery.php
r3287198 r3409411 12 12 abstract class AbstractQuery { 13 13 14 /** 15 * The SQL Cacher instance. 16 * 17 * @var MslsSqlCacher 18 */ 14 19 protected MslsSqlCacher $sql_cache; 15 20 21 /** 22 * Constructor. 23 * 24 * @param MslsSqlCacher $sql_cache The SQL Cacher instance. 25 */ 16 26 public function __construct( MslsSqlCacher $sql_cache ) { 17 27 $this->sql_cache = $sql_cache; -
multisite-language-switcher/tags/2.10.0/includes/Query/TranslatedPostIdQuery.php
r3287198 r3409411 10 10 class TranslatedPostIdQuery extends AbstractQuery { 11 11 12 13 12 /** 13 * @param string $language 14 * 14 15 * @return int[] 15 16 */ -
multisite-language-switcher/tags/2.10.0/includes/index.php
r3287198 r3409411 1 1 <?php 2 // Silence is golden. 2 /** 3 * Silence is golden. 4 * 5 * @package msls 6 */ -
multisite-language-switcher/tags/2.10.0/index.php
r3287198 r3409411 1 1 <?php 2 // Silence is golden. 2 /** 3 * Silence is golden. 4 * 5 * @package msls 6 */ -
multisite-language-switcher/tags/2.10.0/languages/index.php
r3287198 r3409411 1 1 <?php 2 // Silence is golden. 2 /** 3 * Silence is golden. 4 * 5 * @package msls 6 */ -
multisite-language-switcher/tags/2.10.0/vendor/composer/installed.php
r3287198 r3409411 2 2 'root' => array( 3 3 'name' => 'lloc/multisite-language-switcher', 4 'pretty_version' => '2. 9.6',5 'version' => '2. 9.6.0',6 'reference' => ' 720656eb12e8c4f5bb5271f2365374e2e18349b4',4 'pretty_version' => '2.10.0', 5 'version' => '2.10.0.0', 6 'reference' => '897c7ea2766f60104e532f9183a1eccbbba090ac', 7 7 'type' => 'wordpress-plugin', 8 8 'install_path' => __DIR__ . '/../../', … … 21 21 ), 22 22 'lloc/multisite-language-switcher' => array( 23 'pretty_version' => '2. 9.6',24 'version' => '2. 9.6.0',25 'reference' => ' 720656eb12e8c4f5bb5271f2365374e2e18349b4',23 'pretty_version' => '2.10.0', 24 'version' => '2.10.0.0', 25 'reference' => '897c7ea2766f60104e532f9183a1eccbbba090ac', 26 26 'type' => 'wordpress-plugin', 27 27 'install_path' => __DIR__ . '/../../', -
multisite-language-switcher/tags/2.10.0/vendor/composer/platform_check.php
r3002259 r3409411 20 20 } 21 21 } 22 trigger_error( 23 'Composer detected issues in your platform: ' . implode(' ', $issues), 24 E_USER_ERROR 22 throw new \RuntimeException( 23 'Composer detected issues in your platform: ' . implode(' ', $issues) 25 24 ); 26 25 } -
multisite-language-switcher/trunk/MultisiteLanguageSwitcher.php
r3287198 r3409411 3 3 * Multisite Language Switcher Plugin 4 4 * 5 * @copyright Copyright (C) 2011-2022, Dennis Ploetner, re@lloc.de6 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 or later7 * @wordpress-plugin8 *9 5 * Plugin Name: Multisite Language Switcher 10 * Version: 2. 9.66 * Version: 2.10.0 11 7 * Plugin URI: http://msls.co/ 12 8 * Description: A simple but powerful plugin that will help you to manage the relations of your contents in a multilingual multisite-installation. … … 29 25 * along with this program; if not, write to the Free Software 30 26 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 27 * 28 * @copyright Copyright (C) 2011-2022, Dennis Ploetner, re@lloc.de 29 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 or later 30 * @wordpress-plugin 31 * @package msls 31 32 */ 32 33 … … 41 42 */ 42 43 if ( ! defined( 'MSLS_PLUGIN_VERSION' ) ) { 43 define( 'MSLS_PLUGIN_VERSION', '2. 9.6' );44 define( 'MSLS_PLUGIN_VERSION', '2.10.0' ); 44 45 define( 'MSLS_PLUGIN_PATH', plugin_basename( __FILE__ ) ); 45 46 define( 'MSLS_PLUGIN__FILE__', __FILE__ ); 46 47 48 require_once __DIR__ . '/includes/deprectated.php'; 49 47 50 /** 48 51 * Get the output for using the links to the translations in your code 49 52 * 50 53 * @package Msls 51 *52 54 * @param mixed $attr 53 * 54 * @return string 55 */ 56 function get_the_msls( $attr ): string { 55 * @return string 56 */ 57 function msls_get_switcher( $attr ): string { 57 58 $arr = is_array( $attr ) ? $attr : array(); 58 59 $obj = apply_filters( 'msls_get_output', null ); … … 76 77 * @param string[] $arr 77 78 */ 78 function the_msls( array $arr = array() ): void {79 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped80 echo get_the_msls( $arr );79 function msls_the_switcher( array $arr = array() ): void { 80 // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped 81 echo msls_get_switcher( $arr ); 81 82 } 82 83 … … 88 89 * @return string 89 90 */ 90 function get_msls_flag_url( string $locale ): string {91 function msls_get_flag_url( string $locale ): string { 91 92 return ( new \lloc\Msls\MslsOptions() )->get_flag_url( $locale ); 92 93 } … … 96 97 * 97 98 * @param string $locale 98 * 99 * @return string 100 */ 101 function get_msls_blog_description( string $locale, string $default = '' ): string { 99 * @param string $preset 100 * 101 * @return string 102 */ 103 function msls_get_blog_description( string $locale, string $preset = '' ): string { 102 104 $blog = msls_blog( $locale ); 103 105 104 return $blog ? $blog->get_description() : $ default;106 return $blog ? $blog->get_description() : $preset; 105 107 } 106 108 … … 109 111 * 110 112 * @param string $locale 111 * @param string $ default112 * 113 * @return string 114 */ 115 function get_msls_permalink( string $locale, string $default = '' ): string {113 * @param string $preset 114 * 115 * @return string 116 */ 117 function msls_get_permalink( string $locale, string $preset = '' ): string { 116 118 $url = null; 117 119 $blog = msls_blog( $locale ); … … 122 124 } 123 125 124 return $url ?? $ default;126 return $url ?? $preset; 125 127 } 126 128 … … 236 238 * @return void 237 239 */ 238 if ( ! function_exists( '__return_void' ) ) { 239 function __return_void(): void { 240 } 240 function msls_return_void(): void { 241 241 } 242 242 -
multisite-language-switcher/trunk/includes/Component/Icon.php
r3167915 r3409411 19 19 */ 20 20 public function __construct() { 21 if ( $this->get_include() ) {22 $this->map = include $this->get_include(); 23 }21 $filePath = $this->get_include(); 22 23 $this->map = ! is_null( $filePath ) && is_readable( $filePath ) ? require $filePath : array(); 24 24 } 25 25 … … 32 32 */ 33 33 protected function maybe( string $language, string $prefix = '', string $postfix = '' ): string { 34 if ( 5 == strlen( $language ) ) {34 if ( 5 === strlen( $language ) ) { 35 35 $language = strtolower( substr( $language, - 2 ) ); 36 36 } … … 40 40 41 41 /** 42 * @return string42 * @return ?string 43 43 */ 44 abstract protected function get_include(): string; 44 protected function get_include(): ?string { 45 return null; 46 } 45 47 46 48 /** -
multisite-language-switcher/trunk/includes/Component/Icon/IconLabel.php
r3287198 r3409411 13 13 14 14 /** 15 * @return string16 */17 protected function get_include(): string {18 return '';19 }20 21 /**22 15 * @param string $language 23 16 * -
multisite-language-switcher/trunk/includes/Component/Icon/IconPng.php
r3167915 r3409411 13 13 final class IconPng extends Icon { 14 14 15 const FLAGS_FILE = ' flags/flags.php';15 const FLAGS_FILE = 'assets/flags/flags.php'; 16 16 17 17 /** -
multisite-language-switcher/trunk/includes/Component/Icon/IconSvg.php
r3167915 r3409411 13 13 final class IconSvg extends Icon { 14 14 15 const FLAGS_FILE = ' css-flags/flags.php';15 const FLAGS_FILE = 'assets/css-flags/flags.php'; 16 16 17 17 /** -
multisite-language-switcher/trunk/includes/Component/Input/Select.php
r3167915 r3409411 20 20 21 21 /** 22 * @param string $key Name and ID of the form-element 23 * @param mixed[] $arr Options as a ssociative array24 * @param ?string $selected Values which should be selected 22 * @param string $key Name and ID of the form-element. 23 * @param mixed[] $arr Options as an associative array. 24 * @param ?string $selected Values which should be selected. 25 25 */ 26 26 public function __construct( string $key, array $arr, ?string $selected = null ) { -
multisite-language-switcher/trunk/includes/Component/Input/Text.php
r3199861 r3409411 33 33 * @param string|null $value 34 34 * @param int $size 35 * @param bool $read only35 * @param bool $read_only 36 36 */ 37 public function __construct( string $key, ?string $value, int $size = self::DEFAULT_SIZE, bool $read only = false ) {37 public function __construct( string $key, ?string $value, int $size = self::DEFAULT_SIZE, bool $read_only = false ) { 38 38 $this->key = $key; 39 39 $this->value = $value; 40 40 $this->size = $size; 41 $this->readonly = $read only ? ' readonly="readonly"' : '';41 $this->readonly = $read_only ? ' readonly="readonly"' : ''; 42 42 } 43 43 -
multisite-language-switcher/trunk/includes/Component/Wrapper.php
r3167915 r3409411 5 5 final class Wrapper extends Component { 6 6 7 /** 8 * @var string 9 */ 7 10 protected string $element; 8 11 12 /** 13 * @var string 14 */ 9 15 protected string $content; 10 16 -
multisite-language-switcher/trunk/includes/ContentImport/AttachmentPathFinder.php
r3287198 r3409411 11 11 /** 12 12 * @param array<string, array<string, mixed>> $sources 13 * @param mixed $size Array14 * @param string $image Src15 * @param mixed $image Meta16 * @param int $attachment Id13 * @param mixed $size_array 14 * @param string $image_src 15 * @param mixed $image_meta 16 * @param int $attachment_id 17 17 * 18 18 * @return array<string, mixed> 19 19 */ 20 public function filter_srcset( array $sources, $sizeArray, $imageSrc, $imageMeta, $attachmentId ): array { 21 if ( ! $msls_imported = $this->has_import_data( $attachmentId ) ) { 20 public function filter_srcset( array $sources, $size_array, $image_src, $image_meta, $attachment_id ): array { 21 $msls_imported = $this->has_import_data( $attachment_id ); 22 if ( ! $msls_imported ) { 22 23 return $sources; 23 24 } … … 28 29 } 29 30 30 $extension = '.' . pathinfo( $source_post->guid, PATHINFO_EXTENSION );31 $pattern = '/(-[\\d]+x[\\d]+)*' . preg_quote( $extension, '/' ) . '$/';32 $src WithoutExtension = preg_replace( $pattern, '', $imageSrc );31 $extension = '.' . pathinfo( $source_post->guid, PATHINFO_EXTENSION ); 32 $pattern = '/(-[\\d]+x[\\d]+)*' . preg_quote( $extension, '/' ) . '$/'; 33 $src_without_extension = preg_replace( $pattern, '', $image_src ); 33 34 34 35 foreach ( $sources as $key => &$value ) { 35 36 preg_match( $pattern, $value['url'], $matches ); 36 37 $w_and_h = ! empty( $matches[1] ) ? $matches[1] : ''; 37 $value['url'] = $src WithoutExtension . $w_and_h . $extension;38 $value['url'] = $src_without_extension . $w_and_h . $extension; 38 39 } 39 40 … … 72 73 */ 73 74 public function filter_attachment_url( $url, $attachment_id ) { 74 if ( ! $msls_imported = $this->has_import_data( $attachment_id ) ) { 75 $msls_imported = $this->has_import_data( $attachment_id ); 76 if ( ! $msls_imported ) { 75 77 return $url; 76 78 } -
multisite-language-switcher/trunk/includes/ContentImport/ContentImporter.php
r3287198 r3409411 22 22 use WithRequestPostAttributes; 23 23 24 const MSLS_BEFORE_IMPORT_ACTION = 'msls_content_import_before_import'; 25 26 const MSLS_AFTER_IMPORT_ACTION = 'msls_content_import_after_import'; 27 24 28 /** 25 29 * @var MslsMain 26 30 */ 27 protected $main; 31 protected MslsMain $main; 32 33 /** 34 * @var ImportLogger|null 35 */ 28 36 protected ?ImportLogger $logger = null; 37 38 /** 39 * @var Relations|null 40 */ 29 41 protected ?Relations $relations = null; 30 42 … … 32 44 * @var bool Whether the class should handle requests or not. 33 45 */ 34 protected $handle = true;46 protected bool $handle = true; 35 47 36 48 /** 37 49 * @var int The ID of the post the class created while handling the request, if any. 38 50 */ 39 protected $has_created_post = 0;51 protected int $has_created_post = 0; 40 52 41 53 /** … … 45 57 */ 46 58 public function __construct( ?MslsMain $main = null ) { 47 $this->main = $main ?: MslsMain::create();48 } 49 50 /** 51 * @return \lloc\Msls\ContentImport\ImportLogger52 */ 53 public function get_logger() {59 $this->main = ! is_null( $main ) ? $main : MslsMain::create(); 60 } 61 62 /** 63 * @return ?ImportLogger 64 */ 65 public function get_logger(): ?ImportLogger { 54 66 return $this->logger; 55 67 } 56 68 57 69 /** 58 * @param \lloc\Msls\ContentImport\ImportLogger $logger59 */ 60 public function set_logger( $logger ): void {70 * @param ImportLogger $logger 71 */ 72 public function set_logger( ImportLogger $logger ): void { 61 73 $this->logger = $logger; 62 74 } 63 75 64 76 /** 65 * @return \lloc\Msls\ContentImport\Relations66 */ 67 public function get_relations() {77 * @return ?Relations 78 */ 79 public function get_relations(): ?Relations { 68 80 return $this->relations; 69 81 } 70 82 71 83 /** 72 * @param \lloc\Msls\ContentImport\Relations $relations73 */ 74 public function set_relations( $relations ): void {84 * @param Relations $relations 85 */ 86 public function set_relations( Relations $relations ): void { 75 87 $this->relations = $relations; 76 88 } … … 84 96 */ 85 97 public function handle_import( array $data = array() ) { 86 if ( ! $this->pre_flight_check() || false === $sources = $this->parse_sources() ) { 98 $sources = $this->parse_sources(); 99 if ( ! $this->pre_flight_check() || false === $sources ) { 87 100 return $data; 88 101 } … … 90 103 list( $source_blog_id, $source_post_id ) = $sources; 91 104 92 if ( $source_blog_id === get_current_blog_id()) {105 if ( get_current_blog_id() === $source_blog_id ) { 93 106 return $data; 94 107 } … … 148 161 } 149 162 163 // phpcs:ignore WordPress.Security.NonceVerification.Missing 150 164 if ( ! isset( $_POST['msls_import'] ) ) { 151 165 return false; … … 225 239 $this->handle( true ); 226 240 227 $this->has_created_post = $post_id ?: false;241 $this->has_created_post = $post_id > 0 ? $post_id : false; 228 242 229 243 restore_current_blog(); … … 240 254 $this->handle = $handle; 241 255 242 // also prevent MSLS from saving256 // Also, prevent MSLS from saving. 243 257 if ( false === $handle ) { 244 add_action( 'msls_main_save', ' __return_void' );258 add_action( 'msls_main_save', 'msls_return_void' ); 245 259 } else { 246 remove_action( 'msls_main_save', ' __return_void' );260 remove_action( 'msls_main_save', 'msls_return_void' ); 247 261 } 248 262 } … … 268 282 * @param ImportCoordinates $import_coordinates 269 283 */ 270 do_action( 'msls_content_import_before_import', $import_coordinates );284 do_action( self::MSLS_BEFORE_IMPORT_ACTION, $import_coordinates ); 271 285 272 286 /** … … 329 343 * @since TBD 330 344 */ 331 do_action( 'msls_content_import_after_import', $import_coordinates, $this->logger, $this->relations );345 do_action( self::MSLS_AFTER_IMPORT_ACTION, $import_coordinates, $this->logger, $this->relations ); 332 346 333 347 /** … … 356 370 protected function update_inserted_blog_post_data( $blog_id, $post_id, array $data ) { 357 371 $data['ID'] = $post_id; 358 $data['post_status'] = empty( $data['post_status'] ) || $data['post_status'] === 'auto-draft'372 $data['post_status'] = empty( $data['post_status'] ) || 'auto-draft' === $data['post_status'] 359 373 ? 'draft' 360 374 : $data['post_status']; … … 372 386 switch_to_blog( $dest_blog_id ); 373 387 $edit_post_link = html_entity_decode( get_edit_post_link( $post_id ) ); 374 wp_ redirect( $edit_post_link );388 wp_safe_redirect( $edit_post_link ); 375 389 die(); 376 390 } … … 382 396 * the context of a content import as it will be populated. 383 397 * 384 * @param bool $ empty398 * @param bool $is_empty 385 399 * 386 400 * @return bool 387 401 */ 388 public function filter_empty( $ empty ) {402 public function filter_empty( $is_empty ) { 389 403 if ( ! $this->main->verify_nonce() ) { 390 return $empty; 391 } 392 404 return $is_empty; 405 } 406 407 // phpcs:ignore WordPress.Security.NonceVerification.Missing 393 408 if ( ! isset( $_POST['msls_import'] ) ) { 394 return $ empty;409 return $is_empty; 395 410 } 396 411 -
multisite-language-switcher/trunk/includes/ContentImport/ImportCoordinates.php
r3287198 r3409411 65 65 } 66 66 67 if ( $this->source_lang !== MslsBlogCollection::get_blog_language( $this->source_blog_id )) {67 if ( MslsBlogCollection::get_blog_language( $this->source_blog_id ) !== $this->source_lang ) { 68 68 return false; 69 69 } 70 if ( $this->dest_lang !== MslsBlogCollection::get_blog_language( $this->dest_blog_id )) {70 if ( MslsBlogCollection::get_blog_language( $this->dest_blog_id ) !== $this->dest_lang ) { 71 71 return false; 72 72 } -
multisite-language-switcher/trunk/includes/ContentImport/ImportLogger.php
r3287198 r3409411 8 8 class ImportLogger { 9 9 10 /** 11 * @var string 12 */ 10 13 protected string $levels_delimiter = '/'; 11 14 … … 63 66 $log_writer = apply_filters( 'msls_content_import_log_writer', $default_log_writer, $this->import_coordinates ); 64 67 if ( empty( $log_writer ) ) { 65 // we assume that was done on purpose to prevent logging68 // We assume that was done on purpose to prevent logging. 66 69 return; 67 70 } … … 72 75 73 76 if ( ! $log_writer instanceof LogWriter ) { 74 // something is fishy, let's use the default one77 // Something is fishy, let's use the default one. 75 78 $log_writer = $default_log_writer; 76 79 } -
multisite-language-switcher/trunk/includes/ContentImport/Importers/BaseImporter.php
r3287198 r3409411 27 27 * BaseImporter constructor. 28 28 * 29 * @param ImportCoordinates $import_coordinates 29 30 * @param ImportLogger|null $logger 30 31 * @param Relations|null $relations … … 36 37 ) { 37 38 $this->import_coordinates = $import_coordinates; 38 $this->logger = $logger ?: new ImportLogger( $this->import_coordinates );39 $this->relations = $relations ?: new Relations( $this->import_coordinates );39 $this->logger = ! is_null( $logger ) ? $logger : new ImportLogger( $this->import_coordinates ); 40 $this->relations = ! is_null( $relations ) ? $relations : new Relations( $this->import_coordinates ); 40 41 } 41 42 -
multisite-language-switcher/trunk/includes/ContentImport/Importers/ImportersBaseFactory.php
r3199861 r3409411 20 20 21 21 /** 22 * Creates an Importer instance based on the provided ImportCoordinates. 23 * 24 * @param ImportCoordinates $import_coordinates The coordinates for the import operation. 25 * 22 26 * @return Importer 27 * 28 * @throws \RuntimeException If the TYPE constant is not defined in the child class. 23 29 */ 24 30 public function make( ImportCoordinates $import_coordinates ) { 25 31 if ( static::TYPE === self::TYPE ) { 26 // this is a developer-land exception, no need to localize it32 // This is a developer-land exception, no need to localize it. 27 33 throw new \RuntimeException( 'Importers factories should define their own type' ); 28 34 } … … 54 60 55 61 $first = count( $map ) > 0 ? reset( $map ) : null; 56 $slug = $import_coordinates->get_importer_for( $type ) ?: $first;62 $slug = $import_coordinates->get_importer_for( $type ); 57 63 58 // if there is some incoherence return the null-doing base importer 64 if ( is_null( $slug ) ) { 65 $slug = $first; 66 } 67 68 // If there is some incoherence, return the null-doing base importer. 59 69 $class = ! empty( $slug ) && isset( $map[ $slug ] ) ? $map[ $slug ] : BaseImporter::class; 60 70 -
multisite-language-switcher/trunk/includes/ContentImport/Importers/PostThumbnail/Linking.php
r3199861 r3409411 61 61 switch_to_blog( $this->import_coordinates->dest_blog_id ); 62 62 63 if ( $source_post_thumbnail_attachment instanceof \WP_Post ) { 64 // in some instances the folder sep. `/` might be duplicated, we de-duplicate it 65 array_walk( 66 $source_upload_dir, 67 function ( &$entry ) { 68 $entry = str_replace( '//', '/', $entry ); 69 } 70 ); 71 $source_uploads_dir = untrailingslashit( 72 str_replace( 73 $source_upload_dir['subdir'], 74 '', 75 $source_upload_dir['path'] 76 ) 77 ); 78 $source_post_thumbnail_file = $source_uploads_dir . '/' . $source_post_thumbnail_meta['_wp_attached_file']; 63 // In some instances, the folder sep. `/` might be duplicated, we de-duplicate it. 64 array_walk( 65 $source_upload_dir, 66 function ( &$entry ) { 67 $entry = str_replace( '//', '/', $entry ); 68 } 69 ); 70 $source_uploads_dir = untrailingslashit( 71 str_replace( 72 $source_upload_dir['subdir'], 73 '', 74 $source_upload_dir['path'] 75 ) 76 ); 77 $source_post_thumbnail_file = $source_uploads_dir . '/' . $source_post_thumbnail_meta['_wp_attached_file']; 79 78 80 // Check the type of file. We'll use this as the 'post_mime_type'.81 $filetype = wp_check_filetype( basename( $source_post_thumbnail_file ), null );79 // Check the type of file. We'll use this as the 'post_mime_type'. 80 $filetype = wp_check_filetype( basename( $source_post_thumbnail_file ), null ); 82 81 83 // Prepare an array of post data for the attachment. 84 $attachment = array( 85 'guid' => $source_post_thumbnail_attachment->guid, 86 'post_mime_type' => $filetype['type'], 87 'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $source_post_thumbnail_file ) ), 88 'post_content' => '', 89 'post_status' => 'inherit', 82 // Prepare an array of post data for the attachment. 83 $attachment = array( 84 'guid' => $source_post_thumbnail_attachment->guid, 85 'post_mime_type' => $filetype['type'], 86 'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $source_post_thumbnail_file ) ), 87 'post_content' => '', 88 'post_status' => 'inherit', 89 ); 90 91 $found = get_posts( 92 array( 93 'post_type' => 'attachment', 94 'title' => $attachment['post_title'], 95 ) 96 ); 97 if ( isset( $found[0]->ID ) ) { 98 $dest_post_thumbnail_id = $found[0]->ID; 99 $this->logger->log_success( 'post-thumbnail/existing', $dest_post_thumbnail_id ); 100 } else { 101 // Insert the attachment. 102 $dest_post_thumbnail_id = wp_insert_attachment( 103 $attachment, 104 $source_post_thumbnail_file, 105 $dest_post_id 90 106 ); 91 107 92 $existing_criteria = array( 93 'post_type' => 'attachment', 94 'title' => $attachment['post_title'], 95 ); 108 if ( empty( $dest_post_thumbnail_id ) ) { 109 $this->logger->log_error( 'post-thumbnail/created', $dest_post_thumbnail_id ); 110 } else { 111 $this->logger->log_success( 'post-thumbnail/created', $dest_post_thumbnail_id ); 112 } 96 113 97 $found = get_posts( $existing_criteria ); 114 // The `_wp_attached_file` meta has been set before, so we skip it. 115 unset( $source_post_thumbnail_meta['_wp_attached_file'] ); 98 116 99 if ( $found && $found[0] instanceof \WP_Post ) { 100 $dest_post_thumbnail_id = $found[0]->ID; 101 $this->logger->log_success( 'post-thumbnail/existing', $dest_post_thumbnail_id ); 102 } else { 103 // Insert the attachment. 104 $dest_post_thumbnail_id = wp_insert_attachment( 105 $attachment, 106 $source_post_thumbnail_file, 107 $dest_post_id 108 ); 109 110 if ( empty( $dest_post_thumbnail_id ) ) { 111 $this->logger->log_error( 'post-thumbnail/created', $dest_post_thumbnail_id ); 112 } else { 113 $this->logger->log_success( 'post-thumbnail/created', $dest_post_thumbnail_id ); 114 } 115 116 // the `_wp_attached_file` meta has been set before, so we skip it 117 unset( $source_post_thumbnail_meta['_wp_attached_file'] ); 118 119 foreach ( $source_post_thumbnail_meta as $key => $value ) { 120 add_post_meta( $dest_post_thumbnail_id, $key, $value, true ); 121 } 117 foreach ( $source_post_thumbnail_meta as $key => $value ) { 118 add_post_meta( $dest_post_thumbnail_id, $key, $value, true ); 122 119 } 123 120 -
multisite-language-switcher/trunk/includes/ContentImport/Importers/Terms/ShallowDuplicating.php
r3287198 r3409411 80 80 81 81 if ( is_array( $added ) && ! count( array_filter( $added ) ) ) { 82 // while we think the term translation exists it might not, let's create it82 // While we think the term translation exists it might not, let's create it. 83 83 $dest_term_id = $this->create_local_term( $term, $msls_term, $dest_lang ); 84 84 … … 87 87 } 88 88 89 // and try again89 // And try again. 90 90 $added = $this->update_object_terms( $dest_post_id, $dest_term_id, $term->taxonomy ); 91 91 } -
multisite-language-switcher/trunk/includes/ContentImport/Importers/WithRequestPostAttributes.php
r3167915 r3409411 24 24 * Returns the post type read from `$_REQUEST['post_type']` if any, or a default post type. 25 25 * 26 * @param string $ default The default post type to return if none is specified in the `$_REQUEST` super-global.26 * @param string $preset The default post type to return if none is specified in the `$_REQUEST` super-global. 27 27 * 28 28 * @return string Either the post type read from the `$_REQUEST` super-global, or the default value. 29 \ *30 29 */ 31 protected function read_post_type_from_request( $ default = 'post' ) {32 $request = MslsRequest::get_request( array( 'post_type' ), $ default );30 protected function read_post_type_from_request( $preset = 'post' ) { 31 $request = MslsRequest::get_request( array( 'post_type' ), $preset ); 33 32 34 33 return $request['post_type']; -
multisite-language-switcher/trunk/includes/ContentImport/LogWriters/AdminNoticeLogger.php
r3199861 r3409411 9 9 class AdminNoticeLogger extends MslsRegistryInstance implements LogWriter { 10 10 11 /** 12 * The transient where the last import log will be stored. 13 * 14 * @var string 15 */ 11 16 protected string $transient = 'msls_last_import_log'; 12 17 … … 138 143 * Shows the last log that was written. 139 144 * 140 * @param bool $ echo145 * @param bool $output 141 146 * 142 147 * @return ?string 143 148 */ 144 public function show_last_log( $echo = true ): ?string { 145 if ( ! ( $html = get_transient( $this->transient ) ) ) { 149 public function show_last_log( $output = true ): ?string { 150 $html = get_transient( $this->transient ); 151 if ( ! $html ) { 146 152 return null; 147 153 } 148 154 149 if ( $ echo) {155 if ( $output ) { 150 156 echo wp_kses( $html, Component::get_allowed_html() ); 151 157 } 152 158 153 // we've shown it, no reason to keep it159 // We've shown it, no reason to keep it. 154 160 delete_transient( $this->transient ); 155 161 -
multisite-language-switcher/trunk/includes/ContentImport/MetaBox.php
r3199861 r3409411 103 103 array( 104 104 'modal' => true, 105 'width' => 770, // meh, just a guess on *most* devices105 'width' => 770, // Meh, just a guess on *most* devices. 106 106 'height' => 770, 107 107 'inlineId' => 'msls-import-dialog-' . str_replace( '|', '-', $data['msls_import'] ), … … 121 121 122 122 /** 123 * @param bool $ echo123 * @param bool $output 124 124 * @param array<string, mixed> $data 125 125 * 126 126 * @return string 127 127 */ 128 protected function inline_thickbox_html( $ echo= true, array $data = array() ): string {128 protected function inline_thickbox_html( $output = true, array $data = array() ): string { 129 129 if ( ! isset( $data['msls_import'] ) ) { 130 130 return ''; … … 187 187 $html = ob_get_clean(); 188 188 189 if ( $ echo) {189 if ( $output ) { 190 190 echo wp_kses( $html, Component::get_allowed_html() ); 191 191 } -
multisite-language-switcher/trunk/includes/ContentImport/Service.php
r3167915 r3409411 61 61 add_filter( 62 62 'wp_insert_post_empty_content', 63 function ( $ empty) {64 return ContentImporter::instance()->filter_empty( $ empty);63 function ( $bare ) { 64 return ContentImporter::instance()->filter_empty( $bare ); 65 65 } 66 66 ); … … 75 75 add_filter( 76 76 'wp_calculate_image_srcset', 77 function ( $sources, $size Array, $imageSrc, $imageMeta, $attachmentId ) {77 function ( $sources, $size_array, $image_src, $image_meta, $attachment_id ) { 78 78 return AttachmentPathFinder::instance()->filter_srcset( 79 79 $sources, 80 $size Array,81 $image Src,82 $image Meta,83 $attachment Id80 $size_array, 81 $image_src, 82 $image_meta, 83 $attachment_id 84 84 ); 85 85 }, -
multisite-language-switcher/trunk/includes/Map/HrefLang.php
r3287198 r3409411 11 11 */ 12 12 class HrefLang { 13 14 const MSLS_HEAD_HREFLANG_HOOK = 'msls_head_hreflang'; 13 15 14 16 /** … … 27 29 28 30 foreach ( $map as $alpha2 => $languages ) { 29 if ( 1 == count( $languages ) ) {31 if ( 1 === count( $languages ) ) { 30 32 $this->map[ $languages[0] ] = $alpha2; 31 33 } else { … … 65 67 * @since 0.9.9 66 68 */ 67 return (string) apply_filters( 'msls_head_hreflang', $language );69 return (string) apply_filters( self::MSLS_HEAD_HREFLANG_HOOK, $language ); 68 70 } 69 71 } -
multisite-language-switcher/trunk/includes/MslsAdmin.php
r3287198 r3409411 27 27 final class MslsAdmin extends MslsMain { 28 28 29 const MSLS_REGISTER_ACTION = 'msls_admin_register'; 30 31 const MSLS_ACTION_PREFIX = 'msls_admin_'; 32 33 /** 34 * Maximum number of users in the reference user select box 35 * 36 * @var int 37 */ 29 38 public const MAX_REFERENCE_USERS = 100; 30 39 … … 87 96 public function __call( $method, $args ) { 88 97 $parts = explode( '_', $method, 2 ); 89 if ( count( $parts ) > 0&& 'rewrite' === $parts[0] ) {98 if ( 2 === count( $parts ) && 'rewrite' === $parts[0] ) { 90 99 $this->render_rewrite( $parts[1] ); 91 100 return; … … 136 145 ); 137 146 $message = sprintf( $format, esc_url( admin_url( $this->get_options_page_link() ) ) ); 138 } elseif ( 1 == count( $this->options->get_available_languages() ) ) {147 } elseif ( 1 === count( $this->options->get_available_languages() ) ) { 139 148 /* translators: %1$s: URL to a page at WordPress.orgs */ 140 149 $format = __( … … 188 197 foreach ( $this->collection->get_plugin_active_blogs() as $blog ) { 189 198 $admin_url = get_admin_url( $blog->userblog_id, $this->get_options_page_link() ); 190 $current = $blog->userblog_id == $this->collection->get_current_blog_id() ? ' class="current"' : '';199 $current = $blog->userblog_id === $this->collection->get_current_blog_id() ? ' class="current"' : ''; 191 200 192 201 $arr[] = sprintf( '<a href="%1$s"%2$s>%3$s</a>', $admin_url, $current, $blog->get_title( $icon_type ) ); … … 227 236 * @since 1.0 228 237 */ 229 do_action( 'msls_admin_register', __CLASS__ );238 do_action( self::MSLS_REGISTER_ACTION, __CLASS__ ); 230 239 } 231 240 … … 326 335 * @since 2.4.4 327 336 */ 328 do_action( "msls_admin_{$section}", __CLASS__, $section );337 do_action( self::MSLS_ACTION_PREFIX . $section, __CLASS__, $section ); 329 338 330 339 return count( $map ); … … 385 394 ); 386 395 387 // phpcs:ignore WordPress. Security.EscapeOutput388 trigger_error( sprintf( esc_html( $format ), strval( self::MAX_REFERENCE_USERS) ) );396 // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error 397 trigger_error( esc_html( sprintf( $format, strval( self::MAX_REFERENCE_USERS ) ) ) ); 389 398 } 390 399 … … 435 444 * Validates input before saving it 436 445 * 437 * @param array<string, mixed> $arr Values of the submitted form 446 * @param array<string, mixed> $arr Values of the submitted form. 438 447 * 439 448 * @return array<string, mixed> -
multisite-language-switcher/trunk/includes/MslsAdminBar.php
r3287198 r3409411 5 5 class MslsAdminBar { 6 6 7 /** 8 * @var string 9 */ 7 10 protected string $icon_type; 8 11 12 /** 13 * @var MslsBlogCollection 14 */ 9 15 protected MslsBlogCollection $blog_collection; 10 16 17 /** 18 * @param MslsOptions $options 19 * @param MslsBlogCollection $blog_collection 20 */ 11 21 public function __construct( MslsOptions $options, MslsBlogCollection $blog_collection ) { 12 22 $this->icon_type = $options->get_icon_type(); … … 14 24 } 15 25 26 /** 27 * @return void 28 */ 16 29 public static function init(): void { 17 30 $obj = new MslsAdminBar( msls_options(), msls_blog_collection() ); … … 24 37 /** 25 38 * Callback that updates the admin bar with the blog information 39 * 40 * @param \WP_Admin_Bar $wp_admin_bar 41 * 42 * @return void 26 43 */ 27 44 public function update_admin_bar( \WP_Admin_Bar $wp_admin_bar ): void { … … 40 57 /** 41 58 * Adds node information to an existing node 59 * 60 * @param \WP_Admin_Bar $wp_admin_bar 61 * @param string $node_id 62 * @param string $title 63 * 64 * @return bool 42 65 */ 43 66 public function add_node( \WP_Admin_Bar $wp_admin_bar, string $node_id, string $title ): bool { … … 61 84 * 62 85 * It uses a blavatar icon as prefix if $blavatar is set to true 86 * 87 * @param MslsBlog|null $blog 88 * @param bool $blavatar 89 * 90 * @return string|null 63 91 */ 64 92 protected function get_title( ?MslsBlog $blog, bool $blavatar = false ): ?string { -
multisite-language-switcher/trunk/includes/MslsAdminIcon.php
r3287198 r3409411 117 117 */ 118 118 public function set_path(): MslsAdminIcon { 119 if ( 'post' != $this->type ) {119 if ( 'post' !== $this->type ) { 120 120 $query_vars = array( 'post_type' => $this->type ); 121 121 $this->path = add_query_arg( $query_vars, $this->path ); -
multisite-language-switcher/trunk/includes/MslsAdminIconTaxonomy.php
r3287198 r3409411 42 42 $post_type = MslsTaxonomy::instance()->get_post_type(); 43 43 44 $post_type !== '' && $args['post_type'] = $post_type; 44 if ( '' !== $post_type ) { 45 $args['post_type'] = $post_type; 46 } 45 47 46 48 $this->path = add_query_arg( $args, $this->path ); -
multisite-language-switcher/trunk/includes/MslsBlock.php
r3287198 r3409411 5 5 class MslsBlock { 6 6 7 /** 8 * The options instance. 9 * 10 * @var MslsOptions 11 */ 7 12 protected MslsOptions $options; 8 13 … … 30 35 } 31 36 32 register_block_type( MslsPlugin::plugin_dir_path( ' js/msls-widget-block' ) );37 register_block_type( MslsPlugin::plugin_dir_path( 'assets/js/msls-widget-block' ) ); 33 38 34 39 return true; -
multisite-language-switcher/trunk/includes/MslsBlog.php
r3287198 r3409411 11 11 class MslsBlog { 12 12 13 const MSLS_GET_PERMALINK_HOOK = 'msls_blog_get_permalink'; 14 15 const WP_ADMIN_BAR_SHOW_SITE_ICONS_HOOK = 'wp_admin_bar_show_site_icons'; 16 13 17 /** 14 18 * WordPress generates such an object … … 91 95 * Gets the language stored in this object 92 96 * 93 * @param string $ default94 * 95 * @return string 96 */ 97 public function get_language( $ default = 'en_US' ) {98 return empty( $this->language ) ? $ default : $this->language;97 * @param string $preset 98 * 99 * @return string 100 */ 101 public function get_language( $preset = 'en_US' ) { 102 return empty( $this->language ) ? $preset : $this->language; 99 103 } 100 104 … … 116 120 */ 117 121 public function get_url( $options ) { 118 if ( $this->obj->userblog_id == msls_blog_collection()->get_current_blog_id()) {122 if ( msls_blog_collection()->get_current_blog_id() === $this->obj->userblog_id ) { 119 123 return $options->get_current_link(); 120 124 } … … 128 132 * @return ?string 129 133 */ 130 protected function get_permalink( $options ) {134 protected function get_permalink( OptionsInterface $options ) { 131 135 $url = null; 132 136 … … 135 139 switch_to_blog( $this->obj->userblog_id ); 136 140 137 if ( is_object( $options ) && method_exists( 138 $options, 139 'has_value' 140 ) && ( $is_home || $options->has_value( $this->get_language() ) ) ) { 141 $url = apply_filters( 'mlsl_blog_get_permalink', $options->get_permalink( $this->get_language() ), $this ); 141 if ( $is_home || $options->has_value( $this->get_language() ) ) { 142 $url = apply_filters( self::MSLS_GET_PERMALINK_HOOK, $options->get_permalink( $this->get_language() ), $this ); 142 143 } 143 144 … … 155 156 * @return int 156 157 */ 157 public static function _cmp( $a, $b ) {158 if ( $a == $b ) {158 public static function internal_cmp( $a, $b ) { 159 if ( $a === $b ) { 159 160 return 0; 160 161 } … … 172 173 */ 173 174 public static function language( MslsBlog $a, MslsBlog $b ) { 174 return self:: _cmp( $a->get_language(), $b->get_language() );175 return self::internal_cmp( $a->get_language(), $b->get_language() ); 175 176 } 176 177 … … 184 185 */ 185 186 public static function description( MslsBlog $a, MslsBlog $b ) { 186 return self:: _cmp( $a->get_description(), $b->get_description() );187 return self::internal_cmp( $a->get_description(), $b->get_description() ); 187 188 } 188 189 … … 192 193 public function get_blavatar(): string { 193 194 $blavatar_html = '<div class="blavatar"></div>'; 194 $show_site_icons = apply_filters( 'wp_admin_bar_show_site_icons', true );195 $show_site_icons = apply_filters( self::WP_ADMIN_BAR_SHOW_SITE_ICONS_HOOK, true ); 195 196 196 197 switch_to_blog( $this->obj->userblog_id ); -
multisite-language-switcher/trunk/includes/MslsBlogCollection.php
r3287198 r3409411 75 75 foreach ( $blogs_collection as $blog ) { 76 76 $description = false; 77 if ( $blog->userblog_id == $this->current_blog_id ) {77 if ( $blog->userblog_id === $this->current_blog_id ) { 78 78 $description = $options->description; 79 79 } elseif ( ! $this->is_plugin_active( $blog->userblog_id ) ) { … … 153 153 154 154 foreach ( $this->get_objects() as $item ) { 155 if ( $language == $item->get_language() ) {155 if ( $language === $item->get_language() ) { 156 156 $blog = $item; 157 157 break; … … 253 253 $plugins = get_blog_option( $blog_id, 'active_plugins', array() ); 254 254 255 return in_array( $path, $plugins );255 return in_array( $path, $plugins, true ); 256 256 } 257 257 … … 325 325 * 326 326 * @param int $blog_id 327 * @param string $ default327 * @param string $preset 328 328 * 329 329 * @return string 330 330 */ 331 public static function get_blog_language( $blog_id = null, $ default = 'en_US' ) {331 public static function get_blog_language( $blog_id = null, $preset = 'en_US' ) { 332 332 if ( null === $blog_id ) { 333 333 $blog_id = get_current_blog_id(); … … 336 336 $language = (string) get_blog_option( $blog_id, 'WPLANG' ); 337 337 338 return '' !== $language ? $language : $ default;338 return '' !== $language ? $language : $preset; 339 339 } 340 340 } -
multisite-language-switcher/trunk/includes/MslsCli.php
r3287198 r3409411 29 29 * $ wp msls blog <locale> 30 30 * 31 * @param string[] $args32 * @param array<string, string> $assoc_args31 * @param string[] $args 32 * 33 33 * @return void 34 34 */ 35 public function blog( $args , $assoc_args): void {35 public function blog( $args ): void { 36 36 list( $locale ) = $args; 37 37 $blog = msls_blog( $locale ); -
multisite-language-switcher/trunk/includes/MslsContentFilter.php
r3287198 r3409411 5 5 class MslsContentFilter { 6 6 7 /** 8 * The options instance. 9 * 10 * @var MslsOptions 11 */ 7 12 protected MslsOptions $options; 8 13 … … 71 76 } 72 77 73 if ( 1 == count( $links ) ) {78 if ( 1 === count( $links ) ) { 74 79 return $links[0]; 75 80 } -
multisite-language-switcher/trunk/includes/MslsContentTypes.php
r3287198 r3409411 32 32 $_request = MslsRequest::get_request( array( 'taxonomy' ) ); 33 33 34 return '' != $_request['taxonomy'] ? MslsTaxonomy::instance() : MslsPostType::instance();34 return '' !== $_request['taxonomy'] ? MslsTaxonomy::instance() : MslsPostType::instance(); 35 35 } 36 36 -
multisite-language-switcher/trunk/includes/MslsCustomColumn.php
r3287198 r3409411 48 48 $language = $blog->get_language(); 49 49 $icon_type = $this->options->get_icon_type(); 50 $icon = ( new MslsAdminIcon() )->set_language( $language )->set_icon_type( $icon_type ); 50 51 51 $icon = ( new MslsAdminIcon() )->set_language( $language )->set_icon_type( $icon_type ); 52 53 if ( $post_id = get_the_ID() ) { 52 $post_id = get_the_ID(); 53 if ( false !== $post_id ) { 54 54 $icon->set_id( $post_id ); 55 55 $icon->set_origin_language( 'it_IT' ); … … 73 73 */ 74 74 public function td( $column_name, $item_id ): void { 75 if ( 'mslscol' == $column_name ) {75 if ( 'mslscol' === $column_name ) { 76 76 $blogs = $this->collection->get(); 77 77 $origin_language = MslsBlogCollection::get_blog_language(); -
multisite-language-switcher/trunk/includes/MslsCustomFilter.php
r3287198 r3409411 79 79 $sql_cache = MslsSqlCacher::create( __CLASS__, __METHOD__ ); 80 80 81 // load post we need to exclude (they already have a translation) from search query81 // Load post we need to exclude (they already have a translation) from search query. 82 82 $query->query_vars['post__not_in'] = ( new TranslatedPostIdQuery( $sql_cache ) )( $blog->get_language() ); 83 83 -
multisite-language-switcher/trunk/includes/MslsLink.php
r3287198 r3409411 18 18 19 19 /** 20 * Gets all link types as a rray with "id => name"-items20 * Gets all link types as an array with "id => name"-items 21 21 * 22 22 * @return string[] … … 74 74 * @param LinkInterface $obj 75 75 * @param int $display 76 *77 * @return LinkInterface78 76 */ 79 77 $obj = apply_filters( 'msls_link_create', $obj, $display ); 80 if ( $obj instanceof LinkInterface ) {81 return $obj;82 }83 78 } 84 79 -
multisite-language-switcher/trunk/includes/MslsMain.php
r3287198 r3409411 11 11 */ 12 12 class MslsMain { 13 14 const MSLS_SAVE_ACTION = 'msls_main_save'; 13 15 14 16 /** … … 49 51 if ( defined( 'WP_DEBUG' ) && WP_DEBUG === true ) { 50 52 if ( is_array( $message ) || is_object( $message ) ) { 53 // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_print_r 51 54 $message = print_r( $message, true ); 52 55 } 53 56 57 // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log 54 58 error_log( 'MSLS Debug: ' . $message ); 55 59 } … … 128 132 */ 129 133 protected function save( $object_id, $class_name ): void { 130 if ( has_action( 'msls_main_save') ) {134 if ( has_action( self::MSLS_SAVE_ACTION ) ) { 131 135 /** 132 136 * Calls completely customized save-routine … … 137 141 * @since 0.9.9 138 142 */ 139 do_action( 'msls_main_save', $object_id, $class_name );143 do_action( self::MSLS_SAVE_ACTION, $object_id, $class_name ); 140 144 141 145 return; … … 153 157 $temp = $options->get_arr(); 154 158 155 if ( 0 != $msla->get_val( $language ) ) {159 if ( 0 !== $msla->get_val( $language ) ) { 156 160 $options->save( $msla->get_arr( $language ) ); 157 161 } else { … … 165 169 $larr_id = $msla->get_val( $language ); 166 170 167 if ( 0 != $larr_id ) {171 if ( 0 !== $larr_id ) { 168 172 $options = new $class_name( $larr_id ); 169 173 $options->save( $msla->get_arr( $language ) ); -
multisite-language-switcher/trunk/includes/MslsMetaBox.php
r3287198 r3409411 6 6 use lloc\Msls\Component\Wrapper; 7 7 use lloc\Msls\ContentImport\MetaBox as ContentImportMetaBox; 8 use WP_Post; 8 9 9 10 /** … … 76 77 public static function get_suggested_fields( MslsJson $json, array $args ): MslsJson { 77 78 /** 78 * Overrides the query-args for the suggestfields in the MetaBox79 * Overrides the query-args for the 'suggest' fields in the MetaBox 79 80 * 80 81 * @param array $args<string, mixed> … … 88 89 * Manipulates the WP_Post object before using it 89 90 * 90 * @param \WP_Post $post91 * @param WP_Post $post 91 92 * 92 93 * @since 0.9.9 93 94 */ 94 95 $post = apply_filters( 'msls_meta_box_suggest_post', $post ); 95 if ( is_object( $post ) ) { 96 $json->add( $post->ID, get_the_title( $post ) ); 97 } 96 97 $json->add( $post->ID, get_the_title( $post ) ); 98 98 } 99 99 … … 226 226 echo ( new Wrapper( 'ul', $lis ) )->render(); 227 227 228 // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited 228 229 $post = $temp; 229 230 } else { … … 304 305 $icon_type = $this->options->get_icon_type(); 305 306 $icon = MslsAdminIcon::create()->set_language( $language )->set_icon_type( $icon_type ); 306 307 $value = $title = ''; 307 $value = ''; 308 $title = ''; 309 308 310 if ( $my_data->has_value( $language ) ) { 309 311 $icon->set_href( (int) $my_data->$language ); … … 334 336 ); 335 337 338 // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited 336 339 $post = $temp; 337 340 } else { -
multisite-language-switcher/trunk/includes/MslsOptions.php
r3287198 r3409411 29 29 class MslsOptions extends MslsGetSet implements OptionsInterface { 30 30 31 const MSLS_GET_POSTLINK_HOOK = 'msls_get_postlink'; 32 31 33 public const PREFIX = 'msls'; 32 34 public const SEPARATOR = ''; 33 35 36 /** 37 * The name of the option in the database 38 * 39 * @var string 40 */ 34 41 protected string $name; 35 protected bool $exists = false; 42 43 /** 44 * Indicates whether the option exists in the database 45 * 46 * @var bool 47 */ 48 protected bool $exists = false; 49 50 /** 51 * Autoload option 52 * 53 * @var bool 54 */ 36 55 protected bool $autoload = true; 37 56 … … 83 102 } 84 103 85 add_filter( 'msls_get_postlink', array( $options, 'check_for_blog_slug' ), 10, 2 );104 add_filter( self::MSLS_GET_POSTLINK_HOOK, array( $options, 'check_for_blog_slug' ), 10, 2 ); 86 105 87 106 return $options; … … 134 153 * 135 154 * @param int $index 136 * @param mixed $ default155 * @param mixed $preset 137 156 * 138 157 * @return mixed 139 158 */ 140 public function get_arg( int $index, $ default = null ) {141 $arg = $this->args[ $index ] ?? $ default;142 143 settype( $arg, gettype( $ default ) );159 public function get_arg( int $index, $preset = null ) { 160 $arg = $this->args[ $index ] ?? $preset; 161 162 settype( $arg, gettype( $preset ) ); 144 163 145 164 return $arg; … … 211 230 ); 212 231 213 return '' != $postlink ? $postlink : home_url( '/' );232 return '' !== $postlink ? $postlink : home_url( '/' ); 214 233 } 215 234 … … 311 330 */ 312 331 public function get_flag_url( $language ) { 313 $url = ! is_admin() && isset( $this->image_url ) ? $this->__get( 'image_url' ) : $this->get_url( ' flags' );332 $url = ! is_admin() && isset( $this->image_url ) ? $this->__get( 'image_url' ) : $this->get_url( 'assets/flags' ); 314 333 315 334 /** -
multisite-language-switcher/trunk/includes/MslsOptionsPost.php
r3167915 r3409411 12 12 public const SEPARATOR = '_'; 13 13 14 /** 15 * @var bool 16 */ 14 17 protected bool $autoload = false; 15 18 … … 27 30 28 31 $post = get_post( (int) $this->__get( $language ) ); 29 if ( is_null( $post ) || 'publish' != $post->post_status ) {32 if ( is_null( $post ) || 'publish' !== $post->post_status ) { 30 33 return ''; 31 34 } … … 38 41 $post_link = get_permalink( $post ); 39 42 40 $post_link = apply_filters_deprecated( 'check_url', array( $post_link, $this ), '2.7.1', 'msls_get_postlink');43 $post_link = apply_filters_deprecated( 'check_url', array( $post_link, $this ), '2.7.1', MslsOptions::MSLS_GET_POSTLINK_HOOK ); 41 44 42 return apply_filters( 'msls_get_postlink', $post_link, $this );45 return apply_filters( MslsOptions::MSLS_GET_POSTLINK_HOOK, $post_link, $this ); 43 46 } 44 47 -
multisite-language-switcher/trunk/includes/MslsOptionsQuery.php
r3287198 r3409411 17 17 public ?bool $with_front = true; 18 18 19 /** 20 * @var MslsSqlCacher 21 */ 19 22 protected MslsSqlCacher $sql_cache; 20 23 … … 35 38 * Factory method 36 39 * 37 * @param int $id This parameter is unused here 40 * @param int $id This parameter is unused here. 38 41 * 39 42 * @return ?MslsOptionsQuery … … 72 75 $post_link = $this->get_current_link(); 73 76 if ( ! empty( $post_link ) ) { 74 $post_link = apply_filters_deprecated( 'check_url', array( $post_link, $this ), '2.7.1', 'msls_get_postlink');77 $post_link = apply_filters_deprecated( 'check_url', array( $post_link, $this ), '2.7.1', MslsOptions::MSLS_GET_POSTLINK_HOOK ); 75 78 76 return apply_filters( 'msls_get_postlink', $post_link, $this );79 return apply_filters( MslsOptions::MSLS_GET_POSTLINK_HOOK, $post_link, $this ); 77 80 } 78 81 } -
multisite-language-switcher/trunk/includes/MslsOptionsQueryAuthor.php
r3287198 r3409411 12 12 class MslsOptionsQueryAuthor extends MslsOptionsQuery { 13 13 14 /** 15 * The author ID for which the posts count is queried. 16 * 17 * @var int 18 */ 14 19 protected int $author_id; 15 20 -
multisite-language-switcher/trunk/includes/MslsOptionsQueryDay.php
r3287198 r3409411 12 12 class MslsOptionsQueryDay extends MslsOptionsQuery { 13 13 14 /** 15 * @var int 16 */ 14 17 protected int $year; 15 18 19 /** 20 * @var int 21 */ 16 22 protected int $monthnum; 23 24 /** 25 * @var int 26 */ 17 27 protected int $day; 18 28 -
multisite-language-switcher/trunk/includes/MslsOptionsQueryMonth.php
r3287198 r3409411 12 12 class MslsOptionsQueryMonth extends MslsOptionsQuery { 13 13 14 /** 15 * @var int 16 */ 14 17 protected int $year; 15 18 19 /** 20 * @var int 21 */ 16 22 protected int $monthnum; 17 23 -
multisite-language-switcher/trunk/includes/MslsOptionsQueryPostType.php
r3287198 r3409411 10 10 class MslsOptionsQueryPostType extends MslsOptionsQuery { 11 11 12 /** 13 * The post type for which the options are queried. 14 * 15 * @var string 16 */ 12 17 protected string $post_type; 13 18 -
multisite-language-switcher/trunk/includes/MslsOptionsQueryYear.php
r3287198 r3409411 12 12 class MslsOptionsQueryYear extends MslsOptionsQuery { 13 13 14 /** 15 * The year for which the posts count is queried. 16 * 17 * @var int 18 */ 14 19 protected int $year; 15 20 21 /** 22 * Constructor. 23 * 24 * @param MslsSqlCacher $sql_cache The SQL Cacher instance. 25 */ 16 26 public function __construct( MslsSqlCacher $sql_cache ) { 17 27 parent::__construct( $sql_cache ); … … 20 30 } 21 31 32 /** 33 * Get the parameters for this query. 34 * 35 * @return array<string, mixed> 36 */ 22 37 public static function get_params(): array { 23 38 return array( -
multisite-language-switcher/trunk/includes/MslsOptionsTax.php
r3287198 r3409411 12 12 public const SEPARATOR = '_term_'; 13 13 14 /** 15 * @var bool 16 */ 14 17 protected bool $autoload = false; 15 18 … … 89 92 } 90 93 91 $post_link = apply_filters_deprecated( 'check_url', array( $post_link, $this ), '2.7.1', 'msls_get_postlink');94 $post_link = apply_filters_deprecated( 'check_url', array( $post_link, $this ), '2.7.1', MslsOptions::MSLS_GET_POSTLINK_HOOK ); 92 95 93 return apply_filters( 'msls_get_postlink', $post_link, $this );96 return apply_filters( MslsOptions::MSLS_GET_POSTLINK_HOOK, $post_link, $this ); 94 97 } 95 98 -
multisite-language-switcher/trunk/includes/MslsOptionsTaxTerm.php
r3287198 r3409411 22 22 23 23 public function handle_rewrite(): OptionsTaxInterface { 24 add_filter( 'msls_get_postlink', array( $this, 'check_base' ), 9, 2 );24 add_filter( MslsOptions::MSLS_GET_POSTLINK_HOOK, array( $this, 'check_base' ), 9, 2 ); 25 25 26 26 return $this; … … 44 44 $base_option = self::get_base_option(); 45 45 46 if ( $base_defined != $base_option ) {46 if ( $base_defined !== $base_option ) { 47 47 $search = '/' . $base_defined . '/'; 48 48 $replace = '/' . $base_option . '/'; … … 70 70 71 71 public static function get_base_option(): string { 72 $base_option = get_option( static::BASE_OPTION, '' ); 73 74 return $base_option ?: static::BASE_DEFINED; 72 return get_option( static::BASE_OPTION, static::BASE_DEFINED ); 75 73 } 76 74 } -
multisite-language-switcher/trunk/includes/MslsOutput.php
r3287198 r3409411 11 11 */ 12 12 class MslsOutput extends MslsMain { 13 14 const MSLS_ALTERNATE_LINKS_HOOK = 'msls_output_get_alternate_links'; 15 16 const MSLS_ALTERNATE_LINKS_ARR_HOOK = 'msls_output_get_alternate_links_arr'; 17 18 const MSLS_ALTERNATE_LINKS_DEFAULT_HOOK = 'msls_output_get_alternate_links_default'; 19 20 const MSLS_GET_HOOK = 'msls_output_get'; 21 22 const MSLS_NO_TRANSLATION_FOUND_HOOK = 'msls_output_no_translation_found'; 23 24 const MSLS_GET_TAGS_HOOK = 'msls_output_get_tags'; 25 13 26 14 27 public static function init(): object { … … 64 77 } 65 78 66 if ( has_filter( 'msls_output_get') ) {79 if ( has_filter( self::MSLS_GET_HOOK ) ) { 67 80 /** 68 81 * Returns HTML-link for an item of the output-arr … … 74 87 * @since 0.9.8 75 88 */ 76 $arr[] = (string) apply_filters( 'msls_output_get', $url, $link, $is_current_blog );89 $arr[] = (string) apply_filters( self::MSLS_GET_HOOK, $url, $link, $is_current_blog ); 77 90 } else { 78 91 $arr[] = sprintf( … … 80 93 $url, 81 94 $link->txt, 82 $is_current_blog ? ' class="current_language" ' : '',95 $is_current_blog ? ' class="current_language" aria-current="page"' : '', 83 96 $link 84 97 ); … … 96 109 */ 97 110 public function get_alternate_links() { 98 $blogs = msls_blog_collection();99 $h lObj= new HrefLang( $blogs );100 $options = MslsOptions::create();101 $arr = array();102 $default = '';111 $blogs = msls_blog_collection(); 112 $href_lang = new HrefLang( $blogs ); 113 $options = MslsOptions::create(); 114 $arr = array(); 115 $default = ''; 103 116 104 117 foreach ( $blogs->get_objects() as $blog ) { 105 $url = apply_filters( 'mlsl_output_get_alternate_links', $blog->get_url( $options ), $blog );118 $url = apply_filters( self::MSLS_ALTERNATE_LINKS_HOOK, $blog->get_url( $options ), $blog ); 106 119 if ( is_null( $url ) ) { 107 120 continue; 108 121 } 109 122 110 $hreflang = $h lObj->get( $blog->get_language() );123 $hreflang = $href_lang->get( $blog->get_language() ); 111 124 $format = '<link rel="alternate" href="%1$s" hreflang="%2$s" />'; 112 125 … … 119 132 120 133 if ( 1 === count( $arr ) ) { 121 return apply_filters( 'mlsl_output_get_alternate_links_default', $default );122 } 123 124 $arr = (array) apply_filters( 'mlsl_output_get_alternate_links_arr', $arr );134 return apply_filters( self::MSLS_ALTERNATE_LINKS_DEFAULT_HOOK, $default ); 135 } 136 137 $arr = (array) apply_filters( self::MSLS_ALTERNATE_LINKS_ARR_HOOK, $arr ); 125 138 126 139 return implode( PHP_EOL, $arr ); … … 135 148 $arr = $this->get( $this->options->display, false, isset( $this->options->only_with_translation ) ); 136 149 if ( empty( $arr ) ) { 137 return apply_filters( 'msls_output_no_translation_found', '' );150 return apply_filters( self::MSLS_NO_TRANSLATION_FOUND_HOOK, '' ); 138 151 } 139 152 … … 166 179 * @since 1.0 167 180 */ 168 $this->tags = (array) apply_filters( 'msls_output_get_tags', $this->tags );181 $this->tags = (array) apply_filters( self::MSLS_GET_TAGS_HOOK, $this->tags ); 169 182 } 170 183 … … 199 212 } 200 213 201 return MslsOptions::class != get_class( $thing ) && ! $thing->has_value( $language ) && $exists;214 return MslsOptions::class !== get_class( $thing ) && ! $thing->has_value( $language ) && $exists; 202 215 } 203 216 } -
multisite-language-switcher/trunk/includes/MslsPlugin.php
r3287198 r3409411 34 34 public static function init(): void { 35 35 $obj = new self( msls_options() ); 36 37 add_action( 'init', array( $obj, 'init_i18n_support' ) );38 36 39 37 register_activation_hook( self::file(), array( __CLASS__, 'activate' ) ); … … 115 113 116 114 $ver = defined( 'MSLS_PLUGIN_VERSION' ) ? constant( 'MSLS_PLUGIN_VERSION' ) : false; 117 $folder = defined( 'SCRIPT_DEBUG' ) && constant( 'SCRIPT_DEBUG' ) ? 'src' : ' js';118 119 wp_enqueue_style( 'msls-styles', self::plugins_url( ' css/msls.css' ), array(), $ver );120 wp_enqueue_style( 'msls-flags', self::plugins_url( ' css-flags/css/flag-icon.min.css' ), array(), $ver );115 $folder = defined( 'SCRIPT_DEBUG' ) && constant( 'SCRIPT_DEBUG' ) ? 'src' : 'assets/js'; 116 117 wp_enqueue_style( 'msls-styles', self::plugins_url( 'assets/css/msls.css' ), array(), $ver ); 118 wp_enqueue_style( 'msls-flags', self::plugins_url( 'assets/css-flags/css/flag-icon.min.css' ), array(), $ver ); 121 119 122 120 if ( $this->options->activate_autocomplete ) { … … 168 166 public static function path(): string { 169 167 return defined( 'MSLS_PLUGIN_PATH' ) ? constant( 'MSLS_PLUGIN_PATH' ) : ''; 170 }171 172 /**173 * Load textdomain174 *175 * The method should be executed always on init because we have some translatable string in the frontend too.176 */177 public function init_i18n_support(): void {178 load_plugin_textdomain( 'multisite-language-switcher', false, self::dirname( '/languages/' ) );179 168 } 180 169 -
multisite-language-switcher/trunk/includes/MslsPostTag.php
r3287198 r3409411 1 1 <?php declare( strict_types=1 ); 2 3 /**4 * MslsPostTag5 *6 * @author Dennis Ploetner <re@lloc.de>7 */8 2 9 3 namespace lloc\Msls; … … 18 12 class MslsPostTag extends MslsMain { 19 13 20 const EDIT_ACTION = 'msls_post_tag_edit_input';21 const ADD_ACTION = 'msls_post_tag_add_input';14 const MSLS_EDIT_INPUT_ACTION = 'msls_post_tag_edit_input'; 15 const MSLS_ADD_INPUT_ACTION = 'msls_post_tag_add_input'; 22 16 23 17 /** … … 85 79 86 80 $taxonomy = msls_content_types()->acl_request(); 87 if ( '' != $taxonomy ) {81 if ( '' !== $taxonomy ) { 88 82 add_action( "{$taxonomy}_add_form_fields", array( $obj, 'add_input' ) ); 89 83 add_action( "{$taxonomy}_edit_form_fields", array( $obj, 'edit_input' ), 10, 2 ); … … 99 93 */ 100 94 public function add_input( string $taxonomy ): void { 101 if ( did_action( self:: ADD_ACTION ) ) {95 if ( did_action( self::MSLS_ADD_INPUT_ACTION ) ) { 102 96 return; 103 97 } … … 115 109 echo '</div>'; 116 110 117 do_action( self:: ADD_ACTION, $taxonomy );111 do_action( self::MSLS_ADD_INPUT_ACTION, $taxonomy ); 118 112 } 119 113 … … 125 119 */ 126 120 public function edit_input( \WP_Term $tag, string $taxonomy ): void { 127 if ( did_action( self:: EDIT_ACTION ) ) {121 if ( did_action( self::MSLS_EDIT_INPUT_ACTION ) ) { 128 122 return; 129 123 } … … 149 143 $this->the_input( $tag, $title_format, $item_format ); 150 144 151 do_action( self:: EDIT_ACTION, $tag, $taxonomy );145 do_action( self::MSLS_EDIT_INPUT_ACTION, $tag, $taxonomy ); 152 146 } 153 147 … … 185 179 $icon_type = $this->options->get_icon_type(); 186 180 $icon = MslsAdminIcon::create()->set_language( $language )->set_icon_type( $icon_type ); 187 188 $value = $title = ''; 181 $value = ''; 182 $title = ''; 183 189 184 if ( $mydata->has_value( $language ) ) { 190 185 $term = get_term( $mydata->$language, $type ); -
multisite-language-switcher/trunk/includes/MslsPostTagClassic.php
r3287198 r3409411 12 12 class MslsPostTagClassic extends MslsPostTag { 13 13 14 const EDIT_ACTION = 'msls_post_tag_classic_edit_input';15 const ADD_ACTION = 'msls_post_tag_classic_add_input';14 const MSLS_EDIT_INPUT_ACTION = 'msls_post_tag_classic_edit_input'; 15 const MSLS_ADD_INPUT_ACTION = 'msls_post_tag_classic_add_input'; 16 16 17 17 /** … … 21 21 */ 22 22 public function add_input( string $taxonomy ): void { 23 if ( did_action( self:: ADD_ACTION ) ) {23 if ( did_action( self::MSLS_ADD_INPUT_ACTION ) ) { 24 24 return; 25 25 } … … 37 37 echo '</div>'; 38 38 39 do_action( self:: ADD_ACTION, $taxonomy );39 do_action( self::MSLS_ADD_INPUT_ACTION, $taxonomy ); 40 40 } 41 41 … … 47 47 */ 48 48 public function edit_input( \WP_Term $tag, string $taxonomy ): void { 49 if ( did_action( self:: EDIT_ACTION ) ) {49 if ( did_action( self::MSLS_EDIT_INPUT_ACTION ) ) { 50 50 return; 51 51 } … … 69 69 $this->the_input( $tag, $title_format, $item_format ); 70 70 71 do_action( self:: EDIT_ACTION, $tag, $taxonomy );71 do_action( self::MSLS_EDIT_INPUT_ACTION, $tag, $taxonomy ); 72 72 } 73 73 -
multisite-language-switcher/trunk/includes/MslsPostType.php
r3287198 r3409411 24 24 public static function get(): array { 25 25 $types = array_merge( 26 array( 'post', 'page' ), // we don't need attachment, revision or nav_menu_item here26 array( 'post', 'page' ), // We don't need attachment, revision or nav_menu_item here. 27 27 get_post_types( 28 28 array( … … 43 43 $post_type = ! empty( $request['post_type'] ) ? esc_attr( $request['post_type'] ) : 'post'; 44 44 45 return in_array( $post_type, $this->get() ) ? $post_type : '';45 return in_array( $post_type, $this->get(), true ) ? $post_type : ''; 46 46 } 47 47 -
multisite-language-switcher/trunk/includes/MslsRegistry.php
r3287198 r3409411 51 51 */ 52 52 public static function instance(): self { 53 if ( self::$instance === null) {53 if ( null === self::$instance ) { 54 54 self::$instance = new self(); 55 55 } -
multisite-language-switcher/trunk/includes/MslsRegistryInstance.php
r3287198 r3409411 17 17 public static function instance() { 18 18 $class = get_called_class(); 19 $obj = MslsRegistry::get_object( $class ); 19 20 20 if ( ! ( $obj = MslsRegistry::get_object( $class ) )) {21 if ( ! $obj ) { 21 22 $obj = new $class(); 22 23 -
multisite-language-switcher/trunk/includes/MslsRequest.php
r3287198 r3409411 6 6 7 7 /** 8 * @param string $name 9 * 8 10 * @return array<int, int> 11 * 12 * @throws \InvalidArgumentException No field with the given name exists. 9 13 */ 10 14 public static function get_config( string $name ): array { … … 31 35 32 36 /** 33 * @return mixed 37 * @param string $var_name 38 * @param int|null $input_type 39 * 40 * @return ?mixed 34 41 */ 35 42 public static function get_var( string $var_name, ?int $input_type = null ) { … … 50 57 /** 51 58 * @param string $name 52 * @param mixed $ default59 * @param mixed $preset 53 60 * 54 61 * @return mixed 55 62 */ 56 public static function get( string $name, $ default ) {57 return self::has_var( $name ) ? self::get_var( $name ) : $ default;63 public static function get( string $name, $preset ) { 64 return self::has_var( $name ) ? self::get_var( $name ) : $preset; 58 65 } 59 66 … … 79 86 * 80 87 * @param string[] $keys 81 * @param mixed $ default88 * @param mixed $preset 82 89 * 83 90 * @return array<string, mixed> 84 91 */ 85 public static function get_request( array $keys, $ default = '' ): array {92 public static function get_request( array $keys, $preset = '' ): array { 86 93 $values = array(); 87 94 88 95 foreach ( $keys as $key ) { 89 96 list( , $filter ) = self::get_config( $key ); 90 $values[ $key ] = $ default;97 $values[ $key ] = $preset; 91 98 92 99 if ( filter_has_var( INPUT_POST, $key ) ) { -
multisite-language-switcher/trunk/includes/MslsShortCode.php
r3287198 r3409411 7 7 public static function init(): void { 8 8 add_shortcode( 'sc_msls_widget', array( __CLASS__, 'render_widget' ) ); 9 add_shortcode( 'sc_msls', ' get_the_msls' );9 add_shortcode( 'sc_msls', 'msls_get_switcher' ); 10 10 } 11 11 -
multisite-language-switcher/trunk/includes/MslsSqlCacher.php
r3287198 r3409411 23 23 24 24 /** 25 * Cache group 25 * Cache group for the SQL cacher 26 26 */ 27 27 const CACHE_GROUP = 'msls-cache-group'; 28 28 29 29 /** 30 * Database object30 * @var \wpdb 31 31 */ 32 32 protected \wpdb $db; 33 33 34 34 /** 35 * Key for the cached result-set35 * @var string 36 36 */ 37 37 protected string $cache_key; … … 39 39 /** 40 40 * Expiration time for the cache in seconds 41 * 42 * @var int 41 43 */ 42 44 protected int $expire; … … 44 46 /** 45 47 * Constructor 48 * 49 * @param \wpdb $db The WordPress database object. 50 * @param string $cache_key The cache key to use for storing results. 51 * @param int $expire The expiration time for the cache in seconds. Default is 0 (no expiration). 46 52 */ 47 53 public function __construct( \wpdb $db, string $cache_key, int $expire = 0 ) { … … 71 77 * Magic __get 72 78 * 79 * @param string $name 80 * 73 81 * @return mixed 74 82 */ … … 86 94 */ 87 95 public function __call( string $method, array $args ) { 88 if ( 'get_' != substr( $method, 0, 4 ) ) {96 if ( 'get_' !== substr( $method, 0, 4 ) ) { 89 97 return call_user_func_array( array( $this->db, $method ), $args ); 90 98 } -
multisite-language-switcher/trunk/includes/MslsTaxonomy.php
r3287198 r3409411 31 31 public static function get(): array { 32 32 $types = array_merge( 33 array( 'category', 'post_tag' ), // no 'post_link' here33 array( 'category', 'post_tag' ), // No 'post_link' here. 34 34 get_taxonomies( 35 35 array( -
multisite-language-switcher/trunk/includes/MslsWidget.php
r3287198 r3409411 11 11 */ 12 12 class MslsWidget extends \WP_Widget { 13 14 const MSLS_ALTERNATIVE_CONTENT_HOOK = 'msls_widget_alternative_content'; 13 15 14 16 public const ID_BASE = 'mslswidget'; … … 54 56 if ( '' === $content ) { 55 57 $text = __( 'No available translations found', 'multisite-language-switcher' ); 56 $content = apply_filters( 'msls_widget_alternative_content', $text );58 $content = apply_filters( self::MSLS_ALTERNATIVE_CONTENT_HOOK, $text ); 57 59 } 58 60 -
multisite-language-switcher/trunk/includes/Query/AbstractQuery.php
r3287198 r3409411 12 12 abstract class AbstractQuery { 13 13 14 /** 15 * The SQL Cacher instance. 16 * 17 * @var MslsSqlCacher 18 */ 14 19 protected MslsSqlCacher $sql_cache; 15 20 21 /** 22 * Constructor. 23 * 24 * @param MslsSqlCacher $sql_cache The SQL Cacher instance. 25 */ 16 26 public function __construct( MslsSqlCacher $sql_cache ) { 17 27 $this->sql_cache = $sql_cache; -
multisite-language-switcher/trunk/includes/Query/TranslatedPostIdQuery.php
r3287198 r3409411 10 10 class TranslatedPostIdQuery extends AbstractQuery { 11 11 12 13 12 /** 13 * @param string $language 14 * 14 15 * @return int[] 15 16 */ -
multisite-language-switcher/trunk/includes/index.php
r3287198 r3409411 1 1 <?php 2 // Silence is golden. 2 /** 3 * Silence is golden. 4 * 5 * @package msls 6 */ -
multisite-language-switcher/trunk/index.php
r3287198 r3409411 1 1 <?php 2 // Silence is golden. 2 /** 3 * Silence is golden. 4 * 5 * @package msls 6 */ -
multisite-language-switcher/trunk/languages/index.php
r3287198 r3409411 1 1 <?php 2 // Silence is golden. 2 /** 3 * Silence is golden. 4 * 5 * @package msls 6 */ -
multisite-language-switcher/trunk/vendor/composer/installed.php
r3287198 r3409411 2 2 'root' => array( 3 3 'name' => 'lloc/multisite-language-switcher', 4 'pretty_version' => '2. 9.6',5 'version' => '2. 9.6.0',6 'reference' => ' 720656eb12e8c4f5bb5271f2365374e2e18349b4',4 'pretty_version' => '2.10.0', 5 'version' => '2.10.0.0', 6 'reference' => '897c7ea2766f60104e532f9183a1eccbbba090ac', 7 7 'type' => 'wordpress-plugin', 8 8 'install_path' => __DIR__ . '/../../', … … 21 21 ), 22 22 'lloc/multisite-language-switcher' => array( 23 'pretty_version' => '2. 9.6',24 'version' => '2. 9.6.0',25 'reference' => ' 720656eb12e8c4f5bb5271f2365374e2e18349b4',23 'pretty_version' => '2.10.0', 24 'version' => '2.10.0.0', 25 'reference' => '897c7ea2766f60104e532f9183a1eccbbba090ac', 26 26 'type' => 'wordpress-plugin', 27 27 'install_path' => __DIR__ . '/../../', -
multisite-language-switcher/trunk/vendor/composer/platform_check.php
r3002259 r3409411 20 20 } 21 21 } 22 trigger_error( 23 'Composer detected issues in your platform: ' . implode(' ', $issues), 24 E_USER_ERROR 22 throw new \RuntimeException( 23 'Composer detected issues in your platform: ' . implode(' ', $issues) 25 24 ); 26 25 }
Note: See TracChangeset
for help on using the changeset viewer.