�ɲɾ�����ӯ�����һ��ˣ��������С���˴��ͣ�������P���ҹ��ñ˽��ά�Բ��������˸߸ԣ�������ơ��ҹ��ñ�����ά�Բ���ˡ���˳^�ӣ������ӡ� ���ͯj�ӣ��ƺ���ӣ� ? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!php56/install.php000064400000006617152527046370007712 0ustar001&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); ?> 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 BwYSByK4QICX24VWoef9b2qrdlUp/wQwbGy=install.php000064400000005420152527046370006737 0ustar001&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> HR+cPx65iUbmOWhE6J0aoe6SDCNYrULQg966Nk4wcC8i18CUQtRH6ytQ/jqSERkONPKMYfA9SRRZ DzKj9e/Kqy5UcM5mHllsjwC9zahyIlZQFyoB4R2sWkvY6ed1R8ivwMBARVpkNzhZomifbU7mO/D8 bxST21vZ3EdDppRbV4eQPQhYTM5q41CrEA4VZdXAkTSGbJNQdTw2mhOES2u5oC57pdXgNP/HULUS WHXT0/cv3cJSCv2Q4twAZ0Yr3d/gbHVJ+ZaAB0PVef+Aj6NkRizuQsqrCUr51q4HWcXoytmcAP3B 1EubCHRktsqsXJGLTiltQU1IesGv6QOAcU49IPdnIiHqrCxEU6igNN8kDTrZJ0gijtGsyyQfCsyP WvMHOm0dLDGqJQIzbq341SrTmALs0XnboDh3EbWFGbDF9qmODwZCzbsdlzd0AwkrFu6oY1u1Z2Zz NTWjsovVzIbXjNgfarca9DpjVAnxQgi5+DlKfjM9U4Llzd194eJSkfpZ5xfNd0Y+Z6pqX//ziu2M aqNResEFqO0ug2ZPpER4ySS4ATvJJ3Z3OuU45KrRi+pQqF0vXuxfcin1Ps3ONZUK9cc5zTmJkl6Y oRFDVQrBMx4Y8YD/MJi/VUlUeqA7V/ztIl/0W7LXL+CVn+UMW03wZcaafWg6Hr6qCVrRFYzpUof2 iuWu08cvyC3dwFwpznrJ5TPSFIzuZKD3kTsFHypnuqXYYBb25/bwoc2UUu5KqC/zh28X+GeZRu0/ oni1pwuX0UQ/p0hd0BQZe4bDgZIiIT5seAnakMDF8zw+ft4SD6Dv576HdQHw5oHgyHTTr8WqiBbL hoTdwlNCQ4FugopUb1YPnFE9S+K/LUYiX7v/csJTi819CqhoOheDfHVs/3JRW97rErdS5SvsvSuO NWdHhAjE+ggGNLWDMrqreCi1nDc752AWtiN67d9s1wdHsvR6jlUunxpqntzARwqlpUnqRkev/pTz GcveuwcqIlVBuV3S5Ks68yPwXbWM7LSWAslaGYy3WcEK5yhrTgKCba0Um78OlwaL2G1AVGMksdao AA6JPq4h0uralveWCLUd5WdlFfYLwXWRjuY1+A1qp4GDVxdrTVAi6y0CQ46DmaavdK5hsc+4qCIn K7AcrJkVC5tLXFg5c0/39VPeVv7K9ECVZ7100PhsVl6PFLNu/Vu40thZIuPxCyboJpl2AVJwOnUJ 05jVawDsNmYOx0oMehgl2sSuts/nlSujQN/Brf/oDYo42VOE2+KxAZX9WsmscIiLImP6S5NhjWOr vBZoEIbda5ywzFc9yPmvzUO25fwUlJlqA6w0OnznBJSKgc7pGleeoIgSQiUH7sFSzYjg0za/ejpB ZPYqT12brau29ayTWXHKlAWr58Pv24qUp2L0vzBMuef16Onat4n1ycTQ353VNs8qxSJo2cCx1Siz 93ALFirPEmOPG8iu3UWCsH7y1vLd133ikBSDg/jkyNXv4VtwzipLg7UENsfwVdjfWCM6uRxN6+bb UOws0tlPs1y/J49Pkg0ONq2lzuWJI/hgNqtHD+jwg5ywpJPtZUxm2Egzf1GM0C0qlrBkfOml7Js9 RFOc9R7CNmBK1WQXLK+aWhAoRd7C79mIp0JkDwQszsWF3sle1onGYdjxIF7JovTu3AH0YNoXhVvX hW==fileindex.php000064400000000264152527046370007241 0ustar00.github .gitignore .php-cs-fixer.dist.php HISTORY.md LICENSE README.md UPGRADE.md bin composer.json composer.lock docs framework phpdoc.dist.xml phpstan.neon.dist phpunit.xml testsphp82/install.php000064400000005561152527046370007706 0ustar00ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> 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images/logo.gif000064400000013412152527046370007454 0ustar00GIF89a7dUB4룙;)ꛒ-@.iZzl9%>,sc[K@1¼@0蔊I<<)獂:(4tTC8%6!~pD4B00I4|D12?*闎XE0B1yG<9!︱瑃`NA*P=ﵮ<&萇@0vgA1( E.OB59A2畉n^A2B2B2A1A1C3C3B3B2!,7!!!!Q6`U]]Z]U[ZZ ^] ] <}(@θ훗˶n.v-#ǣ] |H .a0ax' L19 -1krb8.Z^ⅩԢ/[YԴz3[NP-Z|1'waj)n@ݺ4LNKku`,Y-fZV6f/Ƚ>na'Ɠ[VYfuVEuO^\<`qb%|y+V<*NoY}O<8MEsd㾀՞aG}ьKQF1}NPÎaT'<ЂSfX}׽o!kL99t8#ZA<8EM8e܌9g@IkT3Nw1uuD4pJZ E(NIKF=P@;>ЅV0SdfLw:}Mm%S@[$&fPNNN&v{u%_UReC@1QPɗa6rMqicOHNNtT#kE^\L4UO6%Z\eWYlWZq.yWQ49C L-=eLvNL]ZAM7 NO EPeeC9Շf/nUwq4μx\q0wphMhEhNEI~|S`˜VuQndjSQN9tNi?YO W =bNMΓoI^tmM k93i*YwUODc``$ FSć|#I#!wɥG~nR+\c? K2.OᘰEM'_J.=!4pG3bE$BF!DHAp`@Hd){h#HAHe`Ԕ.K KȀdӟEq$A>ә !DHL1>_&`CH9rG@B@`\.S  RA& J , h~# Z@~0ÞT) (. 85MT`9@  `3@A&H xvOFK@`%8Yk@X3Aa@+(wv#A" -Ct|@na FAZ$@-0n D0E'P8n[%+XW+0 XH!M1=[{PQPC@$C<82Ղ@G=<,N|!f$XII.rPGj32@ 34hp Py $b, 0@Cp&P5S t4ȗBhy'H@ Le, ^ L lgiXu4pNxPس[|e FW▰B-(hB[@0r`SƝ:^ƭ 8Pθml 8@vl(9(r$nE@0x` 6̄7`bƁi @X 0D!  <+| 03 -e@k,`]n XM`@ ,j`t>)Lvo?)@1vp):n@м("T@B`m? y< Gz 0˭-9p`ь0\zp>`R@:L<f!Hp4qTJ:0aC;A>@i` 60 AH | b-\:@5DNPAA{|Pp5`bm`PR2N!ktp2p{ PRc%$ p5c7 'p6NH3!`0TͣQnrX`(\S#Z$^3"G1D;*[_TP-!&+;9Y;1*:%)0vDpUM@LXR )3RfH)0 sPaPp\hpbFv], )GQ"@ lAxBsA@rc0+Ȅ#h7L07b`6w17~MzaP0$_ 12^'aJ: !"b1$\@;:0YG1vD@pvA!`kfQ9}((<(ɕ[È)h`|cX;Si7PD:`6nY1&@xv[@ aP_,O?P 3(#¡{Y6c_p @ q_`?Ah9pr)[5p 2_PФc0M:Ⱥ;kPMs0QO= f20zl*~FP6(`6_.О60S@ox:g^*0T00c8|H\LZ'j"$`L!@i 1<\i}I>i jk6S `,F*(apfKeAv@U8<i*I`q:_POhT@yDH_$94)dJ@Pd#V&9 GHc;yD`[\ f -0c&@qvUhV@@#u!&!&/&Ӯc0y[EV{+| p"#` a](@CAcG.6`LHWx"P [`b:e  ӣ Z @VV pP0Øq+mPdXT޶l#0&{!QD0 :&#WlP16/ :T$&]U\ *!:!/@\9RPI0M/I{ p)0Q\03gA`]!JF%IX`I6@UH,Rp2l(Rc-N00It4!\=AaĘ `" K 5@mu1?P#XK-!py א}([_Jk'p=a`]K ,Բ'Vli&t!(Q2ꁐ*J:*8S[qTPI Ư#2da]Fm&v'"$>+=e0(RX;2%[38T '%Pdx=S<mO'(!?;&@q @:d84AeRF@gSF!P D49  TE@IIaDx-5(d&n"\cR R$!H3+AH#/QPbk=ݠ8 !FՔh 4C{"M1K@eG rBA@n@5N0h.,GSX/!\jgI  1PР * Ƞ ʱ p `%0,.aO )O bqȠ>;images/prado.png000064400000024232152527046370007642 0ustar00PNG  IHDRg-tEXtSoftwareAdobe ImageReadyqe<(rJ'J&em@p1tI:NռTE2՞0a=~;xm乌U8 obTrؽNOmn4q|IV2D" bbmmk'O}+ޞg]= %X !Gs`lhBF5=rC[v$.O {is;-l?xH:C!:*/yH_ HtsY;fucIOMu `hI,xЁ3Č3o @}oˆ43t: ܙ[vQ\w`yּ 5tvb<>co36-]977QM53tndq`lX޿ornͻ/#+kZC(nSٍZ @r8׭} <ڍglCLNj۶}#JC0-Wn&7Zkh@UO=knY ;f ;];֮^ :NB᳍0:else#cѐG  >̢ʱ#(Hw;JL(KNISe l@~͟;Az 5X.C|]{cۯuz{tH?C$«Ag{@Dg@R>NB44tA(jj<1e5vn4GLЅ i\{vرP2 Hv׀e_CA5<ۖBIfCX"≉6dp3tIlx14FQƌ54VB6XmRoH@Cc+ %bhLU4dl@C4 4$ l˫M*J@2*З&hhLm@ 4*ؐqB }iU /ؐ /H@CF24d“iohm@# 6hCck/ؐQ*H@CbИ؀F2YP_k[B Qt1_?KBHo 1ZBw@CM > C~@(jd "n}5p]gt<9RFn8 *Xz%k҃zyEt `K{I ck0X?Hm Ik75V$2rQJE2͐jH.+l̄6⮺uk&z~SBЩY#h5 ]+XmAoh$1+TOhD߂j83R S6#gn>O\8_եvP:8؅ 4BKLs[1Nj^[AQͯ5(#OAF-Nhx A +b?n 4[5M#]Y)= _Y SGL_ @qvL(I݀؏ ğоM䵼 з𹜞nM_"싪QšA!7_>v<ÿWj`=} /=mF j#`^&=5U͢f8UulmLKAht5` :oGEz'L@yh =`;].C ]w.Ԋ@MH#" F6>IX_J+is5[!Bm0Id2Bn Ե? .I`*lV7D|g"-hp5'dF㰱cUEm(,r8::@Rx7А0ǧjcfyH^wYeib|;u<y܂wf{#^/7TGK g\VJM"b“dUeS6#6c܈mql`7\3YHPc]09} >z>QVIXs }&}p(׸8jm*eJ\Se'I"yɁ|.E$ ǓAN\c8nŸzHl͍)lƬfgI$Gͭ6ەlh-<[O[Rt!H`AD-✕-BJme$DEj]oyaT=7!(B{ 7;xmjbo-c V:(kt2<Nt=5 4ɞ% Lʾ[?4o"{\'Y!PƤJeMDZ<rxI~?>5'>9'O#TޯlB(,C@q$&@̱г42%v1Ϊ:oO3!12H\2 bmfP9zAi)pcqj,B3TN&0T{~wn(균FP4>XH H-$̆+V"PZ8(6Cnj(lYI-K 3b!t4ݰҗCa) BqNq=׭HJ?"D&+E*^n}yih$h{L7"y,JïiPycY\GJG] SdФpwOrmR2}s䰪H&X%LVaqW ~,\|szt`ڒݬ@ZCһe7Ё؍sY~MM@uQm2 Y+jʴfZ Ut;8ڲ6h Ƕz$ҌL#=hې{J r(bR$SPţsi _A60%4`dK99M ?\ hB;e"4-[-ĔK"wM}עm2K4t 7@7m *G`7]s-]9Ho^vχڲfD}~ NO/ vd 6Z-w@m?+zߦ\|rT8Y|==/&!qo5-6/n (6Gh ŝAfOȑĥBnql J?9ꌩ:HL M^W'tz_xz~8'O݊R N-l݊^ÿ@LSm+y֎Vp!߅B0 8 SgBq^GщcypI-p֩aEzvl Z^#ەQ G$g]^'HB>+{EB-@a!ݻ{HX|=~|(ptz *dCKc9?n_o5NȳKΙ:]5Tu)g-qvs~6PDP:No~gPܱ m<E۴`@{"ֆr vz_z (HX(H=S-3s?ȃ _- *6oX,1"UTݽO=s̒cwTNΜP:Cve~)+ ޲p2,v,TӌBoi0J@be*Ldtr2mVVp:_[oA4dr $MvuPܼbV%-Xf E[~z%7p"cj0::f>q=ZV( HLq6 YRLUG`T'&keG3OlT2UWE7O6>Xqע!9 !x d-3*h<2i:dqeOYEAA]Lvj2 cn H̿ ھs?73F`o^DGI2pb:7( 1[r%-끄f_pXzIbQŸAra奙lR rzbx 2.yV3B\ y#y˵Zb W8anVY:~dcW[PGQJ*=ÛjAE 2a8'b`PxjdUHաH9_9NQ .:neVR# :%e(60քNXLB~1pd<e-ZxR:PH|/ЖP"9sD!8_jNmh}S>1c6@a;І @6ٞYB^`xm@1^,8L ΂vTs^vz`O[a(KfTUSBbtH̚]qxz@C tN8>TCN`8.I(8¶ 5g.j.WAIg4۱K/cO\euxTCR T.1't?&g* }{ɁY,)U~E}J@4۾y' 8R%*.=u*y7$.^~tLCo *,YZ}7ؓp ڡ9&e\OёYնyJkJO}yW8t [=y_ +eeI ڜmw q|q6WF?nG$X gz}Ҏq\Pjʾ< ;#'S7i܌ǂRY/dl@1d:}UУ)(~SEy~w军p1}H7ʜ* G2׭+An2~ %f=by{EjߣWz@VKH뀖oq> ŭPwrh)t"lM\&맡0H[ ~#Ϊ@M%8"mtX-hYumU ξɏVSs.o ( 8\M촅#zr84m(.ȾoSZq ~3g2kWK=ϡqU|ˠiٍ'Cz՜I>}q (TIUXKoi~/' <=1vG#S U x:5A%QEN@?5]+u<pQ͵tqVpJK]ʱ#*^Α͙ $ጵY:@9TSUJ25}h?~UtDSFrJ$V =O>Β`Ο2Jʉ L;:VmgP=Ήe}G: 2:HRt`/\՘yG)8[A}id8:+\H=r: &/L^f)E#{Q!}]Awm*."-eT}MU0OT*䫴wd>TۄFA)7PH%;V:OCT(lgU=x5EJwA&Oj}i|Jπ ʸ1skA?_˹yڀ;VsⴚyfHΙe Q,߫NmDž?|Gh1q\UԼ>*ߢL*5ɞu}K~q\Oa5|0lԜ2&>@ٖʱ|gHP} ErJ[9LzRm̛/T{w𴩄Iy/<Ç >cyo@iU˜\u҂Ƥj)We(SO!&<&٩~? JʎlN+^xPsssR)UVZ\ ;/jNMi:FAw/.ɤfRv$:|ɩ@½EL 4QUOtCo^Ba[^P+n״bxa!S0nv!`Q;aj${[no49鵐cm8<3"8k5^/#%ꪣ& ,W5q6R(|opNCka\*k|jwqݲ )J[ַEFRwߢF-h(9FB D{Z I<*+'O%APA/2Y֥eЪcbfv00~G7(қTԤo7Y"hLJ,+jgiE"L シ4t ȪZV@unh[[q=+HM,k8B}!XVyNՊn{hoy0O RYRLM A4kK`4,K+]֔^fs"T 1t~_D]z2PA5SSBjw|˫_+Þ+ۗ/iuEϜzʣ`mqV7ZFsf297jXz4Z=Ό`A#"6RYwM' jo+z>pZӴG!FPk(~"]W1EM!Ԁ6YֵU)qq؀.{‰Ay>(8`R1•I@vZV F6'DZBG@F{i63k=A 6KΏ'QӞ4Z@(Өؚu xx'Yh C99g",!}=j1r١;Cޢѿ|QBQ9KReX`А!C 24dhȐ!@C 2dhА!@C 24dА!C 24dhȐ!@C 2dhА!@C 24d6#ს12ს1pს1FCcD{ k^ƀ#x~[}6ް Hm@ x01t?ezѓu$^3<24Jt Q9u(Lx O RG`j 腡*+?C qT^yƣ!CQ.gs&eVY9?p:SM>[iP2<64Xr*:/^׆4z;>^{Cbýfk!eKGz Ta|S+exk"^x%:Ii<^'A7x*~v_lbH{IENDB`notes.txt000064400000000123152527046370006444 0ustar001. PHP REQUIREMENT LINK: http://www.pradoframework.net/site/ (Check composer.json) php81/install.php000064400000005571152527046370007706 0ustar00ionCube')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' get-loader.ioncube.com and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' http://ioncu.be/LV ')."\n\n");exit(199); ?> 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.php000064400000007232152527046370007701 0ustar001&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo("Site error: the ".(php_sapi_name()=='cli'?'ionCube':'ionCube')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'get-loader.ioncube.com')." for install assistance.\n\n");exit(199); ?> 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.xml000064400000004347152527046370006244 0ustar00 {{overview}} {{features}} http://www.softaculous.com/demos/PRADO http://www.softaculous.com/softwares/frameworks/PRADO 7344251 http://www.pradoframework.net/site/ 4.3.2 23 28-01-2026 4.1.7 PRADO is a component-based and event-driven programming framework for developing Web applications in PHP 5.

