From cbda9a65ee89e1b0858daf9e5598ba96130fb592 Mon Sep 17 00:00:00 2001 From: Banana Date: Sun, 1 Jan 2017 14:02:20 +0100 Subject: [PATCH] link info detail page. tag and category listing. commin overviewpage --- source/foundation.info | 2 +- webroot/asset/css/app.css | 13 ++++ webroot/asset/img/insipid.png | Bin 108096 -> 0 bytes webroot/index.php | 10 ++- webroot/lib/link.class.php | 66 +++++++++++++++++- webroot/lib/management.class.php | 52 ++++++++++++++ webroot/view/home.inc.php | 5 +- webroot/view/home.php | 14 ++-- webroot/view/linkinfo.inc.php | 44 ++++++++++++ webroot/view/linkinfo.php | 114 +++++++++++++++++++++++++++++++ webroot/view/overview.inc.php | 76 +++++++++++++++++++++ webroot/view/overview.php | 92 +++++++++++++++++++++++++ 12 files changed, 469 insertions(+), 19 deletions(-) delete mode 100644 webroot/asset/img/insipid.png create mode 100644 webroot/view/linkinfo.inc.php create mode 100644 webroot/view/linkinfo.php create mode 100644 webroot/view/overview.inc.php create mode 100644 webroot/view/overview.php diff --git a/source/foundation.info b/source/foundation.info index c9e0c61..99ee314 100644 --- a/source/foundation.info +++ b/source/foundation.info @@ -1 +1 @@ -Foundation with flex active +Foundation with flex grid active diff --git a/webroot/asset/css/app.css b/webroot/asset/css/app.css index 3e8e7f6..da480a8 100644 --- a/webroot/asset/css/app.css +++ b/webroot/asset/css/app.css @@ -1,3 +1,16 @@ .linkthumbnail { max-height: 200px; +} + +h4 a { + color: #000; +} +.linkbox { + border: 1px solid #ccc; + overflow: hidden; +} + +.infolink { + padding-left: 10px; + color: red; } \ No newline at end of file diff --git a/webroot/asset/img/insipid.png b/webroot/asset/img/insipid.png deleted file mode 100644 index 9a374a08ce111d304816da0cdb183289183e855c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108096 zcmdp<2Y?+_z5lobKU`Ve?{)XX-80fTH(z&e_qoUJ-p;vsyZe#O+4+BFiZ65gv0JA2 zbMeRS^}&1hd)>WVcaPou;Ackr?Y`69+r93wyLX>=^LO`l-aU5r?!EhRA78HcWA~l$ z=i-mu>-%KyA0bz(7`Jk4@7?{|J@4*Ecznod`=HS_d%(?e@ZP;U)0BN-w>{ z{PD+YIq&8*+}?R`_aC<+s zckV8a+b7+6wY_`1`<6X+cI^XAg9rEr4o+@q87PxEwuTC`^(|SlB>9j-4!Oza^DTGp zNn~#o+uhxL@7r&`{o~hOdu`Y5{47t~EdTh<;8vKs=kl1+hgBceY5LgQ?{Egzym|Ay z%a$!WiaI(QkUoX$2Fm}|DH4fnf8>!zPTI6-Q!5`D0X(Wc=no#$7l+jSC6`=MlAWFX zI`91`fpsF)0M3NhFg_lysHk}8vBw_U!b8@VtY5icGt&5Qu;7CPYq!9At8ea$U3uk| z-=L3w*L~)rvupkW>(SjiW0v#o-af&_9d~c%{-NYF z((W9FfD<#`Ka{yW{KFsqa3BvFZUH~~CQqL1`@|>!) z=~ep^;4CUh4Gj(2zJ0sid+$Bxw_T+Yn|JKk@vR3Qc;E?s+Mu%;(m>AzKDQ#RvfK)D z_ng{m`mpN5%5GGXZT1bllO|1yoqFo27eGya6N;mlb55c|D?dM9g@uJ0H*TDBoSdAj zU@+)xNl8iKe)sl&seN;Ev+lg}PBAb9#aMa&{r8`B_St8@Wf3_{+x5pDJUu` zdX;)COiN4CdFP!c+wa44(4lW^llpA|5_*k|3+hOKvjAsxc6O?*t<4!H_4W0tuC8{j z$7e>pzS`K>cZ*&11@ID^!@&3nu{KwUR^isfEAOHBrHD$^a z_tsJOR=KNJuhy%tzB&NnbjZ8zxZ{o+xYo(T@gNuv;#OI1g}M7t-^Ilbr9OC17n_yc zdPe7k7hZTsPEO8$1JpD5?Igfl`|Y=%rca+P1L%L(Z{Ox-X3kbwIGYf6Y20V3MGd9yZb*r3){V^;bTK)-S4&YeGk(0Ph8 zE|KE`xC`6{*mmv1sBfcItC<@W+9+M&y;>umS zcK!O^d++@#nHk==b?O4QTep7?{tR0_|L(I6IB^^g;LatZ?Ec5uo^t4&*XsH3MFje}n~X+@e+K2wJryHuY%;{=sWnxOsn z-(NFk%+M20JfSUHwkR(z@0^P-zIY0q@fxV|da|;PVBh6Zul7yx6=%Qq2HGD=eNc`P zHUsLmtgNgwsLRXJ)6-Aqw?j1}9??Mu9VE`#DJOM6Sv~*4%X;(eRoYP52o=z*)`m*8 z)K#dvqeT&ikaF+-*Vq^2dZDgC)Sn&jf6Bvq$?)!yw|gI z>C%GC%*Jk3YP^qVh!@r!S-TD9uB=bn3R4dr#~ z)aunh+{GT-$EP9n9e;78V;8X9>!z9AXX#@f``FO{lZi+Mz`CKnPN$!AhSqP}FzCH~ zs%_t<+Lhb%%F4g$$3MAVr+?}*y7Eh()x-%ULVTb%-grYVyzqiDGBOT2>#VbG{@dUF zcJ;=M8#j@W&EWQJ_B~dCZpFn{S|Sy;PwRtn8ECXYQRe{GUt}UPrJ@*II{fg%9r1_# zHqPRq2k+56f4E04zwwTuuyFq_$?x;(r$7CL3X6(l6t*P;Y}nMIef*71-SZA(S-kY0 zQxP?tW$!%dsG|VH5{ErL{q!^b>0oVT3ib9+7=5kH>R_wdu~~1v`n2xgn%5UlK}neo zK4^)~KldzsY{>yKuFN)L>tB5FMQz)*%_g8_#~pXvq6rfwd=rA_MIJQ{qnphg9~|zp z6kp#Sz|M2P0SEky338l?M2*wtSohxbh;F<8mVH(TH{(8+unG65aaSALHm!3n-v6L; zl$nyD@)=Wg?PHcXdxx?%Hty6D{$m)h9$JLHzHZ%p z=dX3#^5gZVhaY!tK#8eSPB}$Jtuxprop8blzhc%toQrvES!|}TOJTD?X#j3ByCs)` z?*BFN-+fviymlPa^F%~M-!!l`%I?@>j}>gW1J>cbUj6Q8*J|3-N&2tLuGEXKzWHwj z)>iG8Uh*X!b=*-7tNG_Y|Jk8p46xb8jod6B$Q8>!pDmYuv}FAF@mE@|^XJcZs3|+X z_|q3Mi8R^aM><6#5I2>Z^x%EJ*C$T;xE3rtP(S|Z&u!v!^d8oqusCvbMf9<(xpU|K zjB}siqimeyu-Q0yUy;O*eUJv~o4m7_AioG`o0XUY)+T~_Z_{R7_3g_+GZU--^HUqR z`|i6d^y44jpgB<8Hj&?T*PTwmY(h7pk+ExBzH!7p#Jv|>bkRk3aqk>%vU<&AGi8Xe zjsZ58h;(tq-E%3i6c5;mf>>fX4|5mPwL>-ae~ojR-w3cE~12-lx@;)!SSqz%SwHn%gzSDO2+?tbWt5(o9+o=xZ+ zAYJ&WPkriKID}G@O`mz@nFC<)C@kR#%NFSB@BK<$-Tz#6JfV;IJ8oLKaH+m=?bn?r zpL*&kM}Y=q9l>JcO%%`j8bGXXRWp5^%wq*ulnad zQd6~E|9AcWXvXwuy7hOzaSCMmkI#JOGcwVGfeT9iF9SFia?!?#3oiSz@K)c>hUnv9 z6zC2&V`31*3hIS8IrrjEs|%6eM>Uyv?8+;@qS>?d(=UJVbElYApXZ-{zOa6C#F&_c z&OYXtV{Sv5u#_9j1lK^@WSWBsM;Ci+pKvn7cOSHe_WJPR{ZEDs*u*RtmIrgj%uxU1 zVc3}{pfirj-~XVcDw#ZKNFiVy9E}+odFR?6ALwU2hTO=ByyS_RkeaTnV2jdQDQ4G1 zg^Fh?IwxJtU2AmP9k*!xoA2o7ciil-Dxd!Jr)3lxtcoA&lgpSKN>K*rdP0hY`*hA}=_<$_uh(9wQdb9LPNqkBxncRD-6|@|kw5!j-G1AnI_n4_ephkM)lZZe@nP8_>z*<)e}))q@8}_S7&Wh zn~||@diPn)+Haz6d8nTaMiwY!tj?Dr?lNVWv6R-?M@?T_e!d!t=4w-JK=qY>lkbhF z@&o&+s_A95cGs#mBUK)(E3z_%%_^PAJ_@&X8r)i@QF|uCHjd|^d+yOMZ~fhf?@oqp z^83B=c|8iy!$#~2gWA8dixCuxC@VRt#d8Z(Ha&1B}`OB4_oTiO$Jfhn7UVtHQRRj=> z#rnl(ZS5Vp>gxa2^UwTA-@5jvnmTQ!&N$-?J^AF5CX@9*_{y7{y`Q_{3T@x8-42JOsew$*3eT4&9-!=F=c;fv z11#FE9Z$ZUaQl}}nW$h&68$lxE!(Tr($S~9qEZFMPn0jxt6)c+{B>ItYphl;#8S5> zQ@zw}d#p`ujLCQvSVLozuKVu)=yx~Ws2gthv5q|IXaUyF#Q5l=kD6F58-n1cVBfXq z4`>*N+jsHEu*SqumaL)dw6HZL#$nm$l0E_{SLi&+r2}cWtMjeXYwmc+jmtAxyS1XXwk&|b@b$*78EwAAkd{$ zU#t9{c6f{wO_{J*C!KzdzH`+#6mAde)HBZ0Dn!^e;EY-|vq4L+yPv?~;D5oxiTpHb z!o(%^;$$|PMB*!up92+V$CeVRj~Jh1=2s?TjximCLSc1a14jgiLj`wW^PaI1=$_@#3XgxpK8U z-k8cJ9IX?M`JAe2I+!qT)L7cTb;WuGq8$!T*jC@H)vvvz4R5~%z@_T@H~j#GW0GU# z@buG9J5__FLoE&=rbKqzW^k45@w<(W~BO*la-{uKK-taf{VEK?mHZrv5DXoELdQl;eiUj5Lxos z92eM$(b8Djf0%rdm>^RS)11ma6%JE~GaU-`w|D(skKK3wFpt0r1bvzxw6AxWUEf{xx>m1$M@^k=O3f=)AiIdVgt)ObiL%k4rj`tP=sEsW>Tew4 zr4q{MXY=+00`2eif$Cj#`qbH<)pp)I}7E zi^c{J(=#)mc0FonHoIA-(%vW_$Y2{mX$ULjP}Xe#<^|`TqSxQqHtK6Vfm9VwJy7}M zXQ^QRiSh^h>Vb5QLM8ZUh$!!hVObzgR7C~(O7^6yyUps+qwbz|`TS|h&dgPMEKB)G zIa*Jr8<)*sr_*+K_9_Bsmrt3kzdZbBWu&JdvpYkLE%mzl-kUU`G#xNcy#04p>`=j! zIm*eKriR*Gs@U?n{IM4O?{9yu@e_-kPL6jO^%D`Mnw@|B>tDC>@isaWYLk`-%D4=V zLU0luDA3Gs9(B*t$xzh(ARGphX+}EKs7c25Oi)B+P?%Hf?9oRb-Ot_7VCOOEcaq<5 z$wrj{tMy-Z8%z6Jy9E6nrKQG{pO>yJ>ucok_fZc~&0A3DjHeZELP2NuXwJeMbyoB$ z+#6#O_EJYS-ga|O0CsY62H>1ZTStbpKeGazJgOO!3w6fvWqRnbRa&#PTbFzjJA|b9> z=drO$?M1vkg=y!m&Ms$i_JY#(&+D`HVDI3cM`7CJ(Z`(w6%8Ps?y=Q5BVk>$TRsELr~_F%1T6_n{FV@I-s`?Bgr> z&{PJw%{rB^YNeXJ-#m>k$kSVIZNTxRR>6GJZR{ltD%!Y=nVOt3P6cTmWu;G5OKr2f zJyld(w3_OA%rKd3IP`qfLkB_H*Q#0WV zLa=!UDyy(dx7_?|?Kdl%-}7M28xn5+o}MmsZG2lhwZi%SB+7N+S3avFjy&8M1OT*S zJ4`5o$U_f3v=Pe~>$uh)Hj$bo!>GyHzatn`Pe-SEo7?3N=c>mKET)mn2e?UC(sW%bHZu| zkbd*4-zphV-e)hn&H-(68o^Z7tT!$g{=45ld(6=b6K?J$=Er8OBdik|B3kO-+q(X(#D-H~&t{ zjym2^PVNTnB#48rV@1-7$>m#Q!~;W;frE=bc5x_J?0#gphj(8Ze%H9NO4G9@YAQ0G zQeV2J7wo6bmRvpYz>9!Fvz9HMsr`%Rs1wh{v8D+H3t<1Otg!S2$Yy7bS5fh)%Aa$H z3YJY()*`5itWHHbYE-$kPRUvG)sFa~yLyAtu(7=F_CM+K7krD39@#@NiHtIX0s38L z_%q1d*b`HPxa^6MUxV2bP9>HccFNj}0o>>FtFEm_?LCyK*U#ot2c4iB@Ptqrl3eeu z-`)6IJ@({lL$2Eiqv&Q$@~ag2cqWvw538(T8YfdT5EXgU*WRVxPGrPT`C(YPDD1Wm z8lg1buO<6sD4jOS%S;Er`V^u!R@a5~)C=3Sd1nVg%cxS3>wy`-WD zQ#hIxfTipH`@4D;=d96^g}t#lvf)Ir9oBd(?QdPchnT52KU?(`%>;)@lE2TZHpCrs z=T6e&&u>*5ZIPYJq?4K^Z&E~cy%kKRA(;O(`2uYJK>K@`mGd)Vy6>)=^vDA@I{;*2 z33NYjh<+0lj+(~O{)02ZOb*Gj97nK)3l}<<&;Ih))x3S(;9H&F$1gro<%^aiJpT9A z{;@!k`ce`3Ato|Qn&fV;(%O;~?(i#uZXt%QBLdOWOB?r6*Rg08;=Bwv8>1l%$l+W^ zX#bR;S0x1jINE@43ew%bzuoM$9ndzrcElq|nCyOi^5n@@2S&*n{+LYPM6}j9jc{gA z?>&tfuy-VN>cw4aw4!5^-qH@OYN=6QXQQT-lhzH3*##+Q_$oGjEk&%LB0k6xxVYgaQNgf*7- z57+vXR-CESsR3orPtp&6_B{a0hfKXfFTeb<^Qo}p)x>NtveqbTQx3aeJ(TQno_PPy z;Pywz3AiEO?D8sw_+r_?B1L+4D%4f;{zJQuOy^;2x#->bJida?hS8fLpkg z{@KmChnvRM{(gE`>7;y(FOCXg53UC=AS*w1)si`hU5>l z{Tn-D`pu0$)RxU_olpnvq~(6mNc*w0|KL0zntbS!w0!w;=h6>vzge$8G`!rpIBT5t zFP$^y@jqJoPyfGbua)|30YV*sb0;E?PA`CML=Pll8{!QVB9R`%ArOIK#&Q@+Cc*?8 z@j(pnuiy00rd?WWFMT1HALH#(W8(2*#U4I2%X81x=2Tla2b8iJQQ65(g55h z&4h8tP~J)t-y8Wka_VmH)PW1C^&Tu9;8O7uTJSM+~14k7_ z84TD4B337fCGIrJ%Vy$kSS(#}R$;hn@&h^etP1SP#irH9X=oQ;mG+d5}8bS(=B1+Sck;g<8ix{zq#60N@L7&;SL1a*AT$g~zxU z8;t@MX4B6_5Pd{YLRu?3X%BQ9z5T;|CJm43zpwcQI+6)mxM-0O&+6{G?>3X< zNhrO~LKOIW^0hbHW}VCS_Bwat&`ASDa8DRuk11Vr^cm`-ldfo~(t*gFr{hxn+SWf} zX1A4rQK|Wp=4t)2tF+%ibHacyh7C>%d6O2p>!%V)t{-JtZa2m zDNzGTo7SzB@^0RuP|e#)@^z{!DWKkzE_Dank!d39jV{vJ=X_1y{qChY?UTn1r`+M}nQ!i*2R6}9@RAlO% zO3N-&YT0tVTeVIdHLq!Mo>ylqKU{6Qnzi=bN;RxTeDN{ZL|EpoZe-#VA{lFr2#UM$ z#UAsmA(R$`I5=N1U8+`&UiNRaIrJF8R{M+JEXohsDJ9+KCT?{dFIv zW$yvp2G*|p+Q8bVY}g5BV>fd0zOs76_7B9;up)s=iOs-Ra8JN?6^G@ypOQc{V1?(FkM8^g*VK zw7;bX|NO9{+%^+Hi;YA)rDcr$H!w>! zppM@x)Bdi+6vDA3dz-y|AdMNY*F&X+OshJ*RId@Lpet6P!)Gtm9{`N>9f$)u8dQTh z%)AQM40_;Qdq3!isAW4F>|0}QMC0A2PW!nyAHrA>= zbC>$k{qknzD3Xz_Ueok4%Z0lc5dOpTjj!LXjT?6A8&_X67R97%N#ZomXazS)k=A!i z`}&}&`}%f+HFad5?N~5S?}L%wSVc>#R;?Y9{ger5G$oT&ZLiw0GY|`XOz8k=G-Hbn zS`t;TGezTqJ5eTL39znDo40LM{)CCj9G9nxP?Pd!l&LIxGOo=LlyaF^gmkNI%PXpE z-l5Hb4lSOupGpf3&;x&b8c{_fGk;JmZ7ooHup5XAVm3hrQ|RC!%__=N`%9bD*50g> zPA0U#7}|e)NjC9d&eHiGztH(c>{C@$Rb{{(Lpi(&<(J8>t*&iv77OuUZJ<4B$|TIe z$n8(N_)-;YLM#+B4s>Yx^jTk5&90&KZ+8X*Ww5mSbF`h-3!}VZYz+(@JFu}uU5%mr zO&nsf&t$9?rcKXP$dq1YN``{84}}Mk60Rky0}Klhj0b@rtTRaRE! za2$i9*71=8X&KgPiMId1LxT>^{O@zrv2N#}v;9A_b+USD$7?Gls{i=--?RNQ0&s_Y z6%ZR6)syHKc_3ybls1|jd=wb5fHc-=F~(Xf8vr-4GbWRNXZx>Q`L2F^!%y_J zuYc9S9&^Z{&-;;Wp8~~w6PX*a;%)}g2H-AmyWq{K_tTgGyE-?hU2mL}o5@rSNCt)|$HONy`8M13VijVRA^oBd zni#5@)foVDW@7e8wD)-4LZ@1KZ`+>KpPf7MfPB5N4l9U|*D=S-%ABm)sxD2Oe1LW} zu2s|4t=a`Qk)K7!%J0?O3H$5tLyy-nC!L8oUB2VOZ~5$*F5UAdzs|XC$f-dmP8;-l zi1N&5!>RnztR3Xoc1p* zM(K*U?7)N5)P{ZVj!loNsj>oUvO^OKb2Pu4$%63_^+th3KTPc*^tk~AwR zY`15l%PJ#ip7npj8F#baE^x;K#=!BI0lN$FV$FuPwYW4}HLG7!LsN}r%v!3M%~9-c z%klDiPbFPGz2~(uj4gR*QPwS;%0&?n4Wkf)HOvk-t0k!oO>ZL|u1-18dIeJ3)H5D7 zemshqtP&+9&r_&px?1Z~)!Tw`eG^dtX%K%bS$+Nh)b~Mp`PB*?bJTz8{s+E4pqO+$ zCQUJE9+UUoci%4=6jmqJQpU5{jJMZhz--uTN+V~#`?n*uh7E@2>Tly=a%!Z!@yYta z)bep!v%ON$#uW8bH7VV*if)pwZQCa+IjvmbAR>_TPPJm0676VL9b$*&Ke$bKg+=jM zePoUetj+e?5veBsBg9*Q-U{v_yQ9!I%Cizmt(o z6&2f-p&2tvbo8+YQVu*Xw{FuNxBW>EJh%>rrgpqq(TAAR2_rBJXk!%CpG=S8m|D@1 zcaQhs#($`CpvV!ug z?UAj zFTf_fT5DIls)E#J&73qHRyvSC?jP(e#yOZ7wQaT-g|X9^>N&AOO!Q%kQ^Y5(b>qxr z6ts~i)-kPv8aHErZ4|e=S>4;YQB&?jYyZ10p7mc+zb!ywePM8>2H-A;55D$M{B5?u z#-W+tfm!%i%pNn-JL&XGG->i2z5e)*RlRG6s4;2KBD@q6}T4_X?{m34qjNU9pQCK z$wdno2x;TGDtYs#tB(K^P0<|n2C@H3E7Z2iZE$fr^!C#~()7jWDR&&g*kHf>W$4>J z*fWMC*e^MoxwILgnE8R54ArSe$6Ut(4I_(6!R>Pj5|I6gvS49 z`TVo58O34LhHXY=SRb`yiY7B4w^*y=P!Qd6%hmeBU4Pd9U3b3%-Q{>Cy^3Kw&KQ`R zD2kS_1bUFJpJW~hjh|WlXU+RZ|I0mo{wZ7x4P^!g}l4)>KHr8-4$Jd z3tO&|Czq=@XSO26$?Dt`QlK)d)KIc4(vTO~fR~8mz3KT1H&4;7S1SKjxF(A0?3HMt(NnMsTtMWZ%+gdHvH!t3=#W}fIFSwDofDHq(gQ+OMMwQ8*tlZoz*2ZI2<{JI}>mJ!MU(Z(wm&K zL16r-4Gi16$M)NjGf4Um|9OA0OY{(&Cx9R{9r7#(cft||e9D_|zUh$K7BnQSaIq?? zeon+AFD|$Qx8Vyskc4KtW;UiyJOhq7GOp11F!Rf9?~dTQyvF%Bv%woJZK~R)(($DU zjsM~DvGAM!X!^q+{@`RmK=97nZ@+yVKdi0X_KV-!v86rQ5CX$X-6gRF=!dDWEZG2O z4#$}mxZQ%@pmY%d#vS{|v(Nbia+Ew>_PKkoADvF!Zi2;xU7?GbWkdwFI+5}J-~$gh zfNf;Gu}8La5GEv30BmFLGuh18*BnL+v~3(1V7vX1!~Qg8!2Tm3J$v?iEn2X@B2PY| z42*4keLD!A5Ktc!6+!Ogfd}iVvT}?qv9zN?$<=BPHmfGRUE>zdAVl5-r99cmvMVus zhk{N7su~Qp+db3Ov@uOd^-&#tT#F`V)F`y0RFxaXpM(uR@c`SF3Qc zR~_vom~miQf-Ofw^?2QR&uiMasY>E;+c^_1^jO+|n0m1H*gIVw)IP)&D2}--!{q;goiZ1^-4tOxKIS`~V+j<9iupu! zDzmlq46qAJrs_|xwI~mYImO)l___!-gcc#o`lt0rXb0z*pH4D4UK2rRa)KtB+Iy;K z+@UvDy_3-RADo+kwQJit_}W;0TRsNb^c!re2Ef|d&}~0!L;G!QXl?9n9MZr<=OUmZu<^*8|>j{RGw}24Ne*}U>|V!;YjBr zO3%h39W}B7=G$p8ND<~zO&)?F_=(mNs4~uWY$^H<-Z0rvzy++5nS+g5cBlLkQEiClcp+}ymU)=KOz$GuyaB#?h6A0+JcK~Hr*rXu- z`ssNHuG5_;Hr?&5>T0Tkd4jqwNk`lg1K0`IhX|-M#Kh^4`PP5`d8w5sRL{Qtsz_F_17KOPh3$QYWt;^Ub5fi48rqS(&I;fl970}nS|a3+^A_R?LSOLmcKjD zjjA^)-!^yP8?L$7#^FaI+2DoX_686^IUUMGQkE=~oSkSOrf4uk7{7ExA5hjY18Tm) zHtUOKOBml1!}QrEW6BdqToq6`T z4$fGC@T|#VXYxz4O);>xz5TW^U=*I!kd@IkOQ6jdQ!OSLA6s|;;)Lz^Ap5m?T?LvT z-21Q`_owAK0(o;OO0ym^#+1LhM6n(rSD(;k2mQ+td z)7sIdE<)=?h=$~c-(5U+0_#OJs=6K{ZbVXMG#@5%RuD~WPj7!b*#0;E^Zr(~HR=1m z_=#@0>rVa8_21JepFGtGE^L}Ei{8Z`DYtk6fcEvfjkRsC?O9>N6u%T>=|tOqn8yvb zT);NDp({T$cGN)Iu30Cx`{FTnRUw-j9 z+c_yjpHwGf-LM>uwo`hYiU zkm#S|mVW{%V~_46yxS~*w7#WTQy0xvxS?55*s&g>-1xbk4iJtt&25=P@d(n<(Q?(x zKU*R7+XASysY*dyz&!H+XE>px0w~RP9}X<(*aBv#cWXN)EKyv_y0vvxj_MmxO8P1l z&R(xzDZv|Z>#?41Q%ZpNs91XMs>vo;$pk2HBJKF9@WlpHBV|PD$x&KCKO6bkOFpk} zed`-K`IJ4~CP(|GFeHpoFi}E#5#fRrR5J*8flDN=nrW#)e3Vh9CKGrU1!{aU6AN3U z4>nI%ed8;-=<`?gUuNR-dKs6*ON|nU!X_Y7C?+QpjtrNro~~wfx7Opw+@K67mPPZ+ z^u+Tkg}te|5c^p8Knt88#4#R#-?tlr%+$r{y-Xyj#EM<=v4d1wSF4R{RylS|DF~qCh(+l)jr!adKCg!#dQ3Oo`fF!E*t&4|@tXR6 zIspC+2F`a)aY@=MVKKF|FX8r&uX{UYS@ETV&;2X?Hv2zwts{o2Q|y~=zG;u*_X65B z>T%C@rXUlAIPH&_Q_7(B&np@4JZme{j+Rb6?W}?J-y0T;md^)x%_diP(*f{CDCn3W z8Hl@+u-)TM!W=ruswRH3!RgRi>>V)01FV@zvKVe~D&i;yzz;rnk;a#1z^T83J@I_z z#b*e_)6c;qGX5i>TIb~^&$fj5ih;Ck2HN&s+YCglEHvq z!m}lfP;om62$EYqLEhFLXW8Nqk?jLenn`F@$C@U`S~aaVq}d&*nzjq@SdT(;>o)ax ztCUqhsI5+mk(3H(;W^XUqin20qTRV_**Tuhi0zrT1@M5X$k?vF%uQHWzzKkTmAlfk zZUgKhfD`l76Tuw&o@65R;AYv{_l#Dodl)aE)!I?nrO$uiN?m{b&z+(p-x^qGa-?r@ z0*7PsW2~o_C`!r5h{{T`G;4C64w^Sb3#XQ<1RKS|{t0%EY)m|0>EowfpaT}nbB@h- z7G{u11q7*s7y_0ylZL+%0O^&BRRt6V-2U{ zh2mz6B08a8TGu338?YslC+plxF4o~h>pAnhb9K})hdaR)EVlLrTq3jcbC^F_A)zo! z73)^(S3mm>QF9t84^%&z_L17(*T&K~#D|UG4x5LPcSagf_|r=?5f*n=Mvk)m83c_c zh>15{fBDYrM8<)n?{&A1}OCB19Y*smD zlV)piU3~GyVhug#TWOwxVSW6WgVw(_whlWm7_6p47OzVUHq>_-zE|DLE7 z3q;pbnyh7qb{+`pydG z37@(N#M|8tMYTsXoy1;|8rVW$2xQjb6vsfjwGKt*_6Bv8)To5@yFx_!>Gr0eVD#zQ zYd)nnxBgh6`U3oW$76_{@5p+6C|p8%na?J&PB>j1^_anJ>Ba00iWMNs%^=cJQivrx zB7~}Y1kaRRh(A5b?6D9Hy0BRP42Olz38{d9QEiAo)PzB>rKHET=?{q>5(%gR%1UtFnU51B!|2eo8QF%#Ja-EjT4 z5L>~?Ar6Z`{U+M}US1OIWut5!4DORtidkx8yt0vpHf(=SpE>F*{r>s;9MHCSpcaG# zk;y_rznzAe<)cF?Y|sf`UXwx%g$cF)phxwUuY6_jseifO9f-=VzvfH2`44{?w(N+r z6KemmlIhO#X4NxV`rdcGnQ;4$mQVb(^R&PEyoef-8WqICB^XYk%;rL2~G!hw0XvZ)EILGv-Zy#bXJM|M>^>(;zNj?-o-T2D_X4e*5i~ z$t|PNTh5KPPdF``nMIVQfZCwKR#mlW|4*N&o_CuyeZn-Y?|fB-4V`N6O&~(PBW_DL zU%Rny67}v4p@5^#>-;Ke9jE##TA(EewOK1agFhMH@V16b7O^{02UcY1fg65DaFL*z zvU(g=J}pFaeP5GWQH17KFHv_Drhz@kxI43zp4O^hN3q6Ft=BpNZ#W^|sP8DTN%PVV zz-4Sdh1;?mamfmTYkYk9=XKZJKO9gP4EHg~AZHR{20x8vs~uRMNXFtLE1l4Ogc^*{ zr~%~A7I$^HWZoQR3u@ON0yIxL@p#oWu>O{}2kMvrDiNq>z9ocGu@@C}G}Nvbu>y;8 z(pm0>$srE~Yf7t9Ite34ppzcVj-qsQcPShT|C+?J`_DQ+#~yzYHhF1k0eF#yQ_nF% z^z~{npl#OVFFf*;TH%VHd2=(?DwEWV*~#*`C8{GT|8~;>5R73)X>P*ppR$=SkA5g` zEEk{;QN$AbJ5;0@J$~gwmDJU()3v96T0eN|5dxCTu%$d~sT5=LPsYdH%(q5O<7nr; z*4%{JKR%;>Rj@WCqlwa9dF2(o@Z8gSorODU8w{U@PmUNYf%ZRh@e(Hk%X_p`MAWrJ z+kdot;;&7F0B+A}Rydz{Ou$qCZ5?~0k-?C!EvLVR;+oiJOLA#Cf zwz*;v13P!)&;e<8?*gI$q;2*h6HOTScd}&Ciw4*=H8uQ%P@Ol&+1sBO?veQHB|QFH zFuS!hpii*)pZybsz1Ib8w;XP{Y(J3frZJ@uVW#L#oyj) z24a*dXKga%&QTLbz(*5P9WSN?E>gh%#VvG9W zhuqoR0D+77V5kLgQ$)?pEXH`(b6PMvOUEvor;VFyS=bKqNR*P@h(&CzNo;uNnO+te zoTbB$JPvzyWc@tb$n|EvwVjn1La|ciL$yyo@sq?~&(>3S-_ObwyyvY3%^;lLuJl?p zr1mLmdK#-|<{^6VCfxp=ThI-ddnoejm{B5>g_=SBht30{C=WTm|Gm|E@K^s&r+wjT zI`q&(oq#0Bu!9_*xMyt*{pE)u^D*goqX>go{b98BANsT$>y_co|2v#>MmdxB-r9d| z(E?WdMcEAtW>n;8Y0}K%gxi0#eB!TlC9_fo)?q1y_*M`zceL>z|6JU$JMat*O$cwB zNe2zAO&Mb64b<(v;gSoC{T=ju(6;A$7^AOa{`;S1Lv5*m_4(Y?|6+>=kl6Tt`>oCH zqw#z9y|#}BYx^A!*3Pk=98-Fmn4KFoHY;c9L>=_mGqwHcRXTLaJk=sTYG7eGe@mB2 zBk8K?NX*VN{^bGW(_Jj@9c{*3jztY)P>S9@{7P-DAp$^0@mr5!B@#9df!!&qV4Qw< z|5-Zt$Z~w#nN|TgPd!WAv?15-t-(YH?xu4l^B1ud5rxDEofcuWh6s_S%uE_p9xVy$ z6{^EY2Z}gQgLz#8vS6-5xp$z5`P5mL=)U_Nb6>f~o)vKbXyb}#K1W_mz4G527Xm@3 zSgbbMZLP08p6dU>QtZmLEJ-So~oM2~S7Mnkc0>twalEEQN*3RxNc? z!}?S^5LIkrHHqzrvsMwJZ$mpl&+F=0#dncDfBEIgDk@MV?Dk7Lx9X*}9ctge>aZKL z)UY+Cv9v$xQ5>oelhIs#bZRs0ikUAzlSYiNjA5b_b!7Hx&2u*)&#rc&?wj7g60+@n zp?-f=4g1#v2^qwUlSPcMsv%bGXzf324*#AfgY>@?`gS7if5P+`ok zAAdpGZ3{4PeJp)p;Gw-7v}MpI^6{h3Ls7pMEEpy$8)E$!+7HkM(gxPH83ksWfqDF~ z3-IoF_qPl9F6bMz)rQ4R9(%`^!uD-#dlF%NOnQl8!OYoHEQ{fiVY0i?lFqU1E!o~Z zc1UvPY@&aHtZlXMn8P$__8gXkS*yiq6VzRptT&q9RzAzKBx4_(omJp0SCeR-?tMM= z-3nL2J20r2&#^f?nbZaPt_oOP}&7{M8*pRQAg#((Escj(tY`w2?HZXLL2A(kTnDC;fS zzMTc~LU?$xR#YjmQnL|z%$hO9kzYRX;ueBI^Dd~Z%xDo4Y7W81akPnGIm2XBixocl>I*!CYar+<%&e(HDrlq}WOG&>eVdu#tACKc=867%UGOak7NdrMW- zH3_%>-tuyy1PGPrCi8|e&pPv9{L1-9YTEcreeJ4O)!tm9)F`r7zP)?udcpu=|J>2a`eU1w z(!-kfIVEbt<=ZUtVz_;K2}9T$Gv#RoCT}^|fn!Q&!eFT7zA&7Fr%Av4?GN174(vUE za?GqWVE;{B$b9Qe?>%^08OM;5g)93^7LD(Zl!sK@Z}V-q6+sn@Z0zkpuGbU3G}7Hn(Zkv>MIaZ>rLAlhlB{ zw%O(e`|{OV$tn;XC_^EpnsSh3Bet;>elrPxG93?61S$$;qckq?XghZ8b$O}EKk#53 zc=%GC&`Z4AZB>f2b}6r%)s#`DCffdekv8?QUYW_+W0ceUuXB8^8qXb11ToFwP`F97(d%l^U6-%^j7>nix}UR~F)t_W|2n zP|c7i$>MYoa_#`^6Ex4$=q5Lv7Z<&+2RCPIu9TjQ$_@d%P=^b^>e!v$CvL$i6=@!E@; zwrsg$L6Qhyhf!pjLNyBCY9>mEcv76dHKR&XV-d|7b{ix_5TTpoeV=qI*(=R2z_ zn6Qx7vLf=<9ZhP)G_x53rJ)y3KjU0b(v}tnY3~^-EH2Qy++T_L?94e6(OtAc0dFC; zN7U#Cpsk-cu#Rg{`F$Q1Hbf^;QHKaEf%cCDJ9YE-j#ObzsuO6+;%X$4o*P5^Cz7At zyCYcu@8Mjihn$EX|>(gZSQV&YVi5pw~e@?6b_Z`#RK{(l!Yl4@{jNU&I8X5 zsw;y5i?W=^_+NDR$DBL}*zfGYE)(61DOs-^Q#uNBxfC?a?FdbKQ+oAy<*N!d)MzfA zkpVmuQ^rr$MidF{L=hWv%1Ke*E@EuZAw8)q-iP=lIek3wK(O=}hdpCHfsS_Wr!E%4 z8=Q=dHt~q947zxBxgPz=CHkM6@6xMq1KrVlR=Mp%Avj5%@%7rYZKWo+&t%=RgSAnw ztEK`OHUq)9c0XVu6k1+W9-4d_>k8~aL|FGIv1X zVYLDI+tXuZWJV>g2o(0bS!IKZY`@9Xk*`6J_jME3-~~Xs7+c!|@Q%t_v0{Z|L1A{w zW(H_n1T#Kfn)^H3a2bAB=fZq^4{LGlY(!`9T8f&V_^Z0RHtx~>A^L|0g|rXhY6Nr3 z7!FL~4yb*sY;ebcLm)6X@_LNrp~St~!LsfK*e2piB!zh{n%%C6S>3AJ&MLRfED~CZ zxn?N=rlTzyhZ4JucU$`>l1zWU*Y*dS#4GhiM9WRO$}PVcC8Ltx`egc ziuB@3Z(~zW7huWt-WcMlmL5z&-_zV^yXHgqF^UtD z@hJfm(jK_YsP!>E(4w@|HTMv~pNXW0NdR+MUrL7R5S=w5s%+{s6U~r*`TeDMF^+dk zUd^o1Y_ZX)gy~zO;=xI`y&_+Jc|zkqk@~iKdeBq3?eE#!_)j#`vE63??I!owd)Z}| zorIIiXYIn$rAwVil@&X7=v@e_yMhTkTA6@== z-SE?g^yH(jK>0T)l!yIxX+RxiH7xG|_0v_PDdh{4m0hHY?OU*v=%4vebwU~Ko|>Vc zEl`sg%UhffA9B|S;*(Td(XozZ4JgJNhR}{86Kb)OHfT$Us)>-aIRpXEW061fn5<)D zLggXJC~TYA?4oIZIxumo!%cRTxy%v}c?p9k728l`*4rIN69Y4or{Rs|ggLd@-$2|p zi#Oq#50TeCO@72Z>Dif@Y1@<;(x<H&dW70(Ht`k`6d(!X z%^5~dAP?LWa`koqqdC&8){ZKt%ogb^kreLjWMZ!*?nJk02oScbF;k(;BJ6uJak2_2 zf-*dy=rN%?T=7CN?S*9DYQvG(e}^DqEE2iT^9ZYF+_e*2D%?zNyuh? z2!r;JM-?>~IYhRoIj>e}I38`^K`4SI#09;Ge|*`>Etsg5`W*zqZg=`sGMu5cxepm| zkl^V}Ec)4nM^ub>JUOX_^u=yEnlhp7w7qav?ezTLCP9&g*r zkCur|O5Q(B+j26rdSe6;#!iio;>9y4A^Y8m%*od0@!omo zo&BI)QlhJ``jn;>`t{>K{02~f+Q#@KBa^kqCbVcr*Cu5&EK+V}spcM#h08T;=#DCd zFf9xbHPGVL1QzTvXv?CJXQ*5R+z_uBqi)BT^&ph+Yleove0$Vl{Z`BO}8RWf&J=lgaFpmqSHo=Xxci$ z@>UlSYNJjitoj_mWxkDa)~4g6lt7wwaCzc=frxGqlxM^TO1Lis^I|H_X2N1kye3u} zh{3(}(a*5DXV_v>--nE!u@z-JG_@0C&DZ0^(h2jOUM37vmZy1{*z&l}xbLR>gi$~T z(b@!iSRVuHk1oi6q(Tbf$r{QpR!jaSq&;=YPcPTqS6-t1XHIZ{+t#;QhnUSk9P!9@ zbSNloMo(S5sVzY)7(J)=ul6yiyX~JcF)%6?y#Lg&M=o$1cn{v}0T&qKA9lgq^SRG` zZaQMf&jQ-#F&ScqB*#tNbY(U<-hA`#^x~_p#6RmCJK&uF78GRVD`(tf=NWfNdq5mk zbD&&SKEnogv)^tSI36BS+}noPSC_~1)S7$L12``v4n{^TF6u14s3_LE>6xnaHqvo= zF*h3uu)}1x$EgZ{bt>PKQOHV~A(UQ(9S!GtRSQM2VOy_uuINxYaYjm58hmgfq+ug$ zN7u}ic@$5u?#Se(LAqTdlt-bRotSe2w+ zOcZ;FdDFs@ED=ss@$q$E>^TWAG8V+3A}_KG1YGUXe{ z2}ei2MnT((<3(3Df%EZb?nWFJ!c5gP&R#gSFqTJoETQ6Mag4T(t%&{TqoGc9L_2LI zbR}EZ;oLL;n~5R4O5I3?&OGoieG})fEFwZ$+ZmO;VZ#O&thXYDtEJj^^BPVQ4Ev{} zgo%Q<^oflBVKW%!WOCsB_74CVqmBPz9=C?I%>df8d$!p?Gxo~e?7DrM0~++vbjD8( z;g545I%YC%4g{oa>nEwX(TI^{%a#qqZ+Y~uf6>(}n?77ZkIn?U_wir8;ArP@8#k_a z1f3N^F9)Ele6|@LxMj6tE3*rB&hfA)!c8NlJ2(7ADbbx;5H8U8&2*lgOhg1pD$E!U z^so#%1VAi;DV-ArcEoIky|8A3M{QF(R8#_Mi;|?BcqMIJh1#(_qPq30V_yNgf+^aB zRGXNFq$sO(w4=ydaoTC8?MI_zTE{e2#8&P&_<$pHQ*N=YyZxJbIkH`?C~Q)Yv4)MU z%*jSBnhD$2&5AFZok<~k7p83CS?b!qNi7V9x{kNiUFTEBRw!*iB7m$gisCE^n;S+m z=|c_Xu`OOi!nEZ$0_feaU4T^63e)UlLEhN*lWNx9wk; zPqgYu0(cBIPz~_2)1GX(fU|=1E3J9BtC_jl>pbnIrhC*~xtbcG&YN>%p$V8-9 zpsakvA7#}n{8)?EYZDua$)qfGrufy7-l+qoPtjFJd{v8!7dT&UU}1}&8n?Eavfct% z8~foB4Wri5&g?e*F~RXaYDRGvgDAt@_Fu!IT%(QuxW}AB0(%`Z_}oA8+dPp?>2Isj znAp+Mt#{l;ptx(CP`1P6Z8L=<9@)$IKkB^WoX2gVw1h2uFOmTRGFsUIX=?-9T<~@P zn%{d2iZKIr5A57@23}rOqbA`}3gW5DU#P4A)M{UY8iD>egGX(!EW1O=1bqP3MmxmkjhaDYH3E#XXY%0jQjmTJ0=YBX3Qf@`@*_ z-OrL<1yJQJwd$pd8!$&;U42+yFvZen2H40I8E}1cyiO=^4_=ubX5UmsTMJ%=BP6%M z476P_Njugf2hW^2^CJn?2GC~3VjbMXA*M~Y1sg2g@ROgabIWUvtjCK3k0zSWV+xdT z2EoE;xDINm*N7h`OAmpf;69Q&ah&Qx2hx}rusSc|PjUy27lgrVPeODR*@!^iu zbW8mE21M{3VRk~*{ z$;Fg9Rt!P+puJ+|}K^43B6I|&D42J8|v&;=`cSxy}b z42>fvq?Y~y298&ac(t{pyOn-7gh^;h68S@2wqTE(!ZLFqOdF@P<*O(< z!0nEZQ~&9tecb-ta1sF=#JcHk^;mXv(?^UtW4t48H)@+cM2`T*cY`-;iG~r2z^V0G z6h*qdC)_1}q>A9qL`uw`qoR7^HaDcJEPsI(A2mxyET5`;L?Ui7TWg}x$&Ha=lpR(g z?{VH_)-I7?ozt`dqo&SAbOU*bjsH7A>b&p3T9$BNkkE|w6XUNUy=5K4&bpjWnSmA&p!JS6;ye|5l0-)K4_qAl=kGw zllA|rI}<25ujaJd@S9NQbwOEoRgDmiZ4UBQ{*aMjiCS(F(bJ#qN?G0f$$6QtmAv%DQL&xmc!DsA;-}-_5&qu#&gB-ZY zhukw0R>21H(iD<5+BA!(JI-+GR9BG9W|4pw_hJ$pjiA&C+qeJPAi1XQQK0V-cG9so z)7qLuosGK=G1)uAN3s{jn_#)6ijBA$EEdjcXheWx2i9ED{^$B!)}`4LL~5?t?#^S1O<{db(K|XNye~gmPsmunMhqzt+jFUR7Z1%ZC$s;_Flcm_PzKT+q`S1 z#nIq#khMx3#Cr76M}td!6|cMw9Xd4h?Qehk7zekcq2yylj9OFkg6oXLuRw|qZPf9< zl4zB{P^kZ_X9tUp|5dUo>G2RBpT1%2=kyO@&GRYy{sRx%laD=T<0Hpb&xb*;a~wIA z_B3#djsM&3xXZR|+a2Klfd?K4^2YeqxbCe~Qk1(ZKvd8bX}5#U#h2SsU)2VcOQ(2n95tw|g92YSpbYNH^|b^JK(& zFup&co5#@?Td)ooWD>g})oAo0tq`-ceCmspm%AG1(t`>Q)`g`$Ck77FeiL!cy4y{s z3w0OaYi_vHHl)|uJ@^W4-OOGh5A3;*im%+-_-HzZ~~MYux*sIQG385ewCwCB;q@%cFaJdA-2r*eK9_W#m0Yo z%NqN@hdvVIEbSa!YNC%Q%TzGP6-ir6T7BV8zs1z$&SBWrcki0tFPUqPa7D>bYutvr zvA~b@rbTvkb0Q8M^pfZBZ(yc5^Vuo*^rwTm^ z&ONhR*vL1oqZ&~@j21(EaJV?z-!3EMf&$P3Q!U)ExHi zxYqvWFF#@Lde7Hw;HjTmdgoC~c6M8T@06t)ud`WfL{_n**3U||cDR<<8ft29Vm)Pq zbr3i-y$~FUgrb?Q!?9T)hkI)wQbz2gQWB$UBXDh*_In3vAe*%4rgag*cHp0WVE^IM zpQ0HrOi1jzhOZZ2U+fGnaK#P6rp1!nT7kL33U(b6tQ%xd;+~&ww`*UzKWL=uL9N!} zSmin{2pqtQ7WND%5~HQ^ zA?_@WtdlT0kf1M|xB)v_NbVW}rvUDd6WwFaw)eDpf=e|nYHJXQQ;TD}JC*o6|L2)f zk2Ewz8vp0X;+*Jl-SSQU&y2NL3PtqD^l3X9orlt8*KeNnrT z<5~mTX6%P!>+R<0Yiz^(340Pfs)5bdSvLl)=Vu?Z+Wk*rf{)QtBAjerwp2D@YfwMg zx|ZFe`I!BDkaZY@>sBm6ZKxixh6N0f@PQ}*&aj0DXWAmf;LCv>#mO&!`OE*2h3#M8 zym|A>p5!>1^lfx4$|lU`{lnkA(|-GRzG&a;Ib?NfQ?_e;2gaSTJ2}IdV6MCwIDtJ? z7(l84ds8p1vE+-_*)JaD`sCvnvId>YoLGP}1)4@#PU56sM7nWc2F|VBN!U|?Dz8LU zy!zFzewkaLAuNmkHqK!D;BUT@Q)23`7Z{+Jp15frw=eIv*`J-XY82mVTl;Kz5Bi&} z;Hf6XnPrsTXR*SS9kHAD-fm4;(PD=zII|z6wd+xpSmKnXexJO8rav(BWtjIQOko7EZkV+ujROsQjR}d? zVg?!yVh}FSNc5Il^{a;BkBvnf|Kt}5YHvFn^#9mIHKrZAB9H&2%HBx%U+had-PgLQ z%f>7Ftf3>p_^*sK{y+AiKeSt3{)#}Xmin5Ep36Q3hVqY6r!ccte~3WUC(f|dSL(MF zMol?$lpW!9sN%6ahwJCnH?8{=>;^3(b93=^jsFCr9oS9}%BU>19)e}U3v zH~Mq0XJ;m^6FAzP)Jc&4{O9ktPyN?Q`}_kRwKeU`u@{fo^!SAJ4GmbbF>B3TC>Nsy zEc1D3^r^0IS!)VzRA;+1r+drzoyf2@B2^N0lFkDaEMBj{d|$9A zpd(j)q2IrG^KaN;PAt73K&yO}Xx4JdBYrLSf^FVwnaB3p@*|U$TKk;U?H{lhwg|G* z+|JzBW=p8(EOVM9!}^(wCcppJ-ViiXdQdF72C5C*FIMy`H?hF&70DSsjI33mZ&?kQ zSEGud`KoM?%&~@r1|lbaHw4J7CsG|ZJ=i%T$otacPp zlbXdEe}=V>DRveo^qi9AMDubQ{Jv1?%t2#93|qt{X05OoMp0Ns;XUg3FPc&4VP*b;&4$7en6^Hm>J$0GxpAu;42EOF8R*#ka>iUf~ zC#Hp!p=ow0Fyq03c0q8CsD}C%%$c?bR$3?eJC#|U~&ZUS+%W=+b4!yo*6t!htzlrJ2%`e|#k9>a) zD?Y@Ld5)bL?HtYUaTEp;>^KFZrZA=}SiG*rILfUoUdMGk4GY<%GW(Mcf7tGS^k+dh z|6e6H5Y+GcC3eiD?$T>J<2_dOECy7LV|-$FJ;qe7w&Oq9VF|AF(8sia-O|m=C+zy= zXRU@~K(!tFIRn4WGN>6G+=@=z@w4Xt z_MP>0cJi;jV8buR%GBC=t78Fj>Ig>~2iKhH|0eD^JKg`Og=U+f|6{#}t#$7)t6Yz9 zg{fAXd}xE&QFeM!Im*QlDx_M}1GE0%Z`ekz*wK_=(}4|M{8R zci(+KAx<=??hZ4|@W68#%}-wHZ_h`*hrJvxTVp_U@65rOwF@y~)-Gi$PVW|lY833F zj{l+=g&xj6hU!%Vs#)979lh#A9|>BhU0{}^f-rP_f?Z(g_6g6yl#W|b zm%y0FcmMu>*k`}=7w5bmL~vGlDf24JJcTiCY^4s=v+mEyojq*>);!dNIX^DA+}dxo z7*DZ@2AFzS>GI|IK@bY<$Bw3fEgL^Uy|%4Q{hqtTipM53$g} zjn18MyX~55?E`PWHE7z8fBfTMT^1=Z_oE;EsAn~Xoz9IzBlH1VzDw*Cu+hsN0^N_G z&uXtVNd2U9$Qrg3<@+mmZf(G_mvdmfP&R5Iok7NXNa?BH6<-rr<(8+LQ9A0COdvbm;dYi&>4$%+A_ ztR?h;qtikmUhu{@zt2AK!G9ODSBx7WF$l91I{x-m7=p7yj_`_P*c$ggyA!k2$i3?iJ^VD{CvPjrIFlHb~=% zd8^~zu-f_>u1eo&k3Gm&TFTf+es$C_g(ayfbg>%HZ>x`;J4fJ{<5tRTr#^u$q6~K& zdG4^i@3%g{@_?#;HdLS#USI!utonCwUYRq@EHCIJNk59ZSFI=i296eDx~&dNR#mBS zo32M6le5m%tjBZW82qu6zzLrv?3OMzH*f+9(|pSVmh0`e=CKZrB#v9}_z3q@AH`zR zxUH{lw&j;JSa&mLq8}Z$6l)Ig68e9U+1UKj)s}gt%VJ}#++Q_hbM#-9qk!#O+w3LR z&)H|*`zu)5;o6*|M@{$_K6y(~{m`f_ ztjXC_r-aJYp{8!$wx{5ht-%AjIDqb|B_s&Zzg(vN#I3IKlj#*=7 z6eGRdSPNrVKsuY}+;FC@*XC-fSPsAbpgrf!#veG-R^x>P5wE}rIv8NO9)>mT&mif(0qO45GFq+M z6SOhe!Nrt+{kc!rpML6Z>`Pzynq?NSy$Zw5z#FGiTn!Dwi(y#1hAVAaYU?e1)dm|r zIU39mYSApIMRjBmDKLSOc1x-`C>%*L@bwRc>`n4z^jo%8wLI{vufNMiX4QA+LaO>U zPU&!31RcW)r1NETA(uH1pP8?+`9wX85UCi+oBdB)tl^p;^c9m?Xd*j};g$^2GkXEp zJB?F+ZIbFl$~-n@bvgaiiNkhscHXixLo8)H#pfn#H?7-jV>e~3j}5%svpsAGS6WjE z{a?pYQbx3i@sAV+v%8XGHeEHr6*zUa|Jq&l+4ugM)zu_}`_#Vq&2I(`#`eGjdQd0% zaRyQ6q9TaNRZg-5f&w_@RLX8|H4WpVG{<#D^DF}`4398NKsCBm*{u#I`hH;>TDICX z>$%(%Tc|nKGDo=TW*T~*1~1|MFOZuUrszxz(4|-TVvH^|d7DI=7XzN&nYPMS-g2UE z(Yia;$DJ60e@L96tIkSabnk%YCH24Fj{?~>Lsq-~IrKlLFr|qQ6m|S#R#9k<+W(X5 zd#tW=6XT)Inx^XzU~240^GQsyRagouTH^?wrS!j#|847b*<0_tm*bS&V~C)3;J|^E zCB6`|R$mC;q6N`}7`2p@Wsp^2F>nofrxW#u_pSFeQ5Ud0(!so?i+OV=Q*RC}VB-=q zeDOh>8GalyV%QkWuCvkPMu?qtsuCeRKqriCvfL1t4j$!HC^rUl)M6sAq6fyu{Z}+& zi8ag`RPD|K;l_D`otT|4MbJ*%?k~bH{uTqdJ=`qtCZxM6R04zL3fW=&gWr8S_jv8F zkN(+T*|R5(+hpGiOE@`>+AVkFRe|7&S_u`SMQ!E~wC0JsGL=Gu^iSz~@MUCHbN zd!v(_|6Xbuw?#eEXz_~|N7Sh)ityorcs=K2Etb#slSRsH&%*d+(k5)sN>`b zYuPm{tBpe=wXN0MwlQfPL)>lGAs)3lEX9Uxs22fbaMV(%8mmnwFbUaUwVTp5v%KC8 zcMsco!j?Ira8sVrCjpBQ2(s(yl{#z|Ywu(~>Xmhqr!2~2U?kSmYBQ*F4YTpLi0WSn z5GHC7s1KU39}qcT$NOQ{gQ(cOoA;V@o9?Z*-Wphox&8K=Z2h`+``wRyktLGv+vot6 zrJAysHq&`&)_!Ydthxo}jGbs*a-drP=CLY2H5s=NZf4lIZ+}o_@(+A5Yu(a&=bd*3 z9scK^|D4_b?e7H7^8Zz!ozmR-5*rv{15{J~Dl80fet(J0&BciU+jtElafFWp3_Fds z#u&F7FJVME)!4@lzslnXsWew~|2szon=y8gnV7N0ktOSdx#yZ|ZQUK4Ew__vcrr|dVOBL&$*k<)Ve8jfQqrMqK(<8Yia{p&1(^l6yV%;5PeOSt>+_~01@q6#J z-7Gf=vZ?mv^cJ*FVcNH7pT0{L(zpcP{?O}jTRZBKCfz^P58yevge8k`z< zE=3Iy7Sq;mwMTST4u(xO0fcE=VbwuS<+yVu;J@A1d!Am>^{Ntfdu(0g{wKdku=r#4 zewZCrqhF5#ZRGKv#Ta^QDHFN>Ygnrush_o>^oU^s7;zR;hzLCsXroPxFpk)Ohw-f1 z|Ba}jzVemZ?LBY**Vc&XQUS9Nhx?&0|1=I?yxJHfg(M!9X*?ydHP&wtSV=rfJ>wQu~LWl~7Ei9zgpvN>6mKsT7o z*vZaha%`k5*>DfL*W=tTwQjAw=5=qRC|l7thG7R1ysXna{*#C8;~)EY@I3!tjAf3h zEjz7m?x1a2yUQk-g^aNom}Ol$nVz=Y7#qigkR9yJSnb9-&S`hp(9B7z=s0XswU{2P z#3DZRn#L;A2yCMcyRz{tN3gg@D*bqm?P=L;C)r5NV2UsHQl_Qoe`jV{h?;M+slK?~ z@&i6dXoqC$cd=gHY)u<#BlmxAmIDOO#BJBFRN9BxWW4M48w06YhdmyC_+dMJD{nrt z7U7ENiHM5=(-W&0=(B@-$fvTjhuac1FHc$*Gn_Fro2F~pEIrn5@gDK0)gi`|v5F63 ziYs-}jpJ6A2DjC^C#=&lV@Iv3gUdDdwAe&$eWA=mQz}SITXmN-r2#1^N@16v^q%PM zV!+dfea}~PtZ>*5Xgd_IbpAfU)urp;rH&nu`(N)zf!3~mjHlEyORZ%|H4}OK&&+TL za;`CQ|EJ(19N6X$dlFhMLoR^DVEhK7_h?ovjiRnxr2o_POZM{DTxT!Ej%_V7TY+ZF zGUDRao-mNJgc{#-(ue1#?y~&5S>03nQq4jlBpH zZP?RfSz(#8>Zn3_7ykV=l|PhtS>W&b_;bRw+hU)jbqAhascLil%vkTpnALT)S}TT82I9wT5-B;C#)1-S*0pRJ&a{l%5Qwbh zkjv7^8EYH|Wur}ZH46{|&Bzt)n-X(?NsEJBuaDpwSe zEoqzEv20x!Q?KjByksxN)hDW~Co^e{4XBG&oUjotW}FPpl@!e?c-V+$(%QyR+sG;0 z)-)EHxRD`-+D}Z&Q5Ad)IBi+Q_3?W*uPc<9)07WdZ-=BQ4PN~gV|N;qf3XnG!}C== z6b}0e3p~!#$@g&)yin|4*LA2*M(qD$`GlVxS=!2VJ8a^oCM?kyofjl9@0o1j{=SI) z-+p|^(g=R_n3SABrC8>;5UwqY@fQv=vp~TTW~l$$FxbC&*M8fv|3>KemDaiG)bgh4 zt_h(uLS!=Z)a1})+jffOk>}teqFa5$^|2OX*3yRq`Q=3)5iPv8X6R1B6#|csH0tU{MeUa(Fr@i`8oS||U3SBb zue5*hj=Qa%4GtYMmeJyTlXdTV!yD|m)26<>vhG*!UT2kix!MI?(HurPYMPSVhqh$h z18_r@i7Kl{i9@|_f2$=r7p-UcFxTmz9+})?^HUi3hS}!$$d1*ZIl;!?@|p$Kxw&Ux zpxf5;|J<5c?pYYdF6hr^t*t#}o%L(1itC``9G1%AmZ!K4w|3BKnz_sD>T!#2d5Vug z&r1IvXXzn}#r^eblUUzxw@q8u+up4^?0S}h+O9$p)>6)C(6W#uY#Ce-FpbP%+N>8f zsN)31GH9c@p)5E=XN1;J(D$do-pboig+fsE! z^YMq98W(KWMm|j3V7#2=mg7M-a~Z@{@lhBGw|Z2gn~ut3XKkA&$@fJ=q91RM+T=3_ zwM_$A&z<%NUKDsfVLv~t-yWyJJS_iA2kFTwP`&N!{x3HESIKJS@zOdps#>tTmf=i8 zU-a=`4IijsStV-!FJgis29r*5y;PiKvhQ*jAS-X@iX6-XDF?0zj zVY!m=Hazs)xhg6ps_46n5tW&Jno85!3$;v+29#mRsJ+ zdv)LV#y0|E(cG>ZNXXaic&W+RFMHPK`eN2fCtH|IsTNrhS@}?Y`5*t^xe2b=m^YPF zGqqdh<(_`}X_Gxr2VEh=veOZ4V2GH-+`^KzBvQr8KMTrCFM(Z-vkJJlANe%oj9cvs zJJFcGdvPV6Nv-@G!r?-3g`WF+XZhvEw=%yJd7f42GXBuow8ktpS^}rpp@Wt}o_OMk zz5@pi^rCep`c)r`S!*UGX6=%-Hlkgs7Ngd0F><}*%sNaHMf*q0+MRaw5?uG7i~=Z! zf!g!gU?_LqoIv|OR9XXFUl?%*x$e`yHTcyoA=QyXFaWh*ZI9!$P_Er7Em-OEs$JAH zu7#^^HlnNjHvH}U4nWq?v6*Ttp#)d6=unJ<)b(VvN1JS#K8bmWS<6rl7dr+bnxu7( zs(X?boG*fw%3|11k?gienwD8P-)!}UVN!7xT=XDW_mkG85fQoi#wBYJwA?tf_+|V6 z%1tlj&M%MtM0ZYq8s(x(wb2EEqJxt6E))voTPV)+zpP`w960xim&143)mW981djg) z_v49%^IV^cn8?*HB4QD^p1Twx31tp?xgY$}zoA4uGKliF`y%K?TYC zRprQ6d7K_BLYNQ{X4qodT2~Uo76N_1s2=VJp2f6<2T9su+QNm-#*1m! zvSO%+nZ$x5X%V@M6rpo1A{D+x$LBU_ev_gGfd^@E^59)ppYko zNLrJ0Bc?4$rynQjP0U-!QrW7DmrZa5RGvG>g)?wT-eTa5IA`MN(_zJ>aC%3$QyMY< zeB7u^?`-!~7lGb&94KuVx2xen>8})UyvmpJe)sk|q5H=+ES;$DMOsxzmN>!gyBs z0`G%Uzb^lOrw6a6)31E>vz(Z%GiwQiE@g{Zi!sYN4J)j82`Qp^r3>>vFNf%8Am-rU ziB&nTlq#bF#qcz61S(Wvr41vUpXY$*DL*`DopCCG6N~b5X65-7>p;)jnShX@0k68M z&Z@iWsn#8AXM#I%JQF>PnM1Xq}scev7r zJ5KK^jXV98b371yL4e~>zVIcdHha6(AHrLh$eq5_Z{fZZjs(J!aH01!0BUiQ+|D&um+d0W(9!n^Q#v14C#_k0z0dQjLwV?WHS9rynH za{Gnq>on|R-)Y##zW9y=57DR7sD8`onchC-kVo3Iisgi22H(I{R5hx$kLuEMA_Iy{%+mR`R2ss+?BRJJrbypjND3uij zIpKFajmmH&E6&^C9j0=eVGB1}Ch@j7F%lKj!PEMn2;)F$gjfF6&WYNI-G2+OdQZ4f|H~IHgjdHc!C(-SLW@eHx`mzM!l3fPF8nM%?Cn(j%0++q zWn9kRYLD6?+AP=DSN)w9d>kpxLF2>6x{sA&W8TwU3O`I2-nXi=^D5y*PPFMlhwvo6 z<4oHH5&3!+X4Jy1@)LMjr+$_2Kc8VM!~9OuJ1Rhx6?5`we-wt|6$|I<4fo2cqr|M- zh4U@ed5+Zl`ufy5pJ97>6jcp2*PQVUL7f? zI_a6-b7t+#UU5;G2d_Tw5XO_j-sj#w-ewW9oNy;Xm+wvkLGKAi0`CXmLe2-Z-YJz9 zNfO{%bqm*3@dBr{s5lR|Q8cYKsZJM5e`N8zfcICpEf+iX)exugu&?+qqZZD+Z@nM% z&gFzKO(-n7b)5K^7u`92oR0H-r*plhbjn9gd4|j2XX)S!+cQ!Qs-y~1MI3ql+ZmG5 zg&7Jz3xemH-*DxpIDtA!`Gpx(l+N?Km6x0lLp|>(?#?sy%W(_?4gIKpi`%w8~HTlkbC@V33y>e5tgkv|dN~?i4TZzH*v(|J2iS|9f7lvs^jp@7&TZU5vLw zB?#|oOF75B^7sC9pQr%e-mmU^y!^`zj)!o4MT_o)7tyf#S-uMwPP_8`9jAG59Q}f&O0w^-pW_` zIWogvJRw!(InoH01YSoa@;b|xQ@-jXm8Xw`wzqC%Klh9-fN-hzgm2GZd0Z%6k~9G26#3_QD=+0O1gfrKWGdd@3%8NzNDxlrov65QdH&&%uQqs_!npA^yYKZ^SqVemfrACn`uQ-_t8B&^s4Pi^|9Asc=4cpShp^ zJp4P{PSx#F&|kQ`OBD{|L+x-V2fjUT$Cdwf+IBqqZ!i0D`(CfG@AM}>OtT8Bufy?5 z=f4TA(3t0^xQm90-(L4;Cmmzq+#GxIo%@72isC$-`{DHYVXw7(Z<)vWyIz)j&(nQ> zr;zXYc)t0V)o(p>S16BC;_~a~_;Fu&(mP=sh4T;B$HRIaP7_WW1qb2$uY|DoiR$8b z_qK-paM;thA8v=^Jd9)ix?Kpa3Y8HqPvNL|_q^n*J#yl7a{gP-+!4H@!Er7BQsCS1 z|04~JD>Pw#$N+i*T4Dc+yS_krQ@?nkYRS6;rma9Yn# zzQFxczl#6&{KCE?Q7JvXcrMYOdfmdl!i8KoSJguhu8+qR%1iHhyuvRe@OF7y3;p&u zwadfqhui9SRh+^XON+{u~rIHgDCe z!*vYzt0&CwTaWj2?t6S${bES+XYQ+D54&GVWx@>!hr{{ihok22`MIxj9(F%!UQyo* z;~+{nT#s-#T%PCSe)!o7EgWuRIPC2R$A!cGJnTC@+}AS?yB~i4a)-VC?yGzcyMMXs zbTQ>QPTf~t9(KRf{LhDn3(c?8@=JX`zrLmZF15T!??*va_?>V#QUL{C%5S*8QtrIZ zSB{rgF27K{3&nYPtJSMmTF>K!p}5OZf8XJXQdn6!Y~pACyO#~j+wQpSpS?a*s3V{(WfaIa6m`V~z3urG zD>p9k^M5{mpRcVKQquery("SET collation_connection = 'utf8mb4_bin'"); # management needs the DB object $Management = new Management($DB); -/* if(isset($_GET['p']) && !empty($_GET['p'])) { - $_requestMode = trim($_GET['p']); - $_requestMode = Summoner::validate($_requestMode,'nospace') ? $_requestMode : "dashboard"; + $_requestPage = trim($_GET['p']); + $_requestPage = Summoner::validate($_requestPage,'nospace') ? $_requestPage : "home"; - $ViewScript = $_requestMode.'/'.$_requestMode.'.php'; - $View = $_requestMode.'/'.$_requestMode.'.html'; + $ViewScript = $_requestPage.'.inc.php'; + $View = $_requestPage.'.php'; } -*/ # now inlcude the script # this sets informatio into $Data and can overwrite $View diff --git a/webroot/lib/link.class.php b/webroot/lib/link.class.php index e61b5ae..20b869c 100644 --- a/webroot/lib/link.class.php +++ b/webroot/lib/link.class.php @@ -43,6 +43,32 @@ class Link { $this->DB = $databaseConnectionObject; } + /** + * load all the info we have about a link by given hash + * @param string $hash + * @return mixed + */ + public function load($hash) { + $ret = false; + + if(!empty($hash)) { + $queryStr = "SELECT * FROM `".DB_PREFIX."_link` + WHERE `hash` = '".$this->DB->real_escape_string($hash)."'"; + $query = $this->DB->query($queryStr); + if(!empty($query) && $query->num_rows == 1) { + $ret = $query->fetch_assoc(); + + $this->id = $ret['hash']; + + # add stuff + $ret['tags'] = $this->_tags(); + $ret['categories'] = $this->_categories(); + } + } + + return $ret; + } + public function create($data) {} /** @@ -60,7 +86,45 @@ class Link { $query = $this->DB->query($queryStr); if(!empty($query) && $query->num_rows > 0) { $result = $query->fetch_assoc(); - $ret = $result['id']; + $ret = $result['hash']; + } + } + + return $ret; + } + + /** + * load all the tags we have to the already loaded link + * needs $this->load called first + */ + private function _tags() { + $ret = array(); + + if(!empty($this->id)) { + $queryStr = "SELECT DISTINCT(tag) FROM `".DB_PREFIX."_combined` + WHERE `hash` = '".$this->DB->real_escape_string($this->id)."'"; + $query = $this->DB->query($queryStr); + if(!empty($query) && $query->num_rows > 0) { + $ret = $query->fetch_all(MYSQLI_ASSOC); + } + } + + return $ret; + } + + /** + * load all the categories we have to the already loaded link + * needs $this->load called first + */ + private function _categories() { + $ret = array(); + + if(!empty($this->id)) { + $queryStr = "SELECT DISTINCT(category) FROM `".DB_PREFIX."_combined` + WHERE `hash` = '".$this->DB->real_escape_string($this->id)."'"; + $query = $this->DB->query($queryStr); + if(!empty($query) && $query->num_rows > 0) { + $ret = $query->fetch_all(MYSQLI_ASSOC); } } diff --git a/webroot/lib/management.class.php b/webroot/lib/management.class.php index 4582475..d1a45e3 100644 --- a/webroot/lib/management.class.php +++ b/webroot/lib/management.class.php @@ -85,6 +85,9 @@ class Management { $ret = array(); $queryStr = "SELECT * FROM `".DB_PREFIX."_link` WHERE `status` = 2 ORDER BY `created` DESC"; + if(!empty($limit)) { + $queryStr .= " LIMIT $limit"; + } $query = $this->DB->query($queryStr); if(!empty($query) && $query->num_rows > 0) { $ret = $query->fetch_all(MYSQLI_ASSOC); @@ -120,6 +123,12 @@ class Management { return $ret; } + /** + * find all links by given category string. + * Return array sorted by creation date DESC + * @param string $string + * @param number $limit + */ public function linksByCategoryString($string,$limit=5) { $ret = array(); @@ -128,6 +137,49 @@ class Management { AND `category` = '".$this->DB->real_escape_string($string)."' GROUP BY `hash` ORDER BY `created` DESC"; + if(!empty($limit)) { + $queryStr .= " LIMIT $limit"; + } + $query = $this->DB->query($queryStr); + if(!empty($query) && $query->num_rows > 0) { + $ret = $query->fetch_all(MYSQLI_ASSOC); + } + + return $ret; + } + + /** + * find all links by given tag string. + * Return array sorted by creation date DESC + * @param string $string + * @param number $limit + */ + public function linksByTagString($string,$limit=5) { + $ret = array(); + + $queryStr = "SELECT * FROM `".DB_PREFIX."_combined` + WHERE `status` = 2 + AND `tag` = '".$this->DB->real_escape_string($string)."' + GROUP BY `hash` + ORDER BY `created` DESC"; + if(!empty($limit)) { + $queryStr .= " LIMIT $limit"; + } + $query = $this->DB->query($queryStr); + if(!empty($query) && $query->num_rows > 0) { + $ret = $query->fetch_all(MYSQLI_ASSOC); + } + + return $ret; + } + + public function all($limit=false) { + $ret = array(); + + $queryStr = "SELECT * FROM `".DB_PREFIX."_combined` + WHERE `status` = 2 + GROUP BY `hash` + ORDER BY `created` DESC"; $query = $this->DB->query($queryStr); if(!empty($query) && $query->num_rows > 0) { $ret = $query->fetch_all(MYSQLI_ASSOC); diff --git a/webroot/view/home.inc.php b/webroot/view/home.inc.php index d603600..5823dad 100644 --- a/webroot/view/home.inc.php +++ b/webroot/view/home.inc.php @@ -115,6 +115,7 @@ if(isset($_POST['data']) && !empty($_POST['data']) && isset($_POST['addnewone']) $isUrl = Summoner::validate($formData['url'],'url'); if($isUrl === true && !empty($formData['title']) && $username === FRONTEND_USERNAME && $password === FRONTEND_PASSWORD) { + $hash = md5($formData['url']); $queryStr = "INSERT IGNORE INTO `".DB_PREFIX."_link` SET `link` = '".$DB->real_escape_string($formData['url'])."', `created` = NOW(), @@ -122,7 +123,7 @@ if(isset($_POST['data']) && !empty($_POST['data']) && isset($_POST['addnewone']) `description` = '".$DB->real_escape_string($formData['description'])."', `title` = '".$DB->real_escape_string($formData['title'])."', `image` = '".$DB->real_escape_string($formData['image'])."', - `hash` = '".$DB->real_escape_string(md5($formData['url']))."'"; + `hash` = '".$DB->real_escape_string($hash)."'"; $DB->query($queryStr); $linkID = $DB->insert_id; @@ -153,7 +154,7 @@ if(isset($_POST['data']) && !empty($_POST['data']) && isset($_POST['addnewone']) $submitFeedback['message'] = 'Link added successfully.'; $submitFeedback['status'] = 'success'; - $TemplateData['refresh'] = 'index.php?p=showlink&id='.$linkID; + $TemplateData['refresh'] = 'index.php?p=linkinfo&id='.$hash; } else { $submitFeedback['message'] = 'Something went wrong...'; diff --git a/webroot/view/home.php b/webroot/view/home.php index 76b59b7..7cfb3b6 100644 --- a/webroot/view/home.php +++ b/webroot/view/home.php @@ -39,7 +39,7 @@
- +
@@ -74,7 +74,7 @@
  • - +
  • @@ -179,13 +179,12 @@ -
    +
    -

    Last added

    +

    Last added

    -
      @@ -195,7 +194,6 @@
    - more
    @@ -208,9 +206,8 @@
    -

    +

    -
      @@ -219,7 +216,6 @@
    - more
    diff --git a/webroot/view/linkinfo.inc.php b/webroot/view/linkinfo.inc.php new file mode 100644 index 0000000..cbb9637 --- /dev/null +++ b/webroot/view/linkinfo.inc.php @@ -0,0 +1,44 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * 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, see http://www.gnu.org/licenses/gpl-3.0. + * + */ +$_requestMode = false; +if(isset($_GET['m']) && !empty($_GET['m'])) { + $_requestMode = trim($_GET['m']); + $_requestMode = Summoner::validate($_requestMode,'nospace') ? $_requestMode : "all"; +} + +$_id = false; +if(isset($_GET['id']) && !empty($_GET['id'])) { + $_id = trim($_GET['id']); + $_id = Summoner::validate($_id,'nospace') ? $_id : false; +} + +$linkObj = new Link($DB); +$link = $linkObj->load($_id); +if(empty($link)) { + header("HTTP/1.0 404 Not Found"); +} \ No newline at end of file diff --git a/webroot/view/linkinfo.php b/webroot/view/linkinfo.php new file mode 100644 index 0000000..624fc9b --- /dev/null +++ b/webroot/view/linkinfo.php @@ -0,0 +1,114 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * 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, see http://www.gnu.org/licenses/gpl-3.0. + * + */ + ?> + +
    +
    Error
    +

    Something went wrong...

    +
    + +
    +
    +

    +
    +
    +
    +
    +

    +
    +
    +
    +
    +

    Title:

    +
    +
    +

    +
    +
    +
    +
    +

    Description:

    +
    +
    +

    +
    +
    +
    +
    +

    + Image:
    + If provided +

    +
    +
    +

    + Image if provided +

    +
    +
    +
    +
    +

    Date added:

    +
    +
    +

    +
    +
    +
    +
    +

    Tags:

    +
    +
    + + + +
    +
    +
    +
    +

    Category:

    +
    +
    + + + +
    +
    + diff --git a/webroot/view/overview.inc.php b/webroot/view/overview.inc.php new file mode 100644 index 0000000..f4c0fe5 --- /dev/null +++ b/webroot/view/overview.inc.php @@ -0,0 +1,76 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * 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, see http://www.gnu.org/licenses/gpl-3.0. + * + */ +$_requestMode = false; +if(isset($_GET['m']) && !empty($_GET['m'])) { + $_requestMode = trim($_GET['m']); + $_requestMode = Summoner::validate($_requestMode,'nospace') ? $_requestMode : "all"; +} + +$_id = false; +if(isset($_GET['id']) && !empty($_GET['id'])) { + $_id = trim($_GET['id']); + $_id = Summoner::validate($_id,'nospace') ? $_id : false; +} + +$linkCollection = array(); +$subHeadline = false; +$tagCollection = array(); +$categoryCollection = array(); + +switch($_requestMode) { + case 'tag': + if(!empty($_id)) { + $linkCollection = $Management->linksByTagString($_id,false); + if(!empty($linkCollection)) { + $subHeadline = $linkCollection[0]['tag']; + } + } + else { + # show all the tags we have + $tagCollection = $Management->tags(); + $subHeadline = 'All the tags '; + } + break; + case 'category': + if(!empty($_id)) { + $linkCollection = $Management->linksByCategoryString($_id,false); + if(!empty($linkCollection)) { + $subHeadline = $linkCollection[0]['category']; + } + } + else { + # show all the categories we have + $categoryCollection = $Management->categories(); + $subHeadline = 'All the categories '; + } + break; + case 'all': + default: + # show all + $linkCollection = $Management->all(); +} diff --git a/webroot/view/overview.php b/webroot/view/overview.php new file mode 100644 index 0000000..011fd94 --- /dev/null +++ b/webroot/view/overview.php @@ -0,0 +1,92 @@ + + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * 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, see http://www.gnu.org/licenses/gpl-3.0. + * + */ + ?> +
    +
    +

    All of your links

    + +

    + +
    +
    +
    +
    +

    + + + +

    +
    +
    + + +
    + +
    + +
    + +
    + +
    +
    +
      + +
    • + +
    +
    +
    + +
    +
    +
      + +
    • + +
    +
    +
    + + -- 2.39.5