@@ -6,551 +6,551 @@ |
||
6 | 6 | * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 |
7 | 7 | * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other) |
8 | 8 | * @version 4.2.5 |
9 | -*/error_reporting(6135);$Hb=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Hb||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$V){$Ae=filter_input_array(constant("INPUT$V"),FILTER_UNSAFE_RAW);if($Ae)$$V=$Ae;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo |
|
10 | -lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo |
|
11 | -lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8У’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤ l^íZ6˜ej…Á³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxlÖ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù €‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò 'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,EÍ`T¦É6Ûˆ-“Åì¾ÅÚŽT[Ѫz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø •ÿš´hìÁ{Ü£•î ËÔ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØÍ‡Ð¢©‰‚êcâ¡óB’—}Ø&`ˆîr+E“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼ ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡ ³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£È}");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
12 | -lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s> )â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n \ræs<ŒPi2INÆ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(Òm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$ CAÆ ä„¤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AKã¡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…): ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDùÑ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æÚŒÚ‡Ÿ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/ØX ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éï†PÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðÈôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEÐ€Ôøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6↬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F 4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀÎ t]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ 1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*/¹UÖVû‰¤þpì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Æ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·> —BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ ¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6Chº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ß§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)×…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üàå€ ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤ (€\r¹öGFžª@ؼÃúÙÀß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷Ƚà¸à\\P’,\"ª-rCÉrVäæY×·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê ‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rÔ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔÄ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„â¢ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ €ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;SÇ]ãñ@ËÇè:Ââ“÷I~Û‘•ÙùÒÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}Ï:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð‰)¯i4Ñu•sÁLjXÁMP¬‚^«ä5¹O’¥ bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE% dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> ›â}Sð8=ã‚ÇÀàô/™)BÑvEIÊbœvð’¬–/ˆªŠqìãÂôe¿KšÔw\0%õ!Í€pªUT@ѵ‰Ë¦_ŒË˜@òàtË8î%ñ>âÌôA´—¤äb+~+\n’…ΤÅ\"©>4Áˆc^Úô־šè§N€ZÛ^ÖØ¯N4ªCDr– DÉCÑ’øàáȳö(ÅR˜ed±‰ù¦›{áŠF•Z†+Q#´ÈW-ýí‘¥qÉÑUCÆÎ;£œ‹XðÛx£¤„\n6ÍzkàvÚý´qàx\"h’ÄšRXþ²?Àpd¢ùÅsðæ†ž?|ÜpÓ\rˆã¿~ÒÖ^ƘhÖªAñÆ<r\$ÓAfÇ5\n\"0;œƒ”‰!Ç¼Õ aÉá‰ÖzG„¬1ÞBÊ’ãÏ\"…¸†±OLkÛÓ‡‘\0ƒžFõñ¿Ž'YœŽˆ4õИ");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
13 | -lzw_decompress(compile_file('','minify_js'));}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;";break;case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;";break;case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&ٜƶ•\0Çò\0;";break;case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;";break;}}exit;}function |
|
14 | -connection(){global$f;return$f;}function |
|
15 | -adminer(){global$b;return$b;}function |
|
16 | -idf_unescape($gc){$uc=substr($gc,-1);return |
|
17 | -str_replace($uc.$uc,$uc,substr($gc,1,-1));}function |
|
18 | -escape_string($V){return |
|
19 | -substr(q($V),1,-1);}function |
|
20 | -number($V){return |
|
21 | -preg_replace('~[^0-9]+~','',$V);}function |
|
22 | -remove_slashes($pd,$Hb=false){if(get_magic_quotes_gpc()){while(list($x,$V)=each($pd)){foreach($V |
|
23 | -as$w=>$U){unset($pd[$x][$w]);if(is_array($U)){$pd[$x][stripslashes($w)]=$U;$pd[]=&$pd[$x][stripslashes($w)];}else$pd[$x][stripslashes($w)]=($Hb?$U:stripslashes($U));}}}}function |
|
24 | -bracket_escape($gc,$ua=false){static$re=array(':'=>':1',']'=>':2','['=>':3');return |
|
25 | -strtr($gc,($ua?array_flip($re):$re));}function |
|
26 | -charset($f){return(version_compare($f->server_info,"5.5.3")>=0?"utf8mb4":"utf8");}function |
|
27 | -h($Q){return |
|
28 | -str_replace("\0","�",htmlspecialchars($Q,ENT_QUOTES,'utf-8'));}function |
|
29 | -nbsp($Q){return(trim($Q)!=""?h($Q):" ");}function |
|
30 | -nl_br($Q){return |
|
31 | -str_replace("\n","<br>",$Q);}function |
|
32 | -checkbox($D,$W,$Fa,$sc="",$Tc="",$Ia=""){$K="<input type='checkbox' name='$D' value='".h($W)."'".($Fa?" checked":"").($Tc?' onclick="'.h($Tc).'"':'').">";return($sc!=""||$Ia?"<label".($Ia?" class='$Ia'":"").">$K".h($sc)."</label>":$K);}function |
|
33 | -optionlist($Xc,$Id=null,$Fe=false){$K="";foreach($Xc |
|
34 | -as$w=>$U){$Yc=array($w=>$U);if(is_array($U)){$K.='<optgroup label="'.h($w).'">';$Yc=$U;}foreach($Yc |
|
35 | -as$x=>$V)$K.='<option'.($Fe||is_string($x)?' value="'.h($x).'"':'').(($Fe||is_string($x)?(string)$x:$V)===$Id?' selected':'').'>'.h($V);if(is_array($U))$K.='</optgroup>';}return$K;}function |
|
36 | -html_select($D,$Xc,$W="",$Sc=true){if($Sc)return"<select name='".h($D)."'".(is_string($Sc)?' onchange="'.h($Sc).'"':"").">".optionlist($Xc,$W)."</select>";$K="";foreach($Xc |
|
37 | -as$x=>$V)$K.="<label><input type='radio' name='".h($D)."' value='".h($x)."'".($x==$W?" checked":"").">".h($V)."</label>";return$K;}function |
|
38 | -select_input($c,$Xc,$W="",$hd=""){return($Xc?"<select$c><option value=''>$hd".optionlist($Xc,$W,true)."</select>":"<input$c size='10' value='".h($W)."' placeholder='$hd'>");}function |
|
39 | -confirm(){return" onclick=\"return confirm('".'Are you sure?'."');\"";}function |
|
40 | -print_fieldset($r,$wc,$Je=false,$Tc=""){echo"<fieldset><legend><a href='#fieldset-$r' onclick=\"".h($Tc)."return !toggle('fieldset-$r');\">$wc</a></legend><div id='fieldset-$r'".($Je?"":" class='hidden'").">\n";}function |
|
41 | -bold($Aa,$Ia=""){return($Aa?" class='active $Ia'":($Ia?" class='$Ia'":""));}function |
|
42 | -odd($K=' class="odd"'){static$q=0;if(!$K)$q=-1;return($q++%2?$K:'');}function |
|
43 | -js_escape($Q){return |
|
44 | -addcslashes($Q,"\r\n'\\/");}function |
|
45 | -json_row($x,$V=null){static$Ib=true;if($Ib)echo"{";if($x!=""){echo($Ib?"":",")."\n\t\"".addcslashes($x,"\r\n\"\\/").'": '.($V!==null?'"'.addcslashes($V,"\r\n\"\\/").'"':'undefined');$Ib=false;}else{echo"\n}\n";$Ib=true;}}function |
|
46 | -ini_bool($kc){$V=ini_get($kc);return(preg_match('~^(on|true|yes)$~i',$V)||(int)$V);}function |
|
47 | -sid(){static$K;if($K===null)$K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$K;}function |
|
48 | -set_password($X,$O,$T,$G){$_SESSION["pwds"][$X][$O][$T]=($_COOKIE["adminer_key"]&&is_string($G)?array(encrypt_string($G,$_COOKIE["adminer_key"])):$G);}function |
|
49 | -get_password(){$K=get_session("pwds");if(is_array($K))$K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false);return$K;}function |
|
50 | -q($Q){global$f;return$f->quote($Q);}function |
|
51 | -get_vals($I,$d=0){global$f;$K=array();$J=$f->query($I);if(is_object($J)){while($L=$J->fetch_row())$K[]=$L[$d];}return$K;}function |
|
52 | -get_key_vals($I,$g=null,$ke=0){global$f;if(!is_object($g))$g=$f;$K=array();$g->timeout=$ke;$J=$g->query($I);$g->timeout=0;if(is_object($J)){while($L=$J->fetch_row())$K[$L[0]]=$L[1];}return$K;}function |
|
53 | -get_rows($I,$g=null,$k="<p class='error'>"){global$f;$Sa=(is_object($g)?$g:$f);$K=array();$J=$Sa->query($I);if(is_object($J)){while($L=$J->fetch_assoc())$K[]=$L;}elseif(!$J&&!is_object($g)&&$k&&defined("PAGE_HEADER"))echo$k.error()."\n";return$K;}function |
|
54 | -unique_array($L,$t){foreach($t |
|
55 | -as$s){if(preg_match("~PRIMARY|UNIQUE~",$s["type"])){$K=array();foreach($s["columns"]as$x){if(!isset($L[$x]))continue |
|
56 | -2;$K[$x]=$L[$x];}return$K;}}}function |
|
57 | -escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[3];return |
|
58 | -idf_escape($x);}function |
|
59 | -where($Y,$m=array()){global$f,$v;$K=array();foreach((array)$Y["where"]as$x=>$V){$x=bracket_escape($x,1);$d=escape_key($x);$K[]=$d.(($v=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$V))||$v=="mssql"?" LIKE ".q(addcslashes($V,"%_\\")):" = ".unconvert_field($m[$x],q($V)));if($v=="sql"&&preg_match('~char|text~',$m[$x]["type"])&&preg_match("~[^ -@]~",$V))$K[]="$d = ".q($V)." COLLATE ".charset($f)."_bin";}foreach((array)$Y["null"]as$x)$K[]=escape_key($x)." IS NULL";return |
|
60 | -implode(" AND ",$K);}function |
|
61 | -where_check($V,$m=array()){parse_str($V,$Ea);remove_slashes(array(&$Ea));return |
|
62 | -where($Ea,$m);}function |
|
63 | -where_link($q,$d,$W,$Vc="="){return"&where%5B$q%5D%5Bcol%5D=".urlencode($d)."&where%5B$q%5D%5Bop%5D=".urlencode(($W!==null?$Vc:"IS NULL"))."&where%5B$q%5D%5Bval%5D=".urlencode($W);}function |
|
64 | -convert_fields($e,$m,$N=array()){$K="";foreach($e |
|
65 | -as$x=>$V){if($N&&!in_array(idf_escape($x),$N))continue;$oa=convert_field($m[$x]);if($oa)$K.=", $oa AS ".idf_escape($x);}return$K;}function |
|
66 | -cookie($D,$W,$zc=2592000){global$aa;$ed=array($D,(preg_match("~\n~",$W)?"":$W),($zc?time()+$zc:0),preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0)$ed[]=true;return |
|
67 | -call_user_func_array('setcookie',$ed);}function |
|
68 | -restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function |
|
69 | -stop_session(){if(!ini_bool("session.use_cookies"))session_write_close();}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function |
|
70 | -set_session($x,$V){$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]=$V;}function |
|
71 | -auth_url($X,$O,$T,$h=null){global$jb;preg_match('~([^?]*)\\??(.*)~',remove_from_uri(implode("|",array_keys($jb))."|username|".($h!==null?"db|":"").session_name()),$A);return"$A[1]?".(sid()?SID."&":"").($X!="server"||$O!=""?urlencode($X)."=".urlencode($O)."&":"")."username=".urlencode($T).($h!=""?"&db=".urlencode($h):"").($A[2]?"&$A[2]":"");}function |
|
72 | -is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function |
|
73 | -redirect($_,$B=null){if($B!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($_!==null?$_:$_SERVER["REQUEST_URI"]))][]=$B;}if($_!==null){if($_=="")$_=".";header("Location: $_");exit;}}function |
|
74 | -query_redirect($I,$_,$B,$xd=true,$zb=true,$Bb=false,$je=""){global$f,$k,$b;if($zb){$Td=microtime(true);$Bb=!$f->query($I);$je=format_time($Td);}$Sd="";if($I)$Sd=$b->messageQuery($I,$je);if($Bb){$k=error().$Sd;return |
|
75 | -false;}if($xd)redirect($_,$B.$Sd);return |
|
76 | -true;}function |
|
77 | -queries($I){global$f;static$sd=array();static$Td;if(!$Td)$Td=microtime(true);if($I===null)return |
|
78 | -array(implode("\n",$sd),format_time($Td));$sd[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$f->query($I);}function |
|
79 | -apply_queries($I,$ee,$wb='table'){foreach($ee |
|
80 | -as$R){if(!queries("$I ".$wb($R)))return |
|
81 | -false;}return |
|
82 | -true;}function |
|
83 | -queries_redirect($_,$B,$xd){list($sd,$je)=queries(null);return |
|
84 | -query_redirect($sd,$_,$B,$xd,false,!$xd,$je);}function |
|
85 | -format_time($Td){return |
|
86 | -sprintf('%.3f s',max(0,microtime(true)-$Td));}function |
|
87 | -remove_from_uri($dd=""){return |
|
88 | -substr(preg_replace("~(?<=[?&])($dd".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function |
|
89 | -pagination($F,$Ya){return" ".($F==$Ya?$F+1:'<a href="'.h(remove_from_uri("page").($F?"&page=$F".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($F+1)."</a>");}function |
|
90 | -get_file($x,$bb=false){$Eb=$_FILES[$x];if(!$Eb)return |
|
91 | -null;foreach($Eb |
|
92 | -as$x=>$V)$Eb[$x]=(array)$V;$K='';foreach($Eb["error"]as$x=>$k){if($k)return$k;$D=$Eb["name"][$x];$pe=$Eb["tmp_name"][$x];$Ta=file_get_contents($bb&&preg_match('~\\.gz$~',$D)?"compress.zlib://$pe":$pe);if($bb){$Td=substr($Ta,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Td,$yd))$Ta=iconv("utf-16","utf-8",$Ta);elseif($Td=="\xEF\xBB\xBF")$Ta=substr($Ta,3);$K.=$Ta."\n\n";}else$K.=$Ta;}return$K;}function |
|
93 | -upload_error($k){$Ec=($k==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($k?'Unable to upload a file.'.($Ec?" ".sprintf('Maximum allowed file size is %sB.',$Ec):""):'File does not exist.');}function |
|
94 | -repeat_pattern($H,$xc){return |
|
95 | -str_repeat("$H{0,65535}",$xc/65535)."$H{0,".($xc%65535)."}";}function |
|
96 | -is_utf8($V){return(preg_match('~~u',$V)&&!preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~',$V));}function |
|
97 | -shorten_utf8($Q,$xc=80,$Zd=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$xc).")($)?)u",$Q,$A))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$xc).")($)?)",$Q,$A);return |
|
98 | -h($A[1]).$Zd.(isset($A[2])?"":"<i>...</i>");}function |
|
99 | -format_number($V){return |
|
100 | -strtr(number_format($V,0,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function |
|
101 | -friendly_url($V){return |
|
102 | -preg_replace('~[^a-z0-9_]~i','-',$V);}function |
|
103 | -hidden_fields($pd,$ic=array()){while(list($x,$V)=each($pd)){if(!in_array($x,$ic)){if(is_array($V)){foreach($V |
|
104 | -as$w=>$U)$pd[$x."[$w]"]=$U;}else |
|
105 | -echo'<input type="hidden" name="'.h($x).'" value="'.h($V).'">';}}}function |
|
106 | -hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function |
|
107 | -table_status1($R,$Cb=false){$K=table_status($R,$Cb);return($K?$K:array("Name"=>$R));}function |
|
108 | -column_foreign_keys($R){global$b;$K=array();foreach($b->foreignKeys($R)as$Nb){foreach($Nb["source"]as$V)$K[$V][]=$Nb;}return$K;}function |
|
109 | -enum_input($ue,$c,$l,$W,$sb=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$Bc);$K=($sb!==null?"<label><input type='$ue'$c value='$sb'".((is_array($W)?in_array($sb,$W):$W===0)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($Bc[1]as$q=>$V){$V=stripcslashes(str_replace("''","'",$V));$Fa=(is_int($W)?$W==$q+1:(is_array($W)?in_array($q+1,$W):$W===$V));$K.=" <label><input type='$ue'$c value='".($q+1)."'".($Fa?' checked':'').'>'.h($b->editVal($V,$l)).'</label>';}return$K;}function |
|
110 | -input($l,$W,$o){global$f,$we,$b,$v;$D=h(bracket_escape($l["field"]));echo"<td class='function'>";if(is_array($W)&&!$o){$na=array($W);if(version_compare(PHP_VERSION,5.4)>=0)$na[]=JSON_PRETTY_PRINT;$W=call_user_func_array('json_encode',$na);$o="json";}$Ad=($v=="mssql"&&$l["auto_increment"]);if($Ad&&!$_POST["save"])$o=null;$Tb=(isset($_GET["select"])||$Ad?array("orig"=>'original'):array())+$b->editFunctions($l);$c=" name='fields[$D]'";if($l["type"]=="enum")echo |
|
111 | -nbsp($Tb[""])."<td>".$b->editInput($_GET["edit"],$l,$c,$W);else{$Ib=0;foreach($Tb |
|
112 | -as$x=>$V){if($x===""||!$V)break;$Ib++;}$Sc=($Ib?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($Ib > f.selectedIndex) f.selectedIndex = $Ib;\" onkeyup='keyupChange.call(this);'":"");$c.=$Sc;$Yb=(in_array($o,$Tb)||isset($Tb[$o]));echo(count($Tb)>1?"<select name='function[$D]' onchange='functionChange(this);'".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".optionlist($Tb,$o===null||$Yb?$o:"")."</select>":nbsp(reset($Tb))).'<td>';$mc=$b->editInput($_GET["edit"],$l,$c,$W);if($mc!="")echo$mc;elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$Bc);foreach($Bc[1]as$q=>$V){$V=stripcslashes(str_replace("''","'",$V));$Fa=(is_int($W)?($W>>$q)&1:in_array($V,explode(",",$W),true));echo" <label><input type='checkbox' name='fields[$D][$q]' value='".(1<<$q)."'".($Fa?' checked':'')."$Sc>".h($b->editVal($V,$l)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$D'$Sc>";elseif(($ge=preg_match('~text|lob~',$l["type"]))||preg_match("~\n~",$W)){if($ge&&$v!="sqlite")$c.=" cols='50' rows='12'";else{$M=min(12,substr_count($W,"\n")+1);$c.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$c>".h($W).'</textarea>';}elseif($o=="json")echo"<textarea$c cols='50' rows='12' class='jush-js'>".h($W).'</textarea>';else{$Gc=(!preg_match('~int~',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$A)?((preg_match("~binary~",$l["type"])?2:1)*$A[1]+($A[3]?1:0)+($A[2]&&!$l["unsigned"]?1:0)):($we[$l["type"]]?$we[$l["type"]]+($l["unsigned"]?0:1):0));if($v=='sql'&&$f->server_info>=5.6&&preg_match('~time~',$l["type"]))$Gc+=7;echo"<input".((!$Yb||$o==="")&&preg_match('~(?<!o)int~',$l["type"])?" type='number'":"")." value='".h($W)."'".($Gc?" maxlength='$Gc'":"").(preg_match('~char|binary~',$l["type"])&&$Gc>20?" size='40'":"")."$c>";}}}function |
|
113 | -process_input($l){global$b;$gc=bracket_escape($l["field"]);$o=$_POST["function"][$gc];$W=$_POST["fields"][$gc];if($l["type"]=="enum"){if($W==-1)return |
|
114 | -false;if($W=="")return"NULL";return+$W;}if($l["auto_increment"]&&$W=="")return |
|
115 | -null;if($o=="orig")return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false);if($o=="NULL")return"NULL";if($l["type"]=="set")return |
|
116 | -array_sum((array)$W);if($o=="json"){$o="";$W=json_decode($W,true);if(!is_array($W))return |
|
117 | -false;return$W;}if(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")){$Eb=get_file("fields-$gc");if(!is_string($Eb))return |
|
118 | -false;return |
|
119 | -q($Eb);}return$b->processInput($l,$W,$o);}function |
|
120 | -fields_from_edit(){global$i;$K=array();foreach((array)$_POST["field_keys"]as$x=>$V){if($V!=""){$V=bracket_escape($V);$_POST["function"][$V]=$_POST["field_funs"][$x];$_POST["fields"][$V]=$_POST["field_vals"][$x];}}foreach((array)$_POST["fields"]as$x=>$V){$D=bracket_escape($x,1);$K[$D]=array("field"=>$D,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($x==$i->primary),);}return$K;}function |
|
121 | -search_tables(){global$b,$f;$_GET["where"][0]["op"]="LIKE %%";$_GET["where"][0]["val"]=$_POST["query"];$Qb=false;foreach(table_status('',true)as$R=>$S){$D=$b->tableName($S);if(isset($S["Engine"])&&$D!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$J=$f->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($R),array())),1));if(!$J||$J->fetch_row()){if(!$Qb){echo"<ul>\n";$Qb=true;}echo"<li>".($J?"<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$D</a>\n":"$D: <span class='error'>".error()."</span>\n");}}}echo($Qb?"</ul>":"<p class='message'>".'No tables.')."\n";}function |
|
122 | -dump_headers($fc,$Jc=false){global$b;$K=$b->dumpHeaders($fc,$Jc);$bd=$_POST["output"];if($bd!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($fc).".$K".($bd!="file"&&!preg_match('~[^0-9a-z]~',$bd)?".$bd":""));session_write_close();ob_flush();flush();return$K;}function |
|
123 | -dump_csv($L){foreach($L |
|
124 | -as$x=>$V){if(preg_match("~[\"\n,;\t]~",$V)||$V==="")$L[$x]='"'.str_replace('"','""',$V).'"';}echo |
|
125 | -implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$L)."\r\n";}function |
|
126 | -apply_sql_function($o,$d){return($o?($o=="unixepoch"?"DATETIME($d, '$o')":($o=="count distinct"?"COUNT(DISTINCT ":strtoupper("$o("))."$d)"):$d);}function |
|
127 | -get_temp_dir(){$K=ini_get("upload_tmp_dir");if(!$K){if(function_exists('sys_get_temp_dir'))$K=sys_get_temp_dir();else{$Fb=@tempnam("","");if(!$Fb)return |
|
128 | -false;$K=dirname($Fb);unlink($Fb);}}return$K;}function |
|
129 | -password_file($Va){$Fb=get_temp_dir()."/adminer.key";$K=@file_get_contents($Fb);if($K||!$Va)return$K;$Rb=@fopen($Fb,"w");if($Rb){chmod($Fb,0660);$K=rand_string();fwrite($Rb,$K);fclose($Rb);}return$K;}function |
|
130 | -rand_string(){return |
|
131 | -md5(uniqid(mt_rand(),true));}function |
|
132 | -select_value($V,$z,$l,$he){global$b,$aa;if(is_array($V)){$K="";foreach($V |
|
133 | -as$w=>$U)$K.="<tr>".($V!=array_values($V)?"<th>".h($w):"")."<td>".select_value($U,$z,$l,$he);return"<table cellspacing='0'>$K</table>";}if(!$z)$z=$b->selectLink($V,$l);if($z===null){if(is_mail($V))$z="mailto:$V";if($qd=is_url($V))$z=(($qd=="http"&&$aa)||preg_match('~WebKit~i',$_SERVER["HTTP_USER_AGENT"])?$V:"https://www.adminer.org/redirect/?url=".urlencode($V));}$K=$b->editVal($V,$l);if($K!==null){if($K==="")$K=" ";elseif(!is_utf8($K))$K="\0";elseif($he!=""&&is_shortable($l))$K=shorten_utf8($K,max(0,+$he));else$K=h($K);}return$b->selectVal($K,$z,$l,$V);}function |
|
134 | -is_mail($pb){$pa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$ib='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$H="$pa+(\\.$pa+)*@($ib?\\.)+$ib";return |
|
135 | -is_string($pb)&&preg_match("(^$H(,\\s*$H)*\$)i",$pb);}function |
|
136 | -is_url($Q){$ib='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return(preg_match("~^(https?)://($ib?\\.)+$ib(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q,$A)?strtolower($A[1]):"");}function |
|
137 | -is_shortable($l){return |
|
138 | -preg_match('~char|text|lob|geometry|point|linestring|polygon|string~',$l["type"]);}function |
|
139 | -count_rows($R,$Y,$u,$p){global$v;$I=" FROM ".table($R).($Y?" WHERE ".implode(" AND ",$Y):"");return($u&&($v=="sql"||count($p)==1)?"SELECT COUNT(DISTINCT ".implode(", ",$p).")$I":"SELECT COUNT(*)".($u?" FROM (SELECT 1$I$Ub) x":$I));}function |
|
140 | -slow_query($I){global$b,$qe;$h=$b->database();$ke=$b->queryTimeout();if(support("kill")&&is_object($g=connect())&&($h==""||$g->select_db($h))){$rc=$g->result("SELECT CONNECTION_ID()");echo'<script type="text/javascript"> |
|
9 | +*/error_reporting(6135); $Hb = !preg_match('~^(unsafe_raw)?$~', ini_get("filter.default")); if ($Hb || ini_get("filter.default_flags")) {foreach (array('_GET', '_POST', '_COOKIE', '_SERVER')as$V) {$Ae = filter_input_array(constant("INPUT$V"), FILTER_UNSAFE_RAW); if ($Ae)$$V = $Ae; }}if (function_exists("mb_internal_encoding"))mb_internal_encoding("8bit"); if (isset($_GET["file"])) {if ($_SERVER["HTTP_IF_MODIFIED_SINCE"]) {header("HTTP/1.1 304 Not Modified"); exit; }header("Expires: " . gmdate("D, d M Y H:i:s", time() + 365 * 24 * 60 * 60) . " GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); if ($_GET["file"] == "favicon.ico") {header("Content-Type: image/x-icon"); echo |
|
10 | +lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0"); }elseif ($_GET["file"] == "default.css") {header("Content-Type: text/css; charset=utf-8"); echo |
|
11 | +lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8У’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤ l^íZ6˜ej…Á³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxlÖ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù €‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò 'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,EÍ`T¦É6Ûˆ-“Åì¾ÅÚŽT[Ѫz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø •ÿš´hìÁ{Ü£•î ËÔ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØÍ‡Ð¢©‰‚êcâ¡óB’—}Ø&`ˆîr+E“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼ ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡ ³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£È}"); }elseif ($_GET["file"] == "functions.js") {header("Content-Type: text/javascript; charset=utf-8"); echo |
|
12 | +lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s> )â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n \ræs<ŒPi2INÆ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(Òm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$ CAÆ ä„¤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AKã¡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…): ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDùÑ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æÚŒÚ‡Ÿ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/ØX ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éï†PÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðÈôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEÐ€Ôøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6↬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F 4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀÎ t]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ 1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*/¹UÖVû‰¤þpì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Æ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·> —BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ ¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6Chº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ß§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)×…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üàå€ ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤ (€\r¹öGFžª@ؼÃúÙÀß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷Ƚà¸à\\P’,\"ª-rCÉrVäæY×·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê ‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rÔ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔÄ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„â¢ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ €ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;SÇ]ãñ@ËÇè:Ââ“÷I~Û‘•ÙùÒÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}Ï:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð‰)¯i4Ñu•sÁLjXÁMP¬‚^«ä5¹O’¥ bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE% dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> ›â}Sð8=ã‚ÇÀàô/™)BÑvEIÊbœvð’¬–/ˆªŠqìãÂôe¿KšÔw\0%õ!Í€pªUT@ѵ‰Ë¦_ŒË˜@òàtË8î%ñ>âÌôA´—¤äb+~+\n’…ΤÅ\"©>4Áˆc^Úô־šè§N€ZÛ^ÖØ¯N4ªCDr– DÉCÑ’øàáȳö(ÅR˜ed±‰ù¦›{áŠF•Z†+Q#´ÈW-ýí‘¥qÉÑUCÆÎ;£œ‹XðÛx£¤„\n6ÍzkàvÚý´qàx\"h’ÄšRXþ²?Àpd¢ùÅsðæ†ž?|ÜpÓ\rˆã¿~ÒÖ^ƘhÖªAñÆ<r\$ÓAfÇ5\n\"0;œƒ”‰!Ç¼Õ aÉá‰ÖzG„¬1ÞBÊ’ãÏ\"…¸†±OLkÛÓ‡‘\0ƒžFõñ¿Ž'YœŽˆ4õИ"); }elseif ($_GET["file"] == "jush.js") {header("Content-Type: text/javascript; charset=utf-8"); echo |
|
13 | +lzw_decompress(compile_file('', 'minify_js')); } else {header("Content-Type: image/gif"); switch ($_GET["file"]) {case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;"; break; case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;"; break; case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;"; break; case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&ٜƶ•\0Çò\0;"; break; case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;"; break; }}exit; }function |
|
14 | +connection() {global$f; return$f; }function |
|
15 | +adminer() {global$b; return$b; }function |
|
16 | +idf_unescape($gc) {$uc = substr($gc, -1); return |
|
17 | +str_replace($uc . $uc, $uc, substr($gc, 1, -1)); }function |
|
18 | +escape_string($V) {return |
|
19 | +substr(q($V), 1, -1); }function |
|
20 | +number($V) {return |
|
21 | +preg_replace('~[^0-9]+~', '', $V); }function |
|
22 | +remove_slashes($pd, $Hb = false) {if (get_magic_quotes_gpc()) {while (list($x, $V) = each($pd)) {foreach ($V |
|
23 | +as$w=>$U) {unset($pd[$x][$w]); if (is_array($U)) {$pd[$x][stripslashes($w)] = $U; $pd[] = &$pd[$x][stripslashes($w)]; } else$pd[$x][stripslashes($w)] = ($Hb ? $U : stripslashes($U)); }}}}function |
|
24 | +bracket_escape($gc, $ua = false) {static$re = array(':'=>':1', ']'=>':2', '['=>':3'); return |
|
25 | +strtr($gc, ($ua ? array_flip($re) : $re)); }function |
|
26 | +charset($f) {return(version_compare($f->server_info, "5.5.3") >= 0 ? "utf8mb4" : "utf8"); }function |
|
27 | +h($Q) {return |
|
28 | +str_replace("\0", "�", htmlspecialchars($Q, ENT_QUOTES, 'utf-8')); }function |
|
29 | +nbsp($Q) {return(trim($Q) != "" ? h($Q) : " "); }function |
|
30 | +nl_br($Q) {return |
|
31 | +str_replace("\n", "<br>", $Q); }function |
|
32 | +checkbox($D, $W, $Fa, $sc = "", $Tc = "", $Ia = "") {$K = "<input type='checkbox' name='$D' value='" . h($W) . "'" . ($Fa ? " checked" : "") . ($Tc ? ' onclick="' . h($Tc) . '"' : '') . ">"; return($sc != "" || $Ia ? "<label" . ($Ia ? " class='$Ia'" : "") . ">$K" . h($sc) . "</label>" : $K); }function |
|
33 | +optionlist($Xc, $Id = null, $Fe = false) {$K = ""; foreach ($Xc |
|
34 | +as$w=>$U) {$Yc = array($w=>$U); if (is_array($U)) {$K .= '<optgroup label="' . h($w) . '">'; $Yc = $U; }foreach ($Yc |
|
35 | +as$x=>$V)$K .= '<option' . ($Fe || is_string($x) ? ' value="' . h($x) . '"' : '') . (($Fe || is_string($x) ? (string) $x : $V) === $Id ? ' selected' : '') . '>' . h($V); if (is_array($U))$K .= '</optgroup>'; }return$K; }function |
|
36 | +html_select($D, $Xc, $W = "", $Sc = true) {if ($Sc)return"<select name='" . h($D) . "'" . (is_string($Sc) ? ' onchange="' . h($Sc) . '"' : "") . ">" . optionlist($Xc, $W) . "</select>"; $K = ""; foreach ($Xc |
|
37 | +as$x=>$V)$K .= "<label><input type='radio' name='" . h($D) . "' value='" . h($x) . "'" . ($x == $W ? " checked" : "") . ">" . h($V) . "</label>"; return$K; }function |
|
38 | +select_input($c, $Xc, $W = "", $hd = "") {return($Xc ? "<select$c><option value=''>$hd" . optionlist($Xc, $W, true) . "</select>" : "<input$c size='10' value='" . h($W) . "' placeholder='$hd'>"); }function |
|
39 | +confirm() {return" onclick=\"return confirm('" . 'Are you sure?' . "');\""; }function |
|
40 | +print_fieldset($r, $wc, $Je = false, $Tc = "") {echo"<fieldset><legend><a href='#fieldset-$r' onclick=\"" . h($Tc) . "return !toggle('fieldset-$r');\">$wc</a></legend><div id='fieldset-$r'" . ($Je ? "" : " class='hidden'") . ">\n"; }function |
|
41 | +bold($Aa, $Ia = "") {return($Aa ? " class='active $Ia'" : ($Ia ? " class='$Ia'" : "")); }function |
|
42 | +odd($K = ' class="odd"') {static$q = 0; if (!$K)$q = -1; return($q++ % 2 ? $K : ''); }function |
|
43 | +js_escape($Q) {return |
|
44 | +addcslashes($Q, "\r\n'\\/"); }function |
|
45 | +json_row($x, $V = null) {static$Ib = true; if ($Ib)echo"{"; if ($x != "") {echo($Ib ? "" : ",") . "\n\t\"" . addcslashes($x, "\r\n\"\\/") . '": ' . ($V !== null ? '"' . addcslashes($V, "\r\n\"\\/") . '"' : 'undefined'); $Ib = false; } else {echo"\n}\n"; $Ib = true; }}function |
|
46 | +ini_bool($kc) {$V = ini_get($kc); return(preg_match('~^(on|true|yes)$~i', $V) || (int) $V); }function |
|
47 | +sid() {static$K; if ($K === null)$K = (SID && !($_COOKIE && ini_bool("session.use_cookies"))); return$K; }function |
|
48 | +set_password($X, $O, $T, $G) {$_SESSION["pwds"][$X][$O][$T] = ($_COOKIE["adminer_key"] && is_string($G) ? array(encrypt_string($G, $_COOKIE["adminer_key"])) : $G); }function |
|
49 | +get_password() {$K = get_session("pwds"); if (is_array($K))$K = ($_COOKIE["adminer_key"] ? decrypt_string($K[0], $_COOKIE["adminer_key"]) : false); return$K; }function |
|
50 | +q($Q) {global$f; return$f->quote($Q); }function |
|
51 | +get_vals($I, $d = 0) {global$f; $K = array(); $J = $f->query($I); if (is_object($J)) {while ($L = $J->fetch_row())$K[] = $L[$d]; }return$K; }function |
|
52 | +get_key_vals($I, $g = null, $ke = 0) {global$f; if (!is_object($g))$g = $f; $K = array(); $g->timeout = $ke; $J = $g->query($I); $g->timeout = 0; if (is_object($J)) {while ($L = $J->fetch_row())$K[$L[0]] = $L[1]; }return$K; }function |
|
53 | +get_rows($I, $g = null, $k = "<p class='error'>") {global$f; $Sa = (is_object($g) ? $g : $f); $K = array(); $J = $Sa->query($I); if (is_object($J)) {while ($L = $J->fetch_assoc())$K[] = $L; }elseif (!$J && !is_object($g) && $k && defined("PAGE_HEADER"))echo$k . error() . "\n"; return$K; }function |
|
54 | +unique_array($L, $t) {foreach ($t |
|
55 | +as$s) {if (preg_match("~PRIMARY|UNIQUE~", $s["type"])) {$K = array(); foreach ($s["columns"]as$x) {if (!isset($L[$x]))continue |
|
56 | +2; $K[$x] = $L[$x]; }return$K; }}}function |
|
57 | +escape_key($x) {if (preg_match('(^([\w(]+)(' . str_replace("_", ".*", preg_quote(idf_escape("_"))) . ')([ \w)]+)$)', $x, $A))return$A[1] . idf_escape(idf_unescape($A[2])) . $A[3]; return |
|
58 | +idf_escape($x); }function |
|
59 | +where($Y, $m = array()) {global$f, $v; $K = array(); foreach ((array) $Y["where"]as$x=>$V) {$x = bracket_escape($x, 1); $d = escape_key($x); $K[] = $d . (($v == "sql" && preg_match('~^[0-9]*\\.[0-9]*$~', $V)) || $v == "mssql" ? " LIKE " . q(addcslashes($V, "%_\\")) : " = " . unconvert_field($m[$x], q($V))); if ($v == "sql" && preg_match('~char|text~', $m[$x]["type"]) && preg_match("~[^ -@]~", $V))$K[] = "$d = " . q($V) . " COLLATE " . charset($f) . "_bin"; }foreach ((array) $Y["null"]as$x)$K[] = escape_key($x) . " IS NULL"; return |
|
60 | +implode(" AND ", $K); }function |
|
61 | +where_check($V, $m = array()) {parse_str($V, $Ea); remove_slashes(array(&$Ea)); return |
|
62 | +where($Ea, $m); }function |
|
63 | +where_link($q, $d, $W, $Vc = "=") {return"&where%5B$q%5D%5Bcol%5D=" . urlencode($d) . "&where%5B$q%5D%5Bop%5D=" . urlencode(($W !== null ? $Vc : "IS NULL")) . "&where%5B$q%5D%5Bval%5D=" . urlencode($W); }function |
|
64 | +convert_fields($e, $m, $N = array()) {$K = ""; foreach ($e |
|
65 | +as$x=>$V) {if ($N && !in_array(idf_escape($x), $N))continue; $oa = convert_field($m[$x]); if ($oa)$K .= ", $oa AS " . idf_escape($x); }return$K; }function |
|
66 | +cookie($D, $W, $zc = 2592000) {global$aa; $ed = array($D, (preg_match("~\n~", $W) ? "" : $W), ($zc ? time() + $zc : 0), preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]), "", $aa); if (version_compare(PHP_VERSION, '5.2.0') >= 0)$ed[] = true; return |
|
67 | +call_user_func_array('setcookie', $ed); }function |
|
68 | +restart_session() {if (!ini_bool("session.use_cookies"))session_start(); }function |
|
69 | +stop_session() {if (!ini_bool("session.use_cookies"))session_write_close(); }function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]; }function |
|
70 | +set_session($x, $V) {$_SESSION[$x][DRIVER][SERVER][$_GET["username"]] = $V; }function |
|
71 | +auth_url($X, $O, $T, $h = null) {global$jb; preg_match('~([^?]*)\\??(.*)~', remove_from_uri(implode("|", array_keys($jb)) . "|username|" . ($h !== null ? "db|" : "") . session_name()), $A); return"$A[1]?" . (sid() ? SID . "&" : "") . ($X != "server" || $O != "" ? urlencode($X) . "=" . urlencode($O) . "&" : "") . "username=" . urlencode($T) . ($h != "" ? "&db=" . urlencode($h) : "") . ($A[2] ? "&$A[2]" : ""); }function |
|
72 | +is_ajax() {return($_SERVER["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest"); }function |
|
73 | +redirect($_, $B = null) {if ($B !== null) {restart_session(); $_SESSION["messages"][preg_replace('~^[^?]*~', '', ($_ !== null ? $_ : $_SERVER["REQUEST_URI"]))][] = $B; }if ($_ !== null) {if ($_ == "")$_ = "."; header("Location: $_"); exit; }}function |
|
74 | +query_redirect($I, $_, $B, $xd = true, $zb = true, $Bb = false, $je = "") {global$f, $k, $b; if ($zb) {$Td = microtime(true); $Bb = !$f->query($I); $je = format_time($Td); }$Sd = ""; if ($I)$Sd = $b->messageQuery($I, $je); if ($Bb) {$k = error() . $Sd; return |
|
75 | +false; }if ($xd)redirect($_, $B . $Sd); return |
|
76 | +true; }function |
|
77 | +queries($I) {global$f; static$sd = array(); static$Td; if (!$Td)$Td = microtime(true); if ($I === null)return |
|
78 | +array(implode("\n", $sd), format_time($Td)); $sd[] = (preg_match('~;$~', $I) ? "DELIMITER ;;\n$I;\nDELIMITER " : $I) . ";"; return$f->query($I); }function |
|
79 | +apply_queries($I, $ee, $wb = 'table') {foreach ($ee |
|
80 | +as$R) {if (!queries("$I " . $wb($R)))return |
|
81 | +false; }return |
|
82 | +true; }function |
|
83 | +queries_redirect($_, $B, $xd) {list($sd, $je) = queries(null); return |
|
84 | +query_redirect($sd, $_, $B, $xd, false, !$xd, $je); }function |
|
85 | +format_time($Td) {return |
|
86 | +sprintf('%.3f s', max(0, microtime(true) - $Td)); }function |
|
87 | +remove_from_uri($dd = "") {return |
|
88 | +substr(preg_replace("~(?<=[?&])($dd" . (SID ? "" : "|" . session_name()) . ")=[^&]*&~", '', "$_SERVER[REQUEST_URI]&"), 0, -1); }function |
|
89 | +pagination($F, $Ya) {return" " . ($F == $Ya ? $F + 1 : '<a href="' . h(remove_from_uri("page") . ($F ? "&page=$F" . ($_GET["next"] ? "&next=" . urlencode($_GET["next"]) : "") : "")) . '">' . ($F + 1) . "</a>"); }function |
|
90 | +get_file($x, $bb = false) {$Eb = $_FILES[$x]; if (!$Eb)return |
|
91 | +null; foreach ($Eb |
|
92 | +as$x=>$V)$Eb[$x] = (array) $V; $K = ''; foreach ($Eb["error"]as$x=>$k) {if ($k)return$k; $D = $Eb["name"][$x]; $pe = $Eb["tmp_name"][$x]; $Ta = file_get_contents($bb && preg_match('~\\.gz$~', $D) ? "compress.zlib://$pe" : $pe); if ($bb) {$Td = substr($Ta, 0, 3); if (function_exists("iconv") && preg_match("~^\xFE\xFF|^\xFF\xFE~", $Td, $yd))$Ta = iconv("utf-16", "utf-8", $Ta); elseif ($Td == "\xEF\xBB\xBF")$Ta = substr($Ta, 3); $K .= $Ta . "\n\n"; } else$K .= $Ta; }return$K; }function |
|
93 | +upload_error($k) {$Ec = ($k == UPLOAD_ERR_INI_SIZE ? ini_get("upload_max_filesize") : 0); return($k ? 'Unable to upload a file.' . ($Ec ? " " . sprintf('Maximum allowed file size is %sB.', $Ec) : "") : 'File does not exist.'); }function |
|
94 | +repeat_pattern($H, $xc) {return |
|
95 | +str_repeat("$H{0,65535}", $xc / 65535) . "$H{0," . ($xc % 65535) . "}"; }function |
|
96 | +is_utf8($V) {return(preg_match('~~u', $V) && !preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~', $V)); }function |
|
97 | +shorten_utf8($Q, $xc = 80, $Zd = "") {if (!preg_match("(^(" . repeat_pattern("[\t\r\n -\x{FFFF}]", $xc) . ")($)?)u", $Q, $A))preg_match("(^(" . repeat_pattern("[\t\r\n -~]", $xc) . ")($)?)", $Q, $A); return |
|
98 | +h($A[1]) . $Zd . (isset($A[2]) ? "" : "<i>...</i>"); }function |
|
99 | +format_number($V) {return |
|
100 | +strtr(number_format($V, 0, ".", ','), preg_split('~~u', '0123456789', -1, PREG_SPLIT_NO_EMPTY)); }function |
|
101 | +friendly_url($V) {return |
|
102 | +preg_replace('~[^a-z0-9_]~i', '-', $V); }function |
|
103 | +hidden_fields($pd, $ic = array()) {while (list($x, $V) = each($pd)) {if (!in_array($x, $ic)) {if (is_array($V)) {foreach ($V |
|
104 | +as$w=>$U)$pd[$x . "[$w]"] = $U; } else |
|
105 | +echo'<input type="hidden" name="' . h($x) . '" value="' . h($V) . '">'; }}}function |
|
106 | +hidden_fields_get() {echo(sid() ? '<input type="hidden" name="' . session_name() . '" value="' . h(session_id()) . '">' : ''), (SERVER !== null ? '<input type="hidden" name="' . DRIVER . '" value="' . h(SERVER) . '">' : ""), '<input type="hidden" name="username" value="' . h($_GET["username"]) . '">'; }function |
|
107 | +table_status1($R, $Cb = false) {$K = table_status($R, $Cb); return($K ? $K : array("Name"=>$R)); }function |
|
108 | +column_foreign_keys($R) {global$b; $K = array(); foreach ($b->foreignKeys($R)as$Nb) {foreach ($Nb["source"]as$V)$K[$V][] = $Nb; }return$K; }function |
|
109 | +enum_input($ue, $c, $l, $W, $sb = null) {global$b; preg_match_all("~'((?:[^']|'')*)'~", $l["length"], $Bc); $K = ($sb !== null ? "<label><input type='$ue'$c value='$sb'" . ((is_array($W) ? in_array($sb, $W) : $W === 0) ? " checked" : "") . "><i>" . 'empty' . "</i></label>" : ""); foreach ($Bc[1]as$q=>$V) {$V = stripcslashes(str_replace("''", "'", $V)); $Fa = (is_int($W) ? $W == $q + 1 : (is_array($W) ? in_array($q + 1, $W) : $W === $V)); $K .= " <label><input type='$ue'$c value='" . ($q + 1) . "'" . ($Fa ? ' checked' : '') . '>' . h($b->editVal($V, $l)) . '</label>'; }return$K; }function |
|
110 | +input($l, $W, $o) {global$f, $we, $b, $v; $D = h(bracket_escape($l["field"])); echo"<td class='function'>"; if (is_array($W) && !$o) {$na = array($W); if (version_compare(PHP_VERSION, 5.4) >= 0)$na[] = JSON_PRETTY_PRINT; $W = call_user_func_array('json_encode', $na); $o = "json"; }$Ad = ($v == "mssql" && $l["auto_increment"]); if ($Ad && !$_POST["save"])$o = null; $Tb = (isset($_GET["select"]) || $Ad ? array("orig"=>'original') : array()) + $b->editFunctions($l); $c = " name='fields[$D]'"; if ($l["type"] == "enum")echo |
|
111 | +nbsp($Tb[""]) . "<td>" . $b->editInput($_GET["edit"], $l, $c, $W); else {$Ib = 0; foreach ($Tb |
|
112 | +as$x=>$V) {if ($x === "" || !$V)break; $Ib++; }$Sc = ($Ib ? " onchange=\"var f = this.form['function[" . h(js_escape(bracket_escape($l["field"]))) . "]']; if ($Ib > f.selectedIndex) f.selectedIndex = $Ib;\" onkeyup='keyupChange.call(this);'" : ""); $c .= $Sc; $Yb = (in_array($o, $Tb) || isset($Tb[$o])); echo(count($Tb) > 1 ? "<select name='function[$D]' onchange='functionChange(this);'" . on_help("getTarget(event).value.replace(/^SQL\$/, '')", 1) . ">" . optionlist($Tb, $o === null || $Yb ? $o : "") . "</select>" : nbsp(reset($Tb))) . '<td>'; $mc = $b->editInput($_GET["edit"], $l, $c, $W); if ($mc != "")echo$mc; elseif ($l["type"] == "set") {preg_match_all("~'((?:[^']|'')*)'~", $l["length"], $Bc); foreach ($Bc[1]as$q=>$V) {$V = stripcslashes(str_replace("''", "'", $V)); $Fa = (is_int($W) ? ($W >> $q) & 1 : in_array($V, explode(",", $W), true)); echo" <label><input type='checkbox' name='fields[$D][$q]' value='" . (1 << $q) . "'" . ($Fa ? ' checked' : '') . "$Sc>" . h($b->editVal($V, $l)) . '</label>'; }}elseif (preg_match('~blob|bytea|raw|file~', $l["type"]) && ini_bool("file_uploads"))echo"<input type='file' name='fields-$D'$Sc>"; elseif (($ge = preg_match('~text|lob~', $l["type"])) || preg_match("~\n~", $W)) {if ($ge && $v != "sqlite")$c .= " cols='50' rows='12'"; else {$M = min(12, substr_count($W, "\n") + 1); $c .= " cols='30' rows='$M'" . ($M == 1 ? " style='height: 1.2em;'" : ""); }echo"<textarea$c>" . h($W) . '</textarea>'; }elseif ($o == "json")echo"<textarea$c cols='50' rows='12' class='jush-js'>" . h($W) . '</textarea>'; else {$Gc = (!preg_match('~int~', $l["type"]) && preg_match('~^(\\d+)(,(\\d+))?$~', $l["length"], $A) ? ((preg_match("~binary~", $l["type"]) ? 2 : 1) * $A[1] + ($A[3] ? 1 : 0) + ($A[2] && !$l["unsigned"] ? 1 : 0)) : ($we[$l["type"]] ? $we[$l["type"]] + ($l["unsigned"] ? 0 : 1) : 0)); if ($v == 'sql' && $f->server_info >= 5.6 && preg_match('~time~', $l["type"]))$Gc += 7; echo"<input" . ((!$Yb || $o === "") && preg_match('~(?<!o)int~', $l["type"]) ? " type='number'" : "") . " value='" . h($W) . "'" . ($Gc ? " maxlength='$Gc'" : "") . (preg_match('~char|binary~', $l["type"]) && $Gc > 20 ? " size='40'" : "") . "$c>"; }}}function |
|
113 | +process_input($l) {global$b; $gc = bracket_escape($l["field"]); $o = $_POST["function"][$gc]; $W = $_POST["fields"][$gc]; if ($l["type"] == "enum") {if ($W == -1)return |
|
114 | +false; if ($W == "")return"NULL"; return+$W; }if ($l["auto_increment"] && $W == "")return |
|
115 | +null; if ($o == "orig")return($l["on_update"] == "CURRENT_TIMESTAMP" ? idf_escape($l["field"]) : false); if ($o == "NULL")return"NULL"; if ($l["type"] == "set")return |
|
116 | +array_sum((array) $W); if ($o == "json") {$o = ""; $W = json_decode($W, true); if (!is_array($W))return |
|
117 | +false; return$W; }if (preg_match('~blob|bytea|raw|file~', $l["type"]) && ini_bool("file_uploads")) {$Eb = get_file("fields-$gc"); if (!is_string($Eb))return |
|
118 | +false; return |
|
119 | +q($Eb); }return$b->processInput($l, $W, $o); }function |
|
120 | +fields_from_edit() {global$i; $K = array(); foreach ((array) $_POST["field_keys"]as$x=>$V) {if ($V != "") {$V = bracket_escape($V); $_POST["function"][$V] = $_POST["field_funs"][$x]; $_POST["fields"][$V] = $_POST["field_vals"][$x]; }}foreach ((array) $_POST["fields"]as$x=>$V) {$D = bracket_escape($x, 1); $K[$D] = array("field"=>$D, "privileges"=>array("insert"=>1, "update"=>1), "null"=>1, "auto_increment"=>($x == $i->primary),); }return$K; }function |
|
121 | +search_tables() {global$b, $f; $_GET["where"][0]["op"] = "LIKE %%"; $_GET["where"][0]["val"] = $_POST["query"]; $Qb = false; foreach (table_status('', true)as$R=>$S) {$D = $b->tableName($S); if (isset($S["Engine"]) && $D != "" && (!$_POST["tables"] || in_array($R, $_POST["tables"]))) {$J = $f->query("SELECT" . limit("1 FROM " . table($R), " WHERE " . implode(" AND ", $b->selectSearchProcess(fields($R), array())), 1)); if (!$J || $J->fetch_row()) {if (!$Qb) {echo"<ul>\n"; $Qb = true; }echo"<li>" . ($J ? "<a href='" . h(ME . "select=" . urlencode($R) . "&where[0][op]=" . urlencode($_GET["where"][0]["op"]) . "&where[0][val]=" . urlencode($_GET["where"][0]["val"])) . "'>$D</a>\n" : "$D: <span class='error'>" . error() . "</span>\n"); }}}echo($Qb ? "</ul>" : "<p class='message'>" . 'No tables.') . "\n"; }function |
|
122 | +dump_headers($fc, $Jc = false) {global$b; $K = $b->dumpHeaders($fc, $Jc); $bd = $_POST["output"]; if ($bd != "text")header("Content-Disposition: attachment; filename=" . $b->dumpFilename($fc) . ".$K" . ($bd != "file" && !preg_match('~[^0-9a-z]~', $bd) ? ".$bd" : "")); session_write_close(); ob_flush(); flush(); return$K; }function |
|
123 | +dump_csv($L) {foreach ($L |
|
124 | +as$x=>$V) {if (preg_match("~[\"\n,;\t]~", $V) || $V === "")$L[$x] = '"' . str_replace('"', '""', $V) . '"'; }echo |
|
125 | +implode(($_POST["format"] == "csv" ? "," : ($_POST["format"] == "tsv" ? "\t" : ";")), $L) . "\r\n"; }function |
|
126 | +apply_sql_function($o, $d) {return($o ? ($o == "unixepoch" ? "DATETIME($d, '$o')" : ($o == "count distinct" ? "COUNT(DISTINCT " : strtoupper("$o(")) . "$d)") : $d); }function |
|
127 | +get_temp_dir() {$K = ini_get("upload_tmp_dir"); if (!$K) {if (function_exists('sys_get_temp_dir'))$K = sys_get_temp_dir(); else {$Fb = @tempnam("", ""); if (!$Fb)return |
|
128 | +false; $K = dirname($Fb); unlink($Fb); }}return$K; }function |
|
129 | +password_file($Va) {$Fb = get_temp_dir() . "/adminer.key"; $K = @file_get_contents($Fb); if ($K || !$Va)return$K; $Rb = @fopen($Fb, "w"); if ($Rb) {chmod($Fb, 0660); $K = rand_string(); fwrite($Rb, $K); fclose($Rb); }return$K; }function |
|
130 | +rand_string() {return |
|
131 | +md5(uniqid(mt_rand(), true)); }function |
|
132 | +select_value($V, $z, $l, $he) {global$b, $aa; if (is_array($V)) {$K = ""; foreach ($V |
|
133 | +as$w=>$U)$K .= "<tr>" . ($V != array_values($V) ? "<th>" . h($w) : "") . "<td>" . select_value($U, $z, $l, $he); return"<table cellspacing='0'>$K</table>"; }if (!$z)$z = $b->selectLink($V, $l); if ($z === null) {if (is_mail($V))$z = "mailto:$V"; if ($qd = is_url($V))$z = (($qd == "http" && $aa) || preg_match('~WebKit~i', $_SERVER["HTTP_USER_AGENT"]) ? $V : "https://www.adminer.org/redirect/?url=" . urlencode($V)); }$K = $b->editVal($V, $l); if ($K !== null) {if ($K === "")$K = " "; elseif (!is_utf8($K))$K = "\0"; elseif ($he != "" && is_shortable($l))$K = shorten_utf8($K, max(0, +$he)); else$K = h($K); }return$b->selectVal($K, $z, $l, $V); }function |
|
134 | +is_mail($pb) {$pa = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]'; $ib = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; $H = "$pa+(\\.$pa+)*@($ib?\\.)+$ib"; return |
|
135 | +is_string($pb) && preg_match("(^$H(,\\s*$H)*\$)i", $pb); }function |
|
136 | +is_url($Q) {$ib = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; return(preg_match("~^(https?)://($ib?\\.)+$ib(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i", $Q, $A) ? strtolower($A[1]) : ""); }function |
|
137 | +is_shortable($l) {return |
|
138 | +preg_match('~char|text|lob|geometry|point|linestring|polygon|string~', $l["type"]); }function |
|
139 | +count_rows($R, $Y, $u, $p) {global$v; $I = " FROM " . table($R) . ($Y ? " WHERE " . implode(" AND ", $Y) : ""); return($u && ($v == "sql" || count($p) == 1) ? "SELECT COUNT(DISTINCT " . implode(", ", $p) . ")$I" : "SELECT COUNT(*)" . ($u ? " FROM (SELECT 1$I$Ub) x" : $I)); }function |
|
140 | +slow_query($I) {global$b, $qe; $h = $b->database(); $ke = $b->queryTimeout(); if (support("kill") && is_object($g = connect()) && ($h == "" || $g->select_db($h))) {$rc = $g->result("SELECT CONNECTION_ID()"); echo'<script type="text/javascript"> |
|
141 | 141 | var timeout = setTimeout(function () { |
142 | - ajax(\'',js_escape(ME),'script=kill\', function () { |
|
143 | - }, \'token=',$qe,'&kill=',$rc,'\'); |
|
144 | -}, ',1000*$ke,'); |
|
142 | + ajax(\'',js_escape(ME), 'script=kill\', function () { |
|
143 | + }, \'token=',$qe, '&kill=', $rc, '\'); |
|
144 | +}, ',1000 * $ke, '); |
|
145 | 145 | </script> |
146 | -';}else$g=null;ob_flush();flush();$K=@get_key_vals($I,$g,$ke);if($g){echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n";ob_flush();flush();}return |
|
147 | -array_keys($K);}function |
|
148 | -get_token(){$vd=rand(1,1e6);return($vd^$_SESSION["token"]).":$vd";}function |
|
149 | -verify_token(){list($qe,$vd)=explode(":",$_POST["token"]);return($vd^$_SESSION["token"])==$qe;}function |
|
150 | -lzw_decompress($za){$gb=256;$_a=8;$Ka=array();$Bd=0;$Cd=0;for($q=0;$q<strlen($za);$q++){$Bd=($Bd<<8)+ord($za[$q]);$Cd+=8;if($Cd>=$_a){$Cd-=$_a;$Ka[]=$Bd>>$Cd;$Bd&=(1<<$Cd)-1;$gb++;if($gb>>$_a)$_a++;}}$fb=range("\0","\xFF");$K="";foreach($Ka |
|
151 | -as$q=>$Ja){$ob=$fb[$Ja];if(!isset($ob))$ob=$Ne.$Ne[0];$K.=$ob;if($q)$fb[]=$Ne.$ob[0];$Ne=$ob;}return$K;}function |
|
152 | -on_help($Pa,$Pd=0){return" onmouseover='helpMouseover(this, event, ".h($Pa).", $Pd);' onmouseout='helpMouseout(this, event);'";}function |
|
153 | -edit_form($a,$m,$L,$De){global$b,$v,$qe,$k;$de=$b->tableName(table_status1($a,true));page_header(($De?'Edit':'Insert'),$k,array("select"=>array($a,$de)),$de);if($L===false)echo"<p class='error'>".'No rows.'."\n";echo'<form action="" method="post" enctype="multipart/form-data" id="form"> |
|
154 | -';if(!$m)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m |
|
155 | -as$D=>$l){echo"<tr><th>".$b->fieldName($l);$cb=$_GET["set"][bracket_escape($D)];if($cb===null){$cb=$l["default"];if($l["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$cb,$yd))$cb=$yd[1];}$W=($L!==null?($L[$D]!=""&&$v=="sql"&&preg_match("~enum|set~",$l["type"])?(is_array($L[$D])?array_sum($L[$D]):+$L[$D]):$L[$D]):(!$De&&$l["auto_increment"]?"":(isset($_GET["select"])?false:$cb)));if(!$_POST["save"]&&is_string($W))$W=$b->editVal($W,$l);$o=($_POST["save"]?(string)$_POST["function"][$D]:($De&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($W===false?null:($W!==null?'':'NULL'))));if(preg_match("~time~",$l["type"])&&$W=="CURRENT_TIMESTAMP"){$W="";$o="now";}input($l,$W,$o);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($m){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($De?'Save and continue edit'."' onclick='return !ajaxForm(this.form, \"".'Saving'.'...", this)':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n";}echo($De?"<input type='submit' name='delete' value='".'Delete'."'".confirm().">\n":($_POST||!$m?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'"> |
|
146 | +';} else$g = null; ob_flush(); flush(); $K = @get_key_vals($I, $g, $ke); if ($g) {echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n"; ob_flush(); flush(); }return |
|
147 | +array_keys($K); }function |
|
148 | +get_token() {$vd = rand(1, 1e6); return($vd ^ $_SESSION["token"]) . ":$vd"; }function |
|
149 | +verify_token() {list($qe, $vd) = explode(":", $_POST["token"]); return($vd ^ $_SESSION["token"]) == $qe; }function |
|
150 | +lzw_decompress($za) {$gb = 256; $_a = 8; $Ka = array(); $Bd = 0; $Cd = 0; for ($q = 0; $q < strlen($za); $q++) {$Bd = ($Bd << 8) + ord($za[$q]); $Cd += 8; if ($Cd >= $_a) {$Cd -= $_a; $Ka[] = $Bd >> $Cd; $Bd &= (1 << $Cd) - 1; $gb++; if ($gb >> $_a)$_a++; }}$fb = range("\0", "\xFF"); $K = ""; foreach ($Ka |
|
151 | +as$q=>$Ja) {$ob = $fb[$Ja]; if (!isset($ob))$ob = $Ne . $Ne[0]; $K .= $ob; if ($q)$fb[] = $Ne . $ob[0]; $Ne = $ob; }return$K; }function |
|
152 | +on_help($Pa, $Pd = 0) {return" onmouseover='helpMouseover(this, event, " . h($Pa) . ", $Pd);' onmouseout='helpMouseout(this, event);'"; }function |
|
153 | +edit_form($a, $m, $L, $De) {global$b, $v, $qe, $k; $de = $b->tableName(table_status1($a, true)); page_header(($De ? 'Edit' : 'Insert'), $k, array("select"=>array($a, $de)), $de); if ($L === false)echo"<p class='error'>" . 'No rows.' . "\n"; echo'<form action="" method="post" enctype="multipart/form-data" id="form"> |
|
154 | +';if (!$m)echo"<p class='error'>" . 'You have no privileges to update this table.' . "\n"; else {echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n"; foreach ($m |
|
155 | +as$D=>$l) {echo"<tr><th>" . $b->fieldName($l); $cb = $_GET["set"][bracket_escape($D)]; if ($cb === null) {$cb = $l["default"]; if ($l["type"] == "bit" && preg_match("~^b'([01]*)'\$~", $cb, $yd))$cb = $yd[1]; }$W = ($L !== null ? ($L[$D] != "" && $v == "sql" && preg_match("~enum|set~", $l["type"]) ? (is_array($L[$D]) ? array_sum($L[$D]) : +$L[$D]) : $L[$D]) : (!$De && $l["auto_increment"] ? "" : (isset($_GET["select"]) ? false : $cb))); if (!$_POST["save"] && is_string($W))$W = $b->editVal($W, $l); $o = ($_POST["save"] ? (string) $_POST["function"][$D] : ($De && $l["on_update"] == "CURRENT_TIMESTAMP" ? "now" : ($W === false ? null : ($W !== null ? '' : 'NULL')))); if (preg_match("~time~", $l["type"]) && $W == "CURRENT_TIMESTAMP") {$W = ""; $o = "now"; }input($l, $W, $o); echo"\n"; }if (!support("table"))echo"<tr>" . "<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>" . "<td class='function'>" . html_select("field_funs[]", $b->editFunctions(array("null"=>isset($_GET["select"])))) . "<td><input name='field_vals[]'>" . "\n"; echo"</table>\n"; }echo"<p>\n"; if ($m) {echo"<input type='submit' value='" . 'Save' . "'>\n"; if (!isset($_GET["select"]))echo"<input type='submit' name='insert' value='" . ($De ? 'Save and continue edit' . "' onclick='return !ajaxForm(this.form, \"" . 'Saving' . '...", this)' : 'Save and insert next') . "' title='Ctrl+Shift+Enter'>\n"; }echo($De ? "<input type='submit' name='delete' value='" . 'Delete' . "'" . confirm() . ">\n" : ($_POST || !$m ? "" : "<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n")); if (isset($_GET["select"]))hidden_fields(array("check"=>(array) $_POST["check"], "clone"=>$_POST["clone"], "all"=>$_POST["all"])); echo'<input type="hidden" name="referer" value="', h(isset($_POST["referer"]) ? $_POST["referer"] : $_SERVER["HTTP_REFERER"]), '"> |
|
156 | 156 | <input type="hidden" name="save" value="1"> |
157 | -<input type="hidden" name="token" value="',$qe,'"> |
|
157 | +<input type="hidden" name="token" value="',$qe, '"> |
|
158 | 158 | </form> |
159 | -';}global$b,$f,$jb,$mb,$ub,$k,$Tb,$Vb,$aa,$lc,$v,$ba,$tc,$Rc,$gd,$Wd,$Zb,$qe,$te,$we,$Ce,$ca;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";$aa=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);session_cache_limiter("");if(!defined("SID")){session_name("adminer_sid");$ed=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0)$ed[]=true;call_user_func_array('session_set_cookie_params',$ed);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Hb);if(get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);function |
|
160 | -get_lang(){return'en';}function |
|
161 | -lang($se,$Oc=null){if(is_array($se)){$jd=($Oc==1?0:1);$se=$se[$jd];}$se=str_replace("%d","%s",$se);$Oc=format_number($Oc);return |
|
162 | -sprintf($se,$Oc);}if(extension_loaded('pdo')){class |
|
159 | +';}global$b, $f, $jb, $mb, $ub, $k, $Tb, $Vb, $aa, $lc, $v, $ba, $tc, $Rc, $gd, $Wd, $Zb, $qe, $te, $we, $Ce, $ca; if (!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"] = $_SERVER["ORIG_PATH_INFO"]; if (!strpos($_SERVER["REQUEST_URI"], '?') && $_SERVER["QUERY_STRING"] != "")$_SERVER["REQUEST_URI"] .= "?$_SERVER[QUERY_STRING]"; $aa = $_SERVER["HTTPS"] && strcasecmp($_SERVER["HTTPS"], "off"); @ini_set("session.use_trans_sid", false); session_cache_limiter(""); if (!defined("SID")) {session_name("adminer_sid"); $ed = array(0, preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]), "", $aa); if (version_compare(PHP_VERSION, '5.2.0') >= 0)$ed[] = true; call_user_func_array('session_set_cookie_params', $ed); session_start(); }remove_slashes(array(&$_GET, &$_POST, &$_COOKIE), $Hb); if (get_magic_quotes_runtime())set_magic_quotes_runtime(false); @set_time_limit(0); @ini_set("zend.ze1_compatibility_mode", false); @ini_set("precision", 20); function |
|
160 | +get_lang() {return'en'; }function |
|
161 | +lang($se, $Oc = null) {if (is_array($se)) {$jd = ($Oc == 1 ? 0 : 1); $se = $se[$jd]; }$se = str_replace("%d", "%s", $se); $Oc = format_number($Oc); return |
|
162 | +sprintf($se, $Oc); }if (extension_loaded('pdo')) {class |
|
163 | 163 | Min_PDO |
164 | 164 | extends |
165 | -PDO{var$_result,$server_info,$affected_rows,$errno,$error;function |
|
166 | -__construct(){global$b;$jd=array_search("SQL",$b->operators);if($jd!==false)unset($b->operators[$jd]);}function |
|
167 | -dsn($kb,$T,$G){try{parent::__construct($kb,$T,$G);}catch(Exception$xb){auth_error($xb->getMessage());}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function |
|
168 | -query($I,$xe=false){$J=parent::query($I);$this->error="";if(!$J){list(,$this->errno,$this->error)=$this->errorInfo();return |
|
169 | -false;}$this->store_result($J);return$J;}function |
|
170 | -multi_query($I){return$this->_result=$this->query($I);}function |
|
171 | -store_result($J=null){if(!$J){$J=$this->_result;if(!$J)return |
|
172 | -false;}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return |
|
173 | -true;}function |
|
174 | -next_result(){if(!$this->_result)return |
|
175 | -false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function |
|
176 | -result($I,$l=0){$J=$this->query($I);if(!$J)return |
|
177 | -false;$L=$J->fetch();return$L[$l];}}class |
|
165 | +PDO {var$_result, $server_info, $affected_rows, $errno, $error; function |
|
166 | +__construct() {global$b; $jd = array_search("SQL", $b->operators); if ($jd !== false)unset($b->operators[$jd]); }function |
|
167 | +dsn($kb, $T, $G) {try {parent::__construct($kb, $T, $G); } catch (Exception$xb) {auth_error($xb->getMessage()); }$this->setAttribute(13, array('Min_PDOStatement')); $this->server_info = $this->getAttribute(4); }function |
|
168 | +query($I, $xe = false) {$J = parent::query($I); $this->error = ""; if (!$J) {list(,$this->errno, $this->error) = $this->errorInfo(); return |
|
169 | +false; }$this->store_result($J); return$J; }function |
|
170 | +multi_query($I) {return$this->_result = $this->query($I); }function |
|
171 | +store_result($J = null) {if (!$J) {$J = $this->_result; if (!$J)return |
|
172 | +false; }if ($J->columnCount()) {$J->num_rows = $J->rowCount(); return$J; }$this->affected_rows = $J->rowCount(); return |
|
173 | +true; }function |
|
174 | +next_result() {if (!$this->_result)return |
|
175 | +false; $this->_result->_offset = 0; return@$this->_result->nextRowset(); }function |
|
176 | +result($I, $l = 0) {$J = $this->query($I); if (!$J)return |
|
177 | +false; $L = $J->fetch(); return$L[$l]; }}class |
|
178 | 178 | Min_PDOStatement |
179 | 179 | extends |
180 | -PDOStatement{var$_offset=0,$num_rows;function |
|
181 | -fetch_assoc(){return$this->fetch(2);}function |
|
182 | -fetch_row(){return$this->fetch(3);}function |
|
183 | -fetch_field(){$L=(object)$this->getColumnMeta($this->_offset++);$L->orgtable=$L->table;$L->orgname=$L->name;$L->charsetnr=(in_array("blob",(array)$L->flags)?63:0);return$L;}}}$jb=array();class |
|
184 | -Min_SQL{var$_conn;function |
|
185 | -__construct($f){$this->_conn=$f;}function |
|
186 | -select($R,$N,$Y,$p,$E=array(),$y=1,$F=0,$nd=false){global$b,$v;$u=(count($p)<count($N));$I=$b->selectQueryBuild($N,$Y,$p,$E,$y,$F);if(!$I)$I="SELECT".limit(($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($R),($Y?"\nWHERE ".implode(" AND ",$Y):"").($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):""),($y!=""?+$y:null),($F?$y*$F:0),"\n");$Td=microtime(true);$K=$this->_conn->query($I);if($nd)echo$b->selectQuery($I,format_time($Td));return$K;}function |
|
187 | -delete($R,$td,$y=0){$I="FROM ".table($R);return |
|
188 | -queries("DELETE".($y?limit1($I,$td):" $I$td"));}function |
|
189 | -update($R,$P,$td,$y=0,$Kd="\n"){$Ge=array();foreach($P |
|
190 | -as$x=>$V)$Ge[]="$x = $V";$I=table($R)." SET$Kd".implode(",$Kd",$Ge);return |
|
191 | -queries("UPDATE".($y?limit1($I,$td):" $I$td"));}function |
|
192 | -insert($R,$P){return |
|
193 | -queries("INSERT INTO ".table($R).($P?" (".implode(", ",array_keys($P)).")\nVALUES (".implode(", ",$P).")":" DEFAULT VALUES"));}function |
|
194 | -insertUpdate($R,$M,$md){return |
|
195 | -false;}function |
|
196 | -begin(){return |
|
197 | -queries("BEGIN");}function |
|
198 | -commit(){return |
|
199 | -queries("COMMIT");}function |
|
200 | -rollback(){return |
|
201 | -queries("ROLLBACK");}}$jb=array("server"=>"MySQL")+$jb;if(!defined("DRIVER")){$kd=array("MySQLi","MySQL","PDO_MySQL");define("DRIVER","server");if(extension_loaded("mysqli")){class |
|
180 | +PDOStatement {var$_offset = 0, $num_rows; function |
|
181 | +fetch_assoc() {return$this->fetch(2); }function |
|
182 | +fetch_row() {return$this->fetch(3); }function |
|
183 | +fetch_field() {$L = (object) $this->getColumnMeta($this->_offset++); $L->orgtable = $L->table; $L->orgname = $L->name; $L->charsetnr = (in_array("blob", (array) $L->flags) ? 63 : 0); return$L; }}}$jb = array(); class |
|
184 | +Min_SQL {var$_conn; function |
|
185 | +__construct($f) {$this->_conn = $f; }function |
|
186 | +select($R, $N, $Y, $p, $E = array(), $y = 1, $F = 0, $nd = false) {global$b, $v; $u = (count($p) < count($N)); $I = $b->selectQueryBuild($N, $Y, $p, $E, $y, $F); if (!$I)$I = "SELECT" . limit(($_GET["page"] != "last" && +$y && $p && $u && $v == "sql" ? "SQL_CALC_FOUND_ROWS " : "") . implode(", ", $N) . "\nFROM " . table($R), ($Y ? "\nWHERE " . implode(" AND ", $Y) : "") . ($p && $u ? "\nGROUP BY " . implode(", ", $p) : "") . ($E ? "\nORDER BY " . implode(", ", $E) : ""), ($y != "" ?+$y : null), ($F ? $y * $F : 0), "\n"); $Td = microtime(true); $K = $this->_conn->query($I); if ($nd)echo$b->selectQuery($I, format_time($Td)); return$K; }function |
|
187 | +delete($R, $td, $y = 0) {$I = "FROM " . table($R); return |
|
188 | +queries("DELETE" . ($y ? limit1($I, $td) : " $I$td")); }function |
|
189 | +update($R, $P, $td, $y = 0, $Kd = "\n") {$Ge = array(); foreach ($P |
|
190 | +as$x=>$V)$Ge[] = "$x = $V"; $I = table($R) . " SET$Kd" . implode(",$Kd", $Ge); return |
|
191 | +queries("UPDATE" . ($y ? limit1($I, $td) : " $I$td")); }function |
|
192 | +insert($R, $P) {return |
|
193 | +queries("INSERT INTO " . table($R) . ($P ? " (" . implode(", ", array_keys($P)) . ")\nVALUES (" . implode(", ", $P) . ")" : " DEFAULT VALUES")); }function |
|
194 | +insertUpdate($R, $M, $md) {return |
|
195 | +false; }function |
|
196 | +begin() {return |
|
197 | +queries("BEGIN"); }function |
|
198 | +commit() {return |
|
199 | +queries("COMMIT"); }function |
|
200 | +rollback() {return |
|
201 | +queries("ROLLBACK"); }}$jb = array("server"=>"MySQL") + $jb; if (!defined("DRIVER")) {$kd = array("MySQLi", "MySQL", "PDO_MySQL"); define("DRIVER", "server"); if (extension_loaded("mysqli")) {class |
|
202 | 202 | Min_DB |
203 | 203 | extends |
204 | -MySQLi{var$extension="MySQLi";function |
|
205 | -__construct(){parent::init();}function |
|
206 | -connect($O="",$T="",$G="",$Za=null,$id=null,$Qd=null){mysqli_report(MYSQLI_REPORT_OFF);list($dc,$id)=explode(":",$O,2);$K=@$this->real_connect(($O!=""?$dc:ini_get("mysqli.default_host")),($O.$T!=""?$T:ini_get("mysqli.default_user")),($O.$T.$G!=""?$G:ini_get("mysqli.default_pw")),$Za,(is_numeric($id)?$id:ini_get("mysqli.default_port")),(!is_numeric($id)?$id:$Qd));return$K;}function |
|
207 | -set_charset($Da){if(parent::set_charset($Da))return |
|
208 | -true;parent::set_charset('utf8');return$this->query("SET NAMES $Da");}function |
|
209 | -result($I,$l=0){$J=$this->query($I);if(!$J)return |
|
210 | -false;$L=$J->fetch_array();return$L[$l];}function |
|
211 | -quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class |
|
212 | -Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function |
|
213 | -connect($O,$T,$G){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$T"!=""?$T:ini_get("mysql.default_user")),("$O$T$G"!=""?$G:ini_get("mysql.default_password")),true,131072);if($this->_link)$this->server_info=mysql_get_server_info($this->_link);else$this->error=mysql_error();return(bool)$this->_link;}function |
|
214 | -set_charset($Da){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Da,$this->_link))return |
|
215 | -true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $Da");}function |
|
216 | -quote($Q){return"'".mysql_real_escape_string($Q,$this->_link)."'";}function |
|
217 | -select_db($Za){return |
|
218 | -mysql_select_db($Za,$this->_link);}function |
|
219 | -query($I,$xe=false){$J=@($xe?mysql_unbuffered_query($I,$this->_link):mysql_query($I,$this->_link));$this->error="";if(!$J){$this->errno=mysql_errno($this->_link);$this->error=mysql_error($this->_link);return |
|
220 | -false;}if($J===true){$this->affected_rows=mysql_affected_rows($this->_link);$this->info=mysql_info($this->_link);return |
|
221 | -true;}return |
|
204 | +MySQLi {var$extension = "MySQLi"; function |
|
205 | +__construct() {parent::init(); }function |
|
206 | +connect($O = "", $T = "", $G = "", $Za = null, $id = null, $Qd = null) {mysqli_report(MYSQLI_REPORT_OFF); list($dc, $id) = explode(":", $O, 2); $K = @$this->real_connect(($O != "" ? $dc : ini_get("mysqli.default_host")), ($O . $T != "" ? $T : ini_get("mysqli.default_user")), ($O . $T . $G != "" ? $G : ini_get("mysqli.default_pw")), $Za, (is_numeric($id) ? $id : ini_get("mysqli.default_port")), (!is_numeric($id) ? $id : $Qd)); return$K; }function |
|
207 | +set_charset($Da) {if (parent::set_charset($Da))return |
|
208 | +true; parent::set_charset('utf8'); return$this->query("SET NAMES $Da"); }function |
|
209 | +result($I, $l = 0) {$J = $this->query($I); if (!$J)return |
|
210 | +false; $L = $J->fetch_array(); return$L[$l]; }function |
|
211 | +quote($Q) {return"'" . $this->escape_string($Q) . "'"; }}}elseif (extension_loaded("mysql") && !(ini_get("sql.safe_mode") && extension_loaded("pdo_mysql"))) {class |
|
212 | +Min_DB {var$extension = "MySQL", $server_info, $affected_rows, $errno, $error, $_link, $_result; function |
|
213 | +connect($O, $T, $G) {$this->_link = @mysql_connect(($O != "" ? $O : ini_get("mysql.default_host")), ("$O$T" != "" ? $T : ini_get("mysql.default_user")), ("$O$T$G" != "" ? $G : ini_get("mysql.default_password")), true, 131072); if ($this->_link)$this->server_info = mysql_get_server_info($this->_link); else$this->error = mysql_error(); return(bool) $this->_link; }function |
|
214 | +set_charset($Da) {if (function_exists('mysql_set_charset')) {if (mysql_set_charset($Da, $this->_link))return |
|
215 | +true; mysql_set_charset('utf8', $this->_link); }return$this->query("SET NAMES $Da"); }function |
|
216 | +quote($Q) {return"'" . mysql_real_escape_string($Q, $this->_link) . "'"; }function |
|
217 | +select_db($Za) {return |
|
218 | +mysql_select_db($Za, $this->_link); }function |
|
219 | +query($I, $xe = false) {$J = @($xe ? mysql_unbuffered_query($I, $this->_link) : mysql_query($I, $this->_link)); $this->error = ""; if (!$J) {$this->errno = mysql_errno($this->_link); $this->error = mysql_error($this->_link); return |
|
220 | +false; }if ($J === true) {$this->affected_rows = mysql_affected_rows($this->_link); $this->info = mysql_info($this->_link); return |
|
221 | +true; }return |
|
222 | 222 | new |
223 | -Min_Result($J);}function |
|
224 | -multi_query($I){return$this->_result=$this->query($I);}function |
|
225 | -store_result(){return$this->_result;}function |
|
226 | -next_result(){return |
|
227 | -false;}function |
|
228 | -result($I,$l=0){$J=$this->query($I);if(!$J||!$J->num_rows)return |
|
229 | -false;return |
|
230 | -mysql_result($J->_result,0,$l);}}class |
|
231 | -Min_Result{var$num_rows,$_result,$_offset=0;function |
|
232 | -__construct($J){$this->_result=$J;$this->num_rows=mysql_num_rows($J);}function |
|
233 | -fetch_assoc(){return |
|
234 | -mysql_fetch_assoc($this->_result);}function |
|
235 | -fetch_row(){return |
|
236 | -mysql_fetch_row($this->_result);}function |
|
237 | -fetch_field(){$K=mysql_fetch_field($this->_result,$this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=($K->blob?63:0);return$K;}function |
|
238 | -__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class |
|
223 | +Min_Result($J); }function |
|
224 | +multi_query($I) {return$this->_result = $this->query($I); }function |
|
225 | +store_result() {return$this->_result; }function |
|
226 | +next_result() {return |
|
227 | +false; }function |
|
228 | +result($I, $l = 0) {$J = $this->query($I); if (!$J || !$J->num_rows)return |
|
229 | +false; return |
|
230 | +mysql_result($J->_result, 0, $l); }}class |
|
231 | +Min_Result {var$num_rows, $_result, $_offset = 0; function |
|
232 | +__construct($J) {$this->_result = $J; $this->num_rows = mysql_num_rows($J); }function |
|
233 | +fetch_assoc() {return |
|
234 | +mysql_fetch_assoc($this->_result); }function |
|
235 | +fetch_row() {return |
|
236 | +mysql_fetch_row($this->_result); }function |
|
237 | +fetch_field() {$K = mysql_fetch_field($this->_result, $this->_offset++); $K->orgtable = $K->table; $K->orgname = $K->name; $K->charsetnr = ($K->blob ? 63 : 0); return$K; }function |
|
238 | +__destruct() {mysql_free_result($this->_result); }}}elseif (extension_loaded("pdo_mysql")) {class |
|
239 | 239 | Min_DB |
240 | 240 | extends |
241 | -Min_PDO{var$extension="PDO_MySQL";function |
|
242 | -connect($O,$T,$G){$this->dsn("mysql:charset=utf8;host=".str_replace(":",";unix_socket=",preg_replace('~:(\\d)~',';port=\\1',$O)),$T,$G);return |
|
243 | -true;}function |
|
244 | -set_charset($Da){$this->query("SET NAMES $Da");}function |
|
245 | -select_db($Za){return$this->query("USE ".idf_escape($Za));}function |
|
246 | -query($I,$xe=false){$this->setAttribute(1000,!$xe);return |
|
247 | -parent::query($I,$xe);}}}class |
|
241 | +Min_PDO {var$extension = "PDO_MySQL"; function |
|
242 | +connect($O, $T, $G) {$this->dsn("mysql:charset=utf8;host=" . str_replace(":", ";unix_socket=", preg_replace('~:(\\d)~', ';port=\\1', $O)), $T, $G); return |
|
243 | +true; }function |
|
244 | +set_charset($Da) {$this->query("SET NAMES $Da"); }function |
|
245 | +select_db($Za) {return$this->query("USE " . idf_escape($Za)); }function |
|
246 | +query($I, $xe = false) {$this->setAttribute(1000, !$xe); return |
|
247 | +parent::query($I, $xe); }}}class |
|
248 | 248 | Min_Driver |
249 | 249 | extends |
250 | -Min_SQL{function |
|
251 | -insert($R,$P){return($P?parent::insert($R,$P):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function |
|
252 | -insertUpdate($R,$M,$md){$e=array_keys(reset($M));$ld="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Ge=array();foreach($e |
|
253 | -as$x)$Ge[$x]="$x = VALUES($x)";$Zd="\nON DUPLICATE KEY UPDATE ".implode(", ",$Ge);$Ge=array();$xc=0;foreach($M |
|
254 | -as$P){$W="(".implode(", ",$P).")";if($Ge&&(strlen($ld)+$xc+strlen($W)+strlen($Zd)>1e6)){if(!queries($ld.implode(",\n",$Ge).$Zd))return |
|
255 | -false;$Ge=array();$xc=0;}$Ge[]=$W;$xc+=strlen($W)+2;}return |
|
256 | -queries($ld.implode(",\n",$Ge).$Zd);}}function |
|
257 | -idf_escape($gc){return"`".str_replace("`","``",$gc)."`";}function |
|
258 | -table($gc){return |
|
259 | -idf_escape($gc);}function |
|
260 | -connect(){global$b;$f=new |
|
261 | -Min_DB;$Xa=$b->credentials();if($f->connect($Xa[0],$Xa[1],$Xa[2])){$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");return$f;}$K=$f->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($Ed=iconv("windows-1250","utf-8",$K))>strlen($K))$K=$Ed;return$K;}function |
|
262 | -get_databases($Jb){global$f;$K=get_session("dbs");if($K===null){$I=($f->server_info>=5?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA":"SHOW DATABASES");$K=($Jb?slow_query($I):get_vals($I));restart_session();set_session("dbs",$K);stop_session();}return$K;}function |
|
263 | -limit($I,$Y,$y,$Pc=0,$Kd=" "){return" $I$Y".($y!==null?$Kd."LIMIT $y".($Pc?" OFFSET $Pc":""):"");}function |
|
264 | -limit1($I,$Y){return |
|
265 | -limit($I,$Y,1);}function |
|
266 | -db_collation($h,$Na){global$f;$K=null;$Va=$f->result("SHOW CREATE DATABASE ".idf_escape($h),1);if(preg_match('~ COLLATE ([^ ]+)~',$Va,$A))$K=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$Va,$A))$K=$Na[$A[1]][-1];return$K;}function |
|
267 | -engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"]))$K[]=$L["Engine"];}return$K;}function |
|
268 | -logged_user(){global$f;return$f->result("SELECT USER()");}function |
|
269 | -tables_list(){global$f;return |
|
270 | -get_key_vals($f->server_info>=5?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function |
|
271 | -count_tables($ab){$K=array();foreach($ab |
|
272 | -as$h)$K[$h]=count(get_vals("SHOW TABLES IN ".idf_escape($h)));return$K;}function |
|
273 | -table_status($D="",$Cb=false){global$f;$K=array();foreach(get_rows($Cb&&$f->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($D!=""?"AND TABLE_NAME = ".q($D):"ORDER BY Name"):"SHOW TABLE STATUS".($D!=""?" LIKE ".q(addcslashes($D,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB")$L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]);if(!isset($L["Engine"]))$L["Comment"]="";if($D!="")return$L;$K[$L["Name"]]=$L;}return$K;}function |
|
274 | -is_view($S){return$S["Engine"]===null;}function |
|
275 | -fk_support($S){global$f;return |
|
276 | -preg_match('~InnoDB|IBMDB2I~i',$S["Engine"])||(preg_match('~NDB~i',$S["Engine"])&&version_compare($f->server_info,'5.6')>=0);}function |
|
277 | -fields($R){$K=array();foreach(get_rows("SHOW FULL COLUMNS FROM ".table($R))as$L){preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~',$L["Type"],$A);$K[$L["Field"]]=array("field"=>$L["Field"],"full_type"=>$L["Type"],"type"=>$A[1],"length"=>$A[2],"unsigned"=>ltrim($A[3].$A[4]),"default"=>($L["Default"]!=""||preg_match("~char|set~",$A[1])?$L["Default"]:null),"null"=>($L["Null"]=="YES"),"auto_increment"=>($L["Extra"]=="auto_increment"),"on_update"=>(preg_match('~^on update (.+)~i',$L["Extra"],$A)?$A[1]:""),"collation"=>$L["Collation"],"privileges"=>array_flip(preg_split('~, *~',$L["Privileges"])),"comment"=>$L["Comment"],"primary"=>($L["Key"]=="PRI"),);}return$K;}function |
|
278 | -indexes($R,$g=null){$K=array();foreach(get_rows("SHOW INDEX FROM ".table($R),$g)as$L){$K[$L["Key_name"]]["type"]=($L["Key_name"]=="PRIMARY"?"PRIMARY":($L["Index_type"]=="FULLTEXT"?"FULLTEXT":($L["Non_unique"]?"INDEX":"UNIQUE")));$K[$L["Key_name"]]["columns"][]=$L["Column_name"];$K[$L["Key_name"]]["lengths"][]=$L["Sub_part"];$K[$L["Key_name"]]["descs"][]=null;}return$K;}function |
|
279 | -foreign_keys($R){global$f,$Rc;static$H='`(?:[^`]|``)+`';$K=array();$Wa=$f->result("SHOW CREATE TABLE ".table($R),1);if($Wa){preg_match_all("~CONSTRAINT ($H) FOREIGN KEY ?\\(((?:$H,? ?)+)\\) REFERENCES ($H)(?:\\.($H))? \\(((?:$H,? ?)+)\\)(?: ON DELETE ($Rc))?(?: ON UPDATE ($Rc))?~",$Wa,$Bc,PREG_SET_ORDER);foreach($Bc |
|
280 | -as$A){preg_match_all("~$H~",$A[2],$Rd);preg_match_all("~$H~",$A[5],$fe);$K[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('idf_unescape',$Rd[0]),"target"=>array_map('idf_unescape',$fe[0]),"on_delete"=>($A[6]?$A[6]:"RESTRICT"),"on_update"=>($A[7]?$A[7]:"RESTRICT"),);}}return$K;}function |
|
281 | -view($D){global$f;return |
|
282 | -array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU','',$f->result("SHOW CREATE VIEW ".table($D),1)));}function |
|
283 | -collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"])$K[$L["Charset"]][-1]=$L["Collation"];else$K[$L["Charset"]][]=$L["Collation"];}ksort($K);foreach($K |
|
284 | -as$x=>$V)asort($K[$x]);return$K;}function |
|
285 | -information_schema($h){global$f;return($f->server_info>=5&&$h=="information_schema")||($f->server_info>=5.5&&$h=="performance_schema");}function |
|
286 | -error(){global$f;return |
|
287 | -h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$f->error));}function |
|
288 | -create_database($h,$Ma){return |
|
289 | -queries("CREATE DATABASE ".idf_escape($h).($Ma?" COLLATE ".q($Ma):""));}function |
|
290 | -drop_databases($ab){$K=apply_queries("DROP DATABASE",$ab,'idf_escape');restart_session();set_session("dbs",null);return$K;}function |
|
291 | -rename_database($D,$Ma){$K=false;if(create_database($D,$Ma)){$zd=array();foreach(tables_list()as$R=>$ue)$zd[]=table($R)." TO ".idf_escape($D).".".table($R);$K=(!$zd||queries("RENAME TABLE ".implode(", ",$zd)));if($K)queries("DROP DATABASE ".idf_escape(DB));restart_session();set_session("dbs",null);}return$K;}function |
|
292 | -auto_increment(){$ta=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$s){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$s["columns"],true)){$ta="";break;}if($s["type"]=="PRIMARY")$ta=" UNIQUE";}}return" AUTO_INCREMENT$ta";}function |
|
293 | -alter_table($R,$D,$m,$Kb,$Qa,$tb,$Ma,$sa,$fd){$ma=array();foreach($m |
|
294 | -as$l)$ma[]=($l[1]?($R!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($R!=""?$l[2]:""):"DROP ".idf_escape($l[0]));$ma=array_merge($ma,$Kb);$Ud=($Qa!==null?" COMMENT=".q($Qa):"").($tb?" ENGINE=".q($tb):"").($Ma?" COLLATE ".q($Ma):"").($sa!=""?" AUTO_INCREMENT=$sa":"");if($R=="")return |
|
295 | -queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$ma)."\n)$Ud$fd");if($R!=$D)$ma[]="RENAME TO ".table($D);if($Ud)$ma[]=ltrim($Ud);return($ma||$fd?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$ma).$fd):true);}function |
|
296 | -alter_indexes($R,$ma){foreach($ma |
|
297 | -as$x=>$V)$ma[$x]=($V[2]=="DROP"?"\nDROP INDEX ".idf_escape($V[1]):"\nADD $V[0] ".($V[0]=="PRIMARY"?"KEY ":"").($V[1]!=""?idf_escape($V[1])." ":"")."(".implode(", ",$V[2]).")");return |
|
298 | -queries("ALTER TABLE ".table($R).implode(",",$ma));}function |
|
299 | -truncate_tables($ee){return |
|
300 | -apply_queries("TRUNCATE TABLE",$ee);}function |
|
301 | -drop_views($Ie){return |
|
302 | -queries("DROP VIEW ".implode(", ",array_map('table',$Ie)));}function |
|
303 | -drop_tables($ee){return |
|
304 | -queries("DROP TABLE ".implode(", ",array_map('table',$ee)));}function |
|
305 | -move_tables($ee,$Ie,$fe){$zd=array();foreach(array_merge($ee,$Ie)as$R)$zd[]=table($R)." TO ".idf_escape($fe).".".table($R);return |
|
306 | -queries("RENAME TABLE ".implode(", ",$zd));}function |
|
307 | -copy_tables($ee,$Ie,$fe){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($ee |
|
308 | -as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));if(!queries("\nDROP TABLE IF EXISTS $D")||!queries("CREATE TABLE $D LIKE ".table($R))||!queries("INSERT INTO $D SELECT * FROM ".table($R)))return |
|
309 | -false;}foreach($Ie |
|
310 | -as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));$He=view($R);if(!queries("DROP VIEW IF EXISTS $D")||!queries("CREATE VIEW $D AS $He[select]"))return |
|
311 | -false;}return |
|
312 | -true;}function |
|
313 | -trigger($D){if($D=="")return |
|
314 | -array();$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($D));return |
|
315 | -reset($M);}function |
|
316 | -triggers($R){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$L)$K[$L["Trigger"]]=array($L["Timing"],$L["Event"]);return$K;}function |
|
317 | -trigger_options(){return |
|
318 | -array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function |
|
319 | -routine($D,$ue){global$f,$ub,$lc,$we;$la=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$ve="((".implode("|",array_merge(array_keys($we),$la)).")\\b(?:\\s*\\(((?:[^'\")]|$ub)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$H="\\s*(".($ue=="FUNCTION"?"":$lc).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$ve";$Va=$f->result("SHOW CREATE $ue ".idf_escape($D),2);preg_match("~\\(((?:$H\\s*,?)*)\\)\\s*".($ue=="FUNCTION"?"RETURNS\\s+$ve\\s+":"")."(.*)~is",$Va,$A);$m=array();preg_match_all("~$H\\s*,?~is",$A[1],$Bc,PREG_SET_ORDER);foreach($Bc |
|
320 | -as$dd){$D=str_replace("``","`",$dd[2]).$dd[3];$m[]=array("field"=>$D,"type"=>strtolower($dd[5]),"length"=>preg_replace_callback("~$ub~s",'normalize_enum',$dd[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$dd[8] $dd[7]"))),"null"=>1,"full_type"=>$dd[4],"inout"=>strtoupper($dd[1]),"collation"=>strtolower($dd[9]),);}if($ue!="FUNCTION")return |
|
321 | -array("fields"=>$m,"definition"=>$A[11]);return |
|
322 | -array("fields"=>$m,"returns"=>array("type"=>$A[12],"length"=>$A[13],"unsigned"=>$A[15],"collation"=>$A[16]),"definition"=>$A[17],"language"=>"SQL",);}function |
|
323 | -routines(){return |
|
324 | -get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function |
|
325 | -routine_languages(){return |
|
326 | -array();}function |
|
327 | -last_id(){global$f;return$f->result("SELECT LAST_INSERT_ID()");}function |
|
328 | -explain($f,$I){return$f->query("EXPLAIN ".($f->server_info>=5.1?"PARTITIONS ":"").$I);}function |
|
329 | -found_rows($S,$Y){return($Y||$S["Engine"]!="InnoDB"?null:$S["Rows"]);}function |
|
330 | -types(){return |
|
331 | -array();}function |
|
332 | -schemas(){return |
|
333 | -array();}function |
|
334 | -get_schema(){return"";}function |
|
335 | -set_schema($Fd){return |
|
336 | -true;}function |
|
337 | -create_sql($R,$sa){global$f;$K=$f->result("SHOW CREATE TABLE ".table($R),1);if(!$sa)$K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K);return$K;}function |
|
338 | -truncate_sql($R){return"TRUNCATE ".table($R);}function |
|
339 | -use_sql($Za){return"USE ".idf_escape($Za);}function |
|
340 | -trigger_sql($R,$Xd){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$L)$K.="\n".($Xd=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n";return$K;}function |
|
341 | -show_variables(){return |
|
342 | -get_key_vals("SHOW VARIABLES");}function |
|
343 | -process_list(){return |
|
344 | -get_rows("SHOW FULL PROCESSLIST");}function |
|
345 | -show_status(){return |
|
346 | -get_key_vals("SHOW STATUS");}function |
|
347 | -convert_field($l){if(preg_match("~binary~",$l["type"]))return"HEX(".idf_escape($l["field"]).")";if($l["type"]=="bit")return"BIN(".idf_escape($l["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))return"AsWKT(".idf_escape($l["field"]).")";}function |
|
348 | -unconvert_field($l,$K){if(preg_match("~binary~",$l["type"]))$K="UNHEX($K)";if($l["type"]=="bit")$K="CONV($K, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))$K="GeomFromText($K)";return$K;}function |
|
349 | -support($Db){global$f;return!preg_match("~scheme|sequence|type|view_trigger".($f->server_info<5.1?"|event|partitioning".($f->server_info<5?"|routine|trigger|view":""):"")."~",$Db);}function |
|
350 | -kill_process($V){return |
|
351 | -queries("KILL ".number($V));}function |
|
352 | -max_connections(){global$f;return$f->result("SELECT @@max_connections");}$v="sql";$we=array();$Wd=array();foreach(array('Numbers'=>array("tinyint"=>3,"smallint"=>5,"mediumint"=>8,"int"=>10,"bigint"=>20,"decimal"=>66,"float"=>12,"double"=>21),'Date and time'=>array("date"=>10,"datetime"=>19,"timestamp"=>19,"time"=>10,"year"=>4),'Strings'=>array("char"=>255,"varchar"=>65535,"tinytext"=>255,"text"=>65535,"mediumtext"=>16777215,"longtext"=>4294967295),'Lists'=>array("enum"=>65535,"set"=>64),'Binary'=>array("bit"=>20,"binary"=>255,"varbinary"=>65535,"tinyblob"=>255,"blob"=>65535,"mediumblob"=>16777215,"longblob"=>4294967295),'Geometry'=>array("geometry"=>0,"point"=>0,"linestring"=>0,"polygon"=>0,"multipoint"=>0,"multilinestring"=>0,"multipolygon"=>0,"geometrycollection"=>0),)as$x=>$V){$we+=$V;$Wd[$x]=array_keys($V);}$Ce=array("unsigned","zerofill","unsigned zerofill");$Wc=array("=","<",">","<=",">=","!=","LIKE","LIKE %%","REGEXP","IN","IS NULL","NOT LIKE","NOT REGEXP","NOT IN","IS NOT NULL","SQL");$Tb=array("char_length","date","from_unixtime","lower","round","sec_to_time","time_to_sec","upper");$Vb=array("avg","count","count distinct","group_concat","max","min","sum");$mb=array(array("char"=>"md5/sha1/password/encrypt/uuid","binary"=>"md5/sha1","date|time"=>"now",),array("(^|[^o])int|float|double|decimal"=>"+/-","date"=>"+ interval/- interval","time"=>"addtime/subtime","char|text"=>"concat",));}define("SERVER",$_GET[DRIVER]);define("DB",$_GET["db"]);define("ME",preg_replace('~^[^?]*/([^?]*).*~','\\1',$_SERVER["REQUEST_URI"]).'?'.(sid()?SID.'&':'').(SERVER!==null?DRIVER."=".urlencode(SERVER).'&':'').(isset($_GET["username"])?"username=".urlencode($_GET["username"]).'&':'').(DB!=""?'db='.urlencode(DB).'&'.(isset($_GET["ns"])?"ns=".urlencode($_GET["ns"])."&":""):''));$ca="4.2.5";class |
|
353 | -Adminer{var$operators=array("<=",">=");var$_values=array();function |
|
354 | -name(){return"<a href='https://www.adminer.org/editor/' target='_blank' id='h1'>".'Editor'."</a>";}function |
|
355 | -credentials(){return |
|
356 | -array(SERVER,$_GET["username"],get_password());}function |
|
357 | -permanentLogin($Va=false){return |
|
358 | -password_file($Va);}function |
|
359 | -bruteForceKey(){return$_SERVER["REMOTE_ADDR"];}function |
|
360 | -database(){global$f;if($f){$ab=$this->databases(false);return(!$ab?$f->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1)"):$ab[(information_schema($ab[0])?1:0)]);}}function |
|
361 | -schemas(){return |
|
362 | -schemas();}function |
|
363 | -databases($Jb=true){return |
|
364 | -get_databases($Jb);}function |
|
365 | -queryTimeout(){return |
|
366 | -5;}function |
|
367 | -headers(){return |
|
368 | -true;}function |
|
369 | -head(){return |
|
370 | -true;}function |
|
371 | -loginForm(){echo'<table cellspacing="0"> |
|
372 | -<tr><th>Username<td><input type="hidden" name="auth[driver]" value="server"><input name="auth[username]" id="username" value="',h($_GET["username"]),'" autocapitalize="off"> |
|
250 | +Min_SQL {function |
|
251 | +insert($R, $P) {return($P ? parent::insert($R, $P) : queries("INSERT INTO " . table($R) . " ()\nVALUES ()")); }function |
|
252 | +insertUpdate($R, $M, $md) {$e = array_keys(reset($M)); $ld = "INSERT INTO " . table($R) . " (" . implode(", ", $e) . ") VALUES\n"; $Ge = array(); foreach ($e |
|
253 | +as$x)$Ge[$x] = "$x = VALUES($x)"; $Zd = "\nON DUPLICATE KEY UPDATE " . implode(", ", $Ge); $Ge = array(); $xc = 0; foreach ($M |
|
254 | +as$P) {$W = "(" . implode(", ", $P) . ")"; if ($Ge && (strlen($ld) + $xc + strlen($W) + strlen($Zd) > 1e6)) {if (!queries($ld . implode(",\n", $Ge) . $Zd))return |
|
255 | +false; $Ge = array(); $xc = 0; }$Ge[] = $W; $xc += strlen($W) + 2; }return |
|
256 | +queries($ld . implode(",\n", $Ge) . $Zd); }}function |
|
257 | +idf_escape($gc) {return"`" . str_replace("`", "``", $gc) . "`"; }function |
|
258 | +table($gc) {return |
|
259 | +idf_escape($gc); }function |
|
260 | +connect() {global$b; $f = new |
|
261 | +Min_DB; $Xa = $b->credentials(); if ($f->connect($Xa[0], $Xa[1], $Xa[2])) {$f->set_charset(charset($f)); $f->query("SET sql_quote_show_create = 1, autocommit = 1"); return$f; }$K = $f->error; if (function_exists('iconv') && !is_utf8($K) && strlen($Ed = iconv("windows-1250", "utf-8", $K)) > strlen($K))$K = $Ed; return$K; }function |
|
262 | +get_databases($Jb) {global$f; $K = get_session("dbs"); if ($K === null) {$I = ($f->server_info >= 5 ? "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA" : "SHOW DATABASES"); $K = ($Jb ? slow_query($I) : get_vals($I)); restart_session(); set_session("dbs", $K); stop_session(); }return$K; }function |
|
263 | +limit($I, $Y, $y, $Pc = 0, $Kd = " ") {return" $I$Y" . ($y !== null ? $Kd . "LIMIT $y" . ($Pc ? " OFFSET $Pc" : "") : ""); }function |
|
264 | +limit1($I, $Y) {return |
|
265 | +limit($I, $Y, 1); }function |
|
266 | +db_collation($h, $Na) {global$f; $K = null; $Va = $f->result("SHOW CREATE DATABASE " . idf_escape($h), 1); if (preg_match('~ COLLATE ([^ ]+)~', $Va, $A))$K = $A[1]; elseif (preg_match('~ CHARACTER SET ([^ ]+)~', $Va, $A))$K = $Na[$A[1]][-1]; return$K; }function |
|
267 | +engines() {$K = array(); foreach (get_rows("SHOW ENGINES")as$L) {if (preg_match("~YES|DEFAULT~", $L["Support"]))$K[] = $L["Engine"]; }return$K; }function |
|
268 | +logged_user() {global$f; return$f->result("SELECT USER()"); }function |
|
269 | +tables_list() {global$f; return |
|
270 | +get_key_vals($f->server_info >= 5 ? "SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME" : "SHOW TABLES"); }function |
|
271 | +count_tables($ab) {$K = array(); foreach ($ab |
|
272 | +as$h)$K[$h] = count(get_vals("SHOW TABLES IN " . idf_escape($h))); return$K; }function |
|
273 | +table_status($D = "", $Cb = false) {global$f; $K = array(); foreach (get_rows($Cb && $f->server_info >= 5 ? "SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() " . ($D != "" ? "AND TABLE_NAME = " . q($D) : "ORDER BY Name") : "SHOW TABLE STATUS" . ($D != "" ? " LIKE " . q(addcslashes($D, "%_\\")) : ""))as$L) {if ($L["Engine"] == "InnoDB")$L["Comment"] = preg_replace('~(?:(.+); )?InnoDB free: .*~', '\\1', $L["Comment"]); if (!isset($L["Engine"]))$L["Comment"] = ""; if ($D != "")return$L; $K[$L["Name"]] = $L; }return$K; }function |
|
274 | +is_view($S) {return$S["Engine"] === null; }function |
|
275 | +fk_support($S) {global$f; return |
|
276 | +preg_match('~InnoDB|IBMDB2I~i', $S["Engine"]) || (preg_match('~NDB~i', $S["Engine"]) && version_compare($f->server_info, '5.6') >= 0); }function |
|
277 | +fields($R) {$K = array(); foreach (get_rows("SHOW FULL COLUMNS FROM " . table($R))as$L) {preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~', $L["Type"], $A); $K[$L["Field"]] = array("field"=>$L["Field"], "full_type"=>$L["Type"], "type"=>$A[1], "length"=>$A[2], "unsigned"=>ltrim($A[3] . $A[4]), "default"=>($L["Default"] != "" || preg_match("~char|set~", $A[1]) ? $L["Default"] : null), "null"=>($L["Null"] == "YES"), "auto_increment"=>($L["Extra"] == "auto_increment"), "on_update"=>(preg_match('~^on update (.+)~i', $L["Extra"], $A) ? $A[1] : ""), "collation"=>$L["Collation"], "privileges"=>array_flip(preg_split('~, *~', $L["Privileges"])), "comment"=>$L["Comment"], "primary"=>($L["Key"] == "PRI"),); }return$K; }function |
|
278 | +indexes($R, $g = null) {$K = array(); foreach (get_rows("SHOW INDEX FROM " . table($R), $g)as$L) {$K[$L["Key_name"]]["type"] = ($L["Key_name"] == "PRIMARY" ? "PRIMARY" : ($L["Index_type"] == "FULLTEXT" ? "FULLTEXT" : ($L["Non_unique"] ? "INDEX" : "UNIQUE"))); $K[$L["Key_name"]]["columns"][] = $L["Column_name"]; $K[$L["Key_name"]]["lengths"][] = $L["Sub_part"]; $K[$L["Key_name"]]["descs"][] = null; }return$K; }function |
|
279 | +foreign_keys($R) {global$f, $Rc; static$H = '`(?:[^`]|``)+`'; $K = array(); $Wa = $f->result("SHOW CREATE TABLE " . table($R), 1); if ($Wa) {preg_match_all("~CONSTRAINT ($H) FOREIGN KEY ?\\(((?:$H,? ?)+)\\) REFERENCES ($H)(?:\\.($H))? \\(((?:$H,? ?)+)\\)(?: ON DELETE ($Rc))?(?: ON UPDATE ($Rc))?~", $Wa, $Bc, PREG_SET_ORDER); foreach ($Bc |
|
280 | +as$A) {preg_match_all("~$H~", $A[2], $Rd); preg_match_all("~$H~", $A[5], $fe); $K[idf_unescape($A[1])] = array("db"=>idf_unescape($A[4] != "" ? $A[3] : $A[4]), "table"=>idf_unescape($A[4] != "" ? $A[4] : $A[3]), "source"=>array_map('idf_unescape', $Rd[0]), "target"=>array_map('idf_unescape', $fe[0]), "on_delete"=>($A[6] ? $A[6] : "RESTRICT"), "on_update"=>($A[7] ? $A[7] : "RESTRICT"),); }}return$K; }function |
|
281 | +view($D) {global$f; return |
|
282 | +array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU', '', $f->result("SHOW CREATE VIEW " . table($D), 1))); }function |
|
283 | +collations() {$K = array(); foreach (get_rows("SHOW COLLATION")as$L) {if ($L["Default"])$K[$L["Charset"]][-1] = $L["Collation"]; else$K[$L["Charset"]][] = $L["Collation"]; }ksort($K); foreach ($K |
|
284 | +as$x=>$V)asort($K[$x]); return$K; }function |
|
285 | +information_schema($h) {global$f; return($f->server_info >= 5 && $h == "information_schema") || ($f->server_info >= 5.5 && $h == "performance_schema"); }function |
|
286 | +error() {global$f; return |
|
287 | +h(preg_replace('~^You have an error.*syntax to use~U', "Syntax error", $f->error)); }function |
|
288 | +create_database($h, $Ma) {return |
|
289 | +queries("CREATE DATABASE " . idf_escape($h) . ($Ma ? " COLLATE " . q($Ma) : "")); }function |
|
290 | +drop_databases($ab) {$K = apply_queries("DROP DATABASE", $ab, 'idf_escape'); restart_session(); set_session("dbs", null); return$K; }function |
|
291 | +rename_database($D, $Ma) {$K = false; if (create_database($D, $Ma)) {$zd = array(); foreach (tables_list()as$R=>$ue)$zd[] = table($R) . " TO " . idf_escape($D) . "." . table($R); $K = (!$zd || queries("RENAME TABLE " . implode(", ", $zd))); if ($K)queries("DROP DATABASE " . idf_escape(DB)); restart_session(); set_session("dbs", null); }return$K; }function |
|
292 | +auto_increment() {$ta = " PRIMARY KEY"; if ($_GET["create"] != "" && $_POST["auto_increment_col"]) {foreach (indexes($_GET["create"])as$s) {if (in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"], $s["columns"], true)) {$ta = ""; break; }if ($s["type"] == "PRIMARY")$ta = " UNIQUE"; }}return" AUTO_INCREMENT$ta"; }function |
|
293 | +alter_table($R, $D, $m, $Kb, $Qa, $tb, $Ma, $sa, $fd) {$ma = array(); foreach ($m |
|
294 | +as$l)$ma[] = ($l[1] ? ($R != "" ? ($l[0] != "" ? "CHANGE " . idf_escape($l[0]) : "ADD") : " ") . " " . implode($l[1]) . ($R != "" ? $l[2] : "") : "DROP " . idf_escape($l[0])); $ma = array_merge($ma, $Kb); $Ud = ($Qa !== null ? " COMMENT=" . q($Qa) : "") . ($tb ? " ENGINE=" . q($tb) : "") . ($Ma ? " COLLATE " . q($Ma) : "") . ($sa != "" ? " AUTO_INCREMENT=$sa" : ""); if ($R == "")return |
|
295 | +queries("CREATE TABLE " . table($D) . " (\n" . implode(",\n", $ma) . "\n)$Ud$fd"); if ($R != $D)$ma[] = "RENAME TO " . table($D); if ($Ud)$ma[] = ltrim($Ud); return($ma || $fd ? queries("ALTER TABLE " . table($R) . "\n" . implode(",\n", $ma) . $fd) : true); }function |
|
296 | +alter_indexes($R, $ma) {foreach ($ma |
|
297 | +as$x=>$V)$ma[$x] = ($V[2] == "DROP" ? "\nDROP INDEX " . idf_escape($V[1]) : "\nADD $V[0] " . ($V[0] == "PRIMARY" ? "KEY " : "") . ($V[1] != "" ? idf_escape($V[1]) . " " : "") . "(" . implode(", ", $V[2]) . ")"); return |
|
298 | +queries("ALTER TABLE " . table($R) . implode(",", $ma)); }function |
|
299 | +truncate_tables($ee) {return |
|
300 | +apply_queries("TRUNCATE TABLE", $ee); }function |
|
301 | +drop_views($Ie) {return |
|
302 | +queries("DROP VIEW " . implode(", ", array_map('table', $Ie))); }function |
|
303 | +drop_tables($ee) {return |
|
304 | +queries("DROP TABLE " . implode(", ", array_map('table', $ee))); }function |
|
305 | +move_tables($ee, $Ie, $fe) {$zd = array(); foreach (array_merge($ee, $Ie)as$R)$zd[] = table($R) . " TO " . idf_escape($fe) . "." . table($R); return |
|
306 | +queries("RENAME TABLE " . implode(", ", $zd)); }function |
|
307 | +copy_tables($ee, $Ie, $fe) {queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'"); foreach ($ee |
|
308 | +as$R) {$D = ($fe == DB ? table("copy_$R") : idf_escape($fe) . "." . table($R)); if (!queries("\nDROP TABLE IF EXISTS $D") || !queries("CREATE TABLE $D LIKE " . table($R)) || !queries("INSERT INTO $D SELECT * FROM " . table($R)))return |
|
309 | +false; }foreach ($Ie |
|
310 | +as$R) {$D = ($fe == DB ? table("copy_$R") : idf_escape($fe) . "." . table($R)); $He = view($R); if (!queries("DROP VIEW IF EXISTS $D") || !queries("CREATE VIEW $D AS $He[select]"))return |
|
311 | +false; }return |
|
312 | +true; }function |
|
313 | +trigger($D) {if ($D == "")return |
|
314 | +array(); $M = get_rows("SHOW TRIGGERS WHERE `Trigger` = " . q($D)); return |
|
315 | +reset($M); }function |
|
316 | +triggers($R) {$K = array(); foreach (get_rows("SHOW TRIGGERS LIKE " . q(addcslashes($R, "%_\\")))as$L)$K[$L["Trigger"]] = array($L["Timing"], $L["Event"]); return$K; }function |
|
317 | +trigger_options() {return |
|
318 | +array("Timing"=>array("BEFORE", "AFTER"), "Event"=>array("INSERT", "UPDATE", "DELETE"), "Type"=>array("FOR EACH ROW"),); }function |
|
319 | +routine($D, $ue) {global$f, $ub, $lc, $we; $la = array("bool", "boolean", "integer", "double precision", "real", "dec", "numeric", "fixed", "national char", "national varchar"); $ve = "((" . implode("|", array_merge(array_keys($we), $la)) . ")\\b(?:\\s*\\(((?:[^'\")]|$ub)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?"; $H = "\\s*(" . ($ue == "FUNCTION" ? "" : $lc) . ")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$ve"; $Va = $f->result("SHOW CREATE $ue " . idf_escape($D), 2); preg_match("~\\(((?:$H\\s*,?)*)\\)\\s*" . ($ue == "FUNCTION" ? "RETURNS\\s+$ve\\s+" : "") . "(.*)~is", $Va, $A); $m = array(); preg_match_all("~$H\\s*,?~is", $A[1], $Bc, PREG_SET_ORDER); foreach ($Bc |
|
320 | +as$dd) {$D = str_replace("``", "`", $dd[2]) . $dd[3]; $m[] = array("field"=>$D, "type"=>strtolower($dd[5]), "length"=>preg_replace_callback("~$ub~s", 'normalize_enum', $dd[6]), "unsigned"=>strtolower(preg_replace('~\\s+~', ' ', trim("$dd[8] $dd[7]"))), "null"=>1, "full_type"=>$dd[4], "inout"=>strtoupper($dd[1]), "collation"=>strtolower($dd[9]),); }if ($ue != "FUNCTION")return |
|
321 | +array("fields"=>$m, "definition"=>$A[11]); return |
|
322 | +array("fields"=>$m, "returns"=>array("type"=>$A[12], "length"=>$A[13], "unsigned"=>$A[15], "collation"=>$A[16]), "definition"=>$A[17], "language"=>"SQL",); }function |
|
323 | +routines() {return |
|
324 | +get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = " . q(DB)); }function |
|
325 | +routine_languages() {return |
|
326 | +array(); }function |
|
327 | +last_id() {global$f; return$f->result("SELECT LAST_INSERT_ID()"); }function |
|
328 | +explain($f, $I) {return$f->query("EXPLAIN " . ($f->server_info >= 5.1 ? "PARTITIONS " : "") . $I); }function |
|
329 | +found_rows($S, $Y) {return($Y || $S["Engine"] != "InnoDB" ? null : $S["Rows"]); }function |
|
330 | +types() {return |
|
331 | +array(); }function |
|
332 | +schemas() {return |
|
333 | +array(); }function |
|
334 | +get_schema() {return""; }function |
|
335 | +set_schema($Fd) {return |
|
336 | +true; }function |
|
337 | +create_sql($R, $sa) {global$f; $K = $f->result("SHOW CREATE TABLE " . table($R), 1); if (!$sa)$K = preg_replace('~ AUTO_INCREMENT=\\d+~', '', $K); return$K; }function |
|
338 | +truncate_sql($R) {return"TRUNCATE " . table($R); }function |
|
339 | +use_sql($Za) {return"USE " . idf_escape($Za); }function |
|
340 | +trigger_sql($R, $Xd) {$K = ""; foreach (get_rows("SHOW TRIGGERS LIKE " . q(addcslashes($R, "%_\\")), null, "-- ")as$L)$K .= "\n" . ($Xd == 'CREATE+ALTER' ? "DROP TRIGGER IF EXISTS " . idf_escape($L["Trigger"]) . ";;\n" : "") . "CREATE TRIGGER " . idf_escape($L["Trigger"]) . " $L[Timing] $L[Event] ON " . table($L["Table"]) . " FOR EACH ROW\n$L[Statement];;\n"; return$K; }function |
|
341 | +show_variables() {return |
|
342 | +get_key_vals("SHOW VARIABLES"); }function |
|
343 | +process_list() {return |
|
344 | +get_rows("SHOW FULL PROCESSLIST"); }function |
|
345 | +show_status() {return |
|
346 | +get_key_vals("SHOW STATUS"); }function |
|
347 | +convert_field($l) {if (preg_match("~binary~", $l["type"]))return"HEX(" . idf_escape($l["field"]) . ")"; if ($l["type"] == "bit")return"BIN(" . idf_escape($l["field"]) . " + 0)"; if (preg_match("~geometry|point|linestring|polygon~", $l["type"]))return"AsWKT(" . idf_escape($l["field"]) . ")"; }function |
|
348 | +unconvert_field($l, $K) {if (preg_match("~binary~", $l["type"]))$K = "UNHEX($K)"; if ($l["type"] == "bit")$K = "CONV($K, 2, 10) + 0"; if (preg_match("~geometry|point|linestring|polygon~", $l["type"]))$K = "GeomFromText($K)"; return$K; }function |
|
349 | +support($Db) {global$f; return!preg_match("~scheme|sequence|type|view_trigger" . ($f->server_info < 5.1 ? "|event|partitioning" . ($f->server_info < 5 ? "|routine|trigger|view" : "") : "") . "~", $Db); }function |
|
350 | +kill_process($V) {return |
|
351 | +queries("KILL " . number($V)); }function |
|
352 | +max_connections() {global$f; return$f->result("SELECT @@max_connections"); }$v = "sql"; $we = array(); $Wd = array(); foreach (array('Numbers'=>array("tinyint"=>3, "smallint"=>5, "mediumint"=>8, "int"=>10, "bigint"=>20, "decimal"=>66, "float"=>12, "double"=>21), 'Date and time'=>array("date"=>10, "datetime"=>19, "timestamp"=>19, "time"=>10, "year"=>4), 'Strings'=>array("char"=>255, "varchar"=>65535, "tinytext"=>255, "text"=>65535, "mediumtext"=>16777215, "longtext"=>4294967295), 'Lists'=>array("enum"=>65535, "set"=>64), 'Binary'=>array("bit"=>20, "binary"=>255, "varbinary"=>65535, "tinyblob"=>255, "blob"=>65535, "mediumblob"=>16777215, "longblob"=>4294967295), 'Geometry'=>array("geometry"=>0, "point"=>0, "linestring"=>0, "polygon"=>0, "multipoint"=>0, "multilinestring"=>0, "multipolygon"=>0, "geometrycollection"=>0),)as$x=>$V) {$we += $V; $Wd[$x] = array_keys($V); }$Ce = array("unsigned", "zerofill", "unsigned zerofill"); $Wc = array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "REGEXP", "IN", "IS NULL", "NOT LIKE", "NOT REGEXP", "NOT IN", "IS NOT NULL", "SQL"); $Tb = array("char_length", "date", "from_unixtime", "lower", "round", "sec_to_time", "time_to_sec", "upper"); $Vb = array("avg", "count", "count distinct", "group_concat", "max", "min", "sum"); $mb = array(array("char"=>"md5/sha1/password/encrypt/uuid", "binary"=>"md5/sha1", "date|time"=>"now",), array("(^|[^o])int|float|double|decimal"=>"+/-", "date"=>"+ interval/- interval", "time"=>"addtime/subtime", "char|text"=>"concat",)); }define("SERVER", $_GET[DRIVER]); define("DB", $_GET["db"]); define("ME", preg_replace('~^[^?]*/([^?]*).*~', '\\1', $_SERVER["REQUEST_URI"]) . '?' . (sid() ? SID . '&' : '') . (SERVER !== null ? DRIVER . "=" . urlencode(SERVER) . '&' : '') . (isset($_GET["username"]) ? "username=" . urlencode($_GET["username"]) . '&' : '') . (DB != "" ? 'db=' . urlencode(DB) . '&' . (isset($_GET["ns"]) ? "ns=" . urlencode($_GET["ns"]) . "&" : "") : '')); $ca = "4.2.5"; class |
|
353 | +Adminer {var$operators = array("<=", ">="); var$_values = array(); function |
|
354 | +name() {return"<a href='https://www.adminer.org/editor/' target='_blank' id='h1'>" . 'Editor' . "</a>"; }function |
|
355 | +credentials() {return |
|
356 | +array(SERVER, $_GET["username"], get_password()); }function |
|
357 | +permanentLogin($Va = false) {return |
|
358 | +password_file($Va); }function |
|
359 | +bruteForceKey() {return$_SERVER["REMOTE_ADDR"]; }function |
|
360 | +database() {global$f; if ($f) {$ab = $this->databases(false); return(!$ab ? $f->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1)") : $ab[(information_schema($ab[0]) ? 1 : 0)]); }}function |
|
361 | +schemas() {return |
|
362 | +schemas(); }function |
|
363 | +databases($Jb = true) {return |
|
364 | +get_databases($Jb); }function |
|
365 | +queryTimeout() {return |
|
366 | +5; }function |
|
367 | +headers() {return |
|
368 | +true; }function |
|
369 | +head() {return |
|
370 | +true; }function |
|
371 | +loginForm() {echo'<table cellspacing="0"> |
|
372 | +<tr><th>Username<td><input type="hidden" name="auth[driver]" value="server"><input name="auth[username]" id="username" value="',h($_GET["username"]), '" autocapitalize="off"> |
|
373 | 373 | <tr><th>Password<td><input type="password" name="auth[password]"> |
374 | 374 | </table> |
375 | 375 | <script type="text/javascript"> |
376 | 376 | focus(document.getElementById(\'username\')); |
377 | 377 | </script> |
378 | -',"<p><input type='submit' value='".'Login'."'>\n",checkbox("auth[permanent]",1,$_COOKIE["adminer_permanent"],'Permanent login')."\n";}function |
|
379 | -login($_c,$G){global$f;$f->query("SET time_zone = ".q(substr_replace(@date("O"),":",-2,0)));return |
|
380 | -true;}function |
|
381 | -tableName($ce){return |
|
382 | -h($ce["Comment"]!=""?$ce["Comment"]:$ce["Name"]);}function |
|
383 | -fieldName($l,$E=0){return |
|
384 | -h($l["comment"]!=""?$l["comment"]:$l["field"]);}function |
|
385 | -selectLinks($ce,$P=""){$a=$ce["Name"];if($P!==null)echo'<p class="tabs"><a href="'.h(ME.'edit='.urlencode($a).$P).'">'.'New item'."</a>\n";}function |
|
386 | -foreignKeys($R){return |
|
387 | -foreign_keys($R);}function |
|
388 | -backwardKeys($R,$be){$K=array();foreach(get_rows("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME |
|
378 | +',"<p><input type='submit' value='" . 'Login' . "'>\n", checkbox("auth[permanent]", 1, $_COOKIE["adminer_permanent"], 'Permanent login') . "\n"; }function |
|
379 | +login($_c, $G) {global$f; $f->query("SET time_zone = " . q(substr_replace(@date("O"), ":", -2, 0))); return |
|
380 | +true; }function |
|
381 | +tableName($ce) {return |
|
382 | +h($ce["Comment"] != "" ? $ce["Comment"] : $ce["Name"]); }function |
|
383 | +fieldName($l, $E = 0) {return |
|
384 | +h($l["comment"] != "" ? $l["comment"] : $l["field"]); }function |
|
385 | +selectLinks($ce, $P = "") {$a = $ce["Name"]; if ($P !== null)echo'<p class="tabs"><a href="' . h(ME . 'edit=' . urlencode($a) . $P) . '">' . 'New item' . "</a>\n"; }function |
|
386 | +foreignKeys($R) {return |
|
387 | +foreign_keys($R); }function |
|
388 | +backwardKeys($R, $be) {$K = array(); foreach (get_rows("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME |
|
389 | 389 | FROM information_schema.KEY_COLUMN_USAGE |
390 | -WHERE TABLE_SCHEMA = ".q($this->database())." |
|
391 | -AND REFERENCED_TABLE_SCHEMA = ".q($this->database())." |
|
392 | -AND REFERENCED_TABLE_NAME = ".q($R)." |
|
393 | -ORDER BY ORDINAL_POSITION",null,"")as$L)$K[$L["TABLE_NAME"]]["keys"][$L["CONSTRAINT_NAME"]][$L["COLUMN_NAME"]]=$L["REFERENCED_COLUMN_NAME"];foreach($K |
|
394 | -as$x=>$V){$D=$this->tableName(table_status($x,true));if($D!=""){$Gd=preg_quote($be);$Kd="(:|\\s*-)?\\s+";$K[$x]["name"]=(preg_match("(^$Gd$Kd(.+)|^(.+?)$Kd$Gd\$)iu",$D,$A)?$A[2].$A[3]:$D);}else |
|
395 | -unset($K[$x]);}return$K;}function |
|
396 | -backwardKeysPrint($wa,$L){foreach($wa |
|
397 | -as$R=>$va){foreach($va["keys"]as$Oa){$z=ME.'select='.urlencode($R);$q=0;foreach($Oa |
|
398 | -as$d=>$V)$z.=where_link($q++,$d,$L[$V]);echo"<a href='".h($z)."'>".h($va["name"])."</a>";$z=ME.'edit='.urlencode($R);foreach($Oa |
|
399 | -as$d=>$V)$z.="&set".urlencode("[".bracket_escape($d)."]")."=".urlencode($L[$V]);echo"<a href='".h($z)."' title='".'New item'."'>+</a> ";}}}function |
|
400 | -selectQuery($I,$je){return"<!--\n".str_replace("--","--><!-- ",$I)."\n($je)\n-->\n";}function |
|
401 | -rowDescription($R){foreach(fields($R)as$l){if(preg_match("~varchar|character varying~",$l["type"]))return |
|
402 | -idf_escape($l["field"]);}return"";}function |
|
403 | -rowDescriptions($M,$Mb){$K=$M;foreach($M[0]as$x=>$V){if(list($R,$r,$D)=$this->_foreignColumn($Mb,$x)){$hc=array();foreach($M |
|
404 | -as$L)$hc[$L[$x]]=q($L[$x]);$eb=$this->_values[$R];if(!$eb)$eb=get_key_vals("SELECT $r, $D FROM ".table($R)." WHERE $r IN (".implode(", ",$hc).")");foreach($M |
|
405 | -as$C=>$L){if(isset($L[$x]))$K[$C][$x]=(string)$eb[$L[$x]];}}}return$K;}function |
|
406 | -selectLink($V,$l){}function |
|
407 | -selectVal($V,$z,$l,$ad){$K=($V===null?" ":$V);$z=h($z);if(preg_match('~blob|bytea~',$l["type"])&&!is_utf8($V)){$K=lang(array('%d byte','%d bytes'),strlen($ad));if(preg_match("~^(GIF|\xFF\xD8\xFF|\x89PNG\x0D\x0A\x1A\x0A)~",$ad))$K="<img src='$z' alt='$K'>";}if(like_bool($l)&&$K!=" ")$K=($V?'yes':'no');if($z)$K="<a href='$z'".(is_url($z)?" rel='noreferrer'":"").">$K</a>";if(!$z&&!like_bool($l)&&preg_match('~int|float|double|decimal~',$l["type"]))$K="<div class='number'>$K</div>";elseif(preg_match('~date~',$l["type"]))$K="<div class='datetime'>$K</div>";return$K;}function |
|
408 | -editVal($V,$l){if(preg_match('~date|timestamp~',$l["type"])&&$V!==null)return |
|
409 | -preg_replace('~^(\\d{2}(\\d+))-(0?(\\d+))-(0?(\\d+))~','$1-$3-$5',$V);return$V;}function |
|
410 | -selectColumnsPrint($N,$e){}function |
|
411 | -selectSearchPrint($Y,$e,$t){$Y=(array)$_GET["where"];echo'<fieldset id="fieldset-search"><legend>'.'Search'."</legend><div>\n";$qc=array();foreach($Y |
|
412 | -as$x=>$V)$qc[$V["col"]]=$x;$q=0;$m=fields($_GET["select"]);foreach($e |
|
413 | -as$D=>$db){$l=$m[$D];if(preg_match("~enum~",$l["type"])||like_bool($l)){$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'>:",(like_bool($l)?" <select name='where[$q][val]'>".optionlist(array(""=>"",'no','yes'),$Y[$x]["val"],true)."</select>":enum_input("checkbox"," name='where[$q][val][]'",$l,(array)$Y[$x]["val"],($l["null"]?0:null))),"</div>\n";unset($e[$D]);}elseif(is_array($Xc=$this->_foreignKeyOptions($_GET["select"],$D))){if($m[$D]["null"])$Xc[0]='('.'empty'.')';$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'><input type='hidden' name='where[$q][op]' value='='>: <select name='where[$q][val]'>".optionlist($Xc,$Y[$x]["val"],true)."</select></div>\n";unset($e[$D]);}}$q=0;foreach($Y |
|
414 | -as$V){if(($V["col"]==""||$e[$V["col"]])&&"$V[col]$V[val]"!=""){echo"<div><select name='where[$q][col]'><option value=''>(".'anywhere'.")".optionlist($e,$V["col"],true)."</select>",html_select("where[$q][op]",array(-1=>"")+$this->operators,$V["op"]),"<input type='search' name='where[$q][val]' value='".h($V["val"])."' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div>\n";$q++;}}echo"<div><select name='where[$q][col]' onchange='this.nextSibling.nextSibling.onchange();'><option value=''>(".'anywhere'.")".optionlist($e,null,true)."</select>",html_select("where[$q][op]",array(-1=>"")+$this->operators),"<input type='search' name='where[$q][val]' onchange='selectAddRow(this);' onsearch='selectSearch(this);'></div>\n","</div></fieldset>\n";}function |
|
415 | -selectOrderPrint($E,$e,$t){$Zc=array();foreach($t |
|
416 | -as$x=>$s){$E=array();foreach($s["columns"]as$V)$E[]=$e[$V];if(count(array_filter($E,'strlen'))>1&&$x!="PRIMARY")$Zc[$x]=implode(", ",$E);}if($Zc){echo'<fieldset><legend>'.'Sort'."</legend><div>","<select name='index_order'>".optionlist(array(""=>"")+$Zc,($_GET["order"][0]!=""?"":$_GET["index_order"]),true)."</select>","</div></fieldset>\n";}if($_GET["order"])echo"<div style='display: none;'>".hidden_fields(array("order"=>array(1=>reset($_GET["order"])),"desc"=>($_GET["desc"]?array(1=>1):array()),))."</div>\n";}function |
|
417 | -selectLimitPrint($y){echo"<fieldset><legend>".'Limit'."</legend><div>";echo |
|
418 | -html_select("limit",array("","50","100"),$y),"</div></fieldset>\n";}function |
|
419 | -selectLengthPrint($he){}function |
|
420 | -selectActionPrint($t){echo"<fieldset><legend>".'Action'."</legend><div>","<input type='submit' value='".'Select'."'>","</div></fieldset>\n";}function |
|
421 | -selectCommandPrint(){return |
|
422 | -true;}function |
|
423 | -selectImportPrint(){return |
|
424 | -true;}function |
|
425 | -selectEmailPrint($qb,$e){if($qb){print_fieldset("email",'E-mail',$_POST["email_append"]);echo"<div onkeydown=\"eventStop(event); return bodyKeydown(event, 'email');\">\n","<p>".'From'.": <input name='email_from' value='".h($_POST?$_POST["email_from"]:$_COOKIE["adminer_email"])."'>\n",'Subject'.": <input name='email_subject' value='".h($_POST["email_subject"])."'>\n","<p><textarea name='email_message' rows='15' cols='75'>".h($_POST["email_message"].($_POST["email_append"]?'{$'."$_POST[email_addition]}":""))."</textarea>\n","<p onkeydown=\"eventStop(event); return bodyKeydown(event, 'email_append');\">".html_select("email_addition",$e,$_POST["email_addition"])."<input type='submit' name='email_append' value='".'Insert'."'>\n";echo"<p>".'Attachments'.": <input type='file' name='email_files[]' onchange=\"this.onchange = function () { }; var el = this.cloneNode(true); el.value = ''; this.parentNode.appendChild(el);\">","<p>".(count($qb)==1?'<input type="hidden" name="email_field" value="'.h(key($qb)).'">':html_select("email_field",$qb)),"<input type='submit' name='email' value='".'Send'."' onclick=\"return this.form['delete'].onclick();\">\n","</div>\n","</div></fieldset>\n";}}function |
|
426 | -selectColumnsProcess($e,$t){return |
|
427 | -array(array(),array());}function |
|
428 | -selectSearchProcess($m,$t){$K=array();foreach((array)$_GET["where"]as$x=>$Y){$La=$Y["col"];$Uc=$Y["op"];$V=$Y["val"];if(($x<0?"":$La).$V!=""){$Ra=array();foreach(($La!=""?array($La=>$m[$La]):$m)as$D=>$l){if($La!=""||is_numeric($V)||!preg_match('~int|float|double|decimal~',$l["type"])){$D=idf_escape($D);if($La!=""&&$l["type"]=="enum")$Ra[]=(in_array(0,$V)?"$D IS NULL OR ":"")."$D IN (".implode(", ",array_map('intval',$V)).")";else{$ie=preg_match('~char|text|enum|set~',$l["type"]);$W=$this->processInput($l,(!$Uc&&$ie&&preg_match('~^[^%]+$~',$V)?"%$V%":$V));$Ra[]=$D.($W=="NULL"?" IS".($Uc==">="?" NOT":"")." $W":(in_array($Uc,$this->operators)||$Uc=="="?" $Uc $W":($ie?" LIKE $W":" IN (".str_replace(",","', '",$W).")")));if($x<0&&$V=="0")$Ra[]="$D IS NULL";}}}$K[]=($Ra?"(".implode(" OR ",$Ra).")":"0");}}return$K;}function |
|
429 | -selectOrderProcess($m,$t){$jc=$_GET["index_order"];if($jc!="")unset($_GET["order"][1]);if($_GET["order"])return |
|
430 | -array(idf_escape(reset($_GET["order"])).($_GET["desc"]?" DESC":""));foreach(($jc!=""?array($t[$jc]):$t)as$s){if($jc!=""||$s["type"]=="INDEX"){$Xb=array_filter($s["descs"]);$db=false;foreach($s["columns"]as$V){if(preg_match('~date|timestamp~',$m[$V]["type"])){$db=true;break;}}$K=array();foreach($s["columns"]as$x=>$V)$K[]=idf_escape($V).(($Xb?$s["descs"][$x]:$db)?" DESC":"");return$K;}}return |
|
431 | -array();}function |
|
432 | -selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function |
|
433 | -selectLengthProcess(){return"100";}function |
|
434 | -selectEmailProcess($Y,$Mb){if($_POST["email_append"])return |
|
435 | -true;if($_POST["email"]){$Jd=0;if($_POST["all"]||$_POST["check"]){$l=idf_escape($_POST["email_field"]);$Yd=$_POST["email_subject"];$B=$_POST["email_message"];preg_match_all('~\\{\\$([a-z0-9_]+)\\}~i',"$Yd.$B",$Bc);$M=get_rows("SELECT DISTINCT $l".($Bc[1]?", ".implode(", ",array_map('idf_escape',array_unique($Bc[1]))):"")." FROM ".table($_GET["select"])." WHERE $l IS NOT NULL AND $l != ''".($Y?" AND ".implode(" AND ",$Y):"").($_POST["all"]?"":" AND ((".implode(") OR (",array_map('where_check',(array)$_POST["check"]))."))"));$m=fields($_GET["select"]);foreach($this->rowDescriptions($M,$Mb)as$L){$_d=array('{\\'=>'{');foreach($Bc[1]as$V)$_d['{$'."$V}"]=$this->editVal($L[$V],$m[$V]);$pb=$L[$_POST["email_field"]];if(is_mail($pb)&&send_mail($pb,strtr($Yd,$_d),strtr($B,$_d),$_POST["email_from"],$_FILES["email_files"]))$Jd++;}}cookie("adminer_email",$_POST["email_from"]);redirect(remove_from_uri(),lang(array('%d e-mail has been sent.','%d e-mails have been sent.'),$Jd));}return |
|
436 | -false;}function |
|
437 | -selectQueryBuild($N,$Y,$p,$E,$y,$F){return"";}function |
|
438 | -messageQuery($I,$je){return" <span class='time'>".@date("H:i:s")."</span><!--\n".str_replace("--","--><!-- ",$I)."\n".($je?"($je)\n":"")."-->";}function |
|
439 | -editFunctions($l){$K=array();if($l["null"]&&preg_match('~blob~',$l["type"]))$K["NULL"]='empty';$K[""]=($l["null"]||$l["auto_increment"]||like_bool($l)?"":"*");if(preg_match('~date|time~',$l["type"]))$K["now"]='now';if(preg_match('~_(md5|sha1)$~i',$l["field"],$A))$K[]=strtolower($A[1]);return$K;}function |
|
440 | -editInput($R,$l,$c,$W){if($l["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$c value='-1' checked><i>".'original'."</i></label> ":"").enum_input("radio",$c,$l,($W||isset($_GET["select"])?$W:0),($l["null"]?"":null));$Xc=$this->_foreignKeyOptions($R,$l["field"],$W);if($Xc!==null)return(is_array($Xc)?"<select$c>".optionlist($Xc,$W,true)."</select>":"<input value='".h($W)."'$c class='hidden'><input value='".h($Xc)."' class='jsonly' onkeyup=\"whisper('".h(ME."script=complete&source=".urlencode($R)."&field=".urlencode($l["field"]))."&value=', this);\"><div onclick='return whisperClick(event, this.previousSibling);'></div>");if(like_bool($l))return'<input type="checkbox" value="'.h($W?$W:1).'"'.($W?' checked':'')."$c>";$cc="";if(preg_match('~time~',$l["type"]))$cc='HH:MM:SS';if(preg_match('~date|timestamp~',$l["type"]))$cc='[yyyy]-mm-dd'.($cc?" [$cc]":"");if($cc)return"<input value='".h($W)."'$c> ($cc)";if(preg_match('~_(md5|sha1)$~i',$l["field"]))return"<input type='password' value='".h($W)."'$c>";return'';}function |
|
441 | -processInput($l,$W,$o=""){if($o=="now")return"$o()";$K=$W;if(preg_match('~date|timestamp~',$l["type"])&&preg_match('(^'.str_replace('\\$1','(?P<p1>\\d*)',preg_replace('~(\\\\\\$([2-6]))~','(?P<p\\2>\\d{1,2})',preg_quote('$1-$3-$5'))).'(.*))',$W,$A))$K=($A["p1"]!=""?$A["p1"]:($A["p2"]!=""?($A["p2"]<70?20:19).$A["p2"]:gmdate("Y")))."-$A[p3]$A[p4]-$A[p5]$A[p6]".end($A);$K=($l["type"]=="bit"&&preg_match('~^[0-9]+$~',$W)?$K:q($K));if($W==""&&like_bool($l))$K="0";elseif($W==""&&($l["null"]||!preg_match('~char|text~',$l["type"])))$K="NULL";elseif(preg_match('~^(md5|sha1)$~',$o))$K="$o($K)";return |
|
442 | -unconvert_field($l,$K);}function |
|
443 | -dumpOutput(){return |
|
444 | -array();}function |
|
445 | -dumpFormat(){return |
|
446 | -array('csv'=>'CSV,','csv;'=>'CSV;','tsv'=>'TSV');}function |
|
447 | -dumpDatabase($h){}function |
|
448 | -dumpTable(){echo"\xef\xbb\xbf";}function |
|
449 | -dumpData($R,$Xd,$I){global$f;$J=$f->query($I,1);if($J){while($L=$J->fetch_assoc()){if($Xd=="table"){dump_csv(array_keys($L));$Xd="INSERT";}dump_csv($L);}}}function |
|
450 | -dumpFilename($fc){return |
|
451 | -friendly_url($fc);}function |
|
452 | -dumpHeaders($fc,$Jc=false){$_b="csv";header("Content-Type: text/csv; charset=utf-8");return$_b;}function |
|
453 | -homepage(){return |
|
454 | -true;}function |
|
455 | -navigation($Ic){global$ca;echo'<h1> |
|
456 | -',$this->name(),' <span class="version">',$ca,'</span> |
|
457 | -<a href="https://www.adminer.org/editor/#download" target="_blank" id="version">',(version_compare($ca,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a> |
|
390 | +WHERE TABLE_SCHEMA = ".q($this->database()) . " |
|
391 | +AND REFERENCED_TABLE_SCHEMA = ".q($this->database()) . " |
|
392 | +AND REFERENCED_TABLE_NAME = ".q($R) . " |
|
393 | +ORDER BY ORDINAL_POSITION",null, "")as$L)$K[$L["TABLE_NAME"]]["keys"][$L["CONSTRAINT_NAME"]][$L["COLUMN_NAME"]] = $L["REFERENCED_COLUMN_NAME"]; foreach ($K |
|
394 | +as$x=>$V) {$D = $this->tableName(table_status($x, true)); if ($D != "") {$Gd = preg_quote($be); $Kd = "(:|\\s*-)?\\s+"; $K[$x]["name"] = (preg_match("(^$Gd$Kd(.+)|^(.+?)$Kd$Gd\$)iu", $D, $A) ? $A[2] . $A[3] : $D); } else |
|
395 | +unset($K[$x]); }return$K; }function |
|
396 | +backwardKeysPrint($wa, $L) {foreach ($wa |
|
397 | +as$R=>$va) {foreach ($va["keys"]as$Oa) {$z = ME . 'select=' . urlencode($R); $q = 0; foreach ($Oa |
|
398 | +as$d=>$V)$z .= where_link($q++, $d, $L[$V]); echo"<a href='" . h($z) . "'>" . h($va["name"]) . "</a>"; $z = ME . 'edit=' . urlencode($R); foreach ($Oa |
|
399 | +as$d=>$V)$z .= "&set" . urlencode("[" . bracket_escape($d) . "]") . "=" . urlencode($L[$V]); echo"<a href='" . h($z) . "' title='" . 'New item' . "'>+</a> "; }}}function |
|
400 | +selectQuery($I, $je) {return"<!--\n" . str_replace("--", "--><!-- ", $I) . "\n($je)\n-->\n"; }function |
|
401 | +rowDescription($R) {foreach (fields($R)as$l) {if (preg_match("~varchar|character varying~", $l["type"]))return |
|
402 | +idf_escape($l["field"]); }return""; }function |
|
403 | +rowDescriptions($M, $Mb) {$K = $M; foreach ($M[0]as$x=>$V) {if (list($R, $r, $D) = $this->_foreignColumn($Mb, $x)) {$hc = array(); foreach ($M |
|
404 | +as$L)$hc[$L[$x]] = q($L[$x]); $eb = $this->_values[$R]; if (!$eb)$eb = get_key_vals("SELECT $r, $D FROM " . table($R) . " WHERE $r IN (" . implode(", ", $hc) . ")"); foreach ($M |
|
405 | +as$C=>$L) {if (isset($L[$x]))$K[$C][$x] = (string) $eb[$L[$x]]; }}}return$K; }function |
|
406 | +selectLink($V, $l) {}function |
|
407 | +selectVal($V, $z, $l, $ad) {$K = ($V === null ? " " : $V); $z = h($z); if (preg_match('~blob|bytea~', $l["type"]) && !is_utf8($V)) {$K = lang(array('%d byte', '%d bytes'), strlen($ad)); if (preg_match("~^(GIF|\xFF\xD8\xFF|\x89PNG\x0D\x0A\x1A\x0A)~", $ad))$K = "<img src='$z' alt='$K'>"; }if (like_bool($l) && $K != " ")$K = ($V ? 'yes' : 'no'); if ($z)$K = "<a href='$z'" . (is_url($z) ? " rel='noreferrer'" : "") . ">$K</a>"; if (!$z && !like_bool($l) && preg_match('~int|float|double|decimal~', $l["type"]))$K = "<div class='number'>$K</div>"; elseif (preg_match('~date~', $l["type"]))$K = "<div class='datetime'>$K</div>"; return$K; }function |
|
408 | +editVal($V, $l) {if (preg_match('~date|timestamp~', $l["type"]) && $V !== null)return |
|
409 | +preg_replace('~^(\\d{2}(\\d+))-(0?(\\d+))-(0?(\\d+))~', '$1-$3-$5', $V); return$V; }function |
|
410 | +selectColumnsPrint($N, $e) {}function |
|
411 | +selectSearchPrint($Y, $e, $t) {$Y = (array) $_GET["where"]; echo'<fieldset id="fieldset-search"><legend>' . 'Search' . "</legend><div>\n"; $qc = array(); foreach ($Y |
|
412 | +as$x=>$V)$qc[$V["col"]] = $x; $q = 0; $m = fields($_GET["select"]); foreach ($e |
|
413 | +as$D=>$db) {$l = $m[$D]; if (preg_match("~enum~", $l["type"]) || like_bool($l)) {$x = $qc[$D]; $q--; echo"<div>" . h($db) . "<input type='hidden' name='where[$q][col]' value='" . h($D) . "'>:", (like_bool($l) ? " <select name='where[$q][val]'>" . optionlist(array(""=>"", 'no', 'yes'), $Y[$x]["val"], true) . "</select>" : enum_input("checkbox", " name='where[$q][val][]'", $l, (array) $Y[$x]["val"], ($l["null"] ? 0 : null))), "</div>\n"; unset($e[$D]); }elseif (is_array($Xc = $this->_foreignKeyOptions($_GET["select"], $D))) {if ($m[$D]["null"])$Xc[0] = '(' . 'empty' . ')'; $x = $qc[$D]; $q--; echo"<div>" . h($db) . "<input type='hidden' name='where[$q][col]' value='" . h($D) . "'><input type='hidden' name='where[$q][op]' value='='>: <select name='where[$q][val]'>" . optionlist($Xc, $Y[$x]["val"], true) . "</select></div>\n"; unset($e[$D]); }}$q = 0; foreach ($Y |
|
414 | +as$V) {if (($V["col"] == "" || $e[$V["col"]]) && "$V[col]$V[val]" != "") {echo"<div><select name='where[$q][col]'><option value=''>(" . 'anywhere' . ")" . optionlist($e, $V["col"], true) . "</select>", html_select("where[$q][op]", array(-1=>"") + $this->operators, $V["op"]), "<input type='search' name='where[$q][val]' value='" . h($V["val"]) . "' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div>\n"; $q++; }}echo"<div><select name='where[$q][col]' onchange='this.nextSibling.nextSibling.onchange();'><option value=''>(" . 'anywhere' . ")" . optionlist($e, null, true) . "</select>", html_select("where[$q][op]", array(-1=>"") + $this->operators), "<input type='search' name='where[$q][val]' onchange='selectAddRow(this);' onsearch='selectSearch(this);'></div>\n", "</div></fieldset>\n"; }function |
|
415 | +selectOrderPrint($E, $e, $t) {$Zc = array(); foreach ($t |
|
416 | +as$x=>$s) {$E = array(); foreach ($s["columns"]as$V)$E[] = $e[$V]; if (count(array_filter($E, 'strlen')) > 1 && $x != "PRIMARY")$Zc[$x] = implode(", ", $E); }if ($Zc) {echo'<fieldset><legend>' . 'Sort' . "</legend><div>", "<select name='index_order'>" . optionlist(array(""=>"") + $Zc, ($_GET["order"][0] != "" ? "" : $_GET["index_order"]), true) . "</select>", "</div></fieldset>\n"; }if ($_GET["order"])echo"<div style='display: none;'>" . hidden_fields(array("order"=>array(1=>reset($_GET["order"])), "desc"=>($_GET["desc"] ? array(1=>1) : array()),)) . "</div>\n"; }function |
|
417 | +selectLimitPrint($y) {echo"<fieldset><legend>" . 'Limit' . "</legend><div>"; echo |
|
418 | +html_select("limit", array("", "50", "100"), $y), "</div></fieldset>\n"; }function |
|
419 | +selectLengthPrint($he) {}function |
|
420 | +selectActionPrint($t) {echo"<fieldset><legend>" . 'Action' . "</legend><div>", "<input type='submit' value='" . 'Select' . "'>", "</div></fieldset>\n"; }function |
|
421 | +selectCommandPrint() {return |
|
422 | +true; }function |
|
423 | +selectImportPrint() {return |
|
424 | +true; }function |
|
425 | +selectEmailPrint($qb, $e) {if ($qb) {print_fieldset("email", 'E-mail', $_POST["email_append"]); echo"<div onkeydown=\"eventStop(event); return bodyKeydown(event, 'email');\">\n", "<p>" . 'From' . ": <input name='email_from' value='" . h($_POST ? $_POST["email_from"] : $_COOKIE["adminer_email"]) . "'>\n", 'Subject' . ": <input name='email_subject' value='" . h($_POST["email_subject"]) . "'>\n", "<p><textarea name='email_message' rows='15' cols='75'>" . h($_POST["email_message"] . ($_POST["email_append"] ? '{$' . "$_POST[email_addition]}" : "")) . "</textarea>\n", "<p onkeydown=\"eventStop(event); return bodyKeydown(event, 'email_append');\">" . html_select("email_addition", $e, $_POST["email_addition"]) . "<input type='submit' name='email_append' value='" . 'Insert' . "'>\n"; echo"<p>" . 'Attachments' . ": <input type='file' name='email_files[]' onchange=\"this.onchange = function () { }; var el = this.cloneNode(true); el.value = ''; this.parentNode.appendChild(el);\">", "<p>" . (count($qb) == 1 ? '<input type="hidden" name="email_field" value="' . h(key($qb)) . '">' : html_select("email_field", $qb)), "<input type='submit' name='email' value='" . 'Send' . "' onclick=\"return this.form['delete'].onclick();\">\n", "</div>\n", "</div></fieldset>\n"; }}function |
|
426 | +selectColumnsProcess($e, $t) {return |
|
427 | +array(array(), array()); }function |
|
428 | +selectSearchProcess($m, $t) {$K = array(); foreach ((array) $_GET["where"]as$x=>$Y) {$La = $Y["col"]; $Uc = $Y["op"]; $V = $Y["val"]; if (($x < 0 ? "" : $La) . $V != "") {$Ra = array(); foreach (($La != "" ? array($La=>$m[$La]) : $m)as$D=>$l) {if ($La != "" || is_numeric($V) || !preg_match('~int|float|double|decimal~', $l["type"])) {$D = idf_escape($D); if ($La != "" && $l["type"] == "enum")$Ra[] = (in_array(0, $V) ? "$D IS NULL OR " : "") . "$D IN (" . implode(", ", array_map('intval', $V)) . ")"; else {$ie = preg_match('~char|text|enum|set~', $l["type"]); $W = $this->processInput($l, (!$Uc && $ie && preg_match('~^[^%]+$~', $V) ? "%$V%" : $V)); $Ra[] = $D . ($W == "NULL" ? " IS" . ($Uc == ">=" ? " NOT" : "") . " $W" : (in_array($Uc, $this->operators) || $Uc == "=" ? " $Uc $W" : ($ie ? " LIKE $W" : " IN (" . str_replace(",", "', '", $W) . ")"))); if ($x < 0 && $V == "0")$Ra[] = "$D IS NULL"; }}}$K[] = ($Ra ? "(" . implode(" OR ", $Ra) . ")" : "0"); }}return$K; }function |
|
429 | +selectOrderProcess($m, $t) {$jc = $_GET["index_order"]; if ($jc != "")unset($_GET["order"][1]); if ($_GET["order"])return |
|
430 | +array(idf_escape(reset($_GET["order"])) . ($_GET["desc"] ? " DESC" : "")); foreach (($jc != "" ? array($t[$jc]) : $t)as$s) {if ($jc != "" || $s["type"] == "INDEX") {$Xb = array_filter($s["descs"]); $db = false; foreach ($s["columns"]as$V) {if (preg_match('~date|timestamp~', $m[$V]["type"])) {$db = true; break; }}$K = array(); foreach ($s["columns"]as$x=>$V)$K[] = idf_escape($V) . (($Xb ? $s["descs"][$x] : $db) ? " DESC" : ""); return$K; }}return |
|
431 | +array(); }function |
|
432 | +selectLimitProcess() {return(isset($_GET["limit"]) ? $_GET["limit"] : "50"); }function |
|
433 | +selectLengthProcess() {return"100"; }function |
|
434 | +selectEmailProcess($Y, $Mb) {if ($_POST["email_append"])return |
|
435 | +true; if ($_POST["email"]) {$Jd = 0; if ($_POST["all"] || $_POST["check"]) {$l = idf_escape($_POST["email_field"]); $Yd = $_POST["email_subject"]; $B = $_POST["email_message"]; preg_match_all('~\\{\\$([a-z0-9_]+)\\}~i', "$Yd.$B", $Bc); $M = get_rows("SELECT DISTINCT $l" . ($Bc[1] ? ", " . implode(", ", array_map('idf_escape', array_unique($Bc[1]))) : "") . " FROM " . table($_GET["select"]) . " WHERE $l IS NOT NULL AND $l != ''" . ($Y ? " AND " . implode(" AND ", $Y) : "") . ($_POST["all"] ? "" : " AND ((" . implode(") OR (", array_map('where_check', (array) $_POST["check"])) . "))")); $m = fields($_GET["select"]); foreach ($this->rowDescriptions($M, $Mb)as$L) {$_d = array('{\\'=>'{'); foreach ($Bc[1]as$V)$_d['{$' . "$V}"] = $this->editVal($L[$V], $m[$V]); $pb = $L[$_POST["email_field"]]; if (is_mail($pb) && send_mail($pb, strtr($Yd, $_d), strtr($B, $_d), $_POST["email_from"], $_FILES["email_files"]))$Jd++; }}cookie("adminer_email", $_POST["email_from"]); redirect(remove_from_uri(), lang(array('%d e-mail has been sent.', '%d e-mails have been sent.'), $Jd)); }return |
|
436 | +false; }function |
|
437 | +selectQueryBuild($N, $Y, $p, $E, $y, $F) {return""; }function |
|
438 | +messageQuery($I, $je) {return" <span class='time'>" . @date("H:i:s") . "</span><!--\n" . str_replace("--", "--><!-- ", $I) . "\n" . ($je ? "($je)\n" : "") . "-->"; }function |
|
439 | +editFunctions($l) {$K = array(); if ($l["null"] && preg_match('~blob~', $l["type"]))$K["NULL"] = 'empty'; $K[""] = ($l["null"] || $l["auto_increment"] || like_bool($l) ? "" : "*"); if (preg_match('~date|time~', $l["type"]))$K["now"] = 'now'; if (preg_match('~_(md5|sha1)$~i', $l["field"], $A))$K[] = strtolower($A[1]); return$K; }function |
|
440 | +editInput($R, $l, $c, $W) {if ($l["type"] == "enum")return(isset($_GET["select"]) ? "<label><input type='radio'$c value='-1' checked><i>" . 'original' . "</i></label> " : "") . enum_input("radio", $c, $l, ($W || isset($_GET["select"]) ? $W : 0), ($l["null"] ? "" : null)); $Xc = $this->_foreignKeyOptions($R, $l["field"], $W); if ($Xc !== null)return(is_array($Xc) ? "<select$c>" . optionlist($Xc, $W, true) . "</select>" : "<input value='" . h($W) . "'$c class='hidden'><input value='" . h($Xc) . "' class='jsonly' onkeyup=\"whisper('" . h(ME . "script=complete&source=" . urlencode($R) . "&field=" . urlencode($l["field"])) . "&value=', this);\"><div onclick='return whisperClick(event, this.previousSibling);'></div>"); if (like_bool($l))return'<input type="checkbox" value="' . h($W ? $W : 1) . '"' . ($W ? ' checked' : '') . "$c>"; $cc = ""; if (preg_match('~time~', $l["type"]))$cc = 'HH:MM:SS'; if (preg_match('~date|timestamp~', $l["type"]))$cc = '[yyyy]-mm-dd' . ($cc ? " [$cc]" : ""); if ($cc)return"<input value='" . h($W) . "'$c> ($cc)"; if (preg_match('~_(md5|sha1)$~i', $l["field"]))return"<input type='password' value='" . h($W) . "'$c>"; return''; }function |
|
441 | +processInput($l, $W, $o = "") {if ($o == "now")return"$o()"; $K = $W; if (preg_match('~date|timestamp~', $l["type"]) && preg_match('(^' . str_replace('\\$1', '(?P<p1>\\d*)', preg_replace('~(\\\\\\$([2-6]))~', '(?P<p\\2>\\d{1,2})', preg_quote('$1-$3-$5'))) . '(.*))', $W, $A))$K = ($A["p1"] != "" ? $A["p1"] : ($A["p2"] != "" ? ($A["p2"] < 70 ? 20 : 19) . $A["p2"] : gmdate("Y"))) . "-$A[p3]$A[p4]-$A[p5]$A[p6]" . end($A); $K = ($l["type"] == "bit" && preg_match('~^[0-9]+$~', $W) ? $K : q($K)); if ($W == "" && like_bool($l))$K = "0"; elseif ($W == "" && ($l["null"] || !preg_match('~char|text~', $l["type"])))$K = "NULL"; elseif (preg_match('~^(md5|sha1)$~', $o))$K = "$o($K)"; return |
|
442 | +unconvert_field($l, $K); }function |
|
443 | +dumpOutput() {return |
|
444 | +array(); }function |
|
445 | +dumpFormat() {return |
|
446 | +array('csv'=>'CSV,', 'csv;'=>'CSV;', 'tsv'=>'TSV'); }function |
|
447 | +dumpDatabase($h) {}function |
|
448 | +dumpTable() {echo"\xef\xbb\xbf"; }function |
|
449 | +dumpData($R, $Xd, $I) {global$f; $J = $f->query($I, 1); if ($J) {while ($L = $J->fetch_assoc()) {if ($Xd == "table") {dump_csv(array_keys($L)); $Xd = "INSERT"; }dump_csv($L); }}}function |
|
450 | +dumpFilename($fc) {return |
|
451 | +friendly_url($fc); }function |
|
452 | +dumpHeaders($fc, $Jc = false) {$_b = "csv"; header("Content-Type: text/csv; charset=utf-8"); return$_b; }function |
|
453 | +homepage() {return |
|
454 | +true; }function |
|
455 | +navigation($Ic) {global$ca; echo'<h1> |
|
456 | +',$this->name(), ' <span class="version">', $ca, '</span> |
|
457 | +<a href="https://www.adminer.org/editor/#download" target="_blank" id="version">',(version_compare($ca, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""), '</a> |
|
458 | 458 | </h1> |
459 | -';if($Ic=="auth"){$Ib=true;foreach((array)$_SESSION["pwds"]as$X=>$Nd){foreach($Nd[""]as$T=>$G){if($G!==null){if($Ib){echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";$Ib=false;}echo"<a href='".h(auth_url($X,"",$T))."'>".($T!=""?h($T):"<i>".'empty'."</i>")."</a><br>\n";}}}}else{$this->databasesPrint($Ic);if($Ic!="db"&&$Ic!="ns"){$S=table_status('',true);if(!$S)echo"<p class='message'>".'No tables.'."\n";else$this->tablesPrint($S);}}}function |
|
460 | -databasesPrint($Ic){}function |
|
461 | -tablesPrint($ee){echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";foreach($ee |
|
462 | -as$L){$D=$this->tableName($L);if(isset($L["Engine"])&&$D!="")echo"<a href='".h(ME).'select='.urlencode($L["Name"])."'".bold($_GET["select"]==$L["Name"]||$_GET["edit"]==$L["Name"],"select")." title='".'Select data'."'>$D</a><br>\n";}}function |
|
463 | -_foreignColumn($Mb,$d){foreach((array)$Mb[$d]as$Lb){if(count($Lb["source"])==1){$D=$this->rowDescription($Lb["table"]);if($D!=""){$r=idf_escape($Lb["target"][0]);return |
|
464 | -array($Lb["table"],$r,$D);}}}}function |
|
465 | -_foreignKeyOptions($R,$d,$W=null){global$f;if(list($fe,$r,$D)=$this->_foreignColumn(column_foreign_keys($R),$d)){$K=&$this->_values[$fe];if($K===null){$S=table_status($fe);$K=($S["Rows"]>1000?"":array(""=>"")+get_key_vals("SELECT $r, $D FROM ".table($fe)." ORDER BY 2"));}if(!$K&&$W!==null)return$f->result("SELECT $D FROM ".table($fe)." WHERE $r = ".q($W));return$K;}}}$b=(function_exists('adminer_object')?adminer_object():new |
|
466 | -Adminer);function |
|
467 | -page_header($le,$k="",$Ca=array(),$me=""){global$ba,$ca,$b,$jb,$v;page_headers();if(is_ajax()&&$k){page_messages($k);exit;}$ne=$le.($me!=""?": $me":"");$oe=strip_tags($ne.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html> |
|
459 | +';if ($Ic == "auth") {$Ib = true; foreach ((array) $_SESSION["pwds"]as$X=>$Nd) {foreach ($Nd[""]as$T=>$G) {if ($G !== null) {if ($Ib) {echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n"; $Ib = false; }echo"<a href='" . h(auth_url($X, "", $T)) . "'>" . ($T != "" ? h($T) : "<i>" . 'empty' . "</i>") . "</a><br>\n"; }}}} else {$this->databasesPrint($Ic); if ($Ic != "db" && $Ic != "ns") {$S = table_status('', true); if (!$S)echo"<p class='message'>" . 'No tables.' . "\n"; else$this->tablesPrint($S); }}}function |
|
460 | +databasesPrint($Ic) {}function |
|
461 | +tablesPrint($ee) {echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n"; foreach ($ee |
|
462 | +as$L) {$D = $this->tableName($L); if (isset($L["Engine"]) && $D != "")echo"<a href='" . h(ME) . 'select=' . urlencode($L["Name"]) . "'" . bold($_GET["select"] == $L["Name"] || $_GET["edit"] == $L["Name"], "select") . " title='" . 'Select data' . "'>$D</a><br>\n"; }}function |
|
463 | +_foreignColumn($Mb, $d) {foreach ((array) $Mb[$d]as$Lb) {if (count($Lb["source"]) == 1) {$D = $this->rowDescription($Lb["table"]); if ($D != "") {$r = idf_escape($Lb["target"][0]); return |
|
464 | +array($Lb["table"], $r, $D); }}}}function |
|
465 | +_foreignKeyOptions($R, $d, $W = null) {global$f; if (list($fe, $r, $D) = $this->_foreignColumn(column_foreign_keys($R), $d)) {$K = &$this->_values[$fe]; if ($K === null) {$S = table_status($fe); $K = ($S["Rows"] > 1000 ? "" : array(""=>"") + get_key_vals("SELECT $r, $D FROM " . table($fe) . " ORDER BY 2")); }if (!$K && $W !== null)return$f->result("SELECT $D FROM " . table($fe) . " WHERE $r = " . q($W)); return$K; }}}$b = (function_exists('adminer_object') ? adminer_object() : new |
|
466 | +Adminer); function |
|
467 | +page_header($le, $k = "", $Ca = array(), $me = "") {global$ba, $ca, $b, $jb, $v; page_headers(); if (is_ajax() && $k) {page_messages($k); exit; }$ne = $le . ($me != "" ? ": $me" : ""); $oe = strip_tags($ne . (SERVER != "" && SERVER != "localhost" ? h(" - " . SERVER) : "") . " - " . $b->name()); echo'<!DOCTYPE html> |
|
468 | 468 | <html lang="en" dir="ltr"> |
469 | 469 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
470 | 470 | <meta http-equiv="Content-Script-Type" content="text/javascript"> |
471 | 471 | <meta name="robots" content="noindex"> |
472 | 472 | <meta name="referrer" content="origin-when-crossorigin"> |
473 | -<title>',$oe,'</title> |
|
474 | -<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~","",ME))."?file=default.css&version=4.2.5&driver=mysql",'"> |
|
475 | -<script type="text/javascript" src="',h(preg_replace("~\\?.*~","",ME))."?file=functions.js&version=4.2.5&driver=mysql",'"></script> |
|
476 | -';if($b->head()){echo'<link rel="shortcut icon" type="image/x-icon" href="',h(preg_replace("~\\?.*~","",ME))."?file=favicon.ico&version=4.2.5&driver=mysql",'"> |
|
477 | -<link rel="apple-touch-icon" href="',h(preg_replace("~\\?.*~","",ME))."?file=favicon.ico&version=4.2.5&driver=mysql",'"> |
|
478 | -';if(file_exists("adminer.css")){echo'<link rel="stylesheet" type="text/css" href="adminer.css"> |
|
473 | +<title>',$oe, '</title> |
|
474 | +<link rel="stylesheet" type="text/css" href="',h(preg_replace("~\\?.*~", "", ME)) . "?file=default.css&version=4.2.5&driver=mysql", '"> |
|
475 | +<script type="text/javascript" src="',h(preg_replace("~\\?.*~", "", ME)) . "?file=functions.js&version=4.2.5&driver=mysql", '"></script> |
|
476 | +';if ($b->head()) {echo'<link rel="shortcut icon" type="image/x-icon" href="', h(preg_replace("~\\?.*~", "", ME)) . "?file=favicon.ico&version=4.2.5&driver=mysql", '"> |
|
477 | +<link rel="apple-touch-icon" href="',h(preg_replace("~\\?.*~", "", ME)) . "?file=favicon.ico&version=4.2.5&driver=mysql", '"> |
|
478 | +';if (file_exists("adminer.css")) {echo'<link rel="stylesheet" type="text/css" href="adminer.css"> |
|
479 | 479 | ';}}echo' |
480 | -<body class="ltr nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);"',(isset($_COOKIE["adminer_version"])?"":" onload=\"verifyVersion('$ca');\"");?>> |
|
480 | +<body class="ltr nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);"',(isset($_COOKIE["adminer_version"]) ? "" : " onload=\"verifyVersion('$ca');\""); ?>> |
|
481 | 481 | <script type="text/javascript"> |
482 | 482 | document.body.className = document.body.className.replace(/ nojs/, ' js'); |
483 | 483 | var offlineMessage = '<?php echo |
484 | -js_escape('You are offline.'),'\'; |
|
484 | +js_escape('You are offline.'), '\'; |
|
485 | 485 | </script> |
486 | 486 | |
487 | -<div id="help" class="jush-',$v,' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div> |
|
487 | +<div id="help" class="jush-',$v, ' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div> |
|
488 | 488 | |
489 | 489 | <div id="content"> |
490 | -';if($Ca!==null){$z=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($z?$z:".").'">'.$jb[DRIVER].'</a> » ';$z=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=(SERVER!=""?h(SERVER):'Server');if($Ca===false)echo"$O\n";else{echo"<a href='".($z?h($z):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ca)))echo'<a href="'.h($z."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Ca)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Ca |
|
491 | -as$x=>$V){$db=(is_array($V)?$V[1]:h($V));if($db!="")echo"<a href='".h(ME."$x=").urlencode(is_array($V)?$V[0]:$V)."'>$db</a> » ";}}echo"$le\n";}}echo"<h2>$ne</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($k);$ab=&get_session("dbs");if(DB!=""&&$ab&&!in_array(DB,$ab,true))$ab=null;stop_session();define("PAGE_HEADER",1);}function |
|
492 | -page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");if($b->headers()){header("X-Frame-Options: deny");header("X-XSS-Protection: 0");}}function |
|
493 | -page_messages($k){$Ee=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Hc=$_SESSION["messages"][$Ee];if($Hc){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Hc)."</div>\n";unset($_SESSION["messages"][$Ee]);}if($k)echo"<div class='error'>$k</div>\n";}function |
|
494 | -page_footer($Ic=""){global$b,$qe;echo'</div> |
|
490 | +';if ($Ca !== null) {$z = substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1); echo'<p id="breadcrumb"><a href="' . h($z ? $z : ".") . '">' . $jb[DRIVER] . '</a> » '; $z = substr(preg_replace('~\b(db|ns)=[^&]*&~', '', ME), 0, -1); $O = (SERVER != "" ? h(SERVER) : 'Server'); if ($Ca === false)echo"$O\n"; else {echo"<a href='" . ($z ? h($z) : ".") . "' accesskey='1' title='Alt+Shift+1'>$O</a> » "; if ($_GET["ns"] != "" || (DB != "" && is_array($Ca)))echo'<a href="' . h($z . "&db=" . urlencode(DB) . (support("scheme") ? "&ns=" : "")) . '">' . h(DB) . '</a> » '; if (is_array($Ca)) {if ($_GET["ns"] != "")echo'<a href="' . h(substr(ME, 0, -1)) . '">' . h($_GET["ns"]) . '</a> » '; foreach ($Ca |
|
491 | +as$x=>$V) {$db = (is_array($V) ? $V[1] : h($V)); if ($db != "")echo"<a href='" . h(ME . "$x=") . urlencode(is_array($V) ? $V[0] : $V) . "'>$db</a> » "; }}echo"$le\n"; }}echo"<h2>$ne</h2>\n", "<div id='ajaxstatus' class='jsonly hidden'></div>\n"; restart_session(); page_messages($k); $ab = &get_session("dbs"); if (DB != "" && $ab && !in_array(DB, $ab, true))$ab = null; stop_session(); define("PAGE_HEADER", 1); }function |
|
492 | +page_headers() {global$b; header("Content-Type: text/html; charset=utf-8"); header("Cache-Control: no-cache"); if ($b->headers()) {header("X-Frame-Options: deny"); header("X-XSS-Protection: 0"); }}function |
|
493 | +page_messages($k) {$Ee = preg_replace('~^[^?]*~', '', $_SERVER["REQUEST_URI"]); $Hc = $_SESSION["messages"][$Ee]; if ($Hc) {echo"<div class='message'>" . implode("</div>\n<div class='message'>", $Hc) . "</div>\n"; unset($_SESSION["messages"][$Ee]); }if ($k)echo"<div class='error'>$k</div>\n"; }function |
|
494 | +page_footer($Ic = "") {global$b, $qe; echo'</div> |
|
495 | 495 | |
496 | -';if($Ic!="auth"){echo'<form action="" method="post"> |
|
496 | +';if ($Ic != "auth") {echo'<form action="" method="post"> |
|
497 | 497 | <p class="logout"> |
498 | 498 | <input type="submit" name="logout" value="Logout" id="logout"> |
499 | -<input type="hidden" name="token" value="',$qe,'"> |
|
499 | +<input type="hidden" name="token" value="',$qe, '"> |
|
500 | 500 | </p> |
501 | 501 | </form> |
502 | 502 | ';}echo'<div id="menu"> |
503 | -';$b->navigation($Ic);echo'</div> |
|
503 | +';$b->navigation($Ic); echo'</div> |
|
504 | 504 | <script type="text/javascript">setupSubmitHighlight(document);</script> |
505 | 505 | ';}function |
506 | -int32($C){while($C>=2147483648)$C-=4294967296;while($C<=-2147483649)$C+=4294967296;return(int)$C;}function |
|
507 | -long2str($U,$Ke){$Ed='';foreach($U |
|
508 | -as$V)$Ed.=pack('V',$V);if($Ke)return |
|
509 | -substr($Ed,0,end($U));return$Ed;}function |
|
510 | -str2long($Ed,$Ke){$U=array_values(unpack('V*',str_pad($Ed,4*ceil(strlen($Ed)/4),"\0")));if($Ke)$U[]=strlen($Ed);return$U;}function |
|
511 | -xxtea_mx($Z,$Oe,$ae,$w){return |
|
512 | -int32((($Z>>5&0x7FFFFFF)^$Oe<<2)+(($Oe>>3&0x1FFFFFFF)^$Z<<4))^int32(($ae^$Oe)+($w^$Z));}function |
|
513 | -encrypt_string($Vd,$x){if($Vd=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,true);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=0;while($rd-->0){$ae=int32($ae+0x9E3779B9);$lb=$ae>>2&3;for($cd=0;$cd<$C;$cd++){$Oe=$U[$cd+1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$cd]+$Kc);$U[$cd]=$Z;}$Oe=$U[0];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$C]+$Kc);$U[$C]=$Z;}return |
|
514 | -long2str($U,false);}function |
|
515 | -decrypt_string($Vd,$x){if($Vd=="")return"";if(!$x)return |
|
516 | -false;$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,false);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=int32($rd*0x9E3779B9);while($ae){$lb=$ae>>2&3;for($cd=$C;$cd>0;$cd--){$Z=$U[$cd-1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[$cd]-$Kc);$U[$cd]=$Oe;}$Z=$U[$C];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[0]-$Kc);$U[0]=$Oe;$ae=int32($ae-0x9E3779B9);}return |
|
517 | -long2str($U,true);}$f='';$Zb=$_SESSION["token"];if(!$Zb)$_SESSION["token"]=rand(1,1e6);$qe=get_token();$gd=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$V){list($x)=explode(":",$V);$gd[$x]=$V;}}function |
|
518 | -add_invalid_login(){global$b;$Fb=get_temp_dir()."/adminer.invalid";$Rb=@fopen($Fb,"r+");if(!$Rb){$Rb=@fopen($Fb,"w");if(!$Rb)return;}flock($Rb,LOCK_EX);$oc=unserialize(stream_get_contents($Rb));$je=time();if($oc){foreach($oc |
|
519 | -as$pc=>$V){if($V[0]<$je)unset($oc[$pc]);}}$nc=&$oc[$b->bruteForceKey()];if(!$nc)$nc=array($je+30*60,0);$nc[1]++;$Ld=serialize($oc);rewind($Rb);fwrite($Rb,$Ld);ftruncate($Rb,strlen($Ld));flock($Rb,LOCK_UN);fclose($Rb);}$ra=$_POST["auth"];if($ra){$oc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$nc=$oc[$b->bruteForceKey()];$Mc=($nc[1]>30?$nc[0]-time():0);if($Mc>0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Mc/60)));session_regenerate_id();$X=$ra["driver"];$O=$ra["server"];$T=$ra["username"];$G=(string)$ra["password"];$h=$ra["db"];set_password($X,$O,$T,$G);$_SESSION["db"][$X][$O][$T][$h]=true;if($ra["permanent"]){$x=base64_encode($X)."-".base64_encode($O)."-".base64_encode($T)."-".base64_encode($h);$od=$b->permanentLogin(true);$gd[$x]="$x:".base64_encode($od?encrypt_string($G,$od):"");cookie("adminer_permanent",implode(" ",$gd));}if(count($_POST)==1||DRIVER!=$X||SERVER!=$O||$_GET["username"]!==$T||DB!=$h)redirect(auth_url($X,$O,$T,$h));}elseif($_POST["logout"]){if($Zb&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}else{foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}}elseif($gd&&!$_SESSION["pwds"]){session_regenerate_id();$od=$b->permanentLogin();foreach($gd |
|
520 | -as$x=>$V){list(,$Ha)=explode(":",$V);list($X,$O,$T,$h)=array_map('base64_decode',explode("-",$x));set_password($X,$O,$T,decrypt_string(base64_decode($Ha),$od));$_SESSION["db"][$X][$O][$T][$h]=true;}}function |
|
521 | -unset_permanent(){global$gd;foreach($gd |
|
522 | -as$x=>$V){list($X,$O,$T,$h)=array_map('base64_decode',explode("-",$x));if($X==DRIVER&&$O==SERVER&&$T==$_GET["username"]&&$h==DB)unset($gd[$x]);}cookie("adminer_permanent",implode(" ",$gd));}function |
|
523 | -auth_error($k){global$b,$Zb;$k=h($k);$Od=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Od]||$_GET[$Od])&&!$Zb)$k='Session expired, please login again.';else{add_invalid_login();$G=get_password();if($G!==null){if($G===false)$k.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.','<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$Od]&&$_GET[$Od]&&ini_bool("session.use_only_cookies"))$k='Session support must be enabled.';$ed=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$ed["lifetime"]);page_header('Login',$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$kd)),false);page_footer("auth");exit;}$f=connect();}$i=new |
|
524 | -Min_Driver($f);if(!is_object($f)||($_c=$b->login($_GET["username"],get_password()))!==true)auth_error((is_string($f)?$f:(is_string($_c)?$_c:'Invalid credentials.')));if($ra&&$_POST["token"])$_POST["token"]=$qe;$k='';if($_POST){if(!verify_token()){$kc="max_input_vars";$Fc=ini_get($kc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$V=ini_get($x);if($V&&(!$Fc||$V<$Fc)){$kc=$x;$Fc=$V;}}}$k=(!$_POST["token"]&&$Fc?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$kc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$k=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$k.=' '.'You can upload a big SQL file via FTP and import it from server.';}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false)session_write_close();function |
|
525 | -email_header($ac){return"=?UTF-8?B?".base64_encode($ac)."?=";}function |
|
526 | -send_mail($pb,$Yd,$B,$Sb="",$Gb=array()){$j=(DIRECTORY_SEPARATOR=="/"?"\n":"\r\n");$B=str_replace("\n",$j,wordwrap(str_replace("\r","","$B\n")));$Ba=uniqid("boundary");$qa="";foreach((array)$Gb["error"]as$x=>$V){if(!$V)$qa.="--$Ba$j"."Content-Type: ".str_replace("\n","",$Gb["type"][$x]).$j."Content-Disposition: attachment; filename=\"".preg_replace('~["\\n]~','',$Gb["name"][$x])."\"$j"."Content-Transfer-Encoding: base64$j$j".chunk_split(base64_encode(file_get_contents($Gb["tmp_name"][$x])),76,$j).$j;}$ya="";$bc="Content-Type: text/plain; charset=utf-8$j"."Content-Transfer-Encoding: 8bit";if($qa){$qa.="--$Ba--$j";$ya="--$Ba$j$bc$j$j";$bc="Content-Type: multipart/mixed; boundary=\"$Ba\"";}$bc.=$j."MIME-Version: 1.0$j"."X-Mailer: Adminer Editor".($Sb?$j."From: ".str_replace("\n","",$Sb):"");return |
|
527 | -mail($pb,email_header($Yd),$ya.$B.$qa,$bc);}function |
|
528 | -like_bool($l){return |
|
529 | -preg_match("~bool|(tinyint|bit)\\(1\\)~",$l["full_type"]);}$f->select_db($b->database());$Rc="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";$jb[DRIVER]='Login';if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["download"])){$a=$_GET["download"];$m=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$i->select($a,$N,array(where($_GET,$m)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$m=fields($a);$Y=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$m):""):where($_GET,$m));$De=(isset($_GET["select"])?$_POST["edit"]:$Y);foreach($m |
|
530 | -as$D=>$l){if(!isset($l["privileges"][$De?"update":"insert"])||$b->fieldName($l)=="")unset($m[$D]);}if($_POST&&!$k&&!isset($_GET["select"])){$_=$_POST["referer"];if($_POST["insert"])$_=($De?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$_))$_=ME."select=".urlencode($a);$t=indexes($a);$ze=unique_array($_GET["where"],$t);$ud="\nWHERE $Y";if(isset($_POST["delete"]))queries_redirect($_,'Item has been deleted.',$i->delete($a,$ud,!$ze));else{$P=array();foreach($m |
|
531 | -as$D=>$l){$V=process_input($l);if($V!==false&&$V!==null)$P[idf_escape($D)]=$V;}if($De){if(!$P)redirect($_);queries_redirect($_,'Item has been updated.',$i->update($a,$P,$ud,!$ze));if(is_ajax()){page_headers();page_messages($k);exit;}}else{$J=$i->insert($a,$P);$vc=($J?last_id():0);queries_redirect($_,sprintf('Item%s has been inserted.',($vc?" $vc":"")),$J);}}}$L=null;if($_POST["save"])$L=(array)$_POST["fields"];elseif($Y){$N=array();foreach($m |
|
532 | -as$D=>$l){if(isset($l["privileges"]["select"])){$oa=convert_field($l);if($_POST["clone"]&&$l["auto_increment"])$oa="''";if($v=="sql"&&preg_match("~enum|set~",$l["type"]))$oa="1*".idf_escape($D);$N[]=($oa?"$oa AS ":"").idf_escape($D);}}$L=array();if(!support("table"))$N=array("*");if($N){$J=$i->select($a,$N,array($Y),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L)$L=false;if(isset($_GET["select"])&&(!$L||$J->fetch_assoc()))$L=null;}}if(!support("table")&&!$m){if(!$Y){$J=$i->select($a,array("*"),$Y,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L)$L=array($i->primary=>"");}if($L){foreach($L |
|
533 | -as$x=>$V){if(!$Y)$L[$x]=null;$m[$x]=array("field"=>$x,"null"=>($x!=$i->primary),"auto_increment"=>($x==$i->primary));}}}edit_form($a,$m,$L,$De);}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$t=indexes($a);$m=fields($a);$Ob=column_foreign_keys($a);$Qc="";if($S["Oid"]){$Qc=($v=="sqlite"?"rowid":"oid");$t[]=array("type"=>"PRIMARY","columns"=>array($Qc));}parse_str($_COOKIE["adminer_import"],$ia);$Dd=array();$e=array();$he=null;foreach($m |
|
534 | -as$x=>$l){$D=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$D!=""){$e[$x]=html_entity_decode(strip_tags($D),ENT_QUOTES);if(is_shortable($l))$he=$b->selectLengthProcess();}$Dd+=$l["privileges"];}list($N,$p)=$b->selectColumnsProcess($e,$t);$u=count($p)<count($N);$Y=$b->selectSearchProcess($m,$t);$E=$b->selectOrderProcess($m,$t);$y=$b->selectLimitProcess();$Sb=($N?implode(", ",$N):"*".($Qc?", $Qc":"")).convert_fields($e,$m,$N)."\nFROM ".table($a);$Ub=($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$_e=>$L){$oa=convert_field($m[key($L)]);$N=array($oa?$oa:idf_escape(key($L)));$Y[]=where_check($_e,$m);$K=$i->select($a,$N,$Y,$N);if($K)echo |
|
535 | -reset($K->fetch_row());}exit;}if($_POST&&!$k){$Me=$Y;if(!$_POST["all"]&&is_array($_POST["check"])){$Ga=array();foreach($_POST["check"]as$Ea)$Ga[]=where_check($Ea,$m);$Me[]="((".implode(") OR (",$Ga)."))";}$Me=($Me?"\nWHERE ".implode(" AND ",$Me):"");$md=$Be=null;foreach($t |
|
536 | -as$s){if($s["type"]=="PRIMARY"){$md=array_flip($s["columns"]);$Be=($N?$md:array());break;}}foreach((array)$Be |
|
537 | -as$x=>$V){if(in_array(idf_escape($x),$N))unset($Be[$x]);}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$Be===array())$I="SELECT $Sb$Me$Ub";else{$ye=array();foreach($_POST["check"]as$V)$ye[]="(SELECT".limit($Sb,"\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m).$Ub,1).")";$I=implode(" UNION ALL ",$ye);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Y,$Ob)){if($_POST["save"]||$_POST["delete"]){$J=true;$ja=0;$P=array();if(!$_POST["delete"]){foreach($e |
|
538 | -as$D=>$V){$V=process_input($m[$D]);if($V!==null&&($_POST["clone"]||$V!==false))$P[idf_escape($D)]=($V!==false?$V:idf_escape($D));}}if($_POST["delete"]||$P){if($_POST["clone"])$I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);if($_POST["all"]||($Be===array()&&is_array($_POST["check"]))||$u){$J=($_POST["delete"]?$i->delete($a,$Me):($_POST["clone"]?queries("INSERT $I$Me"):$i->update($a,$P,$Me)));$ja=$f->affected_rows;}else{foreach((array)$_POST["check"]as$V){$Le="\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m);$J=($_POST["delete"]?$i->delete($a,$Le,1):($_POST["clone"]?queries("INSERT".limit1($I,$Le)):$i->update($a,$P,$Le)));if(!$J)break;$ja+=$f->affected_rows;}}}$B=lang(array('%d item has been affected.','%d items have been affected.'),$ja);if($_POST["clone"]&&$J&&$ja==1){$vc=last_id();if($vc)$B=sprintf('Item%s has been inserted.'," $vc");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$B,$J);if(!$_POST["delete"]){edit_form($a,$m,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$k='Ctrl+click on a value to modify it.';else{$J=true;$ja=0;foreach($_POST["val"]as$_e=>$L){$P=array();foreach($L |
|
539 | -as$x=>$V){$x=bracket_escape($x,1);$P[idf_escape($x)]=(preg_match('~char|text~',$m[$x]["type"])||$V!=""?$b->processInput($m[$x],$V):"NULL");}$J=$i->update($a,$P," WHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($_e,$m),!($u||$Be===array())," ");if(!$J)break;$ja+=$f->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$ja),$J);}}elseif(!is_string($Eb=get_file("csv_file",true)))$k=upload_error($Eb);elseif(!preg_match('~~u',$Eb))$k='File must be in UTF-8 encoding.';else{cookie("adminer_import","output=".urlencode($ia["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Oa=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$Eb,$Bc);$ja=count($Bc[0]);$i->begin();$Kd=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($Bc[0]as$x=>$V){preg_match_all("~((?>\"[^\"]*\")+|[^$Kd]*)$Kd~",$V.$Kd,$Cc);if(!$x&&!array_diff($Cc[1],$Oa)){$Oa=$Cc[1];$ja--;}else{$P=array();foreach($Cc[1]as$q=>$La)$P[idf_escape($Oa[$q])]=($La==""&&$m[$Oa[$q]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$La))));$M[]=$P;}}$J=(!$M||$i->insertUpdate($a,$M,$md));if($J)$i->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$ja),$J);$i->rollback();}}}$de=$b->tableName($S);if(is_ajax()){page_headers();ob_start();}else |
|
540 | -page_header('Select'.": $de",$k);$P=null;if(isset($Dd["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$V){if(count($Ob[$V["col"]])==1&&($V["op"]=="="||(!$V["op"]&&!preg_match('~[_%]~',$V["val"]))))$P.="&set".urlencode("[".bracket_escape($V["col"])."]")."=".urlencode($V["val"]);}}$b->selectLinks($S,$P);if(!$e&&support("table"))echo"<p class='error'>".'Unable to select the table'.($m?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($N,$e);$b->selectSearchPrint($Y,$e,$t);$b->selectOrderPrint($E,$e,$t);$b->selectLimitPrint($y);$b->selectLengthPrint($he);$b->selectActionPrint($t);echo"</form>\n";$F=$_GET["page"];if($F=="last"){$n=$f->result(count_rows($a,$Y,$u,$p));$F=floor(max(0,$n-1)/$y);}$Hd=$N;if(!$Hd){$Hd[]="*";if($Qc)$Hd[]=$Qc;}$Ua=convert_fields($e,$m,$N);if($Ua)$Hd[]=substr($Ua,2);$J=$i->select($a,$Hd,$Y,$p,$E,$y,$F,true);if(!$J)echo"<p class='error'>".error()."\n";else{if($v=="mssql"&&$F)$J->seek($y*$F);$rb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($F&&$v=="oracle")unset($L["RNUM"]);$M[]=$L;}if($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql")$n=$f->result(" SELECT FOUND_ROWS()");if(!$M)echo"<p class='message'>".'No rows.'."\n";else{$xa=$b->backwardKeys($a,$de);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$p&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Lc=array();$Tb=array();reset($N);$wd=1;foreach($M[0]as$x=>$V){if($x!=$Qc){$V=$_GET["columns"][key($N)];$l=$m[$N?($V?$V["col"]:current($N)):$x];$D=($l?$b->fieldName($l,$wd):($V["fun"]?"*":$x));if($D!=""){$wd++;$Lc[$x]=$D;$d=idf_escape($x);$ec=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$db="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($ec.($E[0]==$d||$E[0]==$x||(!$E&&$u&&$p[0]==$d)?$db:'')).'">';echo |
|
541 | -apply_sql_function($V["fun"],$D)."</a>";echo"<span class='column hidden'>","<a href='".h($ec.$db)."' title='".'descending'."' class='text'> ↓</a>";if(!$V["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($x)).'\'); return false;" title="'.'Search'.'" class="text jsonly"> =</a>';echo"</span>";}$Tb[$x]=$V["fun"];next($N);}}$yc=array();if($_GET["modify"]){foreach($M |
|
542 | -as$L){foreach($L |
|
543 | -as$x=>$V)$yc[$x]=max($yc[$x],min(40,strlen(utf8_decode($V))));}}echo($xa?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($y%2==1&&$F%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($M,$Ob)as$C=>$L){$ze=unique_array($M[$C],$t);if(!$ze){$ze=array();foreach($M[$C]as$x=>$V){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$x))$ze[$x]=$V;}}$_e="";foreach($ze |
|
544 | -as$x=>$V){if(($v=="sql"||$v=="pgsql")&&strlen($V)>64){$x=(strpos($x,'(')?$x:idf_escape($x));$x="MD5(".($v=='sql'&&preg_match("~^utf8_~",$m[$x]["collation"])?$x:"CONVERT($x USING ".charset($f).")").")";$V=md5($V);}$_e.="&".($V!==null?urlencode("where[".bracket_escape($x)."]")."=".urlencode($V):"null%5B%5D=".urlencode($x));}echo"<tr".odd().">".(!$p&&$N?"":"<td>".checkbox("check[]",substr($_e,1),in_array(substr($_e,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").($u||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$_e)."'>".'edit'."</a>"));foreach($L |
|
545 | -as$x=>$V){if(isset($Lc[$x])){$l=$m[$x];if($V!=""&&(!isset($rb[$x])||$rb[$x]!=""))$rb[$x]=(is_mail($V)?$Lc[$x]:"");$z="";if(preg_match('~blob|bytea|raw|file~',$l["type"])&&$V!="")$z=ME.'download='.urlencode($a).'&field='.urlencode($x).$_e;if(!$z&&$V!==null){foreach((array)$Ob[$x]as$Nb){if(count($Ob[$x])==1||end($Nb["source"])==$x){$z="";foreach($Nb["source"]as$q=>$Rd)$z.=where_link($q,$Nb["target"][$q],$M[$C][$Rd]);$z=($Nb["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($Nb["db"]),ME):ME).'select='.urlencode($Nb["table"]).$z;if(count($Nb["source"])==1)break;}}}if($x=="COUNT(*)"){$z=ME."select=".urlencode($a);$q=0;foreach((array)$_GET["where"]as$U){if(!array_key_exists($U["col"],$ze))$z.=where_link($q++,$U["col"],$U["val"],$U["op"]);}foreach($ze |
|
546 | -as$w=>$U)$z.=where_link($q++,$w,$U);}$V=select_value($V,$z,$l,$he);$r=h("val[$_e][".bracket_escape($x)."]");$W=$_POST["val"][$_e][bracket_escape($x)];$nb=!is_array($L[$x])&&is_utf8($V)&&$M[$C][$x]==$L[$x]&&!$Tb[$x];$ge=preg_match('~text|lob~',$l["type"]);if(($_GET["modify"]&&$nb)||$W!==null){$Wb=h($W!==null?$W:$L[$x]);echo"<td>".($ge?"<textarea name='$r' cols='30' rows='".(substr_count($L[$x],"\n")+1)."'>$Wb</textarea>":"<input name='$r' value='$Wb' size='$yc[$x]'>");}else{$Ac=strpos($V,"<i>...</i>");echo"<td id='$r' onclick=\"selectClick(this, event, ".($Ac?2:($ge?1:0)).($nb?"":", '".h('Use edit link to modify this value.')."'").");\">$V";}}}if($xa)echo"<td>";$b->backwardKeysPrint($xa,$M[$C]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n";}if(($M||$F)&&!is_ajax()){$yb=true;if($_GET["page"]!="last"){if(!+$y)$n=count($M);elseif($v!="sql"||!$u){$n=($u?false:found_rows($S,$Y));if($n<max(1e4,2*($F+1)*$y))$n=reset(slow_query(count_rows($a,$Y,$u,$p)));else$yb=false;}}if(+$y&&($n===false||$n>$y||$F)){echo"<p class='pages'>";$Dc=($n===false?$F+(count($M)>=$y?2:1):floor(($n-1)/$y));if($v!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($F+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$F).($F>5?" ...":"");for($q=max(1,$F-4);$q<min($Dc,$F+5);$q++)echo |
|
547 | -pagination($q,$F);if($Dc>0){echo($F+5<$Dc?" ...":""),($yb&&$n!==false?pagination($Dc,$F):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Dc'>".'last'."</a>");}echo(($n===false?count($M)+1:$n-$F*$y)>$y?' <a href="'.h(remove_from_uri("page")."&page=".($F+1)).'" onclick="return !selectLoadMore(this, '.(+$y).', \''.'Loading'.'...\');" class="loadmore">'.'Load more data'.'</a>':'');}else{echo'Page'.":",pagination(0,$F).($F>1?" ...":""),($F?pagination($F,$F):""),($Dc>$F?pagination($F+1,$F).($Dc>$F+1?" ...":""):"");}}echo"<p class='count'>\n",($n!==false?"(".($yb?"":"~ ").lang(array('%d row','%d rows'),$n).") ":"");$hb=($yb?"":"~ ").$n;echo |
|
548 | -checkbox("all",1,0,'whole result',"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$hb' : checked); selectCount('selected2', this.checked || !checked ? '$hb' : checked);")."\n";if($b->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div> |
|
549 | -<input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'> |
|
506 | +int32($C) {while ($C >= 2147483648)$C -= 4294967296; while ($C <= -2147483649)$C += 4294967296; return(int) $C; }function |
|
507 | +long2str($U, $Ke) {$Ed = ''; foreach ($U |
|
508 | +as$V)$Ed .= pack('V', $V); if ($Ke)return |
|
509 | +substr($Ed, 0, end($U)); return$Ed; }function |
|
510 | +str2long($Ed, $Ke) {$U = array_values(unpack('V*', str_pad($Ed, 4 * ceil(strlen($Ed) / 4), "\0"))); if ($Ke)$U[] = strlen($Ed); return$U; }function |
|
511 | +xxtea_mx($Z, $Oe, $ae, $w) {return |
|
512 | +int32((($Z >> 5 & 0x7FFFFFF) ^ $Oe << 2) + (($Oe >> 3 & 0x1FFFFFFF) ^ $Z << 4)) ^ int32(($ae ^ $Oe) + ($w ^ $Z)); }function |
|
513 | +encrypt_string($Vd, $x) {if ($Vd == "")return""; $x = array_values(unpack("V*", pack("H*", md5($x)))); $U = str2long($Vd, true); $C = count($U) - 1; $Z = $U[$C]; $Oe = $U[0]; $rd = floor(6 + 52 / ($C + 1)); $ae = 0; while ($rd-- > 0) {$ae = int32($ae + 0x9E3779B9); $lb = $ae >> 2 & 3; for ($cd = 0; $cd < $C; $cd++) {$Oe = $U[$cd + 1]; $Kc = xxtea_mx($Z, $Oe, $ae, $x[$cd & 3 ^ $lb]); $Z = int32($U[$cd] + $Kc); $U[$cd] = $Z; }$Oe = $U[0]; $Kc = xxtea_mx($Z, $Oe, $ae, $x[$cd & 3 ^ $lb]); $Z = int32($U[$C] + $Kc); $U[$C] = $Z; }return |
|
514 | +long2str($U, false); }function |
|
515 | +decrypt_string($Vd, $x) {if ($Vd == "")return""; if (!$x)return |
|
516 | +false; $x = array_values(unpack("V*", pack("H*", md5($x)))); $U = str2long($Vd, false); $C = count($U) - 1; $Z = $U[$C]; $Oe = $U[0]; $rd = floor(6 + 52 / ($C + 1)); $ae = int32($rd * 0x9E3779B9); while ($ae) {$lb = $ae >> 2 & 3; for ($cd = $C; $cd > 0; $cd--) {$Z = $U[$cd - 1]; $Kc = xxtea_mx($Z, $Oe, $ae, $x[$cd & 3 ^ $lb]); $Oe = int32($U[$cd] - $Kc); $U[$cd] = $Oe; }$Z = $U[$C]; $Kc = xxtea_mx($Z, $Oe, $ae, $x[$cd & 3 ^ $lb]); $Oe = int32($U[0] - $Kc); $U[0] = $Oe; $ae = int32($ae - 0x9E3779B9); }return |
|
517 | +long2str($U, true); }$f = ''; $Zb = $_SESSION["token"]; if (!$Zb)$_SESSION["token"] = rand(1, 1e6); $qe = get_token(); $gd = array(); if ($_COOKIE["adminer_permanent"]) {foreach (explode(" ", $_COOKIE["adminer_permanent"])as$V) {list($x) = explode(":", $V); $gd[$x] = $V; }}function |
|
518 | +add_invalid_login() {global$b; $Fb = get_temp_dir() . "/adminer.invalid"; $Rb = @fopen($Fb, "r+"); if (!$Rb) {$Rb = @fopen($Fb, "w"); if (!$Rb)return; }flock($Rb, LOCK_EX); $oc = unserialize(stream_get_contents($Rb)); $je = time(); if ($oc) {foreach ($oc |
|
519 | +as$pc=>$V) {if ($V[0] < $je)unset($oc[$pc]); }}$nc = &$oc[$b->bruteForceKey()]; if (!$nc)$nc = array($je + 30 * 60, 0); $nc[1]++; $Ld = serialize($oc); rewind($Rb); fwrite($Rb, $Ld); ftruncate($Rb, strlen($Ld)); flock($Rb, LOCK_UN); fclose($Rb); }$ra = $_POST["auth"]; if ($ra) {$oc = unserialize(@file_get_contents(get_temp_dir() . "/adminer.invalid")); $nc = $oc[$b->bruteForceKey()]; $Mc = ($nc[1] > 30 ? $nc[0] - time() : 0); if ($Mc > 0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.', 'Too many unsuccessful logins, try again in %d minutes.'), ceil($Mc / 60))); session_regenerate_id(); $X = $ra["driver"]; $O = $ra["server"]; $T = $ra["username"]; $G = (string) $ra["password"]; $h = $ra["db"]; set_password($X, $O, $T, $G); $_SESSION["db"][$X][$O][$T][$h] = true; if ($ra["permanent"]) {$x = base64_encode($X) . "-" . base64_encode($O) . "-" . base64_encode($T) . "-" . base64_encode($h); $od = $b->permanentLogin(true); $gd[$x] = "$x:" . base64_encode($od ? encrypt_string($G, $od) : ""); cookie("adminer_permanent", implode(" ", $gd)); }if (count($_POST) == 1 || DRIVER != $X || SERVER != $O || $_GET["username"] !== $T || DB != $h)redirect(auth_url($X, $O, $T, $h)); }elseif ($_POST["logout"]) {if ($Zb && !verify_token()) {page_header('Logout', 'Invalid CSRF token. Send the form again.'); page_footer("db"); exit; } else {foreach (array("pwds", "db", "dbs", "queries")as$x)set_session($x, null); unset_permanent(); redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1), 'Logout successful.'); }}elseif ($gd && !$_SESSION["pwds"]) {session_regenerate_id(); $od = $b->permanentLogin(); foreach ($gd |
|
520 | +as$x=>$V) {list(,$Ha) = explode(":", $V); list($X, $O, $T, $h) = array_map('base64_decode', explode("-", $x)); set_password($X, $O, $T, decrypt_string(base64_decode($Ha), $od)); $_SESSION["db"][$X][$O][$T][$h] = true; }}function |
|
521 | +unset_permanent() {global$gd; foreach ($gd |
|
522 | +as$x=>$V) {list($X, $O, $T, $h) = array_map('base64_decode', explode("-", $x)); if ($X == DRIVER && $O == SERVER && $T == $_GET["username"] && $h == DB)unset($gd[$x]); }cookie("adminer_permanent", implode(" ", $gd)); }function |
|
523 | +auth_error($k) {global$b, $Zb; $k = h($k); $Od = session_name(); if (isset($_GET["username"])) {header("HTTP/1.1 403 Forbidden"); if (($_COOKIE[$Od] || $_GET[$Od]) && !$Zb)$k = 'Session expired, please login again.'; else {add_invalid_login(); $G = get_password(); if ($G !== null) {if ($G === false)$k .= '<br>' . sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.', '<code>permanentLogin()</code>'); set_password(DRIVER, SERVER, $_GET["username"], null); }unset_permanent(); }}if (!$_COOKIE[$Od] && $_GET[$Od] && ini_bool("session.use_only_cookies"))$k = 'Session support must be enabled.'; $ed = session_get_cookie_params(); cookie("adminer_key", ($_COOKIE["adminer_key"] ? $_COOKIE["adminer_key"] : rand_string()), $ed["lifetime"]); page_header('Login', $k, null); echo"<form action='' method='post'>\n"; $b->loginForm(); echo"<div>"; hidden_fields($_POST, array("auth")); echo"</div>\n", "</form>\n"; page_footer("auth"); exit; }if (isset($_GET["username"])) {if (!class_exists("Min_DB")) {unset($_SESSION["pwds"][DRIVER]); unset_permanent(); page_header('No extension', sprintf('None of the supported PHP extensions (%s) are available.', implode(", ", $kd)), false); page_footer("auth"); exit; }$f = connect(); }$i = new |
|
524 | +Min_Driver($f); if (!is_object($f) || ($_c = $b->login($_GET["username"], get_password())) !== true)auth_error((is_string($f) ? $f : (is_string($_c) ? $_c : 'Invalid credentials.'))); if ($ra && $_POST["token"])$_POST["token"] = $qe; $k = ''; if ($_POST) {if (!verify_token()) {$kc = "max_input_vars"; $Fc = ini_get($kc); if (extension_loaded("suhosin")) {foreach (array("suhosin.request.max_vars", "suhosin.post.max_vars")as$x) {$V = ini_get($x); if ($V && (!$Fc || $V < $Fc)) {$kc = $x; $Fc = $V; }}}$k = (!$_POST["token"] && $Fc ? sprintf('Maximum number of allowed fields exceeded. Please increase %s.', "'$kc'") : 'Invalid CSRF token. Send the form again.' . ' ' . 'If you did not send this request from Adminer then close this page.'); }}elseif ($_SERVER["REQUEST_METHOD"] == "POST") {$k = sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.', "'post_max_size'"); if (isset($_GET["sql"]))$k .= ' ' . 'You can upload a big SQL file via FTP and import it from server.'; }if (!ini_bool("session.use_cookies") || @ini_set("session.use_cookies", false) !== false)session_write_close(); function |
|
525 | +email_header($ac) {return"=?UTF-8?B?" . base64_encode($ac) . "?="; }function |
|
526 | +send_mail($pb, $Yd, $B, $Sb = "", $Gb = array()) {$j = (DIRECTORY_SEPARATOR == "/" ? "\n" : "\r\n"); $B = str_replace("\n", $j, wordwrap(str_replace("\r", "", "$B\n"))); $Ba = uniqid("boundary"); $qa = ""; foreach ((array) $Gb["error"]as$x=>$V) {if (!$V)$qa .= "--$Ba$j" . "Content-Type: " . str_replace("\n", "", $Gb["type"][$x]) . $j . "Content-Disposition: attachment; filename=\"" . preg_replace('~["\\n]~', '', $Gb["name"][$x]) . "\"$j" . "Content-Transfer-Encoding: base64$j$j" . chunk_split(base64_encode(file_get_contents($Gb["tmp_name"][$x])), 76, $j) . $j; }$ya = ""; $bc = "Content-Type: text/plain; charset=utf-8$j" . "Content-Transfer-Encoding: 8bit"; if ($qa) {$qa .= "--$Ba--$j"; $ya = "--$Ba$j$bc$j$j"; $bc = "Content-Type: multipart/mixed; boundary=\"$Ba\""; }$bc .= $j . "MIME-Version: 1.0$j" . "X-Mailer: Adminer Editor" . ($Sb ? $j . "From: " . str_replace("\n", "", $Sb) : ""); return |
|
527 | +mail($pb, email_header($Yd), $ya . $B . $qa, $bc); }function |
|
528 | +like_bool($l) {return |
|
529 | +preg_match("~bool|(tinyint|bit)\\(1\\)~", $l["full_type"]); }$f->select_db($b->database()); $Rc = "RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT"; $jb[DRIVER] = 'Login'; if (isset($_GET["select"]) && ($_POST["edit"] || $_POST["clone"]) && !$_POST["save"])$_GET["edit"] = $_GET["select"]; if (isset($_GET["download"])) {$a = $_GET["download"]; $m = fields($a); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=" . friendly_url("$a-" . implode("_", $_GET["where"])) . "." . friendly_url($_GET["field"])); $N = array(idf_escape($_GET["field"])); $J = $i->select($a, $N, array(where($_GET, $m)), $N); $L = ($J ? $J->fetch_row() : array()); echo$L[0]; exit; }elseif (isset($_GET["edit"])) {$a = $_GET["edit"]; $m = fields($a); $Y = (isset($_GET["select"]) ? (count($_POST["check"]) == 1 ? where_check($_POST["check"][0], $m) : "") : where($_GET, $m)); $De = (isset($_GET["select"]) ? $_POST["edit"] : $Y); foreach ($m |
|
530 | +as$D=>$l) {if (!isset($l["privileges"][$De ? "update" : "insert"]) || $b->fieldName($l) == "")unset($m[$D]); }if ($_POST && !$k && !isset($_GET["select"])) {$_ = $_POST["referer"]; if ($_POST["insert"])$_ = ($De ? null : $_SERVER["REQUEST_URI"]); elseif (!preg_match('~^.+&select=.+$~', $_))$_ = ME . "select=" . urlencode($a); $t = indexes($a); $ze = unique_array($_GET["where"], $t); $ud = "\nWHERE $Y"; if (isset($_POST["delete"]))queries_redirect($_, 'Item has been deleted.', $i->delete($a, $ud, !$ze)); else {$P = array(); foreach ($m |
|
531 | +as$D=>$l) {$V = process_input($l); if ($V !== false && $V !== null)$P[idf_escape($D)] = $V; }if ($De) {if (!$P)redirect($_); queries_redirect($_, 'Item has been updated.', $i->update($a, $P, $ud, !$ze)); if (is_ajax()) {page_headers(); page_messages($k); exit; }} else {$J = $i->insert($a, $P); $vc = ($J ? last_id() : 0); queries_redirect($_, sprintf('Item%s has been inserted.', ($vc ? " $vc" : "")), $J); }}}$L = null; if ($_POST["save"])$L = (array) $_POST["fields"]; elseif ($Y) {$N = array(); foreach ($m |
|
532 | +as$D=>$l) {if (isset($l["privileges"]["select"])) {$oa = convert_field($l); if ($_POST["clone"] && $l["auto_increment"])$oa = "''"; if ($v == "sql" && preg_match("~enum|set~", $l["type"]))$oa = "1*" . idf_escape($D); $N[] = ($oa ? "$oa AS " : "") . idf_escape($D); }}$L = array(); if (!support("table"))$N = array("*"); if ($N) {$J = $i->select($a, $N, array($Y), $N, array(), (isset($_GET["select"]) ? 2 : 1)); $L = $J->fetch_assoc(); if (!$L)$L = false; if (isset($_GET["select"]) && (!$L || $J->fetch_assoc()))$L = null; }}if (!support("table") && !$m) {if (!$Y) {$J = $i->select($a, array("*"), $Y, array("*")); $L = ($J ? $J->fetch_assoc() : false); if (!$L)$L = array($i->primary=>""); }if ($L) {foreach ($L |
|
533 | +as$x=>$V) {if (!$Y)$L[$x] = null; $m[$x] = array("field"=>$x, "null"=>($x != $i->primary), "auto_increment"=>($x == $i->primary)); }}}edit_form($a, $m, $L, $De); }elseif (isset($_GET["select"])) {$a = $_GET["select"]; $S = table_status1($a); $t = indexes($a); $m = fields($a); $Ob = column_foreign_keys($a); $Qc = ""; if ($S["Oid"]) {$Qc = ($v == "sqlite" ? "rowid" : "oid"); $t[] = array("type"=>"PRIMARY", "columns"=>array($Qc)); }parse_str($_COOKIE["adminer_import"], $ia); $Dd = array(); $e = array(); $he = null; foreach ($m |
|
534 | +as$x=>$l) {$D = $b->fieldName($l); if (isset($l["privileges"]["select"]) && $D != "") {$e[$x] = html_entity_decode(strip_tags($D), ENT_QUOTES); if (is_shortable($l))$he = $b->selectLengthProcess(); }$Dd += $l["privileges"]; }list($N, $p) = $b->selectColumnsProcess($e, $t); $u = count($p) < count($N); $Y = $b->selectSearchProcess($m, $t); $E = $b->selectOrderProcess($m, $t); $y = $b->selectLimitProcess(); $Sb = ($N ? implode(", ", $N) : "*" . ($Qc ? ", $Qc" : "")) . convert_fields($e, $m, $N) . "\nFROM " . table($a); $Ub = ($p && $u ? "\nGROUP BY " . implode(", ", $p) : "") . ($E ? "\nORDER BY " . implode(", ", $E) : ""); if ($_GET["val"] && is_ajax()) {header("Content-Type: text/plain; charset=utf-8"); foreach ($_GET["val"]as$_e=>$L) {$oa = convert_field($m[key($L)]); $N = array($oa ? $oa : idf_escape(key($L))); $Y[] = where_check($_e, $m); $K = $i->select($a, $N, $Y, $N); if ($K)echo |
|
535 | +reset($K->fetch_row()); }exit; }if ($_POST && !$k) {$Me = $Y; if (!$_POST["all"] && is_array($_POST["check"])) {$Ga = array(); foreach ($_POST["check"]as$Ea)$Ga[] = where_check($Ea, $m); $Me[] = "((" . implode(") OR (", $Ga) . "))"; }$Me = ($Me ? "\nWHERE " . implode(" AND ", $Me) : ""); $md = $Be = null; foreach ($t |
|
536 | +as$s) {if ($s["type"] == "PRIMARY") {$md = array_flip($s["columns"]); $Be = ($N ? $md : array()); break; }}foreach ((array) $Be |
|
537 | +as$x=>$V) {if (in_array(idf_escape($x), $N))unset($Be[$x]); }if ($_POST["export"]) {cookie("adminer_import", "output=" . urlencode($_POST["output"]) . "&format=" . urlencode($_POST["format"])); dump_headers($a); $b->dumpTable($a, ""); if (!is_array($_POST["check"]) || $Be === array())$I = "SELECT $Sb$Me$Ub"; else {$ye = array(); foreach ($_POST["check"]as$V)$ye[] = "(SELECT" . limit($Sb, "\nWHERE " . ($Y ? implode(" AND ", $Y) . " AND " : "") . where_check($V, $m) . $Ub, 1) . ")"; $I = implode(" UNION ALL ", $ye); }$b->dumpData($a, "table", $I); exit; }if (!$b->selectEmailProcess($Y, $Ob)) {if ($_POST["save"] || $_POST["delete"]) {$J = true; $ja = 0; $P = array(); if (!$_POST["delete"]) {foreach ($e |
|
538 | +as$D=>$V) {$V = process_input($m[$D]); if ($V !== null && ($_POST["clone"] || $V !== false))$P[idf_escape($D)] = ($V !== false ? $V : idf_escape($D)); }}if ($_POST["delete"] || $P) {if ($_POST["clone"])$I = "INTO " . table($a) . " (" . implode(", ", array_keys($P)) . ")\nSELECT " . implode(", ", $P) . "\nFROM " . table($a); if ($_POST["all"] || ($Be === array() && is_array($_POST["check"])) || $u) {$J = ($_POST["delete"] ? $i->delete($a, $Me) : ($_POST["clone"] ? queries("INSERT $I$Me") : $i->update($a, $P, $Me))); $ja = $f->affected_rows; } else {foreach ((array) $_POST["check"]as$V) {$Le = "\nWHERE " . ($Y ? implode(" AND ", $Y) . " AND " : "") . where_check($V, $m); $J = ($_POST["delete"] ? $i->delete($a, $Le, 1) : ($_POST["clone"] ? queries("INSERT" . limit1($I, $Le)) : $i->update($a, $P, $Le))); if (!$J)break; $ja += $f->affected_rows; }}}$B = lang(array('%d item has been affected.', '%d items have been affected.'), $ja); if ($_POST["clone"] && $J && $ja == 1) {$vc = last_id(); if ($vc)$B = sprintf('Item%s has been inserted.', " $vc"); }queries_redirect(remove_from_uri($_POST["all"] && $_POST["delete"] ? "page" : ""), $B, $J); if (!$_POST["delete"]) {edit_form($a, $m, (array) $_POST["fields"], !$_POST["clone"]); page_footer(); exit; }}elseif (!$_POST["import"]) {if (!$_POST["val"])$k = 'Ctrl+click on a value to modify it.'; else {$J = true; $ja = 0; foreach ($_POST["val"]as$_e=>$L) {$P = array(); foreach ($L |
|
539 | +as$x=>$V) {$x = bracket_escape($x, 1); $P[idf_escape($x)] = (preg_match('~char|text~', $m[$x]["type"]) || $V != "" ? $b->processInput($m[$x], $V) : "NULL"); }$J = $i->update($a, $P, " WHERE " . ($Y ? implode(" AND ", $Y) . " AND " : "") . where_check($_e, $m), !($u || $Be === array()), " "); if (!$J)break; $ja += $f->affected_rows; }queries_redirect(remove_from_uri(), lang(array('%d item has been affected.', '%d items have been affected.'), $ja), $J); }}elseif (!is_string($Eb = get_file("csv_file", true)))$k = upload_error($Eb); elseif (!preg_match('~~u', $Eb))$k = 'File must be in UTF-8 encoding.'; else {cookie("adminer_import", "output=" . urlencode($ia["output"]) . "&format=" . urlencode($_POST["separator"])); $J = true; $Oa = array_keys($m); preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~', $Eb, $Bc); $ja = count($Bc[0]); $i->begin(); $Kd = ($_POST["separator"] == "csv" ? "," : ($_POST["separator"] == "tsv" ? "\t" : ";")); $M = array(); foreach ($Bc[0]as$x=>$V) {preg_match_all("~((?>\"[^\"]*\")+|[^$Kd]*)$Kd~", $V . $Kd, $Cc); if (!$x && !array_diff($Cc[1], $Oa)) {$Oa = $Cc[1]; $ja--; } else {$P = array(); foreach ($Cc[1]as$q=>$La)$P[idf_escape($Oa[$q])] = ($La == "" && $m[$Oa[$q]]["null"] ? "NULL" : q(str_replace('""', '"', preg_replace('~^"|"$~', '', $La)))); $M[] = $P; }}$J = (!$M || $i->insertUpdate($a, $M, $md)); if ($J)$i->commit(); queries_redirect(remove_from_uri("page"), lang(array('%d row has been imported.', '%d rows have been imported.'), $ja), $J); $i->rollback(); }}}$de = $b->tableName($S); if (is_ajax()) {page_headers(); ob_start(); } else |
|
540 | +page_header('Select' . ": $de", $k); $P = null; if (isset($Dd["insert"]) || !support("table")) {$P = ""; foreach ((array) $_GET["where"]as$V) {if (count($Ob[$V["col"]]) == 1 && ($V["op"] == "=" || (!$V["op"] && !preg_match('~[_%]~', $V["val"]))))$P .= "&set" . urlencode("[" . bracket_escape($V["col"]) . "]") . "=" . urlencode($V["val"]); }}$b->selectLinks($S, $P); if (!$e && support("table"))echo"<p class='error'>" . 'Unable to select the table' . ($m ? "." : ": " . error()) . "\n"; else {echo"<form action='' id='form'>\n", "<div style='display: none;'>"; hidden_fields_get(); echo(DB != "" ? '<input type="hidden" name="db" value="' . h(DB) . '">' . (isset($_GET["ns"]) ? '<input type="hidden" name="ns" value="' . h($_GET["ns"]) . '">' : "") : ""); echo'<input type="hidden" name="select" value="' . h($a) . '">', "</div>\n"; $b->selectColumnsPrint($N, $e); $b->selectSearchPrint($Y, $e, $t); $b->selectOrderPrint($E, $e, $t); $b->selectLimitPrint($y); $b->selectLengthPrint($he); $b->selectActionPrint($t); echo"</form>\n"; $F = $_GET["page"]; if ($F == "last") {$n = $f->result(count_rows($a, $Y, $u, $p)); $F = floor(max(0, $n - 1) / $y); }$Hd = $N; if (!$Hd) {$Hd[] = "*"; if ($Qc)$Hd[] = $Qc; }$Ua = convert_fields($e, $m, $N); if ($Ua)$Hd[] = substr($Ua, 2); $J = $i->select($a, $Hd, $Y, $p, $E, $y, $F, true); if (!$J)echo"<p class='error'>" . error() . "\n"; else {if ($v == "mssql" && $F)$J->seek($y * $F); $rb = array(); echo"<form action='' method='post' enctype='multipart/form-data'>\n"; $M = array(); while ($L = $J->fetch_assoc()) {if ($F && $v == "oracle")unset($L["RNUM"]); $M[] = $L; }if ($_GET["page"] != "last" && +$y && $p && $u && $v == "sql")$n = $f->result(" SELECT FOUND_ROWS()"); if (!$M)echo"<p class='message'>" . 'No rows.' . "\n"; else {$xa = $b->backwardKeys($a, $de); echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n", "<thead><tr>" . (!$p && $N ? "" : "<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='" . h($_GET["modify"] ? remove_from_uri("modify") : $_SERVER["REQUEST_URI"] . "&modify=1") . "'>" . 'Modify' . "</a>"); $Lc = array(); $Tb = array(); reset($N); $wd = 1; foreach ($M[0]as$x=>$V) {if ($x != $Qc) {$V = $_GET["columns"][key($N)]; $l = $m[$N ? ($V ? $V["col"] : current($N)) : $x]; $D = ($l ? $b->fieldName($l, $wd) : ($V["fun"] ? "*" : $x)); if ($D != "") {$wd++; $Lc[$x] = $D; $d = idf_escape($x); $ec = remove_from_uri('(order|desc)[^=]*|page') . '&order%5B0%5D=' . urlencode($x); $db = "&desc%5B0%5D=1"; echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">', '<a href="' . h($ec . ($E[0] == $d || $E[0] == $x || (!$E && $u && $p[0] == $d) ? $db : '')) . '">'; echo |
|
541 | +apply_sql_function($V["fun"], $D) . "</a>"; echo"<span class='column hidden'>", "<a href='" . h($ec . $db) . "' title='" . 'descending' . "' class='text'> ↓</a>"; if (!$V["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\'' . h(js_escape($x)) . '\'); return false;" title="' . 'Search' . '" class="text jsonly"> =</a>'; echo"</span>"; }$Tb[$x] = $V["fun"]; next($N); }}$yc = array(); if ($_GET["modify"]) {foreach ($M |
|
542 | +as$L) {foreach ($L |
|
543 | +as$x=>$V)$yc[$x] = max($yc[$x], min(40, strlen(utf8_decode($V)))); }}echo($xa ? "<th>" . 'Relations' : "") . "</thead>\n"; if (is_ajax()) {if ($y % 2 == 1 && $F % 2 == 1)odd(); ob_end_clean(); }foreach ($b->rowDescriptions($M, $Ob)as$C=>$L) {$ze = unique_array($M[$C], $t); if (!$ze) {$ze = array(); foreach ($M[$C]as$x=>$V) {if (!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~', $x))$ze[$x] = $V; }}$_e = ""; foreach ($ze |
|
544 | +as$x=>$V) {if (($v == "sql" || $v == "pgsql") && strlen($V) > 64) {$x = (strpos($x, '(') ? $x : idf_escape($x)); $x = "MD5(" . ($v == 'sql' && preg_match("~^utf8_~", $m[$x]["collation"]) ? $x : "CONVERT($x USING " . charset($f) . ")") . ")"; $V = md5($V); }$_e .= "&" . ($V !== null ? urlencode("where[" . bracket_escape($x) . "]") . "=" . urlencode($V) : "null%5B%5D=" . urlencode($x)); }echo"<tr" . odd() . ">" . (!$p && $N ? "" : "<td>" . checkbox("check[]", substr($_e, 1), in_array(substr($_e, 1), (array) $_POST["check"]), "", "this.form['all'].checked = false; formUncheck('all-page');") . ($u || information_schema(DB) ? "" : " <a href='" . h(ME . "edit=" . urlencode($a) . $_e) . "'>" . 'edit' . "</a>")); foreach ($L |
|
545 | +as$x=>$V) {if (isset($Lc[$x])) {$l = $m[$x]; if ($V != "" && (!isset($rb[$x]) || $rb[$x] != ""))$rb[$x] = (is_mail($V) ? $Lc[$x] : ""); $z = ""; if (preg_match('~blob|bytea|raw|file~', $l["type"]) && $V != "")$z = ME . 'download=' . urlencode($a) . '&field=' . urlencode($x) . $_e; if (!$z && $V !== null) {foreach ((array) $Ob[$x]as$Nb) {if (count($Ob[$x]) == 1 || end($Nb["source"]) == $x) {$z = ""; foreach ($Nb["source"]as$q=>$Rd)$z .= where_link($q, $Nb["target"][$q], $M[$C][$Rd]); $z = ($Nb["db"] != "" ? preg_replace('~([?&]db=)[^&]+~', '\\1' . urlencode($Nb["db"]), ME) : ME) . 'select=' . urlencode($Nb["table"]) . $z; if (count($Nb["source"]) == 1)break; }}}if ($x == "COUNT(*)") {$z = ME . "select=" . urlencode($a); $q = 0; foreach ((array) $_GET["where"]as$U) {if (!array_key_exists($U["col"], $ze))$z .= where_link($q++, $U["col"], $U["val"], $U["op"]); }foreach ($ze |
|
546 | +as$w=>$U)$z .= where_link($q++, $w, $U); }$V = select_value($V, $z, $l, $he); $r = h("val[$_e][" . bracket_escape($x) . "]"); $W = $_POST["val"][$_e][bracket_escape($x)]; $nb = !is_array($L[$x]) && is_utf8($V) && $M[$C][$x] == $L[$x] && !$Tb[$x]; $ge = preg_match('~text|lob~', $l["type"]); if (($_GET["modify"] && $nb) || $W !== null) {$Wb = h($W !== null ? $W : $L[$x]); echo"<td>" . ($ge ? "<textarea name='$r' cols='30' rows='" . (substr_count($L[$x], "\n") + 1) . "'>$Wb</textarea>" : "<input name='$r' value='$Wb' size='$yc[$x]'>"); } else {$Ac = strpos($V, "<i>...</i>"); echo"<td id='$r' onclick=\"selectClick(this, event, " . ($Ac ? 2 : ($ge ? 1 : 0)) . ($nb ? "" : ", '" . h('Use edit link to modify this value.') . "'") . ");\">$V"; }}}if ($xa)echo"<td>"; $b->backwardKeysPrint($xa, $M[$C]); echo"</tr>\n"; }if (is_ajax())exit; echo"</table>\n"; }if (($M || $F) && !is_ajax()) {$yb = true; if ($_GET["page"] != "last") {if (!+$y)$n = count($M); elseif ($v != "sql" || !$u) {$n = ($u ? false : found_rows($S, $Y)); if ($n < max(1e4, 2 * ($F + 1) * $y))$n = reset(slow_query(count_rows($a, $Y, $u, $p))); else$yb = false; }}if (+$y && ($n === false || $n > $y || $F)) {echo"<p class='pages'>"; $Dc = ($n === false ? $F + (count($M) >= $y ? 2 : 1) : floor(($n - 1) / $y)); if ($v != "simpledb") {echo'<a href="' . h(remove_from_uri("page")) . "\" onclick=\"pageClick(this.href, +prompt('" . 'Page' . "', '" . ($F + 1) . "'), event); return false;\">" . 'Page' . "</a>:", pagination(0, $F) . ($F > 5 ? " ..." : ""); for ($q = max(1, $F - 4); $q < min($Dc, $F + 5); $q++)echo |
|
547 | +pagination($q, $F); if ($Dc > 0) {echo($F + 5 < $Dc ? " ..." : ""), ($yb && $n !== false ? pagination($Dc, $F) : " <a href='" . h(remove_from_uri("page") . "&page=last") . "' title='~$Dc'>" . 'last' . "</a>"); }echo(($n === false ? count($M) + 1 : $n - $F * $y) > $y ? ' <a href="' . h(remove_from_uri("page") . "&page=" . ($F + 1)) . '" onclick="return !selectLoadMore(this, ' . (+$y) . ', \'' . 'Loading' . '...\');" class="loadmore">' . 'Load more data' . '</a>' : ''); } else {echo'Page' . ":", pagination(0, $F) . ($F > 1 ? " ..." : ""), ($F ? pagination($F, $F) : ""), ($Dc > $F ? pagination($F + 1, $F) . ($Dc > $F + 1 ? " ..." : "") : ""); }}echo"<p class='count'>\n", ($n !== false ? "(" . ($yb ? "" : "~ ") . lang(array('%d row', '%d rows'), $n) . ") " : ""); $hb = ($yb ? "" : "~ ") . $n; echo |
|
548 | +checkbox("all", 1, 0, 'whole result', "var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$hb' : checked); selectCount('selected2', this.checked || !checked ? '$hb' : checked);") . "\n"; if ($b->selectCommandPrint()) {echo'<fieldset', ($_GET["modify"] ? '' : ' class="jsonly"'), '><legend>Modify</legend><div> |
|
549 | +<input type="submit" value="Save"',($_GET["modify"] ? '' : ' title="' . 'Ctrl+click on a value to modify it.' . '"'), '> |
|
550 | 550 | </div></fieldset> |
551 | 551 | <fieldset><legend>Selected <span id="selected"></span></legend><div> |
552 | 552 | <input type="submit" name="edit" value="Edit"> |
553 | 553 | <input type="submit" name="clone" value="Clone"> |
554 | -<input type="submit" name="delete" value="Delete"',confirm(),'> |
|
554 | +<input type="submit" name="delete" value="Delete"',confirm(), '> |
|
555 | 555 | </div></fieldset> |
556 | -';}$Pb=$b->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($Pb['sql']);break;}}if($Pb){print_fieldset("export",'Export'." <span id='selected2'></span>");$bd=$b->dumpOutput();echo($bd?html_select("output",$bd,$ia["output"])." ":""),html_select("format",$Pb,$ia["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}echo(!$p&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",'Import',!$M);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ia["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($rb,'strlen'),$e);echo"<p><input type='hidden' name='token' value='$qe'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["script"])){if($_GET["script"]=="kill")$f->query("KILL ".number($_POST["kill"]));elseif(list($R,$r,$D)=$b->_foreignColumn(column_foreign_keys($_GET["source"]),$_GET["field"])){$y=11;$J=$f->query("SELECT $r, $D FROM ".table($R)." WHERE ".(preg_match('~^[0-9]+$~',$_GET["value"])?"$r = $_GET[value] OR ":"")."$D LIKE ".q("$_GET[value]%")." ORDER BY 2 LIMIT $y");for($q=1;($L=$J->fetch_row())&&$q<$y;$q++)echo"<a href='".h(ME."edit=".urlencode($R)."&where".urlencode("[".bracket_escape(idf_unescape($r))."]")."=".urlencode($L[0]))."'>".h($L[1])."</a><br>\n";if($L)echo"...\n";}exit;}else{page_header('Server',"",false);if($b->homepage()){echo"<form action='' method='post'>\n","<p>".'Search data in tables'.": <input name='query' value='".h($_POST["query"])."'> <input type='submit' value='".'Search'."'>\n";if($_POST["query"]!="")search_tables();echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^tables\[/);"><th>'.'Table'.'<td>'.'Rows'."</thead>\n";foreach(table_status()as$R=>$L){$D=$b->tableName($L);if(isset($L["Engine"])&&$D!=""){echo'<tr'.odd().'><td>'.checkbox("tables[]",$R,in_array($R,(array)$_POST["tables"],true),"","formUncheck('check-all');"),"<th><a href='".h(ME).'select='.urlencode($R)."'>$D</a>";$V=format_number($L["Rows"]);echo"<td align='right'><a href='".h(ME."edit=").urlencode($R)."'>".($L["Engine"]=="InnoDB"&&$V?"~ $V":$V)."</a>";}}echo"</table>\n","<script type='text/javascript'>tableCheck();</script>\n","</form>\n";}}page_footer(); |
|
557 | 556 | \ No newline at end of file |
557 | +';}$Pb = $b->dumpFormat(); foreach ((array) $_GET["columns"]as$d) {if ($d["fun"]) {unset($Pb['sql']); break; }}if ($Pb) {print_fieldset("export", 'Export' . " <span id='selected2'></span>"); $bd = $b->dumpOutput(); echo($bd ? html_select("output", $bd, $ia["output"]) . " " : ""), html_select("format", $Pb, $ia["format"]), " <input type='submit' name='export' value='" . 'Export' . "'>\n", "</div></fieldset>\n"; }echo(!$p && $N ? "" : "<script type='text/javascript'>tableCheck();</script>\n"); }if ($b->selectImportPrint()) {print_fieldset("import", 'Import', !$M); echo"<input type='file' name='csv_file'> ", html_select("separator", array("csv"=>"CSV,", "csv;"=>"CSV;", "tsv"=>"TSV"), $ia["format"], 1); echo" <input type='submit' name='import' value='" . 'Import' . "'>", "</div></fieldset>\n"; }$b->selectEmailPrint(array_filter($rb, 'strlen'), $e); echo"<p><input type='hidden' name='token' value='$qe'></p>\n", "</form>\n"; }}if (is_ajax()) {ob_end_clean(); exit; }}elseif (isset($_GET["script"])) {if ($_GET["script"] == "kill")$f->query("KILL " . number($_POST["kill"])); elseif (list($R, $r, $D) = $b->_foreignColumn(column_foreign_keys($_GET["source"]), $_GET["field"])) {$y = 11; $J = $f->query("SELECT $r, $D FROM " . table($R) . " WHERE " . (preg_match('~^[0-9]+$~', $_GET["value"]) ? "$r = $_GET[value] OR " : "") . "$D LIKE " . q("$_GET[value]%") . " ORDER BY 2 LIMIT $y"); for ($q = 1; ($L = $J->fetch_row()) && $q < $y; $q++)echo"<a href='" . h(ME . "edit=" . urlencode($R) . "&where" . urlencode("[" . bracket_escape(idf_unescape($r)) . "]") . "=" . urlencode($L[0])) . "'>" . h($L[1]) . "</a><br>\n"; if ($L)echo"...\n"; }exit; } else {page_header('Server', "", false); if ($b->homepage()) {echo"<form action='' method='post'>\n", "<p>" . 'Search data in tables' . ": <input name='query' value='" . h($_POST["query"]) . "'> <input type='submit' value='" . 'Search' . "'>\n"; if ($_POST["query"] != "")search_tables(); echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);'>\n", '<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^tables\[/);"><th>' . 'Table' . '<td>' . 'Rows' . "</thead>\n"; foreach (table_status()as$R=>$L) {$D = $b->tableName($L); if (isset($L["Engine"]) && $D != "") {echo'<tr' . odd() . '><td>' . checkbox("tables[]", $R, in_array($R, (array) $_POST["tables"], true), "", "formUncheck('check-all');"), "<th><a href='" . h(ME) . 'select=' . urlencode($R) . "'>$D</a>"; $V = format_number($L["Rows"]); echo"<td align='right'><a href='" . h(ME . "edit=") . urlencode($R) . "'>" . ($L["Engine"] == "InnoDB" && $V ? "~ $V" : $V) . "</a>"; }}echo"</table>\n", "<script type='text/javascript'>tableCheck();</script>\n", "</form>\n"; }}page_footer(); |
|
558 | 558 | \ No newline at end of file |
@@ -6,11 +6,17 @@ discard block |
||
6 | 6 | * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 |
7 | 7 | * @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other) |
8 | 8 | * @version 4.2.5 |
9 | -*/error_reporting(6135);$Hb=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Hb||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$V){$Ae=filter_input_array(constant("INPUT$V"),FILTER_UNSAFE_RAW);if($Ae)$$V=$Ae;}}if(function_exists("mb_internal_encoding"))mb_internal_encoding("8bit");if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo |
|
10 | -lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");}elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo |
|
11 | -lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8У’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤ l^íZ6˜ej…Á³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxlÖ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù €‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò 'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,EÍ`T¦É6Ûˆ-“Åì¾ÅÚŽT[Ѫz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø •ÿš´hìÁ{Ü£•î ËÔ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØÍ‡Ð¢©‰‚êcâ¡óB’—}Ø&`ˆîr+E“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼ ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡ ³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£È}");}elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
12 | -lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s> )â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n \ræs<ŒPi2INÆ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(Òm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$ CAÆ ä„¤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AKã¡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…): ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDùÑ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æÚŒÚ‡Ÿ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/ØX ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éï†PÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðÈôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEÐ€Ôøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6↬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F 4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀÎ t]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ 1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*/¹UÖVû‰¤þpì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Æ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·> —BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ ¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6Chº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ß§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)×…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üàå€ ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤ (€\r¹öGFžª@ؼÃúÙÀß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷Ƚà¸à\\P’,\"ª-rCÉrVäæY×·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê ‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rÔ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔÄ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„â¢ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ €ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;SÇ]ãñ@ËÇè:Ââ“÷I~Û‘•ÙùÒÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}Ï:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð‰)¯i4Ñu•sÁLjXÁMP¬‚^«ä5¹O’¥ bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE% dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> ›â}Sð8=ã‚ÇÀàô/™)BÑvEIÊbœvð’¬–/ˆªŠqìãÂôe¿KšÔw\0%õ!Í€pªUT@ѵ‰Ë¦_ŒË˜@òàtË8î%ñ>âÌôA´—¤äb+~+\n’…ΤÅ\"©>4Áˆc^Úô־šè§N€ZÛ^ÖØ¯N4ªCDr– DÉCÑ’øàáȳö(ÅR˜ed±‰ù¦›{áŠF•Z†+Q#´ÈW-ýí‘¥qÉÑUCÆÎ;£œ‹XðÛx£¤„\n6ÍzkàvÚý´qàx\"h’ÄšRXþ²?Àpd¢ùÅsðæ†ž?|ÜpÓ\rˆã¿~ÒÖ^ƘhÖªAñÆ<r\$ÓAfÇ5\n\"0;œƒ”‰!Ç¼Õ aÉá‰ÖzG„¬1ÞBÊ’ãÏ\"…¸†±OLkÛÓ‡‘\0ƒžFõñ¿Ž'YœŽˆ4õИ");}elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
13 | -lzw_decompress(compile_file('','minify_js'));}else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;";break;case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;";break;case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&ٜƶ•\0Çò\0;";break;case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;";break;}}exit;}function |
|
9 | +*/error_reporting(6135);$Hb=!preg_match('~^(unsafe_raw)?$~',ini_get("filter.default"));if($Hb||ini_get("filter.default_flags")){foreach(array('_GET','_POST','_COOKIE','_SERVER')as$V){$Ae=filter_input_array(constant("INPUT$V"),FILTER_UNSAFE_RAW);if($Ae) { |
|
10 | + $$V=$Ae; |
|
11 | +} |
|
12 | +}}if(function_exists("mb_internal_encoding")) { |
|
13 | + mb_internal_encoding("8bit"); |
|
14 | +} |
|
15 | +if(isset($_GET["file"])){if($_SERVER["HTTP_IF_MODIFIED_SINCE"]){header("HTTP/1.1 304 Not Modified");exit;}header("Expires: ".gmdate("D, d M Y H:i:s",time()+365*24*60*60)." GMT");header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");if($_GET["file"]=="favicon.ico"){header("Content-Type: image/x-icon");echo |
|
16 | +lzw_decompress("\0\0\0` \0„\0\n @\0´C„è\"\0`EãQ¸àÿ‡?ÀtvM'”JdÁd\\Œb0\0Ä\"™ÀfÓˆ¤îs5›ÏçÑAXPaJ“0„¥‘8„#RŠT©‘z`ˆ#.©ÇcíXÃþÈ€?À-\0¡Im? .«M¶€\0ȯ(̉ýÀ/(%Œ\0");} elseif($_GET["file"]=="default.css"){header("Content-Type: text/css; charset=utf-8");echo |
|
17 | +lzw_decompress("\n1̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn:‡#(¼b.\rDc)ÈÈa7E„‘¤Âl¦Ã±”èi1ÌŽs˜´ç-4™‡fÓ ÈÎi7†³é†„ŽŒFé”vt2ž‚Ó!–r0Ïãã£t~½U'3M€ÉW„B¦'cÍPÂ:6T\rc£A¾zr_îWK¶\r-¼VNFS%~Ãc²Ùí&›\\^ÊrÀ›æu‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæhš'g\rFB\ryT7SS¥PÐ1=ǤcIèÊ:d”ºm>£S8L†Jœt.M¢Š Ï‹`'C¡¼ÛÐ889¤È ŽQØýŒî2#8У’˜6mú²†ðjˆ¢h«<…Œ°«Œ9/ë˜ç:Jê)Ê‚¤\0d>!\0Z‡ˆvì»në¾ð¼o(Úó¥ÉkÔ7½sàù>Œî†!ÐR\"*nSý\0@P\"Áè’(‹#[¶¥£@g¹oü’znþ9k¤8†nš™ª1´I*ˆô=Ín²¤ª¸è0«c(ö;¾Ã Ðè!°üë*cì÷>ÎŽ¬E7DñLJ© 1ÊJ=ÓÚÞ1L‚û?Ðs=#`Ê3\$4ì€úÈuȱÌÎzGÑC YAt«?;×QÒk&ÇïYP¿uèåǯ}UaHV%G;ƒs¼”<A\0\\¼ÔPÑ\\œ&ªóV¦ð\n£SUÃtíÅÇrŒêˆÆ2¤ l^íZ6˜ej…Á³A·dó[ÝsÕ¶ˆJP”ªÊóˆÒŒŠ8è=»ƒ˜à6#Ë‚74*óŸ¨#eÈÀÞ!Õ7{Æ6“¿<oÍCª9v[–MôÅ-`Óõkö>ŽlÙÚ´‹åIªƒHÚ3xú€›äw0t6¾Ã%MR%³½jhÚB˜<´\0ÉAQ<P<:šãu/¤;\\> Ë-¹„ʈÍÁQH\nv¡L+vÖæì<ï\rèåvàöî¹\\* àÉçÓ´Ý¢gŒnË©¸¹TЩ2P•\r¨øß‹\"+z 8£ ¶:#€ÊèÃÎ2‹ºJ[i—‚£¨;z˜ûÑô¡rÊ3#¨Ù‰ :ãní\r㽃eÙpdÝÝ è2cˆê4²k¿Š£\rG•æE6_²ªÊØÞ‰b‹ž/Œ«HB%ò0ë¢>ÈÈðhoWÃnxlÖ æµƒCQ^€°ÐÔÿßñ\r„о¶4lK{þZÆü:†ÐÜß.¦p¨§Ä‚éJóB-Å+B”´‘(ëTòŸ%®µJ›0ªlØT¶`+É-Á¾@BÚáÛ„Vá’Ä\0ÂÏC¼,ì¯0tâàŒF‡‰å?Ä Ë\na@ÉŒ>‚âZEC“ôOŽ-曤^Q€&ßÖù)I)®¤ÄÀR„]\r¡”9”7_ˆ¢\rÉF80µObù €‘î>ºäý\nRý_ˆÑ8æ‚ØÙ«äov0¤bCA¸F!Ñt—–ă%0”/‘zAYO(4«‹¡ˆ¨Ò 'Ÿ] Iéí8hHÂ05˜3ò@x&nˆ’|TÓ³³)`.“s6eY˜D¦z¸Œ®¥ƒJÑ“ôž.„ñ{GEb¹Ó‹¡˜‹†2Õ×{\$**ý¾@ÝCž-:zYHZIôà5F]¦²YúùCªOêAÂÚó`x'´.*9t'{ÿ(êšwP¶¾ Ñ=¢*‰†ú*üxwråÔ*c‚žÌc|„DŸ“ÚV—–\r†V.‡0âÆ™V¤dˆ?Ò€üê,EÍ`T¦É6Ûˆ-“Åì¾ÅÚŽT[Ѫz©‚.Ar±£Í€Pøºnƒc=aÔ9Fònß!ÙuáÎA©Þƒ0iPó¬”îºJ6eäT]VØ[\rXÌáaŸ–vkõ\n+EˆáÜ•*\0¶~¶Æù@g\"ÌNCI\$àÉŒƒ€êx@WÃy¼*vuDÙ\0ÞvœëŒ†V\0èV`Gç½uµE®Ö•ÂÁf“l˜h’@ï)0@šT•°7‹íÛ§RAÊÙ·ò´3ۘЫ/QÇ]ª,sÖ{VRž±¡ŽöF«¡A˜„<¨v×¥î´%@9‚ÀF¢Õ5t‰%Ö+º/¢8;¾WÑäÚÇJïÐo:ÖNÿ`ø •ÿš´hìÁ{Ü£•î ËÔ8ÔEuª&°W|Ɇ„‰®Uú&\r\"ÔÁ»‰|-udž…Në¶:nc²©fV‹ÂÃè#U20å>\"®²Ç>Ì`œk]î-¯ÇxùSØÍ‡Ð¢©‰‚êcâ¡óB’—}Ø&`ˆîr+E“\$œyNýŒ±b,†´´Wx þ-9åÕrÓ,’ü`å+œïíËŠù’CœÓ)˜˜7Ûx\r¬þWµfMŒSR¼\\èz¦ÙQ²Ì“”uA¬ºê2ޱõ4îL&ËHi µ°²¹S\$)e³“æg rÈŒ©ƒ\$]ZëiYs¤õ×kW–n>µ7E1k8ÐdÃró®škÁý¢ëEÞÙÛwÂwcmŽTy¹•ë¿a›\$tx\rB´÷=Šö¢*”<ȃ l¡fôKœ‘N/¶¼ ÃlÕáükH“õ8 .‘‘ù?f÷›Úÿã6†Ñ‡¼{gi/\"à@–K›ñ@2ãça|#,Z¤±‡ ³ñwˆd¬™“²…¼å6w™^&Áêt™çœP±…¥Äù]À¼›.àãÚí¡TìîkroÀ‰÷\ro=—%æ×h`:\0᱂ö«”|ꊣ«a“Ô®6*:ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya±Ý\nƒu^ì–ÀrnO\r±»¡`þT~</ð¶wÄyþ}æ:›|£ÏÐûÖÌ¡6»¤×ø®Ÿvî\rc<·b#ûàô§†î–\$ùsµê|燇V)«h‹TCùñ(Ľñ£È}");} elseif($_GET["file"]=="functions.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
18 | +lzw_decompress("f:›ŒgCI¼Ü\n0›†S‘Øa9œÅS`°Çˆ“Œ&Ó(°Ên0˜†QIìÒf‰›\$±At^ sG²Étf6eŒ§yŒÊ()LäSÁÀP'…ÂáÌR'Ífq]\"˜s> )â‘`œH2ŠEq9ˆÊ?ˆ*)‰”t'°ŽÏ§Ø\n \ræs<ŒPi2INÆ*(=2ÌgXá¸è.3™N„Y4èB<’L—üîi©Ì¥2Ý´z=š0HøžÐ'·êŒšÃuÆtt:œÂ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2O4ãÞÑ…MÆS¸(ˆa…Š#¾Äàç’ïø|¹G‚bèôüxœ^Z[Çä™G¼ÎuTvª(Òm@Vò¸(†¼ÈbN<ŠÈ`æâXä1É+Œä9J8Â2\r£K¶9ðhå Áè`…‹ÆëI8ä›±S±ãt÷2ƒ+,£ÆIºã £pæ9m@Ð:ƒ€æáxï)…ÐüC…Ãxä3…ñ4P7áü-4Çr\"p3Fhà…-5ƒ”U4͉¸\\6°ƒ<D\$®l—9ÍR4t7ƒdD3µpÞΓkÌ:)\\;° ÐÔð\r@Žt…\$4O£<þ†!pdÇÔÚQJ\rÌHî}:&Œ¨ˆÂÈ„Á5YWJ˜‹±Â`ÓN£èbKNSÉÀÉa§Ž•ƒ´d>2WñÅ…bDj:9[21c„»È€:Xé@ËqË#“›4íL™'J”©+DHeÒ3¬.«O ÇK˰“ˆ…pV…át2Œwp;Æ“…íÿ\r?èOzDq.ª°Ð-†\"ìZñ®cèX3!/>PúFìsØÉ²±Ã0Í(òóˆ°Ê£€àŒ‚T63sVQo¸€SΑ b²ß…^r\$É@C© r2)©Œ£ “VÀ)+nÜ·zÃÁúålÚè{³K#…À9‹{†Û¯lÀºìmÐQ¨ëh»*É—PÄ:¡c˜]´7ãàø=¡LŸŒi;”2û¿§ÜÒ<\\Jí¤Øb¥n”…ƒ¥nÁ_iÓ´îJ\n†¢¨âòŽõC:ª„‘`N4¶Ì–È'Aw:4}ÊÛ£ÁW\080‘ÇL3õÊJ;èiú)\\„=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZÞèX`Ö”õŒ+zú'¦ê9½.\$\$…Ó@\n\ré]_ïÙ®¢Âh¨kk¬Ms>`Ì–ƒj¹%\\9жÆÔ('°jAˆ>BCd\"K\$ CAÆ ä„¤.².`‰â.EÑæ´–ÌÃyy\0‹D2Ï8t Ð6†Ã8¬FL«´×ÞíâŒB*¬ð,Ò|\nx\\@ °@¸Ø3r ¬ðÎWKQb,%…¯´DBfØÈ³D|ÍŒËE0/2>£Y!Ć'õ™`æf™mHº<BãB0\r*\0Gxò‰nêY4‚¶¾Œ,žL²©º–öÅ%SÆ,ýv‡0ê‘–XòQÄ1†HId`‡!.ÔVÊ›H/Åú×ÀHãù0ÆUÁ¸0™©Ž`îLI©8ÖÃkŠ”2Œ4JYNÅ&8xä¥JØk:AKã¡nWØ!¦¿Iï;'ô³\":2ðê‹4Í~óJ„8ô£á’‘¨âG‡™\"MÊ=\rZ'ŽnÇi9F§œ“™rÆ’RÊt‚3\0Ÿ”Ò²Â2µy‚B^òèb'´ÒzÈɲ(#”d9Itµ&WØjNa¨ÚC(¥ j”Ä–?h‰ÂØj†¡™©Ö„Z\$0«¡Ò¯´J A_\n†!TOó4Œ<{aôú?˜æo ú‚-¹–ÃÏ?Hlÿ\"2ƒy™=Ú먞 R©ðœÑ„àš°–ÍŠëP&åG›ÀÁ4ƒË%()¤\r5Mª‚‰ÓLTí\0ÀºxBIç=ltvÄ2Jhvû´~/:èpý×:8\"д5¡«‰0î#Ž*ì7ªøúÜ\nàq×>è¡G\$°â…): ƒ»\"ù#ë¦KfI‡!vö+?{¡Íÿ¾Qg¥{ÏR÷Q øC䪎}Õ#¸éiIbgà„ÔXàÄÃÂù}ÅË`‹}3—%@îÁ{_kø}0ä±þÈ—Öp !°aï—<7«e•‰ÖF‡?¦¸¡î½XüDùÑ, ØÊCk‰ƒíU™ØL>£1‹§Ü܇¥ã‡Œp0Ž#Ä\$²ÅâV)pYs5A˜:°ÊUÈ(9…5×™,F+&Ÿ*{âŒ-£Íìç:÷Ší :7¦þ:Ê™yPãè—´ŠÀXÏ+¤Ž’\nÞI;üþ\\s„÷Pà÷1‘‘ìÈr©¦NJËAT'-£”òk?ƒÙY@“¡Ïö±fÇÍbñŽ’”RîJÏiömÖB~ò©”K\rK«œtª4à÷;OŠKc”9%Hì5àÍd¢3ÙÀe8j¿P÷±[sð™9,ƒÄ˜—bzK‰µÁòW&e¢d8ú§)Äùé5•pí˜hù°ëéÃà¹\"0hL5\0˜7 æÚŒÚ‡Ÿ{ïÀÝ¿¸Ýðî´<åk‚²\r+üXÅblåè/ØX ìAC¨s\na¤‘l÷Çí°}·~Ý´— drx(\rè3ÎnGrÃTÄ+àQÏÁJ¹éï†PÌ\nØ'?À€Ä´n~º:· µòâQà8€»¦†`{ÙaÜÊ æ4:„ôLê:Ò öð§›ÉÜuMó„®ßŽM¯IÁ…,†`ÍBgN€¯Âÿ\rBº•\r\0ûÂoé\"¼/‡2^D2)n¸\razR\$à7¢`ÍØ¹¨äèL³p®*Ò{`Oqt–z%%éHg§¹¦ 0¸…ÍKÃf&Ì)\\ÐQW¦öù‡†\0dp¾Ü<Q\"è„c”ÑÏ'ÿ/ÃQ7>¾+ù¿j#\0åîȺБ_ðÈôk3ëJº(óÜê%Oꌣ\0³Tm4³k:lÊž¤mD\$°¦¬×\0éê´èº'¢~à¶ Z@º€¶ŒàV⺀L\"ãHjnæ¾5€ðNlŠŽÌþþ‹šfj&›Mí•OüÓdbÓ°RÓð´OdiiÞNÐ(¿%-4+Ð:HpR¦§?BàM0š¶JF¢.ÚòÏ1Mö»f~U¬Tê°ŠÒlË 0…þËÀòUÅÂ|âÀЂ@òˆX4àbgè ]Pè?@z `…â<ðÐRîÔú`úí-¸þF˜ÎI\0Ñåþ㬦|О…ð¸ê¸Å¬TkQk°F@0Lõì˜Pƒ\rÀšˆ#ÎuØÍËïàܲpXÿ^ѱap\0\r y´Pt%\0^8ÆÒ\r¤Àµ‘Šk©£\0Ç¡1“\n¢dñ…â B± §.\níQjq\$\rM˾F£ê®oî²êî(︉ [‘ .#>¦ð¬Q„`Y`íMÑÊ,ÿJ†ñí\n<³‘uÑzÔ+I ÒÃ!)Üï+ØtñìÅŠ¼Åâºÿ¯lÆœm\"\"17\"jÀ0#N±m– ÂÙ¢æ–O pRÂK#ŒRÅç7#C´&ãÉ!2\$ÅÒ>†Ïœ”CÞ.R\"Ír‚ã\"PÈy˰7¨\rçܼ¤s)Õ%Ð#‡U\rOÄEÐ€Ôøî«Æy”xCt@п¨û*HàÇ é+@ÀàÈ0Õ\r’˜‡I‚¡ŽìL²¸²˜‚ˆ/ \\\rNR\r\0¨@+û\$Š©/*w0ËS\nt¢\"ä–\0ær‘/¬ÃPøÃðí\0ù3L¿°í%rïRÈ2R*º+÷0Ó\"¿-¾3N1âD7(tb’ê/@Ý12º†M6↬dÈ(á“c7‹*–Épãl8²„å(t·0ÚKpÚ2Ù-ÐæÇðÞFbîƒ\$¼Røï(/ó+2îã,̲ËlºËï8¬Ïø–éróK!ç©6\"»Sa0bxÓà¾\$O\0\re‰ ¨\r\"8ˆ'‘ót³Œ\r³ù+£Pá@Y1°£Yb”Râ¹°Ú\\jK)÷438 hÌ1ó7 z`pðRŽR“CÒñBöîô<»Åöõ…”F 4çDtJ-¶tVå©D6\0NLåTå”v_â0ó‹\"qJ†ëIÅ•è*Ì.ô¾«àqÂR|´¯HÀÎ t]>ˆ\0€OL(#énŽ.®2Bn9Jm‘@R s2|”Úh”ÞtãNn6B“cO+âšÒ†È e¤ÊåÐËBO=,ÀÀC:Ô6ô:¸M<àä—BV\\`¦/BŒïÚ§Û,w:‘H°Í¸û2xpšM„nbn«¢Õ„‹0†ÎÕ 1Ö,4µV§#& lËâ×ÍjKCš\n‰gÍâl\rè¶IcY@ÏY‰h–3Û\nU’]@Î ÂÔ\rLÕdñ\\Bœ ú–\"t\r¯p'\nå‡'àO\\©ÆRИֳÚ5øáS†¤b%§[•¬\$‚LÕuó`5—Y®òÕu©[ÕÌÔ\0|EMh—µË\\)É\\u¶9¶bÉH.e@\r€à!Åe'µVPä¶C'c\"úf(RŇ&#~À–\\qHû]Ã{^Âðž¿ög'OÈ<vz‰6lpÕâg'8E–{ô*/¹UÖVû‰¤þpì¶ýo,ï¸+´Ôþ)X¯ëk.ÿ0`ÿsðÓ0h“r“°o^²œð¦†°ŸB\"åjçOk-õ§%Æ0Æü“gÒxú+Ø Õ[àP7\"*hPP„\rc <ø[`æëV¢ â7å:`‹˜Uà°à(–I¢ƒs*dã¶;·> —BGsG t:À‚8d\0ž@ÔjwLvj —ow7v bŽ ¨püàæñÃu-þ\n€ , u:)âÕ\"ut…:îWB<S†b1ñò2éCײS·¸d†%)rÀ÷pÕ¿{cpqMú!þà#P‘ì·#@ E}c\"@|d%kr£\"* xñí€ w}×´uWâ¦Âl&X~S‚B'uà@6Chº..ÚØ'Ø+@ÊêÓƒƒ[T÷¬1àßæþb\"Ð\n\0ž\n`©I\0ޏn+—/Æ\"lW1uÆ´—Z¦DøCâ(è€1Äp¶wм…®Ä À^\0ZJ`î¨b·#ãŒ5€É„«ˆH“ˆ¥;ˆäâ(à°¸Ì!`ȯ#^»y…ß§ƒ…¨VGrß|Â_ïµpGåe‚QŒjd'2I-÷áÀh¤ ^Àda)×…:HØH)Ä5q·X‚¦FQ_·Û{8)~N~Ž\"`™\$1øøå ”ùàñ³‚ßB_‚üàå€ ñÏN^¥h[˜Nø(”+‚ÃM„wÏ™P€'pŒ65b?ƒÑ´â†ù“y&<åZTãq,9Op¹@2M¾‰ØzÄ•Pq4`eo¥”é¤b\"fmŽvùX@…c9a0Çw Db ø~úˆ”‰ˆW\"u@·J‡rŠi8È0øè0—ü#³}7+ž€¶ok¾@³öœ\n)lÑr³Êý%vÚ܇Ë!¬®Õân{‚XYw*,Íìb™«‚F€^\r1Œy5šðBYùÕœ#w:3&jÙB©îÀàð„fY`Þ“— ù§BI§š|l¨0òÇÓ«ãO£r[rEa0bÉ‹àÊ\n ¤ (€\r¹öGFžª@ؼÃúÙÀß® 1ÓÄГS¢Âs+£X‡´%@u¨g9zfSž†#0 ÞDBŽÍ _wÂé¯EÀÕ Bî>š{§ó÷*@Ð}kã²÷Ƚà¸à\\P’,\"ª-rCÉrVäæY×·žžZ\rœ÷É[ùS}\0YŸ%kŸcÏ–2ývs\rK¹îÈOÅT@èçs›Ê!Èü2ÑÒcwË’ívǺÔ,4&™rxrÒØ‡ì~€È#Ì\"¿€Xã\rÎ];SF²½Fî‡<ta/ƒMé&ìU>ìÿ5s ¿ÀSÀçÿ>Æ6¿ì¬U{öåËp!\"yô7M’me÷Z„D!*vÅwæWê ‰û0Êw0ÇŒ1Š|H\$&Ô‰+{ÃìGRH!rÔ-ù24‘lµ¦\rÐå\r™\0ãÞÊt<Æ…Æ·fè:“DSÀdúeQóÑ\r\\¶aò°Ëç¹EôbGŽÏà„m äg¢x-T’¶ÅGÅYKÆ¢‡tp0®?ž¦Frx ï2\\òVãÁ2;'\n€‡Á+ù‰b1ÝÎDG–5´—¯l'(ó¥/[Å,N÷Á(nG8óÀb€XQ* àÁ-R¿–¢¹¤\n4q#[Uš<eƒÔÄ`æ&&Õoë@î›uÒ%â5\0¸ `\0‚E}#lʨUäx%m‡Y&P®bÍ•«.ëÏÏ¡Û1<jnÇǃÜ\nV~o´Nïp\n€Þã\$EÀ&Ô#íÞ%G\0²þ=¼ ekÝÒ–QŠCÂ<}ö]ÔA½Ù-Yb;ฆ¥[ÝÚüþ žU¤YßcÇÏ~¿šT.\\Å<Wn\\oPÀÅüÞqƉ6P\nsàã`‘º„ü¦c:–3›([ÅÀzX¨ÙÙ{ Pì\\Èç‚«²€W®ãY¯:ß®:ýä#®¥½ž9´èYê¹[¹Yút&lç9kÞ±ŸY_Ò‰bÍ~¡¢&Õvã ý*1þÍÅ`ÕfÌ8—·S§øV^ÛÜ'åâ¾î›}±»l³Ûz8üØÿÜæ ÂZGbÜÕ_àÓ]„â¢ÄfpJŠ€Z–0Ÿ¥@Vãÿ'žõuö–yÆÌ €ÞCñR'Nö…—?Yôå–Ök €è\$cöáÎ à=ì¿ní äYJì>PíRì¢Jð•×]µß.µä짃çÙÚì»};;SÇ]ãñ@ËÇè:Ââ“÷I~Û‘•ÙùÒÁ|;¾£FyäÆƒåÀ}`ó/ßã-éí#ä1¥@yõ®7øïÜys}¿\$A¨a\\™<xGÞ•Ö¨BmamZxý3Ž,}Ï:Ð\nÝd9¿‰Î‹ö} HÞÐmµT,/KêΪ (œæìShâ…:Âø°¼Vð,Nµ\\ ïÀø\r€B%¸YŠvãi,•å€pyrrH”ó&ëdL%(ë@L¾Ð5‚’T@1`Ù ¦:”Öî\nc‘,b×O,ìâŠ\"Ô£r(áf’YÓO-°¤ykËàŽ*&ê‰,kä•yIP\n‘”£rpE%ËÌ`àó89žÌ×…¥lëUN6_‘<EªåédL êK!Ÿ—ÄZbÕkñ*‚ºóq©¢‰C\$ÅÇP®¦ÍòäªsHnIÈMÙ(ˆ¯ƒq…ÄD@\"8÷¡\nƒâr–f—èC\rP€pKƣ஛Îd–L!Nˆ¸R9¨úcl…i½!a :ÂÒ\rÄ\rPSS—ã„*„…Ì0a ¦,–бd4Q\r3v†¹ì±LˆøÇʘÁðGn\"3ñ%QdŸµð‰)¯i4Ñu•sÁLjXÁMP¬‚^«ä5¹O’¥ bépé xyèðÉTqDnBy®CàlÐq\0X“°2ŒE% dF…‚,7G‹á±& µâRi¨Ž„#瀉CV¨ÆNÀÚ\$¢LB!(<€„*1|H\"Eu<ÜãªP0T|sé¾)C(oZ[ÒµSœt»îýùú¢²m•\nnƒð â•à6<ñ›/> ›â}Sð8=ã‚ÇÀàô/™)BÑvEIÊbœvð’¬–/ˆªŠqìãÂôe¿KšÔw\0%õ!Í€pªUT@ѵ‰Ë¦_ŒË˜@òàtË8î%ñ>âÌôA´—¤äb+~+\n’…ΤÅ\"©>4Áˆc^Úô־šè§N€ZÛ^ÖØ¯N4ªCDr– DÉCÑ’øàáȳö(ÅR˜ed±‰ù¦›{áŠF•Z†+Q#´ÈW-ýí‘¥qÉÑUCÆÎ;£œ‹XðÛx£¤„\n6ÍzkàvÚý´qàx\"h’ÄšRXþ²?Àpd¢ùÅsðæ†ž?|ÜpÓ\rˆã¿~ÒÖ^ƘhÖªAñÆ<r\$ÓAfÇ5\n\"0;œƒ”‰!Ç¼Õ aÉá‰ÖzG„¬1ÞBÊ’ãÏ\"…¸†±OLkÛÓ‡‘\0ƒžFõñ¿Ž'YœŽˆ4õИ");} elseif($_GET["file"]=="jush.js"){header("Content-Type: text/javascript; charset=utf-8");echo |
|
19 | +lzw_decompress(compile_file('','minify_js'));} else{header("Content-Type: image/gif");switch($_GET["file"]){case"plus.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0!„©ËíMñÌ*)¾oú¯) q•¡eˆµî#ÄòLË\0;";break;case"cross.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0#„©Ëí#\naÖFo~yÃ._wa”á1ç±JîGÂL×6]\0\0;";break;case"up.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMQN\nï}ôža8ŠyšaŶ®\0Çò\0;";break;case"down.gif":echo"GIF89a\0\0\0001îîî\0\0€™™™\0\0\0!ù\0\0\0,\0\0\0\0\0\0 „©ËíMñÌ*)¾[Wþ\\¢ÇL&ٜƶ•\0Çò\0;";break;case"arrow.gif":echo"GIF89a\0\n\0€\0\0€€€ÿÿÿ!ù\0\0\0,\0\0\0\0\0\n\0\0‚i–±‹ž”ªÓ²Þ»\0\0;";break;}}exit;}function |
|
14 | 20 | connection(){global$f;return$f;}function |
15 | 21 | adminer(){global$b;return$b;}function |
16 | 22 | idf_unescape($gc){$uc=substr($gc,-1);return |
@@ -20,7 +26,10 @@ discard block |
||
20 | 26 | number($V){return |
21 | 27 | preg_replace('~[^0-9]+~','',$V);}function |
22 | 28 | remove_slashes($pd,$Hb=false){if(get_magic_quotes_gpc()){while(list($x,$V)=each($pd)){foreach($V |
23 | -as$w=>$U){unset($pd[$x][$w]);if(is_array($U)){$pd[$x][stripslashes($w)]=$U;$pd[]=&$pd[$x][stripslashes($w)];}else$pd[$x][stripslashes($w)]=($Hb?$U:stripslashes($U));}}}}function |
|
29 | +as$w=>$U){unset($pd[$x][$w]);if(is_array($U)){$pd[$x][stripslashes($w)]=$U;$pd[]=&$pd[$x][stripslashes($w)];} else { |
|
30 | + $pd[$x][stripslashes($w)]=($Hb?$U:stripslashes($U)); |
|
31 | +} |
|
32 | +}}}}function |
|
24 | 33 | bracket_escape($gc,$ua=false){static$re=array(':'=>':1',']'=>':2','['=>':3');return |
25 | 34 | strtr($gc,($ua?array_flip($re):$re));}function |
26 | 35 | charset($f){return(version_compare($f->server_info,"5.5.3")>=0?"utf8mb4":"utf8");}function |
@@ -32,53 +41,137 @@ discard block |
||
32 | 41 | checkbox($D,$W,$Fa,$sc="",$Tc="",$Ia=""){$K="<input type='checkbox' name='$D' value='".h($W)."'".($Fa?" checked":"").($Tc?' onclick="'.h($Tc).'"':'').">";return($sc!=""||$Ia?"<label".($Ia?" class='$Ia'":"").">$K".h($sc)."</label>":$K);}function |
33 | 42 | optionlist($Xc,$Id=null,$Fe=false){$K="";foreach($Xc |
34 | 43 | as$w=>$U){$Yc=array($w=>$U);if(is_array($U)){$K.='<optgroup label="'.h($w).'">';$Yc=$U;}foreach($Yc |
35 | -as$x=>$V)$K.='<option'.($Fe||is_string($x)?' value="'.h($x).'"':'').(($Fe||is_string($x)?(string)$x:$V)===$Id?' selected':'').'>'.h($V);if(is_array($U))$K.='</optgroup>';}return$K;}function |
|
36 | -html_select($D,$Xc,$W="",$Sc=true){if($Sc)return"<select name='".h($D)."'".(is_string($Sc)?' onchange="'.h($Sc).'"':"").">".optionlist($Xc,$W)."</select>";$K="";foreach($Xc |
|
37 | -as$x=>$V)$K.="<label><input type='radio' name='".h($D)."' value='".h($x)."'".($x==$W?" checked":"").">".h($V)."</label>";return$K;}function |
|
44 | +as$x=>$V) { |
|
45 | + $K.='<option'.($Fe||is_string($x)?' value="'.h($x).'"':'').(($Fe||is_string($x)?(string)$x:$V)===$Id?' selected':'').'>'.h($V); |
|
46 | +} |
|
47 | +if(is_array($U)) { |
|
48 | + $K.='</optgroup>'; |
|
49 | +} |
|
50 | +}return$K;}function |
|
51 | +html_select($D,$Xc,$W="",$Sc=true){if($Sc) { |
|
52 | + return"<select name='".h($D)."'".(is_string($Sc)?' onchange="'.h($Sc).'"':"").">".optionlist($Xc,$W)."</select>"; |
|
53 | +} |
|
54 | +$K="";foreach($Xc |
|
55 | +as$x=>$V) { |
|
56 | + $K.="<label><input type='radio' name='".h($D)."' value='".h($x)."'".($x==$W?" checked":"").">".h($V)."</label>"; |
|
57 | +} |
|
58 | +return$K;}function |
|
38 | 59 | select_input($c,$Xc,$W="",$hd=""){return($Xc?"<select$c><option value=''>$hd".optionlist($Xc,$W,true)."</select>":"<input$c size='10' value='".h($W)."' placeholder='$hd'>");}function |
39 | 60 | confirm(){return" onclick=\"return confirm('".'Are you sure?'."');\"";}function |
40 | 61 | print_fieldset($r,$wc,$Je=false,$Tc=""){echo"<fieldset><legend><a href='#fieldset-$r' onclick=\"".h($Tc)."return !toggle('fieldset-$r');\">$wc</a></legend><div id='fieldset-$r'".($Je?"":" class='hidden'").">\n";}function |
41 | 62 | bold($Aa,$Ia=""){return($Aa?" class='active $Ia'":($Ia?" class='$Ia'":""));}function |
42 | -odd($K=' class="odd"'){static$q=0;if(!$K)$q=-1;return($q++%2?$K:'');}function |
|
63 | +odd($K=' class="odd"'){static$q=0;if(!$K) { |
|
64 | + $q=-1; |
|
65 | +} |
|
66 | +return($q++%2?$K:'');}function |
|
43 | 67 | js_escape($Q){return |
44 | 68 | addcslashes($Q,"\r\n'\\/");}function |
45 | -json_row($x,$V=null){static$Ib=true;if($Ib)echo"{";if($x!=""){echo($Ib?"":",")."\n\t\"".addcslashes($x,"\r\n\"\\/").'": '.($V!==null?'"'.addcslashes($V,"\r\n\"\\/").'"':'undefined');$Ib=false;}else{echo"\n}\n";$Ib=true;}}function |
|
69 | +json_row($x,$V=null){static$Ib=true;if($Ib) { |
|
70 | + echo"{"; |
|
71 | +} |
|
72 | +if($x!=""){echo($Ib?"":",")."\n\t\"".addcslashes($x,"\r\n\"\\/").'": '.($V!==null?'"'.addcslashes($V,"\r\n\"\\/").'"':'undefined');$Ib=false;} else{echo"\n}\n";$Ib=true;}}function |
|
46 | 73 | ini_bool($kc){$V=ini_get($kc);return(preg_match('~^(on|true|yes)$~i',$V)||(int)$V);}function |
47 | -sid(){static$K;if($K===null)$K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies")));return$K;}function |
|
74 | +sid(){static$K;if($K===null) { |
|
75 | + $K=(SID&&!($_COOKIE&&ini_bool("session.use_cookies"))); |
|
76 | +} |
|
77 | +return$K;}function |
|
48 | 78 | set_password($X,$O,$T,$G){$_SESSION["pwds"][$X][$O][$T]=($_COOKIE["adminer_key"]&&is_string($G)?array(encrypt_string($G,$_COOKIE["adminer_key"])):$G);}function |
49 | -get_password(){$K=get_session("pwds");if(is_array($K))$K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false);return$K;}function |
|
79 | +get_password(){$K=get_session("pwds");if(is_array($K)) { |
|
80 | + $K=($_COOKIE["adminer_key"]?decrypt_string($K[0],$_COOKIE["adminer_key"]):false); |
|
81 | +} |
|
82 | +return$K;}function |
|
50 | 83 | q($Q){global$f;return$f->quote($Q);}function |
51 | -get_vals($I,$d=0){global$f;$K=array();$J=$f->query($I);if(is_object($J)){while($L=$J->fetch_row())$K[]=$L[$d];}return$K;}function |
|
52 | -get_key_vals($I,$g=null,$ke=0){global$f;if(!is_object($g))$g=$f;$K=array();$g->timeout=$ke;$J=$g->query($I);$g->timeout=0;if(is_object($J)){while($L=$J->fetch_row())$K[$L[0]]=$L[1];}return$K;}function |
|
53 | -get_rows($I,$g=null,$k="<p class='error'>"){global$f;$Sa=(is_object($g)?$g:$f);$K=array();$J=$Sa->query($I);if(is_object($J)){while($L=$J->fetch_assoc())$K[]=$L;}elseif(!$J&&!is_object($g)&&$k&&defined("PAGE_HEADER"))echo$k.error()."\n";return$K;}function |
|
84 | +get_vals($I,$d=0){global$f;$K=array();$J=$f->query($I);if(is_object($J)){while($L=$J->fetch_row()) { |
|
85 | + $K[]=$L[$d]; |
|
86 | +} |
|
87 | +}return$K;}function |
|
88 | +get_key_vals($I,$g=null,$ke=0){global$f;if(!is_object($g)) { |
|
89 | + $g=$f; |
|
90 | +} |
|
91 | +$K=array();$g->timeout=$ke;$J=$g->query($I);$g->timeout=0;if(is_object($J)){while($L=$J->fetch_row()) { |
|
92 | + $K[$L[0]]=$L[1]; |
|
93 | +} |
|
94 | +}return$K;}function |
|
95 | +get_rows($I,$g=null,$k="<p class='error'>"){global$f;$Sa=(is_object($g)?$g:$f);$K=array();$J=$Sa->query($I);if(is_object($J)){while($L=$J->fetch_assoc()) { |
|
96 | + $K[]=$L; |
|
97 | +} |
|
98 | +} elseif(!$J&&!is_object($g)&&$k&&defined("PAGE_HEADER")) { |
|
99 | + echo$k.error()."\n"; |
|
100 | +} |
|
101 | +return$K;}function |
|
54 | 102 | unique_array($L,$t){foreach($t |
55 | -as$s){if(preg_match("~PRIMARY|UNIQUE~",$s["type"])){$K=array();foreach($s["columns"]as$x){if(!isset($L[$x]))continue |
|
56 | -2;$K[$x]=$L[$x];}return$K;}}}function |
|
57 | -escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$A))return$A[1].idf_escape(idf_unescape($A[2])).$A[3];return |
|
103 | +as$s){if(preg_match("~PRIMARY|UNIQUE~",$s["type"])){$K=array();foreach($s["columns"]as$x){if(!isset($L[$x])) { |
|
104 | + continue |
|
105 | +2; |
|
106 | +} |
|
107 | +$K[$x]=$L[$x];}return$K;}}}function |
|
108 | +escape_key($x){if(preg_match('(^([\w(]+)('.str_replace("_",".*",preg_quote(idf_escape("_"))).')([ \w)]+)$)',$x,$A)) { |
|
109 | + return$A[1].idf_escape(idf_unescape($A[2])).$A[3]; |
|
110 | +} |
|
111 | +return |
|
58 | 112 | idf_escape($x);}function |
59 | -where($Y,$m=array()){global$f,$v;$K=array();foreach((array)$Y["where"]as$x=>$V){$x=bracket_escape($x,1);$d=escape_key($x);$K[]=$d.(($v=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$V))||$v=="mssql"?" LIKE ".q(addcslashes($V,"%_\\")):" = ".unconvert_field($m[$x],q($V)));if($v=="sql"&&preg_match('~char|text~',$m[$x]["type"])&&preg_match("~[^ -@]~",$V))$K[]="$d = ".q($V)." COLLATE ".charset($f)."_bin";}foreach((array)$Y["null"]as$x)$K[]=escape_key($x)." IS NULL";return |
|
113 | +where($Y,$m=array()){global$f,$v;$K=array();foreach((array)$Y["where"]as$x=>$V){$x=bracket_escape($x,1);$d=escape_key($x);$K[]=$d.(($v=="sql"&&preg_match('~^[0-9]*\\.[0-9]*$~',$V))||$v=="mssql"?" LIKE ".q(addcslashes($V,"%_\\")):" = ".unconvert_field($m[$x],q($V)));if($v=="sql"&&preg_match('~char|text~',$m[$x]["type"])&&preg_match("~[^ -@]~",$V)) { |
|
114 | + $K[]="$d = ".q($V)." COLLATE ".charset($f)."_bin"; |
|
115 | +} |
|
116 | +}foreach((array)$Y["null"]as$x) { |
|
117 | + $K[]=escape_key($x)." IS NULL"; |
|
118 | +} |
|
119 | +return |
|
60 | 120 | implode(" AND ",$K);}function |
61 | 121 | where_check($V,$m=array()){parse_str($V,$Ea);remove_slashes(array(&$Ea));return |
62 | 122 | where($Ea,$m);}function |
63 | 123 | where_link($q,$d,$W,$Vc="="){return"&where%5B$q%5D%5Bcol%5D=".urlencode($d)."&where%5B$q%5D%5Bop%5D=".urlencode(($W!==null?$Vc:"IS NULL"))."&where%5B$q%5D%5Bval%5D=".urlencode($W);}function |
64 | 124 | convert_fields($e,$m,$N=array()){$K="";foreach($e |
65 | -as$x=>$V){if($N&&!in_array(idf_escape($x),$N))continue;$oa=convert_field($m[$x]);if($oa)$K.=", $oa AS ".idf_escape($x);}return$K;}function |
|
66 | -cookie($D,$W,$zc=2592000){global$aa;$ed=array($D,(preg_match("~\n~",$W)?"":$W),($zc?time()+$zc:0),preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0)$ed[]=true;return |
|
125 | +as$x=>$V){if($N&&!in_array(idf_escape($x),$N)) { |
|
126 | + continue; |
|
127 | +} |
|
128 | +$oa=convert_field($m[$x]);if($oa) { |
|
129 | + $K.=", $oa AS ".idf_escape($x); |
|
130 | +} |
|
131 | +}return$K;}function |
|
132 | +cookie($D,$W,$zc=2592000){global$aa;$ed=array($D,(preg_match("~\n~",$W)?"":$W),($zc?time()+$zc:0),preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0) { |
|
133 | + $ed[]=true; |
|
134 | +} |
|
135 | +return |
|
67 | 136 | call_user_func_array('setcookie',$ed);}function |
68 | -restart_session(){if(!ini_bool("session.use_cookies"))session_start();}function |
|
69 | -stop_session(){if(!ini_bool("session.use_cookies"))session_write_close();}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function |
|
137 | +restart_session(){if(!ini_bool("session.use_cookies")) { |
|
138 | + session_start(); |
|
139 | +} |
|
140 | +}function |
|
141 | +stop_session(){if(!ini_bool("session.use_cookies")) { |
|
142 | + session_write_close(); |
|
143 | +} |
|
144 | +}function&get_session($x){return$_SESSION[$x][DRIVER][SERVER][$_GET["username"]];}function |
|
70 | 145 | set_session($x,$V){$_SESSION[$x][DRIVER][SERVER][$_GET["username"]]=$V;}function |
71 | 146 | auth_url($X,$O,$T,$h=null){global$jb;preg_match('~([^?]*)\\??(.*)~',remove_from_uri(implode("|",array_keys($jb))."|username|".($h!==null?"db|":"").session_name()),$A);return"$A[1]?".(sid()?SID."&":"").($X!="server"||$O!=""?urlencode($X)."=".urlencode($O)."&":"")."username=".urlencode($T).($h!=""?"&db=".urlencode($h):"").($A[2]?"&$A[2]":"");}function |
72 | 147 | is_ajax(){return($_SERVER["HTTP_X_REQUESTED_WITH"]=="XMLHttpRequest");}function |
73 | -redirect($_,$B=null){if($B!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($_!==null?$_:$_SERVER["REQUEST_URI"]))][]=$B;}if($_!==null){if($_=="")$_=".";header("Location: $_");exit;}}function |
|
74 | -query_redirect($I,$_,$B,$xd=true,$zb=true,$Bb=false,$je=""){global$f,$k,$b;if($zb){$Td=microtime(true);$Bb=!$f->query($I);$je=format_time($Td);}$Sd="";if($I)$Sd=$b->messageQuery($I,$je);if($Bb){$k=error().$Sd;return |
|
75 | -false;}if($xd)redirect($_,$B.$Sd);return |
|
148 | +redirect($_,$B=null){if($B!==null){restart_session();$_SESSION["messages"][preg_replace('~^[^?]*~','',($_!==null?$_:$_SERVER["REQUEST_URI"]))][]=$B;}if($_!==null){if($_=="") { |
|
149 | + $_="."; |
|
150 | +} |
|
151 | +header("Location: $_");exit;}}function |
|
152 | +query_redirect($I,$_,$B,$xd=true,$zb=true,$Bb=false,$je=""){global$f,$k,$b;if($zb){$Td=microtime(true);$Bb=!$f->query($I);$je=format_time($Td);}$Sd="";if($I) { |
|
153 | + $Sd=$b->messageQuery($I,$je); |
|
154 | +} |
|
155 | +if($Bb){$k=error().$Sd;return |
|
156 | +false;}if($xd) { |
|
157 | + redirect($_,$B.$Sd); |
|
158 | +} |
|
159 | +return |
|
76 | 160 | true;}function |
77 | -queries($I){global$f;static$sd=array();static$Td;if(!$Td)$Td=microtime(true);if($I===null)return |
|
78 | -array(implode("\n",$sd),format_time($Td));$sd[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$f->query($I);}function |
|
161 | +queries($I){global$f;static$sd=array();static$Td;if(!$Td) { |
|
162 | + $Td=microtime(true); |
|
163 | +} |
|
164 | +if($I===null) { |
|
165 | + return |
|
166 | +array(implode("\n",$sd),format_time($Td)); |
|
167 | +} |
|
168 | +$sd[]=(preg_match('~;$~',$I)?"DELIMITER ;;\n$I;\nDELIMITER ":$I).";";return$f->query($I);}function |
|
79 | 169 | apply_queries($I,$ee,$wb='table'){foreach($ee |
80 | -as$R){if(!queries("$I ".$wb($R)))return |
|
81 | -false;}return |
|
170 | +as$R){if(!queries("$I ".$wb($R))) { |
|
171 | + return |
|
172 | +false; |
|
173 | +} |
|
174 | +}return |
|
82 | 175 | true;}function |
83 | 176 | queries_redirect($_,$B,$xd){list($sd,$je)=queries(null);return |
84 | 177 | query_redirect($sd,$_,$B,$xd,false,!$xd,$je);}function |
@@ -87,50 +180,159 @@ discard block |
||
87 | 180 | remove_from_uri($dd=""){return |
88 | 181 | substr(preg_replace("~(?<=[?&])($dd".(SID?"":"|".session_name()).")=[^&]*&~",'',"$_SERVER[REQUEST_URI]&"),0,-1);}function |
89 | 182 | pagination($F,$Ya){return" ".($F==$Ya?$F+1:'<a href="'.h(remove_from_uri("page").($F?"&page=$F".($_GET["next"]?"&next=".urlencode($_GET["next"]):""):"")).'">'.($F+1)."</a>");}function |
90 | -get_file($x,$bb=false){$Eb=$_FILES[$x];if(!$Eb)return |
|
91 | -null;foreach($Eb |
|
92 | -as$x=>$V)$Eb[$x]=(array)$V;$K='';foreach($Eb["error"]as$x=>$k){if($k)return$k;$D=$Eb["name"][$x];$pe=$Eb["tmp_name"][$x];$Ta=file_get_contents($bb&&preg_match('~\\.gz$~',$D)?"compress.zlib://$pe":$pe);if($bb){$Td=substr($Ta,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Td,$yd))$Ta=iconv("utf-16","utf-8",$Ta);elseif($Td=="\xEF\xBB\xBF")$Ta=substr($Ta,3);$K.=$Ta."\n\n";}else$K.=$Ta;}return$K;}function |
|
183 | +get_file($x,$bb=false){$Eb=$_FILES[$x];if(!$Eb) { |
|
184 | + return |
|
185 | +null; |
|
186 | +} |
|
187 | +foreach($Eb |
|
188 | +as$x=>$V) { |
|
189 | + $Eb[$x]=(array)$V; |
|
190 | +} |
|
191 | +$K='';foreach($Eb["error"]as$x=>$k){if($k) { |
|
192 | + return$k; |
|
193 | +} |
|
194 | +$D=$Eb["name"][$x];$pe=$Eb["tmp_name"][$x];$Ta=file_get_contents($bb&&preg_match('~\\.gz$~',$D)?"compress.zlib://$pe":$pe);if($bb){$Td=substr($Ta,0,3);if(function_exists("iconv")&&preg_match("~^\xFE\xFF|^\xFF\xFE~",$Td,$yd)) { |
|
195 | + $Ta=iconv("utf-16","utf-8",$Ta); |
|
196 | +} elseif($Td=="\xEF\xBB\xBF") { |
|
197 | + $Ta=substr($Ta,3); |
|
198 | +} |
|
199 | +$K.=$Ta."\n\n";} else { |
|
200 | + $K.=$Ta; |
|
201 | +} |
|
202 | +}return$K;}function |
|
93 | 203 | upload_error($k){$Ec=($k==UPLOAD_ERR_INI_SIZE?ini_get("upload_max_filesize"):0);return($k?'Unable to upload a file.'.($Ec?" ".sprintf('Maximum allowed file size is %sB.',$Ec):""):'File does not exist.');}function |
94 | 204 | repeat_pattern($H,$xc){return |
95 | 205 | str_repeat("$H{0,65535}",$xc/65535)."$H{0,".($xc%65535)."}";}function |
96 | 206 | is_utf8($V){return(preg_match('~~u',$V)&&!preg_match('~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~',$V));}function |
97 | -shorten_utf8($Q,$xc=80,$Zd=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$xc).")($)?)u",$Q,$A))preg_match("(^(".repeat_pattern("[\t\r\n -~]",$xc).")($)?)",$Q,$A);return |
|
207 | +shorten_utf8($Q,$xc=80,$Zd=""){if(!preg_match("(^(".repeat_pattern("[\t\r\n -\x{FFFF}]",$xc).")($)?)u",$Q,$A)) { |
|
208 | + preg_match("(^(".repeat_pattern("[\t\r\n -~]",$xc).")($)?)",$Q,$A); |
|
209 | +} |
|
210 | +return |
|
98 | 211 | h($A[1]).$Zd.(isset($A[2])?"":"<i>...</i>");}function |
99 | 212 | format_number($V){return |
100 | 213 | strtr(number_format($V,0,".",','),preg_split('~~u','0123456789',-1,PREG_SPLIT_NO_EMPTY));}function |
101 | 214 | friendly_url($V){return |
102 | 215 | preg_replace('~[^a-z0-9_]~i','-',$V);}function |
103 | 216 | hidden_fields($pd,$ic=array()){while(list($x,$V)=each($pd)){if(!in_array($x,$ic)){if(is_array($V)){foreach($V |
104 | -as$w=>$U)$pd[$x."[$w]"]=$U;}else |
|
105 | -echo'<input type="hidden" name="'.h($x).'" value="'.h($V).'">';}}}function |
|
217 | +as$w=>$U) { |
|
218 | + $pd[$x."[$w]"]=$U; |
|
219 | +} |
|
220 | +} else { |
|
221 | + echo'<input type="hidden" name="'.h($x).'" value="'.h($V).'">'; |
|
222 | +} |
|
223 | +}}}function |
|
106 | 224 | hidden_fields_get(){echo(sid()?'<input type="hidden" name="'.session_name().'" value="'.h(session_id()).'">':''),(SERVER!==null?'<input type="hidden" name="'.DRIVER.'" value="'.h(SERVER).'">':""),'<input type="hidden" name="username" value="'.h($_GET["username"]).'">';}function |
107 | 225 | table_status1($R,$Cb=false){$K=table_status($R,$Cb);return($K?$K:array("Name"=>$R));}function |
108 | -column_foreign_keys($R){global$b;$K=array();foreach($b->foreignKeys($R)as$Nb){foreach($Nb["source"]as$V)$K[$V][]=$Nb;}return$K;}function |
|
226 | +column_foreign_keys($R){global$b;$K=array();foreach($b->foreignKeys($R)as$Nb){foreach($Nb["source"]as$V) { |
|
227 | + $K[$V][]=$Nb; |
|
228 | +} |
|
229 | +}return$K;}function |
|
109 | 230 | enum_input($ue,$c,$l,$W,$sb=null){global$b;preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$Bc);$K=($sb!==null?"<label><input type='$ue'$c value='$sb'".((is_array($W)?in_array($sb,$W):$W===0)?" checked":"")."><i>".'empty'."</i></label>":"");foreach($Bc[1]as$q=>$V){$V=stripcslashes(str_replace("''","'",$V));$Fa=(is_int($W)?$W==$q+1:(is_array($W)?in_array($q+1,$W):$W===$V));$K.=" <label><input type='$ue'$c value='".($q+1)."'".($Fa?' checked':'').'>'.h($b->editVal($V,$l)).'</label>';}return$K;}function |
110 | -input($l,$W,$o){global$f,$we,$b,$v;$D=h(bracket_escape($l["field"]));echo"<td class='function'>";if(is_array($W)&&!$o){$na=array($W);if(version_compare(PHP_VERSION,5.4)>=0)$na[]=JSON_PRETTY_PRINT;$W=call_user_func_array('json_encode',$na);$o="json";}$Ad=($v=="mssql"&&$l["auto_increment"]);if($Ad&&!$_POST["save"])$o=null;$Tb=(isset($_GET["select"])||$Ad?array("orig"=>'original'):array())+$b->editFunctions($l);$c=" name='fields[$D]'";if($l["type"]=="enum")echo |
|
111 | -nbsp($Tb[""])."<td>".$b->editInput($_GET["edit"],$l,$c,$W);else{$Ib=0;foreach($Tb |
|
112 | -as$x=>$V){if($x===""||!$V)break;$Ib++;}$Sc=($Ib?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($Ib > f.selectedIndex) f.selectedIndex = $Ib;\" onkeyup='keyupChange.call(this);'":"");$c.=$Sc;$Yb=(in_array($o,$Tb)||isset($Tb[$o]));echo(count($Tb)>1?"<select name='function[$D]' onchange='functionChange(this);'".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".optionlist($Tb,$o===null||$Yb?$o:"")."</select>":nbsp(reset($Tb))).'<td>';$mc=$b->editInput($_GET["edit"],$l,$c,$W);if($mc!="")echo$mc;elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$Bc);foreach($Bc[1]as$q=>$V){$V=stripcslashes(str_replace("''","'",$V));$Fa=(is_int($W)?($W>>$q)&1:in_array($V,explode(",",$W),true));echo" <label><input type='checkbox' name='fields[$D][$q]' value='".(1<<$q)."'".($Fa?' checked':'')."$Sc>".h($b->editVal($V,$l)).'</label>';}}elseif(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads"))echo"<input type='file' name='fields-$D'$Sc>";elseif(($ge=preg_match('~text|lob~',$l["type"]))||preg_match("~\n~",$W)){if($ge&&$v!="sqlite")$c.=" cols='50' rows='12'";else{$M=min(12,substr_count($W,"\n")+1);$c.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$c>".h($W).'</textarea>';}elseif($o=="json")echo"<textarea$c cols='50' rows='12' class='jush-js'>".h($W).'</textarea>';else{$Gc=(!preg_match('~int~',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$A)?((preg_match("~binary~",$l["type"])?2:1)*$A[1]+($A[3]?1:0)+($A[2]&&!$l["unsigned"]?1:0)):($we[$l["type"]]?$we[$l["type"]]+($l["unsigned"]?0:1):0));if($v=='sql'&&$f->server_info>=5.6&&preg_match('~time~',$l["type"]))$Gc+=7;echo"<input".((!$Yb||$o==="")&&preg_match('~(?<!o)int~',$l["type"])?" type='number'":"")." value='".h($W)."'".($Gc?" maxlength='$Gc'":"").(preg_match('~char|binary~',$l["type"])&&$Gc>20?" size='40'":"")."$c>";}}}function |
|
113 | -process_input($l){global$b;$gc=bracket_escape($l["field"]);$o=$_POST["function"][$gc];$W=$_POST["fields"][$gc];if($l["type"]=="enum"){if($W==-1)return |
|
114 | -false;if($W=="")return"NULL";return+$W;}if($l["auto_increment"]&&$W=="")return |
|
115 | -null;if($o=="orig")return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false);if($o=="NULL")return"NULL";if($l["type"]=="set")return |
|
116 | -array_sum((array)$W);if($o=="json"){$o="";$W=json_decode($W,true);if(!is_array($W))return |
|
117 | -false;return$W;}if(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")){$Eb=get_file("fields-$gc");if(!is_string($Eb))return |
|
118 | -false;return |
|
231 | +input($l,$W,$o){global$f,$we,$b,$v;$D=h(bracket_escape($l["field"]));echo"<td class='function'>";if(is_array($W)&&!$o){$na=array($W);if(version_compare(PHP_VERSION,5.4)>=0) { |
|
232 | + $na[]=JSON_PRETTY_PRINT; |
|
233 | +} |
|
234 | +$W=call_user_func_array('json_encode',$na);$o="json";}$Ad=($v=="mssql"&&$l["auto_increment"]);if($Ad&&!$_POST["save"]) { |
|
235 | + $o=null; |
|
236 | +} |
|
237 | +$Tb=(isset($_GET["select"])||$Ad?array("orig"=>'original'):array())+$b->editFunctions($l);$c=" name='fields[$D]'";if($l["type"]=="enum") { |
|
238 | + echo |
|
239 | +nbsp($Tb[""])."<td>".$b->editInput($_GET["edit"],$l,$c,$W); |
|
240 | +} else{$Ib=0;foreach($Tb |
|
241 | +as$x=>$V){if($x===""||!$V) { |
|
242 | + break; |
|
243 | +} |
|
244 | +$Ib++;}$Sc=($Ib?" onchange=\"var f = this.form['function[".h(js_escape(bracket_escape($l["field"])))."]']; if ($Ib > f.selectedIndex) f.selectedIndex = $Ib;\" onkeyup='keyupChange.call(this);'":"");$c.=$Sc;$Yb=(in_array($o,$Tb)||isset($Tb[$o]));echo(count($Tb)>1?"<select name='function[$D]' onchange='functionChange(this);'".on_help("getTarget(event).value.replace(/^SQL\$/, '')",1).">".optionlist($Tb,$o===null||$Yb?$o:"")."</select>":nbsp(reset($Tb))).'<td>';$mc=$b->editInput($_GET["edit"],$l,$c,$W);if($mc!="") { |
|
245 | + echo$mc; |
|
246 | +} elseif($l["type"]=="set"){preg_match_all("~'((?:[^']|'')*)'~",$l["length"],$Bc);foreach($Bc[1]as$q=>$V){$V=stripcslashes(str_replace("''","'",$V));$Fa=(is_int($W)?($W>>$q)&1:in_array($V,explode(",",$W),true));echo" <label><input type='checkbox' name='fields[$D][$q]' value='".(1<<$q)."'".($Fa?' checked':'')."$Sc>".h($b->editVal($V,$l)).'</label>';}} elseif(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")) { |
|
247 | + echo"<input type='file' name='fields-$D'$Sc>"; |
|
248 | +} elseif(($ge=preg_match('~text|lob~',$l["type"]))||preg_match("~\n~",$W)){if($ge&&$v!="sqlite") { |
|
249 | + $c.=" cols='50' rows='12'"; |
|
250 | +} else{$M=min(12,substr_count($W,"\n")+1);$c.=" cols='30' rows='$M'".($M==1?" style='height: 1.2em;'":"");}echo"<textarea$c>".h($W).'</textarea>';} elseif($o=="json") { |
|
251 | + echo"<textarea$c cols='50' rows='12' class='jush-js'>".h($W).'</textarea>'; |
|
252 | +} else{$Gc=(!preg_match('~int~',$l["type"])&&preg_match('~^(\\d+)(,(\\d+))?$~',$l["length"],$A)?((preg_match("~binary~",$l["type"])?2:1)*$A[1]+($A[3]?1:0)+($A[2]&&!$l["unsigned"]?1:0)):($we[$l["type"]]?$we[$l["type"]]+($l["unsigned"]?0:1):0));if($v=='sql'&&$f->server_info>=5.6&&preg_match('~time~',$l["type"])) { |
|
253 | + $Gc+=7; |
|
254 | +} |
|
255 | +echo"<input".((!$Yb||$o==="")&&preg_match('~(?<!o)int~',$l["type"])?" type='number'":"")." value='".h($W)."'".($Gc?" maxlength='$Gc'":"").(preg_match('~char|binary~',$l["type"])&&$Gc>20?" size='40'":"")."$c>";}}}function |
|
256 | +process_input($l){global$b;$gc=bracket_escape($l["field"]);$o=$_POST["function"][$gc];$W=$_POST["fields"][$gc];if($l["type"]=="enum"){if($W==-1) { |
|
257 | + return |
|
258 | +false; |
|
259 | +} |
|
260 | +if($W=="") { |
|
261 | + return"NULL"; |
|
262 | +} |
|
263 | +return+$W;}if($l["auto_increment"]&&$W=="") { |
|
264 | + return |
|
265 | +null; |
|
266 | +} |
|
267 | +if($o=="orig") { |
|
268 | + return($l["on_update"]=="CURRENT_TIMESTAMP"?idf_escape($l["field"]):false); |
|
269 | +} |
|
270 | +if($o=="NULL") { |
|
271 | + return"NULL"; |
|
272 | +} |
|
273 | +if($l["type"]=="set") { |
|
274 | + return |
|
275 | +array_sum((array)$W); |
|
276 | +} |
|
277 | +if($o=="json"){$o="";$W=json_decode($W,true);if(!is_array($W)) { |
|
278 | + return |
|
279 | +false; |
|
280 | +} |
|
281 | +return$W;}if(preg_match('~blob|bytea|raw|file~',$l["type"])&&ini_bool("file_uploads")){$Eb=get_file("fields-$gc");if(!is_string($Eb)) { |
|
282 | + return |
|
283 | +false; |
|
284 | +} |
|
285 | +return |
|
119 | 286 | q($Eb);}return$b->processInput($l,$W,$o);}function |
120 | 287 | fields_from_edit(){global$i;$K=array();foreach((array)$_POST["field_keys"]as$x=>$V){if($V!=""){$V=bracket_escape($V);$_POST["function"][$V]=$_POST["field_funs"][$x];$_POST["fields"][$V]=$_POST["field_vals"][$x];}}foreach((array)$_POST["fields"]as$x=>$V){$D=bracket_escape($x,1);$K[$D]=array("field"=>$D,"privileges"=>array("insert"=>1,"update"=>1),"null"=>1,"auto_increment"=>($x==$i->primary),);}return$K;}function |
121 | 288 | search_tables(){global$b,$f;$_GET["where"][0]["op"]="LIKE %%";$_GET["where"][0]["val"]=$_POST["query"];$Qb=false;foreach(table_status('',true)as$R=>$S){$D=$b->tableName($S);if(isset($S["Engine"])&&$D!=""&&(!$_POST["tables"]||in_array($R,$_POST["tables"]))){$J=$f->query("SELECT".limit("1 FROM ".table($R)," WHERE ".implode(" AND ",$b->selectSearchProcess(fields($R),array())),1));if(!$J||$J->fetch_row()){if(!$Qb){echo"<ul>\n";$Qb=true;}echo"<li>".($J?"<a href='".h(ME."select=".urlencode($R)."&where[0][op]=".urlencode($_GET["where"][0]["op"])."&where[0][val]=".urlencode($_GET["where"][0]["val"]))."'>$D</a>\n":"$D: <span class='error'>".error()."</span>\n");}}}echo($Qb?"</ul>":"<p class='message'>".'No tables.')."\n";}function |
122 | -dump_headers($fc,$Jc=false){global$b;$K=$b->dumpHeaders($fc,$Jc);$bd=$_POST["output"];if($bd!="text")header("Content-Disposition: attachment; filename=".$b->dumpFilename($fc).".$K".($bd!="file"&&!preg_match('~[^0-9a-z]~',$bd)?".$bd":""));session_write_close();ob_flush();flush();return$K;}function |
|
289 | +dump_headers($fc,$Jc=false){global$b;$K=$b->dumpHeaders($fc,$Jc);$bd=$_POST["output"];if($bd!="text") { |
|
290 | + header("Content-Disposition: attachment; filename=".$b->dumpFilename($fc).".$K".($bd!="file"&&!preg_match('~[^0-9a-z]~',$bd)?".$bd":"")); |
|
291 | +} |
|
292 | +session_write_close();ob_flush();flush();return$K;}function |
|
123 | 293 | dump_csv($L){foreach($L |
124 | -as$x=>$V){if(preg_match("~[\"\n,;\t]~",$V)||$V==="")$L[$x]='"'.str_replace('"','""',$V).'"';}echo |
|
294 | +as$x=>$V){if(preg_match("~[\"\n,;\t]~",$V)||$V==="") { |
|
295 | + $L[$x]='"'.str_replace('"','""',$V).'"'; |
|
296 | +} |
|
297 | +}echo |
|
125 | 298 | implode(($_POST["format"]=="csv"?",":($_POST["format"]=="tsv"?"\t":";")),$L)."\r\n";}function |
126 | 299 | apply_sql_function($o,$d){return($o?($o=="unixepoch"?"DATETIME($d, '$o')":($o=="count distinct"?"COUNT(DISTINCT ":strtoupper("$o("))."$d)"):$d);}function |
127 | -get_temp_dir(){$K=ini_get("upload_tmp_dir");if(!$K){if(function_exists('sys_get_temp_dir'))$K=sys_get_temp_dir();else{$Fb=@tempnam("","");if(!$Fb)return |
|
128 | -false;$K=dirname($Fb);unlink($Fb);}}return$K;}function |
|
129 | -password_file($Va){$Fb=get_temp_dir()."/adminer.key";$K=@file_get_contents($Fb);if($K||!$Va)return$K;$Rb=@fopen($Fb,"w");if($Rb){chmod($Fb,0660);$K=rand_string();fwrite($Rb,$K);fclose($Rb);}return$K;}function |
|
300 | +get_temp_dir(){$K=ini_get("upload_tmp_dir");if(!$K){if(function_exists('sys_get_temp_dir')) { |
|
301 | + $K=sys_get_temp_dir(); |
|
302 | +} else{$Fb=@tempnam("","");if(!$Fb) { |
|
303 | + return |
|
304 | +false; |
|
305 | +} |
|
306 | +$K=dirname($Fb);unlink($Fb);}}return$K;}function |
|
307 | +password_file($Va){$Fb=get_temp_dir()."/adminer.key";$K=@file_get_contents($Fb);if($K||!$Va) { |
|
308 | + return$K; |
|
309 | +} |
|
310 | +$Rb=@fopen($Fb,"w");if($Rb){chmod($Fb,0660);$K=rand_string();fwrite($Rb,$K);fclose($Rb);}return$K;}function |
|
130 | 311 | rand_string(){return |
131 | 312 | md5(uniqid(mt_rand(),true));}function |
132 | 313 | select_value($V,$z,$l,$he){global$b,$aa;if(is_array($V)){$K="";foreach($V |
133 | -as$w=>$U)$K.="<tr>".($V!=array_values($V)?"<th>".h($w):"")."<td>".select_value($U,$z,$l,$he);return"<table cellspacing='0'>$K</table>";}if(!$z)$z=$b->selectLink($V,$l);if($z===null){if(is_mail($V))$z="mailto:$V";if($qd=is_url($V))$z=(($qd=="http"&&$aa)||preg_match('~WebKit~i',$_SERVER["HTTP_USER_AGENT"])?$V:"https://www.adminer.org/redirect/?url=".urlencode($V));}$K=$b->editVal($V,$l);if($K!==null){if($K==="")$K=" ";elseif(!is_utf8($K))$K="\0";elseif($he!=""&&is_shortable($l))$K=shorten_utf8($K,max(0,+$he));else$K=h($K);}return$b->selectVal($K,$z,$l,$V);}function |
|
314 | +as$w=>$U) { |
|
315 | + $K.="<tr>".($V!=array_values($V)?"<th>".h($w):"")."<td>".select_value($U,$z,$l,$he); |
|
316 | +} |
|
317 | +return"<table cellspacing='0'>$K</table>";}if(!$z) { |
|
318 | + $z=$b->selectLink($V,$l); |
|
319 | +} |
|
320 | +if($z===null){if(is_mail($V)) { |
|
321 | + $z="mailto:$V"; |
|
322 | +} |
|
323 | +if($qd=is_url($V)) { |
|
324 | + $z=(($qd=="http"&&$aa)||preg_match('~WebKit~i',$_SERVER["HTTP_USER_AGENT"])?$V:"https://www.adminer.org/redirect/?url=".urlencode($V)); |
|
325 | +} |
|
326 | +}$K=$b->editVal($V,$l);if($K!==null){if($K==="") { |
|
327 | + $K=" "; |
|
328 | +} elseif(!is_utf8($K)) { |
|
329 | + $K="\0"; |
|
330 | +} elseif($he!=""&&is_shortable($l)) { |
|
331 | + $K=shorten_utf8($K,max(0,+$he)); |
|
332 | +} else { |
|
333 | + $K=h($K); |
|
334 | +} |
|
335 | +}return$b->selectVal($K,$z,$l,$V);}function |
|
134 | 336 | is_mail($pb){$pa='[-a-z0-9!#$%&\'*+/=?^_`{|}~]';$ib='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';$H="$pa+(\\.$pa+)*@($ib?\\.)+$ib";return |
135 | 337 | is_string($pb)&&preg_match("(^$H(,\\s*$H)*\$)i",$pb);}function |
136 | 338 | is_url($Q){$ib='[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])';return(preg_match("~^(https?)://($ib?\\.)+$ib(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i",$Q,$A)?strtolower($A[1]):"");}function |
@@ -143,38 +345,94 @@ discard block |
||
143 | 345 | }, \'token=',$qe,'&kill=',$rc,'\'); |
144 | 346 | }, ',1000*$ke,'); |
145 | 347 | </script> |
146 | -';}else$g=null;ob_flush();flush();$K=@get_key_vals($I,$g,$ke);if($g){echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n";ob_flush();flush();}return |
|
348 | +';} else { |
|
349 | + $g=null; |
|
350 | +} |
|
351 | +ob_flush();flush();$K=@get_key_vals($I,$g,$ke);if($g){echo"<script type='text/javascript'>clearTimeout(timeout);</script>\n";ob_flush();flush();}return |
|
147 | 352 | array_keys($K);}function |
148 | 353 | get_token(){$vd=rand(1,1e6);return($vd^$_SESSION["token"]).":$vd";}function |
149 | 354 | verify_token(){list($qe,$vd)=explode(":",$_POST["token"]);return($vd^$_SESSION["token"])==$qe;}function |
150 | -lzw_decompress($za){$gb=256;$_a=8;$Ka=array();$Bd=0;$Cd=0;for($q=0;$q<strlen($za);$q++){$Bd=($Bd<<8)+ord($za[$q]);$Cd+=8;if($Cd>=$_a){$Cd-=$_a;$Ka[]=$Bd>>$Cd;$Bd&=(1<<$Cd)-1;$gb++;if($gb>>$_a)$_a++;}}$fb=range("\0","\xFF");$K="";foreach($Ka |
|
151 | -as$q=>$Ja){$ob=$fb[$Ja];if(!isset($ob))$ob=$Ne.$Ne[0];$K.=$ob;if($q)$fb[]=$Ne.$ob[0];$Ne=$ob;}return$K;}function |
|
355 | +lzw_decompress($za){$gb=256;$_a=8;$Ka=array();$Bd=0;$Cd=0;for($q=0;$q<strlen($za);$q++){$Bd=($Bd<<8)+ord($za[$q]);$Cd+=8;if($Cd>=$_a){$Cd-=$_a;$Ka[]=$Bd>>$Cd;$Bd&=(1<<$Cd)-1;$gb++;if($gb>>$_a) { |
|
356 | + $_a++; |
|
357 | +} |
|
358 | +}}$fb=range("\0","\xFF");$K="";foreach($Ka |
|
359 | +as$q=>$Ja){$ob=$fb[$Ja];if(!isset($ob)) { |
|
360 | + $ob=$Ne.$Ne[0]; |
|
361 | +} |
|
362 | +$K.=$ob;if($q) { |
|
363 | + $fb[]=$Ne.$ob[0]; |
|
364 | +} |
|
365 | +$Ne=$ob;}return$K;}function |
|
152 | 366 | on_help($Pa,$Pd=0){return" onmouseover='helpMouseover(this, event, ".h($Pa).", $Pd);' onmouseout='helpMouseout(this, event);'";}function |
153 | -edit_form($a,$m,$L,$De){global$b,$v,$qe,$k;$de=$b->tableName(table_status1($a,true));page_header(($De?'Edit':'Insert'),$k,array("select"=>array($a,$de)),$de);if($L===false)echo"<p class='error'>".'No rows.'."\n";echo'<form action="" method="post" enctype="multipart/form-data" id="form"> |
|
154 | -';if(!$m)echo"<p class='error'>".'You have no privileges to update this table.'."\n";else{echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m |
|
155 | -as$D=>$l){echo"<tr><th>".$b->fieldName($l);$cb=$_GET["set"][bracket_escape($D)];if($cb===null){$cb=$l["default"];if($l["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$cb,$yd))$cb=$yd[1];}$W=($L!==null?($L[$D]!=""&&$v=="sql"&&preg_match("~enum|set~",$l["type"])?(is_array($L[$D])?array_sum($L[$D]):+$L[$D]):$L[$D]):(!$De&&$l["auto_increment"]?"":(isset($_GET["select"])?false:$cb)));if(!$_POST["save"]&&is_string($W))$W=$b->editVal($W,$l);$o=($_POST["save"]?(string)$_POST["function"][$D]:($De&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($W===false?null:($W!==null?'':'NULL'))));if(preg_match("~time~",$l["type"])&&$W=="CURRENT_TIMESTAMP"){$W="";$o="now";}input($l,$W,$o);echo"\n";}if(!support("table"))echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n";echo"</table>\n";}echo"<p>\n";if($m){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"]))echo"<input type='submit' name='insert' value='".($De?'Save and continue edit'."' onclick='return !ajaxForm(this.form, \"".'Saving'.'...", this)':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n";}echo($De?"<input type='submit' name='delete' value='".'Delete'."'".confirm().">\n":($_POST||!$m?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"]))hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"]));echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'"> |
|
367 | +edit_form($a,$m,$L,$De){global$b,$v,$qe,$k;$de=$b->tableName(table_status1($a,true));page_header(($De?'Edit':'Insert'),$k,array("select"=>array($a,$de)),$de);if($L===false) { |
|
368 | + echo"<p class='error'>".'No rows.'."\n"; |
|
369 | +} |
|
370 | +echo'<form action="" method="post" enctype="multipart/form-data" id="form"> |
|
371 | +';if(!$m) { |
|
372 | + echo"<p class='error'>".'You have no privileges to update this table.'."\n"; |
|
373 | +} else{echo"<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";foreach($m |
|
374 | +as$D=>$l){echo"<tr><th>".$b->fieldName($l);$cb=$_GET["set"][bracket_escape($D)];if($cb===null){$cb=$l["default"];if($l["type"]=="bit"&&preg_match("~^b'([01]*)'\$~",$cb,$yd)) { |
|
375 | + $cb=$yd[1]; |
|
376 | +} |
|
377 | +}$W=($L!==null?($L[$D]!=""&&$v=="sql"&&preg_match("~enum|set~",$l["type"])?(is_array($L[$D])?array_sum($L[$D]):+$L[$D]):$L[$D]):(!$De&&$l["auto_increment"]?"":(isset($_GET["select"])?false:$cb)));if(!$_POST["save"]&&is_string($W)) { |
|
378 | + $W=$b->editVal($W,$l); |
|
379 | +} |
|
380 | +$o=($_POST["save"]?(string)$_POST["function"][$D]:($De&&$l["on_update"]=="CURRENT_TIMESTAMP"?"now":($W===false?null:($W!==null?'':'NULL'))));if(preg_match("~time~",$l["type"])&&$W=="CURRENT_TIMESTAMP"){$W="";$o="now";}input($l,$W,$o);echo"\n";}if(!support("table")) { |
|
381 | + echo"<tr>"."<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>"."<td class='function'>".html_select("field_funs[]",$b->editFunctions(array("null"=>isset($_GET["select"]))))."<td><input name='field_vals[]'>"."\n"; |
|
382 | +} |
|
383 | +echo"</table>\n";}echo"<p>\n";if($m){echo"<input type='submit' value='".'Save'."'>\n";if(!isset($_GET["select"])) { |
|
384 | + echo"<input type='submit' name='insert' value='".($De?'Save and continue edit'."' onclick='return !ajaxForm(this.form, \"".'Saving'.'...", this)':'Save and insert next')."' title='Ctrl+Shift+Enter'>\n"; |
|
385 | +} |
|
386 | +}echo($De?"<input type='submit' name='delete' value='".'Delete'."'".confirm().">\n":($_POST||!$m?"":"<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n"));if(isset($_GET["select"])) { |
|
387 | + hidden_fields(array("check"=>(array)$_POST["check"],"clone"=>$_POST["clone"],"all"=>$_POST["all"])); |
|
388 | +} |
|
389 | +echo'<input type="hidden" name="referer" value="',h(isset($_POST["referer"])?$_POST["referer"]:$_SERVER["HTTP_REFERER"]),'"> |
|
156 | 390 | <input type="hidden" name="save" value="1"> |
157 | 391 | <input type="hidden" name="token" value="',$qe,'"> |
158 | 392 | </form> |
159 | -';}global$b,$f,$jb,$mb,$ub,$k,$Tb,$Vb,$aa,$lc,$v,$ba,$tc,$Rc,$gd,$Wd,$Zb,$qe,$te,$we,$Ce,$ca;if(!$_SERVER["REQUEST_URI"])$_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"];if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="")$_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]";$aa=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);session_cache_limiter("");if(!defined("SID")){session_name("adminer_sid");$ed=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0)$ed[]=true;call_user_func_array('session_set_cookie_params',$ed);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Hb);if(get_magic_quotes_runtime())set_magic_quotes_runtime(false);@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);function |
|
393 | +';}global$b,$f,$jb,$mb,$ub,$k,$Tb,$Vb,$aa,$lc,$v,$ba,$tc,$Rc,$gd,$Wd,$Zb,$qe,$te,$we,$Ce,$ca;if(!$_SERVER["REQUEST_URI"]) { |
|
394 | + $_SERVER["REQUEST_URI"]=$_SERVER["ORIG_PATH_INFO"]; |
|
395 | +} |
|
396 | +if(!strpos($_SERVER["REQUEST_URI"],'?')&&$_SERVER["QUERY_STRING"]!="") { |
|
397 | + $_SERVER["REQUEST_URI"].="?$_SERVER[QUERY_STRING]"; |
|
398 | +} |
|
399 | +$aa=$_SERVER["HTTPS"]&&strcasecmp($_SERVER["HTTPS"],"off");@ini_set("session.use_trans_sid",false);session_cache_limiter("");if(!defined("SID")){session_name("adminer_sid");$ed=array(0,preg_replace('~\\?.*~','',$_SERVER["REQUEST_URI"]),"",$aa);if(version_compare(PHP_VERSION,'5.2.0')>=0) { |
|
400 | + $ed[]=true; |
|
401 | +} |
|
402 | +call_user_func_array('session_set_cookie_params',$ed);session_start();}remove_slashes(array(&$_GET,&$_POST,&$_COOKIE),$Hb);if(get_magic_quotes_runtime()) { |
|
403 | + set_magic_quotes_runtime(false); |
|
404 | +} |
|
405 | +@set_time_limit(0);@ini_set("zend.ze1_compatibility_mode",false);@ini_set("precision",20);function |
|
160 | 406 | get_lang(){return'en';}function |
161 | 407 | lang($se,$Oc=null){if(is_array($se)){$jd=($Oc==1?0:1);$se=$se[$jd];}$se=str_replace("%d","%s",$se);$Oc=format_number($Oc);return |
162 | 408 | sprintf($se,$Oc);}if(extension_loaded('pdo')){class |
163 | 409 | Min_PDO |
164 | 410 | extends |
165 | 411 | PDO{var$_result,$server_info,$affected_rows,$errno,$error;function |
166 | -__construct(){global$b;$jd=array_search("SQL",$b->operators);if($jd!==false)unset($b->operators[$jd]);}function |
|
167 | -dsn($kb,$T,$G){try{parent::__construct($kb,$T,$G);}catch(Exception$xb){auth_error($xb->getMessage());}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function |
|
412 | +__construct(){global$b;$jd=array_search("SQL",$b->operators);if($jd!==false) { |
|
413 | + unset($b->operators[$jd]); |
|
414 | +} |
|
415 | +}function |
|
416 | +dsn($kb,$T,$G){try{parent::__construct($kb,$T,$G);} catch(Exception$xb){auth_error($xb->getMessage());}$this->setAttribute(13,array('Min_PDOStatement'));$this->server_info=$this->getAttribute(4);}function |
|
168 | 417 | query($I,$xe=false){$J=parent::query($I);$this->error="";if(!$J){list(,$this->errno,$this->error)=$this->errorInfo();return |
169 | 418 | false;}$this->store_result($J);return$J;}function |
170 | 419 | multi_query($I){return$this->_result=$this->query($I);}function |
171 | -store_result($J=null){if(!$J){$J=$this->_result;if(!$J)return |
|
172 | -false;}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return |
|
420 | +store_result($J=null){if(!$J){$J=$this->_result;if(!$J) { |
|
421 | + return |
|
422 | +false; |
|
423 | +} |
|
424 | +}if($J->columnCount()){$J->num_rows=$J->rowCount();return$J;}$this->affected_rows=$J->rowCount();return |
|
173 | 425 | true;}function |
174 | -next_result(){if(!$this->_result)return |
|
175 | -false;$this->_result->_offset=0;return@$this->_result->nextRowset();}function |
|
176 | -result($I,$l=0){$J=$this->query($I);if(!$J)return |
|
177 | -false;$L=$J->fetch();return$L[$l];}}class |
|
426 | +next_result(){if(!$this->_result) { |
|
427 | + return |
|
428 | +false; |
|
429 | +} |
|
430 | +$this->_result->_offset=0;return@$this->_result->nextRowset();}function |
|
431 | +result($I,$l=0){$J=$this->query($I);if(!$J) { |
|
432 | + return |
|
433 | +false; |
|
434 | +} |
|
435 | +$L=$J->fetch();return$L[$l];}}class |
|
178 | 436 | Min_PDOStatement |
179 | 437 | extends |
180 | 438 | PDOStatement{var$_offset=0,$num_rows;function |
@@ -183,11 +441,20 @@ discard block |
||
183 | 441 | fetch_field(){$L=(object)$this->getColumnMeta($this->_offset++);$L->orgtable=$L->table;$L->orgname=$L->name;$L->charsetnr=(in_array("blob",(array)$L->flags)?63:0);return$L;}}}$jb=array();class |
184 | 442 | Min_SQL{var$_conn;function |
185 | 443 | __construct($f){$this->_conn=$f;}function |
186 | -select($R,$N,$Y,$p,$E=array(),$y=1,$F=0,$nd=false){global$b,$v;$u=(count($p)<count($N));$I=$b->selectQueryBuild($N,$Y,$p,$E,$y,$F);if(!$I)$I="SELECT".limit(($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($R),($Y?"\nWHERE ".implode(" AND ",$Y):"").($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):""),($y!=""?+$y:null),($F?$y*$F:0),"\n");$Td=microtime(true);$K=$this->_conn->query($I);if($nd)echo$b->selectQuery($I,format_time($Td));return$K;}function |
|
444 | +select($R,$N,$Y,$p,$E=array(),$y=1,$F=0,$nd=false){global$b,$v;$u=(count($p)<count($N));$I=$b->selectQueryBuild($N,$Y,$p,$E,$y,$F);if(!$I) { |
|
445 | + $I="SELECT".limit(($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql"?"SQL_CALC_FOUND_ROWS ":"").implode(", ",$N)."\nFROM ".table($R),($Y?"\nWHERE ".implode(" AND ",$Y):"").($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):""),($y!=""?+$y:null),($F?$y*$F:0),"\n"); |
|
446 | +} |
|
447 | +$Td=microtime(true);$K=$this->_conn->query($I);if($nd) { |
|
448 | + echo$b->selectQuery($I,format_time($Td)); |
|
449 | +} |
|
450 | +return$K;}function |
|
187 | 451 | delete($R,$td,$y=0){$I="FROM ".table($R);return |
188 | 452 | queries("DELETE".($y?limit1($I,$td):" $I$td"));}function |
189 | 453 | update($R,$P,$td,$y=0,$Kd="\n"){$Ge=array();foreach($P |
190 | -as$x=>$V)$Ge[]="$x = $V";$I=table($R)." SET$Kd".implode(",$Kd",$Ge);return |
|
454 | +as$x=>$V) { |
|
455 | + $Ge[]="$x = $V"; |
|
456 | +} |
|
457 | +$I=table($R)." SET$Kd".implode(",$Kd",$Ge);return |
|
191 | 458 | queries("UPDATE".($y?limit1($I,$td):" $I$td"));}function |
192 | 459 | insert($R,$P){return |
193 | 460 | queries("INSERT INTO ".table($R).($P?" (".implode(", ",array_keys($P)).")\nVALUES (".implode(", ",$P).")":" DEFAULT VALUES"));}function |
@@ -204,15 +471,29 @@ discard block |
||
204 | 471 | MySQLi{var$extension="MySQLi";function |
205 | 472 | __construct(){parent::init();}function |
206 | 473 | connect($O="",$T="",$G="",$Za=null,$id=null,$Qd=null){mysqli_report(MYSQLI_REPORT_OFF);list($dc,$id)=explode(":",$O,2);$K=@$this->real_connect(($O!=""?$dc:ini_get("mysqli.default_host")),($O.$T!=""?$T:ini_get("mysqli.default_user")),($O.$T.$G!=""?$G:ini_get("mysqli.default_pw")),$Za,(is_numeric($id)?$id:ini_get("mysqli.default_port")),(!is_numeric($id)?$id:$Qd));return$K;}function |
207 | -set_charset($Da){if(parent::set_charset($Da))return |
|
208 | -true;parent::set_charset('utf8');return$this->query("SET NAMES $Da");}function |
|
209 | -result($I,$l=0){$J=$this->query($I);if(!$J)return |
|
210 | -false;$L=$J->fetch_array();return$L[$l];}function |
|
211 | -quote($Q){return"'".$this->escape_string($Q)."'";}}}elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class |
|
474 | +set_charset($Da){if(parent::set_charset($Da)) { |
|
475 | + return |
|
476 | +true; |
|
477 | +} |
|
478 | +parent::set_charset('utf8');return$this->query("SET NAMES $Da");}function |
|
479 | +result($I,$l=0){$J=$this->query($I);if(!$J) { |
|
480 | + return |
|
481 | +false; |
|
482 | +} |
|
483 | +$L=$J->fetch_array();return$L[$l];}function |
|
484 | +quote($Q){return"'".$this->escape_string($Q)."'";}}} elseif(extension_loaded("mysql")&&!(ini_get("sql.safe_mode")&&extension_loaded("pdo_mysql"))){class |
|
212 | 485 | Min_DB{var$extension="MySQL",$server_info,$affected_rows,$errno,$error,$_link,$_result;function |
213 | -connect($O,$T,$G){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$T"!=""?$T:ini_get("mysql.default_user")),("$O$T$G"!=""?$G:ini_get("mysql.default_password")),true,131072);if($this->_link)$this->server_info=mysql_get_server_info($this->_link);else$this->error=mysql_error();return(bool)$this->_link;}function |
|
214 | -set_charset($Da){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Da,$this->_link))return |
|
215 | -true;mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $Da");}function |
|
486 | +connect($O,$T,$G){$this->_link=@mysql_connect(($O!=""?$O:ini_get("mysql.default_host")),("$O$T"!=""?$T:ini_get("mysql.default_user")),("$O$T$G"!=""?$G:ini_get("mysql.default_password")),true,131072);if($this->_link) { |
|
487 | + $this->server_info=mysql_get_server_info($this->_link); |
|
488 | +} else { |
|
489 | + $this->error=mysql_error(); |
|
490 | +} |
|
491 | +return(bool)$this->_link;}function |
|
492 | +set_charset($Da){if(function_exists('mysql_set_charset')){if(mysql_set_charset($Da,$this->_link)) { |
|
493 | + return |
|
494 | +true; |
|
495 | +} |
|
496 | +mysql_set_charset('utf8',$this->_link);}return$this->query("SET NAMES $Da");}function |
|
216 | 497 | quote($Q){return"'".mysql_real_escape_string($Q,$this->_link)."'";}function |
217 | 498 | select_db($Za){return |
218 | 499 | mysql_select_db($Za,$this->_link);}function |
@@ -225,8 +506,11 @@ discard block |
||
225 | 506 | store_result(){return$this->_result;}function |
226 | 507 | next_result(){return |
227 | 508 | false;}function |
228 | -result($I,$l=0){$J=$this->query($I);if(!$J||!$J->num_rows)return |
|
229 | -false;return |
|
509 | +result($I,$l=0){$J=$this->query($I);if(!$J||!$J->num_rows) { |
|
510 | + return |
|
511 | +false; |
|
512 | +} |
|
513 | +return |
|
230 | 514 | mysql_result($J->_result,0,$l);}}class |
231 | 515 | Min_Result{var$num_rows,$_result,$_offset=0;function |
232 | 516 | __construct($J){$this->_result=$J;$this->num_rows=mysql_num_rows($J);}function |
@@ -235,7 +519,7 @@ discard block |
||
235 | 519 | fetch_row(){return |
236 | 520 | mysql_fetch_row($this->_result);}function |
237 | 521 | fetch_field(){$K=mysql_fetch_field($this->_result,$this->_offset++);$K->orgtable=$K->table;$K->orgname=$K->name;$K->charsetnr=($K->blob?63:0);return$K;}function |
238 | -__destruct(){mysql_free_result($this->_result);}}}elseif(extension_loaded("pdo_mysql")){class |
|
522 | +__destruct(){mysql_free_result($this->_result);}}} elseif(extension_loaded("pdo_mysql")){class |
|
239 | 523 | Min_DB |
240 | 524 | extends |
241 | 525 | Min_PDO{var$extension="PDO_MySQL";function |
@@ -250,27 +534,56 @@ discard block |
||
250 | 534 | Min_SQL{function |
251 | 535 | insert($R,$P){return($P?parent::insert($R,$P):queries("INSERT INTO ".table($R)." ()\nVALUES ()"));}function |
252 | 536 | insertUpdate($R,$M,$md){$e=array_keys(reset($M));$ld="INSERT INTO ".table($R)." (".implode(", ",$e).") VALUES\n";$Ge=array();foreach($e |
253 | -as$x)$Ge[$x]="$x = VALUES($x)";$Zd="\nON DUPLICATE KEY UPDATE ".implode(", ",$Ge);$Ge=array();$xc=0;foreach($M |
|
254 | -as$P){$W="(".implode(", ",$P).")";if($Ge&&(strlen($ld)+$xc+strlen($W)+strlen($Zd)>1e6)){if(!queries($ld.implode(",\n",$Ge).$Zd))return |
|
255 | -false;$Ge=array();$xc=0;}$Ge[]=$W;$xc+=strlen($W)+2;}return |
|
537 | +as$x) { |
|
538 | + $Ge[$x]="$x = VALUES($x)"; |
|
539 | +} |
|
540 | +$Zd="\nON DUPLICATE KEY UPDATE ".implode(", ",$Ge);$Ge=array();$xc=0;foreach($M |
|
541 | +as$P){$W="(".implode(", ",$P).")";if($Ge&&(strlen($ld)+$xc+strlen($W)+strlen($Zd)>1e6)){if(!queries($ld.implode(",\n",$Ge).$Zd)) { |
|
542 | + return |
|
543 | +false; |
|
544 | +} |
|
545 | +$Ge=array();$xc=0;}$Ge[]=$W;$xc+=strlen($W)+2;}return |
|
256 | 546 | queries($ld.implode(",\n",$Ge).$Zd);}}function |
257 | 547 | idf_escape($gc){return"`".str_replace("`","``",$gc)."`";}function |
258 | 548 | table($gc){return |
259 | 549 | idf_escape($gc);}function |
260 | 550 | connect(){global$b;$f=new |
261 | -Min_DB;$Xa=$b->credentials();if($f->connect($Xa[0],$Xa[1],$Xa[2])){$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");return$f;}$K=$f->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($Ed=iconv("windows-1250","utf-8",$K))>strlen($K))$K=$Ed;return$K;}function |
|
551 | +Min_DB;$Xa=$b->credentials();if($f->connect($Xa[0],$Xa[1],$Xa[2])){$f->set_charset(charset($f));$f->query("SET sql_quote_show_create = 1, autocommit = 1");return$f;}$K=$f->error;if(function_exists('iconv')&&!is_utf8($K)&&strlen($Ed=iconv("windows-1250","utf-8",$K))>strlen($K)) { |
|
552 | + $K=$Ed; |
|
553 | +} |
|
554 | +return$K;}function |
|
262 | 555 | get_databases($Jb){global$f;$K=get_session("dbs");if($K===null){$I=($f->server_info>=5?"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA":"SHOW DATABASES");$K=($Jb?slow_query($I):get_vals($I));restart_session();set_session("dbs",$K);stop_session();}return$K;}function |
263 | 556 | limit($I,$Y,$y,$Pc=0,$Kd=" "){return" $I$Y".($y!==null?$Kd."LIMIT $y".($Pc?" OFFSET $Pc":""):"");}function |
264 | 557 | limit1($I,$Y){return |
265 | 558 | limit($I,$Y,1);}function |
266 | -db_collation($h,$Na){global$f;$K=null;$Va=$f->result("SHOW CREATE DATABASE ".idf_escape($h),1);if(preg_match('~ COLLATE ([^ ]+)~',$Va,$A))$K=$A[1];elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$Va,$A))$K=$Na[$A[1]][-1];return$K;}function |
|
267 | -engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"]))$K[]=$L["Engine"];}return$K;}function |
|
559 | +db_collation($h,$Na){global$f;$K=null;$Va=$f->result("SHOW CREATE DATABASE ".idf_escape($h),1);if(preg_match('~ COLLATE ([^ ]+)~',$Va,$A)) { |
|
560 | + $K=$A[1]; |
|
561 | +} elseif(preg_match('~ CHARACTER SET ([^ ]+)~',$Va,$A)) { |
|
562 | + $K=$Na[$A[1]][-1]; |
|
563 | +} |
|
564 | +return$K;}function |
|
565 | +engines(){$K=array();foreach(get_rows("SHOW ENGINES")as$L){if(preg_match("~YES|DEFAULT~",$L["Support"])) { |
|
566 | + $K[]=$L["Engine"]; |
|
567 | +} |
|
568 | +}return$K;}function |
|
268 | 569 | logged_user(){global$f;return$f->result("SELECT USER()");}function |
269 | 570 | tables_list(){global$f;return |
270 | 571 | get_key_vals($f->server_info>=5?"SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME":"SHOW TABLES");}function |
271 | 572 | count_tables($ab){$K=array();foreach($ab |
272 | -as$h)$K[$h]=count(get_vals("SHOW TABLES IN ".idf_escape($h)));return$K;}function |
|
273 | -table_status($D="",$Cb=false){global$f;$K=array();foreach(get_rows($Cb&&$f->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($D!=""?"AND TABLE_NAME = ".q($D):"ORDER BY Name"):"SHOW TABLE STATUS".($D!=""?" LIKE ".q(addcslashes($D,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB")$L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]);if(!isset($L["Engine"]))$L["Comment"]="";if($D!="")return$L;$K[$L["Name"]]=$L;}return$K;}function |
|
573 | +as$h) { |
|
574 | + $K[$h]=count(get_vals("SHOW TABLES IN ".idf_escape($h))); |
|
575 | +} |
|
576 | +return$K;}function |
|
577 | +table_status($D="",$Cb=false){global$f;$K=array();foreach(get_rows($Cb&&$f->server_info>=5?"SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ".($D!=""?"AND TABLE_NAME = ".q($D):"ORDER BY Name"):"SHOW TABLE STATUS".($D!=""?" LIKE ".q(addcslashes($D,"%_\\")):""))as$L){if($L["Engine"]=="InnoDB") { |
|
578 | + $L["Comment"]=preg_replace('~(?:(.+); )?InnoDB free: .*~','\\1',$L["Comment"]); |
|
579 | +} |
|
580 | +if(!isset($L["Engine"])) { |
|
581 | + $L["Comment"]=""; |
|
582 | +} |
|
583 | +if($D!="") { |
|
584 | + return$L; |
|
585 | +} |
|
586 | +$K[$L["Name"]]=$L;}return$K;}function |
|
274 | 587 | is_view($S){return$S["Engine"]===null;}function |
275 | 588 | fk_support($S){global$f;return |
276 | 589 | preg_match('~InnoDB|IBMDB2I~i',$S["Engine"])||(preg_match('~NDB~i',$S["Engine"])&&version_compare($f->server_info,'5.6')>=0);}function |
@@ -280,21 +593,53 @@ discard block |
||
280 | 593 | as$A){preg_match_all("~$H~",$A[2],$Rd);preg_match_all("~$H~",$A[5],$fe);$K[idf_unescape($A[1])]=array("db"=>idf_unescape($A[4]!=""?$A[3]:$A[4]),"table"=>idf_unescape($A[4]!=""?$A[4]:$A[3]),"source"=>array_map('idf_unescape',$Rd[0]),"target"=>array_map('idf_unescape',$fe[0]),"on_delete"=>($A[6]?$A[6]:"RESTRICT"),"on_update"=>($A[7]?$A[7]:"RESTRICT"),);}}return$K;}function |
281 | 594 | view($D){global$f;return |
282 | 595 | array("select"=>preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU','',$f->result("SHOW CREATE VIEW ".table($D),1)));}function |
283 | -collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"])$K[$L["Charset"]][-1]=$L["Collation"];else$K[$L["Charset"]][]=$L["Collation"];}ksort($K);foreach($K |
|
284 | -as$x=>$V)asort($K[$x]);return$K;}function |
|
596 | +collations(){$K=array();foreach(get_rows("SHOW COLLATION")as$L){if($L["Default"]) { |
|
597 | + $K[$L["Charset"]][-1]=$L["Collation"]; |
|
598 | +} else { |
|
599 | + $K[$L["Charset"]][]=$L["Collation"]; |
|
600 | +} |
|
601 | +}ksort($K);foreach($K |
|
602 | +as$x=>$V) { |
|
603 | + asort($K[$x]); |
|
604 | +} |
|
605 | +return$K;}function |
|
285 | 606 | information_schema($h){global$f;return($f->server_info>=5&&$h=="information_schema")||($f->server_info>=5.5&&$h=="performance_schema");}function |
286 | 607 | error(){global$f;return |
287 | 608 | h(preg_replace('~^You have an error.*syntax to use~U',"Syntax error",$f->error));}function |
288 | 609 | create_database($h,$Ma){return |
289 | 610 | queries("CREATE DATABASE ".idf_escape($h).($Ma?" COLLATE ".q($Ma):""));}function |
290 | 611 | drop_databases($ab){$K=apply_queries("DROP DATABASE",$ab,'idf_escape');restart_session();set_session("dbs",null);return$K;}function |
291 | -rename_database($D,$Ma){$K=false;if(create_database($D,$Ma)){$zd=array();foreach(tables_list()as$R=>$ue)$zd[]=table($R)." TO ".idf_escape($D).".".table($R);$K=(!$zd||queries("RENAME TABLE ".implode(", ",$zd)));if($K)queries("DROP DATABASE ".idf_escape(DB));restart_session();set_session("dbs",null);}return$K;}function |
|
292 | -auto_increment(){$ta=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$s){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$s["columns"],true)){$ta="";break;}if($s["type"]=="PRIMARY")$ta=" UNIQUE";}}return" AUTO_INCREMENT$ta";}function |
|
612 | +rename_database($D,$Ma){$K=false;if(create_database($D,$Ma)){$zd=array();foreach(tables_list()as$R=>$ue) { |
|
613 | + $zd[]=table($R)." TO ".idf_escape($D).".".table($R); |
|
614 | +} |
|
615 | +$K=(!$zd||queries("RENAME TABLE ".implode(", ",$zd)));if($K) { |
|
616 | + queries("DROP DATABASE ".idf_escape(DB)); |
|
617 | +} |
|
618 | +restart_session();set_session("dbs",null);}return$K;}function |
|
619 | +auto_increment(){$ta=" PRIMARY KEY";if($_GET["create"]!=""&&$_POST["auto_increment_col"]){foreach(indexes($_GET["create"])as$s){if(in_array($_POST["fields"][$_POST["auto_increment_col"]]["orig"],$s["columns"],true)){$ta="";break;}if($s["type"]=="PRIMARY") { |
|
620 | + $ta=" UNIQUE"; |
|
621 | +} |
|
622 | +}}return" AUTO_INCREMENT$ta";}function |
|
293 | 623 | alter_table($R,$D,$m,$Kb,$Qa,$tb,$Ma,$sa,$fd){$ma=array();foreach($m |
294 | -as$l)$ma[]=($l[1]?($R!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($R!=""?$l[2]:""):"DROP ".idf_escape($l[0]));$ma=array_merge($ma,$Kb);$Ud=($Qa!==null?" COMMENT=".q($Qa):"").($tb?" ENGINE=".q($tb):"").($Ma?" COLLATE ".q($Ma):"").($sa!=""?" AUTO_INCREMENT=$sa":"");if($R=="")return |
|
295 | -queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$ma)."\n)$Ud$fd");if($R!=$D)$ma[]="RENAME TO ".table($D);if($Ud)$ma[]=ltrim($Ud);return($ma||$fd?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$ma).$fd):true);}function |
|
624 | +as$l) { |
|
625 | + $ma[]=($l[1]?($R!=""?($l[0]!=""?"CHANGE ".idf_escape($l[0]):"ADD"):" ")." ".implode($l[1]).($R!=""?$l[2]:""):"DROP ".idf_escape($l[0])); |
|
626 | +} |
|
627 | +$ma=array_merge($ma,$Kb);$Ud=($Qa!==null?" COMMENT=".q($Qa):"").($tb?" ENGINE=".q($tb):"").($Ma?" COLLATE ".q($Ma):"").($sa!=""?" AUTO_INCREMENT=$sa":"");if($R=="") { |
|
628 | + return |
|
629 | +queries("CREATE TABLE ".table($D)." (\n".implode(",\n",$ma)."\n)$Ud$fd"); |
|
630 | +} |
|
631 | +if($R!=$D) { |
|
632 | + $ma[]="RENAME TO ".table($D); |
|
633 | +} |
|
634 | +if($Ud) { |
|
635 | + $ma[]=ltrim($Ud); |
|
636 | +} |
|
637 | +return($ma||$fd?queries("ALTER TABLE ".table($R)."\n".implode(",\n",$ma).$fd):true);}function |
|
296 | 638 | alter_indexes($R,$ma){foreach($ma |
297 | -as$x=>$V)$ma[$x]=($V[2]=="DROP"?"\nDROP INDEX ".idf_escape($V[1]):"\nADD $V[0] ".($V[0]=="PRIMARY"?"KEY ":"").($V[1]!=""?idf_escape($V[1])." ":"")."(".implode(", ",$V[2]).")");return |
|
639 | +as$x=>$V) { |
|
640 | + $ma[$x]=($V[2]=="DROP"?"\nDROP INDEX ".idf_escape($V[1]):"\nADD $V[0] ".($V[0]=="PRIMARY"?"KEY ":"").($V[1]!=""?idf_escape($V[1])." ":"")."(".implode(", ",$V[2]).")"); |
|
641 | +} |
|
642 | +return |
|
298 | 643 | queries("ALTER TABLE ".table($R).implode(",",$ma));}function |
299 | 644 | truncate_tables($ee){return |
300 | 645 | apply_queries("TRUNCATE TABLE",$ee);}function |
@@ -302,23 +647,41 @@ discard block |
||
302 | 647 | queries("DROP VIEW ".implode(", ",array_map('table',$Ie)));}function |
303 | 648 | drop_tables($ee){return |
304 | 649 | queries("DROP TABLE ".implode(", ",array_map('table',$ee)));}function |
305 | -move_tables($ee,$Ie,$fe){$zd=array();foreach(array_merge($ee,$Ie)as$R)$zd[]=table($R)." TO ".idf_escape($fe).".".table($R);return |
|
650 | +move_tables($ee,$Ie,$fe){$zd=array();foreach(array_merge($ee,$Ie)as$R) { |
|
651 | + $zd[]=table($R)." TO ".idf_escape($fe).".".table($R); |
|
652 | +} |
|
653 | +return |
|
306 | 654 | queries("RENAME TABLE ".implode(", ",$zd));}function |
307 | 655 | copy_tables($ee,$Ie,$fe){queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");foreach($ee |
308 | -as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));if(!queries("\nDROP TABLE IF EXISTS $D")||!queries("CREATE TABLE $D LIKE ".table($R))||!queries("INSERT INTO $D SELECT * FROM ".table($R)))return |
|
309 | -false;}foreach($Ie |
|
310 | -as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));$He=view($R);if(!queries("DROP VIEW IF EXISTS $D")||!queries("CREATE VIEW $D AS $He[select]"))return |
|
311 | -false;}return |
|
656 | +as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));if(!queries("\nDROP TABLE IF EXISTS $D")||!queries("CREATE TABLE $D LIKE ".table($R))||!queries("INSERT INTO $D SELECT * FROM ".table($R))) { |
|
657 | + return |
|
658 | +false; |
|
659 | +} |
|
660 | +}foreach($Ie |
|
661 | +as$R){$D=($fe==DB?table("copy_$R"):idf_escape($fe).".".table($R));$He=view($R);if(!queries("DROP VIEW IF EXISTS $D")||!queries("CREATE VIEW $D AS $He[select]")) { |
|
662 | + return |
|
663 | +false; |
|
664 | +} |
|
665 | +}return |
|
312 | 666 | true;}function |
313 | -trigger($D){if($D=="")return |
|
314 | -array();$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($D));return |
|
667 | +trigger($D){if($D=="") { |
|
668 | + return |
|
669 | +array(); |
|
670 | +} |
|
671 | +$M=get_rows("SHOW TRIGGERS WHERE `Trigger` = ".q($D));return |
|
315 | 672 | reset($M);}function |
316 | -triggers($R){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$L)$K[$L["Trigger"]]=array($L["Timing"],$L["Event"]);return$K;}function |
|
673 | +triggers($R){$K=array();foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")))as$L) { |
|
674 | + $K[$L["Trigger"]]=array($L["Timing"],$L["Event"]); |
|
675 | +} |
|
676 | +return$K;}function |
|
317 | 677 | trigger_options(){return |
318 | 678 | array("Timing"=>array("BEFORE","AFTER"),"Event"=>array("INSERT","UPDATE","DELETE"),"Type"=>array("FOR EACH ROW"),);}function |
319 | 679 | routine($D,$ue){global$f,$ub,$lc,$we;$la=array("bool","boolean","integer","double precision","real","dec","numeric","fixed","national char","national varchar");$ve="((".implode("|",array_merge(array_keys($we),$la)).")\\b(?:\\s*\\(((?:[^'\")]|$ub)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";$H="\\s*(".($ue=="FUNCTION"?"":$lc).")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$ve";$Va=$f->result("SHOW CREATE $ue ".idf_escape($D),2);preg_match("~\\(((?:$H\\s*,?)*)\\)\\s*".($ue=="FUNCTION"?"RETURNS\\s+$ve\\s+":"")."(.*)~is",$Va,$A);$m=array();preg_match_all("~$H\\s*,?~is",$A[1],$Bc,PREG_SET_ORDER);foreach($Bc |
320 | -as$dd){$D=str_replace("``","`",$dd[2]).$dd[3];$m[]=array("field"=>$D,"type"=>strtolower($dd[5]),"length"=>preg_replace_callback("~$ub~s",'normalize_enum',$dd[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$dd[8] $dd[7]"))),"null"=>1,"full_type"=>$dd[4],"inout"=>strtoupper($dd[1]),"collation"=>strtolower($dd[9]),);}if($ue!="FUNCTION")return |
|
321 | -array("fields"=>$m,"definition"=>$A[11]);return |
|
680 | +as$dd){$D=str_replace("``","`",$dd[2]).$dd[3];$m[]=array("field"=>$D,"type"=>strtolower($dd[5]),"length"=>preg_replace_callback("~$ub~s",'normalize_enum',$dd[6]),"unsigned"=>strtolower(preg_replace('~\\s+~',' ',trim("$dd[8] $dd[7]"))),"null"=>1,"full_type"=>$dd[4],"inout"=>strtoupper($dd[1]),"collation"=>strtolower($dd[9]),);}if($ue!="FUNCTION") { |
|
681 | + return |
|
682 | +array("fields"=>$m,"definition"=>$A[11]); |
|
683 | +} |
|
684 | +return |
|
322 | 685 | array("fields"=>$m,"returns"=>array("type"=>$A[12],"length"=>$A[13],"unsigned"=>$A[15],"collation"=>$A[16]),"definition"=>$A[17],"language"=>"SQL",);}function |
323 | 686 | routines(){return |
324 | 687 | get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = ".q(DB));}function |
@@ -334,18 +697,42 @@ discard block |
||
334 | 697 | get_schema(){return"";}function |
335 | 698 | set_schema($Fd){return |
336 | 699 | true;}function |
337 | -create_sql($R,$sa){global$f;$K=$f->result("SHOW CREATE TABLE ".table($R),1);if(!$sa)$K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K);return$K;}function |
|
700 | +create_sql($R,$sa){global$f;$K=$f->result("SHOW CREATE TABLE ".table($R),1);if(!$sa) { |
|
701 | + $K=preg_replace('~ AUTO_INCREMENT=\\d+~','',$K); |
|
702 | +} |
|
703 | +return$K;}function |
|
338 | 704 | truncate_sql($R){return"TRUNCATE ".table($R);}function |
339 | 705 | use_sql($Za){return"USE ".idf_escape($Za);}function |
340 | -trigger_sql($R,$Xd){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$L)$K.="\n".($Xd=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n";return$K;}function |
|
706 | +trigger_sql($R,$Xd){$K="";foreach(get_rows("SHOW TRIGGERS LIKE ".q(addcslashes($R,"%_\\")),null,"-- ")as$L) { |
|
707 | + $K.="\n".($Xd=='CREATE+ALTER'?"DROP TRIGGER IF EXISTS ".idf_escape($L["Trigger"]).";;\n":"")."CREATE TRIGGER ".idf_escape($L["Trigger"])." $L[Timing] $L[Event] ON ".table($L["Table"])." FOR EACH ROW\n$L[Statement];;\n"; |
|
708 | +} |
|
709 | +return$K;}function |
|
341 | 710 | show_variables(){return |
342 | 711 | get_key_vals("SHOW VARIABLES");}function |
343 | 712 | process_list(){return |
344 | 713 | get_rows("SHOW FULL PROCESSLIST");}function |
345 | 714 | show_status(){return |
346 | 715 | get_key_vals("SHOW STATUS");}function |
347 | -convert_field($l){if(preg_match("~binary~",$l["type"]))return"HEX(".idf_escape($l["field"]).")";if($l["type"]=="bit")return"BIN(".idf_escape($l["field"])." + 0)";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))return"AsWKT(".idf_escape($l["field"]).")";}function |
|
348 | -unconvert_field($l,$K){if(preg_match("~binary~",$l["type"]))$K="UNHEX($K)";if($l["type"]=="bit")$K="CONV($K, 2, 10) + 0";if(preg_match("~geometry|point|linestring|polygon~",$l["type"]))$K="GeomFromText($K)";return$K;}function |
|
716 | +convert_field($l){if(preg_match("~binary~",$l["type"])) { |
|
717 | + return"HEX(".idf_escape($l["field"]).")"; |
|
718 | +} |
|
719 | +if($l["type"]=="bit") { |
|
720 | + return"BIN(".idf_escape($l["field"])." + 0)"; |
|
721 | +} |
|
722 | +if(preg_match("~geometry|point|linestring|polygon~",$l["type"])) { |
|
723 | + return"AsWKT(".idf_escape($l["field"]).")"; |
|
724 | +} |
|
725 | +}function |
|
726 | +unconvert_field($l,$K){if(preg_match("~binary~",$l["type"])) { |
|
727 | + $K="UNHEX($K)"; |
|
728 | +} |
|
729 | +if($l["type"]=="bit") { |
|
730 | + $K="CONV($K, 2, 10) + 0"; |
|
731 | +} |
|
732 | +if(preg_match("~geometry|point|linestring|polygon~",$l["type"])) { |
|
733 | + $K="GeomFromText($K)"; |
|
734 | +} |
|
735 | +return$K;}function |
|
349 | 736 | support($Db){global$f;return!preg_match("~scheme|sequence|type|view_trigger".($f->server_info<5.1?"|event|partitioning".($f->server_info<5?"|routine|trigger|view":""):"")."~",$Db);}function |
350 | 737 | kill_process($V){return |
351 | 738 | queries("KILL ".number($V));}function |
@@ -382,7 +769,10 @@ discard block |
||
382 | 769 | h($ce["Comment"]!=""?$ce["Comment"]:$ce["Name"]);}function |
383 | 770 | fieldName($l,$E=0){return |
384 | 771 | h($l["comment"]!=""?$l["comment"]:$l["field"]);}function |
385 | -selectLinks($ce,$P=""){$a=$ce["Name"];if($P!==null)echo'<p class="tabs"><a href="'.h(ME.'edit='.urlencode($a).$P).'">'.'New item'."</a>\n";}function |
|
772 | +selectLinks($ce,$P=""){$a=$ce["Name"];if($P!==null) { |
|
773 | + echo'<p class="tabs"><a href="'.h(ME.'edit='.urlencode($a).$P).'">'.'New item'."</a>\n"; |
|
774 | +} |
|
775 | +}function |
|
386 | 776 | foreignKeys($R){return |
387 | 777 | foreign_keys($R);}function |
388 | 778 | backwardKeys($R,$be){$K=array();foreach(get_rows("SELECT TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME, REFERENCED_COLUMN_NAME |
@@ -390,30 +780,85 @@ discard block |
||
390 | 780 | WHERE TABLE_SCHEMA = ".q($this->database())." |
391 | 781 | AND REFERENCED_TABLE_SCHEMA = ".q($this->database())." |
392 | 782 | AND REFERENCED_TABLE_NAME = ".q($R)." |
393 | -ORDER BY ORDINAL_POSITION",null,"")as$L)$K[$L["TABLE_NAME"]]["keys"][$L["CONSTRAINT_NAME"]][$L["COLUMN_NAME"]]=$L["REFERENCED_COLUMN_NAME"];foreach($K |
|
394 | -as$x=>$V){$D=$this->tableName(table_status($x,true));if($D!=""){$Gd=preg_quote($be);$Kd="(:|\\s*-)?\\s+";$K[$x]["name"]=(preg_match("(^$Gd$Kd(.+)|^(.+?)$Kd$Gd\$)iu",$D,$A)?$A[2].$A[3]:$D);}else |
|
395 | -unset($K[$x]);}return$K;}function |
|
783 | +ORDER BY ORDINAL_POSITION",null,"")as$L) { |
|
784 | + $K[$L["TABLE_NAME"]]["keys"][$L["CONSTRAINT_NAME"]][$L["COLUMN_NAME"]]=$L["REFERENCED_COLUMN_NAME"]; |
|
785 | +} |
|
786 | +foreach($K |
|
787 | +as$x=>$V){$D=$this->tableName(table_status($x,true));if($D!=""){$Gd=preg_quote($be);$Kd="(:|\\s*-)?\\s+";$K[$x]["name"]=(preg_match("(^$Gd$Kd(.+)|^(.+?)$Kd$Gd\$)iu",$D,$A)?$A[2].$A[3]:$D);} else { |
|
788 | + unset($K[$x]); |
|
789 | +} |
|
790 | +}return$K;}function |
|
396 | 791 | backwardKeysPrint($wa,$L){foreach($wa |
397 | 792 | as$R=>$va){foreach($va["keys"]as$Oa){$z=ME.'select='.urlencode($R);$q=0;foreach($Oa |
398 | -as$d=>$V)$z.=where_link($q++,$d,$L[$V]);echo"<a href='".h($z)."'>".h($va["name"])."</a>";$z=ME.'edit='.urlencode($R);foreach($Oa |
|
399 | -as$d=>$V)$z.="&set".urlencode("[".bracket_escape($d)."]")."=".urlencode($L[$V]);echo"<a href='".h($z)."' title='".'New item'."'>+</a> ";}}}function |
|
793 | +as$d=>$V) { |
|
794 | + $z.=where_link($q++,$d,$L[$V]); |
|
795 | +} |
|
796 | +echo"<a href='".h($z)."'>".h($va["name"])."</a>";$z=ME.'edit='.urlencode($R);foreach($Oa |
|
797 | +as$d=>$V) { |
|
798 | + $z.="&set".urlencode("[".bracket_escape($d)."]")."=".urlencode($L[$V]); |
|
799 | +} |
|
800 | +echo"<a href='".h($z)."' title='".'New item'."'>+</a> ";}}}function |
|
400 | 801 | selectQuery($I,$je){return"<!--\n".str_replace("--","--><!-- ",$I)."\n($je)\n-->\n";}function |
401 | -rowDescription($R){foreach(fields($R)as$l){if(preg_match("~varchar|character varying~",$l["type"]))return |
|
402 | -idf_escape($l["field"]);}return"";}function |
|
802 | +rowDescription($R){foreach(fields($R)as$l){if(preg_match("~varchar|character varying~",$l["type"])) { |
|
803 | + return |
|
804 | +idf_escape($l["field"]); |
|
805 | +} |
|
806 | +}return"";}function |
|
403 | 807 | rowDescriptions($M,$Mb){$K=$M;foreach($M[0]as$x=>$V){if(list($R,$r,$D)=$this->_foreignColumn($Mb,$x)){$hc=array();foreach($M |
404 | -as$L)$hc[$L[$x]]=q($L[$x]);$eb=$this->_values[$R];if(!$eb)$eb=get_key_vals("SELECT $r, $D FROM ".table($R)." WHERE $r IN (".implode(", ",$hc).")");foreach($M |
|
405 | -as$C=>$L){if(isset($L[$x]))$K[$C][$x]=(string)$eb[$L[$x]];}}}return$K;}function |
|
808 | +as$L) { |
|
809 | + $hc[$L[$x]]=q($L[$x]); |
|
810 | +} |
|
811 | +$eb=$this->_values[$R];if(!$eb) { |
|
812 | + $eb=get_key_vals("SELECT $r, $D FROM ".table($R)." WHERE $r IN (".implode(", ",$hc).")"); |
|
813 | +} |
|
814 | +foreach($M |
|
815 | +as$C=>$L){if(isset($L[$x])) { |
|
816 | + $K[$C][$x]=(string)$eb[$L[$x]]; |
|
817 | +} |
|
818 | +}}}return$K;}function |
|
406 | 819 | selectLink($V,$l){}function |
407 | -selectVal($V,$z,$l,$ad){$K=($V===null?" ":$V);$z=h($z);if(preg_match('~blob|bytea~',$l["type"])&&!is_utf8($V)){$K=lang(array('%d byte','%d bytes'),strlen($ad));if(preg_match("~^(GIF|\xFF\xD8\xFF|\x89PNG\x0D\x0A\x1A\x0A)~",$ad))$K="<img src='$z' alt='$K'>";}if(like_bool($l)&&$K!=" ")$K=($V?'yes':'no');if($z)$K="<a href='$z'".(is_url($z)?" rel='noreferrer'":"").">$K</a>";if(!$z&&!like_bool($l)&&preg_match('~int|float|double|decimal~',$l["type"]))$K="<div class='number'>$K</div>";elseif(preg_match('~date~',$l["type"]))$K="<div class='datetime'>$K</div>";return$K;}function |
|
408 | -editVal($V,$l){if(preg_match('~date|timestamp~',$l["type"])&&$V!==null)return |
|
409 | -preg_replace('~^(\\d{2}(\\d+))-(0?(\\d+))-(0?(\\d+))~','$1-$3-$5',$V);return$V;}function |
|
820 | +selectVal($V,$z,$l,$ad){$K=($V===null?" ":$V);$z=h($z);if(preg_match('~blob|bytea~',$l["type"])&&!is_utf8($V)){$K=lang(array('%d byte','%d bytes'),strlen($ad));if(preg_match("~^(GIF|\xFF\xD8\xFF|\x89PNG\x0D\x0A\x1A\x0A)~",$ad)) { |
|
821 | + $K="<img src='$z' alt='$K'>"; |
|
822 | +} |
|
823 | +}if(like_bool($l)&&$K!=" ") { |
|
824 | + $K=($V?'yes':'no'); |
|
825 | +} |
|
826 | +if($z) { |
|
827 | + $K="<a href='$z'".(is_url($z)?" rel='noreferrer'":"").">$K</a>"; |
|
828 | +} |
|
829 | +if(!$z&&!like_bool($l)&&preg_match('~int|float|double|decimal~',$l["type"])) { |
|
830 | + $K="<div class='number'>$K</div>"; |
|
831 | +} elseif(preg_match('~date~',$l["type"])) { |
|
832 | + $K="<div class='datetime'>$K</div>"; |
|
833 | +} |
|
834 | +return$K;}function |
|
835 | +editVal($V,$l){if(preg_match('~date|timestamp~',$l["type"])&&$V!==null) { |
|
836 | + return |
|
837 | +preg_replace('~^(\\d{2}(\\d+))-(0?(\\d+))-(0?(\\d+))~','$1-$3-$5',$V); |
|
838 | +} |
|
839 | +return$V;}function |
|
410 | 840 | selectColumnsPrint($N,$e){}function |
411 | 841 | selectSearchPrint($Y,$e,$t){$Y=(array)$_GET["where"];echo'<fieldset id="fieldset-search"><legend>'.'Search'."</legend><div>\n";$qc=array();foreach($Y |
412 | -as$x=>$V)$qc[$V["col"]]=$x;$q=0;$m=fields($_GET["select"]);foreach($e |
|
413 | -as$D=>$db){$l=$m[$D];if(preg_match("~enum~",$l["type"])||like_bool($l)){$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'>:",(like_bool($l)?" <select name='where[$q][val]'>".optionlist(array(""=>"",'no','yes'),$Y[$x]["val"],true)."</select>":enum_input("checkbox"," name='where[$q][val][]'",$l,(array)$Y[$x]["val"],($l["null"]?0:null))),"</div>\n";unset($e[$D]);}elseif(is_array($Xc=$this->_foreignKeyOptions($_GET["select"],$D))){if($m[$D]["null"])$Xc[0]='('.'empty'.')';$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'><input type='hidden' name='where[$q][op]' value='='>: <select name='where[$q][val]'>".optionlist($Xc,$Y[$x]["val"],true)."</select></div>\n";unset($e[$D]);}}$q=0;foreach($Y |
|
842 | +as$x=>$V) { |
|
843 | + $qc[$V["col"]]=$x; |
|
844 | +} |
|
845 | +$q=0;$m=fields($_GET["select"]);foreach($e |
|
846 | +as$D=>$db){$l=$m[$D];if(preg_match("~enum~",$l["type"])||like_bool($l)){$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'>:",(like_bool($l)?" <select name='where[$q][val]'>".optionlist(array(""=>"",'no','yes'),$Y[$x]["val"],true)."</select>":enum_input("checkbox"," name='where[$q][val][]'",$l,(array)$Y[$x]["val"],($l["null"]?0:null))),"</div>\n";unset($e[$D]);} elseif(is_array($Xc=$this->_foreignKeyOptions($_GET["select"],$D))){if($m[$D]["null"]) { |
|
847 | + $Xc[0]='('.'empty'.')'; |
|
848 | +} |
|
849 | +$x=$qc[$D];$q--;echo"<div>".h($db)."<input type='hidden' name='where[$q][col]' value='".h($D)."'><input type='hidden' name='where[$q][op]' value='='>: <select name='where[$q][val]'>".optionlist($Xc,$Y[$x]["val"],true)."</select></div>\n";unset($e[$D]);}}$q=0;foreach($Y |
|
414 | 850 | as$V){if(($V["col"]==""||$e[$V["col"]])&&"$V[col]$V[val]"!=""){echo"<div><select name='where[$q][col]'><option value=''>(".'anywhere'.")".optionlist($e,$V["col"],true)."</select>",html_select("where[$q][op]",array(-1=>"")+$this->operators,$V["op"]),"<input type='search' name='where[$q][val]' value='".h($V["val"])."' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div>\n";$q++;}}echo"<div><select name='where[$q][col]' onchange='this.nextSibling.nextSibling.onchange();'><option value=''>(".'anywhere'.")".optionlist($e,null,true)."</select>",html_select("where[$q][op]",array(-1=>"")+$this->operators),"<input type='search' name='where[$q][val]' onchange='selectAddRow(this);' onsearch='selectSearch(this);'></div>\n","</div></fieldset>\n";}function |
415 | 851 | selectOrderPrint($E,$e,$t){$Zc=array();foreach($t |
416 | -as$x=>$s){$E=array();foreach($s["columns"]as$V)$E[]=$e[$V];if(count(array_filter($E,'strlen'))>1&&$x!="PRIMARY")$Zc[$x]=implode(", ",$E);}if($Zc){echo'<fieldset><legend>'.'Sort'."</legend><div>","<select name='index_order'>".optionlist(array(""=>"")+$Zc,($_GET["order"][0]!=""?"":$_GET["index_order"]),true)."</select>","</div></fieldset>\n";}if($_GET["order"])echo"<div style='display: none;'>".hidden_fields(array("order"=>array(1=>reset($_GET["order"])),"desc"=>($_GET["desc"]?array(1=>1):array()),))."</div>\n";}function |
|
852 | +as$x=>$s){$E=array();foreach($s["columns"]as$V) { |
|
853 | + $E[]=$e[$V]; |
|
854 | +} |
|
855 | +if(count(array_filter($E,'strlen'))>1&&$x!="PRIMARY") { |
|
856 | + $Zc[$x]=implode(", ",$E); |
|
857 | +} |
|
858 | +}if($Zc){echo'<fieldset><legend>'.'Sort'."</legend><div>","<select name='index_order'>".optionlist(array(""=>"")+$Zc,($_GET["order"][0]!=""?"":$_GET["index_order"]),true)."</select>","</div></fieldset>\n";}if($_GET["order"]) { |
|
859 | + echo"<div style='display: none;'>".hidden_fields(array("order"=>array(1=>reset($_GET["order"])),"desc"=>($_GET["desc"]?array(1=>1):array()),))."</div>\n"; |
|
860 | +} |
|
861 | +}function |
|
417 | 862 | selectLimitPrint($y){echo"<fieldset><legend>".'Limit'."</legend><div>";echo |
418 | 863 | html_select("limit",array("","50","100"),$y),"</div></fieldset>\n";}function |
419 | 864 | selectLengthPrint($he){}function |
@@ -425,20 +870,86 @@ discard block |
||
425 | 870 | selectEmailPrint($qb,$e){if($qb){print_fieldset("email",'E-mail',$_POST["email_append"]);echo"<div onkeydown=\"eventStop(event); return bodyKeydown(event, 'email');\">\n","<p>".'From'.": <input name='email_from' value='".h($_POST?$_POST["email_from"]:$_COOKIE["adminer_email"])."'>\n",'Subject'.": <input name='email_subject' value='".h($_POST["email_subject"])."'>\n","<p><textarea name='email_message' rows='15' cols='75'>".h($_POST["email_message"].($_POST["email_append"]?'{$'."$_POST[email_addition]}":""))."</textarea>\n","<p onkeydown=\"eventStop(event); return bodyKeydown(event, 'email_append');\">".html_select("email_addition",$e,$_POST["email_addition"])."<input type='submit' name='email_append' value='".'Insert'."'>\n";echo"<p>".'Attachments'.": <input type='file' name='email_files[]' onchange=\"this.onchange = function () { }; var el = this.cloneNode(true); el.value = ''; this.parentNode.appendChild(el);\">","<p>".(count($qb)==1?'<input type="hidden" name="email_field" value="'.h(key($qb)).'">':html_select("email_field",$qb)),"<input type='submit' name='email' value='".'Send'."' onclick=\"return this.form['delete'].onclick();\">\n","</div>\n","</div></fieldset>\n";}}function |
426 | 871 | selectColumnsProcess($e,$t){return |
427 | 872 | array(array(),array());}function |
428 | -selectSearchProcess($m,$t){$K=array();foreach((array)$_GET["where"]as$x=>$Y){$La=$Y["col"];$Uc=$Y["op"];$V=$Y["val"];if(($x<0?"":$La).$V!=""){$Ra=array();foreach(($La!=""?array($La=>$m[$La]):$m)as$D=>$l){if($La!=""||is_numeric($V)||!preg_match('~int|float|double|decimal~',$l["type"])){$D=idf_escape($D);if($La!=""&&$l["type"]=="enum")$Ra[]=(in_array(0,$V)?"$D IS NULL OR ":"")."$D IN (".implode(", ",array_map('intval',$V)).")";else{$ie=preg_match('~char|text|enum|set~',$l["type"]);$W=$this->processInput($l,(!$Uc&&$ie&&preg_match('~^[^%]+$~',$V)?"%$V%":$V));$Ra[]=$D.($W=="NULL"?" IS".($Uc==">="?" NOT":"")." $W":(in_array($Uc,$this->operators)||$Uc=="="?" $Uc $W":($ie?" LIKE $W":" IN (".str_replace(",","', '",$W).")")));if($x<0&&$V=="0")$Ra[]="$D IS NULL";}}}$K[]=($Ra?"(".implode(" OR ",$Ra).")":"0");}}return$K;}function |
|
429 | -selectOrderProcess($m,$t){$jc=$_GET["index_order"];if($jc!="")unset($_GET["order"][1]);if($_GET["order"])return |
|
430 | -array(idf_escape(reset($_GET["order"])).($_GET["desc"]?" DESC":""));foreach(($jc!=""?array($t[$jc]):$t)as$s){if($jc!=""||$s["type"]=="INDEX"){$Xb=array_filter($s["descs"]);$db=false;foreach($s["columns"]as$V){if(preg_match('~date|timestamp~',$m[$V]["type"])){$db=true;break;}}$K=array();foreach($s["columns"]as$x=>$V)$K[]=idf_escape($V).(($Xb?$s["descs"][$x]:$db)?" DESC":"");return$K;}}return |
|
873 | +selectSearchProcess($m,$t){$K=array();foreach((array)$_GET["where"]as$x=>$Y){$La=$Y["col"];$Uc=$Y["op"];$V=$Y["val"];if(($x<0?"":$La).$V!=""){$Ra=array();foreach(($La!=""?array($La=>$m[$La]):$m)as$D=>$l){if($La!=""||is_numeric($V)||!preg_match('~int|float|double|decimal~',$l["type"])){$D=idf_escape($D);if($La!=""&&$l["type"]=="enum") { |
|
874 | + $Ra[]=(in_array(0,$V)?"$D IS NULL OR ":"")."$D IN (".implode(", ",array_map('intval',$V)).")"; |
|
875 | +} else{$ie=preg_match('~char|text|enum|set~',$l["type"]);$W=$this->processInput($l,(!$Uc&&$ie&&preg_match('~^[^%]+$~',$V)?"%$V%":$V));$Ra[]=$D.($W=="NULL"?" IS".($Uc==">="?" NOT":"")." $W":(in_array($Uc,$this->operators)||$Uc=="="?" $Uc $W":($ie?" LIKE $W":" IN (".str_replace(",","', '",$W).")")));if($x<0&&$V=="0") { |
|
876 | + $Ra[]="$D IS NULL"; |
|
877 | +} |
|
878 | +}}}$K[]=($Ra?"(".implode(" OR ",$Ra).")":"0");}}return$K;}function |
|
879 | +selectOrderProcess($m,$t){$jc=$_GET["index_order"];if($jc!="") { |
|
880 | + unset($_GET["order"][1]); |
|
881 | +} |
|
882 | +if($_GET["order"]) { |
|
883 | + return |
|
884 | +array(idf_escape(reset($_GET["order"])).($_GET["desc"]?" DESC":"")); |
|
885 | +} |
|
886 | +foreach(($jc!=""?array($t[$jc]):$t)as$s){if($jc!=""||$s["type"]=="INDEX"){$Xb=array_filter($s["descs"]);$db=false;foreach($s["columns"]as$V){if(preg_match('~date|timestamp~',$m[$V]["type"])){$db=true;break;}}$K=array();foreach($s["columns"]as$x=>$V) { |
|
887 | + $K[]=idf_escape($V).(($Xb?$s["descs"][$x]:$db)?" DESC":""); |
|
888 | +} |
|
889 | +return$K;}}return |
|
431 | 890 | array();}function |
432 | 891 | selectLimitProcess(){return(isset($_GET["limit"])?$_GET["limit"]:"50");}function |
433 | 892 | selectLengthProcess(){return"100";}function |
434 | -selectEmailProcess($Y,$Mb){if($_POST["email_append"])return |
|
435 | -true;if($_POST["email"]){$Jd=0;if($_POST["all"]||$_POST["check"]){$l=idf_escape($_POST["email_field"]);$Yd=$_POST["email_subject"];$B=$_POST["email_message"];preg_match_all('~\\{\\$([a-z0-9_]+)\\}~i',"$Yd.$B",$Bc);$M=get_rows("SELECT DISTINCT $l".($Bc[1]?", ".implode(", ",array_map('idf_escape',array_unique($Bc[1]))):"")." FROM ".table($_GET["select"])." WHERE $l IS NOT NULL AND $l != ''".($Y?" AND ".implode(" AND ",$Y):"").($_POST["all"]?"":" AND ((".implode(") OR (",array_map('where_check',(array)$_POST["check"]))."))"));$m=fields($_GET["select"]);foreach($this->rowDescriptions($M,$Mb)as$L){$_d=array('{\\'=>'{');foreach($Bc[1]as$V)$_d['{$'."$V}"]=$this->editVal($L[$V],$m[$V]);$pb=$L[$_POST["email_field"]];if(is_mail($pb)&&send_mail($pb,strtr($Yd,$_d),strtr($B,$_d),$_POST["email_from"],$_FILES["email_files"]))$Jd++;}}cookie("adminer_email",$_POST["email_from"]);redirect(remove_from_uri(),lang(array('%d e-mail has been sent.','%d e-mails have been sent.'),$Jd));}return |
|
893 | +selectEmailProcess($Y,$Mb){if($_POST["email_append"]) { |
|
894 | + return |
|
895 | +true; |
|
896 | +} |
|
897 | +if($_POST["email"]){$Jd=0;if($_POST["all"]||$_POST["check"]){$l=idf_escape($_POST["email_field"]);$Yd=$_POST["email_subject"];$B=$_POST["email_message"];preg_match_all('~\\{\\$([a-z0-9_]+)\\}~i',"$Yd.$B",$Bc);$M=get_rows("SELECT DISTINCT $l".($Bc[1]?", ".implode(", ",array_map('idf_escape',array_unique($Bc[1]))):"")." FROM ".table($_GET["select"])." WHERE $l IS NOT NULL AND $l != ''".($Y?" AND ".implode(" AND ",$Y):"").($_POST["all"]?"":" AND ((".implode(") OR (",array_map('where_check',(array)$_POST["check"]))."))"));$m=fields($_GET["select"]);foreach($this->rowDescriptions($M,$Mb)as$L){$_d=array('{\\'=>'{');foreach($Bc[1]as$V) { |
|
898 | + $_d['{$'."$V}"]=$this->editVal($L[$V],$m[$V]); |
|
899 | +} |
|
900 | +$pb=$L[$_POST["email_field"]];if(is_mail($pb)&&send_mail($pb,strtr($Yd,$_d),strtr($B,$_d),$_POST["email_from"],$_FILES["email_files"])) { |
|
901 | + $Jd++; |
|
902 | +} |
|
903 | +}}cookie("adminer_email",$_POST["email_from"]);redirect(remove_from_uri(),lang(array('%d e-mail has been sent.','%d e-mails have been sent.'),$Jd));}return |
|
436 | 904 | false;}function |
437 | 905 | selectQueryBuild($N,$Y,$p,$E,$y,$F){return"";}function |
438 | 906 | messageQuery($I,$je){return" <span class='time'>".@date("H:i:s")."</span><!--\n".str_replace("--","--><!-- ",$I)."\n".($je?"($je)\n":"")."-->";}function |
439 | -editFunctions($l){$K=array();if($l["null"]&&preg_match('~blob~',$l["type"]))$K["NULL"]='empty';$K[""]=($l["null"]||$l["auto_increment"]||like_bool($l)?"":"*");if(preg_match('~date|time~',$l["type"]))$K["now"]='now';if(preg_match('~_(md5|sha1)$~i',$l["field"],$A))$K[]=strtolower($A[1]);return$K;}function |
|
440 | -editInput($R,$l,$c,$W){if($l["type"]=="enum")return(isset($_GET["select"])?"<label><input type='radio'$c value='-1' checked><i>".'original'."</i></label> ":"").enum_input("radio",$c,$l,($W||isset($_GET["select"])?$W:0),($l["null"]?"":null));$Xc=$this->_foreignKeyOptions($R,$l["field"],$W);if($Xc!==null)return(is_array($Xc)?"<select$c>".optionlist($Xc,$W,true)."</select>":"<input value='".h($W)."'$c class='hidden'><input value='".h($Xc)."' class='jsonly' onkeyup=\"whisper('".h(ME."script=complete&source=".urlencode($R)."&field=".urlencode($l["field"]))."&value=', this);\"><div onclick='return whisperClick(event, this.previousSibling);'></div>");if(like_bool($l))return'<input type="checkbox" value="'.h($W?$W:1).'"'.($W?' checked':'')."$c>";$cc="";if(preg_match('~time~',$l["type"]))$cc='HH:MM:SS';if(preg_match('~date|timestamp~',$l["type"]))$cc='[yyyy]-mm-dd'.($cc?" [$cc]":"");if($cc)return"<input value='".h($W)."'$c> ($cc)";if(preg_match('~_(md5|sha1)$~i',$l["field"]))return"<input type='password' value='".h($W)."'$c>";return'';}function |
|
441 | -processInput($l,$W,$o=""){if($o=="now")return"$o()";$K=$W;if(preg_match('~date|timestamp~',$l["type"])&&preg_match('(^'.str_replace('\\$1','(?P<p1>\\d*)',preg_replace('~(\\\\\\$([2-6]))~','(?P<p\\2>\\d{1,2})',preg_quote('$1-$3-$5'))).'(.*))',$W,$A))$K=($A["p1"]!=""?$A["p1"]:($A["p2"]!=""?($A["p2"]<70?20:19).$A["p2"]:gmdate("Y")))."-$A[p3]$A[p4]-$A[p5]$A[p6]".end($A);$K=($l["type"]=="bit"&&preg_match('~^[0-9]+$~',$W)?$K:q($K));if($W==""&&like_bool($l))$K="0";elseif($W==""&&($l["null"]||!preg_match('~char|text~',$l["type"])))$K="NULL";elseif(preg_match('~^(md5|sha1)$~',$o))$K="$o($K)";return |
|
907 | +editFunctions($l){$K=array();if($l["null"]&&preg_match('~blob~',$l["type"])) { |
|
908 | + $K["NULL"]='empty'; |
|
909 | +} |
|
910 | +$K[""]=($l["null"]||$l["auto_increment"]||like_bool($l)?"":"*");if(preg_match('~date|time~',$l["type"])) { |
|
911 | + $K["now"]='now'; |
|
912 | +} |
|
913 | +if(preg_match('~_(md5|sha1)$~i',$l["field"],$A)) { |
|
914 | + $K[]=strtolower($A[1]); |
|
915 | +} |
|
916 | +return$K;}function |
|
917 | +editInput($R,$l,$c,$W){if($l["type"]=="enum") { |
|
918 | + return(isset($_GET["select"])?"<label><input type='radio'$c value='-1' checked><i>".'original'."</i></label> ":"").enum_input("radio",$c,$l,($W||isset($_GET["select"])?$W:0),($l["null"]?"":null)); |
|
919 | +} |
|
920 | +$Xc=$this->_foreignKeyOptions($R,$l["field"],$W);if($Xc!==null) { |
|
921 | + return(is_array($Xc)?"<select$c>".optionlist($Xc,$W,true)."</select>":"<input value='".h($W)."'$c class='hidden'><input value='".h($Xc)."' class='jsonly' onkeyup=\"whisper('".h(ME."script=complete&source=".urlencode($R)."&field=".urlencode($l["field"]))."&value=', this);\"><div onclick='return whisperClick(event, this.previousSibling);'></div>"); |
|
922 | +} |
|
923 | +if(like_bool($l)) { |
|
924 | + return'<input type="checkbox" value="'.h($W?$W:1).'"'.($W?' checked':'')."$c>"; |
|
925 | +} |
|
926 | +$cc="";if(preg_match('~time~',$l["type"])) { |
|
927 | + $cc='HH:MM:SS'; |
|
928 | +} |
|
929 | +if(preg_match('~date|timestamp~',$l["type"])) { |
|
930 | + $cc='[yyyy]-mm-dd'.($cc?" [$cc]":""); |
|
931 | +} |
|
932 | +if($cc) { |
|
933 | + return"<input value='".h($W)."'$c> ($cc)"; |
|
934 | +} |
|
935 | +if(preg_match('~_(md5|sha1)$~i',$l["field"])) { |
|
936 | + return"<input type='password' value='".h($W)."'$c>"; |
|
937 | +} |
|
938 | +return'';}function |
|
939 | +processInput($l,$W,$o=""){if($o=="now") { |
|
940 | + return"$o()"; |
|
941 | +} |
|
942 | +$K=$W;if(preg_match('~date|timestamp~',$l["type"])&&preg_match('(^'.str_replace('\\$1','(?P<p1>\\d*)',preg_replace('~(\\\\\\$([2-6]))~','(?P<p\\2>\\d{1,2})',preg_quote('$1-$3-$5'))).'(.*))',$W,$A)) { |
|
943 | + $K=($A["p1"]!=""?$A["p1"]:($A["p2"]!=""?($A["p2"]<70?20:19).$A["p2"]:gmdate("Y")))."-$A[p3]$A[p4]-$A[p5]$A[p6]".end($A); |
|
944 | +} |
|
945 | +$K=($l["type"]=="bit"&&preg_match('~^[0-9]+$~',$W)?$K:q($K));if($W==""&&like_bool($l)) { |
|
946 | + $K="0"; |
|
947 | +} elseif($W==""&&($l["null"]||!preg_match('~char|text~',$l["type"]))) { |
|
948 | + $K="NULL"; |
|
949 | +} elseif(preg_match('~^(md5|sha1)$~',$o)) { |
|
950 | + $K="$o($K)"; |
|
951 | +} |
|
952 | +return |
|
442 | 953 | unconvert_field($l,$K);}function |
443 | 954 | dumpOutput(){return |
444 | 955 | array();}function |
@@ -456,13 +967,24 @@ discard block |
||
456 | 967 | ',$this->name(),' <span class="version">',$ca,'</span> |
457 | 968 | <a href="https://www.adminer.org/editor/#download" target="_blank" id="version">',(version_compare($ca,$_COOKIE["adminer_version"])<0?h($_COOKIE["adminer_version"]):""),'</a> |
458 | 969 | </h1> |
459 | -';if($Ic=="auth"){$Ib=true;foreach((array)$_SESSION["pwds"]as$X=>$Nd){foreach($Nd[""]as$T=>$G){if($G!==null){if($Ib){echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";$Ib=false;}echo"<a href='".h(auth_url($X,"",$T))."'>".($T!=""?h($T):"<i>".'empty'."</i>")."</a><br>\n";}}}}else{$this->databasesPrint($Ic);if($Ic!="db"&&$Ic!="ns"){$S=table_status('',true);if(!$S)echo"<p class='message'>".'No tables.'."\n";else$this->tablesPrint($S);}}}function |
|
970 | +';if($Ic=="auth"){$Ib=true;foreach((array)$_SESSION["pwds"]as$X=>$Nd){foreach($Nd[""]as$T=>$G){if($G!==null){if($Ib){echo"<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";$Ib=false;}echo"<a href='".h(auth_url($X,"",$T))."'>".($T!=""?h($T):"<i>".'empty'."</i>")."</a><br>\n";}}}} else{$this->databasesPrint($Ic);if($Ic!="db"&&$Ic!="ns"){$S=table_status('',true);if(!$S) { |
|
971 | + echo"<p class='message'>".'No tables.'."\n"; |
|
972 | +} else { |
|
973 | + $this->tablesPrint($S); |
|
974 | +} |
|
975 | +}}}function |
|
460 | 976 | databasesPrint($Ic){}function |
461 | 977 | tablesPrint($ee){echo"<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";foreach($ee |
462 | -as$L){$D=$this->tableName($L);if(isset($L["Engine"])&&$D!="")echo"<a href='".h(ME).'select='.urlencode($L["Name"])."'".bold($_GET["select"]==$L["Name"]||$_GET["edit"]==$L["Name"],"select")." title='".'Select data'."'>$D</a><br>\n";}}function |
|
978 | +as$L){$D=$this->tableName($L);if(isset($L["Engine"])&&$D!="") { |
|
979 | + echo"<a href='".h(ME).'select='.urlencode($L["Name"])."'".bold($_GET["select"]==$L["Name"]||$_GET["edit"]==$L["Name"],"select")." title='".'Select data'."'>$D</a><br>\n"; |
|
980 | +} |
|
981 | +}}function |
|
463 | 982 | _foreignColumn($Mb,$d){foreach((array)$Mb[$d]as$Lb){if(count($Lb["source"])==1){$D=$this->rowDescription($Lb["table"]);if($D!=""){$r=idf_escape($Lb["target"][0]);return |
464 | 983 | array($Lb["table"],$r,$D);}}}}function |
465 | -_foreignKeyOptions($R,$d,$W=null){global$f;if(list($fe,$r,$D)=$this->_foreignColumn(column_foreign_keys($R),$d)){$K=&$this->_values[$fe];if($K===null){$S=table_status($fe);$K=($S["Rows"]>1000?"":array(""=>"")+get_key_vals("SELECT $r, $D FROM ".table($fe)." ORDER BY 2"));}if(!$K&&$W!==null)return$f->result("SELECT $D FROM ".table($fe)." WHERE $r = ".q($W));return$K;}}}$b=(function_exists('adminer_object')?adminer_object():new |
|
984 | +_foreignKeyOptions($R,$d,$W=null){global$f;if(list($fe,$r,$D)=$this->_foreignColumn(column_foreign_keys($R),$d)){$K=&$this->_values[$fe];if($K===null){$S=table_status($fe);$K=($S["Rows"]>1000?"":array(""=>"")+get_key_vals("SELECT $r, $D FROM ".table($fe)." ORDER BY 2"));}if(!$K&&$W!==null) { |
|
985 | + return$f->result("SELECT $D FROM ".table($fe)." WHERE $r = ".q($W)); |
|
986 | +} |
|
987 | +return$K;}}}$b=(function_exists('adminer_object')?adminer_object():new |
|
466 | 988 | Adminer);function |
467 | 989 | page_header($le,$k="",$Ca=array(),$me=""){global$ba,$ca,$b,$jb,$v;page_headers();if(is_ajax()&&$k){page_messages($k);exit;}$ne=$le.($me!=""?": $me":"");$oe=strip_tags($ne.(SERVER!=""&&SERVER!="localhost"?h(" - ".SERVER):"")." - ".$b->name());echo'<!DOCTYPE html> |
468 | 990 | <html lang="en" dir="ltr"> |
@@ -487,10 +1009,27 @@ discard block |
||
487 | 1009 | <div id="help" class="jush-',$v,' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div> |
488 | 1010 | |
489 | 1011 | <div id="content"> |
490 | -';if($Ca!==null){$z=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($z?$z:".").'">'.$jb[DRIVER].'</a> » ';$z=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=(SERVER!=""?h(SERVER):'Server');if($Ca===false)echo"$O\n";else{echo"<a href='".($z?h($z):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ca)))echo'<a href="'.h($z."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Ca)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Ca |
|
491 | -as$x=>$V){$db=(is_array($V)?$V[1]:h($V));if($db!="")echo"<a href='".h(ME."$x=").urlencode(is_array($V)?$V[0]:$V)."'>$db</a> » ";}}echo"$le\n";}}echo"<h2>$ne</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($k);$ab=&get_session("dbs");if(DB!=""&&$ab&&!in_array(DB,$ab,true))$ab=null;stop_session();define("PAGE_HEADER",1);}function |
|
1012 | +';if($Ca!==null){$z=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($z?$z:".").'">'.$jb[DRIVER].'</a> » ';$z=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$O=(SERVER!=""?h(SERVER):'Server');if($Ca===false) { |
|
1013 | + echo"$O\n"; |
|
1014 | +} else{echo"<a href='".($z?h($z):".")."' accesskey='1' title='Alt+Shift+1'>$O</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Ca))) { |
|
1015 | + echo'<a href="'.h($z."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » '; |
|
1016 | +} |
|
1017 | +if(is_array($Ca)){if($_GET["ns"]!="") { |
|
1018 | + echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » '; |
|
1019 | +} |
|
1020 | +foreach($Ca |
|
1021 | +as$x=>$V){$db=(is_array($V)?$V[1]:h($V));if($db!="") { |
|
1022 | + echo"<a href='".h(ME."$x=").urlencode(is_array($V)?$V[0]:$V)."'>$db</a> » "; |
|
1023 | +} |
|
1024 | +}}echo"$le\n";}}echo"<h2>$ne</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($k);$ab=&get_session("dbs");if(DB!=""&&$ab&&!in_array(DB,$ab,true)) { |
|
1025 | + $ab=null; |
|
1026 | +} |
|
1027 | +stop_session();define("PAGE_HEADER",1);}function |
|
492 | 1028 | page_headers(){global$b;header("Content-Type: text/html; charset=utf-8");header("Cache-Control: no-cache");if($b->headers()){header("X-Frame-Options: deny");header("X-XSS-Protection: 0");}}function |
493 | -page_messages($k){$Ee=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Hc=$_SESSION["messages"][$Ee];if($Hc){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Hc)."</div>\n";unset($_SESSION["messages"][$Ee]);}if($k)echo"<div class='error'>$k</div>\n";}function |
|
1029 | +page_messages($k){$Ee=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$Hc=$_SESSION["messages"][$Ee];if($Hc){echo"<div class='message'>".implode("</div>\n<div class='message'>",$Hc)."</div>\n";unset($_SESSION["messages"][$Ee]);}if($k) { |
|
1030 | + echo"<div class='error'>$k</div>\n"; |
|
1031 | +} |
|
1032 | +}function |
|
494 | 1033 | page_footer($Ic=""){global$b,$qe;echo'</div> |
495 | 1034 | |
496 | 1035 | ';if($Ic!="auth"){echo'<form action="" method="post"> |
@@ -503,48 +1042,277 @@ discard block |
||
503 | 1042 | ';$b->navigation($Ic);echo'</div> |
504 | 1043 | <script type="text/javascript">setupSubmitHighlight(document);</script> |
505 | 1044 | ';}function |
506 | -int32($C){while($C>=2147483648)$C-=4294967296;while($C<=-2147483649)$C+=4294967296;return(int)$C;}function |
|
1045 | +int32($C){while($C>=2147483648) { |
|
1046 | + $C-=4294967296; |
|
1047 | +} |
|
1048 | +while($C<=-2147483649) { |
|
1049 | + $C+=4294967296; |
|
1050 | +} |
|
1051 | +return(int)$C;}function |
|
507 | 1052 | long2str($U,$Ke){$Ed='';foreach($U |
508 | -as$V)$Ed.=pack('V',$V);if($Ke)return |
|
509 | -substr($Ed,0,end($U));return$Ed;}function |
|
510 | -str2long($Ed,$Ke){$U=array_values(unpack('V*',str_pad($Ed,4*ceil(strlen($Ed)/4),"\0")));if($Ke)$U[]=strlen($Ed);return$U;}function |
|
1053 | +as$V) { |
|
1054 | + $Ed.=pack('V',$V); |
|
1055 | +} |
|
1056 | +if($Ke) { |
|
1057 | + return |
|
1058 | +substr($Ed,0,end($U)); |
|
1059 | +} |
|
1060 | +return$Ed;}function |
|
1061 | +str2long($Ed,$Ke){$U=array_values(unpack('V*',str_pad($Ed,4*ceil(strlen($Ed)/4),"\0")));if($Ke) { |
|
1062 | + $U[]=strlen($Ed); |
|
1063 | +} |
|
1064 | +return$U;}function |
|
511 | 1065 | xxtea_mx($Z,$Oe,$ae,$w){return |
512 | 1066 | int32((($Z>>5&0x7FFFFFF)^$Oe<<2)+(($Oe>>3&0x1FFFFFFF)^$Z<<4))^int32(($ae^$Oe)+($w^$Z));}function |
513 | -encrypt_string($Vd,$x){if($Vd=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,true);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=0;while($rd-->0){$ae=int32($ae+0x9E3779B9);$lb=$ae>>2&3;for($cd=0;$cd<$C;$cd++){$Oe=$U[$cd+1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$cd]+$Kc);$U[$cd]=$Z;}$Oe=$U[0];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$C]+$Kc);$U[$C]=$Z;}return |
|
1067 | +encrypt_string($Vd,$x){if($Vd=="") { |
|
1068 | + return""; |
|
1069 | +} |
|
1070 | +$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,true);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=0;while($rd-->0){$ae=int32($ae+0x9E3779B9);$lb=$ae>>2&3;for($cd=0;$cd<$C;$cd++){$Oe=$U[$cd+1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$cd]+$Kc);$U[$cd]=$Z;}$Oe=$U[0];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Z=int32($U[$C]+$Kc);$U[$C]=$Z;}return |
|
514 | 1071 | long2str($U,false);}function |
515 | -decrypt_string($Vd,$x){if($Vd=="")return"";if(!$x)return |
|
516 | -false;$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,false);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=int32($rd*0x9E3779B9);while($ae){$lb=$ae>>2&3;for($cd=$C;$cd>0;$cd--){$Z=$U[$cd-1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[$cd]-$Kc);$U[$cd]=$Oe;}$Z=$U[$C];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[0]-$Kc);$U[0]=$Oe;$ae=int32($ae-0x9E3779B9);}return |
|
517 | -long2str($U,true);}$f='';$Zb=$_SESSION["token"];if(!$Zb)$_SESSION["token"]=rand(1,1e6);$qe=get_token();$gd=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$V){list($x)=explode(":",$V);$gd[$x]=$V;}}function |
|
518 | -add_invalid_login(){global$b;$Fb=get_temp_dir()."/adminer.invalid";$Rb=@fopen($Fb,"r+");if(!$Rb){$Rb=@fopen($Fb,"w");if(!$Rb)return;}flock($Rb,LOCK_EX);$oc=unserialize(stream_get_contents($Rb));$je=time();if($oc){foreach($oc |
|
519 | -as$pc=>$V){if($V[0]<$je)unset($oc[$pc]);}}$nc=&$oc[$b->bruteForceKey()];if(!$nc)$nc=array($je+30*60,0);$nc[1]++;$Ld=serialize($oc);rewind($Rb);fwrite($Rb,$Ld);ftruncate($Rb,strlen($Ld));flock($Rb,LOCK_UN);fclose($Rb);}$ra=$_POST["auth"];if($ra){$oc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$nc=$oc[$b->bruteForceKey()];$Mc=($nc[1]>30?$nc[0]-time():0);if($Mc>0)auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Mc/60)));session_regenerate_id();$X=$ra["driver"];$O=$ra["server"];$T=$ra["username"];$G=(string)$ra["password"];$h=$ra["db"];set_password($X,$O,$T,$G);$_SESSION["db"][$X][$O][$T][$h]=true;if($ra["permanent"]){$x=base64_encode($X)."-".base64_encode($O)."-".base64_encode($T)."-".base64_encode($h);$od=$b->permanentLogin(true);$gd[$x]="$x:".base64_encode($od?encrypt_string($G,$od):"");cookie("adminer_permanent",implode(" ",$gd));}if(count($_POST)==1||DRIVER!=$X||SERVER!=$O||$_GET["username"]!==$T||DB!=$h)redirect(auth_url($X,$O,$T,$h));}elseif($_POST["logout"]){if($Zb&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;}else{foreach(array("pwds","db","dbs","queries")as$x)set_session($x,null);unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}}elseif($gd&&!$_SESSION["pwds"]){session_regenerate_id();$od=$b->permanentLogin();foreach($gd |
|
1072 | +decrypt_string($Vd,$x){if($Vd=="") { |
|
1073 | + return""; |
|
1074 | +} |
|
1075 | +if(!$x) { |
|
1076 | + return |
|
1077 | +false; |
|
1078 | +} |
|
1079 | +$x=array_values(unpack("V*",pack("H*",md5($x))));$U=str2long($Vd,false);$C=count($U)-1;$Z=$U[$C];$Oe=$U[0];$rd=floor(6+52/($C+1));$ae=int32($rd*0x9E3779B9);while($ae){$lb=$ae>>2&3;for($cd=$C;$cd>0;$cd--){$Z=$U[$cd-1];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[$cd]-$Kc);$U[$cd]=$Oe;}$Z=$U[$C];$Kc=xxtea_mx($Z,$Oe,$ae,$x[$cd&3^$lb]);$Oe=int32($U[0]-$Kc);$U[0]=$Oe;$ae=int32($ae-0x9E3779B9);}return |
|
1080 | +long2str($U,true);}$f='';$Zb=$_SESSION["token"];if(!$Zb) { |
|
1081 | + $_SESSION["token"]=rand(1,1e6); |
|
1082 | +} |
|
1083 | +$qe=get_token();$gd=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$V){list($x)=explode(":",$V);$gd[$x]=$V;}}function |
|
1084 | +add_invalid_login(){global$b;$Fb=get_temp_dir()."/adminer.invalid";$Rb=@fopen($Fb,"r+");if(!$Rb){$Rb=@fopen($Fb,"w");if(!$Rb) { |
|
1085 | + return; |
|
1086 | +} |
|
1087 | +}flock($Rb,LOCK_EX);$oc=unserialize(stream_get_contents($Rb));$je=time();if($oc){foreach($oc |
|
1088 | +as$pc=>$V){if($V[0]<$je) { |
|
1089 | + unset($oc[$pc]); |
|
1090 | +} |
|
1091 | +}}$nc=&$oc[$b->bruteForceKey()];if(!$nc) { |
|
1092 | + $nc=array($je+30*60,0); |
|
1093 | +} |
|
1094 | +$nc[1]++;$Ld=serialize($oc);rewind($Rb);fwrite($Rb,$Ld);ftruncate($Rb,strlen($Ld));flock($Rb,LOCK_UN);fclose($Rb);}$ra=$_POST["auth"];if($ra){$oc=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$nc=$oc[$b->bruteForceKey()];$Mc=($nc[1]>30?$nc[0]-time():0);if($Mc>0) { |
|
1095 | + auth_error(lang(array('Too many unsuccessful logins, try again in %d minute.','Too many unsuccessful logins, try again in %d minutes.'),ceil($Mc/60))); |
|
1096 | +} |
|
1097 | +session_regenerate_id();$X=$ra["driver"];$O=$ra["server"];$T=$ra["username"];$G=(string)$ra["password"];$h=$ra["db"];set_password($X,$O,$T,$G);$_SESSION["db"][$X][$O][$T][$h]=true;if($ra["permanent"]){$x=base64_encode($X)."-".base64_encode($O)."-".base64_encode($T)."-".base64_encode($h);$od=$b->permanentLogin(true);$gd[$x]="$x:".base64_encode($od?encrypt_string($G,$od):"");cookie("adminer_permanent",implode(" ",$gd));}if(count($_POST)==1||DRIVER!=$X||SERVER!=$O||$_GET["username"]!==$T||DB!=$h) { |
|
1098 | + redirect(auth_url($X,$O,$T,$h)); |
|
1099 | +} |
|
1100 | +} elseif($_POST["logout"]){if($Zb&&!verify_token()){page_header('Logout','Invalid CSRF token. Send the form again.');page_footer("db");exit;} else{foreach(array("pwds","db","dbs","queries")as$x) { |
|
1101 | + set_session($x,null); |
|
1102 | +} |
|
1103 | +unset_permanent();redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1),'Logout successful.');}} elseif($gd&&!$_SESSION["pwds"]){session_regenerate_id();$od=$b->permanentLogin();foreach($gd |
|
520 | 1104 | as$x=>$V){list(,$Ha)=explode(":",$V);list($X,$O,$T,$h)=array_map('base64_decode',explode("-",$x));set_password($X,$O,$T,decrypt_string(base64_decode($Ha),$od));$_SESSION["db"][$X][$O][$T][$h]=true;}}function |
521 | 1105 | unset_permanent(){global$gd;foreach($gd |
522 | -as$x=>$V){list($X,$O,$T,$h)=array_map('base64_decode',explode("-",$x));if($X==DRIVER&&$O==SERVER&&$T==$_GET["username"]&&$h==DB)unset($gd[$x]);}cookie("adminer_permanent",implode(" ",$gd));}function |
|
523 | -auth_error($k){global$b,$Zb;$k=h($k);$Od=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Od]||$_GET[$Od])&&!$Zb)$k='Session expired, please login again.';else{add_invalid_login();$G=get_password();if($G!==null){if($G===false)$k.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.','<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$Od]&&$_GET[$Od]&&ini_bool("session.use_only_cookies"))$k='Session support must be enabled.';$ed=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$ed["lifetime"]);page_header('Login',$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$kd)),false);page_footer("auth");exit;}$f=connect();}$i=new |
|
524 | -Min_Driver($f);if(!is_object($f)||($_c=$b->login($_GET["username"],get_password()))!==true)auth_error((is_string($f)?$f:(is_string($_c)?$_c:'Invalid credentials.')));if($ra&&$_POST["token"])$_POST["token"]=$qe;$k='';if($_POST){if(!verify_token()){$kc="max_input_vars";$Fc=ini_get($kc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$V=ini_get($x);if($V&&(!$Fc||$V<$Fc)){$kc=$x;$Fc=$V;}}}$k=(!$_POST["token"]&&$Fc?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$kc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$k=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"]))$k.=' '.'You can upload a big SQL file via FTP and import it from server.';}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false)session_write_close();function |
|
1106 | +as$x=>$V){list($X,$O,$T,$h)=array_map('base64_decode',explode("-",$x));if($X==DRIVER&&$O==SERVER&&$T==$_GET["username"]&&$h==DB) { |
|
1107 | + unset($gd[$x]); |
|
1108 | +} |
|
1109 | +}cookie("adminer_permanent",implode(" ",$gd));}function |
|
1110 | +auth_error($k){global$b,$Zb;$k=h($k);$Od=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$Od]||$_GET[$Od])&&!$Zb) { |
|
1111 | + $k='Session expired, please login again.'; |
|
1112 | +} else{add_invalid_login();$G=get_password();if($G!==null){if($G===false) { |
|
1113 | + $k.='<br>'.sprintf('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.','<code>permanentLogin()</code>'); |
|
1114 | +} |
|
1115 | +set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$Od]&&$_GET[$Od]&&ini_bool("session.use_only_cookies")) { |
|
1116 | + $k='Session support must be enabled.'; |
|
1117 | +} |
|
1118 | +$ed=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$ed["lifetime"]);page_header('Login',$k,null);echo"<form action='' method='post'>\n";$b->loginForm();echo"<div>";hidden_fields($_POST,array("auth"));echo"</div>\n","</form>\n";page_footer("auth");exit;}if(isset($_GET["username"])){if(!class_exists("Min_DB")){unset($_SESSION["pwds"][DRIVER]);unset_permanent();page_header('No extension',sprintf('None of the supported PHP extensions (%s) are available.',implode(", ",$kd)),false);page_footer("auth");exit;}$f=connect();}$i=new |
|
1119 | +Min_Driver($f);if(!is_object($f)||($_c=$b->login($_GET["username"],get_password()))!==true) { |
|
1120 | + auth_error((is_string($f)?$f:(is_string($_c)?$_c:'Invalid credentials.'))); |
|
1121 | +} |
|
1122 | +if($ra&&$_POST["token"]) { |
|
1123 | + $_POST["token"]=$qe; |
|
1124 | +} |
|
1125 | +$k='';if($_POST){if(!verify_token()){$kc="max_input_vars";$Fc=ini_get($kc);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$V=ini_get($x);if($V&&(!$Fc||$V<$Fc)){$kc=$x;$Fc=$V;}}}$k=(!$_POST["token"]&&$Fc?sprintf('Maximum number of allowed fields exceeded. Please increase %s.',"'$kc'"):'Invalid CSRF token. Send the form again.'.' '.'If you did not send this request from Adminer then close this page.');}} elseif($_SERVER["REQUEST_METHOD"]=="POST"){$k=sprintf('Too big POST data. Reduce the data or increase the %s configuration directive.',"'post_max_size'");if(isset($_GET["sql"])) { |
|
1126 | + $k.=' '.'You can upload a big SQL file via FTP and import it from server.'; |
|
1127 | +} |
|
1128 | +}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false) { |
|
1129 | + session_write_close(); |
|
1130 | +} |
|
1131 | +function |
|
525 | 1132 | email_header($ac){return"=?UTF-8?B?".base64_encode($ac)."?=";}function |
526 | -send_mail($pb,$Yd,$B,$Sb="",$Gb=array()){$j=(DIRECTORY_SEPARATOR=="/"?"\n":"\r\n");$B=str_replace("\n",$j,wordwrap(str_replace("\r","","$B\n")));$Ba=uniqid("boundary");$qa="";foreach((array)$Gb["error"]as$x=>$V){if(!$V)$qa.="--$Ba$j"."Content-Type: ".str_replace("\n","",$Gb["type"][$x]).$j."Content-Disposition: attachment; filename=\"".preg_replace('~["\\n]~','',$Gb["name"][$x])."\"$j"."Content-Transfer-Encoding: base64$j$j".chunk_split(base64_encode(file_get_contents($Gb["tmp_name"][$x])),76,$j).$j;}$ya="";$bc="Content-Type: text/plain; charset=utf-8$j"."Content-Transfer-Encoding: 8bit";if($qa){$qa.="--$Ba--$j";$ya="--$Ba$j$bc$j$j";$bc="Content-Type: multipart/mixed; boundary=\"$Ba\"";}$bc.=$j."MIME-Version: 1.0$j"."X-Mailer: Adminer Editor".($Sb?$j."From: ".str_replace("\n","",$Sb):"");return |
|
1133 | +send_mail($pb,$Yd,$B,$Sb="",$Gb=array()){$j=(DIRECTORY_SEPARATOR=="/"?"\n":"\r\n");$B=str_replace("\n",$j,wordwrap(str_replace("\r","","$B\n")));$Ba=uniqid("boundary");$qa="";foreach((array)$Gb["error"]as$x=>$V){if(!$V) { |
|
1134 | + $qa.="--$Ba$j"."Content-Type: ".str_replace("\n","",$Gb["type"][$x]).$j."Content-Disposition: attachment; filename=\"".preg_replace('~["\\n]~','',$Gb["name"][$x])."\"$j"."Content-Transfer-Encoding: base64$j$j".chunk_split(base64_encode(file_get_contents($Gb["tmp_name"][$x])),76,$j).$j; |
|
1135 | +} |
|
1136 | +}$ya="";$bc="Content-Type: text/plain; charset=utf-8$j"."Content-Transfer-Encoding: 8bit";if($qa){$qa.="--$Ba--$j";$ya="--$Ba$j$bc$j$j";$bc="Content-Type: multipart/mixed; boundary=\"$Ba\"";}$bc.=$j."MIME-Version: 1.0$j"."X-Mailer: Adminer Editor".($Sb?$j."From: ".str_replace("\n","",$Sb):"");return |
|
527 | 1137 | mail($pb,email_header($Yd),$ya.$B.$qa,$bc);}function |
528 | 1138 | like_bool($l){return |
529 | -preg_match("~bool|(tinyint|bit)\\(1\\)~",$l["full_type"]);}$f->select_db($b->database());$Rc="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";$jb[DRIVER]='Login';if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["download"])){$a=$_GET["download"];$m=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$i->select($a,$N,array(where($_GET,$m)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$m=fields($a);$Y=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$m):""):where($_GET,$m));$De=(isset($_GET["select"])?$_POST["edit"]:$Y);foreach($m |
|
530 | -as$D=>$l){if(!isset($l["privileges"][$De?"update":"insert"])||$b->fieldName($l)=="")unset($m[$D]);}if($_POST&&!$k&&!isset($_GET["select"])){$_=$_POST["referer"];if($_POST["insert"])$_=($De?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$_))$_=ME."select=".urlencode($a);$t=indexes($a);$ze=unique_array($_GET["where"],$t);$ud="\nWHERE $Y";if(isset($_POST["delete"]))queries_redirect($_,'Item has been deleted.',$i->delete($a,$ud,!$ze));else{$P=array();foreach($m |
|
531 | -as$D=>$l){$V=process_input($l);if($V!==false&&$V!==null)$P[idf_escape($D)]=$V;}if($De){if(!$P)redirect($_);queries_redirect($_,'Item has been updated.',$i->update($a,$P,$ud,!$ze));if(is_ajax()){page_headers();page_messages($k);exit;}}else{$J=$i->insert($a,$P);$vc=($J?last_id():0);queries_redirect($_,sprintf('Item%s has been inserted.',($vc?" $vc":"")),$J);}}}$L=null;if($_POST["save"])$L=(array)$_POST["fields"];elseif($Y){$N=array();foreach($m |
|
532 | -as$D=>$l){if(isset($l["privileges"]["select"])){$oa=convert_field($l);if($_POST["clone"]&&$l["auto_increment"])$oa="''";if($v=="sql"&&preg_match("~enum|set~",$l["type"]))$oa="1*".idf_escape($D);$N[]=($oa?"$oa AS ":"").idf_escape($D);}}$L=array();if(!support("table"))$N=array("*");if($N){$J=$i->select($a,$N,array($Y),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L)$L=false;if(isset($_GET["select"])&&(!$L||$J->fetch_assoc()))$L=null;}}if(!support("table")&&!$m){if(!$Y){$J=$i->select($a,array("*"),$Y,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L)$L=array($i->primary=>"");}if($L){foreach($L |
|
533 | -as$x=>$V){if(!$Y)$L[$x]=null;$m[$x]=array("field"=>$x,"null"=>($x!=$i->primary),"auto_increment"=>($x==$i->primary));}}}edit_form($a,$m,$L,$De);}elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$t=indexes($a);$m=fields($a);$Ob=column_foreign_keys($a);$Qc="";if($S["Oid"]){$Qc=($v=="sqlite"?"rowid":"oid");$t[]=array("type"=>"PRIMARY","columns"=>array($Qc));}parse_str($_COOKIE["adminer_import"],$ia);$Dd=array();$e=array();$he=null;foreach($m |
|
534 | -as$x=>$l){$D=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$D!=""){$e[$x]=html_entity_decode(strip_tags($D),ENT_QUOTES);if(is_shortable($l))$he=$b->selectLengthProcess();}$Dd+=$l["privileges"];}list($N,$p)=$b->selectColumnsProcess($e,$t);$u=count($p)<count($N);$Y=$b->selectSearchProcess($m,$t);$E=$b->selectOrderProcess($m,$t);$y=$b->selectLimitProcess();$Sb=($N?implode(", ",$N):"*".($Qc?", $Qc":"")).convert_fields($e,$m,$N)."\nFROM ".table($a);$Ub=($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$_e=>$L){$oa=convert_field($m[key($L)]);$N=array($oa?$oa:idf_escape(key($L)));$Y[]=where_check($_e,$m);$K=$i->select($a,$N,$Y,$N);if($K)echo |
|
535 | -reset($K->fetch_row());}exit;}if($_POST&&!$k){$Me=$Y;if(!$_POST["all"]&&is_array($_POST["check"])){$Ga=array();foreach($_POST["check"]as$Ea)$Ga[]=where_check($Ea,$m);$Me[]="((".implode(") OR (",$Ga)."))";}$Me=($Me?"\nWHERE ".implode(" AND ",$Me):"");$md=$Be=null;foreach($t |
|
1139 | +preg_match("~bool|(tinyint|bit)\\(1\\)~",$l["full_type"]);}$f->select_db($b->database());$Rc="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";$jb[DRIVER]='Login';if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"]) { |
|
1140 | + $_GET["edit"]=$_GET["select"]; |
|
1141 | +} |
|
1142 | +if(isset($_GET["download"])){$a=$_GET["download"];$m=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$N=array(idf_escape($_GET["field"]));$J=$i->select($a,$N,array(where($_GET,$m)),$N);$L=($J?$J->fetch_row():array());echo$L[0];exit;} elseif(isset($_GET["edit"])){$a=$_GET["edit"];$m=fields($a);$Y=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$m):""):where($_GET,$m));$De=(isset($_GET["select"])?$_POST["edit"]:$Y);foreach($m |
|
1143 | +as$D=>$l){if(!isset($l["privileges"][$De?"update":"insert"])||$b->fieldName($l)=="") { |
|
1144 | + unset($m[$D]); |
|
1145 | +} |
|
1146 | +}if($_POST&&!$k&&!isset($_GET["select"])){$_=$_POST["referer"];if($_POST["insert"]) { |
|
1147 | + $_=($De?null:$_SERVER["REQUEST_URI"]); |
|
1148 | +} elseif(!preg_match('~^.+&select=.+$~',$_)) { |
|
1149 | + $_=ME."select=".urlencode($a); |
|
1150 | +} |
|
1151 | +$t=indexes($a);$ze=unique_array($_GET["where"],$t);$ud="\nWHERE $Y";if(isset($_POST["delete"])) { |
|
1152 | + queries_redirect($_,'Item has been deleted.',$i->delete($a,$ud,!$ze)); |
|
1153 | +} else{$P=array();foreach($m |
|
1154 | +as$D=>$l){$V=process_input($l);if($V!==false&&$V!==null) { |
|
1155 | + $P[idf_escape($D)]=$V; |
|
1156 | +} |
|
1157 | +}if($De){if(!$P) { |
|
1158 | + redirect($_); |
|
1159 | +} |
|
1160 | +queries_redirect($_,'Item has been updated.',$i->update($a,$P,$ud,!$ze));if(is_ajax()){page_headers();page_messages($k);exit;}} else{$J=$i->insert($a,$P);$vc=($J?last_id():0);queries_redirect($_,sprintf('Item%s has been inserted.',($vc?" $vc":"")),$J);}}}$L=null;if($_POST["save"]) { |
|
1161 | + $L=(array)$_POST["fields"]; |
|
1162 | +} elseif($Y){$N=array();foreach($m |
|
1163 | +as$D=>$l){if(isset($l["privileges"]["select"])){$oa=convert_field($l);if($_POST["clone"]&&$l["auto_increment"]) { |
|
1164 | + $oa="''"; |
|
1165 | +} |
|
1166 | +if($v=="sql"&&preg_match("~enum|set~",$l["type"])) { |
|
1167 | + $oa="1*".idf_escape($D); |
|
1168 | +} |
|
1169 | +$N[]=($oa?"$oa AS ":"").idf_escape($D);}}$L=array();if(!support("table")) { |
|
1170 | + $N=array("*"); |
|
1171 | +} |
|
1172 | +if($N){$J=$i->select($a,$N,array($Y),$N,array(),(isset($_GET["select"])?2:1));$L=$J->fetch_assoc();if(!$L) { |
|
1173 | + $L=false; |
|
1174 | +} |
|
1175 | +if(isset($_GET["select"])&&(!$L||$J->fetch_assoc())) { |
|
1176 | + $L=null; |
|
1177 | +} |
|
1178 | +}}if(!support("table")&&!$m){if(!$Y){$J=$i->select($a,array("*"),$Y,array("*"));$L=($J?$J->fetch_assoc():false);if(!$L) { |
|
1179 | + $L=array($i->primary=>""); |
|
1180 | +} |
|
1181 | +}if($L){foreach($L |
|
1182 | +as$x=>$V){if(!$Y) { |
|
1183 | + $L[$x]=null; |
|
1184 | +} |
|
1185 | +$m[$x]=array("field"=>$x,"null"=>($x!=$i->primary),"auto_increment"=>($x==$i->primary));}}}edit_form($a,$m,$L,$De);} elseif(isset($_GET["select"])){$a=$_GET["select"];$S=table_status1($a);$t=indexes($a);$m=fields($a);$Ob=column_foreign_keys($a);$Qc="";if($S["Oid"]){$Qc=($v=="sqlite"?"rowid":"oid");$t[]=array("type"=>"PRIMARY","columns"=>array($Qc));}parse_str($_COOKIE["adminer_import"],$ia);$Dd=array();$e=array();$he=null;foreach($m |
|
1186 | +as$x=>$l){$D=$b->fieldName($l);if(isset($l["privileges"]["select"])&&$D!=""){$e[$x]=html_entity_decode(strip_tags($D),ENT_QUOTES);if(is_shortable($l)) { |
|
1187 | + $he=$b->selectLengthProcess(); |
|
1188 | +} |
|
1189 | +}$Dd+=$l["privileges"];}list($N,$p)=$b->selectColumnsProcess($e,$t);$u=count($p)<count($N);$Y=$b->selectSearchProcess($m,$t);$E=$b->selectOrderProcess($m,$t);$y=$b->selectLimitProcess();$Sb=($N?implode(", ",$N):"*".($Qc?", $Qc":"")).convert_fields($e,$m,$N)."\nFROM ".table($a);$Ub=($p&&$u?"\nGROUP BY ".implode(", ",$p):"").($E?"\nORDER BY ".implode(", ",$E):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$_e=>$L){$oa=convert_field($m[key($L)]);$N=array($oa?$oa:idf_escape(key($L)));$Y[]=where_check($_e,$m);$K=$i->select($a,$N,$Y,$N);if($K) { |
|
1190 | + echo |
|
1191 | +reset($K->fetch_row()); |
|
1192 | +} |
|
1193 | +}exit;}if($_POST&&!$k){$Me=$Y;if(!$_POST["all"]&&is_array($_POST["check"])){$Ga=array();foreach($_POST["check"]as$Ea) { |
|
1194 | + $Ga[]=where_check($Ea,$m); |
|
1195 | +} |
|
1196 | +$Me[]="((".implode(") OR (",$Ga)."))";}$Me=($Me?"\nWHERE ".implode(" AND ",$Me):"");$md=$Be=null;foreach($t |
|
536 | 1197 | as$s){if($s["type"]=="PRIMARY"){$md=array_flip($s["columns"]);$Be=($N?$md:array());break;}}foreach((array)$Be |
537 | -as$x=>$V){if(in_array(idf_escape($x),$N))unset($Be[$x]);}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$Be===array())$I="SELECT $Sb$Me$Ub";else{$ye=array();foreach($_POST["check"]as$V)$ye[]="(SELECT".limit($Sb,"\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m).$Ub,1).")";$I=implode(" UNION ALL ",$ye);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Y,$Ob)){if($_POST["save"]||$_POST["delete"]){$J=true;$ja=0;$P=array();if(!$_POST["delete"]){foreach($e |
|
538 | -as$D=>$V){$V=process_input($m[$D]);if($V!==null&&($_POST["clone"]||$V!==false))$P[idf_escape($D)]=($V!==false?$V:idf_escape($D));}}if($_POST["delete"]||$P){if($_POST["clone"])$I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a);if($_POST["all"]||($Be===array()&&is_array($_POST["check"]))||$u){$J=($_POST["delete"]?$i->delete($a,$Me):($_POST["clone"]?queries("INSERT $I$Me"):$i->update($a,$P,$Me)));$ja=$f->affected_rows;}else{foreach((array)$_POST["check"]as$V){$Le="\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m);$J=($_POST["delete"]?$i->delete($a,$Le,1):($_POST["clone"]?queries("INSERT".limit1($I,$Le)):$i->update($a,$P,$Le)));if(!$J)break;$ja+=$f->affected_rows;}}}$B=lang(array('%d item has been affected.','%d items have been affected.'),$ja);if($_POST["clone"]&&$J&&$ja==1){$vc=last_id();if($vc)$B=sprintf('Item%s has been inserted.'," $vc");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$B,$J);if(!$_POST["delete"]){edit_form($a,$m,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$k='Ctrl+click on a value to modify it.';else{$J=true;$ja=0;foreach($_POST["val"]as$_e=>$L){$P=array();foreach($L |
|
539 | -as$x=>$V){$x=bracket_escape($x,1);$P[idf_escape($x)]=(preg_match('~char|text~',$m[$x]["type"])||$V!=""?$b->processInput($m[$x],$V):"NULL");}$J=$i->update($a,$P," WHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($_e,$m),!($u||$Be===array())," ");if(!$J)break;$ja+=$f->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$ja),$J);}}elseif(!is_string($Eb=get_file("csv_file",true)))$k=upload_error($Eb);elseif(!preg_match('~~u',$Eb))$k='File must be in UTF-8 encoding.';else{cookie("adminer_import","output=".urlencode($ia["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Oa=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$Eb,$Bc);$ja=count($Bc[0]);$i->begin();$Kd=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($Bc[0]as$x=>$V){preg_match_all("~((?>\"[^\"]*\")+|[^$Kd]*)$Kd~",$V.$Kd,$Cc);if(!$x&&!array_diff($Cc[1],$Oa)){$Oa=$Cc[1];$ja--;}else{$P=array();foreach($Cc[1]as$q=>$La)$P[idf_escape($Oa[$q])]=($La==""&&$m[$Oa[$q]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$La))));$M[]=$P;}}$J=(!$M||$i->insertUpdate($a,$M,$md));if($J)$i->commit();queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$ja),$J);$i->rollback();}}}$de=$b->tableName($S);if(is_ajax()){page_headers();ob_start();}else |
|
540 | -page_header('Select'.": $de",$k);$P=null;if(isset($Dd["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$V){if(count($Ob[$V["col"]])==1&&($V["op"]=="="||(!$V["op"]&&!preg_match('~[_%]~',$V["val"]))))$P.="&set".urlencode("[".bracket_escape($V["col"])."]")."=".urlencode($V["val"]);}}$b->selectLinks($S,$P);if(!$e&&support("table"))echo"<p class='error'>".'Unable to select the table'.($m?".":": ".error())."\n";else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($N,$e);$b->selectSearchPrint($Y,$e,$t);$b->selectOrderPrint($E,$e,$t);$b->selectLimitPrint($y);$b->selectLengthPrint($he);$b->selectActionPrint($t);echo"</form>\n";$F=$_GET["page"];if($F=="last"){$n=$f->result(count_rows($a,$Y,$u,$p));$F=floor(max(0,$n-1)/$y);}$Hd=$N;if(!$Hd){$Hd[]="*";if($Qc)$Hd[]=$Qc;}$Ua=convert_fields($e,$m,$N);if($Ua)$Hd[]=substr($Ua,2);$J=$i->select($a,$Hd,$Y,$p,$E,$y,$F,true);if(!$J)echo"<p class='error'>".error()."\n";else{if($v=="mssql"&&$F)$J->seek($y*$F);$rb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($F&&$v=="oracle")unset($L["RNUM"]);$M[]=$L;}if($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql")$n=$f->result(" SELECT FOUND_ROWS()");if(!$M)echo"<p class='message'>".'No rows.'."\n";else{$xa=$b->backwardKeys($a,$de);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$p&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Lc=array();$Tb=array();reset($N);$wd=1;foreach($M[0]as$x=>$V){if($x!=$Qc){$V=$_GET["columns"][key($N)];$l=$m[$N?($V?$V["col"]:current($N)):$x];$D=($l?$b->fieldName($l,$wd):($V["fun"]?"*":$x));if($D!=""){$wd++;$Lc[$x]=$D;$d=idf_escape($x);$ec=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$db="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($ec.($E[0]==$d||$E[0]==$x||(!$E&&$u&&$p[0]==$d)?$db:'')).'">';echo |
|
541 | -apply_sql_function($V["fun"],$D)."</a>";echo"<span class='column hidden'>","<a href='".h($ec.$db)."' title='".'descending'."' class='text'> ↓</a>";if(!$V["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($x)).'\'); return false;" title="'.'Search'.'" class="text jsonly"> =</a>';echo"</span>";}$Tb[$x]=$V["fun"];next($N);}}$yc=array();if($_GET["modify"]){foreach($M |
|
1198 | +as$x=>$V){if(in_array(idf_escape($x),$N)) { |
|
1199 | + unset($Be[$x]); |
|
1200 | +} |
|
1201 | +}if($_POST["export"]){cookie("adminer_import","output=".urlencode($_POST["output"])."&format=".urlencode($_POST["format"]));dump_headers($a);$b->dumpTable($a,"");if(!is_array($_POST["check"])||$Be===array()) { |
|
1202 | + $I="SELECT $Sb$Me$Ub"; |
|
1203 | +} else{$ye=array();foreach($_POST["check"]as$V) { |
|
1204 | + $ye[]="(SELECT".limit($Sb,"\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m).$Ub,1).")"; |
|
1205 | +} |
|
1206 | +$I=implode(" UNION ALL ",$ye);}$b->dumpData($a,"table",$I);exit;}if(!$b->selectEmailProcess($Y,$Ob)){if($_POST["save"]||$_POST["delete"]){$J=true;$ja=0;$P=array();if(!$_POST["delete"]){foreach($e |
|
1207 | +as$D=>$V){$V=process_input($m[$D]);if($V!==null&&($_POST["clone"]||$V!==false)) { |
|
1208 | + $P[idf_escape($D)]=($V!==false?$V:idf_escape($D)); |
|
1209 | +} |
|
1210 | +}}if($_POST["delete"]||$P){if($_POST["clone"]) { |
|
1211 | + $I="INTO ".table($a)." (".implode(", ",array_keys($P)).")\nSELECT ".implode(", ",$P)."\nFROM ".table($a); |
|
1212 | +} |
|
1213 | +if($_POST["all"]||($Be===array()&&is_array($_POST["check"]))||$u){$J=($_POST["delete"]?$i->delete($a,$Me):($_POST["clone"]?queries("INSERT $I$Me"):$i->update($a,$P,$Me)));$ja=$f->affected_rows;} else{foreach((array)$_POST["check"]as$V){$Le="\nWHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($V,$m);$J=($_POST["delete"]?$i->delete($a,$Le,1):($_POST["clone"]?queries("INSERT".limit1($I,$Le)):$i->update($a,$P,$Le)));if(!$J) { |
|
1214 | + break; |
|
1215 | +} |
|
1216 | +$ja+=$f->affected_rows;}}}$B=lang(array('%d item has been affected.','%d items have been affected.'),$ja);if($_POST["clone"]&&$J&&$ja==1){$vc=last_id();if($vc) { |
|
1217 | + $B=sprintf('Item%s has been inserted.'," $vc"); |
|
1218 | +} |
|
1219 | +}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$B,$J);if(!$_POST["delete"]){edit_form($a,$m,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}} elseif(!$_POST["import"]){if(!$_POST["val"]) { |
|
1220 | + $k='Ctrl+click on a value to modify it.'; |
|
1221 | +} else{$J=true;$ja=0;foreach($_POST["val"]as$_e=>$L){$P=array();foreach($L |
|
1222 | +as$x=>$V){$x=bracket_escape($x,1);$P[idf_escape($x)]=(preg_match('~char|text~',$m[$x]["type"])||$V!=""?$b->processInput($m[$x],$V):"NULL");}$J=$i->update($a,$P," WHERE ".($Y?implode(" AND ",$Y)." AND ":"").where_check($_e,$m),!($u||$Be===array())," ");if(!$J) { |
|
1223 | + break; |
|
1224 | +} |
|
1225 | +$ja+=$f->affected_rows;}queries_redirect(remove_from_uri(),lang(array('%d item has been affected.','%d items have been affected.'),$ja),$J);}} elseif(!is_string($Eb=get_file("csv_file",true))) { |
|
1226 | + $k=upload_error($Eb); |
|
1227 | +} elseif(!preg_match('~~u',$Eb)) { |
|
1228 | + $k='File must be in UTF-8 encoding.'; |
|
1229 | +} else{cookie("adminer_import","output=".urlencode($ia["output"])."&format=".urlencode($_POST["separator"]));$J=true;$Oa=array_keys($m);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$Eb,$Bc);$ja=count($Bc[0]);$i->begin();$Kd=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$M=array();foreach($Bc[0]as$x=>$V){preg_match_all("~((?>\"[^\"]*\")+|[^$Kd]*)$Kd~",$V.$Kd,$Cc);if(!$x&&!array_diff($Cc[1],$Oa)){$Oa=$Cc[1];$ja--;} else{$P=array();foreach($Cc[1]as$q=>$La) { |
|
1230 | + $P[idf_escape($Oa[$q])]=($La==""&&$m[$Oa[$q]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$La)))); |
|
1231 | +} |
|
1232 | +$M[]=$P;}}$J=(!$M||$i->insertUpdate($a,$M,$md));if($J) { |
|
1233 | + $i->commit(); |
|
1234 | +} |
|
1235 | +queries_redirect(remove_from_uri("page"),lang(array('%d row has been imported.','%d rows have been imported.'),$ja),$J);$i->rollback();}}}$de=$b->tableName($S);if(is_ajax()){page_headers();ob_start();} else { |
|
1236 | + page_header('Select'.": $de",$k); |
|
1237 | +} |
|
1238 | +$P=null;if(isset($Dd["insert"])||!support("table")){$P="";foreach((array)$_GET["where"]as$V){if(count($Ob[$V["col"]])==1&&($V["op"]=="="||(!$V["op"]&&!preg_match('~[_%]~',$V["val"])))) { |
|
1239 | + $P.="&set".urlencode("[".bracket_escape($V["col"])."]")."=".urlencode($V["val"]); |
|
1240 | +} |
|
1241 | +}}$b->selectLinks($S,$P);if(!$e&&support("table")) { |
|
1242 | + echo"<p class='error'>".'Unable to select the table'.($m?".":": ".error())."\n"; |
|
1243 | +} else{echo"<form action='' id='form'>\n","<div style='display: none;'>";hidden_fields_get();echo(DB!=""?'<input type="hidden" name="db" value="'.h(DB).'">'.(isset($_GET["ns"])?'<input type="hidden" name="ns" value="'.h($_GET["ns"]).'">':""):"");echo'<input type="hidden" name="select" value="'.h($a).'">',"</div>\n";$b->selectColumnsPrint($N,$e);$b->selectSearchPrint($Y,$e,$t);$b->selectOrderPrint($E,$e,$t);$b->selectLimitPrint($y);$b->selectLengthPrint($he);$b->selectActionPrint($t);echo"</form>\n";$F=$_GET["page"];if($F=="last"){$n=$f->result(count_rows($a,$Y,$u,$p));$F=floor(max(0,$n-1)/$y);}$Hd=$N;if(!$Hd){$Hd[]="*";if($Qc) { |
|
1244 | + $Hd[]=$Qc; |
|
1245 | +} |
|
1246 | +}$Ua=convert_fields($e,$m,$N);if($Ua) { |
|
1247 | + $Hd[]=substr($Ua,2); |
|
1248 | +} |
|
1249 | +$J=$i->select($a,$Hd,$Y,$p,$E,$y,$F,true);if(!$J) { |
|
1250 | + echo"<p class='error'>".error()."\n"; |
|
1251 | +} else{if($v=="mssql"&&$F) { |
|
1252 | + $J->seek($y*$F); |
|
1253 | +} |
|
1254 | +$rb=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$M=array();while($L=$J->fetch_assoc()){if($F&&$v=="oracle") { |
|
1255 | + unset($L["RNUM"]); |
|
1256 | +} |
|
1257 | +$M[]=$L;}if($_GET["page"]!="last"&&+$y&&$p&&$u&&$v=="sql") { |
|
1258 | + $n=$f->result(" SELECT FOUND_ROWS()"); |
|
1259 | +} |
|
1260 | +if(!$M) { |
|
1261 | + echo"<p class='message'>".'No rows.'."\n"; |
|
1262 | +} else{$xa=$b->backwardKeys($a,$de);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$p&&$N?"":"<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='".h($_GET["modify"]?remove_from_uri("modify"):$_SERVER["REQUEST_URI"]."&modify=1")."'>".'Modify'."</a>");$Lc=array();$Tb=array();reset($N);$wd=1;foreach($M[0]as$x=>$V){if($x!=$Qc){$V=$_GET["columns"][key($N)];$l=$m[$N?($V?$V["col"]:current($N)):$x];$D=($l?$b->fieldName($l,$wd):($V["fun"]?"*":$x));if($D!=""){$wd++;$Lc[$x]=$D;$d=idf_escape($x);$ec=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$db="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($ec.($E[0]==$d||$E[0]==$x||(!$E&&$u&&$p[0]==$d)?$db:'')).'">';echo |
|
1263 | +apply_sql_function($V["fun"],$D)."</a>";echo"<span class='column hidden'>","<a href='".h($ec.$db)."' title='".'descending'."' class='text'> ↓</a>";if(!$V["fun"]) { |
|
1264 | + echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($x)).'\'); return false;" title="'.'Search'.'" class="text jsonly"> =</a>'; |
|
1265 | +} |
|
1266 | +echo"</span>";}$Tb[$x]=$V["fun"];next($N);}}$yc=array();if($_GET["modify"]){foreach($M |
|
542 | 1267 | as$L){foreach($L |
543 | -as$x=>$V)$yc[$x]=max($yc[$x],min(40,strlen(utf8_decode($V))));}}echo($xa?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($y%2==1&&$F%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($M,$Ob)as$C=>$L){$ze=unique_array($M[$C],$t);if(!$ze){$ze=array();foreach($M[$C]as$x=>$V){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$x))$ze[$x]=$V;}}$_e="";foreach($ze |
|
1268 | +as$x=>$V) { |
|
1269 | + $yc[$x]=max($yc[$x],min(40,strlen(utf8_decode($V)))); |
|
1270 | +} |
|
1271 | +}}echo($xa?"<th>".'Relations':"")."</thead>\n";if(is_ajax()){if($y%2==1&&$F%2==1) { |
|
1272 | + odd(); |
|
1273 | +} |
|
1274 | +ob_end_clean();}foreach($b->rowDescriptions($M,$Ob)as$C=>$L){$ze=unique_array($M[$C],$t);if(!$ze){$ze=array();foreach($M[$C]as$x=>$V){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$x)) { |
|
1275 | + $ze[$x]=$V; |
|
1276 | +} |
|
1277 | +}}$_e="";foreach($ze |
|
544 | 1278 | as$x=>$V){if(($v=="sql"||$v=="pgsql")&&strlen($V)>64){$x=(strpos($x,'(')?$x:idf_escape($x));$x="MD5(".($v=='sql'&&preg_match("~^utf8_~",$m[$x]["collation"])?$x:"CONVERT($x USING ".charset($f).")").")";$V=md5($V);}$_e.="&".($V!==null?urlencode("where[".bracket_escape($x)."]")."=".urlencode($V):"null%5B%5D=".urlencode($x));}echo"<tr".odd().">".(!$p&&$N?"":"<td>".checkbox("check[]",substr($_e,1),in_array(substr($_e,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").($u||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$_e)."'>".'edit'."</a>"));foreach($L |
545 | -as$x=>$V){if(isset($Lc[$x])){$l=$m[$x];if($V!=""&&(!isset($rb[$x])||$rb[$x]!=""))$rb[$x]=(is_mail($V)?$Lc[$x]:"");$z="";if(preg_match('~blob|bytea|raw|file~',$l["type"])&&$V!="")$z=ME.'download='.urlencode($a).'&field='.urlencode($x).$_e;if(!$z&&$V!==null){foreach((array)$Ob[$x]as$Nb){if(count($Ob[$x])==1||end($Nb["source"])==$x){$z="";foreach($Nb["source"]as$q=>$Rd)$z.=where_link($q,$Nb["target"][$q],$M[$C][$Rd]);$z=($Nb["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($Nb["db"]),ME):ME).'select='.urlencode($Nb["table"]).$z;if(count($Nb["source"])==1)break;}}}if($x=="COUNT(*)"){$z=ME."select=".urlencode($a);$q=0;foreach((array)$_GET["where"]as$U){if(!array_key_exists($U["col"],$ze))$z.=where_link($q++,$U["col"],$U["val"],$U["op"]);}foreach($ze |
|
546 | -as$w=>$U)$z.=where_link($q++,$w,$U);}$V=select_value($V,$z,$l,$he);$r=h("val[$_e][".bracket_escape($x)."]");$W=$_POST["val"][$_e][bracket_escape($x)];$nb=!is_array($L[$x])&&is_utf8($V)&&$M[$C][$x]==$L[$x]&&!$Tb[$x];$ge=preg_match('~text|lob~',$l["type"]);if(($_GET["modify"]&&$nb)||$W!==null){$Wb=h($W!==null?$W:$L[$x]);echo"<td>".($ge?"<textarea name='$r' cols='30' rows='".(substr_count($L[$x],"\n")+1)."'>$Wb</textarea>":"<input name='$r' value='$Wb' size='$yc[$x]'>");}else{$Ac=strpos($V,"<i>...</i>");echo"<td id='$r' onclick=\"selectClick(this, event, ".($Ac?2:($ge?1:0)).($nb?"":", '".h('Use edit link to modify this value.')."'").");\">$V";}}}if($xa)echo"<td>";$b->backwardKeysPrint($xa,$M[$C]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n";}if(($M||$F)&&!is_ajax()){$yb=true;if($_GET["page"]!="last"){if(!+$y)$n=count($M);elseif($v!="sql"||!$u){$n=($u?false:found_rows($S,$Y));if($n<max(1e4,2*($F+1)*$y))$n=reset(slow_query(count_rows($a,$Y,$u,$p)));else$yb=false;}}if(+$y&&($n===false||$n>$y||$F)){echo"<p class='pages'>";$Dc=($n===false?$F+(count($M)>=$y?2:1):floor(($n-1)/$y));if($v!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($F+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$F).($F>5?" ...":"");for($q=max(1,$F-4);$q<min($Dc,$F+5);$q++)echo |
|
547 | -pagination($q,$F);if($Dc>0){echo($F+5<$Dc?" ...":""),($yb&&$n!==false?pagination($Dc,$F):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Dc'>".'last'."</a>");}echo(($n===false?count($M)+1:$n-$F*$y)>$y?' <a href="'.h(remove_from_uri("page")."&page=".($F+1)).'" onclick="return !selectLoadMore(this, '.(+$y).', \''.'Loading'.'...\');" class="loadmore">'.'Load more data'.'</a>':'');}else{echo'Page'.":",pagination(0,$F).($F>1?" ...":""),($F?pagination($F,$F):""),($Dc>$F?pagination($F+1,$F).($Dc>$F+1?" ...":""):"");}}echo"<p class='count'>\n",($n!==false?"(".($yb?"":"~ ").lang(array('%d row','%d rows'),$n).") ":"");$hb=($yb?"":"~ ").$n;echo |
|
1279 | +as$x=>$V){if(isset($Lc[$x])){$l=$m[$x];if($V!=""&&(!isset($rb[$x])||$rb[$x]!="")) { |
|
1280 | + $rb[$x]=(is_mail($V)?$Lc[$x]:""); |
|
1281 | +} |
|
1282 | +$z="";if(preg_match('~blob|bytea|raw|file~',$l["type"])&&$V!="") { |
|
1283 | + $z=ME.'download='.urlencode($a).'&field='.urlencode($x).$_e; |
|
1284 | +} |
|
1285 | +if(!$z&&$V!==null){foreach((array)$Ob[$x]as$Nb){if(count($Ob[$x])==1||end($Nb["source"])==$x){$z="";foreach($Nb["source"]as$q=>$Rd) { |
|
1286 | + $z.=where_link($q,$Nb["target"][$q],$M[$C][$Rd]); |
|
1287 | +} |
|
1288 | +$z=($Nb["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($Nb["db"]),ME):ME).'select='.urlencode($Nb["table"]).$z;if(count($Nb["source"])==1) { |
|
1289 | + break; |
|
1290 | +} |
|
1291 | +}}}if($x=="COUNT(*)"){$z=ME."select=".urlencode($a);$q=0;foreach((array)$_GET["where"]as$U){if(!array_key_exists($U["col"],$ze)) { |
|
1292 | + $z.=where_link($q++,$U["col"],$U["val"],$U["op"]); |
|
1293 | +} |
|
1294 | +}foreach($ze |
|
1295 | +as$w=>$U) { |
|
1296 | + $z.=where_link($q++,$w,$U); |
|
1297 | +} |
|
1298 | +}$V=select_value($V,$z,$l,$he);$r=h("val[$_e][".bracket_escape($x)."]");$W=$_POST["val"][$_e][bracket_escape($x)];$nb=!is_array($L[$x])&&is_utf8($V)&&$M[$C][$x]==$L[$x]&&!$Tb[$x];$ge=preg_match('~text|lob~',$l["type"]);if(($_GET["modify"]&&$nb)||$W!==null){$Wb=h($W!==null?$W:$L[$x]);echo"<td>".($ge?"<textarea name='$r' cols='30' rows='".(substr_count($L[$x],"\n")+1)."'>$Wb</textarea>":"<input name='$r' value='$Wb' size='$yc[$x]'>");} else{$Ac=strpos($V,"<i>...</i>");echo"<td id='$r' onclick=\"selectClick(this, event, ".($Ac?2:($ge?1:0)).($nb?"":", '".h('Use edit link to modify this value.')."'").");\">$V";}}}if($xa) { |
|
1299 | + echo"<td>"; |
|
1300 | +} |
|
1301 | +$b->backwardKeysPrint($xa,$M[$C]);echo"</tr>\n";}if(is_ajax()) { |
|
1302 | + exit; |
|
1303 | +} |
|
1304 | +echo"</table>\n";}if(($M||$F)&&!is_ajax()){$yb=true;if($_GET["page"]!="last"){if(!+$y) { |
|
1305 | + $n=count($M); |
|
1306 | +} elseif($v!="sql"||!$u){$n=($u?false:found_rows($S,$Y));if($n<max(1e4,2*($F+1)*$y)) { |
|
1307 | + $n=reset(slow_query(count_rows($a,$Y,$u,$p))); |
|
1308 | +} else { |
|
1309 | + $yb=false; |
|
1310 | +} |
|
1311 | +}}if(+$y&&($n===false||$n>$y||$F)){echo"<p class='pages'>";$Dc=($n===false?$F+(count($M)>=$y?2:1):floor(($n-1)/$y));if($v!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".'Page'."', '".($F+1)."'), event); return false;\">".'Page'."</a>:",pagination(0,$F).($F>5?" ...":"");for($q=max(1,$F-4);$q<min($Dc,$F+5);$q++) { |
|
1312 | + echo |
|
1313 | +pagination($q,$F); |
|
1314 | +} |
|
1315 | +if($Dc>0){echo($F+5<$Dc?" ...":""),($yb&&$n!==false?pagination($Dc,$F):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$Dc'>".'last'."</a>");}echo(($n===false?count($M)+1:$n-$F*$y)>$y?' <a href="'.h(remove_from_uri("page")."&page=".($F+1)).'" onclick="return !selectLoadMore(this, '.(+$y).', \''.'Loading'.'...\');" class="loadmore">'.'Load more data'.'</a>':'');} else{echo'Page'.":",pagination(0,$F).($F>1?" ...":""),($F?pagination($F,$F):""),($Dc>$F?pagination($F+1,$F).($Dc>$F+1?" ...":""):"");}}echo"<p class='count'>\n",($n!==false?"(".($yb?"":"~ ").lang(array('%d row','%d rows'),$n).") ":"");$hb=($yb?"":"~ ").$n;echo |
|
548 | 1316 | checkbox("all",1,0,'whole result',"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$hb' : checked); selectCount('selected2', this.checked || !checked ? '$hb' : checked);")."\n";if($b->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>Modify</legend><div> |
549 | 1317 | <input type="submit" value="Save"',($_GET["modify"]?'':' title="'.'Ctrl+click on a value to modify it.'.'"'),'> |
550 | 1318 | </div></fieldset> |
@@ -553,4 +1321,15 @@ discard block |
||
553 | 1321 | <input type="submit" name="clone" value="Clone"> |
554 | 1322 | <input type="submit" name="delete" value="Delete"',confirm(),'> |
555 | 1323 | </div></fieldset> |
556 | -';}$Pb=$b->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($Pb['sql']);break;}}if($Pb){print_fieldset("export",'Export'." <span id='selected2'></span>");$bd=$b->dumpOutput();echo($bd?html_select("output",$bd,$ia["output"])." ":""),html_select("format",$Pb,$ia["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}echo(!$p&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",'Import',!$M);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ia["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($rb,'strlen'),$e);echo"<p><input type='hidden' name='token' value='$qe'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["script"])){if($_GET["script"]=="kill")$f->query("KILL ".number($_POST["kill"]));elseif(list($R,$r,$D)=$b->_foreignColumn(column_foreign_keys($_GET["source"]),$_GET["field"])){$y=11;$J=$f->query("SELECT $r, $D FROM ".table($R)." WHERE ".(preg_match('~^[0-9]+$~',$_GET["value"])?"$r = $_GET[value] OR ":"")."$D LIKE ".q("$_GET[value]%")." ORDER BY 2 LIMIT $y");for($q=1;($L=$J->fetch_row())&&$q<$y;$q++)echo"<a href='".h(ME."edit=".urlencode($R)."&where".urlencode("[".bracket_escape(idf_unescape($r))."]")."=".urlencode($L[0]))."'>".h($L[1])."</a><br>\n";if($L)echo"...\n";}exit;}else{page_header('Server',"",false);if($b->homepage()){echo"<form action='' method='post'>\n","<p>".'Search data in tables'.": <input name='query' value='".h($_POST["query"])."'> <input type='submit' value='".'Search'."'>\n";if($_POST["query"]!="")search_tables();echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^tables\[/);"><th>'.'Table'.'<td>'.'Rows'."</thead>\n";foreach(table_status()as$R=>$L){$D=$b->tableName($L);if(isset($L["Engine"])&&$D!=""){echo'<tr'.odd().'><td>'.checkbox("tables[]",$R,in_array($R,(array)$_POST["tables"],true),"","formUncheck('check-all');"),"<th><a href='".h(ME).'select='.urlencode($R)."'>$D</a>";$V=format_number($L["Rows"]);echo"<td align='right'><a href='".h(ME."edit=").urlencode($R)."'>".($L["Engine"]=="InnoDB"&&$V?"~ $V":$V)."</a>";}}echo"</table>\n","<script type='text/javascript'>tableCheck();</script>\n","</form>\n";}}page_footer(); |
|
557 | 1324 | \ No newline at end of file |
1325 | +';}$Pb=$b->dumpFormat();foreach((array)$_GET["columns"]as$d){if($d["fun"]){unset($Pb['sql']);break;}}if($Pb){print_fieldset("export",'Export'." <span id='selected2'></span>");$bd=$b->dumpOutput();echo($bd?html_select("output",$bd,$ia["output"])." ":""),html_select("format",$Pb,$ia["format"])," <input type='submit' name='export' value='".'Export'."'>\n","</div></fieldset>\n";}echo(!$p&&$N?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",'Import',!$M);echo"<input type='file' name='csv_file'> ",html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ia["format"],1);echo" <input type='submit' name='import' value='".'Import'."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($rb,'strlen'),$e);echo"<p><input type='hidden' name='token' value='$qe'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}} elseif(isset($_GET["script"])){if($_GET["script"]=="kill") { |
|
1326 | + $f->query("KILL ".number($_POST["kill"])); |
|
1327 | +} elseif(list($R,$r,$D)=$b->_foreignColumn(column_foreign_keys($_GET["source"]),$_GET["field"])){$y=11;$J=$f->query("SELECT $r, $D FROM ".table($R)." WHERE ".(preg_match('~^[0-9]+$~',$_GET["value"])?"$r = $_GET[value] OR ":"")."$D LIKE ".q("$_GET[value]%")." ORDER BY 2 LIMIT $y");for($q=1;($L=$J->fetch_row())&&$q<$y;$q++) { |
|
1328 | + echo"<a href='".h(ME."edit=".urlencode($R)."&where".urlencode("[".bracket_escape(idf_unescape($r))."]")."=".urlencode($L[0]))."'>".h($L[1])."</a><br>\n"; |
|
1329 | +} |
|
1330 | +if($L) { |
|
1331 | + echo"...\n"; |
|
1332 | +} |
|
1333 | +}exit;} else{page_header('Server',"",false);if($b->homepage()){echo"<form action='' method='post'>\n","<p>".'Search data in tables'.": <input name='query' value='".h($_POST["query"])."'> <input type='submit' value='".'Search'."'>\n";if($_POST["query"]!="") { |
|
1334 | + search_tables(); |
|
1335 | +} |
|
1336 | +echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^tables\[/);"><th>'.'Table'.'<td>'.'Rows'."</thead>\n";foreach(table_status()as$R=>$L){$D=$b->tableName($L);if(isset($L["Engine"])&&$D!=""){echo'<tr'.odd().'><td>'.checkbox("tables[]",$R,in_array($R,(array)$_POST["tables"],true),"","formUncheck('check-all');"),"<th><a href='".h(ME).'select='.urlencode($R)."'>$D</a>";$V=format_number($L["Rows"]);echo"<td align='right'><a href='".h(ME."edit=").urlencode($R)."'>".($L["Engine"]=="InnoDB"&&$V?"~ $V":$V)."</a>";}}echo"</table>\n","<script type='text/javascript'>tableCheck();</script>\n","</form>\n";}}page_footer(); |
|
558 | 1337 | \ No newline at end of file |
@@ -24,34 +24,34 @@ |
||
24 | 24 | include(XOOPS_ROOT_PATH . '/header.php'); |
25 | 25 | |
26 | 26 | if (!is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid())) { |
27 | - exit(_NOPERM); |
|
27 | + exit(_NOPERM); |
|
28 | 28 | } |
29 | 29 | function adminer_object() |
30 | 30 | { |
31 | - class AdminerKfr extends Adminer |
|
32 | - { |
|
33 | - public function name() |
|
34 | - { |
|
35 | - return 'XOOPS Admin'; |
|
36 | - } |
|
37 | - |
|
38 | - public function credentials() |
|
39 | - { |
|
40 | - return array(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS); |
|
41 | - } |
|
42 | - |
|
43 | - public function database() |
|
44 | - { |
|
45 | - return XOOPS_DB_NAME; |
|
46 | - } |
|
47 | - |
|
48 | - public function login($login, $password) |
|
49 | - { |
|
50 | - return ($login == XOOPS_DB_USER); |
|
51 | - } |
|
52 | - } |
|
53 | - |
|
54 | - return new AdminerKfr; |
|
31 | + class AdminerKfr extends Adminer |
|
32 | + { |
|
33 | + public function name() |
|
34 | + { |
|
35 | + return 'XOOPS Admin'; |
|
36 | + } |
|
37 | + |
|
38 | + public function credentials() |
|
39 | + { |
|
40 | + return array(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS); |
|
41 | + } |
|
42 | + |
|
43 | + public function database() |
|
44 | + { |
|
45 | + return XOOPS_DB_NAME; |
|
46 | + } |
|
47 | + |
|
48 | + public function login($login, $password) |
|
49 | + { |
|
50 | + return ($login == XOOPS_DB_USER); |
|
51 | + } |
|
52 | + } |
|
53 | + |
|
54 | + return new AdminerKfr; |
|
55 | 55 | } |
56 | 56 | |
57 | 57 | include __DIR__ . '/include/editor.php'; |
@@ -13,7 +13,7 @@ |
||
13 | 13 | |
14 | 14 | //Help |
15 | 15 | define('_MI_ADMINER_DIRNAME', basename(dirname(dirname(__DIR__)))); |
16 | -define('_MI_ADMINER_HELP_HEADER', __DIR__.'/help/helpheader.html'); |
|
16 | +define('_MI_ADMINER_HELP_HEADER', __DIR__ . '/help/helpheader.html'); |
|
17 | 17 | define('_MI_ADMINER_BACK_2_ADMIN', 'Back to Administration of '); |
18 | 18 | define('_MI_ADMINER_HELP_OVERVIEW', 'Overview'); |
19 | 19 |
@@ -13,6 +13,6 @@ |
||
13 | 13 | |
14 | 14 | //Help |
15 | 15 | define('_MI_ADMINER_DIRNAME', basename(dirname(dirname(__DIR__)))); |
16 | -define('_MI_ADMINER_HELP_HEADER', __DIR__.'/help/helpheader.html'); |
|
17 | -define('_MI_ADMINER_BACK_2_ADMIN','Back to Administration of '); |
|
18 | -define('_MI_ADMINER_HELP_OVERVIEW','Overview'); |
|
16 | +define('_MI_ADMINER_HELP_HEADER', __DIR__ . '/help/helpheader.html'); |
|
17 | +define('_MI_ADMINER_BACK_2_ADMIN', 'Back to Administration of '); |
|
18 | +define('_MI_ADMINER_HELP_OVERVIEW', 'Overview'); |
@@ -21,7 +21,7 @@ |
||
21 | 21 | xoops_cp_header(); |
22 | 22 | |
23 | 23 | if (!is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid())) { |
24 | - exit(_NOPERM); |
|
24 | + exit(_NOPERM); |
|
25 | 25 | } |
26 | 26 | |
27 | 27 | $aboutAdmin = new ModuleAdmin(); |
@@ -21,7 +21,7 @@ |
||
21 | 21 | xoops_cp_header(); |
22 | 22 | |
23 | 23 | if (!is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid())) { |
24 | - exit(_NOPERM); |
|
24 | + exit(_NOPERM); |
|
25 | 25 | } |
26 | 26 | |
27 | 27 | $aboutAdmin = new ModuleAdmin(); |
@@ -21,7 +21,7 @@ |
||
21 | 21 | xoops_cp_header(); |
22 | 22 | |
23 | 23 | if (!is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid())) { |
24 | - exit(_NOPERM); |
|
24 | + exit(_NOPERM); |
|
25 | 25 | } |
26 | 26 | |
27 | 27 | $aboutAdmin = new ModuleAdmin(); |
@@ -21,7 +21,7 @@ |
||
21 | 21 | xoops_cp_header(); |
22 | 22 | |
23 | 23 | if (!is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid())) { |
24 | - exit(_NOPERM); |
|
24 | + exit(_NOPERM); |
|
25 | 25 | } |
26 | 26 | |
27 | 27 | $aboutAdmin = new ModuleAdmin(); |
@@ -21,7 +21,7 @@ |
||
21 | 21 | xoops_cp_header(); |
22 | 22 | |
23 | 23 | if (!is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid())) { |
24 | - exit(_NOPERM); |
|
24 | + exit(_NOPERM); |
|
25 | 25 | } |
26 | 26 | |
27 | 27 | $aboutAdmin = new ModuleAdmin(); |