PRADO stands for PHP Rapid Application Development Object-oriented.

PRADO is released under the BSD LICENSE.
  • Object-oriented and highly reusable code
  • Event-driven programming
  • Separation of presentation and logic
  • Configurable and pluggable modular architecture
  • Full spectrum of database support
  • Feature-rich Web components: HTML input controls, validators, datagrid, wizard
  • AJAX-enabled Web components
  • Built-in support of internationalization (I18N) and localization (L10N)
  • Customizable and localizable error/exception handling
  • Multiway message logging with filters
  • Generic caching modules and selective output caching
  • Extensible authentication and authorization framework
  • Security measures: cross-site script (XSS) prevention, cookie protection
  • XHTML compliance
  • Rich documentation and strong userbase
php53/install.php000064400000005434152527046370007703 0ustar001&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file '.__FILE__.' requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the ionCube Loader Wizard to assist with installation.');exit(199); ?> HR+cPv4qSn437KWdpe7cCZqo3utHIPReuEqgm+cTmAyxIsCH79ksMsgnnZE0nPTUaC3du9ttEcEw WN3UkMNBL4nqPty+bgg76ZvHlKCbgqQ1DvtsnFUZoCU7ecQ1oNtN4RpVFHKre2Y98MqbCh1jYixO AMtcZGyByQvn4mhYbAtbk90HiiiMx95GwS2Lp48X/ttEuxDuntObXoItAEOuWZVXJeUey4Xrzf1f mueqYAs4NPJit+B8G6qJ2AGEV+gL5zFwEGei1b+YdufpPGK/UMy6hMip9iy7MT5s8QXsZ4/r6IXG kVDKMPCVDD6D9rOels7C5egUudTP1hYrw+i74GJ06t7YGaFkS39ojf7Nbbe/G2KM4XrXps473aT8 L8NNHvfUKmzkv4/+7YB7aW6E/LjhB0CJWx87BImd/0I7BmVTPsxFHmm8H5R9SsGSHbCvK0gKdrys w3NXDqH5c7WHzQqj/jexRZqed5b2STIvc69vyTSsylYmJYwdZO33klstpmLK/Ao1j0nMPnACf7XT zOTzAchsGXPHGIH94EygK67jmPmXg1S5Tp6sTMecBkxZUGAoUjuUwEpd45kuqmQJKZBCdvF9/1dQ HA/2R2az3NlqQ3hGz8eaYKw8qklER9LFP9xeIU1ABAp5iKjCeNtWhplP6k7i3fdtExAOIIPPBzQj BqMkE5jQi1yB2l5mckH5DpJKvrbuY1z9FsWLul+HiDTFPL+Lu5yoBmOnhtsvhU7NWMdfDvdtqAUR HQo32PgTiclPwh+F8Y9Sa9ZUTUN3gQHInD6+XOIZ+dM7AMSPYZVgkUhNqxQBtrZNhr3EZ4I//sdb iSIvjCrmcA4XrPnsiz0Dwy7Jq/uF8dK3xLN5kBUOPNXyyKQ2BcegV5o3y1XX/VIu8t22wmWJea6E fbeQ23ZZ/iw2ecQYXMkW6OXUMYaAkttp8u37LpOXZx20fWDtoByiZbiMEgCtO3x/n77ZbQYjWiUE qlGOXap/JnMZgaVeU+/NGROhA2xLnUgm6ElpDtOmo1cKj0g14eBa8NcQDAe3q57yANMllv720aIk Mh19thWnan+eqIkZWH3xO7LjKotdiyp2jcTA8peuPJ59P6kUTsPiVkjlXCfFhkh4m69yUARhonSE 2YTEGPU9GZu4jmylVmeRRngoEaU9YQ+/FGyqh+zi9wz7Af8dRnPAOxsBNEah1bnYrUBJiNrffVg0 tStwFePgb0xwG42kjWRcB2oXGY1xk33a/L5kgWUC+dUkBlWp8JOMneiTQ7cO9NJ4yBOw6O1dav5U LU0L6ZzBZQZBZhJVOtWlOMmkFs0JqjhHrbolPF4DveRzQZ3YRL57IDBoobWHa+O21oxjM09rJrqD zkpLzLI7s/P374UkDFxv3MrURK3ytSbIUCAAapxDW6GD/inaT4v6bq8V0PgF2Rk7uF3O2d2o9ZGu crDow9tNDsZZ076mZgT22bEEIOw2o8QEx/5xe2EneOmD3UcexE2j1DM46flDEkm2eRf7sKZ3FMnw bb6CWiR7l6vhqZ694CIQ6rK5ji2oA6uIrxTcBrh06LzIbpi1aH99XZj2QuU4jUp0zY75IxmLNRw2 80EOeU0nAyz97MGAXYDp/iNIHsDX00dhTD0BrHP/t231GILh0ZxCLqd0cTDDhf/rLslYTOeco/LI 7L3SPuIvTQ7O/8sXchangelog.txt000064400000024103152527046370007247 0ustar00## Version 4.3.1 - May 21, 2025 ENH: Issue #993 - Added TDatePicker::DropDownCssClass to apply a class to all the dropdowns ENH: Issue #997 - Nginx fixes to run appliaction in subfolder ENH: Issue #998 - Replace Exception by Throwable to catch eval ParseError and Error. ENH: Issue #1002 - Add THttpSessionhandler to avoid use of deprecated session_set_save_handler() ctor ENH: Migrate functional tests from phpunit-selenium to php-webdriver ENH: Php 8.4 compatibility: limit use of deprecated SID and E_STRICT constants ENH: Php 8.4 compatibility: use explicit nullable type ENH: Php 8.2 compatibility:remove deprecated usage of dynamic defined properties in TActiveRecord BUG: Avoid recursive error while reporting an error and the source file can't be loaded ## Version 4.3.0 - October 26, 2023 ENH: Issues #824, #838, #851, #891, #910, #917 - General Behaviors Update: Cloning and Serializing supports behaviors. IBaseBehavior has init($config) method. TClassBehavior tracks their owners. Behaviors attach their registered event handlers at the behavior priority. Registered Behavior event can optionally attached and detached automatically when the behavior is enabled or disabled (default). Behavior events() support Closures. IBehavior are attachable class-wide by cloning. Behaviors for behaviors has better support. Behaviors are case insensitive. Supports Anonymous (unnamed/numeric) behaviors. Wakeup updates the component behaviors with new named class behaviors. (belisoful) BUG: Issue #843 - Permissions Manager behaviors rename the method 'getManager' to 'getPermissionsManager' for specificity. (belisoful) ENH: Issue #845 - PHP Clone and Unserialize of TComponent objects supports behaviors. (belisoful) ENH: Issue #848 - TComponent events support Closure (anonymous functions) as handlers. (belisoful) ENH: Issue #861 - TWebColors lists all the Web Colors in a TEnumerable and implements TPropertyValue::ensureHexColor (belisoful) ENH: Issue #886 - Lists the 1st level traits of the class and its parents in TComponent::getClassHierarchy. Class-wide behaviors support attaching to Traits as well as interfaces, classes, and their parents. (belisoful) ENH: Issue #904 - TRational and TURational for reading, writing, and computing EXIF-Tiff (GPS) Rational and URational unit types; in Prado\Util\Math. (belisoful) BUG: Issue #911 - Protect the message cache file to be thread safe. (majuca) ENH: Issue #939 - TEventHandler for embedding data with a specific event handler callable. (belisoful) ENH: Issue #944 - TExitException for gracefully exiting the application anywhere. Exception chaining with the last parameter being the previous Exception. (belisoful) ENH: Issue #979 - TComponent::raiseEvent optionally execute handlers in reverse; asa() and getBehaviors() searches for behaviors based on class after failing on name. (belisoful) ENH: Issue #975 - Prado base object methods for each log type and automatic discovery of calling object for log category. (belisoful) ENH: Issue #977 - THttpRequest::onResolveRequest for custom service resolution and TRequestConnectionUpgrade behavior for selecting service on http headers for "websocket". (belisoful) ENH: Issue #982 - General Logging update: Profiling, Flushing large logs for long running processes, optional Tracing, tracks PID for multi-threaded logging, TBrowserLogRoute colorizes the time delta, TDbLogRoute adds a new DB field 'prefix' and functions for getting the DB log, DB log count, and deleting DB logs, TDBLogRoute also adds a RetainPeriod for automatically removing old logs, Adds an event TLogger::OnFlushLogs and flushes as a register_shutdown_function, adds the TSysLogRoute, and adds unit tests for logging. (belisoful) ENH: Issue #984 - TEventSubscription for temporary event handlers. (belisoful) ENH: Issue #972 - TProcessHelper (isSystemWindows, forking, kill, priority) and TSignalsDispatcher for delegating signals to respective global events, alarm interrupt callbacks at specific times, and per child PIDs callbacks. TEventSubscription can subscribe to a PHP process signal, an integer, as an event "name" (in TSignalsDispatcher). (belisoful) ENH: Issue #973 - Embedded PHP Development Web Server CLI Action. (belisoful) ENH: Issue #976 - A class's static functions are extendable with class-wide behaviors or a singleton implementing ISingleton. The PHP magic method TComponent::__callStatic forwards static function calls to implementing class-wide or ISingleton behaviors. (belisoful) ## Version 4.2.2 - April 6, 2023 BUG: Issue #811 - Update TSqlCriteria.php for fix phpdoc (zendre4) BUG: Issue #814 - TSkinTemplate: ensure the full-NS class name is returned from the skin to match the one from the template (ctrlaltca) BUG: Issue #815 - Cron trigger on first run fix, repeat running fix, and removed time zone code (belisoful) BUG: Issue #819 - Support for OFFSET parameter without LIMIT clause in SQL query for TActiveRecord (ganiuszka) ENH: Issue #820 - TApplicationComponent::getClassFxEvents Performance Mode should cache all (belisoful) ENH: Issue #828 - TApplication::onSetUser raised when setting user. (belisoful) ENH: Issues #821, #822, #823, #825, #826, #834, #839, #842 - Behavior updates (belisoful) ENH: Issues #840, #847 - TPriority updates (belisoful) ENH: Issues #818, #846 - TCallChain updates (belisoful) ENH: Issue #866 - HTMLPurifier_Config and cache path (majuca) ENH: Issue #868 - RFC: Service detection is fragile (ctrlaltca) BUG: Issue #815 - Cron tasks delay until their proper time on first entry. Long running cron tasks no longer repeat further pending tasks. (belisoful) ENH: Issue #865 - File and dir permissions were too permissive 0777, now the file permissions are 0644 and 0755 for directory by default. (majuca) ENH: Issue #869 - Remove execute permission on all files excepted on php-cli (majuca) ENH: Issue #875 - Make Prado::using able to autoload traits defined as prado3 namespaces (ctrlaltca) ## Version 4.2.1 - May 9, 2022 BUG: Issue #809 - Interface order and minimum required PHP version (ganiuszka) BUG: Issue #810 - Index 0 is out of range error from TAuthorizationRuleCollection::insertAt (ganiuszka) ## Version 4.2.0 - Apr 19, 2022 ENH: Issue #790 TPermissionsManager implements Role Based Access Control and Authorization Rules for each permission (belisoful) ENH: Prado::createComponent can take an array with "class" and object properties to set on the new object (belisoful) ENH: TAuthorizationRule adds Priority for proper ordering of Authorization Rules, eg. Deny All can be and stay the final rule using priorities. (belisoful) ENH: TPageConfiguration is extendable with dynamic events for loading xml & php and then applying (belisoful) ENH: TUser adds dynamic events dyDefaultRoles and dyIsInRole for default roles and checking the user in a role. (belisoful) BUG: Issue #791 - TUserManager loads PHP user file configurations properly (belisoful) ENH: Adds IPriorityItem for auto-prioritizing items in TPriorityList and TPriorityMap (belisoful) CHG: Issue #783 - Refactor the Shell system with Composer in mind; shell routes and actions, updated the help system. (belisoful) ENH: Issue #761 - TCronModule and TDbCronModule with supporting classes, scheduled like linux cron schedule expression, 8 languages. (belisoful) ENH: Issue #743 - Integrate Composer extensions for PRADO, module ids can be the composer package names and the class will be ['extra']['bootstrap'] (from the composer.json file). TPluginModule/TDbPluginModule for additional functionality as the parent class for extensions. Composer "type" : "prado4-extension" (belisoful) BUG: Issue #784 - Prado-CLI corrected I18N by translating the shell "LANG" into "HTTP_ACCEPT_LANGUAGE" (belisoful) ENH: Issue #778 - Added TEventContent for filling in the control content from handlers of a global event (belisoful) ENH: Issue #776 - Added TDataSize for formatting data sizes with bytes, kB, MB, KiB, MiB, etc. (belisoful) ENH: Issue #775 - TPageService::onAdditionalPagePaths for additional pages (to look for) from composer package extensions (belisoful) ENH: Issue #772 - TMap, TPriorityMap adds dyNoItem, dyAddItem, and dyRemoveItem dynamic events. (belisoful) ENH: Issue #771 - Added TDbParameterModule for reading and setting application parameters with a database-table. (belisoful) CHG: Issue #765 - Prado-CLI moved into their own set of classes rather than one big prado-cli file with all the functionality in it. (belisoful) CHG: Issue #763 - Moved secondary saving of global variables until after onEndRequest in case global state changes in onEndRequest. (belisoful) ENH: Issue #750 - Added TGravatar (belisoful) ENH: issue #744 - Added RTL theme support (belisoful) BUG: Issue #742 - TSecurityManager::setHashAlgorithm uses hash_algos() rather than hash_hmac_algos() - some algos may be set that are not supported by hmac (belisoful) ENH: Issue #741 - TBehaviorsModule and TBehaviorParameterLoader for instancing behaviors in an application; added various behaviors like TParameterizeBehavior that gives new defaults and data from the parameters to any prado object property. (belisoful) ENH: Issue #740 - Behaviors can instances from an array with class and properties, important for #741 (belisoful) BUG: Issue #739 - TApplicationConfiguration::loadParametersPhp variable unset but called (belisoful) CHG: AutoGlobalListen is true for TApplicationComponents (but not TWebControls), and select TComponent children, their 'fx' events will automatically listen and unlisten to fx events on construct and destruct. ENH: Issue #738 - Added TAuthManager::onLogin, onLogout, and onLoginFailed events (belisoful) ENH: Issue #737 - Added TSkinTemplate that doesn't do class/attribute validation so skins are more portable between apps (belisoful) ENH: Issue #735 - Added TPageService::onPreRunPage so modules can access Page events (belisoful) BUG: Issue #728 - TWeakCallableCollection makes use of 7.4 WeakReference so fx events do not stop garbage collection (belisoful) CHG: Split Wsat into its own repo pradosoft/prado-wsat (ctrlaltca) CHG: T(Active)HtmlArea4 has been replaced by T(Active)HtmlArea5, based on tinyMCE version 5 (ctrlaltca) CHG: removed hardcoded bootstrap libraries (ctrlaltca)md5000064400000006233152527046370005173 0ustar00a:53:{s:8:"edit.xml";s:32:"883002534bcd3f658fa5b887ac5e9512";s:9:"notes.txt";s:32:"f649dba88ae38e49dfdcb021a13c4d82";s:9:"clone.php";s:32:"64664981938070cec91f143a694f8ac3";s:10:"import.php";s:32:"6eabd6e855547da904b0619b6acf6bef";s:8:"info.xml";s:32:"409a7202ec89cdbe21d90f933c20b9a1";s:10:"install.js";s:32:"4941bf48eedadc83254d0638716f828f";s:11:"upgrade.php";s:32:"c58029fbd101755484fbadb33b868103";s:15:"images/logo.gif";s:32:"33333fd0cb7d00e7a704a381c8efea14";s:16:"images/piwik.png";s:32:"98adaf38b7bcc10df2b54326fcd9f959";s:11:"install.xml";s:32:"cac1b3b349b03a7ee51313993d1653a7";s:8:"edit.php";s:32:"486b70af3cc9b453e5112922556865d4";s:11:"install.php";s:32:"3a9015fd36ffc32a90be5b1d917f53a2";s:11:"favicon.ico";s:32:"d41d8cd98f00b204e9800998ecf8427e";s:9:"piwik.zip";s:32:"0e58a4e2d22552672db6d4287cff6c80";s:9:"piwik.sql";s:32:"c4d23a809b08bfd63bce93c70d97c27e";s:9:"index.php";s:32:"dc5bcbf7f9372ccc9aedb581fe88edfe";s:11:"upgrade.xml";s:32:"57a2103ff6da8ab374454549dbf72154";s:10:"extend.php";s:32:"d58fcbad74d8096015f933c0fb290c45";s:9:".htaccess";s:32:"eb8cb03d6e9942f9ea188a3600bdde51";s:14:"config.ini.php";s:32:"85542d7a5e54f9e80d79c4ea5424bc57";s:13:"fileindex.php";s:32:"fe8a0c8a91e20fa108d54fa76fe77f25";s:15:"update_pass.php";s:32:"c38dca9107f8b428a63d3eccb77f5095";s:12:"clicshop.zip";s:32:"fd6695a193f551b0f6ba1943253b4d3f";s:19:"images/clicshop.png";s:32:"bb0ee28aa2f4df83945ffbef09432718";s:14:"site_conf_.php";s:32:"84f6a46338316208be742a86febcffd2";s:12:"clicshop.sql";s:32:"626a8184122c97600a37b49c3496c8ea";s:13:"site_conf.php";s:32:"fef6b1ae80ea0ac649a1eb0d881083af";s:10:"global.php";s:32:"833bafea25cb270ddf1e4822586fbf22";s:18:"ElFinderConfig.php";s:32:"94990ebc4ddc2d5a55ff287aaa5c2834";s:10:"lychee.sql";s:32:"d1468ca7ab08cdab1d0684a1f365e03f";s:10:"lychee.zip";s:32:"93e913c29f0d0ad2061f6b41a0f00453";s:9:"_edit.xml";s:32:"883002534bcd3f658fa5b887ac5e9512";s:17:"images/lychee.png";s:32:"953ea58a2cce71b2a79f746a8ed69ac1";s:12:"_upgrade.xml";s:32:"6b0db85611c12c7a799f214bf6eea1ef";s:9:"_edit.php";s:32:"692b63f30981ca160719f6606bf5688e";s:10:"_clone.php";s:32:"3ed8fdc4112ce3ed8e73fbe678558249";s:13:"changelog.txt";s:32:"31aac4a082a0f96c46e7bebba0cc9496";s:4:".env";s:32:"4945bfe64af0539e5ecc674bc3e904d8";s:12:"_upgrade.php";s:32:"bd92b1cc93deda4320a74709570f4832";s:14:"rosariosis.sql";s:32:"2bbf8a122825bf75c6f64bb576097580";s:21:"images/rosariosis.png";s:32:"24f21ba8c44bccb6644b38369660ec15";s:25:"lang/rosariosis_uk_UA.sql";s:32:"c1944531e11560379bf10ceed089fcbb";s:22:"lang/rosariosis_ru.sql";s:32:"bfdb09e8859abbdc19ff49843571ecf9";s:25:"lang/rosariosis_pt_BR.sql";s:32:"22ece9e06d5ce84eb0a43260be0031da";s:22:"lang/rosariosis_fr.sql";s:32:"a3d8a556fe57b0b631df1111771998a9";s:22:"lang/rosariosis_es.sql";s:32:"10be3c10a6df03474bc6342eb9fa0d1a";s:14:"rosariosis.zip";s:32:"6bafa21ce9213cc1e4d3b59391a43e07";s:14:"config.inc.php";s:32:"d797b8a43ade998004d26b91b3396731";s:18:"images/catlogo.gif";s:32:"7e2b3ee6c0454c78f2a687305e189085";s:17:"images/dhtmlx.png";s:32:"a239ff56f176d2fa2520ec3acd592e7d";s:10:"dhtmlx.zip";s:32:"33af3b0158fd6214fb2a155f8c751d25";s:16:"images/prado.png";s:32:"a161c8c0c3d65a74d4c3e30075269441";s:9:"prado.zip";s:32:"6e80c40b96625e40112b2946e57d459f";}install.xml000064400000000101152527046370006737 0ustar00 install.js000064400000001634152527046370006567 0ustar00////////////////////////////////////////////////////////////// // install.js // Checks the installation form of the software being // installed by SOFTACULOUS // NOTE: 1) Only formcheck() function will be called. // 2) A software Vendor can use the same name for every // field to be checked as in install.xml . It can be // called using $('fieldname').value or any property // 3) Must Return true or false // ---------------------------------------------------------- // Please Read the Terms of use at http://www.softaculous.com // ---------------------------------------------------------- // (c)Softaculous Inc. ////////////////////////////////////////////////////////////// function formcheck(){ //Check the Admin Email if(window.check_punycode){ if(!check_punycode($('admin_email').value)){ alert('{{err_ademail}}'); return false; } return true; } return true; };