PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB`Mini Shell

HOME


Mini Shell 1.0
DIR:/home/parmarthinternationalschool.in/www/wp-content/plugins/wp-bulletin-board/
Upload File :
Current File : /home/parmarthinternationalschool.in/www/wp-content/plugins/wp-bulletin-board/wp-bb.php
<?php

/*
	Plugin Name: WPBB
	Plugin URI: http://wordpress.org/extend/plugins/wp-bulletin-board/
	Description: An easy to use Bulletin board for Wordpress with Facebook and Twitter integration.
	Version: 1.1.4
	Author: Jay Carter
	Author URI: http://codebycarter.com
	License: GPLv2 or later
*/

/*  Copyright 2012  Jay Carter  (email : me@codebycarter.com)

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License, version 2, as 
    published by the Free Software Foundation.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

global $wpdb;

// Sets the default timezone used by all date/time functions in a script depending on server configuration option
if (ini_get('date.timezone.'))
{
	$timezone = ini_get('date.timezone');
	date_default_timezone_set($timezone);
}

// Define wpbb plugin directory
if (!defined('WPBB_DIR'))
{
	define('WPBB_DIR', plugin_dir_path(__FILE__));
}
// Contains categories, forums and subforums
if (!defined('CATEGORY_TABLE'))
{
	define('CATEGORY_TABLE', $wpdb->prefix.'wpbb_categories');
}
// Contains all topics whether in a category, forum or subforum
if (!defined('TOPICS_TABLE'))
{
	define('TOPICS_TABLE', $wpdb->prefix.'wpbb_topics');
}
// Contains all posts inside a specific topic
if (!defined('POSTS_TABLE'))
{
	define('POSTS_TABLE', $wpdb->prefix.'wpbb_posts');
}
// Contains all user messages
if (!defined('MESSAGE_TABLE'))
{
	define('MESSAGE_TABLE', $wpdb->prefix.'wpbb_messages');
}
// Contains all topics for each user and whether they are read or not
if (!defined('UNREAD_TABLE'))
{
	define('UNREAD_TABLE', $wpdb->prefix.'wpbb_topics_unread');
}
// Define current version
if (!defined('WPBB_VERSION'))
{
	define('WPBB_VERSION', 'v1.1.1');
}
// Define plugin url (wp plugin page)
if (!defined('WPBB_PLUGIN_URL'))
{
	define('WPBB_PLUGIN_URL', 'http://wordpress.org/support/plugin/wp-bulletin-board');
}

/*
	Internationalisation and localisation
*/

add_action('plugins_loaded', 'wpbb_load_language');

if (!function_exists('wpbb_load_language'))
{
	function wpbb_load_language()
	{
		load_plugin_textdomain('wp-bb', false, dirname(plugin_basename(__FILE__)).'/languages/');
	}
}

/*
	Hooks
*/

register_activation_hook(__FILE__, 'wpbb_activate');
register_uninstall_hook(__FILE__, 'wpbb_uninstall');

/*
	Actions
*/

add_action('admin_menu', 'wpbb_admin_pages');
add_action('wp_login', 'wpbb_user_currentvisit', 10, 2);
add_action('wp_logout', 'wpbb_user_lastvisit');
add_action('switch_theme', 'wpbb_create_template_file');
add_action('wp_enqueue_scripts', 'wpbb_register_styles');

$options = get_option('wpbb_options');
if ($options['post_to_forum'] == 'yes')
{
	add_action('add_meta_boxes', 'wpbb_create_metaboxes'); // Metaboxes
	add_action('save_post', 'wpbb_post_saved'); // Wordpress post saved
}

/*
	All WPBB Admin (Non Page or DB related) Functions
	
	Also Contains Widget Related Functions
*/

require_once('php/admin/wpbb-admin-functions.php');

/*
	Runs when plugin is activated
*/

if (!function_exists('wpbb_activate'))
{
	function wpbb_activate()
	{
		// Create all neccessary database tables
		wpbb_create_db_table();
		// Create options in DB for our settings
		wpbb_create_options();
		// Create the user meta for all users currently registered
		wpbb_setup_user_meta();
		// Creates the Forum page
		wpbb_create_page();
	}
}

/*
	Runs when a plugin is deleted, not deactivated
*/

if (!function_exists('wpbb_uninstall'))
{
	function wpbb_uninstall()
	{
		global $wpdb;
		delete_option('wpbb_options');
		delete_option('wpbb_theme_options');
		delete_option('wpbb_facebook_options');
		delete_option('wpbb_twitter_options');
		delete_option('wpbb_guest_options');
		wpbb_delete_user_meta();
		wpbb_delete_post_meta();
		$wpdb->query("DROP TABLE ".CATEGORY_TABLE.", ".TOPICS_TABLE.", ".POSTS_TABLE.", ".MESSAGE_TABLE.", ".UNREAD_TABLE.";");
	}
}

if (!function_exists('wpbb_delete_user_meta'))
{
	function wpbb_delete_user_meta()
	{
		global $wpdb;
		$delete_user_meta = $wpdb->query("DELETE FROM ".$wpdb->prefix."usermeta WHERE meta_key LIKE 'wpbb_%';");
	}
}

if (!function_exists('wpbb_delete_post_meta'))
{
	function wpbb_delete_post_meta()
	{
		global $wpdb;
		$post_meta = $wpdb->prefix.'postmeta';
		$key = '_wp_page_template';
		$value = 'wpbb-template.php';
		$post_id = $wpdb->get_var("SELECT post_id FROM $post_meta WHERE meta_key = '$key' AND meta_value = '$value';");
		// Delete the meta data
		delete_post_meta($post_id, $key, $value);
		// Delete the page
		wp_delete_post($post_id, true);
	}
}

/*
	Setup WPBB database tables
*/

if (!function_exists('wpbb_create_db_table'))
{
	function wpbb_create_db_table()
	{
		global $wpdb;
		$options = get_option('wpbb_options');
		if ($options)
		{
			wpbb_refresh_roles();
		}
		$roles = wpbb_admin_get_all_roles('string', true);
		$perms = "SET($roles) NOT NULL";
		$create_category_query = "CREATE TABLE ".CATEGORY_TABLE." (
  			`id` TINYINT(1) UNSIGNED NOT NULL AUTO_INCREMENT,
  			`name` VARCHAR(30) NOT NULL,
  			`description` VARCHAR(200) NOT NULL,
  			`forum` TINYINT(1) NOT NULL,
  			`subforum` TINYINT(1) NOT NULL,
  			`view` $perms,
  			`read` $perms,
  			`post` $perms,
  			`reply` $perms,
  			`edit` $perms,
  			`lock` $perms,
  			`delete` $perms,
  			`sticky` $perms,
  			`order` TINYINT(1) UNSIGNED NOT NULL,
  			PRIMARY KEY  (`id`)
			) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
  		";
  	
 		$create_topic_query = "CREATE TABLE ".TOPICS_TABLE." (
  			`id` INT(1) NOT NULL AUTO_INCREMENT,
  			`author` SMALLINT(1) NOT NULL,
  			`name` VARCHAR(35) NOT NULL,
  			`content` TEXT NULL,
  			`forum` TINYINT(1) NOT NULL,
  			`subforum` TINYINT(1) NOT NULL,
  			`status` SET('locked', 'sticky') NOT NULL,
  			`created` DATETIME NOT NULL,
  			`last_reply` DATETIME NOT NULL,
  			`read` TINYINT(1) NOT NULL DEFAULT '0',
  			PRIMARY KEY  (`id`)
			) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
  		";
  		$create_post_query = "CREATE TABLE ".POSTS_TABLE." (
  			`id` INT(1) NOT NULL AUTO_INCREMENT,
  			`author` SMALLINT(1) NOT NULL,
  			`topic` INT(1) NOT NULL,
  			`text` TEXT NOT NULL,
  			`created` TIMESTAMP NOT NULL,
  			PRIMARY KEY  (`id`)
			) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
  		";
  	
  		$create_messages_query = "CREATE TABLE ".MESSAGE_TABLE." (
  			`id` INT(1) NOT NULL AUTO_INCREMENT,
  			`to` INT(1) NOT NULL,
  			`from` INT(1) NOT NULL,
  			`subject` TINYTEXT NOT NULL,
  			`content` TEXT NOT NULL,
  			`read` TINYINT(1) NOT NULL,
  			`sent` DATETIME NOT NULL,
  			PRIMARY KEY  (`id`)
			) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
		";
	
		$create_topic_unread_query = "CREATE TABLE ".UNREAD_TABLE." (
			`id` INT(1) NOT NULL,
  			`author` INT(1) NOT NULL,
			`read` INT(1) NOT NULL
			) ENGINE=InnoDB DEFAULT CHARSET=utf8;
		";
	  
  		$create_category_table = $wpdb->query($create_category_query);
 		$create_topic_table = $wpdb->query($create_topic_query);
 		$create_post_table = $wpdb->query($create_post_query);
 		$create_message_table = $wpdb->query($create_messages_query);
 		$create_topic_unread_table = $wpdb->query($create_topic_unread_query);
 	
 		if ($create_category_table === false)
 		{
 			$create_category_table_err = __('There was an error creating the table wpbb_categorie', 'wp-bb');
			error_log($create_category_table_err);
 		} 
 		if ($create_topic_table === false)
 		{
 			$create_topic_table_err = __('There was an error creating the table wpbb_topics', 'wp-bb');
 			error_log($create_topic_table_err);
 		}
 		if ($create_post_table === false)
 		{
 			$create_post_table_err = __('There was an error creating the table wpbb_posts', 'wp-bb');
			error_log($create_post_table_err);
 		} 
 		if ($create_message_table === false)
 		{
 			$create_message_table_err = __('There was an error creating the table wpbb_messages', 'wp-bb');
 			error_log($create_message_table_err);
 		}
 		if ($create_topic_unread_table === false)
 		{
 			$create_topic_unread_table_err = __('There was an error creating the table wpbb_topics_unread', 'wp-bb');
 			error_log($create_topic_unread_table_err);
 		}
	}
}

/*
	Create WPBB database options with default values
*/

if (!function_exists('wpbb_create_options'))
{
	function wpbb_create_options()
	{
		// Retrieve options from database
		$old_options = get_option('wpbb_options');
		/*
		* 	Add all current roles to an array with a default value of 'yes'
		*	This is for our role permissions
		*/
		$roles = wpbb_admin_get_all_roles();
		$role_array = array();
		if ($roles)
		{
			foreach ($roles as $role)
			{
				$role_array[$role] = 'yes';
			}
		}
		// If options do not exist
		if (!$old_options)
		{
			$maintenance_message = __('This is the message that will be displayed to users when you disable the board. Edit this in your settings.', 'wp-bb');
			$forum_name = __('My WPBB Forum', 'wp-bb');
			$options = array(
				'maintenance_mode' => 'off',
				'maintenance_message' => $maintenance_message,
				'forum_name' => $forum_name,
				'allow_guests' => 'yes',
				'allow_subforums' => 'yes',
				'enable_quick_reply' => 'yes',
				'topics_per_page' => 20,
				'posts_per_page' => 20,
				'topic_cutoff' => 15,
				'post_cutoff' => 15,
				'post_to_forum' => 'yes',
				'show_footer' => 'no',
				'role_permissions' => $role_array,
				'version' => WPBB_VERSION
			);
			$add_wpbb_options = add_option('wpbb_options', $options);
		}
		else
		{
			if (!isset($old_options['version']))
			{
				$options = array(
					'maintenance_mode' => $old_options['maintenance_mode'],
					'maintenance_message' => $old_options['maintenance_message'],
					'forum_name' => $old_options['forum_name'],
					'allow_guests' => $old_options['allow_guests'],
					'allow_subforums' => $old_options['allow_subforums'],
					'enable_quick_reply' => $old_options['enable_quick_reply'],
					'topics_per_page' => $old_options['topics_per_page'],
					'posts_per_page' => $old_options['posts_per_page'],
					'topic_cutoff' => $old_options['topic_cutoff'],
					'post_cutoff' => $old_options['post_cutoff'],
					'post_to_forum' => $old_options['post_to_forum'],
					'show_footer' => $old_options['show_footer'],
					'role_permissions' => $role_array,
					'version' => WPBB_VERSION
				);
				update_option('wpbb_options', $options);
			}
		}
		/* Theme Options */
		$old_theme_options = get_option('wpbb_theme_options');
		if (!$old_theme_options)
		{
			$add_wpbb_theme_options = add_option('wpbb_theme_options', array('theme' => 'light'));
		}
		/* Facebook Options */
		$old_facebook_options = get_option('wpbb_facebook_options');
		if (!$old_facebook_options) {
			$facebook_app_id = __('Enter your Facebook App ID / API Key', 'wp-bb');
			$facebook_app_secret_key = __('Enter your App Secret Key', 'wp-bb');
			$facebook_redirect_uri = __('Enter your URL (Redirect URL)', 'wp-bb');
			$facebook_state = __('Enter a long random string', 'wp-bb');
			$facebook_role = __('Enter the default role for new facebook registrations');
			$facebook_options = array(
				'allow_facebook' => 'no',
				'facebook_app_id' => $facebook_app_id,
				'facebook_app_secret_key' => $facebook_app_secret_key,
				'facebook_redirect_uri' => $facebook_redirect_uri,
				'facebook_state' => $facebook_state,
				'facebook_default_role' => $facebook_role
			);
			$add_wpbb_facebook_options = add_option('wpbb_facebook_options', $facebook_options);
		}
		/* Twitter Options */
		$old_twitter_options = get_option('wpbb_twitter_options');
		if (!$old_twitter_options)
		{
			$twitter_account = __('Enter your website/personal Twitter Account', 'wp-bb');
			$twitter_options = array(
				'allow_twitter' => 'no',
				'twitter_account' => $twitter_account
			);
			$add_wpbb_twitter_options = add_option('wpbb_twitter_options', $twitter_options);
		}
		$old_guest_options = get_option('wpbb_guest_options');
		if (!$old_guest_options)
		{
			$guest_options = array(
				'guest_last_post' => '0000-00-00 00:00:00'
			);
			$add_wpbb_guest_options = add_option('wpbb_guest_options', $guest_options);
		}
	}
}

/*
	Create all WPBB admin pages
*/

if (!function_exists('wpbb_admin_pages'))
{
	function wpbb_admin_pages()
	{
		$create_category = __('Create Category', 'wp-bb');
		$create_forum = __('Create Forum', 'wp-bb');
		$create_subforum = __('Create Subforum', 'wp-bb');
		$create_topic = __('Create Topic', 'wp-bb');
		$role_permissions = __('Role Permissions', 'wp-bb');
		$create_tools = __('Tools', 'wp-bb');
		$faq_support = __('FAQ & Support', 'wp-bb');
		$settings = __('WPBB Settings', 'wp-bb');

		// Main WPBB page
		add_object_page('WPBB Overview', 'WPBB', 'manage_options', 'wpbb_admin', 'wpbb_admin_display', '');
	
		// Create/Edit Category
		add_submenu_page('wpbb_admin', 'WPBB Categories', $create_category, 'manage_options', 'wpbb_admin_categories', 'wpbb_admin_categories');
	
		// Create/Edit Forum
		add_submenu_page('wpbb_admin', 'WPBB Forums', $create_forum, 'manage_options', 'wpbb_admin_forums', 'wpbb_admin_forums');
	
		// Create/Edit Subforum
		add_submenu_page('wpbb_admin', 'WPBB Subforums', $create_subforum, 'manage_options', 'wpbb_admin_subforums', 'wpbb_admin_subforums');
	
		// Create/Edit Topics
		add_submenu_page('wpbb_admin', 'WPBB Topics', $create_topic, 'manage_options', 'wpbb_admin_topics', 'wpbb_admin_topics');
		
		// Role permissions
		add_submenu_page('wpbb_admin', 'Role Permissions', $role_permissions, 'manage_options', 'wpbb_admin_role_permissions', 'wpbb_admin_role_permissions');
	
		// Create Tools page
		add_submenu_page('wpbb_admin', 'WPBB Tools', $create_tools, 'manage_options', 'wpbb_admin_tools', 'wpbb_admin_tools');
	
		// FAQ / First Installation Page
		add_submenu_page('wpbb_admin', 'FAQ / Support', $faq_support, 'manage_options', 'wpbb_admin_help', 'wpbb_admin_help');
		
		// Shortcut to WPBB settings - some people don't know they exist
		add_submenu_page('wpbb_admin', 'WPBB Settings', $settings, 'manage_options', 'wpbb_settings_page', 'wpbb_display_settings');
	
		// WPBB Settings
		add_options_page('WPBB Settings', $settings, 'manage_options', 'wpbb_settings_page', 'wpbb_display_settings');
	}
}


if (!function_exists('wpbb_create_template_file'))
{
	function wpbb_create_template_file()
	{
		// Get current theme directory
		$template_directory = get_template_directory();
		// Check if required template file doesn't exist and if true create it
		if (!file_exists($template_directory.'/wpbb-template.php'))
		{
			if (!is_writable($template_directory))
			{
				$chmod = true;
				// Try to chmod folder
				chmod($template_directory, 0755);
			}
			$template_file_path = WPBB_DIR.'/wpbb-template.php';
			$move_template_file = copy($template_file_path, $template_directory.'/wpbb-template.php');
			if (!$move_template_file)
			{
				$move_template_file_failed = sprintf(__('Failed to move required wp-bb template file %s to theme directory %s. Please make sure both the file and directory exist or move the wp-bb template file to your current theme directory manually'), $template_file_path, $template_directory);
				error_log($move_template_file_failed);
			}
		}
	}
}

if (!function_exists('wpbb_create_page'))
{
	function wpbb_create_page()
	{
		// Check the page doesn't already exist (e.g. when reactivating)
		global $wpdb;
		$post_meta = $wpdb->prefix.'postmeta';
		$post_id = $wpdb->get_var("SELECT post_id FROM $post_meta WHERE meta_key = '_wp_page_template' AND meta_value = 'wpbb-template.php';");
		if ($post_id == NULL)
		{
			$wpbb_page_title = __('Forums', 'wp-bb');
			$link = site_url().'/'.strtolower($wpbb_page_title);
			$page = array(
				'post_status' => 'publish',
				'post_title' => $wpbb_page_title,
  				'comment_status' => 'closed',
  				'post_type' => 'page'
			);
			global $forum_page;
			$forum_page = wp_insert_post($page, false);
			add_post_meta($forum_page, '_wp_page_template', 'wpbb-template.php', true);
		}
		// This function checks if the template file exists before doing anything
		$template = wpbb_create_template_file();
	}
}

/*
	Wordpress post metaboxes
*/

if (!function_exists('wpbb_post_saved'))
{
	function wpbb_post_saved($_post_id)
	{
		if (wp_is_post_revision($_post_id))
		{
			return;
		}
		static $first = true;
		if (!$first) return;
		if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
  		{
  			return;
  		}
  		$post_metabox_nonce = isset($_POST['wpbb-post-metabox-nonce']);
  		if (!wp_verify_nonce($post_metabox_nonce, plugin_basename(__FILE__)))
  		{
  			return;
  		}
  		$_post_type = isset($_POST['post_type']);
  		if ('post' == $_post_type)
  		{
  			if (!current_user_can('edit_page', $_post_id))
  			{
  				return;
  			}
  		}
 		$post_id = absint($_post_id);
 		$post_data = get_post($post_id, ARRAY_A);
 		$post_to_forum_id = NULL;
 		if (isset($_POST['wpbb-post-to-forum']))
 		{
 			$post_to_forum_id = absint($_POST['wpbb-post-to-forum']);
 		}
 		if ($post_to_forum_id == NULL)
 		{
 			error_log(__('When copying the post to a WPBB forum, the wpbb-post-to-forum was NULL - a forum ID wasn\'t provided'));
 		}
 		$is_forum = NULL;
 		$is_subforum = NULL;
 		global $wpdb;
 		// Check to see if this forum is a forum or a subforum
 		$forum_or_subforum = $wpdb->get_results("SELECT `forum`, `subforum` FROM ".CATEGORY_TABLE." WHERE id = $post_to_forum_id;");
 		if ($forum_or_subforum)
 		{
 			foreach ($forum_or_subforum as $forum)
 			{
 				if ($forum->forum > 0 && $forum->subforum == 0)
 				{
 					// Forum
 					$is_forum = true;
 					$is_subforum = false;
 				}
 				else if ($forum->subforum > 0 && $forum->forum == 0)
 				{
 					// Subforum
 					$is_subforum = true;
 					$is_forum = false;
 				}
 			}
 		}
 		if ($post_data)
 		{
 			$forum_id = ($is_forum) ? $post_to_forum_id : 0;
 			$subforum_id = ($is_subforum) ? $post_to_forum_id : 0;
 			$data = array(
				'name' => $post_data['post_title'],
				'author' => $post_data['post_author'],
				'content' => $post_data['post_content'],
				'forum' => $forum_id,
				'subforum' => $subforum_id,
				'status' => '',
				'created' => $post_data['post_date'],
				'last_reply' => $post_data['post_date']
			);
			$copy_post_to_forum = $wpdb->insert(TOPICS_TABLE, $data);
			if ($copy_post_to_forum === false)
			{
				error_log(__('Failed to copy the wordpress post to the wpbb forum', 'wp-bb'));
			}
			else
			{
				// Update authors post count
				wpbb_admin_update_user_meta($post_data['post_author'], 'increase');
				$first = false;
			}
 		}
 	}
}

if (!function_exists('wpbb_display_metaboxes'))
{
	function wpbb_display_metaboxes()
	{
		global $wpdb;
		wp_nonce_field(plugin_basename(__FILE__), 'wpbb-post-metabox-nonce');
		?>
		<div id="minor-publishing-actions">
			<p class="description">Send a copy of this post to one of your WPBB forums or subforums or check "None" or disable this in your WPBB Settings</p>
			<select name="wpbb-post-to-forum">
				<!-- Default -->
				<option value="0">None</option>
				<?php
				// All forums and subforums
				$forums = $wpdb->get_results("SELECT `id`, `name` FROM ".CATEGORY_TABLE." WHERE forum > 0 || subforum > 0;");
				if ($forums)
				{
					foreach ($forums as $forum)
					{
						?>
						<option value="<?php echo $forum->id; ?>"><?php echo $forum->name;?></option>
						<?php
					}
				}
				?>
			</select>
		</div>
		<?php
	}
}

if (!function_exists('wpbb_create_metaboxes'))
{
	function wpbb_create_metaboxes()
	{
		add_meta_box('wpbb-post-to-forum-meta-box', __('Post to WPBB Forum', 'wp-bb'), 'wpbb_display_metaboxes', 'post', 'side', 'high', NULL);
	}
}

/*
	Register and loads the style and javascript files depending on settings
*/

if (!function_exists('wpbb_register_styles'))
{
	function wpbb_register_styles()
	{
		$wpbb_theme_options = get_option('wpbb_theme_options');
		if ($wpbb_theme_options['theme'] == 'light')
		{
			wp_register_style('wpbb-light-style', plugins_url('wp-bulletin-board/css/wpbb-light-style.css'));
			wp_enqueue_style('wpbb-light-style');
		}
		else
		{
			wp_register_style('wpbb-dark-style', plugins_url('wp-bulletin-board/css/wpbb-dark-style.css'));
			wp_enqueue_style('wpbb-dark-style');
		}
		wp_enqueue_script('jquery');
		wp_register_script('wpbb-search', plugins_url('wp-bulletin-board/js/wpbb-search.js'), 'jquery');
		wp_enqueue_script('wpbb-search');
	}
}

/*
	WPBB Overview - Displays all Categories, Forums and Subforums
	
	This is like viewing the forums except in the administration area where you can edit, change the order and delete any category, forum or subforum with ease
*/

if (!function_exists('wpbb_admin_display'))
{
	function wpbb_admin_display()
	{
		require_once('php/admin/wpbb-admin-main.php');
	}
}



/*
	Create & Edit Category page
*/

if (!function_exists('wpbb_admin_categories'))
{
	function wpbb_admin_categories()
	{
		require_once('php/admin/wpbb-admin-categories.php');
	}
}

/*
	Create & Edit Forum page
*/

if (!function_exists('wpbb_admin_forums'))
{
	function wpbb_admin_forums()
	{
		require_once('php/admin/wpbb-admin-forums.php');
	}
}

/*
	Create & Edit Subforum page
*/

if (!function_exists('wpbb_admin_subforums'))
{
	function wpbb_admin_subforums()
	{
		require_once('php/admin/wpbb-admin-subforums.php');
	}
}

/*
	Create & Edit Topics page
*/

if (!function_exists('wpbb_admin_topics'))
{
	function wpbb_admin_topics()
	{
		require_once('php/admin/wpbb-admin-topics.php');
	}
}

/* 
	Role Permissions
*/

if (!function_exists('wpbb_admin_role_permissions'))
{
	function wpbb_admin_role_permissions()
	{
		require_once('php/admin/wpbb-admin-role-permissions.php');
	}
}

/* 
	Tools page
*/

if (!function_exists('wpbb_admin_tools'))
{
	function wpbb_admin_tools()
	{
		require_once('php/admin/wpbb-admin-tools.php');
	}
}

/*
	FAQ / Support page
*/

if (!function_exists('wpbb_admin_help'))
{
	function wpbb_admin_help()
	{
		require_once('php/admin/wpbb-admin-faq-support.php');
	}
}

/*
	WPBB Settings page
*/

if (!function_exists('wpbb_display_settings'))
{
	function wpbb_display_settings()
	{
		require_once('php/admin/wpbb-admin-settings.php');
	}
}

?>