From 0309850b5af659bdaed805f48f2163e059b9f721 Mon Sep 17 00:00:00 2001 From: Wisdom Anthony Ebong Date: Thu, 29 Aug 2019 14:02:53 +0100 Subject: [PATCH 01/30] Add files via upload --- pix/Group.png | Bin 0 -> 48087 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pix/Group.png diff --git a/pix/Group.png b/pix/Group.png new file mode 100644 index 0000000000000000000000000000000000000000..c1edbded619587d5d825cc8a81b5a987b9e4e660 GIT binary patch literal 48087 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
j zJQ!levmADO-kRR`(dY<7uShVN2hm&7&iM*6=@_EpF@$uy*WPFlr`m!rWEK3rCBy6_ z5|U9rwJR?U5HaC9!VTnbbpz}U*F0B7&O}5hW6OO;TC(wth(2Oq@{CW(-+Das^Q{q9 z1*3YIJDRp3T8`AUJLT1oumvi!W>qJ&xU=s=AV+N+sia#1vbk#zde+LYty~UQe{*|CA~J8k~&QoPJlwUDDsyUdChF6QXAe0hBoaRk`zc zI98L+4z?4H8=}8dps4ZbfkV9yi9)YlU5ZwP7r@aD zt^Ewuooa6;Y70*E;bh4ZYq($$T5Es)yM$p|Uct>qJNz>DCu!{K&>h=(D$7^?^7oxd z#xvg$*v;ep8v4Tg?+I3E{2@aE_vz@j>syDOov|%K*ZB_4nnpI-wkA17z zy|pb*NHbsHI6-jk)^7cn9veZ;)V@F^Y*-`Rd;j6tl(>EZFU1I_dN-~D8;~2Ow#v&* zk*mS5&uV*`VuP&DvR2?^AhS}*S{gRu3qW@IjhyM6q|~Nn)kWE46V!KnOzRX=DvmCW zLkeCNae>tjd?FovQoTw=1QjcKxE1!%%$F_*l>$Rq-U0yVh6;@C0Cs_?Bie@Tru)3~ zrrU%*aRE!if{M;HuM)~onDp>qC)fOwTzhUNtd=Ys$*Y9aYEQ{R)``t)N8XC@{RUlW zyG>W8@A$3pRcF6axH>OYJh=6DDTl0Oh5gvdopOp8bnEV32&;=V2C>+;4HRABD7j8I zkC|C8t_yg#GU;w`Tfa@~I@XueT{{o%G=DXov(Tkun)BhcfUxgwAoJp~v;`@4j`RfN zqtJ~+3nWnN>(7Q4xNQ@)iQTT4LO#Pnn^ZcAZQ5VWLBq|_W*?N^M@E-;U)fgCM7Cw#Y0j(ZcZcR^R7W~sYINx4P-vsyF5zMQxqJEgLj{fK zc*kCc^%n9od+t6}j?qKt80a%1Q^E4^qDr}K&!;G9Or*q)f&n+34{Z#ksC|&91QRY# zg{%0a;Cc&%aO-z%1)Hoagn>7oc;E)7*|Z?u5ndEB*H$D`_4srMV{c*JAfZnbm;y-y zGMZkP(gi#I79|jBDQZldyZcuCMLQ=fY{!DasBA^a!_2jRA*1Q+uvj-q)UvyX(0rv3 zhR^s(NV3`*AYgu(dnUH$7Bp~_Lrz2sCk3^^R{Lyy0~9szAufAF&k4Vh+U6WNv{t_D zO^#Lj^0vmj^p4!p0#u?jq%#)j*v)V}x1^-#gt;|nr`wvvmoVbv&FA^Ps@~Ltlkr$qDsw$s5aGl#=-CQ7R^0kg9Zl$BeI)A= zhbqUq^igfFzA~?~tKLjG)3ni@dFiS=Pt)P-IER;hok@iu5_+_LKI>oONMYLME$O|^ zGO}vuCWIGfbPd$oxPLV4mVU?IH7uZspgu&z+^4Z`u2}sfn9ggtwAFg4ng(w!mA8wM zx9`GTCmQB<>$I;6l7PkNv&}0cH)ymPrX-Q1pUm`06R?- z!t)p?Fb;j3ShL7i?5VQ3V%AeC2WsWMz{^?IxU9{)Y;C2qxP>--F>?E}@aIsxCM>Jzq&y}&`z@-8*dBBL@`NS+t3*B2#@a4tAt zXWW-in3pBlJFMCP0R4Ky;UldpjpEw#wcglys3mvmrj!xy-Gpw6y;$LPNow=Q1y2Fx zN9ZWgAX0WoASbRks8CkNaC(%YCbjuJ?a24w(V&!;k!2~$iWkPQU*j6a zRKNOS1g*t4GZ3!Bdh<~;9{*3fC(4$fMQ3i_R+WR|#B%}iZ}kh4X3ppOKA)L!+XiS5 z$~P;WrRl{I56wL(18HMBxwckABSqb3UwH=8;-ZC5Rf|YA8tJ~e2pi@Fb{f!rw_*^9 z4AF}j_g%WO&$L1n-LJH>+TPDR3vniRG>o$>#Fd@Uyk`KZC^HOixemOaNZlt5#echc z#;79`u}XgmC1On)-0r6qZ@-o+rZ#hv?6{g8(SLRT+hzz%T|1Tm zTc<8EhviGAc-2=w>wc|Bjoi1*-G#zybR*L^T;Qt7v=$1vQ> z;xLzy*jgI>(x-3Y4aHV{)VuX2dlqVb2a_Bmza0Ig_+x(|M^WIGAY$651F|+uNY26L4OSIe~!Fl(_6wPo3PcM9%uXQ=khdH)Kpze(?S zWDNx3v`BCx_H(7)9sn56PQM2<>{tG3JrtdJJrVmdx3r>V5b?Ea1*_dOmo=r8wTo9Q zQ^_l^^2iT|!A+d8l?Q4+;s4MIWK#H)?_lu)9|W|=%ASvWzHj?Du?oi59E!5MZ0WIbSja# z{Dm*PY1W>!!+QMjAw$%#diIVc+v|3@*y6g1GN9o)hNF#zj}rMcw}_@SC6J>8L*Th3 zF}LBHZP=?AEtSymf_hdtEn>X^d~_9bi}xxy2QC(R-@hs-9t8iAj*P)0AAQ>>*F9n1 z%}5EFWd*Ar3sCJx_a~b6XZlIOXgLqfpJmwSzxuNBKKiA~aFOCCbm6O>;0hPcxb0p7 zu)wWmQx(T{TRP(y7}_-d8&X0vrf&AFOn)T&il_=RrDz*=`{s7mj#8#3VI+x74K=JwY_c# z?CyTDMBI^~MdR9@oiuOrr}dsOo4A?;Jg!KTBUR~mRWNw)TqA~^5IM>~x*}4o@4v*w za258OHJZq2=y@MTvKT}0H5Y^X{%B8Q*VNn1^fu|0RCvCDsiZQB7En}CS#!-5e>B*- zd_`~KK-+wM!LwtodA;KXJ+K$EeD>Q+d-Q?64GDu6C2%Y5IYayiJJUQl}~sNN0hs-)JIsH1*$PYP?2 z_avv2_ovG5d#|K}OvyA=BctKGtIb7c~r{`p^L&=Lgg8$*a!1flpnpgic2 zrQ!4bsu4c5G>k7F7~TYAr>>_L558&a`hgojAz_bW!)vxI?5C{VJaDFIOudzlqcHSk^w`ghc#{IL}#m9$!1_}fj z-M(nD5%?-KUy1Z-)8w$@xPPzWpdOyHI<>bF;y94Nxh5R0dleU>GB#tZ=4aEvFqkPe zepB+a3dAqr(t2@{^KC^Me|3*Lv_`?@R(TnrJ7`v`UL~BtexBhK zqM)C`#vf;`7Gtk<+?4i6V@!_3T)m*ZuG?H$GX~k%!}WgoUA|C=<7|o{wjZepyy_wK z^H{f@sW+dIe259V)agbUd}XX|Irc(CG1lm^$Vb4p)55b?(Q#aGmGvdzd()>6&p_UC zto))Yo1e9zOI?rxW2EnW33_-+g{ktkGh(-`$3IbDV>v+Gl!iUw)=N+2I$!fOo&Q6p z{qFCR*mi}~_c1K0Uru*~>yr}(KPD>aVRNY>=mW`)KJ+T@X>Vo$(#gVY908bB{d58A zz6+@tF3L#Qh5d9Dteu*$delbMnPGZ1_t&hUWVLPrjNiH@bUz|f9Z|W+bGFf;tP6q*VNT{3HL?-Z2m0ik@JS6ywdGtbw#qP%N<4e;b_h}oYsMTD zAqz9)#nbjo<(@vNoOJ7|H}b!&UkhcN4B9gLQBHd#u5uxxQ!zx86*IHrLA=l8>!?Zq zd^t>B#N{%_i7Asm^v&@63o?{pzM;zt9de!xU82_^tW%UK^L@yT-zhWOcv=@`Wys)h5seXI*-+hDT&H#t(*o4Ub!*_i)gr3L(oI>6b*`Q?tI5NDw#GY?=~HS`irNFk}-N)6fVRlmr2XqBiAx-WaP2_t-jow?Rm+M(+`-F#Ts$rC&lHWbofF()+<%1H%25< zUDHMafiq*G8wpPro;PCXTUYebR}3~SnfvIU2wFTOCvp;-n|8JhfbZ9B3I?C|ZH^=< z)oYXKp{@CMWzQ!RB5ihltkG;6ozx@TyJzK^J6^OG=Jn ziaLey8u~iEZw_>^7GcJyB|o&QQ?;<~Sjz9+{WGqZ?i5Byx;JsaT_m{*9N`L-Sf0K+ z&@A+g=vy=_(!UdOJDUv=rlzva%_XTf{il02-dXDeL4hkdOR z_KEg{c7EY^M~1U@&{<4ahzfLm9D8K06)6$>pDH#=cxASTC*{LitYRUDO14$8v%^Nw zC=Pw@NeOqkCp_(JYxg{6oh!f3?!%c8qHOs7p7ZvAO#3@BDVJozl$L99T%TovUT+H0mmNH}7N)oq>lIOa6##I>3Vd23LzCw3+nwaJZvVpN)s z3Ezd1zOp#pGh;o*K`LdI6Wo%!%tQAcT?CYm=zJpDS*)sA;JtQ^!f}PA9UUB~7zGO9 z`A&PuE-y3+#t&ox2Ye#2Yk()ryE7Y!KQMe^7bT~hY2Q0)xlH(~%E1;I`I3Q|Ooc}K z9>C#kvYOp{&kWStiOxs@{S~hXTgc z1LYS4<>u@1t_ZCa@m~Kt;}r^HE;iqhZiMP2n5AD5{yM?H2*0PM z9?ag~uMq5lPryO_wlA+9d6W4IK$bmZW@c5x<2xjq2ft|gRu8B_uddS_3Yml-`raZE zy(7L37m}_Qsbbf47U0C@S~7X4!nU3~XUPo%&!A<4;p}sr1;I96%uwEOX zbD5|Ow)u*PJPU8=+^gdXy6ctoaGdKBI(?)3a4T-4r-jvB=4>5+sGCrZG~|;0*VHXb z!78#yM&_RuwSq(H@@|H@k^x)N%aRmx|DBnK7qJ?&W+zmD68+GuXMl&WwTe)ovrQ%^ zG-m+2^`y3C8Zj~WG(>en=hLkWMuG!b=E^Z{)Gm_rS-Ho2Mfv38rD`sR_N3B#0RrW1 zf)jL*F8Y;#+5s^{e9@jgoecwld0U)u)o|rQI&HsGG<9s4OXfUpWQXU=6vjTO9rIM8 zNa9JLqsUsr9kRAKo3UzXsG2AAKEs9)Gp~eStS9NA1tX%SQ7}vaRdC4tjOiyOhe0=@ z19}ADGqANxfYWYS){e_-@@(`LszArcvU93<2~-yR818(L6;U=pXQXSMysvlzGHX^u z6?n`#T)sdMr8%}MsRgksHi+r@8|Oa`pcG5*dR4_+t|8@8*m+0)q`zqE<`MLbWNePq zbB9!fyMsdi?k}HgpZ8{ZnO~3J6^_a29Yd|5d_^*G1RG22j5xqI&oAhe^KwA~7bK_gV zb3p%zD^6ixX2dCW>U_*gFrg0}1D?deG|_ z4i1;cXkQLhB`;5)A2)+@=#~pd!!4 zQ?4+L%F;2Nljgt%H;}_eNn1azjDpA1gHBobZ-NXedOAJaZmwnO=)ABF4x&~Mz}-mQ zZ?iG$5o7wBi=*;ZjUgW<6V9);c-8@jw0hqy*St0Ty55I$MOQiX0>LvNBS$Wm{w~E6 zd{TgsN<$Xz_WsYCO<#9c%0YLF&8UX^rrd`pV=6H+m!`^O*}pe8{R&KTLVyv8b@|-q zbHO9a<@N+}{o-aW)vDFsmtU)I`td%jGtTbT=&3D^p(jK_Zm3B1zMnU33rAi;^7XI} zMVD?f6^coUpH%=8{KZreRld_lk3i`+ZHk9oyuwegCU|XKt~+^dmy1^zaFrc7%{tx= zfy+>>YM1cva8ED7n3fh_mChySYKH^)PMao<0pC>PW^EnEk*f--t{JHWB5^(4T&Py#KO!8z zqIGsQ**-2XxNy?`d#+2EyDGtH@iU6490Fh7c`41F?DeKJPXQHJoACA%&NZ?@z&m3s z)feS3$f3(6ddG!M#n8SwtypBux_7_Lt6!;{1vY}s|7*d)SSBF=Au6voABl|IrY~w8 zo`D2d@2gNFCjuzya1X#q=`l|YvH6;x zCpXA3=?uw@@oY#EXocLSgB2Qal%(H*%IMndNu>Y${qyp7UOCXQM5-ReDV|N|>jpd? z;g@~lo0zdY#N-{e!Eoi3+SGgX)iVwO@C%`$hG1osKd-&J`%p6#e%?V?&A1|RucCXFU3XB4Zy8QJ1LfnQ&vvNPlglT-ivTYWyjDl}%MY@^kSnPHArJ>^>G zbIgnVKfYg?IWm`l77M#@-0;T`wteCx3nA5zEz+*NBz@EqfMp&qEu&M~FxJa9cQ;?d zjC1&E4(`rKU`_OD=i&D*bwwv3<2IW5uNuiQ{ZBSFEjwuHD|%~bQ+aybFE?LC>M%(U z-_g4)tU#72kb0}RhA<~?bECYIYkzW(FH8c;oMtLhChjz)cgq0E)y7e_#f5U6vaH*Eo->Xeh4GMuVqp%UlB5MfMSI7TSgh7^^eF3@Em27+z)Xqle+(t${*8$vFfGNhLf0!r(1&^EoB zpE7s=lDOU~_?{&8CJ0u2&C2JzrtIN_UI{YZq$AHd)wQ=zVgr}eX{$tcz#BUiRlI-Z zq%0dGU$n8#R=16ohx&S7&Jm8Em+2;}*wQRyj~_vy3hUxr=tRjwF&$ke3Q)(y`ClgA zw81Scl>|28ueHJ@;1)u<;D?9=p!$8b#9@SnJb06jzOMd6aILtNF7IC(Pt9Z6A{rWT z9>J`Pf74;&ZT8(11s1-mC%JIIt3a;K4}C@|S9x6G4hcQ*wWV4v61eV=vB<20I_tNB z>4}0*uBJ-LVCxh1A%UY$-z%T}Nm-f{ZIexDdnz_6Gj|*wW*L>WkW}M?E$$J* ze#M2|-_(~b>vf^Cf!bSNhYuB=UWI;56!p$fHY>bOmFgTu@YMe^_0e;-_3<$A9JuaO zO1N*#n9}tnTJzSwk>5gA*z(0oTNXpI{3nJyiN+0aKa3VAVGnu@CLs#PW|WaLppkP- zzmy%37xS~r8KI8$U|Dc8Jh*byF8P*H-i&0dwpc)Gc95NCO*}IDp)5S0bOV(+>Gu zPfXc7$t}hUc?`X8*REETWDbnxmg(4TeimT3A9kC;&eHWY`lu0@?ffx`TgbwXWxnnZ zf1W2p4sU@yndK8$zG!itvhJH1wSDUt`v~~xXg0ZN(j7O0MUKU~SLp)otQdm3L22eM zB(i#lFB^O^!tS!|$|BMrInjA;b@=9Q(FsT!t(IF;`DMQ3pY)mKMp45>^gBLyuWy;5 zDf=Yp$!S#YJ(G~%s2)piDfrCplcg=NB+E;nxIK&s>_6h9i9Xd(6LyGI($enXWsmh;e3&k z-w!09yO-imC^NzH2_rlH&1rKJft;*#fFh zziGjEA-=e0*|uEaP4N76eQ492#EJ7-b=G@>64oTSszp?^c|E+78!sRmR1_*RZ)F}|QDUomi?I!tqwosGOnGSOZg2U8olb?w}iOmy4IpEhR zcGr~0`8^W0W63FE2KK?-;agJm_@>?oU9dZiZtnYYBTE>4fyRdjBiMf%?h8uGA`Sjw zxK7rV5wE}LleG*O$i^c-4cv%iD71(9o)g_h{g^4!bV-vnU7}CHRUdA1WEp{!41Q2m zIXV_y2CR5~g!wt*{mZudc~WH6#e2Ny6GEK3wo}}jdk)YOW#ZJr5p;iaB8C3=gAr$C zeQxe%S_5`_Xu>V}wlHIolzogUmL&m~zdz$~(taPPNO+=+GpFdwb7c<7N_j)lYdpK# zv1r8PE+m!b&Z^`&J5c*|MC=&T>EKw<*QDBiX+_7iuX8b%e%Kg(jy%NF_^(p~`JqV* z<7FP*E(hp;lW88;g`JqwY#glDnY`B%4;`SHU7Ixp0s zuA_s-Kke;MGuSnpaDw2Bxa2bRs(c=jOvPRP{1+|&S_O@(j`u9q=F#_9PC&<`LM~UV z{~49~yX`nWP0i7Pch^4)~rKde#BztgZ^@l=YtQ?^(w$e@` zZ>V2B@Mb^VX2zXwE#iJdbTFUbfzqd(iE($T!$DWjJDV|{K)1^SA2d}^BgXf z$rd3dIw85`dV;_HoiYh$c~t8qA(hSEs2(6jMzf&eSV zo{IjP&oH)celjG}7B0~H(mA-c8r;<>`IV2ZhWj|HA&Fd;WHjy$`ZViL+{$D2l)9Mk zJq-vYPtfY7zUd4jwx#9%qWs^KyzfFfCDqyL^-TPt?*}J#u#)M?IEQ4SLUuWy&9(=E z3M2_ojMg(2z+^(tyQ0U$5i{qpcxU+0b7oJiO(L=}Uj~nyZKd=k+__*nm0>q|jy3`p zyDnS}y^<|-+Z@}@pwiLpbR-nP`xySkKs`#;fMD_}V5p!Y;san<=lxYSNN2&o*ATy$NiONhx8TapWB^o3M$R^0|PGrWZxC-9JU z+O#wB;C7egPa*m9Yj)STo_CQE|HT)yh?tCc*9X;!L`XU6i8Yo}E7j3*!2>K!fa8>~fW#Vh*sTxcC@*eQyT9>ReO@q^zky zq)&h)bEjLc^efVai~>5k1|~UH%i@5kjq8bta?z(%L@V86yQEF5aaYhAq$yYTr7^N) zpGmhX`rgf}Gt2`?QP(^6I$UybD%$Ia@6@EZQsh334Rv>WUt{w{Z!*_#o55_$%Y{33 zYJfXuXiOG&HwJ%)>yfdq^9W6kF^I72)aE7tJLPDxGH7|Ss=#SZ|D$pI4!hLgXfb9u z4ZU4ln_iK(H7OTz)K2)xUhL#v7MP``-^Fn76XF4u)#D$fMh0+S-q|hQV`niTeV42( zr=XPh(Q50m%Tvuc#2>ny7weXf`Pn*4$}tvYTvTjxHMG-E;p`{>ASm`d7D#($6~X;> zGPlg}-k*4)#5Waxa(z}sIL6bHEJM?<>8l@*S}&FSSTOAif5_{Edi&S?Dbk-zB;e`0 zGm^A1&vR?UDxQMN%F!XsQNZP~ADWA_A*%3Q&n$+{w7KI7-^o|nJe8WxNgEZ2JBW40WDCfQM^K*wAGLG^ek3+aKrdoTrmL*(tXF*IGZi4JVX{h(_PoV{qE(r7W+zjI0 z!5lyG#m3px+uGXN{a`YaE)Bjh{k8Pp;)3c#azzu&N&}HKuH^Tf{m!9T{pC9;V77QH z1Z9^teQCGOR@ItN6p-KX5_R!L-mw4!Mwk5h#p0yT+TtDr- zsef1Dd^m;DGt%1ITC4+`j)Zc@^;8rHOaSARPPAwJh>GMZ0PkvQ7BpRCc?x2q&QC(I>CXm5n9Lw$e3uS%T~Z?4}`xF{5B zG}+jam4)JJs=UyS4GQjChy^h5;RWgzcUB$drP&yc*QsOrB_&u~yr((?mT58x&x ziR}(SnpC7mnhQ~A9=!wYcusBGU{WvXlvcDQ`j5jq**`1kOPzJmcyxOL>)1!joadjF zxSqx)?etzt7~rJ`q$NtcS6P(9#}dBx5LV0Wxyv?XdEN@Y@4&(^lD0jBvLZwM4$JG{ zhWI3hW|3*8#n9Og^)}Q}5DEr}c*K&s3@@v&W@tLJvWYF~ALC%@TyAX-FMBU{l0fbb zNH&H;36q}A@u)`F^TU>_IHH9C`1Q~r3)1JGP<8rklDDC_U4|ZS_H1CKiU%;aUHs$g z!N@V4m3SjEC-*GGo&_QAV!abHxdvXG#O4k;rs&-`3OJ#1QsL{@Y%#ADyFGWH?_kS_ zBwD7c)H#B*%BV@4mS>ta+IVKnRsy9L+z%H`IGp9D>?|T6`+$E&LLoH2wHb3p{Ai}v zY*D5gSLm%B$Jz#}pSCKW1rDZ$B(032EJ7P4)q)|SeNb}=42(MNRV|s3!J^J7R~vJ} z-`l5r)srfOWTk9vovE7~gb_oOaMBSS&Wy}v_Cnk*PRh+#b3UH7Dy!Gv-`G!Y$X$&m z0id4=YnM8~>}W^XR;q9|(^u!s>8sM{InO{S1>)lNIl{oiAY4CvhlaUlV@DKq0_jq#BdDpQ4ve=hJfIa?&-}KGl~*bS9c#dN<|}Gb?P|v!pz7y z%2vlT=jtH!v2SC+?QsKRoWG-`<9o<9dWX?9u6`!0#{#)FXtv8P=Yh$0!dFo8d(tjw zrX#E!PdjIvgztawqWiSyrHLO~sLS$x6R;Z3CKPfU6x;Y8{QFhC;81$yg3AdPvfUqt zvDHRLu1C3}Ih{S6bNAIVk|&c0J@k;I8eaf}w>E$iPpR}!urMnDcIDG!V*|x> z`Jlh1tHnJrFQoLh_zSqV1@r(+p~Zr3t5oHw4`via`Y_I@Z{>kT6S>RX?FuEh4l|Re ze(#cANk*Y+&MkoQCKtf@0CB%~&bH1FwLN3)U4KI#(E8c#HpEowy${ydd4PKNTtJ59 zL82P#Sr+STJyLI=yrXr-t3dTk8=-dV>A!vvzl!cJl^XsEcG4*ohXN@62gu9nbw-s! zwB?^uhrfvSGf$;l~dmE{#k^A1!0KF-v*TmE*O=E73+53L9! zbrS0s^nO&GOL$7dNf!BzULg7$-F!JfPE+-j&0EQ?jl^Ux;8F=R)j@?sAXTX@_TRiaN5XM1&YA4-zW8>a(Mpe zycNZz+q9rHdSjjlW>U9{<+a|qCT&8SV}zE zq9)frsUlx*M7^j}-&m~*hgE&Cje!sqef^dH5lXvhhufLzFjxa8yuPWTn5sx6nLBEb)b?7E?NMWZ&(G zK(9A`DVv5MY+!LqeQaq!3y|Z(QIr&SqUm$f*(bGX*dqD4I6|RPBy!d729lJSwd$+E zzDoG*vT%7vQT{+HAt^2v`QzLzjWPP6QTsX^2aWULw)vXkbM$KbMU8>}^L7TlotWdsTI49fULW!R{Vl z6$Z>+rN3hvdkjc&ul_v2Ns{7(?T9!qwm{SAj)9KgZu07u#?(8`d27i3e)m^UHC{3rAE144d7O{ z9~Gs0s`f*T*;=X+B!X9F+pqYw}%LZU@-gnSy{w$GTKp~NJ8}f2L+mNTCryb}0rtjnp zo=)OsYPw+2qsEK(4q5j#R+!<;Bi$Oi$?Qx+fl4m60j^Qtjk$WbbWnZ zXqk*JovVhz5ljF!tbznRE-(l{bBgH5+^E3pA4&$fDtB)!(NRcN` zk%hD~;^^#BtK~d(0(9g)tYd|uSLL*Mw_;Z;h*l+*H-)~x_syd39PUXB$n@lA>b@y9 zYC9TpvO3lsc8$^>)F1}DLqhOlMeT7c_nwa7oL5{v5t$SSgS@(?{(;q(PCr(bM5%Y7xsTF{Kwe~DJ8?rNTnFps48Yb;gPjmRTq_HxM z{D!NdR-zFkrK(^4`QAfRH)2W#sV>eQ<@YltH;`p-8#!)ls)iA#=E&QFC|U&woLUd~B-Qn9jUVch)Ff}fo^#3Rlezq`x`6C=w zlF>DO&b?XU=aX43ce7tT8nD#kJYaR*0=22rzw;x&MBunbR`{e7ZMx@ zIh?571C0Jg=SdaBMjkQq59g*J3{2&Ip4EBvXC7hF_(X7VcK4A1q7H|6!=Klal-Ea8 zD^Ze8E(2K+;S4OXB3;NGobZo1!o2|mQCZey%mz?+^Nw<ZoqvtaT@0^Pj1L64})X$h@- zKv>;2;%IBj%SaLxin=l~#&R}Fn|Z1qQy^w`>RFqc)nCz-LP9Z$gyjGWM`J`qwON!- zy2%A?*I@ifa=stZsl6*Pbbo`|TN_s#D=TJxB#Cz9U))tDdA&wzV218Z$8`3l%onzh zpe*7s83&TF&YrJaQ5_4*SE<&=lx zeSAd=`07bKN7T)l+vbIGoI#An-`1VgZ{t$5^hZYk3 zaph8_=A+#XEp|ZHdDDSff4_a3b&iz=Kh6pxG7Ti(Zh0*Q0u?fqI zbe6>c|Lt z(Z7OznVyh1okt|UsF0&=-DlejFON(Kh1Of%M5&e1;Rj6S{zW@;LMZoTq0+GJUcqc! zcPL#A4AGpJm{@;>@^CRRJI?CNMI^GYFU&<5M~oKx#iDuCSu z>L!+O%d;V43VAP=*4X{HBenZt`kFdH|IIOCbLu#jam0x~qf>NQ%tQ3cyIf#rdsH5j zOZ39F&vDy9c9a5gN!8c+ z&pwRyp-~654`fueB*CrfPlLvWmoM=!+y4V2vwotAA3-6&o8n@iB`-Gs-_dt|V>Lpc zP_`L_t6}N7O7~^HdfdPf3A7D{W>$#|$h0Gk#3EI&&LR0g zmBeq>#+$kL>1Xj4!7n>?p*GVP5S)t<-7-vF6u}h}#h$Ci$#%$qzr}9pt5n%K*MHi5Bbxcn7p_gXwqt z?pdAhlP6GT@_$dKO`>%>d_AB*dOO;br{aOy3R-RfL{`OicbA5%U;YeBhGOTvwA}Sn zy-nVV3hIU<);SyJx#94Gnv4t9fQcT2k2_V%}3*9mRQoCtI=AaXwrv+aL;q-mz z@e{2hE>FzVF6JHhKY0Y*M3@l+IL9k#&VlGY!JYmYFl1`>qn=U4$q_kU1{&2eZSwkI z@m4Pd{i;wuV zX9jY<+}lZ=v7e(<+=*WhEvX0=hT3D!jh8MD7*9~?GvLL z!2K%3?+j*DlpOJI|96Rz9aa2ZY}_h47W5LK@LTH7Y9J=<9p5cB#KX!O=ddNt-=P{& z7e2du(=5rwm#M{u(tCS0#O=8FY+B4=tO)MlA|mW$54SwOI{hYdNnE-bIRHCw-qt=H zG$rexu(;oiS6uN9B?ZTx8W;JYeuPOe!vIR8cV<%O0$5q5ct3pKZKibagwqElxV~EA)hrGa0)JE%T3I#H066I@P#<%?;m!3r-*DpoI z2d-5+iDR*e&2t~uSKdPG@?vp-Msh!0e2t*&;<9l8gp}qW7{8Q~ZK+S` zPcDk{ZYo_7=pdqKUGqb99i z*x*f3grH0;1rznW@Asq%oW(aRE(Hi?H|J&ahi|f9e`c%XpA#K;2M%HwcbqW3v$i>G zCEqa_pD<>UyZU3dS(g8J!|(yo#Cp_!=h|0w5#G~N6_l=X;w44j59vg|kL);1=%VJe z1PKH?$3>33!N|W1zq_T%H&s zo;?ek0RV zW-zMFRjAR?!{(T#OU0`OJKGwa!+owc?`rEi1U4i!mmC8LQ_#W^3 z>&vVH#$4ISCd+r0{9uckm%F#FR5}0q=4qj~b50k2Rw-A=tX(<45i6sxI}fv3y?YkJBQ zme{$Moo*9>D|`R+H#;7f@BX?jc^|4yJfZg>2>l#nAW9KGHjbvAY3uj?kAkikm?xFO zAF9>h{uPDzx|PEmL(Eft{`%)-%-LO3>kqBAd zSACPCp*jYSVb-y8a@U^*b@Pq3de@eCccyyTX&Q#ZjZlgsdoUQDi$g@aQrm@03Fr{1YMXa1NdrjxF;yyqx_c@XB9AOpp6eml&RvYpTXdl zU+O`QS)ux0a+}v%cSZF11#ZB)Uh_B%S=FqGGsxR^pL6MmF|k+PL;D|eR=#mZQ;m(RN5r_=NL zI}xge595dl^Dpru+Arw}BpasopjLe<;(s0^S*3^U=Dt$KP{Wx&{0`wkQLUX3-PoknEjFT+U|F zE|Qc0kDEVO!%S^Lh8#qo85(>^pH9 zR(D)sAk*`r%I`K~8#(;*4RPA!e!Ym{oM7~U>fm)y(s)$qk6hyUwh$DGJXQ$BHb&rk zdeovec&W59n5q#2jnmM|*)BV9grt8Ti2fD|9xBSs6tHS6m6=Op_uCEp`1;FBy+r!& zoW6_kZ@(J7k=pCuNrM>`;HzSUq91w+m~=D;-laREB(k&CgB$HlO=cPoyWf8gdGgT^ zM_6@gamMhxo=w3Mg9Gjnhgi%2Cxfdw#iM>f@fJ+^d&v)W#WAzzB2jAC&~M`v%>d*Y zY8&9f1x(cL4Nb#ZkMd9{{KlQg(O6zXPs#h1gcv>a``PUGfgJUT<}wQyuAtw+DK$)7 zU84a7@~_q-*;;f4zXkqp#W;apwlNL2UpK+EvY8V9J4aBe`57Rl(4O~$v~juLnuFxI zEWJXi#$W8+Kljg)0lrEnj7{*CBe&I0i>f^e$l3+Y37c%#5yrA(Ec_$j1IuOqn-FL- zf~KJ70%3ofCg5ztTz63nS_1rBuS0DyKW?M**cVroKXZ(&FSMzMg0W5gI@NZKj6^02M5B(I2D*M|&Od|}s`g=TY z{`XGc8XM+D@KtIOB})CZyIBa&UM~hyZ*#m;?7;T)@-)-gFLpuYTBpe+QqN!UX@R2#!QY}gK|LbL)KvfkS}|~sI2xv^$-T-Q)kh8 zWT#y@u3!hlJkP43ef2OzzrImEq^o$pwep|t)B8Zr%tU|Cm929n9?DW@8ZO~ookOAS z{vLnUZbW&f2xcq!f1H~zKGg@9f_x~x<&2+VtfvWos%k?AF zFh5%y&?QmZc3t7p{h-dQaBg&fkAh5Eh(8@3BTJm8ijrV6qlKb6JCD8pCVQxKoyR=} zqJJu5quGKZyW9CD`C8Au24Vfp$Q#N1wujeq+nP?_ME$dJheqQ$FH_wCe6rm-36b=^ zav$o^p7O-TcpY(jjj6#rWZ`b zfmtpZbQ)v4V*!z75~KL3Q{(E=Z0B-{`hmT7v9+})V*${nb2E7|NBl);kBRpj)PE+0&+zVZp@u>GhE9q>aV@M5Rv5sF4ADes<(FIlnZcCEC zuVeEtMS|cyibvrfMCOC>@(D2T+nKS2gWUY700_G#h_TJ(cPp(jDUC6J-npZi! z^;d}v_IH^|v%q1Gm`HOQa1~ow|22wsoQs?C`q9#+Z0j(GTVIqrc0t+a3q0m7vS|l> zd7GtBKW6vzx9>6Q_g^!^n{c(fM;KXwH?aEG6t5ypPQ-0ty1a#{p}>qvLhDo~=(z=i z66U&g)&KQ%FXj`}hxJ1JC6dE!sIqDOcy0IF!^f{5l5l1f?zF0we>Io(L=TllvyGSn zb$aU0Kfxx|(9_<89Od9jm*d#R4E$Q-l-;e`(?jCVhJmq6@j9Q`X3J{ET4Bhi#~`Yf z7-&MR!$Qmg>Sx%L%dlz+?xBn2*A;$HfE!dcXa6MWOuzzxsDJcl>=fahI8=JAeo5cm z1LCDBBzGkzO?6SU6U=oZ`&zjgYLT(9%rrWrc3)cHnh)0oGiV+s|2R5xAO;Y7r72wp zATe982f1v-nb92GzepoZy1yYxXXj|Q$TKb*!ZYq`zd5dP8wH${Aq=KIFkzv7(|)p% zi>y59IM4}L-`OE$Bq|ikN4cTf+OIBmyq9}jf9I}Od*dRUt4bF`e)USzaqd7}EevvD z;mz8CAG!DvSy%DAJ598B=t?t*ZFtq0?;q+71E2)=kz66Q zG9X0~)@J2=7_W1^!QxX+b|+D6lAHUDOgjDkvWF&{DUGR_XTtK?NQU$4CH=dFsP+ja zWt7*RuRC|N1_55vu%IC%`>w?YRDqF&W~|2^)h+hB6yC8eSfF{JG|`wg!Kiur>Yx9F7(N^}SeNu) z`Y0+YvVHt1;|zqj?2=^1`t&(cyK)trWEUt3Vn52sbEjJ_6*%$CTfs9h$r$1_$YBmd zsx*p7HA324@Fm0dUbEm~Qhuzrd{Qj^e_+0Gw(;Dg2qX_G3`8iYf?TZ6DFlvVQi3r> zM_$5uq{>Ze(IMg^0hX}>I)y?$j?1Pfo#9l)TQ(I83|`p(-RdHj_-35ZWjVRI^Hx8T zkyltFG~%pCIA|2_dSF>?!(*{2uqWkuSHYJfjM+)bK?h>2x|s|%%~=dOnF{EAX2PPwT2l;~r2x|oTgn-TaZK9g4DVbFz)HT5Hr z1THa97M@GT@I*|n-O;8>Kx@}|>ZuCNu}l=qks_isN(Y;|Y&BQv^{0zEpFx^BW3@4~ zf0+1?StO=!Y1q8B)t9y)DAd>5cKmXg+1BqrB$V0iXsNXr{*{SyLr!7oP!+~tM34sf z&jv@5YMo=DYuMN4K|BppLdQJvA=)H23%jS-vYe{HeSJigQEK5er)%w~oYrH}{wsT{ zQ?mzvc;=|1@q4!aHX^mhYz@)@TkHrC$BTa&&(oa&B$^oepdA$3E}OjS(Z2E- z&{C4To2=@JLr@ay5wt*#cxu-e8{;b8_d3+Z_1!C9s>L%Y#mVIP=#k7hVEVOAhAIkp zUrD~g^RjfR5XxWoNHE;is7XR;H5s}%m*pModLN;3ZY^+MuBQH{t6p~X(sa@?q6a1eV4E&VdhRJ-b zrSy~7%nk9H-)ILzyb|g>z?(C(6{j1oYuUA~8ME!~D@Tf2DJ#HvLK6CNRx4q<*uf>p zplQN*u89=dTiS&(PNAV;LcU7O%L;!X{odT^1JJNI^dB`}4uzuMEVskq2`be~l?G^C zlH}DZ-i4SbRdj_DlfE%H5>LOHQAv*BQ(V<+i*j9yzQ_T^ft)uZb()-BVqzgl{g7us zi+QnGKLu7z;=+bq1S&tW9u9vPz25_@i78v{?BL4X2T&ZsOZR^Tp+O6}6tls>!Dwrh zmmeR0ru~Wi_cJsuT4fiG0RYDQ0U-iqvHe&+yZB+MHHaLpwtHDyKf!4P687ZN5O}l=mFme5VzX_ll1?VvjdGXG5y zWzOVezo&0&oo#!FHuzUaWzGi;@i?iN@XydxGtB=@BQS}6oXdXW93A(v?)mWqm(PiB z_D39rj68B6EOnPv617@*yWUfE&Bo}E>O)@mkD|!0@WGpBX8!qNu7AjBWB(=vQuAY>yOFq==|AYUsWF+ zP7?rP;lba0*^{y=eW}BZi$lwukg{c@#-_PabI zVHLfoIRy7a_0QP+3C_DSeQH{=P<|Au!^~f-S zS_m$C=+}^12KPGj!24SSyVu3buIbyRxhk`2ilD81m0R|Ug;Sy*RA^_S&L>!5aYvcH z(b2xp-ChkwX~8j+}sp+j{xO}+o+qjTO+-~M37ld?!A)M&HCtOn)?SCIy%&s zp^f~{uk{WqpA~V2BCE8GbF$fxJI1?dbUvlc*XSRu>ohZM^M}C)3Ck~j>io)-*sKq! zd}&dv0Ni#NKMnF~9smfSHbrCC9#M1x1xZVBb@fT;$6}kF?=yqWsc_$nrbIi_o@(WA zYeDqAiKtd-*NdgSBdHzV5e{OU_eJLNo7PfDdupr~CLV9p7MWc!b)xP{tnJxj9G*>b zhGtQs5iGCy2FFG*jR(bGZ(^hB{rXTkNg&YCBN0@A|9nSuicRDRZEmL7S$C6{CsQQP z|9g&2Fc9Z#PCN!;>q~{U(VDL4JGpQ$Taa8q%)(~P^sT$rj{#lc6brMTFr}|bpXsiy zO$phoj%x7o!_nE=K=)Q|!^Z6x-^$xTTt;pea4L$7XeZI6rA1E-n>V%{X&W-E!twyv48$*z z2HoSX<4hEVJXRn80oW@i+^pw?7BcyJ`}hY)8&;S?QRI|L?IQcPPE;u#yk!4x;qT`_ z!FN&CCNDA2F3=FFMFSa6oKG;@2lzvA&R+vN7oZ^k-8ABy=RL=7pBB zO-9+3MC*8Z{(d7JSv?}(e=~h0ED7vFxKYOvVgM=@WF1#FX2n)n{;2A6$DF~T=nNqr z{F5R774d(gsK-@P753#Zckw^{{OkfeFQCN`=IL4FFT;dgilqvzRKyYuRhaQ7Q%cQ@ z9T#Ppw+(0RIPrrC7CL&Ezdx5U`1{(=U3_($R ziYe}~aaRHVG**m=ZlIaQBafbk&iG2ioz;Pi)3QyV%6n^g-oP{ZO@Uidqkn2iAnpP$ zOINevxv?tT(Z!}fZR$V7Y$Tq3o}-JrA@$vq;?Z=vk?cZR;Td6zDA^_khf@w}ZEBeK zfz*E==X?=?t3!f{M@`adx+qr)vsQ|5KC=|nKw`gpm2vPA zL5SzZ2`I*P(@)sh#h`hffhMcN^YWNqNKv^Z2l6#y+M$G9_Eay00bE6PA6Dz31ZLd7s7$>E`|3 zPjxgcZgYGYpgf*$U86JZHjs-}huJ`LOYas_$N$ZBQw~JAenGJ0)|-p7K^JPIq}t~i z^tO9f#nx65dStbE%e7<`cj*c$5&)EnkL^Zd5nIbNuI$wCMQbqhw(7R2oe?La-z`cG zr2SQm<*=_dy(jVyb#CMwT-!>}ft*;zD3}<4EppLsC_A*?=H+9=Snd8dXQ`X0!E7kn z9U87&8BRnA6JBp7dSI*qXX9KBNLVJ7<~nyLKm!@eK((fc&nXj#45e04Ex+?*cpc;K z*vmZh({N*TSZ2EP=zIt5_Z^_2iGxar+tD4Y<6>^jAQL9*UKF#Ta7Y<&rPAm@i}f9^kT zU*6H;O(2e&7wiB)iI-Q($WE;d>K+SQ`?J34!nVMgjEVa-0*vKzoAqk3Y*lM{Adz37 z_yU8uA&y?~JoKa$Z7AnKedg}NL?swxvd@?BjT>@UgI=>J^f(`CzEk(vQZtfLV@$z2 z_na~4XN$;!^;KkIPiJ9mkbG=SbMTgQn37<7^XPIk<6;?|@{PZhM^%~Hpi1hjFP6dt z(Hm;rw&k0GTdcNMQ_d(*;h!$irvuxXlXRm`auwS?NpdlI^i3`^HXmuizX^ryx`HAk z1%`){UHdwyjmwp-4<;3IhOVQ*Dkj*Ewy*Ez@03)^_CNMAgsGPU1_qmW{jM2Z4;AaP z;&oi2)f-y0?jgRY!v{7N=azk)mU!YTZ6z31nWotty|23cuRLq}k1uU5Zaj*bkxqG> zducW}Nu2lqmjJjM4JH#mkQ3Etip_&S`Zy|qn)4547o}^xg=?v}bvZntepboS@xG(pq#60^h-QG=uVa`zP%laJh>DC8g_<&OfX+>p+mq=Kz(%@3FviXGV|HXyeI})?b0;;B13s z)QE9eU!~FaLlaqo?J=4xX>6^sOg3Qq%hc-PTzxlr6Oeq;BwCd?&?ia9$#7!t z>An18{8#@>7?}MM=tK9e!no^=(Dwq=tN*hE^M)q(pJ)eujKa-dVdX6FuCTb%Kq=Y157)>c`A;N|wU#8G)<4-WOjNt&Pda z=w;aq&&c-ZZMvE_Rj(6I5E+xYH>2awJNpdpgnNlq|sZ(5xZ05rI&+A8oaxxj{_$w+>noxOf-T<9$1<58_{kIkP zO8hgDGwl!J^N+}c9jm2F_IEc^le$K9bu6q^u|}^x==sB2Y-?!OJx<~P>kWsEq9fdK zbmVa_#G$;nS@?PE9li zWNy)g1)&P`%uoZbapd-C^%CmGE^(nM+~$pO4{8jtn03}WqBBvkHZjEjrlXg-tW(zy zO6W7)cvJshduJ8Z*7~)3b}3Lwffg^?qNP}IhvM!OEmE{-a0yykpg@7*ZpERH;u^FN z+#z^y3c*Q$U^&_Q`^$HKZqCJ7HyK$YV~w?D-ZfvF&+l=aHd*Dh4Zi@0pHIK_J$4~Q ze+@v`f!Ip}JvE2NpyRe?>!x3i;s&1zi+=ERfCTn$l088AMhcD17oL)CS5S zZ3;%8Q68cS^a0SuwT}ATIgrlQm+?!3ZOYIN7wnldkOYK-$4~x=WVS_^0KC9g>YZUy z2lq=Xtbxh=D_`Vc;dRAuiTYpr3I+$Cg@%3Z&L2lpm-yU`A{ZB^F8F`k2Uqa&CSLlZ z;@HFL({1&CJLkC-mE`K|#96?>h#1CsueyGkt-)Tej}7-hc(ds<8yBVf$B6?5^rW@- zT`UiV%r!R;D4eo5He!Y286!cCC5Y$OkVAbu6NK>3dy(Mk{MjAjY2})w>8+#Uk2w8c z-DL7u+K`fa)bYc*2Y8qjtbdL!+9sDJAy6Ww;?LZ=ni1=3a=$0=(s)FeL@nZnT|0|J z2cMdOhF}I4k#S)h^g3T2RNKv~xYbcKE&ie7Jqb2869xP(fXI@I{LMJy-3zg`qc{ssOOZ^q9bc(b$do4zG}M)cDB8?*9x?K zYXZFeZGMAxktbWrlw7n&>%D4@p)TQhrZ&K_$O$=4fNz)c?A$c^#Rn;#U_>i+U6)fd zD(^G+stS0X=p+cHk>z9aIm^vpCZzCkZa3cD!Jiyy{g+Xsm4`GohSM83aBL! zmz;9j%tzjI%vrDX`*uM%xDx|0QFfat>PYNbO`USJAk~*(mW5r$S1sL+7VLqu{NZ2f zI2#6j^k;dF$M>D-Nit!I{dZ*O#L^jH2L%hiTuj%>agBYtp$K#pioPVAQKbM zJof&zNRrA{IB}pYP75${a6+zNvXe4X=CbDaaGvvu)(phb;jisiLRyU-yK8%A5i~3e z$lH+@U2S>w{{Kw?j-<5v~r$+}`_v?Sb_>PJkos=(ig)%@dM_9`vM>-}P&B}*e&yXVF zaY7A2&R`F83TTV)O(}AI6pzM;ej=c?s$)-2EU?1C;fv4F2#>W&lW*`MgGqcJ%UqHw z)l2B8bc@wbG7TM{k>KB&HlA9X`y~f6cZcrXHGUh*!6T%wX8!p7ixm|t{$r5VM2PTT z@}ao>;2kx<6pV5FB?g!_pRnb!mx^El>eZz(Djz#Rnc2@N+$jRTG3D|Y(W=@k&kJ5d zjc3`5tEIpVlFkEnI>t;_JX#nz+vhF43rU>0B=wOkw{lANrTwNoZ52ZjrMqd;xH7PjN(&;XF2Em- zIS@fY6gTZLReywgcot8aaeldQWyhin)W51F^VKC2iFoFJuQI}_cu^*xW8clkOvau1 zLob{y5r5A87SF1iuVpJb{Ievj`6T1{6GCpILz3cKU7Hxsa@D^`L5Ag1Wr?BoF1&m;@_EYg~YShy$TS3p-x4I(AvFg zzCqSS^;lALMllP|+P@#PAYs@mY`#2mE=dHMs&l|N`oB1Hbyb znnK8YFI}LxCB`jB-mN?5XGv~txz?!@$?18H-(3K~l8PmTb8c7ajY_`l@7E^2V`{m2 zy8Pae$;(8Pq3Z)J+tCsGFgM!8XZPJ`{vR5s(B+LBI_gGAQRrdftg(}oyA{Ju=nxmK;pv=CxB&jfc?6k6b8}RO`nBmJ=1pGw#5hQfo5quK7-Hc z-QT=1-*XIraP2n5o8MgiL3biXk9Ze7)taMf%U!bMnt-2%KqzRK0Vocqe@{zly3%2t zMoyY-se`;YnjBXG+;vq3NbSs5I168%pwG~97|KiHG_F{xsKvy=<2=Ms`!+w9IXDge zVWd~zC4P0KloDhSaeY4z`@jV^&xbd>Xrdk=@K!kgnX9CH0-kk5iRx-5&%18%Mr*Wr75i?trd64Z z(T3Q&6_I>8)!mg%cm`U;`fH@U>fzH5OHBaS(#pym_8sXb_s~b1@eEY--eMh~&i9PZ zsSJ5vo|}Nzksc}`@r*-GQ<$kjUa9m?b6N~6UMVE)zT*>#ZOX3Sr=4d?9RN~`(j52b zl35#jm@ESvSb0A|TlAIMlj7%)?gfKL&*%pN&-lJM!0U{DqYHqG2N>^#f$qaStrm#8 zdOIuxR6?EfqqXmAvznGgb8e)N5~e)~A^7i>Q&;ok1w7E_wlO=4NAx$Hc3rk#rj(GkVSyX?v6p>`LrX~ zMQ5<{@U7k}E5+;!a?UeRGsrZ1kHDK7O5v<4+u~`A_aGaJN`V3*@B&di{ijQf#j4xg zy-eZN#p}EC1;|vo0_n8n$Ogk`!13C8G^^*UQQGs1^5~K*odX>FZMt19m$omAnwM$w z7;mal2LbfvqCbVqmd(IQ0c_kSnsL23m%t)Rs`PxpoODZn^EbxKM{w>PFi0|rQRQfw zZli$e@R8t?7RUB@X&$#M{Y<&SZ?`$RZ@Pb@bT|OuS}!3l_UxkHClf&3=PKIGXX|=e z*k;YSDdS8MQd%M@9~Qc8Bt6=fD11YADjYe|Zor@+_#GfpuyJzH`DJ{<@R<%Owqn{kR@*Wwtq5%8*9O zV6YOzwMnGf)4^459wb0M;;R?3=&NO=HJlXQ`ck%>{NqL`qpF$k7hFV4XBvj`^9n4q zn*Zrk^FipNCE=3Dy?BK1q~hV9{8wTo`B%(YhdcvIe-;9Rq`aq{&oT$>_@MB|)jz(H z#@si(^jS+#Ev@?sn28NZy02bPepcKBHxnB4c33!0d49*H&}9uM?C11uH;eIwDNMRV z2WQjY#Ip?C3u(y8_6H|@xS{8&3}jS*Qon?YN%}f}8){)12^bQVqXX5;OZ_Nq!+Dq> zF#h~N#bxjMQ!2bYlu@l3>N);Z1l(D+9k|JK^e2ON35czrXE1&!t+p(E^6?ujk+Tg~ zY|OqY_Do#ZcgONt&kR3S+Jl)+LgXr~D>rL@^i8Thi(Yxfe8Y3HyY6Q+GPYUkmm=)D`mB8khYNSB2;p3U zk0Lp#=?H?aPwsaO5k}@z*UP46(RM7Ux?#KdK}{iYXmkW9-Zf35+q&VVAgYqX#fi`* zQrVdXfci9qF-2Ue3@g<4i@PMtE`2<98o_#hU>=T-MxDz9nQ3}=9f0qw3(Ug}SC5Wv zFX-sD@#E#Rx-Tx`dT}~}S(<#2$mQ)EPjk5jyK%ENBsvYVuQrnIf4;LK{^rd|Y;JBY z*Ms;uC0GPIH!0a8&GVX@E`vKh*;NIydya;&Q6=3a zyLKbV+^@k$41zoSgDMYI635nW`m@K-a|~QG^>q~})5<}DI5?;Z6z6hel)2THXKxSr z*`PnQTi?JE1)7Y#Q#|~plYDx`iy&WpA541lX%J%^v&WTVF$Z`t^vPZAGM)hJ2`Ss` zsQ7T+)jKlDK1}UF!AW0y5O8>U7hVYN3^o4>bXC^5!PI@RC`><=J6qsv0>@zxqxzrw zt8+p!ZGXn^3x?1uBueb-9#p!6@%~pG*7rJZ_*~85QWLB>;PU8^a4!MYd3KN__o*-j zllT@+66!92rw zt1@*q80(rd#hO(BX#g>yqVxc}N8YfVs{fXmdkE+Tq8Tl6y!;{IZnA(YhVfj!@%@sw zUG_3DbmacQCi_F@9gt4Z>1(FB(kV^D*!P8JxUlKkF20K_!B_MP2t4&UE$VE!&0UHA zx`VvpEQ8 z;3Dvxwo7wl)O|`xXpY>CVA+-E%41{9Z4J6JopocFjVsSe?@k5eE<|RMF*9!GEZa)g z%8;V3!g;|XzaE8@?;YK@eSAz^7UKIYHjOesS1V_n>hvsjnjkS7B{Q@qFu|_evKT>dX;zq_u zUgwacak)y<9z~a5F&!K7-BI@y@pYrhp_1p7QMKRA?4L&WXn~A)&%hK^6Y+GT3kkJB zMVLd)VXVtP5~O#tn9g2z=645j?HA9b*if_&oWOpodoy4SMg%S7JcIi+r zVD@qdbB*~J^8lOq=k}o&4*R##jCBU_p$`=(Kps(`*>lT^Pef?3AyEikwm+SQ&8ma4 zxx%DvJ=QVasC)|r9|j4T?rKZ^$#Y#mFFrPsV2vr@LF}t0d13WA@THJ$>*J!1cvqEvM_ob*@RjXj+Nl6gCLq}Xr z2m9`lRHjoq+(HoRcJCuz*n_d!fk07}8u4jOXqqlYppGGK=Q!d#1|hMo4=NraFLDxX z{S!EjESzB5%!0`bCcnuWJCm1}FDX4f4kdbR6+GL&x-=qu*q@TicNN81iy?AaNQ>Fs z7auZV2MLUB$yMdJvZ6#*ETr z-;QDopxG^mD^zHC8kZa1XdF>K$tYE9*~nPcm&jyAcljkAH&}+ z9pv2``8$=PzRn;lZEQ@TZSPg`EGP|L@tjW#SWJDBYf*VMJ8RoEog!W~27}~-|S|769 zOZ6Uhs<;$L+ti*0m{d#p*|T_(*vqIz@Ky3br)+J2P&oIgdTg>6Z56wYIFd!8=eDk< zX2h4K#OTwO$gzsPJFqjQ;6fPRovZ$JS8J}>b%WXTyrs0~%-$_jz&02|*w$^>+!g`( z|MB0FlFC^Z{+?bs=@*{6xM-2DT{m6li!rv_MOt2yDM(AT_K=`@p4X!{cuSF_gQK5` zJyPQC%1?A3+i?1qQ=KbHvd-!LUQo}=YHDGdctG$sTjk$}AZPH=`Vyb`VrQYuY}&K) zpWACWMYvpho$A(_X&-0cZzY^Ain1@{OtQf_T)s^#^=urp&V5mRjq_3}-vT@`{~S;a z5B6M;knAN>bD!JoWYt*(#aEQA>>V?BE=mpkwt%vX6fSNQ{}NOCTu=({s9|@tCoam4 zle{+ep-zkxR7Rv9o#WtNrx#B%I)#5VPI&2C^?g<*!eDB0?y+Oy5ws0Sh4O01OPpJ~ zQXX0lnUV(Iwl&m*(2j}+*J$kg#Ek|s!@Yv1}I8V!rgNg*7z z3UXpr1CaIdwXu~ zf-9EB5X3kAzBv4N(?9lc?(~fECtOKSxqgO%N-(6i_ku=_!FhG6F0F#ozZt!oF*XKx z99x=G2~H2imEHbGfW3;bFQwJmF1(A8?ybCuEZ40bdW0G;Lfl7`bYm?@XK5X24LEfd zL|hQRbe(Q0ZDrOPvr8n-Q;7l;HO?=2cirKOwVQsvm)jn(|GUd;cF`PeuIC<{i+P`b z6j;4h9L>|q|BBJxPwJGOi#gpo*c+?rltL9(NRf+UyG^x$Jf5RH;~0^%OKV8{d?KRXLm4M-(pxV}MY?SET zb7MEhlXIabrk|v&Kj&TgvaO65-dKRE^YVlJm1078FuJ>fU>34(pG!5JH3)r((-{3C#-sF|P2am4M76P>0SZ86~(+koMTZs?o|Fz5;DmLo|KwIy5E_VL3 zRW>b)$orO4`Q+4)`sxJaK#idWrgX60*kUZs*!Nq!3(}QV>XGjE6EkN&^9E#hCnn1H z(J;=&yb{}~L;ZmE+s)GFJH+1yLMix;Msy+7$xPxdG3X8IqsjF)h;l#nwmR$F+c~Qm zn{ax+T}R$q<9;Li{ZLy0`lm{wfncZnUg46W%_VC1tx^RYq3o?L?*ifT{j0(Bq`O_* z-2u%^)=jOi!wKieMTF`z|Mm;9wh|MYXP&)(xwgfY{Yr>USF!)hz^uZ7Y#zt!59eRa z2+J3EcCpxYdbv^9kZM^i6Z@=;ZG;UkK>3%7PyorO8$MUTp3mBdc2!H;qyKq_^UY5Q zx26b#7}Q+$nzciGrPIRVUEkV7O+%K<_1(Nh8ww(D`K< z`JL>}=qSVfiqdr1k_A=kXt#942pZkGB=<-+Ow6Uh-tnoEpVE z_zD~~KF|iv*GM@edGSXXekeX_D^_C&StJ_tFjS*aT0O+*+7r(%!};DI5E zxYNhaT0=1#nW$jHtwjYW9aTa6biHGHBf80<^t_V#V^AUY^O{d()|w9AcJ)*oZaYbF z{3;y2=~}33-;&&&t3D|6)R?K0RwEFCqfT&N8Y>G9Je5`(e>Se#Pa5(v0gr#m9RMVN zX(%3P)qyK9noMblSjvYCDRCGbLn>>Q0gap*pR7}+vO!6dfywn$k`^}96__Xu_wk3y zGp%j>TknX4rOlQIy;zalsTWsAIB+eSD?GK8tDaz^IX=80Js*)s+D*Jsp>T@gKE`>d zV`ubd2@f|@%4Z76pF}?~+?VAe*7PyoO*D4b0=LX!HEDK(vzeVKKw3Q&`BD;FShtEq zR0A!oVU+tb&pJ7M%H2arPg6;TgPHpF!h@JO@p`9qDj)iQC$i;oA-;i6uXpq%f9#@c z7HRz-#UH(Fv|RlL8=jw}SldJd*p^_<)f1-_?611Y|XOU^vVmmq>*J0G8n;PYK zHv;wTQ!q(I#PF6d!$LrNo3RNHXtC=5B|n(VsVKVCFZs>O27L9>+tr4^Ueb)8#9OTj ziwHJ7i8qZWQ(eD%@(OKNI?kzRB#G25@6ny$woi$bKaWN3(J=p|6=$Kr9h?Wsg;pn3 z4X+)S9@BF~D~Fp5#XuOtzAT@_{m9niDh&lGy?y)$N9UQgu1w4$-u&O8 zf2BTE88{j{V$BN5YPp1=SD3SMR&4Es7M$(uI`ceTeR9QpkH?NA&eeBNE4%(1lhYu` zpou~;h-?M=_=wOWKYS{v>CMZ(r5{+9216=P$-6~hgYQ#|^}cWUj~BlCvRW)nXQ4E$ z`3UcyI6P@v!tD*`khl%3MBnz}%S4s3FsN1bSkpkI%NR+BFh&4?0035{PF zQvO5|gMCr*$9jHaYH`F&;D=i5>3d2)>%Hol z^F9da??7g+-q+>4)SNVC>g3U*y7dWy?|;yN&BCsG)gCqsZP?Q5b_Nw?&)Cu!7SgDy zIs#PhpCctF-9)53G^eNbTAV}P?|)#C_OxO6CmGbmN9ZoQo4Y01Zc3jJuh~DY7&&R( zsKhIFTj)02@f~AbrD~A&>r6O1{ zR4nbM@G661T3Lzt&T$&#v12?@XL;~aZ|HDsscOOU`ltU%K3G`$L)mKLLX<4tEtga< z?y}db{^)#ZVYbFEOX6EtgSeCKT<8SR#tj;!nUf(fX8;NN^74B+uRz=6GzV zBRJQWDAvHf{QmSj^&+Cm7D2>ijAy`_d*Fj0+Ym#okkb{~5;F+DtWL@J(v;|#oHgLv z)9aFG%_{PClb6!lxLvzQq;@UngX;u$nY4kc5>B1+abFXbp3fhe)Y9m3CSOX8FyZtR zhYt`afNQ0k9k8Wj;a98+9K#>8P$`r$#^$6M-2goPCwQ+Wy;OFOBYPCsZt(VaGUq1~ zIYCj_zvukeAWF5A4WOjg`GzW;;pK2#7S)nv^p|5t651C+%p~tq8*Wo{SrRAH#Cveq zN)_XUaTVn8Z6^Xn7|&)oryNKGKG@Q{{vDl3zi+`W@`X*6qwx43vJ%wmCg_ zq*MV-8g4`@5Y~o+Cc|1`81J=dyolO$6a&!Aoh$dmUM zAD`XV$cV`F+`Sw6B<5%Tt+0zvP=i`Q7+dVG_5h!a3L$?`PiX&Qa9C(5jd>bBDB)dKm5aVd7y^+aaEYbZ} zA`TUUHhV1bSjT9-O9}9e)9f3m5qw>)H|;SXryDM?oI0+$nZla*?a2}82yIF*x(#$d z^Od{0QClKGy#;n9e@VyMy>Ks*M;_r-Ft*17%4GGYMzgz%omKV%7@=&h(YY9_*;KO&lO9gmLgF!zW z-UWkr1ZXI~Ey-scF0k@l-{Z$W59oP3#_LKG5X~!Ia(!peJ)Zr?J^n_}`OM`&G>IId z1Yi`Ek)$?#R;0e2#FwJ>8c6q-UaBU~x6hWSqfu!V2HnP&m1R0<>~phxv3pmZuBS9k zm(FKDo#&sXIREqSS!TbVZ&_s)85B=DCOuFZq|Ukq8*OazeYoG%#ol3If>;>&boBY8 z`gVFfx+oQTCn?R*!cpN~bY(F&fl8Ktql6GT0jmkQ7aW@p3|eVFqWtVBlr>!PX=X2TD+Zx{8O$_CqT1lcki6qrK*7R@Kg$@5Kt z&`KOU*?0&JY(Vw&hs_@Gf|7dizd>U}>~Gu?a;U3X(@3 zr+y=H^>eu-EZ5)n;;AN8ry*VprszAX>HpP;c}Wu8B$!s9mGZ}wHA3BLXK&kA^bOJn zsbw^r9*Z+v2q3ZVf3CiIGM4FJYE?6iK;TfSE4|8n@oxx2sPRXY`PHnHqZq3w7>79a zgk!o=wUEE=pCumf@Lg}qn@$gz`4uif_4u?`;2)b~8`>wDhX(9nD-@+e; z3tN|E$2aZw9`kkm%t1e)v7pB?>kpk>oKK~9xc{`8el');bKE)<(FkTww9zSB;k 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 WZ(pFsw!HqnOBDr8`D$6qu>S)VE`i1X literal 0 HcmV?d00001 From bf66387bb1099c9becc069c91b341ba2992028b7 Mon Sep 17 00:00:00 2001 From: Wisdom Anthony Ebong Date: Thu, 29 Aug 2019 14:04:36 +0100 Subject: [PATCH 02/30] Delete Group.png --- pix/Group.png | Bin 48087 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 pix/Group.png diff --git a/pix/Group.png b/pix/Group.png deleted file mode 100644 index c1edbded619587d5d825cc8a81b5a987b9e4e660..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48087 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
j 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');bKE)<(FkTww9zSB;k zl$=eMg1OQ}Z{@^(fHuTP!)nY*RNf%HW4xy}s5hb13S7DD|ns0Z3< z<_TAj?)c$qpw{JBqcg&Q(5nkQJqfm-c14eG5A1Y8^8aa-q3mk1)&0K$8lrQzBsDLA zc&^OpVo7ZT6nTj$ai+y_BQ5pTo{ACNryc1r;AV|q!imq~IqFE>|Jc3oQpx#P!pGR5Tl^ww=?R~&rwH#lM zA9AA-BV?zfsv5%2U0k7O&7svYB(yHtpFE<-b~JJkx>r+k%Hc7;;p9W9kt;2O4fYxT zYcQP3R*E>ylsNE;ip%qDMiTBBQ^;QujrL0QtyewPm8E{V|HR>hq;^ohhVhvC5#?=6 z$ZKhcc(lb1!}#U&qwm)rdYKN9nb}_EIRx;!HpAZ4s@wo`-lyF6)t7_sH<6pKU@MI2 z*{YooE@9%qHT$eyI&aY)eP3?MlfhNDQ#yy(F~hnh)N1{RYU60zNvBwuT-r!h345MS zkbpDI2@l$3SMaX>`*03TR>%0#@7{;gT@klDfq4TH3oY-!;@GF!C3Nf5|J)^Jm}PVn zRSmbQNs>S0=An2K0kl*>ci67`f#** zXO1zb;OgV(hnp4MN16tcfc=wi$#nx`I_q$auyJok$Ya^l1sR^hrDd1B^Y*d4y?2&X zmKF_B`^9|)Yk8g@j_cz|7-IjErQfIn5?*DPNOJ6vZp>qQB(U{;+nZII&&T_qrOM1k zgivBopNq*QEVyzt7hasYR!YMq0WWQKnSR0is-}pZd6*)2RQI%PYVIr#s9+dBLPALC zE0MA1AjT9|xG71CUa0O=qO1FX&h_WN^RV%7uJ-Qsj*RGqGg_w_ku+ZJ^o%Xx7M}>$ z47?^?8M)ckKXBw%=(N(65L#M6plnb?3*&Zs$rS$zS!mji)%9Zw*FS`mXc5ZaY<+eN z$TN?O+0RwZ8c&Nl_^IH?QOZW>-K({T%qn ztnXe`;cv1Q>n7}c<7LX0(Q~Cbk1H?>j zuC>37KVGvu`(?>sA1Q&Y(3=?bhGG7cBG?7Zovx82fPDHR8=|h4X}fcUVJze=^Of2$ zzQn>XC~eU^E4Z!P`Sj84m=SWv9Dj~$!T+ykZ+?m%0GE6EDzCY&UGsgypm&$$eR%%b z=_CWym(y`ZTjprsoew^}Nv-3Kh1|D)=WncbX5zPC{x)%AId2zCR|aQ)E;cIOj9%`Y zD3o|Ksw}C?Q8vgUan%m8EO$yIc=&MBZ$(*g$n`8s*#CtWG+$n+a-g(5Fd0B#Bc|B* z?j@-c!Gk+@vc1bJ?t^x-Hw8BPLFhAN)%r$OR^Mt;;-Al~z+}VdVqH@2-sqC<81@(j zB&dlT51E^hzW= zKqQ1OCY4#I0UfJx%&B^tBsvA=_SNwySox&zAC*_x{8+{e zPQJyYvr?Y+~4KQXIP zjVk0S^m>X@f~R6LzqnAQ(zQ;evmxEL)?qJ1y7Rs^`7I^Br_xoTBtliHG?;O%{t-SB z;95-wTP{sk%r*>oEyAwUN`g)(@2t?J%x@T^^ZIfnh4x{Rm#M)J`OZ@tPaA!Y_7qe` zO0I3~&2UaZqP?zOF+bDq$u<6p$&!`r{(_F%{QPR?;J$oX-hB=JoA)IXQoE5X5E}?5 zJMZL@_RoNdbiw1NEi4q4cHbOV>5*uAPMUM6$?Jl|!gsaz=C!-M)qTO@f-3xZGcH_J zBcN%!?aSrlrqp1 zE=et|TrQcbxjSe7{F&IHg!~ct-faoqmN1bD{F%EmVDjzij?7?Nd(z&vZfr!a+f7wd zaV66)OO_s+C?0~VYG^r&Kw%7DUdn51% zQ81F2j!E%*Vxiga)r9X~IQgHZ6URS1JU5TjB<_~Ld7OJ`d0{A%A5X5pz&$kaHpY3W z|Iu28?fO&+U2T;@@#!1lx3C0~fX~ueAVeDl5Kkv2lk;M=B>5l&oBofNKULc(+$Jpz zJ&xPwnu6O@v6Qs%;?`iRba{RJm;z*)JN(CUmB@L*>el(CeImJWl_ z%Sqg|w^Y@~mF8Is+~Z9G%C5$=5CGKjDy-Jl+=9~IvSU6zgK5^sp~GR~oWdQjKca$xK>dx>;N8PbEbV7u?*GJ1+aN^bn4EFXut-2`Mm;S6?}lWh zrT-)lmU^}GDeYi;KwizR@H|wn$?xmjc9dM(rP0qzk4TeSo9-}sYC&`up5=(DVK}fS zbxv`R_Jgj3L@L6Ac$hN4e)6TcG?7Zl{Kc+UZofH3H}giTBy3Jf8b%P@LBs<l>ZqLxixF=GD_=aE z6-x5!VxCP){rDQa5=} z7f$jJgy>pak`bSmr@Ya@y9ro7>S}jhY91cYM+D~z=`FajX0;b~LI8k7Wnp=li44t! zIIAK_4M{??2I?>I#e|stt(QeSY)zGS$+J&}H7!9O1Il`lB0s^eVY^>)-Q1AqX|zYr zL2+McqeN@L`+aeeSJ!-5>IH9@6#_@)|}foC4MAY<1x<*nA#6& zqZY4Q3Vj6xZ0QYBdKG=PGHIBTxaefeSa88E+b%U*AfnrO3E2~>crv(4tx^K5 z5^Rq5t1%3cev$tgJO2G)C;#GqeVgI^S1bJI+*>m>weK9?RtqSC#`R4UeIBM#q$CLT zbEr&RdcQ{Ihj|)o>+g%*|CIR-^zlOVF$oi5H2?qC$A9-{|F19g|1a?WZUjQ9&(O>z WZ(pFsw!HqnOBDr8`D$6qu>S)VE`i1X From ad86a409ff06b39cb9028a0977e0821e52813033 Mon Sep 17 00:00:00 2001 From: Wisdom Anthony Ebong Date: Thu, 29 Aug 2019 14:05:00 +0100 Subject: [PATCH 03/30] Add files via upload --- pix/banner.png | Bin 0 -> 27381 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pix/banner.png diff --git a/pix/banner.png b/pix/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..0c2c154445a2071e15560ad4c688b62703b36ccf GIT binary patch literal 27381 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 Date: Thu, 29 Aug 2019 14:06:31 +0100 Subject: [PATCH 04/30] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 87fed4f..320f277 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ -# Paystack Enrolment Plugin # +

Payment Forms for Paystack

+ + +# Paystack Enrolment Plugin Enrolment in Moodle using the Paystack gateway for paid courses From 2d4a0d31a6a498b0fdffb0838dfd4190067f0bd4 Mon Sep 17 00:00:00 2001 From: Wisdom Anthony Ebong Date: Thu, 29 Aug 2019 14:12:36 +0100 Subject: [PATCH 05/30] Update README.md --- README.md | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 320f277..ef2a3a3 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,32 @@ Enrolment in Moodle using the Paystack gateway for paid courses -This plugin helps admins and webmasters use Paystack as the payment gateway. This plugin has all the settings for development as well as for production usage. Its easy to install, set up and effective. +This plugin helps admins and webmasters use Paystack as the payment gateway. This plugin has all the settings for development as well as for production usage. Its easy to install, set up and effective. -TODO Provide more detailed description here. +## Installation + +Login to your moodle site as an “admin user” and follow the steps. + +1) Upload the zip package from Site administration > Plugins > Install plugins. Choose Plugin type 'Enrolment method (enrol)'. Upload the ZIP package, check the acknowledgement and install. + +2) Go to Enrolments > Manage enrol plugins > Enable 'Paystack' from list + +3) Click 'Settings' which will lead to the settings page of the plugin + +4) Provide merchant credentials for Paystack. Note that, you will get all the details from your merchant account. Now select the checkbox as per requirement. +Choose the paystack connection mode, for test mode it uses the test api keys and for live mode uses the live api keys. Save the settings. + +5) Select any course from course listing page. + +6) Go to Course administration > Users > Enrolment methods > Add method 'Paystack' from the dropdown. Set 'Custom instance name', 'Enrol cost' etc and add the method. + +This completes all the steps from the administrator end. Now registered users can login to the Moodle site and view the course after a successful payment. + + + +## Contribution + +Here you can browse the source, look at open issues and keep track of development. ## License ## From abb424d58f00ce8ad0bc48e317c32a8ea98b41d9 Mon Sep 17 00:00:00 2001 From: wisdomanthoni Date: Sun, 1 Sep 2019 18:33:36 +0100 Subject: [PATCH 06/30] set verify to handle course enrolment too as well as webhook --- classes/util.php | 88 +++++++++++++++++ enrol.html | 6 +- verify.php | 251 ++++++++++++++++++++++++++++++++++++++++------- version.php | 2 +- webhook.php | 77 +++++---------- 5 files changed, 333 insertions(+), 91 deletions(-) create mode 100644 classes/util.php diff --git a/classes/util.php b/classes/util.php new file mode 100644 index 0000000..fa2e1e3 --- /dev/null +++ b/classes/util.php @@ -0,0 +1,88 @@ +. + +/** + * PayPal enrolment plugin utility class. + * + * @package enrol_paystack + * @copyright 2019 Paystack + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace enrol_paystack; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Paystack enrolment plugin utility class. + * + * @package enrol_paystack + * @copyright 2019 Paystack + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +final class util { + + /** + * Send payment error message to the admin. + * + * @param string $subject + * @param stdClass $data + */ + function message_paystack_error_to_admin($subject, $data) + { + $admin = get_admin(); + $site = get_site(); + $message = "$site->fullname: Transaction failed.\n\n$subject\n\n"; + foreach ($data as $key => $value) { + $message .= s($key) . " => " . s($value) . "\n"; + } + $eventdata = new \core\message\message(); + $eventdata->modulename = 'moodle'; + $eventdata->component = 'enrol_paystack'; + $eventdata->name = 'paystack_enrolment'; + $eventdata->userfrom = $admin; + $eventdata->userto = $admin; + $eventdata->subject = "PAYSTACK PAYMENT ERROR: " . $subject; + $eventdata->fullmessage = $message; + $eventdata->fullmessageformat = FORMAT_PLAIN; + $eventdata->fullmessagehtml = ''; + $eventdata->smallmessage = ''; + message_send($eventdata); + } + + /** + * Silent exception handler. + * + * @return callable exception handler + */ + public static function get_exception_handler() { + return function($ex) { + $info = get_exception_info($ex); + + $logerrmsg = "enrol_paystack Webhook exception handler: ".$info->message; + if (debugging('', DEBUG_NORMAL)) { + $logerrmsg .= ' Debug: '.$info->debuginfo."\n".format_backtrace($info->backtrace, true); + } + error_log($logerrmsg); + + if (http_response_code() == 200) { + http_response_code(500); + } + + exit(0); + }; + } +} diff --git a/enrol.html b/enrol.html index 31ee7e2..cf1a162 100644 --- a/enrol.html +++ b/enrol.html @@ -27,7 +27,11 @@

]; ?>
wwwroot/enrol/paystack/verify.php"?>"> - + $value) { + echo ''; + } + ?> id}-{$course->id}-{$instance->id}" ?>" /> diff --git a/verify.php b/verify.php index b6b07f6..881cb7f 100644 --- a/verify.php +++ b/verify.php @@ -11,65 +11,240 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . /** - * Verify Payment Callback from Paystack + * Listens for Instant Payment Notification from Paystack + * + * This script waits for Payment notification from Paystack, + * then double checks that data by sending it back to Paystack. + * If Paystack verifies this then it sets up the enrolment for that + * user. * * @package enrol_paystack * @copyright 2019 Paystack * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ -require("../../config.php"); -require_once("$CFG->dirroot/enrol/paystack/lib.php"); +// Disable moodle specific debug messages and any errors in output, +// comment out when debugging or better look into error log! +define('NO_DEBUG_DISPLAY', true); + +require('../../config.php'); +require_once('lib.php'); +if ($CFG->version < 2018101900) { + require_once($CFG->libdir . '/eventslib.php'); +} +require_once($CFG->libdir . '/enrollib.php'); +require_once($CFG->libdir . '/filelib.php'); + +require_login(); -$custom = explode('-', optional_param('custom', array(), PARAM_RAW)); -$userid = (int)$custom[0]; -$courseid = (int)$custom[1]; -$instanceid = (int)$custom[2]; +// Paystack does not like when we return error messages here, +// the custom handler just logs exceptions and stops. +set_exception_handler('enrol_paystack_charge_exception_handler'); -if (!$course = $DB->get_record("course", array("id" => $courseid))) { - redirect($CFG->wwwroot); +// Make sure we are enabled in the first place. +if (!enrol_is_enabled('paystack')) { + http_response_code(503); + throw new moodle_exception('errdisabled', 'enrol_paystack'); } -$context = context_course::instance($course->id, MUST_EXIST); +// Keep out casual intruders. +if (empty($_POST) or !empty($_GET)) { + http_response_code(400); + throw new moodle_exception('invalidrequest', 'core_error'); +} +if (empty(required_param('paystack-trxref', PARAM_RAW))) { + print_error(get_string('paystack_sorry', 'enrol_paystack')); +} + +$data = new stdClass(); +foreach ($_POST as $key => $value) { + if ($key !== clean_param($key, PARAM_ALPHANUMEXT)) { + throw new moodle_exception('invalidrequest', 'core_error', '', null, $key); + } + if (is_array($value)) { + throw new moodle_exception('invalidrequest', 'core_error', '', null, 'Unexpected array param: ' . $key); + } + $data->$key = fix_utf8($value); +} + +if (empty($data->custom)) { + throw new moodle_exception('invalidrequest', 'core_error', '', null, 'Missing request param: custom'); +} +$custom = explode('-', $data->custom); +unset($data->custom); +if (empty($custom) || count($custom) < 3) { + throw new moodle_exception('invalidrequest', 'core_error', '', null, 'Invalid value of the request param: custom'); +} + +$data->userid = (int) $custom[0]; +$data->courseid = (int) $custom[1]; +$data->instanceid = (int) $custom[2]; +$data->payment_gross = $data->amount; +$data->payment_currency = $data->currency_code; +$data->timeupdated = time(); + +// Get the user and course records. +$user = $DB->get_record("user", array("id" => $data->userid), "*", MUST_EXIST); +$course = $DB->get_record("course", array("id" => $data->courseid), "*", MUST_EXIST); +$context = context_course::instance($course->id, MUST_EXIST); $PAGE->set_context($context); -require_login(); +// Use the queried course's full name for the item_name field. +$data->item_name = $course->fullname; -if (!empty($SESSION->wantsurl)) { - $destination = $SESSION->wantsurl; - unset($SESSION->wantsurl); -} else { - $destination = "$CFG->wwwroot/course/view.php?id=$course->id"; +$plugin_instance = $DB->get_record("enrol", array("id" => $data->instanceid, "enrol" => "paystack", "status" => 0), "*", MUST_EXIST); +$plugin = enrol_get_plugin('paystack'); +$paystack = new \enrol_paystack\paystack('moodle-enrol', $plugin->get_publickey(), $plugin->get_secretkey()); + +// Set Course and Paystack Url +$courseUrl = "$CFG->wwwroot/course/view.php?id=$course->id"; + +// Verify Transaction +$res = $paystack->verify_transaction($data->reference); + +if (!$res['status']) { + notice($res['message'], $courseUrl); } -if (empty(required_param('paystack-trxref', PARAM_RAW))) { - notice(get_string('paystack_sorry', 'enrol_paystack'), $destination); +// Send the file, this line will be reached if no error was thrown above. +$data->tax = $res['data']['amount'] / 100; +$data->memo = $res['data']['gateway_response']; +$data->payment_status = $res['data']['status']; +$data->reason_code = $code; +// If currency is incorrectly set then someone maybe trying to cheat the system +if ($data->currency_code != $plugin_instance->currency) { + $message = "Currency does not match course settings, received: " . $data->currency_code; + \enrol_paystack\util::message_paystack_error_to_admin( + $message, + $data + ); + notice($message, $courseUrl); } -$ref = required_param('paystack-trxref', PARAM_RAW); -$fullname = format_string($course->fullname, true, array('context' => $context)); +// Check that amount paid is the correct amount +if ((float) $plugin_instance->cost <= 0) { + $cost = (float) $plugin->get_config('cost'); +} else { + $cost = (float) $plugin_instance->cost; +} -if (is_enrolled($context, NULL, '', true)) { - // use real paystack check - $plugin = enrol_get_plugin('paystack'); - $plugin_instance = $DB->get_record("enrol", array("id" => $instanceid, "enrol" => "paystack", "status" => 0), "*", MUST_EXIST); - $paystack = new \enrol_paystack\Paystack('moodle-enrol', $plugin->get_publickey(), $plugin->secretkey()); - $res = $paystack->verify_transaction($ref); - if ($res['data']['status'] != "success") { - $plugin->unenrol_user($plugin_instance, $userid); - message_paystack_error_to_admin( - "Status not successful. User unenrolled from course", - $res - ); - redirect($CFG->wwwroot); +// Use the same rounding of floats as on the enrol form. +$cost = format_float($cost, 2, false); + +// If cost is greater than payment_gross, then someone maybe trying to cheat the system +if ($data->payment_gross < $cost) { + $message = "Amount paid is not enough ($data->payment_gross < $cost))"; + \enrol_paystack\util::message_paystack_error_to_admin( + $message, + $data + ); + notice($message, $courseUrl); +} + +if ($data->payment_status == 'success') { + // ALL CLEAR ! + $paystack->log_transaction_success($data->reference); + $DB->insert_record("enrol_paystack", $data); + if ($plugin_instance->enrolperiod) { + $timestart = time(); + $timeend = $timestart + $plugin_instance->enrolperiod; + } else { + $timestart = 0; + $timeend = 0; + } + // Enrol user. + $plugin->enrol_user($plugin_instance, $user->id, $plugin_instance->roleid, $timestart, $timeend); + // Pass $view=true to filter hidden caps if the user cannot see them. + if ($users = get_users_by_capability( + $context, + 'moodle/course:update', + 'u.*', + 'u.id ASC', + '', + '', + '', + '', + false, + true + )) { + $users = sort_by_roleassignment_authority($users, $context); + $teacher = array_shift($users); + } else { + $teacher = false; + } + $mailstudents = $plugin->get_config('mailstudents'); + $mailteachers = $plugin->get_config('mailteachers'); + $mailadmins = $plugin->get_config('mailadmins'); + $shortname = format_string($course->shortname, true, array('context' => $context)); + if (!empty($mailstudents)) { + $a = new stdClass(); + $a->coursename = format_string($course->fullname, true, array('context' => $coursecontext)); + $a->profileurl = "$CFG->wwwroot/user/view.php?id=$user->id"; + $eventdata = new \core\message\message(); + $eventdata->modulename = 'moodle'; + $eventdata->component = 'enrol_paystack'; + $eventdata->name = 'paystack_enrolment'; + $eventdata->userfrom = empty($teacher) ? core_user::get_support_user() : $teacher; + $eventdata->userto = $user; + $eventdata->subject = get_string("enrolmentnew", 'enrol', $shortname); + $eventdata->fullmessage = get_string('welcometocoursetext', '', $a); + $eventdata->fullmessageformat = FORMAT_PLAIN; + $eventdata->fullmessagehtml = ''; + $eventdata->smallmessage = ''; + message_send($eventdata); + } + if (!empty($mailteachers) && !empty($teacher)) { + $a->course = format_string($course->fullname, true, array('context' => $coursecontext)); + $a->user = fullname($user); + $eventdata = new \core\message\message(); + $eventdata->modulename = 'moodle'; + $eventdata->component = 'enrol_paystack'; + $eventdata->name = 'paystack_enrolment'; + $eventdata->userfrom = $user; + $eventdata->userto = $teacher; + $eventdata->subject = get_string("enrolmentnew", 'enrol', $shortname); + $eventdata->fullmessage = get_string('enrolmentnewuser', 'enrol', $a); + $eventdata->fullmessageformat = FORMAT_PLAIN; + $eventdata->fullmessagehtml = ''; + $eventdata->smallmessage = ''; + message_send($eventdata); + } + if (!empty($mailadmins)) { + $a->course = format_string($course->fullname, true, array('context' => $coursecontext)); + $a->user = fullname($user); + $admins = get_admins(); + foreach ($admins as $admin) { + $eventdata = new \core\message\message(); + $eventdata->modulename = 'moodle'; + $eventdata->component = 'enrol_paystack'; + $eventdata->name = 'paystack_enrolment'; + $eventdata->userfrom = $user; + $eventdata->userto = $admin; + $eventdata->subject = get_string("enrolmentnew", 'enrol', $shortname); + $eventdata->fullmessage = get_string('enrolmentnewuser', 'enrol', $a); + $eventdata->fullmessageformat = FORMAT_PLAIN; + $eventdata->fullmessagehtml = ''; + $eventdata->smallmessage = ''; + message_send($eventdata); + } } - redirect($destination, get_string('paymentthanks', '', $fullname)); -} else { - // Somehow they aren't enrolled yet! :-( - $PAGE->set_url($destination); +} else { + $message = "Payment status not successful" . $data->memo; + \enrol_paystack\util::message_paystack_error_to_admin( + $message, + $data + ); + notice($message, $courseUrl); +} + +$fullname = format_string($course->fullname, true, array('context' => $context)); +if (is_enrolled($context, null, '', true)) { // TODO: use real paystack check. + redirect($courseUrl, get_string('paymentthanks', '', $fullname)); +} else { // Somehow they aren't enrolled yet! + $PAGE->set_url($courseUrl); echo $OUTPUT->header(); $a = new stdClass(); $a->teacher = get_string('defaultcourseteacher'); $a->fullname = $fullname; - redirect($destination, get_string('paymentsorry', '', $a), 5); + notice(get_string('paymentsorry', '', $a), $courseUrl); } diff --git a/version.php b/version.php index ba007f4..85ed079 100644 --- a/version.php +++ b/version.php @@ -25,7 +25,7 @@ defined('MOODLE_INTERNAL') || die(); $plugin->component = 'enrol_paystack'; -$plugin->release = '1.2.1'; +$plugin->release = '1.3.1'; $plugin->version = 2019082822; $plugin->requires = 2018120300; $plugin->maturity = MATURITY_STABLE; diff --git a/webhook.php b/webhook.php index 3f045dc..3ca9692 100644 --- a/webhook.php +++ b/webhook.php @@ -26,18 +26,15 @@ // comment out when debugging or better look into error log! define('NO_DEBUG_DISPLAY', true); -require('../../config.php'); -require_once("$CFG->dirroot/enrol/paystack/lib.php"); - -if ($CFG->version < 2018101900) { - require_once($CFG->libdir . '/eventslib.php'); -} -require_once($CFG->libdir . '/enrollib.php'); +// @codingStandardsIgnoreLine This script does not require login. +require("../../config.php"); +require_once("lib.php"); +require_once($CFG->libdir.'/enrollib.php'); require_once($CFG->libdir . '/filelib.php'); // Paystack does not like when we return error messages here, // the custom handler just logs exceptions and stops. -// set_exception_handler('enrol_paystack_charge_exception_handler'); +set_exception_handler(\enrol_paystack\util::get_exception_handler()); // Make sure we are enabled in the first place. if (!enrol_is_enabled('paystack')) { @@ -52,11 +49,12 @@ } $input = @file_get_contents("php://input"); -$res = (array) json_decode($input, true); +$values = (array) json_decode($input, true); +$metadata = $values['data']['metadata']; $data = new stdClass(); -foreach ($res['data']['metadata'] as $key => $value) { +foreach ($metadata as $key => $value) { if ($key !== clean_param($key, PARAM_ALPHANUMEXT)) { throw new moodle_exception('invalidrequest', 'core_error', '', null, $key); } @@ -80,6 +78,15 @@ $data->payment_currency = $data->currency_code; $data->timeupdated = time(); +$plugin = enrol_get_plugin('paystack'); +$paystack = new \enrol_paystack\paystack('moodle-enrol', $plugin->get_publickey(), $plugin->get_secretkey()); + +// validate event do all at once to avoid timing attack +if($paystack->validate_webhook($input)){ + http_response_code(400); + throw new moodle_exception('invalidrequest', 'core_error'); +} + // Get the user and course records. $user = $DB->get_record("user", array("id" => $data->userid), "*", MUST_EXIST); $course = $DB->get_record("course", array("id" => $data->courseid), "*", MUST_EXIST); @@ -91,18 +98,15 @@ $data->item_name = $course->fullname; $plugin_instance = $DB->get_record("enrol", array("id" => $data->instanceid, "enrol" => "paystack", "status" => 0), "*", MUST_EXIST); -$plugin = enrol_get_plugin('paystack'); -$paystack = new \enrol_paystack\paystack('moodle-enrol', $plugin->get_publickey(), $plugin->get_secretkey()); -// validate event do all at once to avoid timing attack -if($paystack->validate_webhook($input)){ - http_response_code(400); - throw new moodle_exception('invalidrequest', 'core_error'); +if (is_enrolled($context, $data->userid, '', true)) { + \enrol_paystack\util::message_paystack_error_to_admin( + "Webhook Stopped: User already enrolled", + $data + ); + die; } -// Set Course Url -$courseUrl = "$CFG->wwwroot/course/view.php?id=$course->id"; - // Verify Transaction $res = $paystack->verify_transaction($data->reference); @@ -114,7 +118,7 @@ // If currency is incorrectly set then someone maybe trying to cheat the system if ($data->currency_code != $plugin_instance->currency) { - message_paystack_error_to_admin( + \enrol_paystack\util::message_paystack_error_to_admin( "Currency does not match course settings, received: " . $data->currency_code, $data ); @@ -133,7 +137,7 @@ // If cost is greater than payment_gross, then someone maybe trying to cheat the system if ($data->payment_gross < $cost) { - message_paystack_error_to_admin( + \enrol_paystack\util::message_paystack_error_to_admin( "Amount paid is not enough ($data->payment_gross < $cost))", $data ); @@ -230,39 +234,10 @@ } } } else { - message_paystack_error_to_admin( + \enrol_paystack\util::message_paystack_error_to_admin( "Payment status not successful" . $data->memo, $data ); die; } } - -// --- HELPER FUNCTIONS --------------------------------------------------------------------------------------! -/** - * Send payment error message to the admin. - * - * @param string $subject - * @param stdClass $data - */ -function message_paystack_error_to_admin($subject, $data) -{ - $admin = get_admin(); - $site = get_site(); - $message = "$site->fullname: Transaction failed.\n\n$subject\n\n"; - foreach ($data as $key => $value) { - $message .= s($key) . " => " . s($value) . "\n"; - } - $eventdata = new \core\message\message(); - $eventdata->modulename = 'moodle'; - $eventdata->component = 'enrol_paystack'; - $eventdata->name = 'paystack_enrolment'; - $eventdata->userfrom = $admin; - $eventdata->userto = $admin; - $eventdata->subject = "PAYSTACK PAYMENT ERROR: " . $subject; - $eventdata->fullmessage = $message; - $eventdata->fullmessageformat = FORMAT_PLAIN; - $eventdata->fullmessagehtml = ''; - $eventdata->smallmessage = ''; - message_send($eventdata); -} From 93bb7e2eb8ec536a1cb1a11274c5c45f47145485 Mon Sep 17 00:00:00 2001 From: wisdomanthoni Date: Sun, 1 Sep 2019 18:55:19 +0100 Subject: [PATCH 07/30] update plugin version --- version.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.php b/version.php index 85ed079..47960d9 100644 --- a/version.php +++ b/version.php @@ -26,6 +26,6 @@ $plugin->component = 'enrol_paystack'; $plugin->release = '1.3.1'; -$plugin->version = 2019082822; +$plugin->version = 2019090119; $plugin->requires = 2018120300; $plugin->maturity = MATURITY_STABLE; From dccc4b1d4fa8e65bfc109d9cdf6efc95d8879be4 Mon Sep 17 00:00:00 2001 From: wisdomanthoni Date: Sun, 1 Sep 2019 19:28:04 +0100 Subject: [PATCH 08/30] update verify script --- verify.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/verify.php b/verify.php index 881cb7f..d60bcfd 100644 --- a/verify.php +++ b/verify.php @@ -102,8 +102,8 @@ // Verify Transaction $res = $paystack->verify_transaction($data->reference); -if (!$res['status']) { - notice($res['message'], $courseUrl); +if (!$res['status']) { + notice($res['message'], $courseUrl); } // Send the file, this line will be reached if no error was thrown above. @@ -141,6 +141,12 @@ notice($message, $courseUrl); } +$fullname = format_string($course->fullname, true, array('context' => $context)); + +if (is_enrolled($context, null, '', true)) { + redirect($courseUrl, get_string('paymentthanks', '', $fullname)); +} + if ($data->payment_status == 'success') { // ALL CLEAR ! $paystack->log_transaction_success($data->reference); @@ -237,8 +243,7 @@ notice($message, $courseUrl); } -$fullname = format_string($course->fullname, true, array('context' => $context)); -if (is_enrolled($context, null, '', true)) { // TODO: use real paystack check. +if (is_enrolled($context, null, '', true)) { redirect($courseUrl, get_string('paymentthanks', '', $fullname)); } else { // Somehow they aren't enrolled yet! $PAGE->set_url($courseUrl); @@ -247,4 +252,4 @@ $a->teacher = get_string('defaultcourseteacher'); $a->fullname = $fullname; notice(get_string('paymentsorry', '', $a), $courseUrl); -} +} \ No newline at end of file From e92392debd9c00b690f47dfef3b932787d4eb118 Mon Sep 17 00:00:00 2001 From: wisdomanthoni Date: Sun, 1 Sep 2019 23:32:09 +0100 Subject: [PATCH 09/30] a --- classes/Paystack.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/classes/Paystack.php b/classes/Paystack.php index c10f820..0f8c477 100644 --- a/classes/Paystack.php +++ b/classes/Paystack.php @@ -28,8 +28,6 @@ class paystack { public $secret_key; public function __construct($plugin, $pk, $sk){ - //configure plugin name - //configure public key $this->base_url = "https://api.paystack.co/"; $this->plugin_name = $plugin; $this->public_key = $pk; From 6534d668f8647e7870bcd3adb3292c8b43c9d876 Mon Sep 17 00:00:00 2001 From: wisdomanthoni Date: Sun, 1 Sep 2019 23:32:52 +0100 Subject: [PATCH 10/30] update version --- version.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.php b/version.php index 47960d9..668c9bf 100644 --- a/version.php +++ b/version.php @@ -25,7 +25,7 @@ defined('MOODLE_INTERNAL') || die(); $plugin->component = 'enrol_paystack'; -$plugin->release = '1.3.1'; +$plugin->release = '1.3.2'; $plugin->version = 2019090119; $plugin->requires = 2018120300; $plugin->maturity = MATURITY_STABLE; From 8a4573caaaebdb92cc25f260fb3e369ce5446629 Mon Sep 17 00:00:00 2001 From: wisdomanthoni Date: Sun, 1 Sep 2019 23:38:26 +0100 Subject: [PATCH 11/30] update version --- version.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.php b/version.php index 668c9bf..342f0d5 100644 --- a/version.php +++ b/version.php @@ -26,6 +26,6 @@ $plugin->component = 'enrol_paystack'; $plugin->release = '1.3.2'; -$plugin->version = 2019090119; +$plugin->version = 2019090123; $plugin->requires = 2018120300; $plugin->maturity = MATURITY_STABLE; From 853f6d661846e584fbdba3cd9507c5cf470b3894 Mon Sep 17 00:00:00 2001 From: wisdomanthoni Date: Sun, 1 Sep 2019 23:46:48 +0100 Subject: [PATCH 12/30] r --- classes/Paystack.php | 155 ------------------------------------------- 1 file changed, 155 deletions(-) delete mode 100644 classes/Paystack.php diff --git a/classes/Paystack.php b/classes/Paystack.php deleted file mode 100644 index 0f8c477..0000000 --- a/classes/Paystack.php +++ /dev/null @@ -1,155 +0,0 @@ -. -/** - * Paystack API Class - * - * @package enrol_paystack - * @copyright 2019 Paystack - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -namespace enrol_paystack; - -defined('MOODLE_INTERNAL') || die(); - -class paystack { - public $plugin_name; - public $public_key; - public $secret_key; - - public function __construct($plugin, $pk, $sk){ - $this->base_url = "https://api.paystack.co/"; - $this->plugin_name = $plugin; - $this->public_key = $pk; - $this->secret_key = $sk; - } - - /** - * Verify Payment Transaction - * - * @param string $reference - * @param array $data - * @return void - */ - public function initialize_transaction($data) - { - $paystackUrl = $this->base_url . "transaction/initialize"; - - $curl = curl_init(); - curl_setopt_array($curl, [ - CURLOPT_URL => $paystackUrl, - CURLOPT_CUSTOMREQUEST => "POST", - CURLOPT_POSTFIELDS => $data, - CURLOPT_RETURNTRANSFER => true, - CURLOPT_HTTPHEADER => [ - "authorization: Bearer " . $this->secret_key, - "content-type: application/json", - "cache-control: no-cache" - ], - ]); - - $request = curl_exec($curl); - $res = json_decode($request, true); - - if (curl_errno($curl)) { - throw new moodle_exception( - 'errpaystackconnect', - 'enrol_paystack', - '', - array('url' => $paystackUrl, 'response' => $res), - json_encode($data) - ); - } - - curl_close($curl); - - return $res; - } - - /** - * Verify Payment Transaction - * - * @param string $reference - * @return void - */ - public function verify_transaction($reference) - { - $paystackUrl = $this->base_url . "transaction/verify/" . $reference; - - $curl = curl_init(); - curl_setopt_array($curl, [ - CURLOPT_URL => $paystackUrl, - CURLOPT_RETURNTRANSFER => true, - CURLOPT_CUSTOMREQUEST => "GET", - CURLOPT_HTTPHEADER => [ - "authorization: Bearer " . $this->secret_key, - "content-type: application/json", - "cache-control: no-cache" - ], - ]); - - $request = curl_exec($curl); - $res = json_decode($request, true); - // $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); - - if (curl_errno($curl)) { - throw new moodle_exception( - 'errpaystackconnect', - 'enrol_paystack', - '', - array('url' => $paystackUrl, 'response' => $res), - '' - ); - } - - curl_close($curl); - - return $res; - } - - /** - * Track Payment Transactions from this Plugin - * - * @param string $trx_ref - * @return void - */ - public function log_transaction_success($reference) - { - //send reference to logger along with plugin name and public key - $url = "https://plugin-tracker.paystackintegrations.com/log/charge_success"; - $params = [ - 'plugin_name' => $this->plugin_name, - 'transaction_reference' => $reference, - 'public_key' => $this->public_key - ]; - $params_string = http_build_query($params); - $ch = curl_init(); - curl_setopt($ch,CURLOPT_URL, $url); - curl_setopt($ch,CURLOPT_POST, true); - curl_setopt($ch,CURLOPT_POSTFIELDS, $params_string); - curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); - //execute post - curl_exec($ch); - } - - /** - * Validate Webhook Signature - * - * @param $input - * @return boolean - */ - public function validate_webhook($input) - { - return $_SERVER['HTTP_X_PAYSTACK_SIGNATURE'] !== hash_hmac('sha512', $input, $this->secret_key); - } -} From c12041ebcb4cc57a46b08e4a6e75fdf69268e431 Mon Sep 17 00:00:00 2001 From: wisdomanthoni Date: Sun, 1 Sep 2019 23:47:49 +0100 Subject: [PATCH 13/30] paystack.php --- classes/paystack.php | 155 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 classes/paystack.php diff --git a/classes/paystack.php b/classes/paystack.php new file mode 100644 index 0000000..0f8c477 --- /dev/null +++ b/classes/paystack.php @@ -0,0 +1,155 @@ +. +/** + * Paystack API Class + * + * @package enrol_paystack + * @copyright 2019 Paystack + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace enrol_paystack; + +defined('MOODLE_INTERNAL') || die(); + +class paystack { + public $plugin_name; + public $public_key; + public $secret_key; + + public function __construct($plugin, $pk, $sk){ + $this->base_url = "https://api.paystack.co/"; + $this->plugin_name = $plugin; + $this->public_key = $pk; + $this->secret_key = $sk; + } + + /** + * Verify Payment Transaction + * + * @param string $reference + * @param array $data + * @return void + */ + public function initialize_transaction($data) + { + $paystackUrl = $this->base_url . "transaction/initialize"; + + $curl = curl_init(); + curl_setopt_array($curl, [ + CURLOPT_URL => $paystackUrl, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => $data, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_HTTPHEADER => [ + "authorization: Bearer " . $this->secret_key, + "content-type: application/json", + "cache-control: no-cache" + ], + ]); + + $request = curl_exec($curl); + $res = json_decode($request, true); + + if (curl_errno($curl)) { + throw new moodle_exception( + 'errpaystackconnect', + 'enrol_paystack', + '', + array('url' => $paystackUrl, 'response' => $res), + json_encode($data) + ); + } + + curl_close($curl); + + return $res; + } + + /** + * Verify Payment Transaction + * + * @param string $reference + * @return void + */ + public function verify_transaction($reference) + { + $paystackUrl = $this->base_url . "transaction/verify/" . $reference; + + $curl = curl_init(); + curl_setopt_array($curl, [ + CURLOPT_URL => $paystackUrl, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_CUSTOMREQUEST => "GET", + CURLOPT_HTTPHEADER => [ + "authorization: Bearer " . $this->secret_key, + "content-type: application/json", + "cache-control: no-cache" + ], + ]); + + $request = curl_exec($curl); + $res = json_decode($request, true); + // $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); + + if (curl_errno($curl)) { + throw new moodle_exception( + 'errpaystackconnect', + 'enrol_paystack', + '', + array('url' => $paystackUrl, 'response' => $res), + '' + ); + } + + curl_close($curl); + + return $res; + } + + /** + * Track Payment Transactions from this Plugin + * + * @param string $trx_ref + * @return void + */ + public function log_transaction_success($reference) + { + //send reference to logger along with plugin name and public key + $url = "https://plugin-tracker.paystackintegrations.com/log/charge_success"; + $params = [ + 'plugin_name' => $this->plugin_name, + 'transaction_reference' => $reference, + 'public_key' => $this->public_key + ]; + $params_string = http_build_query($params); + $ch = curl_init(); + curl_setopt($ch,CURLOPT_URL, $url); + curl_setopt($ch,CURLOPT_POST, true); + curl_setopt($ch,CURLOPT_POSTFIELDS, $params_string); + curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); + //execute post + curl_exec($ch); + } + + /** + * Validate Webhook Signature + * + * @param $input + * @return boolean + */ + public function validate_webhook($input) + { + return $_SERVER['HTTP_X_PAYSTACK_SIGNATURE'] !== hash_hmac('sha512', $input, $this->secret_key); + } +} From b2f3ef43dcfd453a9daddd15393e43473a6d62fd Mon Sep 17 00:00:00 2001 From: Luqman Bello Date: Mon, 2 Sep 2019 21:25:34 +0100 Subject: [PATCH 14/30] minor fix --- classes/paystack.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/paystack.php b/classes/paystack.php index 0f8c477..4c29059 100644 --- a/classes/paystack.php +++ b/classes/paystack.php @@ -132,7 +132,7 @@ public function log_transaction_success($reference) 'transaction_reference' => $reference, 'public_key' => $this->public_key ]; - $params_string = http_build_query($params); + $params_string = http_build_query($params). "\n"; $ch = curl_init(); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, true); From f4764e346a5bb9b5be896c4d8ab7e3c26e6d255b Mon Sep 17 00:00:00 2001 From: Luqman Bello Date: Mon, 2 Sep 2019 21:28:51 +0100 Subject: [PATCH 15/30] Update paystack.php --- classes/paystack.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/paystack.php b/classes/paystack.php index 4c29059..0e728bd 100644 --- a/classes/paystack.php +++ b/classes/paystack.php @@ -132,7 +132,7 @@ public function log_transaction_success($reference) 'transaction_reference' => $reference, 'public_key' => $this->public_key ]; - $params_string = http_build_query($params). "\n"; + $params_string = http_build_query($params, '', '&'); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, true); From 933c3ed6ce0087495802b6b4e2acaabe8e0a0ece Mon Sep 17 00:00:00 2001 From: wisdomanthoni Date: Mon, 11 May 2020 16:56:09 +0100 Subject: [PATCH 16/30] update plugin settings to add profile fields to be used as custom fields selector --- settings.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/settings.php b/settings.php index 1964b67..172d9f8 100644 --- a/settings.php +++ b/settings.php @@ -123,6 +123,19 @@ $options )); + // Profile fields to use in the selector + $customfieldrecords = $DB->get_records('user_info_field'); + if ($customfieldrecords) { + $customfields = []; + foreach ($customfieldrecords as $customfieldrecord) { + $customfields[$customfieldrecord->shortname] = $customfieldrecord->name; + } + asort($customfields); + $settings->add(new admin_setting_configmultiselect('enrol_paystack/customfields', + get_string('customfields', 'enrol_paystack'), get_string('customfields_desc', 'enrol_paystack'), + [], $customfields)); + } + // --- enrol instance defaults ---------------------------------------------------------------------------- $settings->add(new admin_setting_heading( 'enrol_paystack_defaults', From 0fe24f8d63762493a83006d61bae9bd1ea61e441 Mon Sep 17 00:00:00 2001 From: wisdomanthoni Date: Mon, 11 May 2020 16:57:00 +0100 Subject: [PATCH 17/30] update plugin lang --- lang/en/enrol_paystack.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lang/en/enrol_paystack.php b/lang/en/enrol_paystack.php index a41b474..2d494ec 100644 --- a/lang/en/enrol_paystack.php +++ b/lang/en/enrol_paystack.php @@ -35,6 +35,8 @@ $string['costerror'] = 'The enrolment cost is not numeric'; $string['costorkey'] = 'Please choose one of the following methods of enrolment.'; $string['currency'] = 'Currency'; +$string['customfields'] = 'Profile fields to be used as custom fields'; +$string['customfields_desc'] = 'Which user profile fields can be used during enrolment'; $string['customwelcomemessage'] = 'Custom welcome message'; $string['customwelcomemessage_help'] = 'If you enter some text here, it will be shown instead of the standard text "This course requires a payment for entry." on the Enrolment options page that students see when they attempt to access a course they are not enrolled in. If you leave this blank, the standard text will be used.'; $string['defaultrole'] = 'Default role assignment'; From 42f58a2d6a053fab2d8f84ff4f7e7f0c6112d23b Mon Sep 17 00:00:00 2001 From: wisdomanthoni Date: Mon, 11 May 2020 16:59:03 +0100 Subject: [PATCH 18/30] update lib.php with getting activated custom fields --- lib.php | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/lib.php b/lib.php index 3b6acac..3a321fb 100644 --- a/lib.php +++ b/lib.php @@ -399,6 +399,7 @@ public function enrol_page_hook(stdClass $instance) $userlastname = $USER->lastname; $useremail = $USER->email; $instancename = $this->get_instance_name($instance); + $customfields = $this->get_custom_fields(); $publickey = $this->get_publickey(); $reference = $this->getHashedToken(); @@ -409,6 +410,35 @@ public function enrol_page_hook(stdClass $instance) return $OUTPUT->box(ob_get_clean()); } + /** + * Get all custom fields available for plugin. + * + * @return $customfields. + */ + public function get_custom_fields() + { + global $USER, $DB; + + $customfieldrecords = $DB->get_records('user_info_field'); + $configured_customfields = explode(',', get_config('enrol_paystack', 'customfields')); + + $customfields = []; + + foreach ($customfieldrecords as $cus) { + foreach($configured_customfields as $con) { + if($con == $cus->shortname){ + $customfields[] = [ + 'display_name' => $cus->name , + 'variable_name' => $cus->shortname, + 'value' => $USER->profile[$con] + ]; + } + } + } + + return $customfields; + } + /** * Lists all currencies available for plugin. * From 107aa12e616838b395a013587c3381d57bc7283c Mon Sep 17 00:00:00 2001 From: wisdomanthoni Date: Mon, 11 May 2020 17:00:46 +0100 Subject: [PATCH 19/30] update enrol.html view --- enrol.html | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/enrol.html b/enrol.html index cf1a162..ce16922 100644 --- a/enrol.html +++ b/enrol.html @@ -24,6 +24,7 @@

"last_name" => s($userlastname), "email" => s($useremail), "reference" => $reference, + "custom_fields" => $customfields ]; ?> wwwroot/enrol/paystack/verify.php"?>"> @@ -35,10 +36,16 @@

id}-{$course->id}-{$instance->id}" ?>" /> - From fc0415018fa1921a5811d4c84e3cdc8798f493f1 Mon Sep 17 00:00:00 2001 From: wisdomanthoni Date: Mon, 11 May 2020 17:01:47 +0100 Subject: [PATCH 20/30] update edit.php --- edit.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/edit.php b/edit.php index 4dc167e..2b6af1e 100755 --- a/edit.php +++ b/edit.php @@ -86,8 +86,16 @@ } } else { - $fields = array('status' => $data->status, 'name' => $data->name, 'cost' => unformat_float($data->cost), - 'currency' => $data->currency, 'roleid' => $data->roleid, 'enrolperiod' => $data->enrolperiod, 'customint3' => $data->customint3, 'enrolstartdate' => $data->enrolstartdate, 'enrolenddate' => $data->enrolenddate); + $fields = array('status' => $data->status, + 'name' => $data->name, + 'cost' => unformat_float($data->cost), + 'currency' => $data->currency, + 'roleid' => $data->roleid, + 'enrolperiod' => $data->enrolperiod, + 'customint3' => $data->customint3, + 'enrolstartdate' => $data->enrolstartdate, + 'enrolenddate' => $data->enrolenddate + ); $plugin->add_instance($course, $fields); } From fde1569675ae845d1b55c58b702b64f389ed15c2 Mon Sep 17 00:00:00 2001 From: wisdomanthoni Date: Mon, 11 May 2020 17:02:50 +0100 Subject: [PATCH 21/30] update plugin version --- version.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/version.php b/version.php index 342f0d5..fa51a28 100644 --- a/version.php +++ b/version.php @@ -25,7 +25,7 @@ defined('MOODLE_INTERNAL') || die(); $plugin->component = 'enrol_paystack'; -$plugin->release = '1.3.2'; -$plugin->version = 2019090123; +$plugin->release = '1.4.0'; +$plugin->version = 2020051117; $plugin->requires = 2018120300; $plugin->maturity = MATURITY_STABLE; From 635786f2a59e56081796c12b88f07a962fe66c3f Mon Sep 17 00:00:00 2001 From: Wisdom Anthony Ebong Date: Mon, 19 Oct 2020 17:04:59 +0100 Subject: [PATCH 22/30] Update paystack.php --- classes/paystack.php | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/classes/paystack.php b/classes/paystack.php index 0e728bd..a638592 100644 --- a/classes/paystack.php +++ b/classes/paystack.php @@ -127,19 +127,26 @@ public function log_transaction_success($reference) { //send reference to logger along with plugin name and public key $url = "https://plugin-tracker.paystackintegrations.com/log/charge_success"; - $params = [ + $data = [ 'plugin_name' => $this->plugin_name, 'transaction_reference' => $reference, 'public_key' => $this->public_key ]; - $params_string = http_build_query($params, '', '&'); - $ch = curl_init(); - curl_setopt($ch,CURLOPT_URL, $url); - curl_setopt($ch,CURLOPT_POST, true); - curl_setopt($ch,CURLOPT_POSTFIELDS, $params_string); - curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); + + $curl = curl_init(); + curl_setopt_array($curl, [ + CURLOPT_URL => $url, + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => $data + CURLOPT_RETURNTRANSFER => true, + CURLOPT_HTTPHEADER => [ + "content-type: application/json", + "cache-control: no-cache" + ], + ]); + //execute post - curl_exec($ch); + curl_exec($curl); } /** From fbf1d69fcf35cd05c665aacf87b801e6f1b957d7 Mon Sep 17 00:00:00 2001 From: wisdomanthoni Date: Thu, 14 Jan 2021 21:52:25 +0100 Subject: [PATCH 23/30] hotfix --- classes/paystack.php | 60 ++++++++++++++++++++++++++++---------------- classes/util.php | 2 +- version.php | 4 +-- 3 files changed, 41 insertions(+), 25 deletions(-) diff --git a/classes/paystack.php b/classes/paystack.php index 0e728bd..61bbd3d 100644 --- a/classes/paystack.php +++ b/classes/paystack.php @@ -22,19 +22,21 @@ defined('MOODLE_INTERNAL') || die(); -class paystack { +class paystack +{ public $plugin_name; public $public_key; public $secret_key; - public function __construct($plugin, $pk, $sk){ + public function __construct($plugin, $pk, $sk) + { $this->base_url = "https://api.paystack.co/"; $this->plugin_name = $plugin; $this->public_key = $pk; $this->secret_key = $sk; } - /** + /** * Verify Payment Transaction * * @param string $reference @@ -59,10 +61,13 @@ public function initialize_transaction($data) ]); $request = curl_exec($curl); + $res = json_decode($request, true); + curl_close($curl); + if (curl_errno($curl)) { - throw new moodle_exception( + throw new \moodle_exception( 'errpaystackconnect', 'enrol_paystack', '', @@ -71,12 +76,10 @@ public function initialize_transaction($data) ); } - curl_close($curl); - return $res; } - - /** + + /** * Verify Payment Transaction * * @param string $reference @@ -87,6 +90,7 @@ public function verify_transaction($reference) $paystackUrl = $this->base_url . "transaction/verify/" . $reference; $curl = curl_init(); + curl_setopt_array($curl, [ CURLOPT_URL => $paystackUrl, CURLOPT_RETURNTRANSFER => true, @@ -99,11 +103,13 @@ public function verify_transaction($reference) ]); $request = curl_exec($curl); - $res = json_decode($request, true); // $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); + $res = json_decode($request, true); + + curl_close($curl); if (curl_errno($curl)) { - throw new moodle_exception( + throw new \moodle_exception( 'errpaystackconnect', 'enrol_paystack', '', @@ -112,8 +118,6 @@ public function verify_transaction($reference) ); } - curl_close($curl); - return $res; } @@ -127,19 +131,31 @@ public function log_transaction_success($reference) { //send reference to logger along with plugin name and public key $url = "https://plugin-tracker.paystackintegrations.com/log/charge_success"; + $params = [ + 'public_key' => $this->public_key, 'plugin_name' => $this->plugin_name, 'transaction_reference' => $reference, - 'public_key' => $this->public_key ]; - $params_string = http_build_query($params, '', '&'); - $ch = curl_init(); - curl_setopt($ch,CURLOPT_URL, $url); - curl_setopt($ch,CURLOPT_POST, true); - curl_setopt($ch,CURLOPT_POSTFIELDS, $params_string); - curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); - //execute post - curl_exec($ch); + + $curl = curl_init(); + + curl_setopt_array($curl, [ + CURLOPT_URL => $url, + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => http_build_query($params), + CURLOPT_RETURNTRANSFER => true, + CURLOPT_HTTPHEADER => [ + "content-type: application/json", + "cache-control: no-cache" + ], + ]); + + // execute post + curl_exec($curl); + + // close conection + curl_close($curl); } /** @@ -150,6 +166,6 @@ public function log_transaction_success($reference) */ public function validate_webhook($input) { - return $_SERVER['HTTP_X_PAYSTACK_SIGNATURE'] !== hash_hmac('sha512', $input, $this->secret_key); + return $_SERVER['HTTP_X_PAYSTACK_SIGNATURE'] !== hash_hmac('sha512', $input, $this->secret_key); } } diff --git a/classes/util.php b/classes/util.php index fa2e1e3..1b362c1 100644 --- a/classes/util.php +++ b/classes/util.php @@ -41,7 +41,7 @@ final class util { * @param string $subject * @param stdClass $data */ - function message_paystack_error_to_admin($subject, $data) + public static function message_paystack_error_to_admin($subject, $data) { $admin = get_admin(); $site = get_site(); diff --git a/version.php b/version.php index fa51a28..9454095 100644 --- a/version.php +++ b/version.php @@ -25,7 +25,7 @@ defined('MOODLE_INTERNAL') || die(); $plugin->component = 'enrol_paystack'; -$plugin->release = '1.4.0'; -$plugin->version = 2020051117; +$plugin->release = '1.4.1'; +$plugin->version = 2021011421; $plugin->requires = 2018120300; $plugin->maturity = MATURITY_STABLE; From b74eb7937089c736f9462eb9183430e54eed3a08 Mon Sep 17 00:00:00 2001 From: Vladdermouse Date: Mon, 10 May 2021 11:56:49 +0200 Subject: [PATCH 24/30] Add South African Rand currency code (ZAR) to lib Currency missing for South African users. Already supported by API --- lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib.php b/lib.php index 3a321fb..4212293 100644 --- a/lib.php +++ b/lib.php @@ -446,7 +446,7 @@ public function get_custom_fields() */ public function get_currencies() { - $codes = array('NGN', 'USD', 'GHS'); + $codes = array('NGN', 'USD', 'GHS', 'ZAR'); $currencies = array(); foreach ($codes as $c) { $currencies[$c] = new lang_string($c, 'core_currencies'); From 20be0c232e9750b1815c91cdcbfafb074fe9fb26 Mon Sep 17 00:00:00 2001 From: Segun Date: Thu, 5 Jan 2023 13:23:23 +0100 Subject: [PATCH 25/30] Added more currencies --- lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib.php b/lib.php index 4212293..7f4d9b5 100644 --- a/lib.php +++ b/lib.php @@ -446,7 +446,7 @@ public function get_custom_fields() */ public function get_currencies() { - $codes = array('NGN', 'USD', 'GHS', 'ZAR'); + $codes = array('NGN', 'USD', 'GHS', 'ZAR', 'XOF' , 'KES'); $currencies = array(); foreach ($codes as $c) { $currencies[$c] = new lang_string($c, 'core_currencies'); From 5d2ef26826bbaa2f6ebfbdfd94a616ea7d095c3f Mon Sep 17 00:00:00 2001 From: Oghene-Tega Date: Sat, 3 Jun 2023 14:51:54 +0100 Subject: [PATCH 26/30] enrol_paystack_charge_exception_handler defined --- classes/util.php | 18 ++++++++++++++++++ verify.php | 5 ++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/classes/util.php b/classes/util.php index 1b362c1..9170276 100644 --- a/classes/util.php +++ b/classes/util.php @@ -85,4 +85,22 @@ public static function get_exception_handler() { exit(0); }; } + + public static function enrol_paystack_charge_exception_handler() { + return function($ex) { + $info = get_exception_info($ex); + + $logerrmsg = "enrol_paystack charge exception handler: ".$info->message; + if (debugging('', DEBUG_NORMAL)) { + $logerrmsg .= ' Debug: '.$info->debuginfo."\n".format_backtrace($info->backtrace, true); + } + error_log($logerrmsg); + + if (http_response_code() == 200) { + http_response_code(500); + } + + exit(0); + }; + } } diff --git a/verify.php b/verify.php index d60bcfd..f92a8cc 100644 --- a/verify.php +++ b/verify.php @@ -38,7 +38,10 @@ // Paystack does not like when we return error messages here, // the custom handler just logs exceptions and stops. -set_exception_handler('enrol_paystack_charge_exception_handler'); +//set_exception_handler('enrol_paystack_charge_exception_handler'); + +set_exception_handler(array('enrol_paystack\util', 'enrol_paystack_charge_exception_handler')); + // Make sure we are enabled in the first place. if (!enrol_is_enabled('paystack')) { From 0a4e2977e3f9ff5a7304db484d705bc62d8344ab Mon Sep 17 00:00:00 2001 From: Oghene-Tega Date: Mon, 5 Jun 2023 15:23:49 +0100 Subject: [PATCH 27/30] get_exception_handler called in verify.php --- classes/util.php | 19 +------------------ verify.php | 2 +- 2 files changed, 2 insertions(+), 19 deletions(-) diff --git a/classes/util.php b/classes/util.php index 9170276..bfd2113 100644 --- a/classes/util.php +++ b/classes/util.php @@ -72,7 +72,7 @@ public static function get_exception_handler() { return function($ex) { $info = get_exception_info($ex); - $logerrmsg = "enrol_paystack Webhook exception handler: ".$info->message; + $logerrmsg = "enrol_paystack exception handler: ".$info->message; if (debugging('', DEBUG_NORMAL)) { $logerrmsg .= ' Debug: '.$info->debuginfo."\n".format_backtrace($info->backtrace, true); } @@ -86,21 +86,4 @@ public static function get_exception_handler() { }; } - public static function enrol_paystack_charge_exception_handler() { - return function($ex) { - $info = get_exception_info($ex); - - $logerrmsg = "enrol_paystack charge exception handler: ".$info->message; - if (debugging('', DEBUG_NORMAL)) { - $logerrmsg .= ' Debug: '.$info->debuginfo."\n".format_backtrace($info->backtrace, true); - } - error_log($logerrmsg); - - if (http_response_code() == 200) { - http_response_code(500); - } - - exit(0); - }; - } } diff --git a/verify.php b/verify.php index f92a8cc..c2eb9b9 100644 --- a/verify.php +++ b/verify.php @@ -40,7 +40,7 @@ // the custom handler just logs exceptions and stops. //set_exception_handler('enrol_paystack_charge_exception_handler'); -set_exception_handler(array('enrol_paystack\util', 'enrol_paystack_charge_exception_handler')); +set_exception_handler(array('enrol_paystack\util', 'get_exception_handler')); // Make sure we are enabled in the first place. From 3d325b9487ed7b23cdcdfca8e0ec48ea225b4747 Mon Sep 17 00:00:00 2001 From: Lukman Bello Date: Thu, 8 Jun 2023 11:07:44 +0100 Subject: [PATCH 28/30] add support for EGP, KES, and XOF --- .DS_Store | Bin 0 -> 6148 bytes classes/util.php | 2 +- cloudflare-error.html | 115 ++++++++++++++++++++++++++++++++++++++++++ lib.php | 2 +- 4 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 .DS_Store create mode 100644 cloudflare-error.html diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f2b9767cd7d1e912cfd3ca35a947202889a21967 GIT binary patch literal 6148 zcmeHK!AiqG5S?uU78UHlgDBMf01b3jY+1~wDOX*xg*88eHR!H_=!#s=xcfj@QN2Zgtv@Bjb+ literal 0 HcmV?d00001 diff --git a/classes/util.php b/classes/util.php index 1b362c1..71fcc68 100644 --- a/classes/util.php +++ b/classes/util.php @@ -72,7 +72,7 @@ public static function get_exception_handler() { return function($ex) { $info = get_exception_info($ex); - $logerrmsg = "enrol_paystack Webhook exception handler: ".$info->message; + $logerrmsg = "enrol_paystack exception handler: ".$info->message; if (debugging('', DEBUG_NORMAL)) { $logerrmsg .= ' Debug: '.$info->debuginfo."\n".format_backtrace($info->backtrace, true); } diff --git a/cloudflare-error.html b/cloudflare-error.html new file mode 100644 index 0000000..e56f06f --- /dev/null +++ b/cloudflare-error.html @@ -0,0 +1,115 @@ + + + + + + + + + + Attention Required! | Cloudflare + + + + + + + + + + + + + + + + + + +
+ +
+
+

Sorry, you have been blocked

+

You are unable to access + paystack.co

+
+ +
+
+
+ + + +
+
+
+ +
+
+
+

Why have I been blocked?

+ +

This website is using a security service to protect + itself from online attacks. The action you just performed triggered the security solution. + There are several actions that could trigger this block including submitting a certain word + or phrase, a SQL command or malformed data.

+
+ +
+

What can I do to resolve this?

+ +

You can email the site owner to let them know you + were blocked. Please include what you were doing when this page came up and the Cloudflare + Ray ID found at the bottom of this page.

+
+
+
+ + + + +
+
+ + + + + + \ No newline at end of file diff --git a/lib.php b/lib.php index 3a321fb..70dc073 100644 --- a/lib.php +++ b/lib.php @@ -446,7 +446,7 @@ public function get_custom_fields() */ public function get_currencies() { - $codes = array('NGN', 'USD', 'GHS'); + $codes = array('NGN', 'USD', 'GHS', 'KES', 'XOF', 'ZAR','EGP'); $currencies = array(); foreach ($codes as $c) { $currencies[$c] = new lang_string($c, 'core_currencies'); From f620ac0e9a806285d6f19b82a1c69636588305f6 Mon Sep 17 00:00:00 2001 From: Lukman Bello Date: Thu, 8 Jun 2023 11:08:31 +0100 Subject: [PATCH 29/30] add support for EGP, KES, and XOF --- .DS_Store | Bin 6148 -> 0 bytes cloudflare-error.html | 115 ------------------------------------------ 2 files changed, 115 deletions(-) delete mode 100644 .DS_Store delete mode 100644 cloudflare-error.html diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index f2b9767cd7d1e912cfd3ca35a947202889a21967..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!AiqG5S?uU78UHlgDBMf01b3jY+1~wDOX*xg*88eHR!H_=!#s=xcfj@QN2Zgtv@Bjb+ diff --git a/cloudflare-error.html b/cloudflare-error.html deleted file mode 100644 index e56f06f..0000000 --- a/cloudflare-error.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - Attention Required! | Cloudflare - - - - - - - - - - - - - - - - - - -
- -
-
-

Sorry, you have been blocked

-

You are unable to access - paystack.co

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

Why have I been blocked?

- -

This website is using a security service to protect - itself from online attacks. The action you just performed triggered the security solution. - There are several actions that could trigger this block including submitting a certain word - or phrase, a SQL command or malformed data.

-
- -
-

What can I do to resolve this?

- -

You can email the site owner to let them know you - were blocked. Please include what you were doing when this page came up and the Cloudflare - Ray ID found at the bottom of this page.

-
-
-
- - - - -
-
- - - - - - \ No newline at end of file From b5ffc2e24835601490bc0271fa9730b89255040b Mon Sep 17 00:00:00 2001 From: Tony Date: Fri, 27 Oct 2023 02:59:44 +0100 Subject: [PATCH 30/30] added the $a variable where missing --- verify.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/verify.php b/verify.php index c2eb9b9..1ca5ffc 100644 --- a/verify.php +++ b/verify.php @@ -187,7 +187,7 @@ $shortname = format_string($course->shortname, true, array('context' => $context)); if (!empty($mailstudents)) { $a = new stdClass(); - $a->coursename = format_string($course->fullname, true, array('context' => $coursecontext)); + $a->course = format_string($course->fullname, true, array('context' => $coursecontext)); $a->profileurl = "$CFG->wwwroot/user/view.php?id=$user->id"; $eventdata = new \core\message\message(); $eventdata->modulename = 'moodle'; @@ -203,6 +203,7 @@ message_send($eventdata); } if (!empty($mailteachers) && !empty($teacher)) { + $a = new stdClass(); $a->course = format_string($course->fullname, true, array('context' => $coursecontext)); $a->user = fullname($user); $eventdata = new \core\message\message(); @@ -219,6 +220,7 @@ message_send($eventdata); } if (!empty($mailadmins)) { + $a = new stdClass(); $a->course = format_string($course->fullname, true, array('context' => $coursecontext)); $a->user = fullname($user); $admins = get_admins();