2012-06-04 14:58:40 +00:00
<? php
2016-06-02 09:54:47 -06:00
2016-06-02 09:31:27 -06:00
//includes
include "root.php" ;
require_once "resources/require.php" ;
require_once "resources/check_auth.php" ;
2016-06-02 09:54:47 -06:00
//check permission
if ( permission_exists ( 'adminer' )) {
//access granted
}
else {
echo "access denied" ;
exit ;
}
2012-06-04 14:58:40 +00:00
/** Adminer - Compact database management
2016-06-08 18:32:06 -06:00
* @link https://www.adminer.org/
2012-06-04 14:58:40 +00:00
* @author Jakub Vrana, http://www.vrana.cz/
* @copyright 2007 Jakub Vrana
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
2016-06-08 18:32:06 -06:00
* @version 4.2.5
2015-04-14 21:38:33 +00:00
*/ error_reporting ( 6135 ); $Jc =! preg_match ( '~^(unsafe_raw)?$~' , ini_get ( "filter.default" )); if ( $Jc || ini_get ( "filter.default_flags" )){ foreach ( array ( '_GET' , '_POST' , '_COOKIE' , '_SERVER' ) as $X ){ $Gh = filter_input_array ( constant ( "INPUT $X " ), FILTER_UNSAFE_RAW ); if ( $Gh ) $$X = $Gh ;}} 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
2016-06-08 18:52:06 -06:00
lzw_decompress ( " \0\0\0 ` \0 „ \0\n @ \0 ´ C„ è\" \0 `EãQ¸à ÿ ‡?À tvM'”JdÁ d \\ Œb0\0 Ä\" ™ÀfÓˆ¤îs5›ÏçÑA� X P a J“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
lzw_decompress ( " \n 1 ̇“ÙŒÞl7œ‡B1„4vb0˜Ífs‘¼ên2BÌѱ٘Þn: ‡# (¼b. \r D c)ÈÈa7 E„ ‘¤Âl ¦Ã±”èi1ÌŽs ˜´ç-4™‡fÓ ÈÎi7 † ³é† „ŽŒFé”vt2ž ‚Ó!– r0Ïãã£t~½U� '3M€ÉW„B¦'cÍPÂ:6T \r c£A¾zr _îWK¶ \r -¼VNFS%~Ãc²Ùí&› \\ ^ÊrÀ›æ u‚ŎÞôÙ‹4'7k¶è¯ÂãQÔæh š'g \r FB \r y T7SS¥PÐ1=Ǥ cIèÊ:� d”ºm>£S8 L†J� œt. M¢� Š Ï‹`'C¡¼ÛÐ8 89¤È Ž QØýŒî2� #8Ð� £’˜6 mú² †ðj ˆ¢h«<…Œ°«Œ 9/ë˜ç:� Jê)Ê‚¤ \0 d >! \0 Z ‡ ˆ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 YA t«?;× 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Ú3� xú€›äw0t6¾Ã%MR%³½j hÚB˜ <´ \0 ÉA Q<P<:šãu/¤; \\ > Ë-¹„ʈÍÁ QH \n v¡L+ vÖæì<ï\r èåvàöî ¹ \\ * àÉçÓ´Ý¢gŒ� nË©¸ ¹TЩ2P• \r ¨øß‹ \" +z 8 £ ¶: #€Ê èà Î2‹ºJ[� i—‚£¨;z˜ûÑô¡rÊ3 #¨Ù‰ :ãní \r 㽃eÙpd Ý� Ý è 2cˆê4²k¿Š£ \r G•æ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‡‰å?Ä Ë \n a@ÉŒ>‚âZEC“ô OŽ -æ ›¤^ Q€ &ß Öù )I)®¤ÄÀ� R„] \r ¡”9”7_ ˆ¢ \r ÉF80µO bù €‘î>ºäý \n Rý_ˆÑ 8æ‚ØÙ«ä ov0¤b CA¸ F!Ñt—– ă% 0”/‘ zAYO( 4«‹¡ˆ¨ Ò 'Ÿ ] Iéí8hH Â05˜ 3 ò@x&nˆ’|TÓ ³ ³) `� .“s6e Y˜D¦z¸Œ® ¥ƒJÑ“ôž.„ñ{GEb� ¹Ó‹¡˜‹†2Õ ×{\$ **ý ¾@Ý C� ž-:z YHZIôà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Ô9 Fònß!ÙuáÎ A©Þ ƒ0i Pó¬”îº J6e ä T]VØ[ \r XÌáaŸ–v� k õ \n +Eˆ � áÜ•* \0 ¶~¶ Æù @g \" ÌN CI \$ � àÉŒƒ€ê 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 ‹Â� Ãè# U 2 0å> \" ® ²Ç>Ì`œk]î-¯ÇxùSØ Í‡Ð¢ ©‰‚êcâ¡ ó B’—} Ø&`ˆîr+E“ \$ œyNýŒ±b,†´´Wx þ� -9åÕrÓ,’ü`å+œïí ËŠù’CœÓ)˜˜7 Ûx \r ¬þWµfMŒSR¼ \\ èz ¦Ù Q²Ì“� ”u A¬ºê2ޱõ4îL&ËHi µ°²¹S \$ )e³“æ g rÈŒ© ƒ \$ ]ZëiYs¤õ× kW– n>µ7E1k 8ÐdÃró®šk Áý¢ ëEÞÙÛw  wc mŽTy� ¹•ë¿a› \$ tx \r B ´÷=� Šö¢* ”< È ƒ l ¡ fôKœ‘N/¶¼� à lÕáü kH“ õ8 .‘‘ù?f÷ ›Ú ÿã6†Ñ‡¼{gi/ \" à@� – K›ñ@2ãça|#,Z¤±‡ ³ñwˆd¬™“²…¼å6w™^& Áêt™çœP ±…¥Äù]À ¼›.àãÚ í¡T ìîkroÀ‰� ÷ \r o=—%æ×h`: \0 ᱂� ö «”|ꊣ«a “Ô® 6*: ÍÓ*‡ÊrO-^–’ñén«Íó§MÆ}æ»÷ÆAya� ±Ý \n ƒu^ì–ÀrnO \r ±»¡`þT~< /ð¶wÄyþ}æ: › |£Ï ÐûÖÌ¡6»¤× ø®Ÿvî \r c <·b#ûàô§†î– \$ ùsµê|燇 V)«h‹ T Cùñ (Ľñ £Ì]6¦Þ1´ !1M±¸@a´/� `Û >Ù¸üߣðÕßÈÛC/ì6à´· #p @p á‘óÿ`Zÿ ôýchý° \0 ïë\0 oæ€ð 4Oý Oø i \0 - \n « îÿ/ý \0 £D ð.ÿ ¾� ˆ .“Ä� \0 f i ŒÀÈ«£€˜ \0 Œ”IDü ç \0 §¬ \r ïý 0f ß oã� ÿ €ÊG� üˆðe J| \r €¿ ý l ¨3 ê~ ði P› ¦&“É ¿/µ \0 � 9 ^\0 r•0] ¯õ ¾ › oõ Ž.ý \" � °ÐÑM ¥í ðvÿP€ZÐÕ m pË P °ù� ÚœÐÞ� ¹ ïô{§†C ? ²ÀkŽ“Ï¼}ð®þdö ïÊ� °~=‘.� Ô- é Ðm 1> hû ÏÛ Ð• 1; QI‘ O PÈ\r � ºc ß pA pV «k\r Q* è Q} Ïç Ÿ q>˜Ðu� 15� Bq Q[ 1fûñl«Â €a på ¯ü \0 Û ‘*ŒJ© Q= ñà £Ù ‘G Ü ä ŠÕ Á ±Ÿ ±_ ñ— ñbŒGH F.‚0Ôø = 2 P ™Àó æ ò Ïç P !ò# (3 \n Ù!1&7 2f� ª`Â/� å \0 °‡ \" PÁ U õ \$ ñ \r 0Ì ð� , Q rU&2fšÒ_ ²X àà ò] ð9\" ’ S'òƒ'²y ð8\r ¨ú§òk W)Oõ)’ � *Ra%ã \\ i—%ò‰&Ò³+r…’ 3 ðS `…,ñvý¦ &2× L– &Pu*� › -ð˜0\" Á%HĬ ÔžïÏ @Ø“±°H‰B–P(Ã É \$ p&ý,1 M ªØÃ ® ; \r nÁ.¯Ê I . Õ',1 ò� )Ó4ý²å2°u+ó3 æ� `È S ŽŠpL \n t§’_*²S 3;6r� 'h35¤55䜋d 2q+6ñ� 8‘ O7sC \" pm8Ò ³“6³—9òm \n @e0É<8B� 8©<,( � ¨8 ²Û \0 è Ó0šJÙ<@¦ÐI¤«ÀR6pÔm GË \" 11¤6ËÐ. \" æÀ‚ï5Ì‚û Ç:àÜ8bêA1±;ƒ';Â?< * \$ È,³Ì� o = òTÓÖ/3Û#«ºÒ†¬");} elseif ( $_GET [ "file" ] == "functions.js" ){ header ( "Content-Type: text/javascript; charset=utf-8" ); echo
lzw_decompress ( "f:›ŒgCI¼Ü \n 0› †S‘ Øa9œÅ S`°Ç ˆ“Œ&Ó(°Ên0˜� †QIìÒf‰› \$ ±At^ s� G ²Étf6e Œ§ yŒÊ() LäSÁÀP'� …ÂáÌR' Íf q] \" ˜ s> )â‘`œH2 ŠEq9 ˆÊ?ˆ * )‰”t'°ŽÏ§Ø\n \r æs<ŒPi2INÆ� *(=2 ÌgXá¸è.3™N„Y 4èB<’ L—ü îi ©Ì¥2Ý ´z= š0 HøžÐ'·êŒšÃuÆtt:œ�  ¡Èêe¹]`pX9ŒÞo5šgòóIœÜ,2 O4ãÞ Ñ…� 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æ9 m@Ð: ƒ€æ á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 …át 2Œw p ; Æ“… íÿ \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 \0 80‘ÇL3õ ÊJ;èiú)\\ „=/NŠu=ZV6&ceaè±ÂpÞÖ.[ëvŠtPZ ÞèX`Ö”õŒ+z ú '¦ê 9½. \$\$ …� Ó@ \n\r é]_ïÙ®¢Âh¨ kk¬Ms>`Ì–ƒj¹%� \\ 9 жÆÔ(' °j Aˆ >BCd \" K \$ CA Æ ä „ ¤.². `‰â.EÑæ´–Ì Ãy y \0 ‹ D 2 Ï8t Ð6†Ã8 ¬FL«´× ÞíâŒB*¬ð� ,Ò|\n x\\ @ °@¸ Ø3r ¬ ðÎWKQb,%… ¯´D B f ØÈ³D|ÍŒËE0/� 2>£Y! Ć' õ ™`æf ™mH º< Bã B0\r * \0 Gxò ‰ n êY4‚¶ ¾Œ,žL²©º –öÅ%SÆ ,ýv‡0ê ‘ –XòQÄ1 †HI d`‡ !.ÔVÊ ›H/ Åú×ÀH ãù0ÆU Á¸0™©Ž `îLI©8ÖÃkŠ”2Œ4JYNÅ&� 8xä¥ JØk:AKã� ¡nW Ø! ¦� � � ¿Iï;' ô ³\" :2ðê‹4Í~óJ„ 8ô� £á’‘¨âG‡™\" MÊ= \r Z'ŽnÇi9F§ œ“™rÆ’ RÊt ‚3 \0 Ÿ”Ҳ 2µy ‚� B^òèb' ´ÒzÈɲ ( #”d9Itµ&WØjNa¨ ÚC(¥ j”Ä– ?h ‰ÂØj†¡™ ©Ö„ Z \$ 0«¡Ò¯´J A_� \n †!T� Oó 4Œ<{aôú?˜æo � ú‚-¹– ÃÏ?Hlÿ \" � 2ƒ y™=Ú먞 R©ðœÑ„àš°– ÍŠëP&åG›ÀÁ4ƒË%() ¤\r 5Mª‚‰ÓLTí \0 � ÀºxBIç=lt vÄ2Jhvû� ´ ~/:� èpý×:8\" д5¡«‰0î#Ž *ì7ªøú Ü \n àq× >è¡G \$ °â … ): ƒ» \" ù#ë¦KfI‡!� vö+ ?{¡Íÿ¾ Qg� ¥{ÏR÷Q ø Cäª Ž}Õ#¸éiIb� gà„ÔXàÄ ÃÂù}ÅË `‹}3— %@î Á {_kø}0ä±þÈ—Öp !°aï —<7 « e •‰ ÖF‡? ¦ ¸¡î½XüDùÑ, ØÊ Ck‰ ƒíU™ØL>£ 1‹§Ü܇¥ã ‡Œ p0Ž#Ä \$ ²ÅâV)pY� s5A˜ : °Ê 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 \r K«œtª4à÷;OŠKc”9% Hì5àÍd¢3ÙÀe8j¿ P÷±[sð™9,ƒÄ˜— bzK‰µÁòW&e¢d 8ú§)� Äù é 5•pí˜ hù°ëéÃ๠\" 0� hL5 \0 ˜7 æ ڌڇŸ{ïÀÝ¿¸ Ýðî´<å k ‚² \r +� üXÅb� låè/Ø� X ìAC¨s \n a¤‘l� ÷Çí°}· ~Ý´— drx( \r è3 ÎnGrÃTÄ+� àQÏÁJ¹é ï� †PÌ\n Ø'?À€Ä´ n~� º:· µ òâ Qà8€»¦†`{ÙaÜÊ æ4:„ôLê: Ò öð§›ÉÜuMó „®ßŽ M¯I Á…,†`Í BgN €¯Â ÿ \r Bº•\r\0 ûÂo� é \" ¼/‡2^D2)n¸ \r az� R \$ à7¢`ÍØ ¹¨äèL³p®*Ò{`Oq t–z%%éHg§¹¦ 0¸… ÍKÃf &Ì) \\ ÐQW ¦öù ‡ †� \0 dp¾Ü<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Óð´ � O di iÞNÐ (¿ %� - 4+Ð:HpR¦§ ?BàM0š¶ JF� ¢.� ÚòÏ1 Mö»f~U¬T ê°ŠÒlË 0…þËÀòUÅÂ| âÀ Ђ@òˆ X4àb g è ] Pè?@z `…â <ðÐRîÔú`úí-¸þF˜� ÎI \0 Ñ åþ㬦|О…ð¸� ê¸Å¬TkQ k°F@0Lõì˜Pƒ \r Àšˆ#Îu ØÍË ïàܲpXÿ ^ѱa p \0\r y´ Pt% \0 ^8ÆÒ \r ¤Àµ‘ Šk ©£ \0 Ç¡ 1“ \n ¢d ñ… â B± § . \n íQ jq\$\r M ˾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 \r O ÄEЀ� Ôø î«Æy ”xCt@ п¨û* HàÇ é+@ ÀàÈ 0Õ \r ’˜ ‡ I‚ ¡ŽìL²¸� ²˜‚ˆ / \\\r NR \r\0 ¨@+û \$ Š©/*w0 ËS \n t ¢ \" ä– \0 æ r‘ /¬Ã PøÃðí \0 ù3L¿ °í %rïRÈ2R*º+÷0Ó \" ¿- ¾3N1âD7(tb’ê/@Ý12º† M6â †¬dÈ (á“c7‹*–Épãl� 8²„å(t· 0ÚKpÚ2Ù-ÐæÇðÞF bîƒ \$ ¼Røï (/ó+2îã,̲ËlºËï 8¬ Ïø–ér óK!ç©6 \" » Sa0 bxÓ à¾ \$ O \0\r e ‰ ¨ \r\" 8ˆ '‘ ót� ³Œ \r ³ù+£Pá@Y 1 °£ Yb ”Râ¹°Ú \\ jK)� ÷438 h Ì1ó7 z `pðRŽ R“CÒñB öîô<»Åöõ… ”F 4 çDtJ- ¶t Vå©D6 \0 N Lå Tå”v_ â0ó‹ \" qJ†ëIÅ •è*Ì.ô¾«àqÂR|´¯HÀÎ t]>ˆ \0 €O L( #é nŽ. ®2Bn9Jm‘ @R s2|”Úh”Þ tãNn6B“cO+âšÒ†È e¤ÊåÐËBO=,À ÀC:Ô6 ô:¸ M <àä—BV \\ `¦/BŒï Ú§Û, w:‘H°Í¸û2xp šM„n bn«¢Õ„‹ 0† ÎÕ 1Ö,4µV §#& lËâ×ÍjKCš \n ‰g Íâl \r è¶IcY@ÏY‰h– 3Û \n U’ ]@Î Â Ô \r LÕ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'µV Pä ¶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 \" * hP P„ \r c < ø[`æëV¢ â7å:`‹˜Uà°à(– I¢ƒs*d ã¶;·> —B GsG� t : À‚8d \0 ž @ÔjwLv j —ow7v bŽ ¨püàæñà u-þ \n € , u:)âÕ \" ut…:îW B< 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
lzw_decompress(" v0œ� F£©ÌÐ == ˜ÎFS ÐÊ_6 MƳ˜èèr : ™E‡CI´Êo : � C „”Xc‚ � \ræØ„J ( := ŸE† � ¦a28¡xð¸ ? Ä 'ƒi°SA NN ‘ùðxs… N BáÌVl0›ŒçS œËU l� (D| Ò„çÊP¦À> šE†ã©¶yH c häÂ-3 Eb“å ¸ b½ßpEÁpÿ 9.Š� ˜Ì~\nŽ? Kb±iw |È`Ç÷ d.¼x8EN¦ã!”Í 2™ ‡3©ˆá\r‡� ÑYŽÌèy6 GFmYŽ8o7\n\r ³0¤÷\0� DbcÓ!¾Q 7 Шd8‹Áì ~‘¬N) ùEг`ôNsßð`ÆS)ÐOé— ·ç /º <� xÆ9Žo»ÔåµÁì 3 n«®2»!r¼:;ã+Â9ˆCȨ®‰Ã\n<ñ� `Èó¯bè\\š?� `†4\r#`È <¯Be ãB# ¤N Üã\r.D`¬«jê4ÿŽŽpé ar°ø 㢺÷>ò8Ó\$Éc ¾1Écœ ¡c êÝ ê{n7 Àà ¡ ƒ AðN ÊRLi \r1À¾ø!£(æ j´®+Âê62À XÊ8+ Ê âàä.\rÍ Î ôƒÎ !x¼å ƒhù' ãâˆ6Sð\0R ïÔôñOÒ\n¼ …1 ( W0…ãœÇ7 qœë : NÃE : 68 n + ŽäÕ´ 5_ ( ®s \rã”ê‰ / m� 6PÔ @ ÃEQ� àÄ9 \n¨V - ‹Áó\ "¦. :åJ� Ï8weÎq½|؇³XÐ ]µÝY XÁeåzWâü Ž7âûZ1� íhQfÙãu£jÑ4Z{p \\ AUËJ<õ† káÁ@¼É� Ãà@ „ }& „� ˆ L7 U°wuYh� Ô2¸È@ûu Pà7ËA†hèÌò°Þ3 Ûê çXEÍ…Zˆ]l á@Mp l vÂ) æ Á ÁHW‘ ‘Ôy >� Y � -øYŸè/«� ›ªÁî hC [*‹ûFã #~ †!Ð`ô \r #0P ïCË� —f ·¶ ¡îà \\ î›¶‡É� ^Ã%B <� \\ ½ fˆ Þ±ÅáÐÝã&/¦O‚ðL \\ jF� ¨jZ£1« \\ :Æ´>� N¹¯XaFÃAÀ ³²ðÃØÍf… h{ \" s \n × 64‡ÜøÒ …¼? Ä8Ü^p� \" ë� °ñȸ \\ Úe(¸ P ƒNµìq[g¸Árÿ& }PhÊà¡ÀWÙí*Þír _sËP‡hà¼àÐ \n ÛËÃomõ¿¥Ãê—Ó#� §¡.Á \0 @é pdW ² \$ Òº°QÛ½T l0† ¾ ÃHdHë)š‡ Û� Ù À)P ÓÜØH� g àý Uþ„� ª Bèe \r †t:‡Õ \0 ) \" Åtô,´œ ’ÛÇ[� ( DøO \n R8!†Æ¬ÖšðÜlAüV… ¨4 hà £S q< žà@}ÃëÊgK±]®àè ]â=90°� '€å âøw A <‚ƒÐ ÑaÁ~€ò WšæƒD| A´††2 ÓXÙU2àéy ÅŠ� Š = ¡p)« \0 P ˜ s €µn…3 î� r„f \0 ¢F…·ºvÒÌG ® ÁI@é%¤”Ÿ+Àö_I`¶ ÌôÅ \r .ƒ N² ºËKI…[ ”Ê–SJò ©¾a Uf›Szûƒ«M §ô„ %¬·\" Q|9 €¨ Bc§aÁq \0 ©8Ÿ#Ò<a„³:z1Uf ª·>î Z ¹l‰‰ ¹� ÓÀ e5#U@iUG‚™©n¨%Ò° s¦„ Ë;gxL ´p Pš?BçŒÊQ� \\ — b „ÿ é¾’Q„=7� :¸ ¯Ý¡Qº\r :ƒtì¥ :y(Å × \n Ûd)¹ ÐÒ \n ÁX; ‹ìŽ ê CaA¬ \r áÝñŸP¨GHù!¡ ¢@È9 \n\n Al~H úªV \n sªÉÕ«� ƯÕbBr£ªö „’ ² ßû3ƒ\r žP¿% ¢Ñ„ \r }b/‰Î‘ \$ “ 5§PëCä \" w ÌB_çŽÉ UÕgAtë¤ô…夅é^QÄåUÉ ÄÖj™Áí Bvhì¡„4‡)¹ã +ª)<– j ^� <Lóà4U* õ� Bg ëÐæ è*n� Ê–è-ÿÜõÓ 9 O \$ ´‰Ø·zyM™3 „ \\ 9Üè ˜. oжšÌ ë¸E(iå àž œÄÓ7 tßšé� -&¢ \n j!\r � À yœyàD1gðÒö]«ÜyRÔ7\" ðæ § ·ƒˆ~ ÀíàÜ )TZ0E9MåYZ t Xe !Ýf†@ç{Ȭyl 8‡ ;� ¦ƒR{„ë8‡ Ä®ÁeØ+U Lñ'‚ F²1ý øæ8PE5- Ð_ !Ô7…ó [2‰JË Á;‡ HR²é ǹ€8 p痲݇@™£0,Õ®psK0 \r ¿4”¢\$ sJ¾� Ã4ÉDZ©ÕI ¢™'\$ cL”R� – MpY& ü½� Íiç z3G Í zÒšJ%ÁÌ PÜ-„� [É/xç³T¾{p¶§ z‹ C Öv µ ¥Ó:ƒV'� \\ –’KJa¨ÃMƒ&º°£Ó¾ \" à²e� o^Q +h^â ÐiT� ð1ªORäl«, 5[ݘ \$ ¹·)¬ôNô \n « ž[ Ðb÷ƒà| ;‘éîp »74Íܔ¢¨ÐIŠCË \\ Þ� X °ç \n %øhØIäç 4Ïg‹ P:< ôõk¦1Q™+ \\ ÚÈ^å’ ™VèøCàò ôWàÃ`83B-9F@àn ÃT>»ÞÀlj -–¿öÊ&âÜ`9q¦…Ç ß ä ‘“PÜ y6Üå \r .yñ &£ ñ´Îả ÍÃE8Ÿ0 êÀ õ kAÁ×VÛ T7ñpïÆxØ)Þ¡~¤M½ûÎ� ß!á E t §ÐùP \\ èÄÏ—m~c½Bð \\\n ímŠv{µÎù 9`G[· ¾ ~xsLî \\ ±Iõ®ïâXwy \n ਠçu¯á Á™S£c »¬ €1?A¼*‡ ùÍ{ œã½ÿ´óÍ¿á|9 Þ¾/–òþ¯Eúï4æÊ/¿Wÿ[ȳ>–á] Ärž Êý¯v¹~B£ P B`T ¡H> 0¤ B Ò� ) ð >¸ N !4 \" ‡À¦ xW-ÅX)„0� BhA0à½J2P@ >ÈA A )„SÎôn¼ì nìO˜Q¢¬ÇÎÊb®rõŽÔÒ¦âö àøïhèí@È‹’î®(–ð \n ì†Fì˜ñÏ–øÆ™ …(ìγ ¤ÛP \0 ÷NÂõo} ¯‚l«<ønÞø®ˆâ î� lëoq \0 /Q \0 of*Ê‘ NÑ ½ P� \r / îpA °Y\0 p \\ ãï~³ÐbÐLh °! Îã ÐPöîd÷.¿ ïy \n o \0 á ÌËжöP ptùP¡ ov� Ђknޏ \0 z +æ›l6÷°© ¬Êø0’äð¹ P½ o F €NìÏFô¯O pý àN `Ü ÐÖ \r og ðá 0} PÍ \n ¬–@°”ö15 \r ±9 \$ M \r \\ © \n g gì ÀÂ Ø \$ Q \r ‘ “ Dd‰ÆÊ8\$ ¶ªkþDâjÖ¢ Ô† ö&€Ó ÀÊ ¶àb Ѭ˜ê°¿ ‰› ñ= \n 0ÊÕÀúºÀPØ ~ج6 eö½¬2%Íx \" pß @Xб~ «æ ’?¬ цZelf \0 ÒZ), ,^Ê`ß \0 è8&´ ì ¨ Ù©‘ Ñ r €© ©� Ãk FJ ÂÂP> VÆ œÔ� p¨²8%2> B mÎó Ø@ä’G( ² ä¨s \$ Ž dÕÌœv† \" Èp°wÇÆ6§æ} (V ÌKË ‚K¬L ¾¤ éÄWñö qú \r ‘þÃ̤ʀQ òL%’PÔdJ¨¦H ÀNxK: \n ¤ †%fn‹ã³%ÒŒ¿DÌM ü À[#¢T \r ©ÀrÂ.¦LL è&W/> h6 @êE È ãLP‚ vÆC’ß 6 O:Yh^ mn6£n¼j>7`z `N í \\ Ù j \r gô \r Èi2I \$\" @¾[`Â� ¢hMý3 q3d’ þ \0 ÖµÈúys \$ `ÖDÀæ\$\0 äQOf1ƒ&‚ \" ~0€¸ `ø £ \" @Z G¼) Y:S¨ê†D.S %͈’ Ð 3¾à d¹ ÀmÓU5‹æ ¬ ó<£SÒ SZ 3â %r “Î ãÆ{óe3Cu6³o73î—³ÀdÀL \" àc7ÄLN ÜY Ê÷k‘>²Ž‚Ç.æpäì2ø Q ôÐ ÷“ ¼åÓ3ÀVذWBð Dt Cq#C @½I” P÷DT_D´ :� ÔQ<”UF² =’ 1 ô@ \$ ‚‰ 6 <cÆrÅf %Ô ¬,|“27#w7ÌTq´ � 6sþ l-1cPÕmðqªÊ \n @Ê àŠ5 \0 P!` \\\r @Þ \" CÆ- \0 RRˆ tFH8µ |Ní Æ-€Ædò g€ ‡Ò \r À¾)FÆ* h—`ö €CK4Ã1‹Ê� kMKCRf@w4B ß JÁ� 2 \" äŒ´Ó \r 1 Q4É2 , \" ô¤ '¼ êx §Œy —R‚ %RÄ“S Ó5 K”¦IFz #XP‡> ¨âf É-WX \r šÜê¤pU ´ÕDÔt&7@¶ÂÑô?’© ÀÑ ªµ£}O1½2†‡2Õ#UK *¤)ô긋Œ0o<> ]HŽ š„Æ¿rè›LGNª ›ê˜W%–™M^’Õ9X :ÕÉ¥N”òÕêÔsé E¥ @xy’ (HêÆ™Md× 5<52B– ð–k!> \r ^J`‹ IžS N¡¥4'Æš* œ*`ø> €—`|¢0,™DJ£F xbè µí4lTØ•û[¨§[é•\\ ‡¦ ¨Ô – \\ {Ò 6 \\ Þ– ’ öß (#mJÔ£, ý`© I³ûJ ‚ÕÊÜèlß� ûj… jÖŸ?Ö£kG»k¬T9ÀÛ]3ohuJ©ê¢ ®ÑW• \r kÕÏ) \0 Ý3Õ €@xè¹,³- Ê 5B”¡¶˜=ÂÔà£� #–gf¢ ¡&Üß ·Z`ä #Äoí æXf È \r ìJhô˜“À´5r qnz õ§ sÁ,6’ oÓt D´ y‡äÂb´àhþ —Ctn˜ 9 n‘ í` §X� &¨ \r ' tpLž7 ²Î—¤&—¨¼l¬Z- Í ¬w£{ r —¤@iUzM¿{r x× � —mÒSBÀ \r @ H*BD.7¹(‘ 3 XCV Ç <WÔуÝ|d ‡q*@”þ @ÞÀÊ+xø ÷̼`á€Ï^™Ì˜ß¬__•� NDX \0 Q_D]}tõYÅúp¦ f €wÔÚ \" â3
2014-04-27 06:39:48 +00:00
connection(){global $h ;return $h ;}function
2013-07-27 15:43:34 +00:00
adminer(){global $b ;return $b ;}function
2015-04-14 21:38:33 +00:00
idf_unescape( $t ) { $Qd = substr ( $t , - 1 ); return
str_replace ( $Qd . $Qd , $Qd , substr ( $t , 1 , - 1 )); } function
2013-07-27 15:43:34 +00:00
escape_string( $X ){return
substr(q( $X ),1,-1);}function
2015-04-14 21:38:33 +00:00
number( $X ){return
preg_replace('~[^0-9]+~','', $X );}function
2016-06-08 18:32:06 -06:00
remove_slashes( $Hf , $Jc =false){if(get_magic_quotes_gpc()){while(list( $x , $X )=each( $Hf )){foreach( $X
as $Gd => $W ){unset( $Hf[$x] [ $Gd ]);if(is_array( $W )) { $Hf [ $x ][ stripslashes ( $Gd )] = $W ; $Hf [] =& $Hf [ $x ][ stripslashes ( $Gd )]; } else $Hf[$x] [stripslashes( $Gd )]=( $Jc ? $W :stripslashes( $W ));}}}}function
2015-04-14 21:38:33 +00:00
bracket_escape( $t , $Na =false){static $th =array(':'=>':1',']'=>':2','['=>':3');return
strtr( $t ,( $Na ?array_flip( $th ): $th ));}function
charset( $h ){return(version_compare( $h->server_info ," 5.5 . 3 ")>=0?" utf8mb4 ":" utf8 ");}function
2014-04-27 06:39:48 +00:00
h( $P ){return
2015-04-14 21:38:33 +00:00
str_replace(" \0 "," & #0;",htmlspecialchars($P,ENT_QUOTES,'utf-8'));}function
2014-04-27 06:39:48 +00:00
nbsp ( $P ){ return ( trim ( $P ) != "" ? h ( $P ) : " " );} function
nl_br ( $P ){ return
str_replace ( " \n " , "<br>" , $P );} function
2016-06-08 18:32:06 -06:00
checkbox ( $C , $Y , $db , $Nd = "" , $Oe = "" , $ib = "" ){ $J = "<input type='checkbox' name=' $C ' value='" . h ( $Y ) . "'" . ( $db ? " checked" : "" ) . ( $Oe ? ' onclick="' . h ( $Oe ) . '"' : '' ) . ">" ; return ( $Nd != "" || $ib ? "<label" . ( $ib ? " class=' $ib '" : "" ) . "> $J " . h ( $Nd ) . "</label>" : $J );} function
optionlist ( $Ue , $sg = null , $Oh = false ){ $J = "" ; foreach ( $Ue
as $Gd => $W ){ $Ve = array ( $Gd => $W ); if ( is_array ( $W )){ $J .= '<optgroup label="' . h ( $Gd ) . '">' ; $Ve = $W ;} foreach ( $Ve
as $x => $X ) $J .= '<option' . ( $Oh || is_string ( $x ) ? ' value="' . h ( $x ) . '"' : '' ) . (( $Oh || is_string ( $x ) ? ( string ) $x : $X ) === $sg ? ' selected' : '' ) . '>' . h ( $X ); if ( is_array ( $W )) $J .= '</optgroup>' ;} return $J ;} function
2016-06-08 18:38:27 -06:00
adminer_html_select ( $C , $Ue , $Y = "" , $Ne = true ){ if ( $Ne ) return "<select name='" . h ( $C ) . "'" . ( is_string ( $Ne ) ? ' onchange="' . h ( $Ne ) . '"' : "" ) . ">" . optionlist ( $Ue , $Y ) . "</select>" ; $J = "" ; foreach ( $Ue
2014-04-27 06:39:48 +00:00
as $x => $X ) $J .= "<label><input type='radio' name='" . h ( $C ) . "' value='" . h ( $x ) . "'" . ( $x == $Y ? " checked" : "" ) . ">" . h ( $X ) . "</label>" ; return $J ;} function
2016-06-08 18:32:06 -06:00
select_input ( $Ja , $Ue , $Y = "" , $uf = "" ){ return ( $Ue ? "<select $Ja ><option value=''> $uf " . optionlist ( $Ue , $Y , true ) . "</select>" : "<input $Ja size='10' value='" . h ( $Y ) . "' placeholder=' $uf '>" );} function
2014-04-27 06:39:48 +00:00
confirm (){ return " onclick= \" return confirm('" . lang ( 0 ) . "'); \" " ;} function
2016-06-08 18:32:06 -06:00
print_fieldset ( $jd , $Vd , $Zh = false , $Oe = "" ){ echo "<fieldset><legend><a href='#fieldset- $jd ' onclick= \" " . h ( $Oe ) . "return !toggle('fieldset- $jd '); \" > $Vd </a></legend><div id='fieldset- $jd '" . ( $Zh ? "" : " class='hidden'" ) . "> \n " ;} function
2015-04-14 21:38:33 +00:00
bold ( $Va , $ib = "" ){ return ( $Va ? " class='active $ib '" : ( $ib ? " class=' $ib '" : "" ));} function
odd ( $J = ' class="odd"' ){ static $s = 0 ; if ( ! $J ) $s =- 1 ; return ( $s ++% 2 ? $J : '' );} function
2014-04-27 06:39:48 +00:00
js_escape ( $P ){ return
addcslashes ( $P , " \r\n ' \\ /" );} function
2015-04-14 21:38:33 +00:00
json_row ( $x , $X = null ){ static $Kc = true ; if ( $Kc ) echo "{" ; if ( $x != "" ){ echo ( $Kc ? "" : "," ) . " \n\t\" " . addcslashes ( $x , " \r\n\"\\ /" ) . '": ' . ( $X !== null ? '"' . addcslashes ( $X , " \r\n\"\\ /" ) . '"' : 'undefined' ); $Kc = false ;} else { echo " \n } \n " ; $Kc = true ;}} function
ini_bool ( $td ){ $X = ini_get ( $td ); return ( preg_match ( '~^(on|true|yes)$~i' , $X ) || ( int ) $X );} function
2014-04-27 06:39:48 +00:00
sid (){ static $J ; if ( $J === null ) $J = ( SID &&! ( $_COOKIE && ini_bool ( "session.use_cookies" ))); return $J ;} function
2015-04-14 21:38:33 +00:00
set_password ( $Vh , $N , $V , $G ){ $_SESSION [ "pwds" ][ $Vh ][ $N ][ $V ] = ( $_COOKIE [ "adminer_key" ] && is_string ( $G ) ? array ( encrypt_string ( $G , $_COOKIE [ "adminer_key" ])) : $G );} function
2014-04-27 06:39:48 +00:00
get_password (){ $J = get_session ( "pwds" ); if ( is_array ( $J )) $J = ( $_COOKIE [ "adminer_key" ] ? decrypt_string ( $J [ 0 ], $_COOKIE [ "adminer_key" ]) : false ); return $J ;} function
2015-04-14 21:38:33 +00:00
q ( $P ){ global $h ; return $h -> quote ( $P );} function
2014-04-27 06:39:48 +00:00
get_vals ( $H , $e = 0 ){ global $h ; $J = array (); $I = $h -> query ( $H ); if ( is_object ( $I )){ while ( $K = $I -> fetch_row ()) $J [] = $K [ $e ];} return $J ;} function
2015-04-14 21:38:33 +00:00
get_key_vals ( $H , $i = null , $jh = 0 ){ global $h ; if ( ! is_object ( $i )) $i = $h ; $J = array (); $i -> timeout = $jh ; $I = $i -> query ( $H ); $i -> timeout = 0 ; if ( is_object ( $I )){ while ( $K = $I -> fetch_row ()) $J [ $K [ 0 ]] = $K [ 1 ];} return $J ;} function
get_rows ( $H , $i = null , $n = "<p class='error'>" ){ global $h ; $ub = ( is_object ( $i ) ? $i : $h ); $J = array (); $I = $ub -> query ( $H ); if ( is_object ( $I )){ while ( $K = $I -> fetch_assoc ()) $J [] = $K ;} elseif ( ! $I &&! is_object ( $i ) && $n && defined ( "PAGE_HEADER" )) echo $n . error () . " \n " ; return $J ;} function
2014-04-27 06:39:48 +00:00
unique_array ( $K , $v ){ foreach ( $v
as $u ){ if ( preg_match ( "~PRIMARY|UNIQUE~" , $u [ "type" ])){ $J = array (); foreach ( $u [ "columns" ] as $x ){ if ( ! isset ( $K [ $x ])) continue
2 ; $J [ $x ] = $K [ $x ];} return $J ;}}} function
2015-04-14 21:38:33 +00:00
escape_key ( $x ){ if ( preg_match ( '(^([\w(]+)(' . str_replace ( "_" , ".*" , preg_quote ( idf_escape ( "_" ))) . ')([ \w)]+)$)' , $x , $B )) return $B [ 1 ] . idf_escape ( idf_unescape ( $B [ 2 ])) . $B [ 3 ]; return
idf_escape ( $x );} function
where ( $Z , $p = array ()){ global $h , $w ; $J = array (); foreach (( array ) $Z [ "where" ] as $x => $X ){ $x = bracket_escape ( $x , 1 ); $e = escape_key ( $x ); $J [] = $e . (( $w == "sql" && preg_match ( '~^[0-9]*\\.[0-9]*$~' , $X )) || $w == "mssql" ? " LIKE " . q ( addcslashes ( $X , "%_ \\ " )) : " = " . unconvert_field ( $p [ $x ], q ( $X ))); if ( $w == "sql" && preg_match ( '~char|text~' , $p [ $x ][ "type" ]) && preg_match ( "~[^ -@]~" , $X )) $J [] = " $e = " . q ( $X ) . " COLLATE " . charset ( $h ) . "_bin" ;} foreach (( array ) $Z [ "null" ] as $x ) $J [] = escape_key ( $x ) . " IS NULL" ; return
2014-04-27 06:39:48 +00:00
implode ( " AND " , $J );} function
2015-04-14 21:38:33 +00:00
where_check ( $X , $p = array ()){ parse_str ( $X , $bb ); remove_slashes ( array ( & $bb )); return
where ( $bb , $p );} function
2016-06-08 18:32:06 -06:00
where_link ( $s , $e , $Y , $Qe = "=" ){ return "&where%5B $s %5D%5Bcol%5D=" . urlencode ( $e ) . "&where%5B $s %5D%5Bop%5D=" . urlencode (( $Y !== null ? $Qe : "IS NULL" )) . "&where%5B $s %5D%5Bval%5D=" . urlencode ( $Y );} function
2015-04-14 21:38:33 +00:00
convert_fields ( $f , $p , $M = array ()){ $J = "" ; foreach ( $f
as $x => $X ){ if ( $M &&! in_array ( idf_escape ( $x ), $M )) continue ; $Ga = convert_field ( $p [ $x ]); if ( $Ga ) $J .= ", $Ga AS " . idf_escape ( $x );} return $J ;} function
cookie ( $C , $Y , $Xd = 2592000 ){ global $ba ; $F = array ( $C ,( preg_match ( "~ \n ~" , $Y ) ? "" : $Y ),( $Xd ? time () + $Xd : 0 ), preg_replace ( '~\\?.*~' , '' , $_SERVER [ "REQUEST_URI" ]), "" , $ba ); if ( version_compare ( PHP_VERSION , '5.2.0' ) >= 0 ) $F [] = true ; return
2014-04-27 06:39:48 +00:00
call_user_func_array ( 'setcookie' , $F );} function
2013-07-27 15:43:34 +00:00
restart_session (){ if ( ! ini_bool ( "session.use_cookies" )) session_start ();} function
stop_session (){ if ( ! ini_bool ( "session.use_cookies" )) session_write_close ();} function & get_session ( $x ){ return $_SESSION [ $x ][ DRIVER ][ SERVER ][ $_GET [ "username" ]];} function
set_session ( $x , $X ){ $_SESSION [ $x ][ DRIVER ][ SERVER ][ $_GET [ "username" ]] = $X ;} function
2015-04-14 21:38:33 +00:00
auth_url ( $Vh , $N , $V , $m = null ){ global $Xb ; preg_match ( '~([^?]*)\\??(.*)~' , remove_from_uri ( implode ( "|" , array_keys ( $Xb )) . "|username|" . ( $m !== null ? "db|" : "" ) . session_name ()), $B ); return " $B[1] ?" . ( sid () ? SID . "&" : "" ) . ( $Vh != "server" || $N != "" ? urlencode ( $Vh ) . "=" . urlencode ( $N ) . "&" : "" ) . "username=" . urlencode ( $V ) . ( $m != "" ? "&db=" . urlencode ( $m ) : "" ) . ( $B [ 2 ] ? "& $B[2] " : "" );} function
2012-06-04 14:58:40 +00:00
is_ajax (){ return ( $_SERVER [ "HTTP_X_REQUESTED_WITH" ] == "XMLHttpRequest" );} function
2016-06-08 18:32:06 -06:00
redirect ( $A , $le = null ){ if ( $le !== null ){ restart_session (); $_SESSION [ "messages" ][ preg_replace ( '~^[^?]*~' , '' ,( $A !== null ? $A : $_SERVER [ "REQUEST_URI" ]))][] = $le ;} if ( $A !== null ){ if ( $A == "" ) $A = "." ; header ( "Location: $A " ); exit ;}} function
query_redirect ( $H , $A , $le , $Rf = true , $wc = true , $Dc = false , $ih = "" ){ global $h , $n , $b ; if ( $wc ){ $Hg = microtime ( true ); $Dc =! $h -> query ( $H ); $ih = format_time ( $Hg );} $Fg = "" ; if ( $H ) $Fg = $b -> messageQuery ( $H , $ih ); if ( $Dc ){ $n = error () . $Fg ; return
false ;} if ( $Rf ) redirect ( $A , $le . $Fg ); return
2012-06-04 14:58:40 +00:00
true ;} function
2016-06-08 18:32:06 -06:00
queries ( $H ){ global $h ; static $Lf = array (); static $Hg ; if ( ! $Hg ) $Hg = microtime ( true ); if ( $H === null ) return
array ( implode ( " \n " , $Lf ), format_time ( $Hg )); $Lf [] = ( preg_match ( '~;$~' , $H ) ? "DELIMITER ;; \n $H ; \n DELIMITER " : $H ) . ";" ; return $h -> query ( $H );} function
2015-04-14 21:38:33 +00:00
apply_queries ( $H , $S , $sc = 'table' ){ foreach ( $S
as $Q ){ if ( ! queries ( " $H " . $sc ( $Q ))) return
2013-07-27 15:43:34 +00:00
false ;} return
2012-06-04 14:58:40 +00:00
true ;} function
2016-06-08 18:32:06 -06:00
queries_redirect ( $A , $le , $Rf ){ list ( $Lf , $ih ) = queries ( null ); return
query_redirect ( $Lf , $A , $le , $Rf , false , ! $Rf , $ih );} function
2015-04-14 21:38:33 +00:00
format_time ( $Hg ){ return
lang ( 1 , max ( 0 , microtime ( true ) - $Hg ));} function
2016-06-08 18:32:06 -06:00
remove_from_uri ( $if = "" ){ return
substr ( preg_replace ( "~(?<=[?&])( $if " . ( SID ? "" : "|" . session_name ()) . ")=[^&]*&~" , '' , " $_SERVER[REQUEST_URI] &" ), 0 , - 1 );} function
2015-04-14 21:38:33 +00:00
pagination ( $E , $Db ){ return " " . ( $E == $Db ? $E + 1 : '<a href="' . h ( remove_from_uri ( "page" ) . ( $E ? "&page= $E " . ( $_GET [ "next" ] ? "&next=" . urlencode ( $_GET [ "next" ]) : "" ) : "" )) . '">' . ( $E + 1 ) . "</a>" );} function
get_file ( $x , $Kb = false ){ $Hc = $_FILES [ $x ]; if ( ! $Hc ) return
null ; foreach ( $Hc
2016-06-08 18:32:06 -06:00
as $x => $X ) $Hc [ $x ] = ( array ) $X ; $J = '' ; foreach ( $Hc [ "error" ] as $x => $n ){ if ( $n ) return $n ; $C = $Hc [ "name" ][ $x ]; $qh = $Hc [ "tmp_name" ][ $x ]; $wb = file_get_contents ( $Kb && preg_match ( '~\\.gz$~' , $C ) ? "compress.zlib:// $qh " : $qh ); if ( $Kb ){ $Hg = substr ( $wb , 0 , 3 ); if ( function_exists ( "iconv" ) && preg_match ( "~^ \xFE\xFF |^ \xFF\xFE ~" , $Hg , $Xf )) $wb = iconv ( "utf-16" , "utf-8" , $wb ); elseif ( $Hg == " \xEF\xBB\xBF " ) $wb = substr ( $wb , 3 ); $J .= $wb . " \n\n " ;} else $J .= $wb ;} return $J ;} function
upload_error ( $n ){ $ie = ( $n == UPLOAD_ERR_INI_SIZE ? ini_get ( "upload_max_filesize" ) : 0 ); return ( $n ? lang ( 2 ) . ( $ie ? " " . lang ( 3 , $ie ) : "" ) : lang ( 4 ));} function
repeat_pattern ( $sf , $y ){ return
str_repeat ( " $sf {0,65535}" , $y / 65535 ) . " $sf {0," . ( $y % 65535 ) . "}" ;} function
2013-07-27 15:43:34 +00:00
is_utf8 ( $X ){ return ( preg_match ( '~~u' , $X ) &&! preg_match ( '~[\\0-\\x8\\xB\\xC\\xE-\\x1F]~' , $X ));} function
2015-04-14 21:38:33 +00:00
shorten_utf8 ( $P , $y = 80 , $Og = "" ){ if ( ! preg_match ( "(^(" . repeat_pattern ( "[ \t\r\n -\x{FFFF}]" , $y ) . ")($)?)u" , $P , $B )) preg_match ( "(^(" . repeat_pattern ( "[ \t\r\n -~]" , $y ) . ")($)?)" , $P , $B ); return
h ( $B [ 1 ]) . $Og . ( isset ( $B [ 2 ]) ? "" : "<i>...</i>" );} function
2014-04-27 06:39:48 +00:00
format_number ( $X ){ return
strtr ( number_format ( $X , 0 , "." , lang ( 5 )), preg_split ( '~~u' , lang ( 6 ), - 1 , PREG_SPLIT_NO_EMPTY ));} function
2013-07-27 15:43:34 +00:00
friendly_url ( $X ){ return
preg_replace ( '~[^a-z0-9_]~i' , '-' , $X );} function
2016-06-08 18:32:06 -06:00
hidden_fields ( $Hf , $md = array ()){ while ( list ( $x , $X ) = each ( $Hf )){ if ( ! in_array ( $x , $md )){ if ( is_array ( $X )){ foreach ( $X
as $Gd => $W ) $Hf [ $x . "[ $Gd ]" ] = $W ;} else
2014-04-27 06:39:48 +00:00
echo '<input type="hidden" name="' . h ( $x ) . '" value="' . h ( $X ) . '">' ;}}} function
2012-06-04 14:58:40 +00:00
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
2015-04-14 21:38:33 +00:00
table_status1 ( $Q , $Ec = false ){ $J = table_status ( $Q , $Ec ); return ( $J ? $J : array ( "Name" => $Q ));} function
column_foreign_keys ( $Q ){ global $b ; $J = array (); foreach ( $b -> foreignKeys ( $Q ) as $q ){ foreach ( $q [ "source" ] as $X ) $J [ $X ][] = $q ;} return $J ;} function
2016-06-08 18:32:06 -06:00
enum_input ( $U , $Ja , $o , $Y , $mc = null ){ global $b ; preg_match_all ( "~'((?:[^']|'')*)'~" , $o [ "length" ], $de ); $J = ( $mc !== null ? "<label><input type=' $U ' $Ja value=' $mc '" . (( is_array ( $Y ) ? in_array ( $mc , $Y ) : $Y === 0 ) ? " checked" : "" ) . "><i>" . lang ( 7 ) . "</i></label>" : "" ); foreach ( $de [ 1 ] as $s => $X ){ $X = stripcslashes ( str_replace ( "''" , "'" , $X )); $db = ( is_int ( $Y ) ? $Y == $s + 1 : ( is_array ( $Y ) ? in_array ( $s + 1 , $Y ) : $Y === $X )); $J .= " <label><input type=' $U ' $Ja value='" . ( $s + 1 ) . "'" . ( $db ? ' checked' : '' ) . '>' . h ( $b -> editVal ( $X , $o )) . '</label>' ;} return $J ;} function
input ( $o , $Y , $r ){ global $h , $Bh , $b , $w ; $C = h ( bracket_escape ( $o [ "field" ])); echo "<td class='function'>" ; if ( is_array ( $Y ) &&! $r ){ $Ea = array ( $Y ); if ( version_compare ( PHP_VERSION , 5.4 ) >= 0 ) $Ea [] = JSON_PRETTY_PRINT ; $Y = call_user_func_array ( 'json_encode' , $Ea ); $r = "json" ;} $ag = ( $w == "mssql" && $o [ "auto_increment" ]); if ( $ag &&! $_POST [ "save" ]) $r = null ; $Uc = ( isset ( $_GET [ "select" ]) || $ag ? array ( "orig" => lang ( 8 )) : array ()) + $b -> editFunctions ( $o ); $Ja = " name='fields[ $C ]'" ; if ( $o [ "type" ] == "enum" ) echo
2015-04-14 21:38:33 +00:00
nbsp ( $Uc [ "" ]) . "<td>" . $b -> editInput ( $_GET [ "edit" ], $o , $Ja , $Y ); else { $Kc = 0 ; foreach ( $Uc
2016-06-08 18:32:06 -06:00
as $x => $X ){ if ( $x === "" ||! $X ) break ; $Kc ++ ;} $Ne = ( $Kc ? " onchange= \" var f = this.form['function[" . h ( js_escape ( bracket_escape ( $o [ "field" ]))) . "]']; if ( $Kc > f.selectedIndex) f.selectedIndex = $Kc ; \" onkeyup='keyupChange.call(this);'" : "" ); $Ja .= $Ne ; $cd = ( in_array ( $r , $Uc ) || isset ( $Uc [ $r ])); echo ( count ( $Uc ) > 1 ? "<select name='function[ $C ]' onchange='functionChange(this);'" . on_help ( "getTarget(event).value.replace(/^SQL \$ /, '')" , 1 ) . ">" . optionlist ( $Uc , $r === null || $cd ? $r : "" ) . "</select>" : nbsp ( reset ( $Uc ))) . '<td>' ; $vd = $b -> editInput ( $_GET [ "edit" ], $o , $Ja , $Y ); if ( $vd != "" ) echo $vd ; elseif ( $o [ "type" ] == "set" ){ preg_match_all ( "~'((?:[^']|'')*)'~" , $o [ "length" ], $de ); foreach ( $de [ 1 ] as $s => $X ){ $X = stripcslashes ( str_replace ( "''" , "'" , $X )); $db = ( is_int ( $Y ) ? ( $Y >> $s ) & 1 : in_array ( $X , explode ( "," , $Y ), true )); echo " <label><input type='checkbox' name='fields[ $C ][ $s ]' value='" . ( 1 << $s ) . "'" . ( $db ? ' checked' : '' ) . " $Ne >" . h ( $b -> editVal ( $X , $o )) . '</label>' ;}} elseif ( preg_match ( '~blob|bytea|raw|file~' , $o [ "type" ]) && ini_bool ( "file_uploads" )) echo "<input type='file' name='fields- $C ' $Ne >" ; elseif (( $gh = preg_match ( '~text|lob~' , $o [ "type" ])) || preg_match ( "~ \n ~" , $Y )){ if ( $gh && $w != "sqlite" ) $Ja .= " cols='50' rows='12'" ; else { $L = min ( 12 , substr_count ( $Y , " \n " ) + 1 ); $Ja .= " cols='30' rows=' $L '" . ( $L == 1 ? " style='height: 1.2em;'" : "" );} echo "<textarea $Ja >" . h ( $Y ) . '</textarea>' ;} elseif ( $r == "json" ) echo "<textarea $Ja cols='50' rows='12' class='jush-js'>" . h ( $Y ) . '</textarea>' ; else { $ke = ( ! preg_match ( '~int~' , $o [ "type" ]) && preg_match ( '~^(\\d+)(,(\\d+))?$~' , $o [ "length" ], $B ) ? (( preg_match ( "~binary~" , $o [ "type" ]) ? 2 : 1 ) * $B [ 1 ] + ( $B [ 3 ] ? 1 : 0 ) + ( $B [ 2 ] &&! $o [ "unsigned" ] ? 1 : 0 )) : ( $Bh [ $o [ "type" ]] ? $Bh [ $o [ "type" ]] + ( $o [ "unsigned" ] ? 0 : 1 ) : 0 )); if ( $w == 'sql' && $h -> server_info >= 5.6 && preg_match ( '~time~' , $o [ "type" ])) $ke += 7 ; echo "<input" . (( ! $cd || $r === "" ) && preg_match ( '~(?<!o)int~' , $o [ "type" ]) ? " type='number'" : "" ) . " value='" . h ( $Y ) . "'" . ( $ke ? " maxlength=' $ke '" : "" ) . ( preg_match ( '~char|binary~' , $o [ "type" ]) && $ke > 20 ? " size='40'" : "" ) . " $Ja >" ;}}} function
2015-04-14 21:38:33 +00:00
process_input ( $o ){ global $b ; $t = bracket_escape ( $o [ "field" ]); $r = $_POST [ "function" ][ $t ]; $Y = $_POST [ "fields" ][ $t ]; if ( $o [ "type" ] == "enum" ){ if ( $Y ==- 1 ) return
false ; if ( $Y == "" ) return "NULL" ; return + $Y ;} if ( $o [ "auto_increment" ] && $Y == "" ) return
null ; if ( $r == "orig" ) return ( $o [ "on_update" ] == "CURRENT_TIMESTAMP" ? idf_escape ( $o [ "field" ]) : false ); if ( $r == "NULL" ) return "NULL" ; if ( $o [ "type" ] == "set" ) return
array_sum (( array ) $Y ); if ( $r == "json" ){ $r = "" ; $Y = json_decode ( $Y , true ); if ( ! is_array ( $Y )) return
false ; return $Y ;} if ( preg_match ( '~blob|bytea|raw|file~' , $o [ "type" ]) && ini_bool ( "file_uploads" )){ $Hc = get_file ( "fields- $t " ); if ( ! is_string ( $Hc )) return
2013-07-27 15:43:34 +00:00
false ; return
2015-04-14 21:38:33 +00:00
q ( $Hc );} return $b -> processInput ( $o , $Y , $r );} function
fields_from_edit (){ global $Wb ; $J = array (); foreach (( array ) $_POST [ "field_keys" ] as $x => $X ){ if ( $X != "" ){ $X = bracket_escape ( $X ); $_POST [ "function" ][ $X ] = $_POST [ "field_funs" ][ $x ]; $_POST [ "fields" ][ $X ] = $_POST [ "field_vals" ][ $x ];}} foreach (( array ) $_POST [ "fields" ] as $x => $X ){ $C = bracket_escape ( $x , 1 ); $J [ $C ] = array ( "field" => $C , "privileges" => array ( "insert" => 1 , "update" => 1 ), "null" => 1 , "auto_increment" => ( $x == $Wb -> primary ),);} return $J ;} function
search_tables (){ global $b , $h ; $_GET [ "where" ][ 0 ][ "op" ] = "LIKE %%" ; $_GET [ "where" ][ 0 ][ "val" ] = $_POST [ "query" ]; $Qc = false ; foreach ( table_status ( '' , true ) as $Q => $R ){ $C = $b -> tableName ( $R ); if ( isset ( $R [ "Engine" ]) && $C != "" && ( ! $_POST [ "tables" ] || in_array ( $Q , $_POST [ "tables" ]))){ $I = $h -> query ( "SELECT" . limit ( "1 FROM " . table ( $Q ), " WHERE " . implode ( " AND " , $b -> selectSearchProcess ( fields ( $Q ), array ())), 1 )); if ( ! $I || $I -> fetch_row ()){ if ( ! $Qc ){ echo "<ul> \n " ; $Qc = true ;} echo "<li>" . ( $I ? "<a href='" . h ( ME . "select=" . urlencode ( $Q ) . "&where[0][op]=" . urlencode ( $_GET [ "where" ][ 0 ][ "op" ]) . "&where[0][val]=" . urlencode ( $_GET [ "where" ][ 0 ][ "val" ])) . "'> $C </a> \n " : " $C : <span class='error'>" . error () . "</span> \n " );}}} echo ( $Qc ? "</ul>" : "<p class='message'>" . lang ( 9 )) . " \n " ;} function
2016-06-08 18:32:06 -06:00
dump_headers ( $kd , $ue = false ){ global $b ; $J = $b -> dumpHeaders ( $kd , $ue ); $gf = $_POST [ "output" ]; if ( $gf != "text" ) header ( "Content-Disposition: attachment; filename=" . $b -> dumpFilename ( $kd ) . ". $J " . ( $gf != "file" &&! preg_match ( '~[^0-9a-z]~' , $gf ) ? ". $gf " : "" )); session_write_close (); ob_flush (); flush (); return $J ;} function
2014-04-27 06:39:48 +00:00
dump_csv ( $K ){ foreach ( $K
as $x => $X ){ if ( preg_match ( "~[ \"\n ,; \t ]~" , $X ) || $X === "" ) $K [ $x ] = '"' . str_replace ( '"' , '""' , $X ) . '"' ;} echo
implode (( $_POST [ "format" ] == "csv" ? "," : ( $_POST [ "format" ] == "tsv" ? " \t " : ";" )), $K ) . " \r\n " ;} function
2015-04-14 21:38:33 +00:00
apply_sql_function ( $r , $e ){ return ( $r ? ( $r == "unixepoch" ? "DATETIME( $e , ' $r ')" : ( $r == "count distinct" ? "COUNT(DISTINCT " : strtoupper ( " $r (" )) . " $e )" ) : $e );} function
get_temp_dir (){ $J = ini_get ( "upload_tmp_dir" ); if ( ! $J ){ if ( function_exists ( 'sys_get_temp_dir' )) $J = sys_get_temp_dir (); else { $Ic =@ tempnam ( "" , "" ); if ( ! $Ic ) return
false ; $J = dirname ( $Ic ); unlink ( $Ic );}} return $J ;} function
password_file ( $j ){ $Ic = get_temp_dir () . "/adminer.key" ; $J =@ file_get_contents ( $Ic ); if ( $J ||! $j ) return $J ; $Sc =@ fopen ( $Ic , "w" ); if ( $Sc ){ chmod ( $Ic , 0660 ); $J = rand_string (); fwrite ( $Sc , $J ); fclose ( $Sc );} return $J ;} function
2014-04-27 06:39:48 +00:00
rand_string (){ return
md5 ( uniqid ( mt_rand (), true ));} function
2015-04-14 21:38:33 +00:00
select_value ( $X , $_ , $o , $hh ){ global $b , $ba ; if ( is_array ( $X )){ $J = "" ; foreach ( $X
2016-06-08 18:32:06 -06:00
as $Gd => $W ) $J .= "<tr>" . ( $X != array_values ( $X ) ? "<th>" . h ( $Gd ) : "" ) . "<td>" . select_value ( $W , $_ , $o , $hh ); return "<table cellspacing='0'> $J </table>" ;} if ( ! $_ ) $_ = $b -> selectLink ( $X , $o ); if ( $_ === null ){ if ( is_mail ( $X )) $_ = "mailto: $X " ; if ( $Jf = is_url ( $X )) $_ = (( $Jf == "http" && $ba ) || preg_match ( '~WebKit~i' , $_SERVER [ "HTTP_USER_AGENT" ]) ? $X : "https://www.adminer.org/redirect/?url=" . urlencode ( $X ));} $J = $b -> editVal ( $X , $o ); if ( $J !== null ){ if ( $J === "" ) $J = " " ; elseif ( ! is_utf8 ( $J )) $J = " \0 " ; elseif ( $hh != "" && is_shortable ( $o )) $J = shorten_utf8 ( $J , max ( 0 , + $hh )); else $J = h ( $J );} return $b -> selectVal ( $J , $_ , $o , $X );} function
is_mail ( $jc ){ $Ha = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]' ; $Vb = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])' ; $sf = " $Ha +( \\ . $Ha +)*@( $Vb ? \\ .)+ $Vb " ; return
is_string ( $jc ) && preg_match ( "(^ $sf (, \\ s* $sf )* \$ )i" , $jc );} function
2015-04-14 21:38:33 +00:00
is_url ( $P ){ $Vb = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])' ; return ( preg_match ( "~^(https?)://( $Vb ? \\ .)+ $Vb (: \\ d+)?(/.*)?( \\ ?.*)?(#.*)? \$ ~i" , $P , $B ) ? strtolower ( $B [ 1 ]) : "" );} function
is_shortable ( $o ){ return
preg_match ( '~char|text|lob|geometry|point|linestring|polygon|string~' , $o [ "type" ]);} function
count_rows ( $Q , $Z , $Ad , $Xc ){ global $w ; $H = " FROM " . table ( $Q ) . ( $Z ? " WHERE " . implode ( " AND " , $Z ) : "" ); return ( $Ad && ( $w == "sql" || count ( $Xc ) == 1 ) ? "SELECT COUNT(DISTINCT " . implode ( ", " , $Xc ) . ") $H " : "SELECT COUNT(*)" . ( $Ad ? " FROM (SELECT 1 $H$Yc ) x" : $H ));} function
slow_query ( $H ){ global $b , $T ; $m = $b -> database (); $jh = $b -> queryTimeout (); if ( support ( "kill" ) && is_object ( $i = connect ()) && ( $m == "" || $i -> select_db ( $m ))){ $Ld = $i -> result ( "SELECT CONNECTION_ID()" ); echo '<script type="text/javascript">
2013-07-27 15:43:34 +00:00
var timeout = setTimeout(function () {
ajax(\'' , js_escape ( ME ), 'script=kill\', function () {
2015-04-14 21:38:33 +00:00
}, \'token=' , $T , '&kill=' , $Ld , '\');
}, ' , 1000 * $jh , ');
2013-07-27 15:43:34 +00:00
</script>
2015-04-14 21:38:33 +00:00
' ;} else $i = null ; ob_flush (); flush (); $J =@ get_key_vals ( $H , $i , $jh ); if ( $i ){ echo "<script type='text/javascript'>clearTimeout(timeout);</script> \n " ; ob_flush (); flush ();} return
2014-04-27 06:39:48 +00:00
array_keys ( $J );} function
2016-06-08 18:32:06 -06:00
get_token (){ $Of = rand ( 1 , 1e6 ); return ( $Of ^ $_SESSION [ "token" ]) . ": $Of " ;} function
verify_token (){ list ( $T , $Of ) = explode ( ":" , $_POST [ "token" ]); return ( $Of ^ $_SESSION [ "token" ]) == $T ;} function
lzw_decompress ( $Ra ){ $Rb = 256 ; $Sa = 8 ; $kb = array (); $cg = 0 ; $dg = 0 ; for ( $s = 0 ; $s < strlen ( $Ra ); $s ++ ){ $cg = ( $cg << 8 ) + ord ( $Ra [ $s ]); $dg += 8 ; if ( $dg >= $Sa ){ $dg -= $Sa ; $kb [] = $cg >> $dg ; $cg &= ( 1 << $dg ) - 1 ; $Rb ++ ; if ( $Rb >> $Sa ) $Sa ++ ;}} $Qb = range ( " \0 " , " \xFF " ); $J = "" ; foreach ( $kb
2015-04-14 21:38:33 +00:00
as $s => $jb ){ $ic = $Qb [ $jb ]; if ( ! isset ( $ic )) $ic = $di . $di [ 0 ]; $J .= $ic ; if ( $s ) $Qb [] = $di . $ic [ 0 ]; $di = $ic ;} return $J ;} function
2016-06-08 18:32:06 -06:00
on_help ( $pb , $_g = 0 ){ return " onmouseover='helpMouseover(this, event, " . h ( $pb ) . ", $_g );' onmouseout='helpMouseout(this, event);'" ;} function
2015-04-14 21:38:33 +00:00
edit_form ( $a , $p , $K , $Jh ){ global $b , $w , $T , $n ; $Tg = $b -> tableName ( table_status1 ( $a , true )); page_header (( $Jh ? lang ( 10 ) : lang ( 11 )), $n , array ( "select" => array ( $a , $Tg )), $Tg ); if ( $K === false ) echo "<p class='error'>" . lang ( 12 ) . " \n " ; echo '<form action="" method="post" enctype="multipart/form-data" id="form">
' ; if ( ! $p ) echo "<p class='error'>" . lang ( 13 ) . " \n " ; else { echo "<table cellspacing='0' onkeydown='return editingKeydown(event);'> \n " ; foreach ( $p
2016-06-08 18:38:27 -06:00
as $C => $o ){ echo "<tr><th>" . $b -> fieldName ( $o ); $Lb = $_GET [ "set" ][ bracket_escape ( $C )]; if ( $Lb === null ){ $Lb = $o [ "default" ]; if ( $o [ "type" ] == "bit" && preg_match ( "~^b'([01]*)' \$ ~" , $Lb , $Xf )) $Lb = $Xf [ 1 ];} $Y = ( $K !== null ? ( $K [ $C ] != "" && $w == "sql" && preg_match ( "~enum|set~" , $o [ "type" ]) ? ( is_array ( $K [ $C ]) ? array_sum ( $K [ $C ]) :+ $K [ $C ]) : $K [ $C ]) : ( ! $Jh && $o [ "auto_increment" ] ? "" : ( isset ( $_GET [ "select" ]) ? false : $Lb ))); if ( ! $_POST [ "save" ] && is_string ( $Y )) $Y = $b -> editVal ( $Y , $o ); $r = ( $_POST [ "save" ] ? ( string ) $_POST [ "function" ][ $C ] : ( $Jh && $o [ "on_update" ] == "CURRENT_TIMESTAMP" ? "now" : ( $Y === false ? null : ( $Y !== null ? '' : 'NULL' )))); if ( preg_match ( "~time~" , $o [ "type" ]) && $Y == "CURRENT_TIMESTAMP" ){ $Y = "" ; $r = "now" ;} input ( $o , $Y , $r ); echo " \n " ;} if ( ! support ( "table" )) echo "<tr>" . "<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>" . "<td class='function'>" . adminer_html_select ( "field_funs[]" , $b -> editFunctions ( array ( "null" => isset ( $_GET [ "select" ])))) . "<td><input name='field_vals[]'>" . " \n " ; echo "</table> \n " ;} echo "<p> \n " ; if ( $p ){ echo "<input type='submit' value='" . lang ( 14 ) . "'> \n " ; if ( ! isset ( $_GET [ "select" ])) echo "<input type='submit' name='insert' value='" . ( $Jh ? lang ( 15 ) . "' onclick='return !ajaxForm(this.form, \" " . lang ( 16 ) . '...", this)' : lang ( 17 )) . "' title='Ctrl+Shift+Enter'> \n " ;} echo ( $Jh ? "<input type='submit' name='delete' value='" . lang ( 18 ) . "'" . confirm () . "> \n " : ( $_POST ||! $p ? "" : "<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" ]), '">
2014-04-27 06:39:48 +00:00
<input type="hidden" name="save" value="1">
<input type="hidden" name="token" value="' , $T , '">
</form>
2016-06-08 18:52:06 -06:00
' ;} global $b , $h , $Xb , $fc , $pc , $n , $Uc , $Zc , $ba , $ud , $w , $ca , $Pd , $Me , $tf , $Lg , $dd , $T , $vh , $Bh , $Ih , $ia ; 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] " ; $ba = $_SERVER [ "HTTPS" ] && strcasecmp ( $_SERVER [ "HTTPS" ], "off" ); @ ini_set ( "session.use_trans_sid" , false ); session_cache_limiter ( "" ); if ( ! defined ( "SID" )){ session_name ( "adminer_sid" ); $F = array ( 0 , preg_replace ( '~\\?.*~' , '' , $_SERVER [ "REQUEST_URI" ]), "" , $ba ); if ( version_compare ( PHP_VERSION , '5.2.0' ) >= 0 ) $F [] = true ; call_user_func_array ( 'session_set_cookie_params' , $F ); session_start ();} remove_slashes ( array ( & $_GET , & $_POST , & $_COOKIE ), $Jc ); 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 ); $Pd = array ( 'en' => 'English' , 'ar' => 'العربية' , 'bg' => 'БългарÑ� ки' , 'bn' => 'বাংলা' , 'bs' => 'Bosanski' , 'ca' => 'Català ' , 'cs' => 'ÄŒeÅ¡tina' , 'da' => 'Dansk' , 'de' => 'Deutsch' , 'el' => 'Ελληνικά' , 'es' => 'Español' , 'et' => 'Eesti' , 'fa' => 'Ù� ارسی' , 'fi' => 'Suomi' , 'fr' => 'Français' , 'gl' => 'Galego' , 'hu' => 'Magyar' , 'id' => 'Bahasa Indonesia' , 'it' => 'Italiano' , 'ja' => '日本語' , 'ko' => '한êµì–´' , 'lt' => 'Lietuvių' , 'nl' => 'Nederlands' , 'no' => 'Norsk' , 'pl' => 'Polski' , 'pt' => 'Português' , 'pt-br' => 'Português (Brazil)' , 'ro' => 'Limba Română' , 'ru' => 'РуÑ� Ñ� кий Ñ� зык' , 'sk' => 'SlovenÄ� ina' , 'sl' => 'Slovenski' , 'sr' => 'СрпÑ� ки' , 'ta' => 'த‌மிழà¯� ' , 'th' => 'ภาษาไทย' , 'tr' => 'Türkçe' , 'uk' => 'УкраїнÑ� ька' , 'vi' => 'Tiếng Việt' , 'zh' => 'ç®€ä½“ä¸æ–‡' , 'zh-tw' => 'ç¹� 體䏿–‡' ,); function
2013-07-27 15:43:34 +00:00
get_lang (){ global $ca ; return $ca ;} function
2016-06-08 18:32:06 -06:00
lang ( $t , $De = null ){ if ( is_string ( $t )){ $wf = array_search ( $t , get_translations ( "en" )); if ( $wf !== false ) $t = $wf ;} global $ca , $vh ; $uh = ( $vh [ $t ] ? $vh [ $t ] : $t ); if ( is_array ( $uh )){ $wf = ( $De == 1 ? 0 : ( $ca == 'cs' || $ca == 'sk' ? ( $De && $De < 5 ? 1 : 2 ) : ( $ca == 'fr' ? ( ! $De ? 0 : 1 ) : ( $ca == 'pl' ? ( $De % 10 > 1 && $De % 10 < 5 && $De / 10 % 10 != 1 ? 1 : 2 ) : ( $ca == 'sl' ? ( $De % 100 == 1 ? 0 : ( $De % 100 == 2 ? 1 : ( $De % 100 == 3 || $De % 100 == 4 ? 2 : 3 ))) : ( $ca == 'lt' ? ( $De % 10 == 1 && $De % 100 != 11 ? 0 : ( $De % 10 > 1 && $De / 10 % 10 != 1 ? 1 : 2 )) : ( $ca == 'bs' || $ca == 'ru' || $ca == 'sr' || $ca == 'uk' ? ( $De % 10 == 1 && $De % 100 != 11 ? 0 : ( $De % 10 > 1 && $De % 10 < 5 && $De / 10 % 10 != 1 ? 1 : 2 )) : 1 ))))))); $uh = $uh [ $wf ];} $Ea = func_get_args (); array_shift ( $Ea ); $Pc = str_replace ( "%d" , "%s" , $uh ); if ( $Pc != $uh ) $Ea [ 0 ] = format_number ( $De ); return
2015-04-14 21:38:33 +00:00
vsprintf ( $Pc , $Ea );} function
2016-06-08 18:38:27 -06:00
switch_lang (){ global $ca , $Pd ; echo "<form action='' method='post'> \n <div id='lang'>" , lang ( 19 ) . ": " . adminer_html_select ( "lang" , $Pd , $ca , "this.form.submit();" ), " <input type='submit' value='" . lang ( 20 ) . "' class='hidden'> \n " , "<input type='hidden' name='token' value='" . get_token () . "'> \n " ; echo "</div> \n </form> \n " ;} if ( isset ( $_POST [ "lang" ]) && verify_token ()){ cookie ( "adminer_lang" , $_POST [ "lang" ]); $_SESSION [ "lang" ] = $_POST [ "lang" ]; $_SESSION [ "translations" ] = array (); redirect ( remove_from_uri ());} $ca = "en" ; if ( isset ( $Pd [ $_COOKIE [ "adminer_lang" ]])){ cookie ( "adminer_lang" , $_COOKIE [ "adminer_lang" ]); $ca = $_COOKIE [ "adminer_lang" ];} elseif ( isset ( $Pd [ $_SESSION [ "lang" ]])) $ca = $_SESSION [ "lang" ]; else { $ua = array (); preg_match_all ( '~([-a-z]+)(;q=([0-9.]+))?~' , str_replace ( "_" , "-" , strtolower ( $_SERVER [ "HTTP_ACCEPT_LANGUAGE" ])), $de , PREG_SET_ORDER ); foreach ( $de
2014-04-27 06:39:48 +00:00
as $B ) $ua [ $B [ 1 ]] = ( isset ( $B [ 3 ]) ? $B [ 3 ] : 1 ); arsort ( $ua ); foreach ( $ua
2016-06-08 18:32:06 -06:00
as $x => $Kf ){ if ( isset ( $Pd [ $x ])){ $ca = $x ; break ;} $x = preg_replace ( '~-.*~' , '' , $x ); if ( ! isset ( $ua [ $x ]) && isset ( $Pd [ $x ])){ $ca = $x ; break ;}}} $vh =& $_SESSION [ "translations" ]; if ( $_SESSION [ "translations_version" ] != 2223616353 ){ $vh = array (); $_SESSION [ "translations_version" ] = 2223616353 ;} function
2016-06-08 18:52:06 -06:00
get_translations ( $Od ){ switch ( $Od ){ case "en" : $g = "A9 D “yÔ@s:ÀGà¡(¸ ffƒ‚Š¦ã ˆÙ : Ä S� °Þa2 \" 1¦.. L'ƒI´êm‘ #Çs,†K ƒšOP#IÌ@%9� ¥ i4 Èo2Ï� Æó €Ë,9� % ÀPÀb2� £a¸àr\n 2› N CÈ(Þr4™Í1C`(� :Ebç9A Èi: ‰&ã™”åy·ˆ Fó½Ð Y‚ˆ \r ´ \n – 8Z ÔS=\$ A� œ † ¤`Ñ=ËÜŒ²‚ž0Ê \n ÒãdFé ŒÞn:Zΰ)ãQŒµ™öú£ °Ak¾ßÄ ê}äˆe‹çADÍéœêaÊį ¢„ \\ Ã}� ö5ð#|@èhÚ 3·ÃN¾}@¡ÑiÕ ¦ «ÁËžN ›t¼Å~9‚ˆ™È öBØ� 8¦:- pÎüˆKXÂ9,¢pÊ: ë8Ö ã(ß \0 À‹(˜ž½@ò¨¬-BüÆŽN’üŠ@.£®9Â#� Èý3ˆ«®Ó‰ƒzÔ7:‹ðÚÞŒ€@� FëÒÄ‹À1ò€ C @Þÿ£C«°)Š0Û:Ò9 (Ʀ³k‹Q% è< :ÊèKN � Œèä 2c(î L“3B‹ 4ðtº¼D!*B1 ,è ; Ã:üŠr¬® èÝ+¼«äØ3Œè ÎÎQ1 1� \0 Sz<Žï Ô,ëÈȤŒqêï 9ikl*8±üz3»óe ×Ѓªe7§ ˜ÆÞµ ˆ@× \r ±ÛY6 ¬Âö1 2*ò7¾qÀæÓM“*ü K1“§6Ùõ³Á� B þ ô¢Â0Æ ˆÅ Û¶½À(2L£è \$ ¬Tè \" � …Ým ¶åÄ‹� V� ÆéŠvõ°¾¢ô Ë ± 4 î Ã0ص´n\\ l‚¯ \" Þ� WÃÊ6¾L æ9ŒÕ” 8 c/ \$ TzÖß� ÉúB6¶R˜ ‰b”¾.„ xÖ9� H G‹ : O“Ï™`Ý`©)Bö; 8ZB!Šb� ŒË� ã \\ z |ï C2Θg«ZQ Œø‚ Œ©9¸Ù*ctKÖ8 \r ( É‘#·«±œå:èÜ”%Q Î8EqjB§í›v¨ \$ cB 3 ¡ Ð: ƒ€æ áxïÉ…É „¿ Ë8ΠǼãÅ ŽtH^ 4#“*:q \" ú,Þ� a }vn60x Œ!ò~ŸI2^¡ \$ :“~¦¾c•} ªQ Ò×ìc…äá%ÊŒúÚ\" “€È”0./AHî @î²ï “峩 \$\n [ÇмÁ\0 P )‘ i 3E£ \r ÚF•]íÞ Ó¤°ÉRXK‰ƒC \r §Ý3½Æ’LÉ© \$\r ' 2 ➨I©5j‡U¹ Å ¶ÎÁè/D@‚ bîHJYM/ \\ Ï“â M›Î Æ ˜ ÈåÓ;Xe!Œ� ƒ¾h á•% Á>– � @ xS \n ‹A µ@¤MS ž(ÈÅí¦rÖ± «Ý I × âJsƒ’� y Ü€¨ƒ J *»7¦d� E C;UWDÜ� 2F ‚£å?Æývœ \" ðI!a DnaB pÊZYKRCà(× (´Ž xN T( @‚ ( \n ‘ €\" P˜ d‚Ù\r á°—²”Pi‚ (agÉð’ 4Uj´ '– 5 ~N8f *Ȧ¿cg&•ëÄM� ’ RR ÍQ —樣‡tq ÃlÀ4í ¤†’B¾‘™(?k‰ “ã j� º=Z \r åA \$ DÀRÂ1_f� z-È—f� Ó] ½›#ô8 ‚² iÁ@ 蓈a>D� 7 §n÷L u ᢠ¾GÌõÞA@aÊ2� yýB¢<+)*T!ɰÙ!å9¢P êr!pàÑ&úV|'ên §ë3I \n Ö[ä +@´Ö \r š“� µ µ> ¢Ô‰Æ°§Ÿ@¦AC’¡£.™ ¬ÔÍ.É´~� \0 ‚AJrÑC ‘ù…Çþ§™TJ Ò<GÌ,7!0ž°hùy ÍlÎ \0 ¤Ä aù ¦4ØK b¶VÙ� ;%ù6 @¨ B H ¿@²|ÁÎ L{êvo Pä`éÝ{6h0† ^ ,i‚ 0‰ì� ˜ 3 \n ‚ � ‹ bÔô1´ BB Â[\" O–X‘0šE €M™/ÖnœY× - ¢²¦ ¿Úd¯7Œ \n ¼WÐ5ÝÙÆˆJ å|d–ú×Ú \0 ]e,U}2× Üeßki e…6Ë ’ˆN äeE÷ \\ � ]’ ?o, wYoH¡Ç“‚‰\0 PW ¡Šó¬øØíë2†� Ká ¬‡¶ÊKõˆKf û†Ë7aË9ù p³–P†u‘)vŽð ½ Ò`bÉôÙe*|äÍà“ƒŒQ×yóhŽ%œ-ƒ’> Ãl¤à çÃ Í Â!–m I¸|Þ� N « “ Í7©†3ÄXIü/ \\ OŒ‰Ä¦Ul0ý Ye- CI…(¨¿—†Ôž2a±6'› (äç‘)§Œœ]tòœMcM� ZN7Æ4ا‚ P|é”� }D] ðR[¥ §škH� c¼Y„ñ|ÞÎs� c 'ñŽ{ \\ ™ÚmE ù g ƒÃXó0—é½9k”é@KùÂè¼ï6ÖF04šS>é} \r � ×êæÓ³kF¸%³ƒ+:ÁašŽ Àrkl¬’] 6Û €� Rl^Ö„Õ¤ËW²cmC5§Æ5Œ€Ô¹ «4ÄÝØu(3È ÊŵÖ6ÑÛ/bìÚ™³öFŸ›Ôü„ª V Ð[§WrnN»„œSf¼J ùÆ\" â|Ù X}ï4¦ŸsVÊ)½÷ŠN—qH]Ë·Ì FÑÊ ‘¹ÏZ ({3g ZaQ\n j÷œ†- &9y¸éš8¥©«djY½ÆÒîÑÅÚg� Òí³ \\ t (M ¹wÖÍÑ¥±nyÆ5âqÕ� ©¹¢>Ú;k Ó¢� Ë«†>6� ²ò Uÿ4±� > Ñã’ÚŒ‰I� uš´kžaž9&1Öú¯hñîµÕs¯WǺ ”sæ:¡òš8çÆFvD…7¤ ʆUè㸠¨C \" b¬È<„²’Éš \r |à›#‘줩à¶÷;å ÇÀ›? ×y¼ÞçÅ÷ÄNNUå<uBÌý‡ ó ³ åO'è \\ ÷›îÿ-н5N-5[Âs(wUV � Ì^¿Õû ÅÏ;/¥@žÕ ÷_wT%9-4ü伞ÿmçzdžDÉŸÙm2Qñ¾g·ñd \$ sÀ‹úÙÄB‘dØw°ìÔM:|í“·h†²LEÞ� Èüm”Ënœkùµæ1ÀçnȲr2\\ KhKüÿ× uÝhµ øN€ÚËɰÒífØ+nþD \r €V†€Ò `ÖßBF–Â0b„– \r ÌbÂð= \" pÞ‡že \n €Œ p)Å ä ¸ fä.Ä%§Á \0 W\0 ‚ Ç� \\ °Œb \" lR3 \0 ¤MöâI~.ð2ïj.í#ò6¯Š; Œ� ʺwi“ ,†éôÉF ”#¢¢â¢aÂ@70°ehüÝ¥ÀS)6 B ! ÊÈ ÚËìxKå ì� Í Lj™# Æ,r.l3 \0 \n Y J5 °fÒï \n ÓPÛ ŒjY \0 £� ôžŽ \0 M+.P%& Ž þÊ4]ä ÈŒæ \0 ˜•e*Ì€ñ Ñ0 \\ (Þ #N¬ë.%DÌ f 'bBä à +:%é \$ •ÆX'dØ-€ó @†< ïfømªœîCø˜p*{må ÉÇ 4 åDw ©› VMDDò¥ \0 [Îò_ \0 ‚ )¢Ôƒ.øK\" ZGbLÙ F*K‘ ÑÀ\r � ÜÇ‘Æ À"; break ; case "ar" : $g = "ÙC¶P‚ Â� ²†l*„ \r ”,& \n ÙA¶ í„ø(J. ™„ 0Se \\ ¶ \r …Œ bÙ@¶ 0´ , \n Q,l)ÅÀ¦Âµ°¬†A òéj _1� CÐM…«e €¢ S™ \n g@ŸOgë¨ô’XÙDMë )˜° 0 Œ†cA¨Øn8 Çe*y#au4� ¡ ´ Ir*;rSÁ UµdJ }‰ÎÑ *zªU� @¦ŠX;ai1l(nó Õòý� Ã[ Óy™dÞu 'c(€Üo F“±¤Øe3™Nb ¦ êp2 NšS¡ Ó³: LZúz¶PØ \\ bæ¼uÄ.•[¶Q`u ! Š)èÍ&ã<Òq)æÖ ˜ÈF>Ø¡� Ps7Xì5g5¸K®K¦Â¦àØ÷á—0ʇƢ¶§ \n S ü› r \$ ¯ jÄ(î¢v†°Ì ¶!Jbž¸¡‰q ««0 \n ¸Ž� ÊÚV¨?� \$ W¡‰¡FÃÂE{ü‡-‰:>W9ÏJ|Á¨eRhY¨+dxB&…[ Í*¯³ l ƒêŽ (B&÷¾ÆÉ è 4S ! Ä ÀËdPB¾ñä =ÈtO ¢ ãë ?‰:²X£ª Ø� ¢eJ \$ £éÚ \n &Œ3Þœ:îšã •Êà ‡OìK¦‰Ð¬ ÈJÓ \0 ’ 6Ž\r xÚ2� â–ÙÒíèÞ26� °æÒŠbˆ˜4·jzBX› ´m \$ *³Ó! 0õe \\ ê0É9 ª• [« P(%WVϱe W° 4€•1¥ª¬›ºÈ’-PI \n ?Z-� 2÷<¤‘|P¬®6*p–£åÊi^¦ÅZÔ� =\$ R®ˆÏV-YmÉ ì†l Od ½•6! ¬^RÚ cΠèØ66Ž ^� Œc Ý0¤ êsR‰–)ek/ÈJ]9J¨òÔ‡ ©£ŒðX³¥� )2 ¤ÖêO \n ö„å.² 6!°1o~±lkÌȦ ÖxþhEº µÅ™} ˜ÖSã¨ÆB� ñYâ—¦\r i!Öu� n› \$ Žó¯ìE 8å°<íXO7½±5h¶*mÅÃ� è6 Ló@0ŽM(Þ3 Ãc¶2°¯Âµ`º� 4Ü›� B ÞÔ \r ¸ � ò £pæ:Œc d9ŒØP@6\r ã;¶9…� åÇŒ#8Âí„ @KP \r ®ØêÝ… ˜R§¤èid b˜¤# Š¢>’¨Ž¡Z g Å®¯zãWÇØò Ísn_ ðÊ3 \n œÑ o¤‹äîÆ¯«g‡ž¡ Ù „Ù \n l й\r £Õ©q ‚Es¢õÁP Ý FYI˜š C™» F¦ \0 0î Ã’ ¡à8 –ò < &…¼†`z ƒ@t� À9ƒ ^ ü! Á„2:ÐÜ C� .� œ ©ˆZ\r Û’ \r !¼7 ðDÃC‘±� \\ /œ6 \$ Á >RjT2©u2 xa Êl )ÐÐ§Õ M !¬ÒªƒS\n l'S*¨º‘ *JOÚÁ1©i ¾’äòˆJ ?ˆDÈ\n ÷zUI* C¥m~5‹ U™© \r Áâ‘3ö`ÈkgwÅZ9 ¢²� J{LmJ½þ(èÞïÈ\" ÎPdØT“6>ÇL3á+ll… F] Ž¡ (e £Ÿ#–”ÔsÄŽ i ¨2O r› &a \$ � “> iT� M*0ܨ\r é¿ \r ä8‡Sd¦ƒ0r \r á´ Jßà
2012-06-04 14:58:40 +00:00
Min_PDO
extends
2013-07-27 15:43:34 +00:00
PDO{var $_result , $server_info , $affected_rows , $errno , $error ;function
2016-06-08 18:32:06 -06:00
__construct(){global $b ; $wf =array_search(" SQL ", $b->operators );if( $wf !==false)unset( $b->operators [ $wf ]);}function
2015-04-14 21:38:33 +00:00
dsn( $cc , $V , $G ){try{parent::__construct( $cc , $V , $G );}catch(Exception $uc ){auth_error( $uc->getMessage ());} $this->setAttribute (13,array('Min_PDOStatement')); $this->server_info = $this->getAttribute (4);}function
query( $H , $Ch =false) { $I = parent :: query ( $H ); $this -> error = "" ; if ( ! $I ){ list (, $this -> errno , $this -> error ) = $this -> errorInfo (); return
2014-04-27 06:39:48 +00:00
false ; }$this->store_result ( $I );return $I ;}function
multi_query( $H ){return $this->_result = $this->query ( $H );}function
store_result( $I =null){if(! $I ) { $I = $this -> _result ; if ( ! $I ) return
false ; } if( $I->columnCount ()) { $I -> num_rows = $I -> rowCount (); return $I ; }$this->affected_rows = $I->rowCount ();return
2012-06-04 14:58:40 +00:00
true;}function
2013-07-27 15:43:34 +00:00
next_result(){if(! $this->_result )return
false; $this->_result ->_offset=0;return@ $this->_result ->nextRowset();}function
2015-04-14 21:38:33 +00:00
result( $H , $o =0) { $I = $this -> query ( $H ); if ( ! $I ) return
false ; $K = $I -> fetch (); return $K [ $o ]; } }class
2012-06-04 14:58:40 +00:00
Min_PDOStatement
extends
PDOStatement{var $_offset =0, $num_rows ;function
fetch_assoc(){return $this->fetch (2);}function
fetch_row(){return $this->fetch (3);}function
2015-04-14 21:38:33 +00:00
fetch_field() { $K = ( object ) $this -> getColumnMeta ( $this -> _offset ++ ); $K -> orgtable = $K -> table ; $K -> orgname = $K -> name ; $K -> charsetnr = ( in_array ( "blob" ,( array ) $K -> flags ) ? 63 : 0 ); return $K ; } }} $Xb =array();class
2014-04-27 06:39:48 +00:00
Min_SQL{var $_conn ;function
2016-06-08 18:32:06 -06:00
__construct( $h ) { $this -> _conn = $h ; } function
select( $Q , $M , $Z , $Xc , $We =array(), $z =1, $E =0, $Df =false){global $b , $w ; $Ad =(count( $Xc )<count( $M )); $H = $b->selectQueryBuild ( $M , $Z , $Xc , $We , $z , $E );if(! $H ) $H =" SELECT ".limit(( $_GET["page"] !=" last "&&+ $z && $Xc && $Ad && $w ==" sql "?" SQL_CALC_FOUND_ROWS ":"").implode(" , ", $M )." \nFROM ".table( $Q ),( $Z ?" \nWHERE ".implode(" AND ", $Z ):"").( $Xc && $Ad ?" \nGROUP BY ".implode(" , ", $Xc ):"").( $We ?" \nORDER BY ".implode(" , ", $We ):""),( $z !=""?+ $z :null),( $E ? $z * $E :0)," \n "); $Hg =microtime(true); $J = $this->_conn ->query( $H );if( $Df )echo $b->selectQuery ( $H ,format_time( $Hg ));return $J ;}function
delete( $Q , $Mf , $z =0) { $H = "FROM " . table ( $Q ); return
queries ( "DELETE" . ( $z ? limit1 ( $H , $Mf ) : " $H$Mf " )); } function
update( $Q , $O , $Mf , $z =0, $ug =" \n ") { $Th = array (); foreach ( $O
as $x => $X ) $Th [] = " $x = $X " ; $H = table ( $Q ) . " SET $ug " . implode ( ", $ug " , $Th ); return
queries ( "UPDATE" . ( $z ? limit1 ( $H , $Mf ) : " $H$Mf " )); } function
2014-04-27 06:39:48 +00:00
insert( $Q , $O ){return
queries(" INSERT INTO ".table( $Q ).( $O ?" ( ".implode(" , ",array_keys( $O ))." ) \nVALUES ( ".implode(" , ", $O )." ) ":" DEFAULT VALUES "));}function
2016-06-08 18:32:06 -06:00
insertUpdate( $Q , $L , $Bf ){return
2014-04-27 06:39:48 +00:00
false;}function
begin(){return
queries(" BEGIN ");}function
commit(){return
queries(" COMMIT ");}function
rollback(){return
2016-06-08 18:32:06 -06:00
queries(" ROLLBACK ");}} $Xb["sqlite"] =" SQLite 3 "; $Xb["sqlite2"] =" SQLite 2 ";if(isset( $_GET["sqlite"] )||isset( $_GET["sqlite2"] )) { $zf = array (( isset ( $_GET [ "sqlite" ]) ? "SQLite3" : "SQLite" ), "PDO_SQLite" ); define ( "DRIVER" ,( isset ( $_GET [ "sqlite" ]) ? "sqlite" : "sqlite2" )); if ( class_exists ( isset ( $_GET [ "sqlite" ]) ? "SQLite3" : "SQLiteDatabase" )){ if ( isset ( $_GET [ "sqlite" ])){ class
2013-07-27 15:43:34 +00:00
Min_SQLite { var $extension = "SQLite3" , $server_info , $affected_rows , $errno , $error , $_link ; function
2016-06-08 18:32:06 -06:00
__construct ( $Ic ){ $this -> _link = new
2015-04-14 21:38:33 +00:00
SQLite3 ( $Ic ); $Wh = $this -> _link -> version (); $this -> server_info = $Wh [ "versionString" ]; } function
2014-04-27 06:39:48 +00:00
query( $H ) { $I =@ $this -> _link -> query ( $H ); $this -> error = "" ; if ( ! $I ){ $this -> errno = $this -> _link -> lastErrorCode (); $this -> error = $this -> _link -> lastErrorMsg (); return
false ; } elseif( $I->numColumns ())return
2012-06-04 14:58:40 +00:00
new
2014-04-27 06:39:48 +00:00
Min_Result( $I ); $this->affected_rows = $this->_link ->changes();return
2012-06-04 14:58:40 +00:00
true;}function
2014-04-27 06:39:48 +00:00
quote( $P ){return(is_utf8( $P )?" '".$this->_link->escapeString($P)."' ":" x '".reset(unpack(' H * ',$P))."' ");}function
2012-06-04 14:58:40 +00:00
store_result(){return $this->_result ;}function
2015-04-14 21:38:33 +00:00
result( $H , $o =0) { $I = $this -> query ( $H ); if ( ! is_object ( $I )) return
false ; $K = $I -> _result -> fetchArray (); return $K [ $o ]; } }class
2012-06-04 14:58:40 +00:00
Min_Result{var $_result , $_offset =0, $num_rows ;function
2016-06-08 18:32:06 -06:00
__construct( $I ) { $this -> _result = $I ; } function
2012-06-04 14:58:40 +00:00
fetch_assoc(){return $this->_result ->fetchArray(SQLITE3_ASSOC);}function
fetch_row(){return $this->_result ->fetchArray(SQLITE3_NUM);}function
2014-04-27 06:39:48 +00:00
fetch_field() { $e = $this -> _offset ++ ; $U = $this -> _result -> columnType ( $e ); return ( object ) array ( "name" => $this -> _result -> columnName ( $e ), "type" => $U , "charsetnr" => ( $U == SQLITE3_BLOB ? 63 : 0 ),); } function
2012-06-04 14:58:40 +00:00
__desctruct(){return $this->_result ->finalize();}}}else{class
Min_SQLite{var $extension =" SQLite ", $server_info , $affected_rows , $error , $_link ;function
2016-06-08 18:32:06 -06:00
__construct( $Ic ) { $this -> server_info = sqlite_libversion (); $this -> _link = new
2015-04-14 21:38:33 +00:00
SQLiteDatabase ( $Ic ); } function
2016-06-08 18:32:06 -06:00
query( $H , $Ch =false) { $re = ( $Ch ? "unbufferedQuery" : "query" ); $I =@ $this -> _link -> $re ( $H , SQLITE_BOTH , $n ); $this -> error = "" ; if ( ! $I ){ $this -> error = $n ; return
2014-04-27 06:39:48 +00:00
false ; } elseif( $I ===true) { $this -> affected_rows = $this -> changes (); return
2012-06-04 14:58:40 +00:00
true ; } return
new
2014-04-27 06:39:48 +00:00
Min_Result( $I );}function
quote( $P ){return" '".sqlite_escape_string($P)."' ";}function
2012-06-04 14:58:40 +00:00
store_result(){return $this->_result ;}function
2015-04-14 21:38:33 +00:00
result( $H , $o =0) { $I = $this -> query ( $H ); if ( ! is_object ( $I )) return
false ; $K = $I -> _result -> fetch (); return $K [ $o ]; } }class
2012-06-04 14:58:40 +00:00
Min_Result{var $_result , $_offset =0, $num_rows ;function
2016-06-08 18:32:06 -06:00
__construct( $I ) { $this -> _result = $I ; if ( method_exists ( $I , 'numRows' )) $this -> num_rows = $I -> numRows (); } function
2014-04-27 06:39:48 +00:00
fetch_assoc() { $K = $this -> _result -> fetch ( SQLITE_ASSOC ); if ( ! $K ) return
false ; $J = array (); foreach ( $K
as $x => $X ) $J [( $x [ 0 ] == '"' ? idf_unescape ( $x ) : $x )] = $X ; return $J ; } function
2012-06-04 14:58:40 +00:00
fetch_row(){return $this->_result ->fetch(SQLITE_NUM);}function
2016-06-08 18:32:06 -06:00
fetch_field() { $C = $this -> _result -> fieldName ( $this -> _offset ++ ); $sf = '(\\[.*]|"(?:[^"]|"")*"|(.+))' ; if ( preg_match ( "~^( $sf \\ .)? $sf \$ ~" , $C , $B )){ $Q = ( $B [ 3 ] != "" ? $B [ 3 ] : idf_unescape ( $B [ 2 ])); $C = ( $B [ 5 ] != "" ? $B [ 5 ] : idf_unescape ( $B [ 4 ])); } return(object)array(" name "=> $C ," orgname "=> $C ," orgtable "=> $Q ,);}}}}elseif(extension_loaded(" pdo_sqlite ")){class
2012-06-04 14:58:40 +00:00
Min_SQLite
extends
Min_PDO{var $extension =" PDO_SQLite ";function
2016-06-08 18:32:06 -06:00
__construct( $Ic ) { $this -> dsn ( DRIVER . ": $Ic " , "" , "" ); } }}if(class_exists(" Min_SQLite ")){class
2012-06-04 14:58:40 +00:00
Min_DB
extends
Min_SQLite{function
2016-06-08 18:32:06 -06:00
__construct(){parent::__construct(" : memory : ");}function
select_db( $Ic ){if(is_readable( $Ic )&& $this->query (" ATTACH ". $this->quote (preg_match(" ~ ( ^ [ / \\\\ ] |: ) ~ ", $Ic )? $Ic :dirname( $_SERVER["SCRIPT_FILENAME"] )." / $Ic ")." AS a ")){parent::__construct( $Ic );return
2012-06-04 14:58:40 +00:00
true;}return
false;}function
2014-04-27 06:39:48 +00:00
multi_query( $H ){return $this->_result = $this->query ( $H );}function
2012-06-04 14:58:40 +00:00
next_result(){return
2014-04-27 06:39:48 +00:00
false;}}}class
Min_Driver
extends
Min_SQL{function
2016-06-08 18:32:06 -06:00
insertUpdate( $Q , $L , $Bf ) { $Th = array (); foreach ( $L
2015-04-14 21:38:33 +00:00
as $O ) $Th [] = "(" . implode ( ", " , $O ) . ")" ; return
queries ( "REPLACE INTO " . table ( $Q ) . " (" . implode ( ", " , array_keys ( reset ( $L ))) . ") VALUES \n " . implode ( ", \n " , $Th )); } }function
2013-07-27 15:43:34 +00:00
idf_escape( $t ){return'" '.str_replace(' "','""', $t ).'" ';}function
table($t){return
idf_escape($t);}function
2012-06-04 14:58:40 +00:00
connect(){return
new
Min_DB;}function
get_databases(){return
array();}function
2016-06-08 18:32:06 -06:00
limit($H,$Z,$z,$D=0,$ug=" "){return" $H$Z".($z!==null?$ug."LIMIT $z".($D?" OFFSET $D":""):"");}function
2014-04-27 06:39:48 +00:00
limit1($H,$Z){global$h;return($h->result("SELECT sqlite_compileoption_used(' ENABLE_UPDATE_DELETE_LIMIT ')")?limit($H,$Z,1):" $H$Z");}function
2015-04-14 21:38:33 +00:00
db_collation($m,$nb){global$h;return$h->result("PRAGMA encoding");}function
2012-06-04 14:58:40 +00:00
engines(){return
array();}function
logged_user(){return
get_current_user();}function
tables_list(){return
get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN (' table ', ' view ') ORDER BY (name = ' sqlite_sequence '), name",1);}function
2015-04-14 21:38:33 +00:00
count_tables($l){return
2012-06-04 14:58:40 +00:00
array();}function
2014-04-27 06:39:48 +00:00
table_status($C=""){global$h;$J=array();foreach(get_rows("SELECT name AS Name, type AS Engine FROM sqlite_master WHERE type IN (' table ', ' view ') ".($C!=""?"AND name = ".q($C):"ORDER BY name"))as$K){$K["Oid"]=1;$K["Auto_increment"]="";$K["Rows"]=$h->result("SELECT COUNT(*) FROM ".idf_escape($K["Name"]));$J[$K["Name"]]=$K;}foreach(get_rows("SELECT * FROM sqlite_sequence",null,"")as$K)$J[$K["name"]]["Auto_increment"]=$K["seq"];return($C!=""?$J[$C]:$J);}function
is_view($R){return$R["Engine"]=="view";}function
fk_support($R){global$h;return!$h->result("SELECT sqlite_compileoption_used(' OMIT_FOREIGN_KEY ')");}function
2016-06-08 18:32:06 -06:00
fields($Q){global$h;$J=array();$Bf="";foreach(get_rows("PRAGMA table_info(".table($Q).")")as$K){$C=$K["name"];$U=strtolower($K["type"]);$Lb=$K["dflt_value"];$J[$C]=array("field"=>$C,"type"=>(preg_match(' ~ int ~ i ',$U)?"integer":(preg_match(' ~ char | clob | text ~ i ',$U)?"text":(preg_match(' ~ blob ~ i ',$U)?"blob":(preg_match(' ~ real | floa | doub ~ i ',$U)?"real":"numeric")))),"full_type"=>$U,"default"=>(preg_match("~' ( .* ) '~",$Lb,$B)?str_replace("''","' ", $B[1] ):( $Lb ==" NULL "?null: $Lb ))," null "=>! $K["notnull"] ," privileges "=>array(" select "=>1," insert "=>1," update "=>1)," primary "=> $K["pk"] ,);if( $K["pk"] ){if( $Bf !="") $J[$Bf] [" auto_increment "]=false;elseif(preg_match('~^integer$~i', $U )) $J[$C] [" auto_increment "]=true; $Bf = $C ;}} $Fg = $h->result (" SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ".q( $Q ));preg_match_all('~((" [ ^ "]*+" ) +| [ a - z0 - 9_ ] + ) \s + text\s + COLLATE\s + ( \ '[^\']+\'|\S+)~i' , $Fg , $de , PREG_SET_ORDER ); foreach ( $de
2014-04-27 06:39:48 +00:00
as $B ){ $C = str_replace ( '""' , '"' , preg_replace ( '~^"|"$~' , '' , $B [ 1 ])); if ( $J [ $C ]) $J [ $C ][ "collation" ] = trim ( $B [ 3 ], "'" );} return $J ;} function
2016-06-08 18:32:06 -06:00
indexes ( $Q , $i = null ){ global $h ; if ( ! is_object ( $i )) $i = $h ; $J = array (); $Fg = $i -> result ( "SELECT sql FROM sqlite_master WHERE type = 'table' AND name = " . q ( $Q )); if ( preg_match ( '~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*")++)~i' , $Fg , $B )){ $J [ "" ] = array ( "type" => "PRIMARY" , "columns" => array (), "lengths" => array (), "descs" => array ()); preg_match_all ( '~((("[^"]*+")+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i' , $B [ 1 ], $de , PREG_SET_ORDER ); foreach ( $de
as $B ){ $J [ "" ][ "columns" ][] = idf_unescape ( $B [ 2 ]) . $B [ 4 ]; $J [ "" ][ "descs" ][] = ( preg_match ( '~DESC~i' , $B [ 5 ]) ? '1' : null );}} if ( ! $J ){ foreach ( fields ( $Q ) as $C => $o ){ if ( $o [ "primary" ]) $J [ "" ] = array ( "type" => "PRIMARY" , "columns" => array ( $C ), "lengths" => array (), "descs" => array ( null ));}} $Gg = get_key_vals ( "SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = " . q ( $Q ), $i ); foreach ( get_rows ( "PRAGMA index_list(" . table ( $Q ) . ")" , $i ) as $K ){ $C = $K [ "name" ]; $u = array ( "type" => ( $K [ "unique" ] ? "UNIQUE" : "INDEX" )); $u [ "lengths" ] = array (); $u [ "descs" ] = array (); foreach ( get_rows ( "PRAGMA index_info(" . idf_escape ( $C ) . ")" , $i ) as $kg ){ $u [ "columns" ][] = $kg [ "name" ]; $u [ "descs" ][] = null ;} if ( preg_match ( '~^CREATE( UNIQUE)? INDEX ' . preg_quote ( idf_escape ( $C ) . ' ON ' . idf_escape ( $Q ), '~' ) . ' \((.*)\)$~i' , $Gg [ $C ], $Xf )){ preg_match_all ( '/("[^"]*+")+( DESC)?/' , $Xf [ 2 ], $de ); foreach ( $de [ 2 ] as $x => $X ){ if ( $X ) $u [ "descs" ][ $x ] = '1' ;}} if ( ! $J [ "" ] || $u [ "type" ] != "UNIQUE" || $u [ "columns" ] != $J [ "" ][ "columns" ] || $u [ "descs" ] != $J [ "" ][ "descs" ] ||! preg_match ( "~^sqlite_~" , $C )) $J [ $C ] = $u ;} return $J ;} function
2015-04-14 21:38:33 +00:00
foreign_keys ( $Q ){ $J = array (); foreach ( get_rows ( "PRAGMA foreign_key_list(" . table ( $Q ) . ")" ) as $K ){ $q =& $J [ $K [ "id" ]]; if ( ! $q ) $q = $K ; $q [ "source" ][] = $K [ "from" ]; $q [ "target" ][] = $K [ "to" ];} return $J ;} function
2014-04-27 06:39:48 +00:00
view ( $C ){ global $h ; return
array ( "select" => preg_replace ( '~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\\s+~iU' , '' , $h -> result ( "SELECT sql FROM sqlite_master WHERE name = " . q ( $C ))));} function
2012-06-04 14:58:40 +00:00
collations (){ return ( isset ( $_GET [ "create" ]) ? get_vals ( "PRAGMA collation_list" , 1 ) : array ());} function
2015-04-14 21:38:33 +00:00
information_schema ( $m ){ return
2012-06-04 14:58:40 +00:00
false ;} function
2014-04-27 06:39:48 +00:00
error (){ global $h ; return
h ( $h -> error );} function
2015-04-14 21:38:33 +00:00
check_sqlite_name ( $C ){ global $h ; $Cc = "db|sdb|sqlite" ; if ( ! preg_match ( "~^[^ \\ 0]* \\ .( $Cc ) \$ ~" , $C )){ $h -> error = lang ( 21 , str_replace ( "|" , ", " , $Cc )); return
2012-06-04 14:58:40 +00:00
false ;} return
true ;} function
2015-04-14 21:38:33 +00:00
create_database ( $m , $d ){ global $h ; if ( file_exists ( $m )){ $h -> error = lang ( 22 ); return
false ;} if ( ! check_sqlite_name ( $m )) return
2014-04-27 06:39:48 +00:00
false ; try { $_ = new
2015-04-14 21:38:33 +00:00
Min_SQLite ( $m );} catch ( Exception $uc ){ $h -> error = $uc -> getMessage (); return
2014-04-27 06:39:48 +00:00
false ;} $_ -> query ( 'PRAGMA encoding = "UTF-8"' ); $_ -> query ( 'CREATE TABLE adminer (i)' ); $_ -> query ( 'DROP TABLE adminer' ); return
2012-06-04 14:58:40 +00:00
true ;} function
2016-06-08 18:32:06 -06:00
drop_databases ( $l ){ global $h ; $h -> __construct ( ":memory:" ); foreach ( $l
2015-04-14 21:38:33 +00:00
as $m ){ if ( !@ unlink ( $m )){ $h -> error = lang ( 22 ); return
2012-06-04 14:58:40 +00:00
false ;}} return
true ;} function
2014-04-27 06:39:48 +00:00
rename_database ( $C , $d ){ global $h ; if ( ! check_sqlite_name ( $C )) return
2016-06-08 18:32:06 -06:00
false ; $h -> __construct ( ":memory:" ); $h -> error = lang ( 22 ); return @ rename ( DB , $C );} function
2012-06-04 14:58:40 +00:00
auto_increment (){ return " PRIMARY KEY" . ( DRIVER == "sqlite" ? " AUTOINCREMENT" : "" );} function
2016-06-08 18:32:06 -06:00
alter_table ( $Q , $C , $p , $Mc , $rb , $nc , $d , $La , $nf ){ $Nh = ( $Q == "" || $Mc ); foreach ( $p
as $o ){ if ( $o [ 0 ] != "" ||! $o [ 1 ] || $o [ 2 ]){ $Nh = true ; break ;}} $c = array (); $ef = array (); foreach ( $p
as $o ){ if ( $o [ 1 ]){ $c [] = ( $Nh ? $o [ 1 ] : "ADD " . implode ( $o [ 1 ])); if ( $o [ 0 ] != "" ) $ef [ $o [ 0 ]] = $o [ 1 ][ 0 ];}} if ( ! $Nh ){ foreach ( $c
2014-04-27 06:39:48 +00:00
as $X ){ if ( ! queries ( "ALTER TABLE " . table ( $Q ) . " $X " )) return
false ;} if ( $Q != $C &&! queries ( "ALTER TABLE " . table ( $Q ) . " RENAME TO " . table ( $C ))) return
2016-06-08 18:32:06 -06:00
false ;} elseif ( ! recreate_table ( $Q , $C , $c , $ef , $Mc )) return
2015-04-14 21:38:33 +00:00
false ; if ( $La ) queries ( "UPDATE sqlite_sequence SET seq = $La WHERE name = " . q ( $C )); return
2012-06-04 14:58:40 +00:00
true ;} function
2016-06-08 18:32:06 -06:00
recreate_table ( $Q , $C , $p , $ef , $Mc , $v = array ()){ if ( $Q != "" ){ if ( ! $p ){ foreach ( fields ( $Q ) as $x => $o ){ $p [] = process_field ( $o , $o ); $ef [ $x ] = idf_escape ( $x );}} $Cf = false ; foreach ( $p
as $o ){ if ( $o [ 6 ]) $Cf = true ;} $ac = array (); foreach ( $v
as $x => $X ){ if ( $X [ 2 ] == "DROP" ){ $ac [ $X [ 1 ]] = true ; unset ( $v [ $x ]);}} foreach ( indexes ( $Q ) as $Jd => $u ){ $f = array (); foreach ( $u [ "columns" ] as $x => $e ){ if ( ! $ef [ $e ]) continue
2 ; $f [] = $ef [ $e ] . ( $u [ "descs" ][ $x ] ? " DESC" : "" );} if ( ! $ac [ $Jd ]){ if ( $u [ "type" ] != "PRIMARY" ||! $Cf ) $v [] = array ( $u [ "type" ], $Jd , $f );}} foreach ( $v
as $x => $X ){ if ( $X [ 0 ] == "PRIMARY" ){ unset ( $v [ $x ]); $Mc [] = " PRIMARY KEY (" . implode ( ", " , $X [ 2 ]) . ")" ;}} foreach ( foreign_keys ( $Q ) as $Jd => $q ){ foreach ( $q [ "source" ] as $x => $e ){ if ( ! $ef [ $e ]) continue
2 ; $q [ "source" ][ $x ] = idf_unescape ( $ef [ $e ]);} if ( ! isset ( $Mc [ " $Jd " ])) $Mc [] = " " . format_foreign_key ( $q );} queries ( "BEGIN" );} foreach ( $p
2015-04-14 21:38:33 +00:00
as $x => $o ) $p [ $x ] = " " . implode ( $o ); $p = array_merge ( $p , array_filter ( $Mc )); if ( ! queries ( "CREATE TABLE " . table ( $Q != "" ? "adminer_ $C " : $C ) . " ( \n " . implode ( ", \n " , $p ) . " \n )" )) return
2016-06-08 18:32:06 -06:00
false ; if ( $Q != "" ){ if ( $ef &&! queries ( "INSERT INTO " . table ( "adminer_ $C " ) . " (" . implode ( ", " , $ef ) . ") SELECT " . implode ( ", " , array_map ( 'idf_escape' , array_keys ( $ef ))) . " FROM " . table ( $Q ))) return
2015-04-14 21:38:33 +00:00
false ; $zh = array (); foreach ( triggers ( $Q ) as $xh => $kh ){ $wh = trigger ( $xh ); $zh [] = "CREATE TRIGGER " . idf_escape ( $xh ) . " " . implode ( " " , $kh ) . " ON " . table ( $C ) . " \n $wh[Statement] " ;} if ( ! queries ( "DROP TABLE " . table ( $Q ))) return
2014-04-27 06:39:48 +00:00
false ; queries ( "ALTER TABLE " . table ( "adminer_ $C " ) . " RENAME TO " . table ( $C )); if ( ! alter_indexes ( $C , $v )) return
2015-04-14 21:38:33 +00:00
false ; foreach ( $zh
as $wh ){ if ( ! queries ( $wh )) return
2014-04-27 06:39:48 +00:00
false ;} queries ( "COMMIT" );} return
true ;} function
index_sql ( $Q , $U , $C , $f ){ return "CREATE $U " . ( $U != "INDEX" ? "INDEX " : "" ) . idf_escape ( $C != "" ? $C : uniqid ( $Q . "_" )) . " ON " . table ( $Q ) . " $f " ;} function
alter_indexes ( $Q , $c ){ foreach ( $c
2016-06-08 18:32:06 -06:00
as $Bf ){ if ( $Bf [ 0 ] == "PRIMARY" ) return
2014-04-27 06:39:48 +00:00
recreate_table ( $Q , $Q , array (), array (), array (), $c );} foreach ( array_reverse ( $c ) as $X ){ if ( ! queries ( $X [ 2 ] == "DROP" ? "DROP INDEX " . idf_escape ( $X [ 1 ]) : index_sql ( $Q , $X [ 0 ], $X [ 1 ], "(" . implode ( ", " , $X [ 2 ]) . ")" ))) return
2013-07-27 15:43:34 +00:00
false ;} return
2012-06-04 14:58:40 +00:00
true ;} function
2014-04-27 06:39:48 +00:00
truncate_tables ( $S ){ return
apply_queries ( "DELETE FROM" , $S );} function
2015-04-14 21:38:33 +00:00
drop_views ( $Yh ){ return
apply_queries ( "DROP VIEW" , $Yh );} function
2014-04-27 06:39:48 +00:00
drop_tables ( $S ){ return
apply_queries ( "DROP TABLE" , $S );} function
2015-04-14 21:38:33 +00:00
move_tables ( $S , $Yh , $bh ){ return
2012-06-04 14:58:40 +00:00
false ;} function
2014-04-27 06:39:48 +00:00
trigger ( $C ){ global $h ; if ( $C == "" ) return
2016-06-08 18:32:06 -06:00
array ( "Statement" => "BEGIN \n\t ; \n END" ); $t = '(?:[^`"\\s]+|`[^`]*`|"[^"]*")+' ; $yh = trigger_options (); preg_match ( "~^CREATE \\ s+TRIGGER \\ s* $t \\ s*(" . implode ( "|" , $yh [ "Timing" ]) . ") \\ s+([a-z]+)(?: \\ s+OF \\ s+( $t ))? \\ s+ON \\ s* $t \\ s*(?:FOR \\ s+EACH \\ s+ROW \\ s)?(.*)~is" , $h -> result ( "SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = " . q ( $C )), $B ); $Fe = $B [ 3 ]; return
array ( "Timing" => strtoupper ( $B [ 1 ]), "Event" => strtoupper ( $B [ 2 ]) . ( $Fe ? " OF" : "" ), "Of" => ( $Fe [ 0 ] == '`' || $Fe [ 0 ] == '"' ? idf_unescape ( $Fe ) : $Fe ), "Trigger" => $C , "Statement" => $B [ 4 ],);} function
2015-04-14 21:38:33 +00:00
triggers ( $Q ){ $J = array (); $yh = trigger_options (); foreach ( get_rows ( "SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = " . q ( $Q )) as $K ){ preg_match ( '~^CREATE\\s+TRIGGER\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*(' . implode ( "|" , $yh [ "Timing" ]) . ')\\s*(.*)\\s+ON\\b~iU' , $K [ "sql" ], $B ); $J [ $K [ "name" ]] = array ( $B [ 1 ], $B [ 2 ]);} return $J ;} function
2012-06-04 14:58:40 +00:00
trigger_options (){ return
2014-04-27 06:39:48 +00:00
array ( "Timing" => array ( "BEFORE" , "AFTER" , "INSTEAD OF" ), "Event" => array ( "INSERT" , "UPDATE" , "UPDATE OF" , "DELETE" ), "Type" => array ( "FOR EACH ROW" ),);} function
routine ( $C , $U ){} function
2012-06-04 14:58:40 +00:00
routines (){} function
2013-07-27 15:43:34 +00:00
routine_languages (){} function
2012-06-04 14:58:40 +00:00
begin (){ return
queries ( "BEGIN" );} function
2014-04-27 06:39:48 +00:00
last_id (){ global $h ; return $h -> result ( "SELECT LAST_INSERT_ROWID()" );} function
2015-04-14 21:38:33 +00:00
explain ( $h , $H ){ return $h -> query ( "EXPLAIN QUERY PLAN $H " );} function
2014-04-27 06:39:48 +00:00
found_rows ( $R , $Z ){} function
2012-06-04 14:58:40 +00:00
types (){ return
array ();} function
schemas (){ return
array ();} function
get_schema (){ return "" ;} function
2016-06-08 18:32:06 -06:00
set_schema ( $og ){ return
2012-06-04 14:58:40 +00:00
true ;} function
2015-04-14 21:38:33 +00:00
create_sql ( $Q , $La ){ global $h ; $J = $h -> result ( "SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = " . q ( $Q )); foreach ( indexes ( $Q ) as $C => $u ){ if ( $C == '' ) continue ; $J .= "; \n\n " . index_sql ( $Q , $u [ 'type' ], $C , "(" . implode ( ", " , array_map ( 'idf_escape' , $u [ 'columns' ])) . ")" );} return $J ;} function
2014-04-27 06:39:48 +00:00
truncate_sql ( $Q ){ return "DELETE FROM " . table ( $Q );} function
2015-04-14 21:38:33 +00:00
use_sql ( $Gb ){} function
trigger_sql ( $Q , $Mg ){ return
2014-04-27 06:39:48 +00:00
implode ( get_vals ( "SELECT sql || ';; \n ' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = " . q ( $Q )));} function
show_variables (){ global $h ; $J = array (); foreach ( array ( "auto_vacuum" , "cache_size" , "count_changes" , "default_cache_size" , "empty_result_callbacks" , "encoding" , "foreign_keys" , "full_column_names" , "fullfsync" , "journal_mode" , "journal_size_limit" , "legacy_file_format" , "locking_mode" , "page_size" , "max_page_count" , "read_uncommitted" , "recursive_triggers" , "reverse_unordered_selects" , "secure_delete" , "short_column_names" , "synchronous" , "temp_store" , "temp_store_directory" , "schema_version" , "integrity_check" , "quick_check" ) as $x ) $J [ $x ] = $h -> result ( "PRAGMA $x " ); return $J ;} function
2016-06-08 18:32:06 -06:00
show_status (){ $J = array (); foreach ( get_vals ( "PRAGMA compile_options" ) as $Te ){ list ( $x , $X ) = explode ( "=" , $Te , 2 ); $J [ $x ] = $X ;} return $J ;} function
2015-04-14 21:38:33 +00:00
convert_field ( $o ){} function
unconvert_field ( $o , $J ){ return $J ;} function
support ( $Fc ){ return
2016-06-08 18:32:06 -06:00
preg_match ( '~^(columns|database|drop_col|dump|indexes|move_col|sql|status|table|trigger|variables|view|view_trigger)$~' , $Fc );} $w = "sqlite" ; $Bh = array ( "integer" => 0 , "real" => 0 , "numeric" => 0 , "text" => 0 , "blob" => 0 ); $Lg = array_keys ( $Bh ); $Ih = array (); $Re = array ( "=" , "<" , ">" , "<=" , ">=" , "!=" , "LIKE" , "LIKE %%" , "IN" , "IS NULL" , "NOT LIKE" , "NOT IN" , "IS NOT NULL" , "SQL" ); $Uc = array ( "hex" , "length" , "lower" , "round" , "unixepoch" , "upper" ); $Zc = array ( "avg" , "count" , "count distinct" , "group_concat" , "max" , "min" , "sum" ); $fc = array ( array (), array ( "integer|real|numeric" => "+/-" , "text" => "||" ,));} $Xb [ "pgsql" ] = "PostgreSQL" ; if ( isset ( $_GET [ "pgsql" ])){ $zf = array ( "PgSQL" , "PDO_PgSQL" ); define ( "DRIVER" , "pgsql" ); if ( extension_loaded ( "pgsql" )){ class
2012-06-04 14:58:40 +00:00
Min_DB { var $extension = "PgSQL" , $_link , $_result , $_string , $_database = true , $server_info , $affected_rows , $error ; function
2015-04-14 21:38:33 +00:00
_error ( $qc , $n ){ if ( ini_bool ( "html_errors" )) $n = html_entity_decode ( strip_tags ( $n )); $n = preg_replace ( '~^[^:]*: ~' , '' , $n ); $this -> error = $n ;} function
connect ( $N , $V , $G ){ global $b ; $m = $b -> database (); set_error_handler ( array ( $this , '_error' )); $this -> _string = "host='" . str_replace ( ":" , "' port='" , addcslashes ( $N , "' \\ " )) . "' user='" . addcslashes ( $V , "' \\ " ) . "' password='" . addcslashes ( $G , "' \\ " ) . "'" ; $this -> _link =@ pg_connect ( " $this->_string dbname='" . ( $m != "" ? addcslashes ( $m , "' \\ " ) : "postgres" ) . "'" , PGSQL_CONNECT_FORCE_NEW ); if ( ! $this -> _link && $m != "" ){ $this -> _database = false ; $this -> _link =@ pg_connect ( " $this->_string dbname='postgres'" , PGSQL_CONNECT_FORCE_NEW );} restore_error_handler (); if ( $this -> _link ){ $Wh = pg_version ( $this -> _link ); $this -> server_info = $Wh [ "server" ]; pg_set_client_encoding ( $this -> _link , "UTF8" );} return ( bool ) $this -> _link ;} function
2014-04-27 06:39:48 +00:00
quote ( $P ){ return "'" . pg_escape_string ( $this -> _link , $P ) . "'" ;} function
2015-04-14 21:38:33 +00:00
select_db ( $Gb ){ global $b ; if ( $Gb == $b -> database ()) return $this -> _database ; $J =@ pg_connect ( " $this->_string dbname='" . addcslashes ( $Gb , "' \\ " ) . "'" , PGSQL_CONNECT_FORCE_NEW ); if ( $J ) $this -> _link = $J ; return $J ;} function
2013-07-27 15:43:34 +00:00
close (){ $this -> _link =@ pg_connect ( " $this->_string dbname='postgres'" );} function
2015-04-14 21:38:33 +00:00
query ( $H , $Ch = false ){ $I =@ pg_query ( $this -> _link , $H ); $this -> error = "" ; if ( ! $I ){ $this -> error = pg_last_error ( $this -> _link ); return
2014-04-27 06:39:48 +00:00
false ;} elseif ( ! pg_num_fields ( $I )){ $this -> affected_rows = pg_affected_rows ( $I ); return
2012-06-04 14:58:40 +00:00
true ;} return
new
2014-04-27 06:39:48 +00:00
Min_Result ( $I );} function
multi_query ( $H ){ return $this -> _result = $this -> query ( $H );} function
2012-06-04 14:58:40 +00:00
store_result (){ return $this -> _result ;} function
next_result (){ return
false ;} function
2015-04-14 21:38:33 +00:00
result ( $H , $o = 0 ){ $I = $this -> query ( $H ); if ( ! $I ||! $I -> num_rows ) return
2013-07-27 15:43:34 +00:00
false ; return
2015-04-14 21:38:33 +00:00
pg_fetch_result ( $I -> _result , 0 , $o );}} class
2012-06-04 14:58:40 +00:00
Min_Result { var $_result , $_offset = 0 , $num_rows ; function
2016-06-08 18:32:06 -06:00
__construct ( $I ){ $this -> _result = $I ; $this -> num_rows = pg_num_rows ( $I );} function
2012-06-04 14:58:40 +00:00
fetch_assoc (){ return
pg_fetch_assoc ( $this -> _result );} function
fetch_row (){ return
pg_fetch_row ( $this -> _result );} function
2014-04-27 06:39:48 +00:00
fetch_field (){ $e = $this -> _offset ++ ; $J = new
stdClass ; if ( function_exists ( 'pg_field_table' )) $J -> orgtable = pg_field_table ( $this -> _result , $e ); $J -> name = pg_field_name ( $this -> _result , $e ); $J -> orgname = $J -> name ; $J -> type = pg_field_type ( $this -> _result , $e ); $J -> charsetnr = ( $J -> type == "bytea" ? 63 : 0 ); return $J ;} function
2012-06-04 14:58:40 +00:00
__destruct (){ pg_free_result ( $this -> _result );}}} elseif ( extension_loaded ( "pdo_pgsql" )){ class
Min_DB
extends
Min_PDO { var $extension = "PDO_PgSQL" ; function
2015-04-14 21:38:33 +00:00
connect ( $N , $V , $G ){ global $b ; $m = $b -> database (); $P = "pgsql:host='" . str_replace ( ":" , "' port='" , addcslashes ( $N , "' \\ " )) . "' options='-c client_encoding=utf8'" ; $this -> dsn ( " $P dbname='" . ( $m != "" ? addcslashes ( $m , "' \\ " ) : "postgres" ) . "'" , $V , $G ); return
2012-06-04 14:58:40 +00:00
true ;} function
2015-04-14 21:38:33 +00:00
select_db ( $Gb ){ global $b ; return ( $b -> database () == $Gb );} function
2014-04-27 06:39:48 +00:00
close (){}}} class
Min_Driver
extends
Min_SQL { function
2016-06-08 18:32:06 -06:00
insertUpdate ( $Q , $L , $Bf ){ global $h ; foreach ( $L
2015-04-14 21:38:33 +00:00
as $O ){ $Jh = array (); $Z = array (); foreach ( $O
2016-06-08 18:32:06 -06:00
as $x => $X ){ $Jh [] = " $x = $X " ; if ( isset ( $Bf [ idf_unescape ( $x )])) $Z [] = " $x = $X " ;} if ( ! (( $Z && queries ( "UPDATE " . table ( $Q ) . " SET " . implode ( ", " , $Jh ) . " WHERE " . implode ( " AND " , $Z )) && $h -> affected_rows ) || queries ( "INSERT INTO " . table ( $Q ) . " (" . implode ( ", " , array_keys ( $O )) . ") VALUES (" . implode ( ", " , $O ) . ")" ))) return
2014-04-27 06:39:48 +00:00
false ;} return
true ;}} function
2013-07-27 15:43:34 +00:00
idf_escape ( $t ){ return '"' . str_replace ( '"' , '""' , $t ) . '"' ;} function
table ( $t ){ return
idf_escape ( $t );} function
2014-04-27 06:39:48 +00:00
connect (){ global $b ; $h = new
2015-04-14 21:38:33 +00:00
Min_DB ; $k = $b -> credentials (); if ( $h -> connect ( $k [ 0 ], $k [ 1 ], $k [ 2 ])){ if ( $h -> server_info >= 9 ) $h -> query ( "SET application_name = 'Adminer'" ); return $h ;} return $h -> error ;} function
2012-06-04 14:58:40 +00:00
get_databases (){ return
2013-07-27 15:43:34 +00:00
get_vals ( "SELECT datname FROM pg_database ORDER BY datname" );} function
2016-06-08 18:32:06 -06:00
limit ( $H , $Z , $z , $D = 0 , $ug = " " ){ return " $H$Z " . ( $z !== null ? $ug . "LIMIT $z " . ( $D ? " OFFSET $D " : "" ) : "" );} function
2014-04-27 06:39:48 +00:00
limit1 ( $H , $Z ){ return " $H$Z " ;} function
2015-04-14 21:38:33 +00:00
db_collation ( $m , $nb ){ global $h ; return $h -> result ( "SHOW LC_COLLATE" );} function
2012-06-04 14:58:40 +00:00
engines (){ return
array ();} function
2014-04-27 06:39:48 +00:00
logged_user (){ global $h ; return $h -> result ( "SELECT user" );} function
2015-04-14 21:38:33 +00:00
tables_list (){ $H = "SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()" ; if ( support ( 'materializedview' )) $H .= "
UNION ALL
SELECT matviewname, 'MATERIALIZED VIEW'
FROM pg_matviews
WHERE schemaname = current_schema()" ; $H .= "
ORDER BY 1" ; return
get_key_vals ( $H );} function
count_tables ( $l ){ return
2012-06-04 14:58:40 +00:00
array ();} function
2015-04-14 21:38:33 +00:00
table_status ( $C = "" ){ $J = array (); foreach ( get_rows ( "SELECT relname AS \" Name \" , CASE relkind WHEN 'r' THEN 'table' WHEN 'mv' THEN 'materialized view' WHEN 'f' THEN 'foreign table' ELSE 'view' END AS \" Engine \" , pg_relation_size(oid) AS \" Data_length \" , pg_total_relation_size(oid) - pg_relation_size(oid) AS \" Index_length \" , obj_description(oid, 'pg_class') AS \" Comment \" , relhasoids::int AS \" Oid \" , reltuples as \" Rows \"
2012-06-04 14:58:40 +00:00
FROM pg_class
2015-04-14 21:38:33 +00:00
WHERE relkind IN ('r','v','mv','f')
2013-07-27 15:43:34 +00:00
AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())
2014-04-27 06:39:48 +00:00
" . ( $C != "" ? "AND relname = " . q ( $C ) : "ORDER BY relname" )) as $K ) $J [ $K [ "Name" ]] = $K ; return ( $C != "" ? $J [ $C ] : $J );} function
2015-04-14 21:38:33 +00:00
is_view ( $R ){ return
in_array ( $R [ "Engine" ], array ( "view" , "materialized view" ));} function
2014-04-27 06:39:48 +00:00
fk_support ( $R ){ return
2012-06-04 14:58:40 +00:00
true ;} function
2015-04-14 21:38:33 +00:00
fields ( $Q ){ $J = array (); $Ca = array ( 'timestamp without time zone' => 'timestamp' , 'timestamp with time zone' => 'timestamptz' ,); foreach ( get_rows ( "SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, d.adsrc AS default, a.attnotnull::int, col_description(c.oid, a.attnum) AS comment
2012-06-04 14:58:40 +00:00
FROM pg_class c
JOIN pg_namespace n ON c.relnamespace = n.oid
JOIN pg_attribute a ON c.oid = a.attrelid
LEFT JOIN pg_attrdef d ON c.oid = d.adrelid AND a.attnum = d.adnum
2014-04-27 06:39:48 +00:00
WHERE c.relname = " . q ( $Q ) . "
2012-06-04 14:58:40 +00:00
AND n.nspname = current_schema()
AND NOT a.attisdropped
AND a.attnum > 0
2015-04-14 21:38:33 +00:00
ORDER BY a.attnum" ) as $K ){ preg_match ( '~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~' , $K [ "full_type" ], $B ); list (, $U , $y , $K [ "length" ], $wa , $Fa ) = $B ; $K [ "length" ] .= $Fa ; $cb = $U . $wa ; if ( isset ( $Ca [ $cb ])){ $K [ "type" ] = $Ca [ $cb ]; $K [ "full_type" ] = $K [ "type" ] . $y . $Fa ;} else { $K [ "type" ] = $U ; $K [ "full_type" ] = $K [ "type" ] . $y . $wa . $Fa ;} $K [ "null" ] =! $K [ "attnotnull" ]; $K [ "auto_increment" ] = preg_match ( '~^nextval\\(~i' , $K [ "default" ]); $K [ "privileges" ] = array ( "insert" => 1 , "select" => 1 , "update" => 1 ); if ( preg_match ( '~(.+)::[^)]+(.*)~' , $K [ "default" ], $B )) $K [ "default" ] = ( $B [ 1 ][ 0 ] == "'" ? idf_unescape ( $B [ 1 ]) : $B [ 1 ]) . $B [ 2 ]; $J [ $K [ "field" ]] = $K ;} return $J ;} function
2016-06-08 18:32:06 -06:00
indexes ( $Q , $i = null ){ global $h ; if ( ! is_object ( $i )) $i = $h ; $J = array (); $Ug = $i -> result ( "SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = " . q ( $Q )); $f = get_key_vals ( "SELECT attnum, attname FROM pg_attribute WHERE attrelid = $Ug AND attnum > 0" , $i ); foreach ( get_rows ( "SELECT relname, indisunique::int, indisprimary::int, indkey, indoption FROM pg_index i, pg_class ci WHERE i.indrelid = $Ug AND ci.oid = i.indexrelid" , $i ) as $K ){ $Yf = $K [ "relname" ]; $J [ $Yf ][ "type" ] = ( $K [ "indisprimary" ] ? "PRIMARY" : ( $K [ "indisunique" ] ? "UNIQUE" : "INDEX" )); $J [ $Yf ][ "columns" ] = array (); foreach ( explode ( " " , $K [ "indkey" ]) as $qd ) $J [ $Yf ][ "columns" ][] = $f [ $qd ]; $J [ $Yf ][ "descs" ] = array (); foreach ( explode ( " " , $K [ "indoption" ]) as $rd ) $J [ $Yf ][ "descs" ][] = ( $rd & 1 ? '1' : null ); $J [ $Yf ][ "lengths" ] = array ();} return $J ;} function
foreign_keys ( $Q ){ global $Me ; $J = array (); foreach ( get_rows ( "SELECT conname, pg_get_constraintdef(oid) AS definition
2013-07-27 15:43:34 +00:00
FROM pg_constraint
2014-04-27 06:39:48 +00:00
WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = " . q ( $Q ) . " AND pn.nspname = current_schema())
2013-07-27 15:43:34 +00:00
AND contype = 'f'::char
2016-06-08 18:32:06 -06:00
ORDER BY conkey, conname" ) as $K ){ if ( preg_match ( '~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA' , $K [ 'definition' ], $B )){ $K [ 'source' ] = array_map ( 'trim' , explode ( ',' , $B [ 1 ])); if ( preg_match ( '~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~' , $B [ 2 ], $ce )){ $K [ 'ns' ] = str_replace ( '""' , '"' , preg_replace ( '~^"(.+)"$~' , '\1' , $ce [ 2 ])); $K [ 'table' ] = str_replace ( '""' , '"' , preg_replace ( '~^"(.+)"$~' , '\1' , $ce [ 4 ]));} $K [ 'target' ] = array_map ( 'trim' , explode ( ',' , $B [ 3 ])); $K [ 'on_delete' ] = ( preg_match ( "~ON DELETE ( $Me )~" , $B [ 4 ], $ce ) ? $ce [ 1 ] : 'NO ACTION' ); $K [ 'on_update' ] = ( preg_match ( "~ON UPDATE ( $Me )~" , $B [ 4 ], $ce ) ? $ce [ 1 ] : 'NO ACTION' ); $J [ $K [ 'conname' ]] = $K ;}} return $J ;} function
2014-04-27 06:39:48 +00:00
view ( $C ){ global $h ; return
array ( "select" => $h -> result ( "SELECT pg_get_viewdef(" . q ( $C ) . ")" ));} function
2012-06-04 14:58:40 +00:00
collations (){ return
array ();} function
2015-04-14 21:38:33 +00:00
information_schema ( $m ){ return ( $m == "information_schema" );} function
2014-04-27 06:39:48 +00:00
error (){ global $h ; $J = h ( $h -> error ); if ( preg_match ( '~^(.*\\n)?([^\\n]*)\\n( *)\\^(\\n.*)?$~s' , $J , $B )) $J = $B [ 1 ] . preg_replace ( '~((?:[^&]|&[^;]*;){' . strlen ( $B [ 3 ]) . '})(.*)~' , '\\1<b>\\2</b>' , $B [ 2 ]) . $B [ 4 ]; return
nl_br ( $J );} function
2015-04-14 21:38:33 +00:00
create_database ( $m , $d ){ return
queries ( "CREATE DATABASE " . idf_escape ( $m ) . ( $d ? " ENCODING " . idf_escape ( $d ) : "" ));} function
drop_databases ( $l ){ global $h ; $h -> close (); return
apply_queries ( "DROP DATABASE" , $l , 'idf_escape' );} function
2014-04-27 06:39:48 +00:00
rename_database ( $C , $d ){ return
queries ( "ALTER DATABASE " . idf_escape ( DB ) . " RENAME TO " . idf_escape ( $C ));} function
2012-06-04 14:58:40 +00:00
auto_increment (){ return "" ;} function
2016-06-08 18:32:06 -06:00
alter_table ( $Q , $C , $p , $Mc , $rb , $nc , $d , $La , $nf ){ $c = array (); $Lf = array (); foreach ( $p
as $o ){ $e = idf_escape ( $o [ 0 ]); $X = $o [ 1 ]; if ( ! $X ) $c [] = "DROP $e " ; else { $Sh = $X [ 5 ]; unset ( $X [ 5 ]); if ( isset ( $X [ 6 ]) && $o [ 0 ] == "" ) $X [ 1 ] = ( $X [ 1 ] == "bigint" ? " big" : " " ) . "serial" ; if ( $o [ 0 ] == "" ) $c [] = ( $Q != "" ? "ADD " : " " ) . implode ( $X ); else { if ( $e != $X [ 0 ]) $Lf [] = "ALTER TABLE " . table ( $Q ) . " RENAME $e TO $X[0] " ; $c [] = "ALTER $e TYPE $X[1] " ; if ( ! $X [ 6 ]){ $c [] = "ALTER $e " . ( $X [ 3 ] ? "SET $X[3] " : "DROP DEFAULT" ); $c [] = "ALTER $e " . ( $X [ 2 ] == " NULL" ? "DROP NOT" : "SET" ) . $X [ 2 ];}} if ( $o [ 0 ] != "" || $Sh != "" ) $Lf [] = "COMMENT ON COLUMN " . table ( $Q ) . ". $X[0] IS " . ( $Sh != "" ? substr ( $Sh , 9 ) : "''" );}} $c = array_merge ( $c , $Mc ); if ( $Q == "" ) array_unshift ( $Lf , "CREATE TABLE " . table ( $C ) . " ( \n " . implode ( ", \n " , $c ) . " \n )" ); elseif ( $c ) array_unshift ( $Lf , "ALTER TABLE " . table ( $Q ) . " \n " . implode ( ", \n " , $c )); if ( $Q != "" && $Q != $C ) $Lf [] = "ALTER TABLE " . table ( $Q ) . " RENAME TO " . table ( $C ); if ( $Q != "" || $rb != "" ) $Lf [] = "COMMENT ON TABLE " . table ( $C ) . " IS " . q ( $rb ); if ( $La != "" ){} foreach ( $Lf
2014-04-27 06:39:48 +00:00
as $H ){ if ( ! queries ( $H )) return
2013-07-27 15:43:34 +00:00
false ;} return
2012-06-04 14:58:40 +00:00
true ;} function
2016-06-08 18:32:06 -06:00
alter_indexes ( $Q , $c ){ $j = array (); $Yb = array (); $Lf = array (); foreach ( $c
as $X ){ if ( $X [ 0 ] != "INDEX" ) $j [] = ( $X [ 2 ] == "DROP" ? " \n DROP CONSTRAINT " . idf_escape ( $X [ 1 ]) : " \n ADD" . ( $X [ 1 ] != "" ? " CONSTRAINT " . idf_escape ( $X [ 1 ]) : "" ) . " $X[0] " . ( $X [ 0 ] == "PRIMARY" ? "KEY " : "" ) . "(" . implode ( ", " , $X [ 2 ]) . ")" ); elseif ( $X [ 2 ] == "DROP" ) $Yb [] = idf_escape ( $X [ 1 ]); else $Lf [] = "CREATE INDEX " . idf_escape ( $X [ 1 ] != "" ? $X [ 1 ] : uniqid ( $Q . "_" )) . " ON " . table ( $Q ) . " (" . implode ( ", " , $X [ 2 ]) . ")" ;} if ( $j ) array_unshift ( $Lf , "ALTER TABLE " . table ( $Q ) . implode ( "," , $j )); if ( $Yb ) array_unshift ( $Lf , "DROP INDEX " . implode ( ", " , $Yb )); foreach ( $Lf
2014-04-27 06:39:48 +00:00
as $H ){ if ( ! queries ( $H )) return
2013-07-27 15:43:34 +00:00
false ;} return
2012-06-04 14:58:40 +00:00
true ;} function
2014-04-27 06:39:48 +00:00
truncate_tables ( $S ){ return
queries ( "TRUNCATE " . implode ( ", " , array_map ( 'table' , $S ))); return
2012-06-04 14:58:40 +00:00
true ;} function
2015-04-14 21:38:33 +00:00
drop_views ( $Yh ){ return
drop_tables ( $Yh );} function
drop_tables ( $S ){ foreach ( $S
as $Q ){ $Ig = table_status ( $Q ); if ( ! queries ( "DROP " . strtoupper ( $Ig [ "Engine" ]) . " " . table ( $Q ))) return
false ;} return
true ;} function
move_tables ( $S , $Yh , $bh ){ foreach ( array_merge ( $S , $Yh ) as $Q ){ $Ig = table_status ( $Q ); if ( ! queries ( "ALTER " . strtoupper ( $Ig [ "Engine" ]) . " " . table ( $Q ) . " SET SCHEMA " . idf_escape ( $bh ))) return
2013-07-27 15:43:34 +00:00
false ;} return
true ;} function
2014-04-27 06:39:48 +00:00
trigger ( $C ){ if ( $C == "" ) return
array ( "Statement" => "EXECUTE PROCEDURE ()" ); $L = get_rows ( 'SELECT trigger_name AS "Trigger", condition_timing AS "Timing", event_manipulation AS "Event", \'FOR EACH \' || action_orientation AS "Type", action_statement AS "Statement" FROM information_schema.triggers WHERE event_object_table = ' . q ( $_GET [ "trigger" ]) . ' AND trigger_name = ' . q ( $C )); return
reset ( $L );} function
triggers ( $Q ){ $J = array (); foreach ( get_rows ( "SELECT * FROM information_schema.triggers WHERE event_object_table = " . q ( $Q )) as $K ) $J [ $K [ "trigger_name" ]] = array ( $K [ "condition_timing" ], $K [ "event_manipulation" ]); return $J ;} function
2012-06-04 14:58:40 +00:00
trigger_options (){ return
2014-04-27 06:39:48 +00:00
array ( "Timing" => array ( "BEFORE" , "AFTER" ), "Event" => array ( "INSERT" , "UPDATE" , "DELETE" ), "Type" => array ( "FOR EACH ROW" , "FOR EACH STATEMENT" ),);} function
2013-07-27 15:43:34 +00:00
routines (){ return
get_rows ( 'SELECT p.proname AS "ROUTINE_NAME", p.proargtypes AS "ROUTINE_TYPE", pg_catalog.format_type(p.prorettype, NULL) AS "DTD_IDENTIFIER"
FROM pg_catalog.pg_namespace n
JOIN pg_catalog.pg_proc p ON p.pronamespace = n.oid
WHERE n.nspname = current_schema()
ORDER BY p.proname' );} function
routine_languages (){ return
get_vals ( "SELECT langname FROM pg_catalog.pg_language" );} function
2012-06-04 14:58:40 +00:00
last_id (){ return
0 ;} function
2014-04-27 06:39:48 +00:00
explain ( $h , $H ){ return $h -> query ( "EXPLAIN $H " );} function
2016-06-08 18:32:06 -06:00
found_rows ( $R , $Z ){ global $h ; if ( preg_match ( "~ rows=([0-9]+)~" , $h -> result ( "EXPLAIN SELECT * FROM " . idf_escape ( $R [ "Name" ]) . ( $Z ? " WHERE " . implode ( " AND " , $Z ) : "" )), $Xf )) return $Xf [ 1 ]; return
2013-07-27 15:43:34 +00:00
false ;} function
2012-06-04 14:58:40 +00:00
types (){ return
get_vals ( "SELECT typname
FROM pg_type
WHERE typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())
AND typtype IN ('b','d','e')
AND typelem = 0" );} function
schemas (){ return
2013-07-27 15:43:34 +00:00
get_vals ( "SELECT nspname FROM pg_namespace ORDER BY nspname" );} function
2014-04-27 06:39:48 +00:00
get_schema (){ global $h ; return $h -> result ( "SELECT current_schema()" );} function
2016-06-08 18:32:06 -06:00
set_schema ( $ng ){ global $h , $Bh , $Lg ; $J = $h -> query ( "SET search_path TO " . idf_escape ( $ng )); foreach ( types () as $U ){ if ( ! isset ( $Bh [ $U ])){ $Bh [ $U ] = 0 ; $Lg [ lang ( 23 )][] = $U ;}} return $J ;} function
2015-04-14 21:38:33 +00:00
use_sql ( $Gb ){ return "\connect " . idf_escape ( $Gb );} function
2012-06-04 14:58:40 +00:00
show_variables (){ return
get_key_vals ( "SHOW ALL" );} function
2014-04-27 06:39:48 +00:00
process_list (){ global $h ; return
get_rows ( "SELECT * FROM pg_stat_activity ORDER BY " . ( $h -> server_info < 9.2 ? "procpid" : "pid" ));} function
2012-06-04 14:58:40 +00:00
show_status (){} function
2015-04-14 21:38:33 +00:00
convert_field ( $o ){} function
unconvert_field ( $o , $J ){ return $J ;} function
support ( $Fc ){ global $h ; return
2016-06-08 18:32:06 -06:00
preg_match ( '~^(database|table|columns|sql|indexes|comment|view|' . ( $h -> server_info >= 9.3 ? 'materializedview|' : '' ) . 'scheme|processlist|sequence|trigger|type|variables|drop_col|kill)$~' , $Fc );} function
kill_process ( $X ){ return
queries ( "SELECT pg_terminate_backend(" . number ( $X ) . ")" );} function
max_connections (){ global $h ; return $h -> result ( "SHOW max_connections" );} $w = "pgsql" ; $Bh = array (); $Lg = array (); foreach ( array ( lang ( 24 ) => array ( "smallint" => 5 , "integer" => 10 , "bigint" => 19 , "boolean" => 1 , "numeric" => 0 , "real" => 7 , "double precision" => 16 , "money" => 20 ), lang ( 25 ) => array ( "date" => 13 , "time" => 17 , "timestamp" => 20 , "timestamptz" => 21 , "interval" => 0 ), lang ( 26 ) => array ( "character" => 0 , "character varying" => 0 , "text" => 0 , "tsquery" => 0 , "tsvector" => 0 , "uuid" => 0 , "xml" => 0 ), lang ( 27 ) => array ( "bit" => 0 , "bit varying" => 0 , "bytea" => 0 ), lang ( 28 ) => array ( "cidr" => 43 , "inet" => 43 , "macaddr" => 17 , "txid_snapshot" => 0 ), lang ( 29 ) => array ( "box" => 0 , "circle" => 0 , "line" => 0 , "lseg" => 0 , "path" => 0 , "point" => 0 , "polygon" => 0 ),) as $x => $X ){ $Bh += $X ; $Lg [ $x ] = array_keys ( $X );} $Ih = array (); $Re = array ( "=" , "<" , ">" , "<=" , ">=" , "!=" , "~" , "!~" , "LIKE" , "LIKE %%" , "ILIKE" , "ILIKE %%" , "IN" , "IS NULL" , "NOT LIKE" , "NOT IN" , "IS NOT NULL" ); $Uc = array ( "char_length" , "lower" , "round" , "to_hex" , "to_timestamp" , "upper" ); $Zc = array ( "avg" , "count" , "count distinct" , "max" , "min" , "sum" ); $fc = array ( array ( "char" => "md5" , "date|time" => "now" ,), array ( "int|numeric|real|money" => "+/-" , "date|time" => "+ interval/- interval" , "char|text" => "||" ,));} $Xb [ "oracle" ] = "Oracle" ; if ( isset ( $_GET [ "oracle" ])){ $zf = array ( "OCI8" , "PDO_OCI" ); define ( "DRIVER" , "oracle" ); if ( extension_loaded ( "oci8" )){ class
2013-07-27 15:43:34 +00:00
Min_DB { var $extension = "oci8" , $_link , $_result , $server_info , $affected_rows , $errno , $error ; function
2015-04-14 21:38:33 +00:00
_error ( $qc , $n ){ if ( ini_bool ( "html_errors" )) $n = html_entity_decode ( strip_tags ( $n )); $n = preg_replace ( '~^[^:]*: ~' , '' , $n ); $this -> error = $n ;} function
2014-04-27 06:39:48 +00:00
connect ( $N , $V , $G ){ $this -> _link =@ oci_new_connect ( $V , $G , $N , "AL32UTF8" ); if ( $this -> _link ){ $this -> server_info = oci_server_version ( $this -> _link ); return
2015-04-14 21:38:33 +00:00
true ;} $n = oci_error (); $this -> error = $n [ "message" ]; return
2012-06-04 14:58:40 +00:00
false ;} function
2014-04-27 06:39:48 +00:00
quote ( $P ){ return "'" . str_replace ( "'" , "''" , $P ) . "'" ;} function
2015-04-14 21:38:33 +00:00
select_db ( $Gb ){ return
2012-06-04 14:58:40 +00:00
true ;} function
2015-04-14 21:38:33 +00:00
query ( $H , $Ch = false ){ $I = oci_parse ( $this -> _link , $H ); $this -> error = "" ; if ( ! $I ){ $n = oci_error ( $this -> _link ); $this -> errno = $n [ "code" ]; $this -> error = $n [ "message" ]; return
2014-04-27 06:39:48 +00:00
false ;} set_error_handler ( array ( $this , '_error' )); $J =@ oci_execute ( $I ); restore_error_handler (); if ( $J ){ if ( oci_num_fields ( $I )) return
2012-06-04 14:58:40 +00:00
new
2014-04-27 06:39:48 +00:00
Min_Result ( $I ); $this -> affected_rows = oci_num_rows ( $I );} return $J ;} function
multi_query ( $H ){ return $this -> _result = $this -> query ( $H );} function
2012-06-04 14:58:40 +00:00
store_result (){ return $this -> _result ;} function
next_result (){ return
false ;} function
2015-04-14 21:38:33 +00:00
result ( $H , $o = 1 ){ $I = $this -> query ( $H ); if ( ! is_object ( $I ) ||! oci_fetch ( $I -> _result )) return
2013-07-27 15:43:34 +00:00
false ; return
2015-04-14 21:38:33 +00:00
oci_result ( $I -> _result , $o );}} class
2012-06-04 14:58:40 +00:00
Min_Result { var $_result , $_offset = 1 , $num_rows ; function
2016-06-08 18:32:06 -06:00
__construct ( $I ){ $this -> _result = $I ;} function
2014-04-27 06:39:48 +00:00
_convert ( $K ){ foreach (( array ) $K
as $x => $X ){ if ( is_a ( $X , 'OCI-Lob' )) $K [ $x ] = $X -> load ();} return $K ;} function
2012-06-04 14:58:40 +00:00
fetch_assoc (){ return $this -> _convert ( oci_fetch_assoc ( $this -> _result ));} function
fetch_row (){ return $this -> _convert ( oci_fetch_row ( $this -> _result ));} function
2014-04-27 06:39:48 +00:00
fetch_field (){ $e = $this -> _offset ++ ; $J = new
stdClass ; $J -> name = oci_field_name ( $this -> _result , $e ); $J -> orgname = $J -> name ; $J -> type = oci_field_type ( $this -> _result , $e ); $J -> charsetnr = ( preg_match ( "~raw|blob|bfile~" , $J -> type ) ? 63 : 0 ); return $J ;} function
2012-06-04 14:58:40 +00:00
__destruct (){ oci_free_statement ( $this -> _result );}}} elseif ( extension_loaded ( "pdo_oci" )){ class
Min_DB
extends
Min_PDO { var $extension = "PDO_OCI" ; function
2014-04-27 06:39:48 +00:00
connect ( $N , $V , $G ){ $this -> dsn ( "oci:dbname=// $N ;charset=AL32UTF8" , $V , $G ); return
2012-06-04 14:58:40 +00:00
true ;} function
2015-04-14 21:38:33 +00:00
select_db ( $Gb ){ return
2014-04-27 06:39:48 +00:00
true ;}}} class
Min_Driver
extends
Min_SQL { function
begin (){ return
true ;}} function
2013-07-27 15:43:34 +00:00
idf_escape ( $t ){ return '"' . str_replace ( '"' , '""' , $t ) . '"' ;} function
table ( $t ){ return
idf_escape ( $t );} function
2014-04-27 06:39:48 +00:00
connect (){ global $b ; $h = new
2015-04-14 21:38:33 +00:00
Min_DB ; $k = $b -> credentials (); if ( $h -> connect ( $k [ 0 ], $k [ 1 ], $k [ 2 ])) return $h ; return $h -> error ;} function
2012-06-04 14:58:40 +00:00
get_databases (){ return
get_vals ( "SELECT tablespace_name FROM user_tablespaces" );} function
2016-06-08 18:32:06 -06:00
limit ( $H , $Z , $z , $D = 0 , $ug = " " ){ return ( $D ? " * FROM (SELECT t.*, rownum AS rnum FROM (SELECT $H$Z ) t WHERE rownum <= " . ( $z + $D ) . ") WHERE rnum > $D " : ( $z !== null ? " * FROM (SELECT $H$Z ) WHERE rownum <= " . ( $z + $D ) : " $H$Z " ));} function
2014-04-27 06:39:48 +00:00
limit1 ( $H , $Z ){ return " $H$Z " ;} function
2015-04-14 21:38:33 +00:00
db_collation ( $m , $nb ){ global $h ; return $h -> result ( "SELECT value FROM nls_database_parameters WHERE parameter = 'NLS_CHARACTERSET'" );} function
2012-06-04 14:58:40 +00:00
engines (){ return
array ();} function
2014-04-27 06:39:48 +00:00
logged_user (){ global $h ; return $h -> result ( "SELECT USER FROM DUAL" );} function
2012-06-04 14:58:40 +00:00
tables_list (){ return
get_key_vals ( "SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = " . q ( DB ) . "
2013-07-27 15:43:34 +00:00
UNION SELECT view_name, 'view' FROM user_views
ORDER BY 1" );} function
2015-04-14 21:38:33 +00:00
count_tables ( $l ){ return
2012-06-04 14:58:40 +00:00
array ();} function
2016-06-08 18:32:06 -06:00
table_status ( $C = "" ){ $J = array (); $pg = q ( $C ); foreach ( get_rows ( 'SELECT table_name "Name", \'table\' "Engine", avg_row_len * num_rows "Data_length", num_rows "Rows" FROM all_tables WHERE tablespace_name = ' . q ( DB ) . ( $C != "" ? " AND table_name = $pg " : "" ) . "
UNION SELECT view_name, 'view', 0, 0 FROM user_views" . ( $C != "" ? " WHERE view_name = $pg " : "" ) . "
2014-04-27 06:39:48 +00:00
ORDER BY 1" ) as $K ){ if ( $C != "" ) return $K ; $J [ $K [ "Name" ]] = $K ;} return $J ;} function
is_view ( $R ){ return $R [ "Engine" ] == "view" ;} function
fk_support ( $R ){ return
2012-06-04 14:58:40 +00:00
true ;} function
2014-04-27 06:39:48 +00:00
fields ( $Q ){ $J = array (); foreach ( get_rows ( "SELECT * FROM all_tab_columns WHERE table_name = " . q ( $Q ) . " ORDER BY column_id" ) as $K ){ $U = $K [ "DATA_TYPE" ]; $y = " $K[DATA_PRECISION] , $K[DATA_SCALE] " ; if ( $y == "," ) $y = $K [ "DATA_LENGTH" ]; $J [ $K [ "COLUMN_NAME" ]] = array ( "field" => $K [ "COLUMN_NAME" ], "full_type" => $U . ( $y ? "( $y )" : "" ), "type" => strtolower ( $U ), "length" => $y , "default" => $K [ "DATA_DEFAULT" ], "null" => ( $K [ "NULLABLE" ] == "Y" ), "privileges" => array ( "insert" => 1 , "select" => 1 , "update" => 1 ),);} return $J ;} function
indexes ( $Q , $i = null ){ $J = array (); foreach ( get_rows ( "SELECT uic.*, uc.constraint_type
2013-07-27 15:43:34 +00:00
FROM user_ind_columns uic
LEFT JOIN user_constraints uc ON uic.index_name = uc.constraint_name AND uic.table_name = uc.table_name
2014-04-27 06:39:48 +00:00
WHERE uic.table_name = " . q ( $Q ) . "
2015-04-14 21:38:33 +00:00
ORDER BY uc.constraint_type, uic.column_position" , $i ) as $K ){ $od = $K [ "INDEX_NAME" ]; $J [ $od ][ "type" ] = ( $K [ "CONSTRAINT_TYPE" ] == "P" ? "PRIMARY" : ( $K [ "CONSTRAINT_TYPE" ] == "U" ? "UNIQUE" : "INDEX" )); $J [ $od ][ "columns" ][] = $K [ "COLUMN_NAME" ]; $J [ $od ][ "lengths" ][] = ( $K [ "CHAR_LENGTH" ] && $K [ "CHAR_LENGTH" ] != $K [ "COLUMN_LENGTH" ] ? $K [ "CHAR_LENGTH" ] : null ); $J [ $od ][ "descs" ][] = ( $K [ "DESCEND" ] ? '1' : null );} return $J ;} function
2014-04-27 06:39:48 +00:00
view ( $C ){ $L = get_rows ( 'SELECT text "select" FROM user_views WHERE view_name = ' . q ( $C )); return
reset ( $L );} function
2012-06-04 14:58:40 +00:00
collations (){ return
array ();} function
2015-04-14 21:38:33 +00:00
information_schema ( $m ){ return
2012-06-04 14:58:40 +00:00
false ;} function
2014-04-27 06:39:48 +00:00
error (){ global $h ; return
h ( $h -> error );} function
explain ( $h , $H ){ $h -> query ( "EXPLAIN PLAN FOR $H " ); return $h -> query ( "SELECT * FROM plan_table" );} function
found_rows ( $R , $Z ){} function
2016-06-08 18:32:06 -06:00
alter_table ( $Q , $C , $p , $Mc , $rb , $nc , $d , $La , $nf ){ $c = $Yb = array (); foreach ( $p
2015-04-14 21:38:33 +00:00
as $o ){ $X = $o [ 1 ]; if ( $X && $o [ 0 ] != "" && idf_escape ( $o [ 0 ]) != $X [ 0 ]) queries ( "ALTER TABLE " . table ( $Q ) . " RENAME COLUMN " . idf_escape ( $o [ 0 ]) . " TO $X[0] " ); if ( $X ) $c [] = ( $Q != "" ? ( $o [ 0 ] != "" ? "MODIFY (" : "ADD (" ) : " " ) . implode ( $X ) . ( $Q != "" ? ")" : "" ); else $Yb [] = idf_escape ( $o [ 0 ]);} if ( $Q == "" ) return
queries ( "CREATE TABLE " . table ( $C ) . " ( \n " . implode ( ", \n " , $c ) . " \n )" ); return ( ! $c || queries ( "ALTER TABLE " . table ( $Q ) . " \n " . implode ( " \n " , $c ))) && ( ! $Yb || queries ( "ALTER TABLE " . table ( $Q ) . " DROP (" . implode ( ", " , $Yb ) . ")" )) && ( $Q == $C || queries ( "ALTER TABLE " . table ( $Q ) . " RENAME TO " . table ( $C )));} function
foreign_keys ( $Q ){ $J = array (); $H = "SELECT c_list.CONSTRAINT_NAME as NAME,
c_src.COLUMN_NAME as SRC_COLUMN,
c_dest.OWNER as DEST_DB,
c_dest.TABLE_NAME as DEST_TABLE,
c_dest.COLUMN_NAME as DEST_COLUMN,
c_list.DELETE_RULE as ON_DELETE
FROM ALL_CONSTRAINTS c_list, ALL_CONS_COLUMNS c_src, ALL_CONS_COLUMNS c_dest
WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME
AND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME
AND c_list.CONSTRAINT_TYPE = 'R'
AND c_src.TABLE_NAME = " . q ( $Q ); foreach ( get_rows ( $H ) as $K ) $J [ $K [ 'NAME' ]] = array ( "db" => $K [ 'DEST_DB' ], "table" => $K [ 'DEST_TABLE' ], "source" => array ( $K [ 'SRC_COLUMN' ]), "target" => array ( $K [ 'DEST_COLUMN' ]), "on_delete" => $K [ 'ON_DELETE' ], "on_update" => null ,); return $J ;} function
2014-04-27 06:39:48 +00:00
truncate_tables ( $S ){ return
apply_queries ( "TRUNCATE TABLE" , $S );} function
2015-04-14 21:38:33 +00:00
drop_views ( $Yh ){ return
apply_queries ( "DROP VIEW" , $Yh );} function
2014-04-27 06:39:48 +00:00
drop_tables ( $S ){ return
apply_queries ( "DROP TABLE" , $S );} function
2012-06-04 14:58:40 +00:00
last_id (){ return
0 ;} function
schemas (){ return
2013-07-27 15:43:34 +00:00
get_vals ( "SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX'))" );} function
2014-04-27 06:39:48 +00:00
get_schema (){ global $h ; return $h -> result ( "SELECT sys_context('USERENV', 'SESSION_USER') FROM dual" );} function
2016-06-08 18:32:06 -06:00
set_schema ( $og ){ global $h ; return $h -> query ( "ALTER SESSION SET CURRENT_SCHEMA = " . idf_escape ( $og ));} function
2012-06-04 14:58:40 +00:00
show_variables (){ return
get_key_vals ( 'SELECT name, display_value FROM v$parameter' );} function
2013-07-27 15:43:34 +00:00
process_list (){ return
get_rows ( 'SELECT sess.process AS "process", sess.username AS "user", sess.schemaname AS "schema", sess.status AS "status", sess.wait_class AS "wait_class", sess.seconds_in_wait AS "seconds_in_wait", sql.sql_text AS "sql_text", sess.machine AS "machine", sess.port AS "port"
FROM v$session sess LEFT OUTER JOIN v$sql sql
ON sql.sql_id = sess.sql_id
WHERE sess.type = \'USER\'
ORDER BY PROCESS
' );} function
2014-04-27 06:39:48 +00:00
show_status (){ $L = get_rows ( 'SELECT * FROM v$instance' ); return
reset ( $L );} function
2015-04-14 21:38:33 +00:00
convert_field ( $o ){} function
unconvert_field ( $o , $J ){ return $J ;} function
support ( $Fc ){ return
2016-06-08 18:32:06 -06:00
preg_match ( '~^(columns|database|drop_col|indexes|processlist|scheme|sql|status|table|variables|view|view_trigger)$~' , $Fc );} $w = "oracle" ; $Bh = array (); $Lg = array (); foreach ( array ( lang ( 24 ) => array ( "number" => 38 , "binary_float" => 12 , "binary_double" => 21 ), lang ( 25 ) => array ( "date" => 10 , "timestamp" => 29 , "interval year" => 12 , "interval day" => 28 ), lang ( 26 ) => array ( "char" => 2000 , "varchar2" => 4000 , "nchar" => 2000 , "nvarchar2" => 4000 , "clob" => 4294967295 , "nclob" => 4294967295 ), lang ( 27 ) => array ( "raw" => 2000 , "long raw" => 2147483648 , "blob" => 4294967295 , "bfile" => 4294967296 ),) as $x => $X ){ $Bh += $X ; $Lg [ $x ] = array_keys ( $X );} $Ih = array (); $Re = array ( "=" , "<" , ">" , "<=" , ">=" , "!=" , "LIKE" , "LIKE %%" , "IN" , "IS NULL" , "NOT LIKE" , "NOT REGEXP" , "NOT IN" , "IS NOT NULL" , "SQL" ); $Uc = array ( "length" , "lower" , "round" , "upper" ); $Zc = array ( "avg" , "count" , "count distinct" , "max" , "min" , "sum" ); $fc = array ( array ( "date" => "current_date" , "timestamp" => "current_timestamp" ,), array ( "number|float|double" => "+/-" , "date|timestamp" => "+ interval/- interval" , "char|clob" => "||" ,));} $Xb [ "mssql" ] = "MS SQL" ; if ( isset ( $_GET [ "mssql" ])){ $zf = array ( "SQLSRV" , "MSSQL" ); define ( "DRIVER" , "mssql" ); if ( extension_loaded ( "sqlsrv" )){ class
2013-07-27 15:43:34 +00:00
Min_DB { var $extension = "sqlsrv" , $_link , $_result , $server_info , $affected_rows , $errno , $error ; function
2015-04-14 21:38:33 +00:00
_get_error (){ $this -> error = "" ; foreach ( sqlsrv_errors () as $n ){ $this -> errno = $n [ "code" ]; $this -> error .= " $n[message] \n " ;} $this -> error = rtrim ( $this -> error );} function
connect ( $N , $V , $G ){ $this -> _link =@ sqlsrv_connect ( $N , array ( "UID" => $V , "PWD" => $G , "CharacterSet" => "UTF-8" )); if ( $this -> _link ){ $sd = sqlsrv_server_info ( $this -> _link ); $this -> server_info = $sd [ 'SQLServerVersion' ];} else $this -> _get_error (); return ( bool ) $this -> _link ;} function
2014-04-27 06:39:48 +00:00
quote ( $P ){ return "'" . str_replace ( "'" , "''" , $P ) . "'" ;} function
2015-04-14 21:38:33 +00:00
select_db ( $Gb ){ return $this -> query ( "USE " . idf_escape ( $Gb ));} function
query ( $H , $Ch = false ){ $I = sqlsrv_query ( $this -> _link , $H ); $this -> error = "" ; if ( ! $I ){ $this -> _get_error (); return
2014-04-27 06:39:48 +00:00
false ;} return $this -> store_result ( $I );} function
multi_query ( $H ){ $this -> _result = sqlsrv_query ( $this -> _link , $H ); $this -> error = "" ; if ( ! $this -> _result ){ $this -> _get_error (); return
2012-06-04 14:58:40 +00:00
false ;} return
true ;} function
2015-04-14 21:38:33 +00:00
store_result ( $I = null ){ if ( ! $I ) $I = $this -> _result ; if ( ! $I ) return
false ; if ( sqlsrv_field_metadata ( $I )) return
2012-06-04 14:58:40 +00:00
new
2014-04-27 06:39:48 +00:00
Min_Result ( $I ); $this -> affected_rows = sqlsrv_rows_affected ( $I ); return
2012-06-04 14:58:40 +00:00
true ;} function
2015-04-14 21:38:33 +00:00
next_result (){ return $this -> _result ? sqlsrv_next_result ( $this -> _result ) : null ;} function
result ( $H , $o = 0 ){ $I = $this -> query ( $H ); if ( ! is_object ( $I )) return
false ; $K = $I -> fetch_row (); return $K [ $o ];}} class
2012-06-04 14:58:40 +00:00
Min_Result { var $_result , $_offset = 0 , $_fields , $num_rows ; function
2016-06-08 18:32:06 -06:00
__construct ( $I ){ $this -> _result = $I ;} function
2014-04-27 06:39:48 +00:00
_convert ( $K ){ foreach (( array ) $K
as $x => $X ){ if ( is_a ( $X , 'DateTime' )) $K [ $x ] = $X -> format ( "Y-m-d H:i:s" );} return $K ;} function
2012-06-04 14:58:40 +00:00
fetch_assoc (){ return $this -> _convert ( sqlsrv_fetch_array ( $this -> _result , SQLSRV_FETCH_ASSOC , SQLSRV_SCROLL_NEXT ));} function
fetch_row (){ return $this -> _convert ( sqlsrv_fetch_array ( $this -> _result , SQLSRV_FETCH_NUMERIC , SQLSRV_SCROLL_NEXT ));} function
2015-04-14 21:38:33 +00:00
fetch_field (){ if ( ! $this -> _fields ) $this -> _fields = sqlsrv_field_metadata ( $this -> _result ); $o = $this -> _fields [ $this -> _offset ++ ]; $J = new
stdClass ; $J -> name = $o [ "Name" ]; $J -> orgname = $o [ "Name" ]; $J -> type = ( $o [ "Type" ] == 1 ? 254 : 0 ); return $J ;} function
seek ( $D ){ for ( $s = 0 ; $s < $D ; $s ++ ) sqlsrv_fetch ( $this -> _result );} function
2012-06-04 14:58:40 +00:00
__destruct (){ sqlsrv_free_stmt ( $this -> _result );}}} elseif ( extension_loaded ( "mssql" )){ class
Min_DB { var $extension = "MSSQL" , $_link , $_result , $server_info , $affected_rows , $error ; function
2014-04-27 06:39:48 +00:00
connect ( $N , $V , $G ){ $this -> _link =@ mssql_connect ( $N , $V , $G ); if ( $this -> _link ){ $I = $this -> query ( "SELECT SERVERPROPERTY('ProductLevel'), SERVERPROPERTY('Edition')" ); $K = $I -> fetch_row (); $this -> server_info = $this -> result ( "sp_server_info 2" , 2 ) . " [ $K[0] ] $K[1] " ;} else $this -> error = mssql_get_last_message (); return ( bool ) $this -> _link ;} function
quote ( $P ){ return "'" . str_replace ( "'" , "''" , $P ) . "'" ;} function
2015-04-14 21:38:33 +00:00
select_db ( $Gb ){ return
mssql_select_db ( $Gb );} function
query ( $H , $Ch = false ){ $I = mssql_query ( $H , $this -> _link ); $this -> error = "" ; if ( ! $I ){ $this -> error = mssql_get_last_message (); return
2014-04-27 06:39:48 +00:00
false ;} if ( $I === true ){ $this -> affected_rows = mssql_rows_affected ( $this -> _link ); return
2012-06-04 14:58:40 +00:00
true ;} return
new
2014-04-27 06:39:48 +00:00
Min_Result ( $I );} function
multi_query ( $H ){ return $this -> _result = $this -> query ( $H );} function
2012-06-04 14:58:40 +00:00
store_result (){ return $this -> _result ;} function
next_result (){ return
mssql_next_result ( $this -> _result );} function
2015-04-14 21:38:33 +00:00
result ( $H , $o = 0 ){ $I = $this -> query ( $H ); if ( ! is_object ( $I )) return
2013-07-27 15:43:34 +00:00
false ; return
2015-04-14 21:38:33 +00:00
mssql_result ( $I -> _result , 0 , $o );}} class
2012-06-04 14:58:40 +00:00
Min_Result { var $_result , $_offset = 0 , $_fields , $num_rows ; function
2016-06-08 18:32:06 -06:00
__construct ( $I ){ $this -> _result = $I ; $this -> num_rows = mssql_num_rows ( $I );} function
2012-06-04 14:58:40 +00:00
fetch_assoc (){ return
mssql_fetch_assoc ( $this -> _result );} function
fetch_row (){ return
mssql_fetch_row ( $this -> _result );} function
num_rows (){ return
mssql_num_rows ( $this -> _result );} function
2014-04-27 06:39:48 +00:00
fetch_field (){ $J = mssql_fetch_field ( $this -> _result ); $J -> orgtable = $J -> table ; $J -> orgname = $J -> name ; return $J ;} function
seek ( $D ){ mssql_data_seek ( $this -> _result , $D );} function
__destruct (){ mssql_free_result ( $this -> _result );}}} class
Min_Driver
extends
Min_SQL { function
2016-06-08 18:32:06 -06:00
insertUpdate ( $Q , $L , $Bf ){ foreach ( $L
2015-04-14 21:38:33 +00:00
as $O ){ $Jh = array (); $Z = array (); foreach ( $O
2016-06-08 18:32:06 -06:00
as $x => $X ){ $Jh [] = " $x = $X " ; if ( isset ( $Bf [ idf_unescape ( $x )])) $Z [] = " $x = $X " ;} if ( ! queries ( "MERGE " . table ( $Q ) . " USING (VALUES(" . implode ( ", " , $O ) . ")) AS source (c" . implode ( ", c" , range ( 1 , count ( $O ))) . ") ON " . implode ( " AND " , $Z ) . " WHEN MATCHED THEN UPDATE SET " . implode ( ", " , $Jh ) . " WHEN NOT MATCHED THEN INSERT (" . implode ( ", " , array_keys ( $O )) . ") VALUES (" . implode ( ", " , $O ) . ");" )) return
2014-04-27 06:39:48 +00:00
false ;} return
true ;} function
begin (){ return
queries ( "BEGIN TRANSACTION" );}} function
2013-07-27 15:43:34 +00:00
idf_escape ( $t ){ return "[" . str_replace ( "]" , "]]" , $t ) . "]" ;} function
table ( $t ){ return ( $_GET [ "ns" ] != "" ? idf_escape ( $_GET [ "ns" ]) . "." : "" ) . idf_escape ( $t );} function
2014-04-27 06:39:48 +00:00
connect (){ global $b ; $h = new
2015-04-14 21:38:33 +00:00
Min_DB ; $k = $b -> credentials (); if ( $h -> connect ( $k [ 0 ], $k [ 1 ], $k [ 2 ])) return $h ; return $h -> error ;} function
2012-06-04 14:58:40 +00:00
get_databases (){ return
get_vals ( "EXEC sp_databases" );} function
2016-06-08 18:32:06 -06:00
limit ( $H , $Z , $z , $D = 0 , $ug = " " ){ return ( $z !== null ? " TOP (" . ( $z + $D ) . ")" : "" ) . " $H$Z " ;} function
2014-04-27 06:39:48 +00:00
limit1 ( $H , $Z ){ return
limit ( $H , $Z , 1 );} function
2015-04-14 21:38:33 +00:00
db_collation ( $m , $nb ){ global $h ; return $h -> result ( "SELECT collation_name FROM sys.databases WHERE name = " . q ( $m ));} function
2012-06-04 14:58:40 +00:00
engines (){ return
array ();} function
2014-04-27 06:39:48 +00:00
logged_user (){ global $h ; return $h -> result ( "SELECT SUSER_NAME()" );} function
2012-06-04 14:58:40 +00:00
tables_list (){ return
get_key_vals ( "SELECT name, type_desc FROM sys.all_objects WHERE schema_id = SCHEMA_ID(" . q ( get_schema ()) . ") AND type IN ('S', 'U', 'V') ORDER BY name" );} function
2015-04-14 21:38:33 +00:00
count_tables ( $l ){ global $h ; $J = array (); foreach ( $l
as $m ){ $h -> select_db ( $m ); $J [ $m ] = $h -> result ( "SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES" );} return $J ;} function
2014-04-27 06:39:48 +00:00
table_status ( $C = "" ){ $J = array (); foreach ( get_rows ( "SELECT name AS Name, type_desc AS Engine FROM sys.all_objects WHERE schema_id = SCHEMA_ID(" . q ( get_schema ()) . ") AND type IN ('S', 'U', 'V') " . ( $C != "" ? "AND name = " . q ( $C ) : "ORDER BY name" )) as $K ){ if ( $C != "" ) return $K ; $J [ $K [ "Name" ]] = $K ;} return $J ;} function
is_view ( $R ){ return $R [ "Engine" ] == "VIEW" ;} function
fk_support ( $R ){ return
2012-06-04 14:58:40 +00:00
true ;} function
2014-04-27 06:39:48 +00:00
fields ( $Q ){ $J = array (); foreach ( get_rows ( "SELECT c.*, t.name type, d.definition [default]
2012-06-04 14:58:40 +00:00
FROM sys.all_columns c
JOIN sys.all_objects o ON c.object_id = o.object_id
JOIN sys.types t ON c.user_type_id = t.user_type_id
LEFT JOIN sys.default_constraints d ON c.default_object_id = d.parent_column_id
2014-04-27 06:39:48 +00:00
WHERE o.schema_id = SCHEMA_ID(" . q ( get_schema ()) . ") AND o.type IN ('S', 'U', 'V') AND o.name = " . q ( $Q )) as $K ){ $U = $K [ "type" ]; $y = ( preg_match ( "~char|binary~" , $U ) ? $K [ "max_length" ] : ( $U == "decimal" ? " $K[precision] , $K[scale] " : "" )); $J [ $K [ "name" ]] = array ( "field" => $K [ "name" ], "full_type" => $U . ( $y ? "( $y )" : "" ), "type" => $U , "length" => $y , "default" => $K [ "default" ], "null" => $K [ "is_nullable" ], "auto_increment" => $K [ "is_identity" ], "collation" => $K [ "collation_name" ], "privileges" => array ( "insert" => 1 , "select" => 1 , "update" => 1 ), "primary" => $K [ "is_identity" ],);} return $J ;} function
indexes ( $Q , $i = null ){ $J = array (); foreach ( get_rows ( "SELECT i.name, key_ordinal, is_unique, is_primary_key, c.name AS column_name, is_descending_key
2012-06-04 14:58:40 +00:00
FROM sys.indexes i
INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
INNER JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
2014-04-27 06:39:48 +00:00
WHERE OBJECT_NAME(i.object_id) = " . q ( $Q ), $i ) as $K ){ $C = $K [ "name" ]; $J [ $C ][ "type" ] = ( $K [ "is_primary_key" ] ? "PRIMARY" : ( $K [ "is_unique" ] ? "UNIQUE" : "INDEX" )); $J [ $C ][ "lengths" ] = array (); $J [ $C ][ "columns" ][ $K [ "key_ordinal" ]] = $K [ "column_name" ]; $J [ $C ][ "descs" ][ $K [ "key_ordinal" ]] = ( $K [ "is_descending_key" ] ? '1' : null );} return $J ;} function
view ( $C ){ global $h ; return
array ( "select" => preg_replace ( '~^(?:[^[]|\\[[^]]*])*\\s+AS\\s+~isU' , '' , $h -> result ( "SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = " . q ( $C ))));} function
collations (){ $J = array (); foreach ( get_vals ( "SELECT name FROM fn_helpcollations()" ) as $d ) $J [ preg_replace ( '~_.*~' , '' , $d )][] = $d ; return $J ;} function
2015-04-14 21:38:33 +00:00
information_schema ( $m ){ return
2012-06-04 14:58:40 +00:00
false ;} function
2014-04-27 06:39:48 +00:00
error (){ global $h ; return
nl_br ( h ( preg_replace ( '~^(\\[[^]]*])+~m' , '' , $h -> error )));} function
2015-04-14 21:38:33 +00:00
create_database ( $m , $d ){ return
queries ( "CREATE DATABASE " . idf_escape ( $m ) . ( preg_match ( '~^[a-z0-9_]+$~i' , $d ) ? " COLLATE $d " : "" ));} function
drop_databases ( $l ){ return
queries ( "DROP DATABASE " . implode ( ", " , array_map ( 'idf_escape' , $l )));} function
2014-04-27 06:39:48 +00:00
rename_database ( $C , $d ){ if ( preg_match ( '~^[a-z0-9_]+$~i' , $d )) queries ( "ALTER DATABASE " . idf_escape ( DB ) . " COLLATE $d " ); queries ( "ALTER DATABASE " . idf_escape ( DB ) . " MODIFY NAME = " . idf_escape ( $C )); return
2012-06-04 14:58:40 +00:00
true ;} function
2015-04-14 21:38:33 +00:00
auto_increment (){ return " IDENTITY" . ( $_POST [ "Auto_increment" ] != "" ? "(" . number ( $_POST [ "Auto_increment" ]) . ",1)" : "" ) . " PRIMARY KEY" ;} function
2016-06-08 18:32:06 -06:00
alter_table ( $Q , $C , $p , $Mc , $rb , $nc , $d , $La , $nf ){ $c = array (); foreach ( $p
2015-04-14 21:38:33 +00:00
as $o ){ $e = idf_escape ( $o [ 0 ]); $X = $o [ 1 ]; if ( ! $X ) $c [ "DROP" ][] = " COLUMN $e " ; else { $X [ 1 ] = preg_replace ( "~( COLLATE )'( \\ w+)'~" , " \\ 1 \\ 2" , $X [ 1 ]); if ( $o [ 0 ] == "" ) $c [ "ADD" ][] = " \n " . implode ( "" , $X ) . ( $Q == "" ? substr ( $Mc [ $X [ 0 ]], 16 + strlen ( $X [ 0 ])) : "" ); else { unset ( $X [ 6 ]); if ( $e != $X [ 0 ]) queries ( "EXEC sp_rename " . q ( table ( $Q ) . ". $e " ) . ", " . q ( idf_unescape ( $X [ 0 ])) . ", 'COLUMN'" ); $c [ "ALTER COLUMN " . implode ( "" , $X )][] = "" ;}}} if ( $Q == "" ) return
queries ( "CREATE TABLE " . table ( $C ) . " (" . implode ( "," ,( array ) $c [ "ADD" ]) . " \n )" ); if ( $Q != $C ) queries ( "EXEC sp_rename " . q ( table ( $Q )) . ", " . q ( $C )); if ( $Mc ) $c [ "" ] = $Mc ; foreach ( $c
2014-04-27 06:39:48 +00:00
as $x => $X ){ if ( ! queries ( "ALTER TABLE " . idf_escape ( $C ) . " $x " . implode ( "," , $X ))) return
2013-07-27 15:43:34 +00:00
false ;} return
2012-06-04 14:58:40 +00:00
true ;} function
2015-04-14 21:38:33 +00:00
alter_indexes ( $Q , $c ){ $u = array (); $Yb = array (); foreach ( $c
as $X ){ if ( $X [ 2 ] == "DROP" ){ if ( $X [ 0 ] == "PRIMARY" ) $Yb [] = idf_escape ( $X [ 1 ]); else $u [] = idf_escape ( $X [ 1 ]) . " ON " . table ( $Q );} elseif ( ! queries (( $X [ 0 ] != "PRIMARY" ? "CREATE $X[0] " . ( $X [ 0 ] != "INDEX" ? "INDEX " : "" ) . idf_escape ( $X [ 1 ] != "" ? $X [ 1 ] : uniqid ( $Q . "_" )) . " ON " . table ( $Q ) : "ALTER TABLE " . table ( $Q ) . " ADD PRIMARY KEY" ) . " (" . implode ( ", " , $X [ 2 ]) . ")" )) return
false ;} return ( ! $u || queries ( "DROP INDEX " . implode ( ", " , $u ))) && ( ! $Yb || queries ( "ALTER TABLE " . table ( $Q ) . " DROP " . implode ( ", " , $Yb )));} function
2014-04-27 06:39:48 +00:00
last_id (){ global $h ; return $h -> result ( "SELECT SCOPE_IDENTITY()" );} function
explain ( $h , $H ){ $h -> query ( "SET SHOWPLAN_ALL ON" ); $J = $h -> query ( $H ); $h -> query ( "SET SHOWPLAN_ALL OFF" ); return $J ;} function
found_rows ( $R , $Z ){} function
2015-04-14 21:38:33 +00:00
foreign_keys ( $Q ){ $J = array (); foreach ( get_rows ( "EXEC sp_fkeys @fktable_name = " . q ( $Q )) as $K ){ $q =& $J [ $K [ "FK_NAME" ]]; $q [ "table" ] = $K [ "PKTABLE_NAME" ]; $q [ "source" ][] = $K [ "FKCOLUMN_NAME" ]; $q [ "target" ][] = $K [ "PKCOLUMN_NAME" ];} return $J ;} function
2014-04-27 06:39:48 +00:00
truncate_tables ( $S ){ return
apply_queries ( "TRUNCATE TABLE" , $S );} function
2015-04-14 21:38:33 +00:00
drop_views ( $Yh ){ return
queries ( "DROP VIEW " . implode ( ", " , array_map ( 'table' , $Yh )));} function
2014-04-27 06:39:48 +00:00
drop_tables ( $S ){ return
queries ( "DROP TABLE " . implode ( ", " , array_map ( 'table' , $S )));} function
2015-04-14 21:38:33 +00:00
move_tables ( $S , $Yh , $bh ){ return
apply_queries ( "ALTER SCHEMA " . idf_escape ( $bh ) . " TRANSFER" , array_merge ( $S , $Yh ));} function
2014-04-27 06:39:48 +00:00
trigger ( $C ){ if ( $C == "" ) return
array (); $L = get_rows ( "SELECT s.name [Trigger],
2012-06-04 14:58:40 +00:00
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(s.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(s.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
CASE WHEN OBJECTPROPERTY(s.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing],
c.text
FROM sysobjects s
JOIN syscomments c ON s.id = c.id
2014-04-27 06:39:48 +00:00
WHERE s.xtype = 'TR' AND s.name = " . q ( $C )); $J = reset ( $L ); if ( $J ) $J [ "Statement" ] = preg_replace ( '~^.+\\s+AS\\s+~isU' , '' , $J [ "text" ]); return $J ;} function
triggers ( $Q ){ $J = array (); foreach ( get_rows ( "SELECT sys1.name,
2012-06-04 14:58:40 +00:00
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsertTrigger') = 1 THEN 'INSERT' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsUpdateTrigger') = 1 THEN 'UPDATE' WHEN OBJECTPROPERTY(sys1.id, 'ExecIsDeleteTrigger') = 1 THEN 'DELETE' END [Event],
CASE WHEN OBJECTPROPERTY(sys1.id, 'ExecIsInsteadOfTrigger') = 1 THEN 'INSTEAD OF' ELSE 'AFTER' END [Timing]
FROM sysobjects sys1
JOIN sysobjects sys2 ON sys1.parent_obj = sys2.id
2014-04-27 06:39:48 +00:00
WHERE sys1.xtype = 'TR' AND sys2.name = " . q ( $Q )) as $K ) $J [ $K [ "name" ]] = array ( $K [ "Timing" ], $K [ "Event" ]); return $J ;} function
2012-06-04 14:58:40 +00:00
trigger_options (){ return
2014-04-27 06:39:48 +00:00
array ( "Timing" => array ( "AFTER" , "INSTEAD OF" ), "Event" => array ( "INSERT" , "UPDATE" , "DELETE" ), "Type" => array ( "AS" ),);} function
2012-06-04 14:58:40 +00:00
schemas (){ return
get_vals ( "SELECT name FROM sys.schemas" );} function
2014-04-27 06:39:48 +00:00
get_schema (){ global $h ; if ( $_GET [ "ns" ] != "" ) return $_GET [ "ns" ]; return $h -> result ( "SELECT SCHEMA_NAME()" );} function
2016-06-08 18:32:06 -06:00
set_schema ( $ng ){ return
2012-06-04 14:58:40 +00:00
true ;} function
2015-04-14 21:38:33 +00:00
use_sql ( $Gb ){ return "USE " . idf_escape ( $Gb );} function
2012-06-04 14:58:40 +00:00
show_variables (){ return
array ();} function
show_status (){ return
array ();} function
2015-04-14 21:38:33 +00:00
convert_field ( $o ){} function
unconvert_field ( $o , $J ){ return $J ;} function
support ( $Fc ){ return
2016-06-08 18:32:06 -06:00
preg_match ( '~^(columns|database|drop_col|indexes|scheme|sql|table|trigger|view|view_trigger)$~' , $Fc );} $w = "mssql" ; $Bh = array (); $Lg = array (); foreach ( array ( lang ( 24 ) => array ( "tinyint" => 3 , "smallint" => 5 , "int" => 10 , "bigint" => 20 , "bit" => 1 , "decimal" => 0 , "real" => 12 , "float" => 53 , "smallmoney" => 10 , "money" => 20 ), lang ( 25 ) => array ( "date" => 10 , "smalldatetime" => 19 , "datetime" => 19 , "datetime2" => 19 , "time" => 8 , "datetimeoffset" => 10 ), lang ( 26 ) => array ( "char" => 8000 , "varchar" => 8000 , "text" => 2147483647 , "nchar" => 4000 , "nvarchar" => 4000 , "ntext" => 1073741823 ), lang ( 27 ) => array ( "binary" => 8000 , "varbinary" => 8000 , "image" => 2147483647 ),) as $x => $X ){ $Bh += $X ; $Lg [ $x ] = array_keys ( $X );} $Ih = array (); $Re = array ( "=" , "<" , ">" , "<=" , ">=" , "!=" , "LIKE" , "LIKE %%" , "IN" , "IS NULL" , "NOT LIKE" , "NOT IN" , "IS NOT NULL" ); $Uc = array ( "len" , "lower" , "round" , "upper" ); $Zc = array ( "avg" , "count" , "count distinct" , "max" , "min" , "sum" ); $fc = array ( array ( "date|time" => "getdate" ,), array ( "int|decimal|real|float|money|datetime" => "+/-" , "char|text" => "+" ,));} $Xb [ 'firebird' ] = 'Firebird (alpha)' ; if ( isset ( $_GET [ "firebird" ])){ $zf = array ( "interbase" ); define ( "DRIVER" , "firebird" ); if ( extension_loaded ( "interbase" )){ class
2015-04-14 21:38:33 +00:00
Min_DB { var $extension = "Firebird" , $server_info , $affected_rows , $errno , $error , $_link , $_result ; function
connect ( $N , $V , $G ){ $this -> _link = ibase_connect ( $N , $V , $G ); if ( $this -> _link ){ $Lh = explode ( ':' , $N ); $this -> service_link = ibase_service_attach ( $Lh [ 0 ], $V , $G ); $this -> server_info = ibase_server_info ( $this -> service_link , IBASE_SVC_SERVER_VERSION );} else { $this -> errno = ibase_errcode (); $this -> error = ibase_errmsg ();} return ( bool ) $this -> _link ;} function
quote ( $P ){ return "'" . str_replace ( "'" , "''" , $P ) . "'" ;} function
select_db ( $Gb ){ return ( $Gb == "domain" );} function
query ( $H , $Ch = false ){ $I = ibase_query ( $H , $this -> _link ); if ( ! $I ){ $this -> errno = ibase_errcode (); $this -> error = ibase_errmsg (); return
false ;} $this -> error = "" ; if ( $I === true ){ $this -> affected_rows = ibase_affected_rows ( $this -> _link ); return
true ;} return
new
Min_Result ( $I );} function
multi_query ( $H ){ return $this -> _result = $this -> query ( $H );} function
store_result (){ return $this -> _result ;} function
next_result (){ return
false ;} function
result ( $H , $o = 0 ){ $I = $this -> query ( $H ); if ( ! $I ||! $I -> num_rows ) return
false ; $K = $I -> fetch_row (); return $K [ $o ];}} class
Min_Result { var $num_rows , $_result , $_offset = 0 ; function
2016-06-08 18:32:06 -06:00
__construct ( $I ){ $this -> _result = $I ;} function
2015-04-14 21:38:33 +00:00
fetch_assoc (){ return
ibase_fetch_assoc ( $this -> _result );} function
fetch_row (){ return
ibase_fetch_row ( $this -> _result );} function
fetch_field (){ $o = ibase_field_info ( $this -> _result , $this -> _offset ++ ); return ( object ) array ( 'name' => $o [ 'name' ], 'orgname' => $o [ 'name' ], 'type' => $o [ 'type' ], 'charsetnr' => $o [ 'length' ],);} function
__destruct (){ ibase_free_result ( $this -> _result );}}} class
Min_Driver
extends
Min_SQL {} function
idf_escape ( $t ){ return '"' . str_replace ( '"' , '""' , $t ) . '"' ;} function
table ( $t ){ return
idf_escape ( $t );} function
connect (){ global $b ; $h = new
Min_DB ; $k = $b -> credentials (); if ( $h -> connect ( $k [ 0 ], $k [ 1 ], $k [ 2 ])) return $h ; return $h -> error ;} function
get_databases ( $Lc ){ return
array ( "domain" );} function
2016-06-08 18:32:06 -06:00
limit ( $H , $Z , $z , $D = 0 , $ug = " " ){ $J = '' ; $J .= ( $z !== null ? $ug . "FIRST $z " . ( $D ? " SKIP $D " : "" ) : "" ); $J .= " $H$Z " ; return $J ;} function
2015-04-14 21:38:33 +00:00
limit1 ( $H , $Z ){ return
limit ( $H , $Z , 1 );} function
db_collation ( $m , $nb ){} function
engines (){ return
array ();} function
logged_user (){ global $b ; $k = $b -> credentials (); return $k [ 1 ];} function
tables_list (){ global $h ; $H = 'SELECT RDB$RELATION_NAME FROM rdb$relations WHERE rdb$system_flag = 0' ; $I = ibase_query ( $h -> _link , $H ); $J = array (); while ( $K = ibase_fetch_assoc ( $I )) $J [ $K [ 'RDB$RELATION_NAME' ]] = 'table' ; ksort ( $J ); return $J ;} function
count_tables ( $l ){ return
array ();} function
table_status ( $C = "" , $Ec = false ){ global $h ; $J = array (); $Eb = tables_list (); foreach ( $Eb
as $u => $X ){ $u = trim ( $u ); $J [ $u ] = array ( 'Name' => $u , 'Engine' => 'standard' ,); if ( $C == $u ) return $J [ $u ];} return $J ;} function
is_view ( $R ){ return
false ;} function
fk_support ( $R ){ return
preg_match ( '~InnoDB|IBMDB2I~i' , $R [ "Engine" ]);} function
fields ( $Q ){ global $h ; $J = array (); $H = 'SELECT r.RDB$FIELD_NAME AS field_name,
r.RDB$DESCRIPTION AS field_description,
r.RDB$DEFAULT_VALUE AS field_default_value,
r.RDB$NULL_FLAG AS field_not_null_constraint,
f.RDB$FIELD_LENGTH AS field_length,
f.RDB$FIELD_PRECISION AS field_precision,
f.RDB$FIELD_SCALE AS field_scale,
CASE f.RDB$FIELD_TYPE
WHEN 261 THEN \'BLOB\'
WHEN 14 THEN \'CHAR\'
WHEN 40 THEN \'CSTRING\'
WHEN 11 THEN \'D_FLOAT\'
WHEN 27 THEN \'DOUBLE\'
WHEN 10 THEN \'FLOAT\'
WHEN 16 THEN \'INT64\'
WHEN 8 THEN \'INTEGER\'
WHEN 9 THEN \'QUAD\'
WHEN 7 THEN \'SMALLINT\'
WHEN 12 THEN \'DATE\'
WHEN 13 THEN \'TIME\'
WHEN 35 THEN \'TIMESTAMP\'
WHEN 37 THEN \'VARCHAR\'
ELSE \'UNKNOWN\'
END AS field_type,
f.RDB$FIELD_SUB_TYPE AS field_subtype,
coll.RDB$COLLATION_NAME AS field_collation,
cset.RDB$CHARACTER_SET_NAME AS field_charset
FROM RDB$RELATION_FIELDS r
LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME
LEFT JOIN RDB$COLLATIONS coll ON f.RDB$COLLATION_ID = coll.RDB$COLLATION_ID
LEFT JOIN RDB$CHARACTER_SETS cset ON f.RDB$CHARACTER_SET_ID = cset.RDB$CHARACTER_SET_ID
WHERE r.RDB$RELATION_NAME = ' . q ( $Q ) . '
ORDER BY r.RDB$FIELD_POSITION' ; $I = ibase_query ( $h -> _link , $H ); while ( $K = ibase_fetch_assoc ( $I )) $J [ trim ( $K [ 'FIELD_NAME' ])] = array ( "field" => trim ( $K [ "FIELD_NAME" ]), "full_type" => trim ( $K [ "FIELD_TYPE" ]), "type" => trim ( $K [ "FIELD_SUB_TYPE" ]), "default" => trim ( $K [ 'FIELD_DEFAULT_VALUE' ]), "null" => ( trim ( $K [ "FIELD_NOT_NULL_CONSTRAINT" ]) == "YES" ), "auto_increment" => '0' , "collation" => trim ( $K [ "FIELD_COLLATION" ]), "privileges" => array ( "insert" => 1 , "select" => 1 , "update" => 1 ), "comment" => trim ( $K [ "FIELD_DESCRIPTION" ]),); return $J ;} function
indexes ( $Q , $i = null ){ $J = array (); return $J ;} function
foreign_keys ( $Q ){ return
array ();} function
collations (){ return
array ();} function
information_schema ( $m ){ return
false ;} function
error (){ global $h ; return
h ( $h -> error );} function
types (){ return
array ();} function
schemas (){ return
array ();} function
get_schema (){ return "" ;} function
2016-06-08 18:32:06 -06:00
set_schema ( $ng ){ return
2015-04-14 21:38:33 +00:00
true ;} function
support ( $Fc ){ return
2016-06-08 18:32:06 -06:00
preg_match ( "~^(columns|sql|status|table)$~" , $Fc );} $w = "firebird" ; $Re = array ( "=" ); $Uc = array (); $Zc = array (); $fc = array ();} $Xb [ "simpledb" ] = "SimpleDB" ; if ( isset ( $_GET [ "simpledb" ])){ $zf = array ( "SimpleXML" ); define ( "DRIVER" , "simpledb" ); if ( class_exists ( 'SimpleXMLElement' )){ class
2014-04-27 06:39:48 +00:00
Min_DB { var $extension = "SimpleXML" , $server_info = '2009-04-15' , $error , $timeout , $next , $affected_rows , $_result ; function
2015-04-14 21:38:33 +00:00
select_db ( $Gb ){ return ( $Gb == "domain" );} function
query ( $H , $Ch = false ){ $F = array ( 'SelectExpression' => $H , 'ConsistentRead' => 'true' ); if ( $this -> next ) $F [ 'NextToken' ] = $this -> next ; $I = sdb_request_all ( 'Select' , 'Item' , $F , $this -> timeout ); if ( $I === false ) return $I ; if ( preg_match ( '~^\s*SELECT\s+COUNT\(~i' , $H )){ $Pg = 0 ; foreach ( $I
as $Ed ) $Pg += $Ed -> Attribute -> Value ; $I = array (( object ) array ( 'Attribute' => array (( object ) array ( 'Name' => 'Count' , 'Value' => $Pg ,))));} return
2014-04-27 06:39:48 +00:00
new
Min_Result ( $I );} function
multi_query ( $H ){ return $this -> _result = $this -> query ( $H );} function
store_result (){ return $this -> _result ;} function
next_result (){ return
false ;} function
quote ( $P ){ return "'" . str_replace ( "'" , "''" , $P ) . "'" ;}} class
Min_Result { var $num_rows , $_rows = array (), $_offset = 0 ; function
2016-06-08 18:32:06 -06:00
__construct ( $I ){ foreach ( $I
2015-04-14 21:38:33 +00:00
as $Ed ){ $K = array (); if ( $Ed -> Name != '' ) $K [ 'itemName()' ] = ( string ) $Ed -> Name ; foreach ( $Ed -> Attribute
as $Ia ){ $C = $this -> _processValue ( $Ia -> Name ); $Y = $this -> _processValue ( $Ia -> Value ); if ( isset ( $K [ $C ])){ $K [ $C ] = ( array ) $K [ $C ]; $K [ $C ][] = $Y ;} else $K [ $C ] = $Y ;} $this -> _rows [] = $K ; foreach ( $K
2014-04-27 06:39:48 +00:00
as $x => $X ){ if ( ! isset ( $this -> _rows [ 0 ][ $x ])) $this -> _rows [ 0 ][ $x ] = null ;}} $this -> num_rows = count ( $this -> _rows );} function
2015-04-14 21:38:33 +00:00
_processValue ( $ic ){ return ( is_object ( $ic ) && $ic [ 'encoding' ] == 'base64' ? base64_decode ( $ic ) : ( string ) $ic );} function
2014-04-27 06:39:48 +00:00
fetch_assoc (){ $K = current ( $this -> _rows ); if ( ! $K ) return $K ; $J = array (); foreach ( $this -> _rows [ 0 ] as $x => $X ) $J [ $x ] = $K [ $x ]; next ( $this -> _rows ); return $J ;} function
fetch_row (){ $J = $this -> fetch_assoc (); if ( ! $J ) return $J ; return
array_values ( $J );} function
2015-04-14 21:38:33 +00:00
fetch_field (){ $Kd = array_keys ( $this -> _rows [ 0 ]); return ( object ) array ( 'name' => $Kd [ $this -> _offset ++ ]);}}} class
2014-04-27 06:39:48 +00:00
Min_Driver
extends
2016-06-08 18:32:06 -06:00
Min_SQL { public $Bf = "itemName()" ; function
_chunkRequest ( $ld , $va , $F , $yc = array ()){ global $h ; foreach ( array_chunk ( $ld , 25 ) as $gb ){ $jf = $F ; foreach ( $gb
as $s => $jd ){ $jf [ "Item. $s .ItemName" ] = $jd ; foreach ( $yc
as $x => $X ) $jf [ "Item. $s . $x " ] = $X ;} if ( ! sdb_request ( $va , $jf )) return
2015-04-14 21:38:33 +00:00
false ;} $h -> affected_rows = count ( $ld ); return
2014-04-27 06:39:48 +00:00
true ;} function
2016-06-08 18:32:06 -06:00
_extractIds ( $Q , $Mf , $z ){ $J = array (); if ( preg_match_all ( "~itemName\(\) = (('[^']*+')+)~" , $Mf , $de )) $J = array_map ( 'idf_unescape' , $de [ 1 ]); else { foreach ( sdb_request_all ( 'Select' , 'Item' , array ( 'SelectExpression' => 'SELECT itemName() FROM ' . table ( $Q ) . $Mf . ( $z ? " LIMIT 1" : "" ))) as $Ed ) $J [] = $Ed -> Name ;} return $J ;} function
select ( $Q , $M , $Z , $Xc , $We = array (), $z = 1 , $E = 0 , $Df = false ){ global $h ; $h -> next = $_GET [ "next" ]; $J = parent :: select ( $Q , $M , $Z , $Xc , $We , $z , $E , $Df ); $h -> next = 0 ; return $J ;} function
delete ( $Q , $Mf , $z = 0 ){ return $this -> _chunkRequest ( $this -> _extractIds ( $Q , $Mf , $z ), 'BatchDeleteAttributes' , array ( 'DomainName' => $Q ));} function
update ( $Q , $O , $Mf , $z = 0 , $ug = " \n " ){ $Mb = array (); $wd = array (); $s = 0 ; $ld = $this -> _extractIds ( $Q , $Mf , $z ); $jd = idf_unescape ( $O [ "`itemName()`" ]); unset ( $O [ "`itemName()`" ]); foreach ( $O
2015-04-14 21:38:33 +00:00
as $x => $X ){ $x = idf_unescape ( $x ); if ( $X == "NULL" || ( $jd != "" && array ( $jd ) != $ld )) $Mb [ "Attribute." . count ( $Mb ) . ".Name" ] = $x ; if ( $X != "NULL" ){ foreach (( array ) $X
as $Gd => $W ){ $wd [ "Attribute. $s .Name" ] = $x ; $wd [ "Attribute. $s .Value" ] = ( is_array ( $X ) ? $W : idf_unescape ( $W )); if ( ! $Gd ) $wd [ "Attribute. $s .Replace" ] = "true" ; $s ++ ;}}} $F = array ( 'DomainName' => $Q ); return ( ! $wd || $this -> _chunkRequest (( $jd != "" ? array ( $jd ) : $ld ), 'BatchPutAttributes' , $F , $wd )) && ( ! $Mb || $this -> _chunkRequest ( $ld , 'BatchDeleteAttributes' , $F , $Mb ));} function
insert ( $Q , $O ){ $F = array ( "DomainName" => $Q ); $s = 0 ; foreach ( $O
2014-04-27 06:39:48 +00:00
as $C => $Y ){ if ( $Y != "NULL" ){ $C = idf_unescape ( $C ); if ( $C == "itemName()" ) $F [ "ItemName" ] = idf_unescape ( $Y ); else { foreach (( array ) $Y
2015-04-14 21:38:33 +00:00
as $X ){ $F [ "Attribute. $s .Name" ] = $C ; $F [ "Attribute. $s .Value" ] = ( is_array ( $Y ) ? $X : idf_unescape ( $Y )); $s ++ ;}}}} return
2014-04-27 06:39:48 +00:00
sdb_request ( 'PutAttributes' , $F );} function
2016-06-08 18:32:06 -06:00
insertUpdate ( $Q , $L , $Bf ){ foreach ( $L
2014-04-27 06:39:48 +00:00
as $O ){ if ( ! $this -> update ( $Q , $O , "WHERE `itemName()` = " . q ( $O [ "`itemName()`" ]))) return
false ;} return
true ;} function
begin (){ return
false ;} function
commit (){ return
false ;} function
rollback (){ return
false ;}} function
connect (){ return
new
Min_DB ;} function
2015-04-14 21:38:33 +00:00
support ( $Fc ){ return
preg_match ( '~sql~' , $Fc );} function
logged_user (){ global $b ; $k = $b -> credentials (); return $k [ 1 ];} function
2014-04-27 06:39:48 +00:00
get_databases (){ return
array ( "domain" );} function
collations (){ return
array ();} function
2015-04-14 21:38:33 +00:00
db_collation ( $m , $nb ){} function
2014-04-27 06:39:48 +00:00
tables_list (){ global $h ; $J = array (); foreach ( sdb_request_all ( 'ListDomains' , 'DomainName' ) as $Q ) $J [( string ) $Q ] = 'table' ; if ( $h -> error && defined ( "PAGE_HEADER" )) echo "<p class='error'>" . error () . " \n " ; return $J ;} function
2016-06-08 18:32:06 -06:00
table_status ( $C = "" , $Ec = false ){ $J = array (); foreach (( $C != "" ? array ( $C => true ) : tables_list ()) as $Q => $U ){ $K = array ( "Name" => $Q , "Auto_increment" => "" ); if ( ! $Ec ){ $qe = sdb_request ( 'DomainMetadata' , array ( 'DomainName' => $Q )); if ( $qe ){ foreach ( array ( "Rows" => "ItemCount" , "Data_length" => "ItemNamesSizeBytes" , "Index_length" => "AttributeValuesSizeBytes" , "Data_free" => "AttributeNamesSizeBytes" ,) as $x => $X ) $K [ $x ] = ( string ) $qe -> $X ;}} if ( $C != "" ) return $K ; $J [ $Q ] = $K ;} return $J ;} function
2014-04-27 06:39:48 +00:00
explain ( $h , $H ){} function
error (){ global $h ; return
h ( $h -> error );} function
information_schema (){} function
is_view ( $R ){} function
indexes ( $Q , $i = null ){ return
array ( array ( "type" => "PRIMARY" , "columns" => array ( "itemName()" )),);} function
fields ( $Q ){ return
fields_from_edit ();} function
foreign_keys ( $Q ){ return
array ();} function
table ( $t ){ return
idf_escape ( $t );} function
idf_escape ( $t ){ return "`" . str_replace ( "`" , "``" , $t ) . "`" ;} function
2016-06-08 18:32:06 -06:00
limit ( $H , $Z , $z , $D = 0 , $ug = " " ){ return " $H$Z " . ( $z !== null ? $ug . "LIMIT $z " : "" );} function
2015-04-14 21:38:33 +00:00
unconvert_field ( $o , $J ){ return $J ;} function
2014-04-27 06:39:48 +00:00
fk_support ( $R ){} function
engines (){ return
array ();} function
2016-06-08 18:32:06 -06:00
alter_table ( $Q , $C , $p , $Mc , $rb , $nc , $d , $La , $nf ){ return ( $Q == "" && sdb_request ( 'CreateDomain' , array ( 'DomainName' => $C )));} function
2014-04-27 06:39:48 +00:00
drop_tables ( $S ){ foreach ( $S
as $Q ){ if ( ! sdb_request ( 'DeleteDomain' , array ( 'DomainName' => $Q ))) return
false ;} return
true ;} function
2015-04-14 21:38:33 +00:00
count_tables ( $l ){ foreach ( $l
as $m ) return
array ( $m => count ( tables_list ()));} function
2014-04-27 06:39:48 +00:00
found_rows ( $R , $Z ){ return ( $Z ? null : $R [ "Rows" ]);} function
last_id (){} function
2016-06-08 18:32:06 -06:00
hmac ( $Ba , $Eb , $x , $Qf = false ){ $Ua = 64 ; if ( strlen ( $x ) > $Ua ) $x = pack ( "H*" , $Ba ( $x )); $x = str_pad ( $x , $Ua , " \0 " ); $Hd = $x ^ str_repeat ( " \x36 " , $Ua ); $Id = $x ^ str_repeat ( " \x5C " , $Ua ); $J = $Ba ( $Id . pack ( "H*" , $Ba ( $Hd . $Eb ))); if ( $Qf ) $J = pack ( "H*" , $J ); return $J ;} function
sdb_request ( $va , $F = array ()){ global $b , $h ; list ( $hd , $F [ 'AWSAccessKeyId' ], $qg ) = $b -> credentials (); $F [ 'Action' ] = $va ; $F [ 'Timestamp' ] = gmdate ( 'Y-m-d\TH:i:s+00:00' ); $F [ 'Version' ] = '2009-04-15' ; $F [ 'SignatureVersion' ] = 2 ; $F [ 'SignatureMethod' ] = 'HmacSHA1' ; ksort ( $F ); $H = '' ; foreach ( $F
as $x => $X ) $H .= '&' . rawurlencode ( $x ) . '=' . rawurlencode ( $X ); $H = str_replace ( '%7E' , '~' , substr ( $H , 1 )); $H .= "&Signature=" . urlencode ( base64_encode ( hmac ( 'sha1' , "POST \n " . preg_replace ( '~^https?://~' , '' , $hd ) . " \n / \n $H " , $qg , true ))); @ ini_set ( 'track_errors' , 1 ); $Hc =@ file_get_contents (( preg_match ( '~^https?://~' , $hd ) ? $hd : "http:// $hd " ), false , stream_context_create ( array ( 'http' => array ( 'method' => 'POST' , 'content' => $H , 'ignore_errors' => 1 ,)))); if ( ! $Hc ){ $h -> error = $php_errormsg ; return
2015-04-14 21:38:33 +00:00
false ;} libxml_use_internal_errors ( true ); $ei = simplexml_load_string ( $Hc ); if ( ! $ei ){ $n = libxml_get_last_error (); $h -> error = $n -> message ; return
false ;} if ( $ei -> Errors ){ $n = $ei -> Errors -> Error ; $h -> error = " $n->Message ( $n->Code )" ; return
false ;} $h -> error = '' ; $ah = $va . "Result" ; return ( $ei -> $ah ? $ei -> $ah : true );} function
sdb_request_all ( $va , $ah , $F = array (), $jh = 0 ){ $J = array (); $Hg = ( $jh ? microtime ( true ) : 0 ); $z = ( preg_match ( '~LIMIT\s+(\d+)\s*$~i' , $F [ 'SelectExpression' ], $B ) ? $B [ 1 ] : 0 ); do { $ei = sdb_request ( $va , $F ); if ( ! $ei ) break ; foreach ( $ei -> $ah
as $ic ) $J [] = $ic ; if ( $z && count ( $J ) >= $z ){ $_GET [ "next" ] = $ei -> NextToken ; break ;} if ( $jh && microtime ( true ) - $Hg > $jh ) return
2016-06-08 18:32:06 -06:00
false ; $F [ 'NextToken' ] = $ei -> NextToken ; if ( $z ) $F [ 'SelectExpression' ] = preg_replace ( '~\d+\s*$~' , $z - count ( $J ), $F [ 'SelectExpression' ]);} while ( $ei -> NextToken ); return $J ;} $w = "simpledb" ; $Re = array ( "=" , "<" , ">" , "<=" , ">=" , "!=" , "LIKE" , "LIKE %%" , "IN" , "IS NULL" , "NOT LIKE" , "IS NOT NULL" ); $Uc = array (); $Zc = array ( "count" ); $fc = array ( array ( "json" ));} $Xb [ "mongo" ] = "MongoDB (beta)" ; if ( isset ( $_GET [ "mongo" ])){ $zf = array ( "mongo" ); define ( "DRIVER" , "mongo" ); if ( class_exists ( 'MongoDB' )){ class
2014-04-27 06:39:48 +00:00
Min_DB { var $extension = "Mongo" , $error , $last_id , $_link , $_db ; function
2016-06-08 18:32:06 -06:00
connect ( $N , $V , $G ){ global $b ; $m = $b -> database (); $Ue = array (); if ( $V != "" ){ $Ue [ "username" ] = $V ; $Ue [ "password" ] = $G ;} if ( $m != "" ) $Ue [ "db" ] = $m ; try { $this -> _link =@ new
MongoClient ( "mongodb:// $N " , $Ue ); return
2015-04-14 21:38:33 +00:00
true ;} catch ( Exception $uc ){ $this -> error = $uc -> getMessage (); return
2014-04-27 06:39:48 +00:00
false ;}} function
query ( $H ){ return
false ;} function
2015-04-14 21:38:33 +00:00
select_db ( $Gb ){ try { $this -> _db = $this -> _link -> selectDB ( $Gb ); return
true ;} catch ( Exception $uc ){ $this -> error = $uc -> getMessage (); return
2014-04-27 06:39:48 +00:00
false ;}} function
quote ( $P ){ return $P ;}} class
Min_Result { var $num_rows , $_rows = array (), $_offset = 0 , $_charset = array (); function
2016-06-08 18:32:06 -06:00
__construct ( $I ){ foreach ( $I
2015-04-14 21:38:33 +00:00
as $Ed ){ $K = array (); foreach ( $Ed
2014-04-27 06:39:48 +00:00
as $x => $X ){ if ( is_a ( $X , 'MongoBinData' )) $this -> _charset [ $x ] = 63 ; $K [ $x ] = ( is_a ( $X , 'MongoId' ) ? 'ObjectId("' . strval ( $X ) . '")' : ( is_a ( $X , 'MongoDate' ) ? gmdate ( "Y-m-d H:i:s" , $X -> sec ) . " GMT" : ( is_a ( $X , 'MongoBinData' ) ? $X -> bin : ( is_a ( $X , 'MongoRegex' ) ? strval ( $X ) : ( is_object ( $X ) ? get_class ( $X ) : $X )))));} $this -> _rows [] = $K ; foreach ( $K
as $x => $X ){ if ( ! isset ( $this -> _rows [ 0 ][ $x ])) $this -> _rows [ 0 ][ $x ] = null ;}} $this -> num_rows = count ( $this -> _rows );} function
fetch_assoc (){ $K = current ( $this -> _rows ); if ( ! $K ) return $K ; $J = array (); foreach ( $this -> _rows [ 0 ] as $x => $X ) $J [ $x ] = $K [ $x ]; next ( $this -> _rows ); return $J ;} function
fetch_row (){ $J = $this -> fetch_assoc (); if ( ! $J ) return $J ; return
array_values ( $J );} function
2015-04-14 21:38:33 +00:00
fetch_field (){ $Kd = array_keys ( $this -> _rows [ 0 ]); $C = $Kd [ $this -> _offset ++ ]; return ( object ) array ( 'name' => $C , 'charsetnr' => $this -> _charset [ $C ],);}}} class
2014-04-27 06:39:48 +00:00
Min_Driver
extends
2016-06-08 18:32:06 -06:00
Min_SQL { public $Bf = "_id" ; function
select ( $Q , $M , $Z , $Xc , $We = array (), $z = 1 , $E = 0 , $Df = false ){ $M = ( $M == array ( "*" ) ? array () : array_fill_keys ( $M , true )); $Cg = array (); foreach ( $We
2015-04-14 21:38:33 +00:00
as $X ){ $X = preg_replace ( '~ DESC$~' , '' , $X , 1 , $Ab ); $Cg [ $X ] = ( $Ab ?- 1 : 1 );} return
2014-04-27 06:39:48 +00:00
new
2015-04-14 21:38:33 +00:00
Min_Result ( $this -> _conn -> _db -> selectCollection ( $Q ) -> find ( array (), $M ) -> sort ( $Cg ) -> limit ( + $z ) -> skip ( $E * $z ));} function
insert ( $Q , $O ){ try { $J = $this -> _conn -> _db -> selectCollection ( $Q ) -> insert ( $O ); $this -> _conn -> errno = $J [ 'code' ]; $this -> _conn -> error = $J [ 'err' ]; $this -> _conn -> last_id = $O [ '_id' ]; return ! $J [ 'err' ];} catch ( Exception $uc ){ $this -> _conn -> error = $uc -> getMessage (); return
2014-04-27 06:39:48 +00:00
false ;}}} function
connect (){ global $b ; $h = new
2015-04-14 21:38:33 +00:00
Min_DB ; $k = $b -> credentials (); if ( $h -> connect ( $k [ 0 ], $k [ 1 ], $k [ 2 ])) return $h ; return $h -> error ;} function
2014-04-27 06:39:48 +00:00
error (){ global $h ; return
h ( $h -> error );} function
2015-04-14 21:38:33 +00:00
logged_user (){ global $b ; $k = $b -> credentials (); return $k [ 1 ];} function
get_databases ( $Lc ){ global $h ; $J = array (); $Jb = $h -> _link -> listDBs (); foreach ( $Jb [ 'databases' ] as $m ) $J [] = $m [ 'name' ]; return $J ;} function
2014-04-27 06:39:48 +00:00
collations (){ return
array ();} function
2015-04-14 21:38:33 +00:00
db_collation ( $m , $nb ){} function
count_tables ( $l ){ global $h ; $J = array (); foreach ( $l
as $m ) $J [ $m ] = count ( $h -> _link -> selectDB ( $m ) -> getCollectionNames ( true )); return $J ;} function
2014-04-27 06:39:48 +00:00
tables_list (){ global $h ; return
array_fill_keys ( $h -> _db -> getCollectionNames ( true ), 'table' );} function
2015-04-14 21:38:33 +00:00
table_status ( $C = "" , $Ec = false ){ $J = array (); foreach ( tables_list () as $Q => $U ){ $J [ $Q ] = array ( "Name" => $Q ); if ( $C == $Q ) return $J [ $Q ];} return $J ;} function
2014-04-27 06:39:48 +00:00
information_schema (){} function
is_view ( $R ){} function
2015-04-14 21:38:33 +00:00
drop_databases ( $l ){ global $h ; foreach ( $l
2016-06-08 18:32:06 -06:00
as $m ){ $bg = $h -> _link -> selectDB ( $m ) -> drop (); if ( ! $bg [ 'ok' ]) return
2014-04-27 06:39:48 +00:00
false ;} return
true ;} function
2015-04-14 21:38:33 +00:00
indexes ( $Q , $i = null ){ global $h ; $J = array (); foreach ( $h -> _db -> selectCollection ( $Q ) -> getIndexInfo () as $u ){ $Pb = array (); foreach ( $u [ "key" ] as $e => $U ) $Pb [] = ( $U ==- 1 ? '1' : null ); $J [ $u [ "name" ]] = array ( "type" => ( $u [ "name" ] == "_id_" ? "PRIMARY" : ( $u [ "unique" ] ? "UNIQUE" : "INDEX" )), "columns" => array_keys ( $u [ "key" ]), "lengths" => array (), "descs" => $Pb ,);} return $J ;} function
2014-04-27 06:39:48 +00:00
fields ( $Q ){ return
fields_from_edit ();} function
2015-04-14 21:38:33 +00:00
convert_field ( $o ){} function
unconvert_field ( $o , $J ){ return $J ;} function
2014-04-27 06:39:48 +00:00
foreign_keys ( $Q ){ return
array ();} function
fk_support ( $R ){} function
engines (){ return
array ();} function
found_rows ( $R , $Z ){ global $h ; return $h -> _db -> selectCollection ( $_GET [ "select" ]) -> count ( $Z );} function
2016-06-08 18:32:06 -06:00
alter_table ( $Q , $C , $p , $Mc , $rb , $nc , $d , $La , $nf ){ global $h ; if ( $Q == "" ){ $h -> _db -> createCollection ( $C ); return
2014-04-27 06:39:48 +00:00
true ;}} function
drop_tables ( $S ){ global $h ; foreach ( $S
2016-06-08 18:32:06 -06:00
as $Q ){ $bg = $h -> _db -> selectCollection ( $Q ) -> drop (); if ( ! $bg [ 'ok' ]) return
2014-04-27 06:39:48 +00:00
false ;} return
true ;} function
truncate_tables ( $S ){ global $h ; foreach ( $S
2016-06-08 18:32:06 -06:00
as $Q ){ $bg = $h -> _db -> selectCollection ( $Q ) -> remove (); if ( ! $bg [ 'ok' ]) return
2014-04-27 06:39:48 +00:00
false ;} return
true ;} function
alter_indexes ( $Q , $c ){ global $h ; foreach ( $c
as $X ){ list ( $U , $C , $O ) = $X ; if ( $O == "DROP" ) $J = $h -> _db -> command ( array ( "deleteIndexes" => $Q , "index" => $C )); else { $f = array (); foreach ( $O
2015-04-14 21:38:33 +00:00
as $e ){ $e = preg_replace ( '~ DESC$~' , '' , $e , 1 , $Ab ); $f [ $e ] = ( $Ab ?- 1 : 1 );} $J = $h -> _db -> selectCollection ( $Q ) -> ensureIndex ( $f , array ( "unique" => ( $U == "UNIQUE" ), "name" => $C ,));} if ( $J [ 'errmsg' ]){ $h -> error = $J [ 'errmsg' ]; return
2014-04-27 06:39:48 +00:00
false ;}} return
true ;} function
last_id (){ global $h ; return $h -> last_id ;} function
table ( $t ){ return $t ;} function
idf_escape ( $t ){ return $t ;} function
2015-04-14 21:38:33 +00:00
support ( $Fc ){ return
2016-06-08 18:32:06 -06:00
preg_match ( "~database|indexes~" , $Fc );} $w = "mongo" ; $Re = array ( "=" ); $Uc = array (); $Zc = array (); $fc = array ( array ( "json" ));} $Xb [ "elastic" ] = "Elasticsearch (beta)" ; if ( isset ( $_GET [ "elastic" ])){ $zf = array ( "json" ); define ( "DRIVER" , "elastic" ); if ( function_exists ( 'json_decode' )){ class
2014-04-27 06:39:48 +00:00
Min_DB { var $extension = "JSON" , $server_info , $errno , $error , $_url ; function
2016-06-08 18:32:06 -06:00
rootQuery ( $qf , $wb = array (), $re = 'GET' ){ @ ini_set ( 'track_errors' , 1 ); $Hc =@ file_get_contents ( $this -> _url . '/' . ltrim ( $qf , '/' ), false , stream_context_create ( array ( 'http' => array ( 'method' => $re , 'content' => json_encode ( $wb ), 'ignore_errors' => 1 ,)))); if ( ! $Hc ){ $this -> error = $php_errormsg ; return $Hc ;} if ( ! preg_match ( '~^HTTP/[0-9.]+ 2~i' , $http_response_header [ 0 ])){ $this -> error = $Hc ; return
2015-04-14 21:38:33 +00:00
false ;} $J = json_decode ( $Hc , true ); if ( $J === null ){ $this -> errno = json_last_error (); if ( function_exists ( 'json_last_error_msg' )) $this -> error = json_last_error_msg (); else { $vb = get_defined_constants ( true ); foreach ( $vb [ 'json' ] as $C => $Y ){ if ( $Y == $this -> errno && preg_match ( '~^JSON_ERROR_~' , $C )){ $this -> error = $C ; break ;}}}} return $J ;} function
2016-06-08 18:32:06 -06:00
query ( $qf , $wb = array (), $re = 'GET' ){ return $this -> rootQuery (( $this -> _db != "" ? " $this->_db /" : "/" ) . ltrim ( $qf , '/' ), $wb , $re );} function
2014-04-27 06:39:48 +00:00
connect ( $N , $V , $G ){ $this -> _url = "http:// $V : $G @ $N /" ; $J = $this -> query ( '' ); if ( $J ) $this -> server_info = $J [ 'version' ][ 'number' ]; return ( bool ) $J ;} function
2015-04-14 21:38:33 +00:00
select_db ( $Gb ){ $this -> _db = $Gb ; return
2014-04-27 06:39:48 +00:00
true ;} function
quote ( $P ){ return $P ;}} class
Min_Result { var $num_rows , $_rows ; function
2016-06-08 18:32:06 -06:00
__construct ( $L ){ $this -> num_rows = count ( $this -> _rows ); $this -> _rows = $L ; reset ( $this -> _rows );} function
2014-04-27 06:39:48 +00:00
fetch_assoc (){ $J = current ( $this -> _rows ); next ( $this -> _rows ); return $J ;} function
fetch_row (){ return
array_values ( $this -> fetch_assoc ());}}} class
Min_Driver
extends
Min_SQL { function
2016-06-08 18:32:06 -06:00
select ( $Q , $M , $Z , $Xc , $We = array (), $z = 1 , $E = 0 , $Df = false ){ global $b ; $Eb = array (); $H = " $Q /_search" ; if ( $M != array ( "*" )) $Eb [ "fields" ] = $M ; if ( $We ){ $Cg = array (); foreach ( $We
2015-04-14 21:38:33 +00:00
as $lb ){ $lb = preg_replace ( '~ DESC$~' , '' , $lb , 1 , $Ab ); $Cg [] = ( $Ab ? array ( $lb => "desc" ) : $lb );} $Eb [ "sort" ] = $Cg ;} if ( $z ){ $Eb [ "size" ] =+ $z ; if ( $E ) $Eb [ "from" ] = ( $E * $z );} foreach ( $Z
2016-06-08 18:32:06 -06:00
as $X ){ list ( $lb , $Pe , $X ) = explode ( " " , $X , 3 ); if ( $lb == "_id" ) $Eb [ "query" ][ "ids" ][ "values" ][] = $X ; elseif ( $lb . $X != "" ){ $eh = array ( "term" => array (( $lb != "" ? $lb : "_all" ) => $X )); if ( $Pe == "=" ) $Eb [ "query" ][ "filtered" ][ "filter" ][ "and" ][] = $eh ; else $Eb [ "query" ][ "filtered" ][ "query" ][ "bool" ][ "must" ][] = $eh ;}} if ( $Eb [ "query" ] &&! $Eb [ "query" ][ "filtered" ][ "query" ] &&! $Eb [ "query" ][ "ids" ]) $Eb [ "query" ][ "filtered" ][ "query" ] = array ( "match_all" => array ()); $Hg = microtime ( true ); $pg = $this -> _conn -> query ( $H , $Eb ); if ( $Df ) echo $b -> selectQuery ( " $H : " . print_r ( $Eb , true ), format_time ( $Hg )); if ( ! $pg ) return
false ; $J = array (); foreach ( $pg [ 'hits' ][ 'hits' ] as $gd ){ $K = array (); if ( $M == array ( "*" )) $K [ "_id" ] = $gd [ "_id" ]; $p = $gd [ '_source' ]; if ( $M != array ( "*" )){ $p = array (); foreach ( $M
2015-04-14 21:38:33 +00:00
as $x ) $p [ $x ] = $gd [ 'fields' ][ $x ];} foreach ( $p
as $x => $X ){ if ( $Eb [ "fields" ]) $X = $X [ 0 ]; $K [ $x ] = ( is_array ( $X ) ? json_encode ( $X ) : $X );} $J [] = $K ;} return
2014-04-27 06:39:48 +00:00
new
Min_Result ( $J );}} function
connect (){ global $b ; $h = new
2015-04-14 21:38:33 +00:00
Min_DB ; $k = $b -> credentials (); if ( $h -> connect ( $k [ 0 ], $k [ 1 ], $k [ 2 ])) return $h ; return $h -> error ;} function
support ( $Fc ){ return
preg_match ( "~database|table|columns~" , $Fc );} function
logged_user (){ global $b ; $k = $b -> credentials (); return $k [ 1 ];} function
get_databases (){ global $h ; $J = $h -> rootQuery ( '_aliases' ); if ( $J ){ $J = array_keys ( $J ); sort ( $J , SORT_STRING );} return $J ;} function
2014-04-27 06:39:48 +00:00
collations (){ return
array ();} function
2015-04-14 21:38:33 +00:00
db_collation ( $m , $nb ){} function
engines (){ return
array ();} function
count_tables ( $l ){ global $h ; $J = $h -> query ( '_mapping' ); if ( $J ) $J = array_map ( 'count' , $J ); return $J ;} function
tables_list (){ global $h ; $J = $h -> query ( '_mapping' ); if ( $J ) $J = array_fill_keys ( array_keys ( $J [ $h -> _db ][ "mappings" ]), 'table' ); return $J ;} function
2016-06-08 18:32:06 -06:00
table_status ( $C = "" , $Ec = false ){ global $h ; $pg = $h -> query ( "_search?search_type=count" , array ( "facets" => array ( "count_by_type" => array ( "terms" => array ( "field" => "_type" ,)))), "POST" ); $J = array (); if ( $pg ){ foreach ( $pg [ "facets" ][ "count_by_type" ][ "terms" ] as $Q ) $J [ $Q [ "term" ]] = array ( "Name" => $Q [ "term" ], "Engine" => "table" , "Rows" => $Q [ "count" ],); if ( $C != "" && $C == $Q [ "term" ]) return $J [ $C ];} return $J ;} function
2014-04-27 06:39:48 +00:00
error (){ global $h ; return
h ( $h -> error );} function
information_schema (){} function
is_view ( $R ){} function
indexes ( $Q , $i = null ){ return
array ( array ( "type" => "PRIMARY" , "columns" => array ( "_id" )),);} function
2016-06-08 18:32:06 -06:00
fields ( $Q ){ global $h ; $I = $h -> query ( " $Q /_mapping" ); $J = array (); if ( $I ){ $be = $I [ $Q ][ 'properties' ]; if ( ! $be ) $be = $I [ $h -> _db ][ 'mappings' ][ $Q ][ 'properties' ]; if ( $be ){ foreach ( $be
2015-04-14 21:38:33 +00:00
as $C => $o ){ $J [ $C ] = array ( "field" => $C , "full_type" => $o [ "type" ], "type" => $o [ "type" ], "privileges" => array ( "insert" => 1 , "select" => 1 , "update" => 1 ),); if ( $o [ "properties" ]){ unset ( $J [ $C ][ "privileges" ][ "insert" ]); unset ( $J [ $C ][ "privileges" ][ "update" ]);}}}} return $J ;} function
2014-04-27 06:39:48 +00:00
foreign_keys ( $Q ){ return
array ();} function
table ( $t ){ return $t ;} function
idf_escape ( $t ){ return $t ;} function
2015-04-14 21:38:33 +00:00
convert_field ( $o ){} function
unconvert_field ( $o , $J ){ return $J ;} function
2014-04-27 06:39:48 +00:00
fk_support ( $R ){} function
found_rows ( $R , $Z ){ return
null ;} function
2015-04-14 21:38:33 +00:00
create_database ( $m ){ global $h ; return $h -> rootQuery ( urlencode ( $m ), array (), 'PUT' );} function
drop_databases ( $l ){ global $h ; return $h -> rootQuery ( urlencode ( implode ( ',' , $l )), array (), 'DELETE' );} function
2014-04-27 06:39:48 +00:00
drop_tables ( $S ){ global $h ; $J = true ; foreach ( $S
2016-06-08 18:32:06 -06:00
as $Q ) $J = $J && $h -> query ( urlencode ( $Q ), array (), 'DELETE' ); return $J ;} $w = "elastic" ; $Re = array ( "=" , "query" ); $Uc = array (); $Zc = array (); $fc = array ( array ( "json" ));} $Xb = array ( "server" => "MySQL" ) + $Xb ; if ( ! defined ( "DRIVER" )){ $zf = array ( "MySQLi" , "MySQL" , "PDO_MySQL" ); define ( "DRIVER" , "server" ); if ( extension_loaded ( "mysqli" )){ class
2012-06-04 14:58:40 +00:00
Min_DB
extends
MySQLi { var $extension = "MySQLi" ; function
2016-06-08 18:32:06 -06:00
__construct (){ parent :: init ();} function
connect ( $N = "" , $V = "" , $G = "" , $Gb = null , $vf = null , $Bg = null ){ mysqli_report ( MYSQLI_REPORT_OFF ); list ( $hd , $vf ) = explode ( ":" , $N , 2 ); $J =@ $this -> real_connect (( $N != "" ? $hd : ini_get ( "mysqli.default_host" )),( $N . $V != "" ? $V : ini_get ( "mysqli.default_user" )),( $N . $V . $G != "" ? $G : ini_get ( "mysqli.default_pw" )), $Gb ,( is_numeric ( $vf ) ? $vf : ini_get ( "mysqli.default_port" )),( ! is_numeric ( $vf ) ? $vf : $Bg )); return $J ;} function
2015-04-14 21:38:33 +00:00
set_charset ( $ab ){ if ( parent :: set_charset ( $ab )) return
true ; parent :: set_charset ( 'utf8' ); return $this -> query ( "SET NAMES $ab " );} function
result ( $H , $o = 0 ){ $I = $this -> query ( $H ); if ( ! $I ) return
false ; $K = $I -> fetch_array (); return $K [ $o ];} function
2014-04-27 06:39:48 +00:00
quote ( $P ){ return "'" . $this -> escape_string ( $P ) . "'" ;}}} elseif ( extension_loaded ( "mysql" ) &&! ( ini_get ( "sql.safe_mode" ) && extension_loaded ( "pdo_mysql" ))){ class
2013-07-27 15:43:34 +00:00
Min_DB { var $extension = "MySQL" , $server_info , $affected_rows , $errno , $error , $_link , $_result ; function
2015-04-14 21:38:33 +00:00
connect ( $N , $V , $G ){ $this -> _link =@ mysql_connect (( $N != "" ? $N : ini_get ( "mysql.default_host" )),( " $N$V " != "" ? $V : ini_get ( "mysql.default_user" )),( " $N$V$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
set_charset ( $ab ){ if ( function_exists ( 'mysql_set_charset' )){ if ( mysql_set_charset ( $ab , $this -> _link )) return
true ; mysql_set_charset ( 'utf8' , $this -> _link );} return $this -> query ( "SET NAMES $ab " );} function
2014-04-27 06:39:48 +00:00
quote ( $P ){ return "'" . mysql_real_escape_string ( $P , $this -> _link ) . "'" ;} function
2015-04-14 21:38:33 +00:00
select_db ( $Gb ){ return
mysql_select_db ( $Gb , $this -> _link );} function
query ( $H , $Ch = false ){ $I =@ ( $Ch ? mysql_unbuffered_query ( $H , $this -> _link ) : mysql_query ( $H , $this -> _link )); $this -> error = "" ; if ( ! $I ){ $this -> errno = mysql_errno ( $this -> _link ); $this -> error = mysql_error ( $this -> _link ); return
2014-04-27 06:39:48 +00:00
false ;} if ( $I === true ){ $this -> affected_rows = mysql_affected_rows ( $this -> _link ); $this -> info = mysql_info ( $this -> _link ); return
2012-06-04 14:58:40 +00:00
true ;} return
new
2014-04-27 06:39:48 +00:00
Min_Result ( $I );} function
multi_query ( $H ){ return $this -> _result = $this -> query ( $H );} function
2012-06-04 14:58:40 +00:00
store_result (){ return $this -> _result ;} function
next_result (){ return
false ;} function
2015-04-14 21:38:33 +00:00
result ( $H , $o = 0 ){ $I = $this -> query ( $H ); if ( ! $I ||! $I -> num_rows ) return
2013-07-27 15:43:34 +00:00
false ; return
2015-04-14 21:38:33 +00:00
mysql_result ( $I -> _result , 0 , $o );}} class
2012-06-04 14:58:40 +00:00
Min_Result { var $num_rows , $_result , $_offset = 0 ; function
2016-06-08 18:32:06 -06:00
__construct ( $I ){ $this -> _result = $I ; $this -> num_rows = mysql_num_rows ( $I );} function
2012-06-04 14:58:40 +00:00
fetch_assoc (){ return
mysql_fetch_assoc ( $this -> _result );} function
fetch_row (){ return
mysql_fetch_row ( $this -> _result );} function
2014-04-27 06:39:48 +00:00
fetch_field (){ $J = mysql_fetch_field ( $this -> _result , $this -> _offset ++ ); $J -> orgtable = $J -> table ; $J -> orgname = $J -> name ; $J -> charsetnr = ( $J -> blob ? 63 : 0 ); return $J ;} function
2012-06-04 14:58:40 +00:00
__destruct (){ mysql_free_result ( $this -> _result );}}} elseif ( extension_loaded ( "pdo_mysql" )){ class
Min_DB
extends
Min_PDO { var $extension = "PDO_MySQL" ; function
2015-04-14 21:38:33 +00:00
connect ( $N , $V , $G ){ $this -> dsn ( "mysql:charset=utf8;host=" . str_replace ( ":" , ";unix_socket=" , preg_replace ( '~:(\\d)~' , ';port=\\1' , $N )), $V , $G ); return
2012-06-04 14:58:40 +00:00
true ;} function
2015-04-14 21:38:33 +00:00
set_charset ( $ab ){ $this -> query ( "SET NAMES $ab " );} function
select_db ( $Gb ){ return $this -> query ( "USE " . idf_escape ( $Gb ));} function
query ( $H , $Ch = false ){ $this -> setAttribute ( 1000 , ! $Ch ); return
parent :: query ( $H , $Ch );}}} class
2014-04-27 06:39:48 +00:00
Min_Driver
extends
Min_SQL { function
insert ( $Q , $O ){ return ( $O ? parent :: insert ( $Q , $O ) : queries ( "INSERT INTO " . table ( $Q ) . " () \n VALUES ()" ));} function
2016-06-08 18:32:06 -06:00
insertUpdate ( $Q , $L , $Bf ){ $f = array_keys ( reset ( $L )); $_f = "INSERT INTO " . table ( $Q ) . " (" . implode ( ", " , $f ) . ") VALUES \n " ; $Th = array (); foreach ( $f
2015-04-14 21:38:33 +00:00
as $x ) $Th [ $x ] = " $x = VALUES( $x )" ; $Og = " \n ON DUPLICATE KEY UPDATE " . implode ( ", " , $Th ); $Th = array (); $y = 0 ; foreach ( $L
2016-06-08 18:32:06 -06:00
as $O ){ $Y = "(" . implode ( ", " , $O ) . ")" ; if ( $Th && ( strlen ( $_f ) + $y + strlen ( $Y ) + strlen ( $Og ) > 1e6 )){ if ( ! queries ( $_f . implode ( ", \n " , $Th ) . $Og )) return
2015-04-14 21:38:33 +00:00
false ; $Th = array (); $y = 0 ;} $Th [] = $Y ; $y += strlen ( $Y ) + 2 ;} return
2016-06-08 18:32:06 -06:00
queries ( $_f . implode ( ", \n " , $Th ) . $Og );}} function
2013-07-27 15:43:34 +00:00
idf_escape ( $t ){ return "`" . str_replace ( "`" , "``" , $t ) . "`" ;} function
table ( $t ){ return
idf_escape ( $t );} function
2014-04-27 06:39:48 +00:00
connect (){ global $b ; $h = new
2016-06-08 18:32:06 -06:00
Min_DB ; $k = $b -> credentials (); if ( $h -> connect ( $k [ 0 ], $k [ 1 ], $k [ 2 ])){ $h -> set_charset ( charset ( $h )); $h -> query ( "SET sql_quote_show_create = 1, autocommit = 1" ); return $h ;} $J = $h -> error ; if ( function_exists ( 'iconv' ) &&! is_utf8 ( $J ) && strlen ( $lg = iconv ( "windows-1250" , "utf-8" , $J )) > strlen ( $J )) $J = $lg ; return $J ;} function
2015-04-14 21:38:33 +00:00
get_databases ( $Lc ){ global $h ; $J = get_session ( "dbs" ); if ( $J === null ){ $H = ( $h -> server_info >= 5 ? "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA" : "SHOW DATABASES" ); $J = ( $Lc ? slow_query ( $H ) : get_vals ( $H )); restart_session (); set_session ( "dbs" , $J ); stop_session ();} return $J ;} function
2016-06-08 18:32:06 -06:00
limit ( $H , $Z , $z , $D = 0 , $ug = " " ){ return " $H$Z " . ( $z !== null ? $ug . "LIMIT $z " . ( $D ? " OFFSET $D " : "" ) : "" );} function
2014-04-27 06:39:48 +00:00
limit1 ( $H , $Z ){ return
limit ( $H , $Z , 1 );} function
2015-04-14 21:38:33 +00:00
db_collation ( $m , $nb ){ global $h ; $J = null ; $j = $h -> result ( "SHOW CREATE DATABASE " . idf_escape ( $m ), 1 ); if ( preg_match ( '~ COLLATE ([^ ]+)~' , $j , $B )) $J = $B [ 1 ]; elseif ( preg_match ( '~ CHARACTER SET ([^ ]+)~' , $j , $B )) $J = $nb [ $B [ 1 ]][ - 1 ]; return $J ;} function
2014-04-27 06:39:48 +00:00
engines (){ $J = array (); foreach ( get_rows ( "SHOW ENGINES" ) as $K ){ if ( preg_match ( "~YES|DEFAULT~" , $K [ "Support" ])) $J [] = $K [ "Engine" ];} return $J ;} function
logged_user (){ global $h ; return $h -> result ( "SELECT USER()" );} function
tables_list (){ global $h ; return
get_key_vals ( $h -> server_info >= 5 ? "SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME" : "SHOW TABLES" );} function
2015-04-14 21:38:33 +00:00
count_tables ( $l ){ $J = array (); foreach ( $l
as $m ) $J [ $m ] = count ( get_vals ( "SHOW TABLES IN " . idf_escape ( $m ))); return $J ;} function
table_status ( $C = "" , $Ec = false ){ global $h ; $J = array (); foreach ( get_rows ( $Ec && $h -> server_info >= 5 ? "SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() " . ( $C != "" ? "AND TABLE_NAME = " . q ( $C ) : "ORDER BY Name" ) : "SHOW TABLE STATUS" . ( $C != "" ? " LIKE " . q ( addcslashes ( $C , "%_ \\ " )) : "" )) as $K ){ if ( $K [ "Engine" ] == "InnoDB" ) $K [ "Comment" ] = preg_replace ( '~(?:(.+); )?InnoDB free: .*~' , '\\1' , $K [ "Comment" ]); if ( ! isset ( $K [ "Engine" ])) $K [ "Comment" ] = "" ; if ( $C != "" ) return $K ; $J [ $K [ "Name" ]] = $K ;} return $J ;} function
2014-04-27 06:39:48 +00:00
is_view ( $R ){ return $R [ "Engine" ] === null ;} function
2015-04-14 21:38:33 +00:00
fk_support ( $R ){ global $h ; return
preg_match ( '~InnoDB|IBMDB2I~i' , $R [ "Engine" ]) || ( preg_match ( '~NDB~i' , $R [ "Engine" ]) && version_compare ( $h -> server_info , '5.6' ) >= 0 );} function
2014-04-27 06:39:48 +00:00
fields ( $Q ){ $J = array (); foreach ( get_rows ( "SHOW FULL COLUMNS FROM " . table ( $Q )) as $K ){ preg_match ( '~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~' , $K [ "Type" ], $B ); $J [ $K [ "Field" ]] = array ( "field" => $K [ "Field" ], "full_type" => $K [ "Type" ], "type" => $B [ 1 ], "length" => $B [ 2 ], "unsigned" => ltrim ( $B [ 3 ] . $B [ 4 ]), "default" => ( $K [ "Default" ] != "" || preg_match ( "~char|set~" , $B [ 1 ]) ? $K [ "Default" ] : null ), "null" => ( $K [ "Null" ] == "YES" ), "auto_increment" => ( $K [ "Extra" ] == "auto_increment" ), "on_update" => ( preg_match ( '~^on update (.+)~i' , $K [ "Extra" ], $B ) ? $B [ 1 ] : "" ), "collation" => $K [ "Collation" ], "privileges" => array_flip ( preg_split ( '~, *~' , $K [ "Privileges" ])), "comment" => $K [ "Comment" ], "primary" => ( $K [ "Key" ] == "PRI" ),);} return $J ;} function
indexes ( $Q , $i = null ){ $J = array (); foreach ( get_rows ( "SHOW INDEX FROM " . table ( $Q ), $i ) as $K ){ $J [ $K [ "Key_name" ]][ "type" ] = ( $K [ "Key_name" ] == "PRIMARY" ? "PRIMARY" : ( $K [ "Index_type" ] == "FULLTEXT" ? "FULLTEXT" : ( $K [ "Non_unique" ] ? "INDEX" : "UNIQUE" ))); $J [ $K [ "Key_name" ]][ "columns" ][] = $K [ "Column_name" ]; $J [ $K [ "Key_name" ]][ "lengths" ][] = $K [ "Sub_part" ]; $J [ $K [ "Key_name" ]][ "descs" ][] = null ;} return $J ;} function
2016-06-08 18:32:06 -06:00
foreign_keys ( $Q ){ global $h , $Me ; static $sf = '`(?:[^`]|``)+`' ; $J = array (); $Bb = $h -> result ( "SHOW CREATE TABLE " . table ( $Q ), 1 ); if ( $Bb ){ preg_match_all ( "~CONSTRAINT ( $sf ) FOREIGN KEY ? \\ (((?: $sf ,? ?)+) \\ ) REFERENCES ( $sf )(?: \\ .( $sf ))? \\ (((?: $sf ,? ?)+) \\ )(?: ON DELETE ( $Me ))?(?: ON UPDATE ( $Me ))?~" , $Bb , $de , PREG_SET_ORDER ); foreach ( $de
as $B ){ preg_match_all ( "~ $sf ~" , $B [ 2 ], $Dg ); preg_match_all ( "~ $sf ~" , $B [ 5 ], $bh ); $J [ idf_unescape ( $B [ 1 ])] = array ( "db" => idf_unescape ( $B [ 4 ] != "" ? $B [ 3 ] : $B [ 4 ]), "table" => idf_unescape ( $B [ 4 ] != "" ? $B [ 4 ] : $B [ 3 ]), "source" => array_map ( 'idf_unescape' , $Dg [ 0 ]), "target" => array_map ( 'idf_unescape' , $bh [ 0 ]), "on_delete" => ( $B [ 6 ] ? $B [ 6 ] : "RESTRICT" ), "on_update" => ( $B [ 7 ] ? $B [ 7 ] : "RESTRICT" ),);}} return $J ;} function
2014-04-27 06:39:48 +00:00
view ( $C ){ global $h ; return
array ( "select" => preg_replace ( '~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU' , '' , $h -> result ( "SHOW CREATE VIEW " . table ( $C ), 1 )));} function
collations (){ $J = array (); foreach ( get_rows ( "SHOW COLLATION" ) as $K ){ if ( $K [ "Default" ]) $J [ $K [ "Charset" ]][ - 1 ] = $K [ "Collation" ]; else $J [ $K [ "Charset" ]][] = $K [ "Collation" ];} ksort ( $J ); foreach ( $J
as $x => $X ) asort ( $J [ $x ]); return $J ;} function
2015-04-14 21:38:33 +00:00
information_schema ( $m ){ global $h ; return ( $h -> server_info >= 5 && $m == "information_schema" ) || ( $h -> server_info >= 5.5 && $m == "performance_schema" );} function
2014-04-27 06:39:48 +00:00
error (){ global $h ; return
h ( preg_replace ( '~^You have an error.*syntax to use~U' , "Syntax error" , $h -> error ));} function
2015-04-14 21:38:33 +00:00
create_database ( $m , $d ){ return
queries ( "CREATE DATABASE " . idf_escape ( $m ) . ( $d ? " COLLATE " . q ( $d ) : "" ));} function
drop_databases ( $l ){ $J = apply_queries ( "DROP DATABASE" , $l , 'idf_escape' ); restart_session (); set_session ( "dbs" , null ); return $J ;} function
2016-06-08 18:32:06 -06:00
rename_database ( $C , $d ){ $J = false ; if ( create_database ( $C , $d )){ $Zf = array (); foreach ( tables_list () as $Q => $U ) $Zf [] = table ( $Q ) . " TO " . idf_escape ( $C ) . "." . table ( $Q ); $J = ( ! $Zf || queries ( "RENAME TABLE " . implode ( ", " , $Zf ))); if ( $J ) queries ( "DROP DATABASE " . idf_escape ( DB )); restart_session (); set_session ( "dbs" , null );} return $J ;} function
2015-04-14 21:38:33 +00:00
auto_increment (){ $Ma = " PRIMARY KEY" ; if ( $_GET [ "create" ] != "" && $_POST [ "auto_increment_col" ]){ foreach ( indexes ( $_GET [ "create" ]) as $u ){ if ( in_array ( $_POST [ "fields" ][ $_POST [ "auto_increment_col" ]][ "orig" ], $u [ "columns" ], true )){ $Ma = "" ; break ;} if ( $u [ "type" ] == "PRIMARY" ) $Ma = " UNIQUE" ;}} return " AUTO_INCREMENT $Ma " ;} function
2016-06-08 18:32:06 -06:00
alter_table ( $Q , $C , $p , $Mc , $rb , $nc , $d , $La , $nf ){ $c = array (); foreach ( $p
2015-04-14 21:38:33 +00:00
as $o ) $c [] = ( $o [ 1 ] ? ( $Q != "" ? ( $o [ 0 ] != "" ? "CHANGE " . idf_escape ( $o [ 0 ]) : "ADD" ) : " " ) . " " . implode ( $o [ 1 ]) . ( $Q != "" ? $o [ 2 ] : "" ) : "DROP " . idf_escape ( $o [ 0 ])); $c = array_merge ( $c , $Mc ); $Ig = ( $rb !== null ? " COMMENT=" . q ( $rb ) : "" ) . ( $nc ? " ENGINE=" . q ( $nc ) : "" ) . ( $d ? " COLLATE " . q ( $d ) : "" ) . ( $La != "" ? " AUTO_INCREMENT= $La " : "" ); if ( $Q == "" ) return
2016-06-08 18:32:06 -06:00
queries ( "CREATE TABLE " . table ( $C ) . " ( \n " . implode ( ", \n " , $c ) . " \n ) $Ig$nf " ); if ( $Q != $C ) $c [] = "RENAME TO " . table ( $C ); if ( $Ig ) $c [] = ltrim ( $Ig ); return ( $c || $nf ? queries ( "ALTER TABLE " . table ( $Q ) . " \n " . implode ( ", \n " , $c ) . $nf ) : true );} function
2014-04-27 06:39:48 +00:00
alter_indexes ( $Q , $c ){ foreach ( $c
as $x => $X ) $c [ $x ] = ( $X [ 2 ] == "DROP" ? " \n DROP INDEX " . idf_escape ( $X [ 1 ]) : " \n ADD $X[0] " . ( $X [ 0 ] == "PRIMARY" ? "KEY " : "" ) . ( $X [ 1 ] != "" ? idf_escape ( $X [ 1 ]) . " " : "" ) . "(" . implode ( ", " , $X [ 2 ]) . ")" ); return
queries ( "ALTER TABLE " . table ( $Q ) . implode ( "," , $c ));} function
truncate_tables ( $S ){ return
apply_queries ( "TRUNCATE TABLE" , $S );} function
2015-04-14 21:38:33 +00:00
drop_views ( $Yh ){ return
queries ( "DROP VIEW " . implode ( ", " , array_map ( 'table' , $Yh )));} function
2014-04-27 06:39:48 +00:00
drop_tables ( $S ){ return
queries ( "DROP TABLE " . implode ( ", " , array_map ( 'table' , $S )));} function
2016-06-08 18:32:06 -06:00
move_tables ( $S , $Yh , $bh ){ $Zf = array (); foreach ( array_merge ( $S , $Yh ) as $Q ) $Zf [] = table ( $Q ) . " TO " . idf_escape ( $bh ) . "." . table ( $Q ); return
queries ( "RENAME TABLE " . implode ( ", " , $Zf ));} function
2015-04-14 21:38:33 +00:00
copy_tables ( $S , $Yh , $bh ){ queries ( "SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'" ); foreach ( $S
as $Q ){ $C = ( $bh == DB ? table ( "copy_ $Q " ) : idf_escape ( $bh ) . "." . table ( $Q )); if ( ! queries ( " \n DROP TABLE IF EXISTS $C " ) ||! queries ( "CREATE TABLE $C LIKE " . table ( $Q )) ||! queries ( "INSERT INTO $C SELECT * FROM " . table ( $Q ))) return
false ;} foreach ( $Yh
as $Q ){ $C = ( $bh == DB ? table ( "copy_ $Q " ) : idf_escape ( $bh ) . "." . table ( $Q )); $Xh = view ( $Q ); if ( ! queries ( "DROP VIEW IF EXISTS $C " ) ||! queries ( "CREATE VIEW $C AS $Xh[select] " )) return
2013-07-27 15:43:34 +00:00
false ;} return
2012-06-04 14:58:40 +00:00
true ;} function
2014-04-27 06:39:48 +00:00
trigger ( $C ){ if ( $C == "" ) return
array (); $L = get_rows ( "SHOW TRIGGERS WHERE `Trigger` = " . q ( $C )); return
reset ( $L );} function
triggers ( $Q ){ $J = array (); foreach ( get_rows ( "SHOW TRIGGERS LIKE " . q ( addcslashes ( $Q , "%_ \\ " ))) as $K ) $J [ $K [ "Trigger" ]] = array ( $K [ "Timing" ], $K [ "Event" ]); return $J ;} function
2012-06-04 14:58:40 +00:00
trigger_options (){ return
2014-04-27 06:39:48 +00:00
array ( "Timing" => array ( "BEFORE" , "AFTER" ), "Event" => array ( "INSERT" , "UPDATE" , "DELETE" ), "Type" => array ( "FOR EACH ROW" ),);} function
2016-06-08 18:32:06 -06:00
routine ( $C , $U ){ global $h , $pc , $ud , $Bh ; $Ca = array ( "bool" , "boolean" , "integer" , "double precision" , "real" , "dec" , "numeric" , "fixed" , "national char" , "national varchar" ); $Ah = "((" . implode ( "|" , array_merge ( array_keys ( $Bh ), $Ca )) . ") \\ b(?: \\ s* \\ (((?:[^' \" )]| $pc )++) \\ ))? \\ s*(zerofill \\ s*)?(unsigned(?: \\ s+zerofill)?)?)(?: \\ s*(?:CHARSET|CHARACTER \\ s+SET) \\ s*[' \" ]?([^' \"\\ s,]+)[' \" ]?)?" ; $sf = " \\ s*(" . ( $U == "FUNCTION" ? "" : $ud ) . ")? \\ s*(?:`((?:[^`]|``)*)` \\ s*| \\ b( \\ S+) \\ s+) $Ah " ; $j = $h -> result ( "SHOW CREATE $U " . idf_escape ( $C ), 2 ); preg_match ( "~ \\ (((?: $sf \\ s*,?)*) \\ ) \\ s*" . ( $U == "FUNCTION" ? "RETURNS \\ s+ $Ah \\ s+" : "" ) . "(.*)~is" , $j , $B ); $p = array (); preg_match_all ( "~ $sf \\ s*,?~is" , $B [ 1 ], $de , PREG_SET_ORDER ); foreach ( $de
as $if ){ $C = str_replace ( "``" , "`" , $if [ 2 ]) . $if [ 3 ]; $p [] = array ( "field" => $C , "type" => strtolower ( $if [ 5 ]), "length" => preg_replace_callback ( "~ $pc ~s" , 'normalize_enum' , $if [ 6 ]), "unsigned" => strtolower ( preg_replace ( '~\\s+~' , ' ' , trim ( " $if[8] $if[7] " ))), "null" => 1 , "full_type" => $if [ 4 ], "inout" => strtoupper ( $if [ 1 ]), "collation" => strtolower ( $if [ 9 ]),);} if ( $U != "FUNCTION" ) return
2015-04-14 21:38:33 +00:00
array ( "fields" => $p , "definition" => $B [ 11 ]); return
array ( "fields" => $p , "returns" => array ( "type" => $B [ 12 ], "length" => $B [ 13 ], "unsigned" => $B [ 15 ], "collation" => $B [ 16 ]), "definition" => $B [ 17 ], "language" => "SQL" ,);} function
2012-06-04 14:58:40 +00:00
routines (){ return
2013-07-27 15:43:34 +00:00
get_rows ( "SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = " . q ( DB ));} function
routine_languages (){ return
array ();} function
2014-04-27 06:39:48 +00:00
last_id (){ global $h ; return $h -> result ( "SELECT LAST_INSERT_ID()" );} function
explain ( $h , $H ){ return $h -> query ( "EXPLAIN " . ( $h -> server_info >= 5.1 ? "PARTITIONS " : "" ) . $H );} function
found_rows ( $R , $Z ){ return ( $Z || $R [ "Engine" ] != "InnoDB" ? null : $R [ "Rows" ]);} function
2012-06-04 14:58:40 +00:00
types (){ return
array ();} function
schemas (){ return
array ();} function
get_schema (){ return "" ;} function
2016-06-08 18:32:06 -06:00
set_schema ( $ng ){ return
2012-06-04 14:58:40 +00:00
true ;} function
2015-04-14 21:38:33 +00:00
create_sql ( $Q , $La ){ global $h ; $J = $h -> result ( "SHOW CREATE TABLE " . table ( $Q ), 1 ); if ( ! $La ) $J = preg_replace ( '~ AUTO_INCREMENT=\\d+~' , '' , $J ); return $J ;} function
2014-04-27 06:39:48 +00:00
truncate_sql ( $Q ){ return "TRUNCATE " . table ( $Q );} function
2015-04-14 21:38:33 +00:00
use_sql ( $Gb ){ return "USE " . idf_escape ( $Gb );} function
trigger_sql ( $Q , $Mg ){ $J = "" ; foreach ( get_rows ( "SHOW TRIGGERS LIKE " . q ( addcslashes ( $Q , "%_ \\ " )), null , "-- " ) as $K ) $J .= " \n " . ( $Mg == 'CREATE+ALTER' ? "DROP TRIGGER IF EXISTS " . idf_escape ( $K [ "Trigger" ]) . ";; \n " : "" ) . "CREATE TRIGGER " . idf_escape ( $K [ "Trigger" ]) . " $K[Timing] $K[Event] ON " . table ( $K [ "Table" ]) . " FOR EACH ROW \n $K[Statement] ;; \n " ; return $J ;} function
2012-06-04 14:58:40 +00:00
show_variables (){ return
get_key_vals ( "SHOW VARIABLES" );} function
2013-07-27 15:43:34 +00:00
process_list (){ return
get_rows ( "SHOW FULL PROCESSLIST" );} function
2012-06-04 14:58:40 +00:00
show_status (){ return
get_key_vals ( "SHOW STATUS" );} function
2015-04-14 21:38:33 +00:00
convert_field ( $o ){ if ( preg_match ( "~binary~" , $o [ "type" ])) return "HEX(" . idf_escape ( $o [ "field" ]) . ")" ; if ( $o [ "type" ] == "bit" ) return "BIN(" . idf_escape ( $o [ "field" ]) . " + 0)" ; if ( preg_match ( "~geometry|point|linestring|polygon~" , $o [ "type" ])) return "AsWKT(" . idf_escape ( $o [ "field" ]) . ")" ;} function
unconvert_field ( $o , $J ){ if ( preg_match ( "~binary~" , $o [ "type" ])) $J = "UNHEX( $J )" ; if ( $o [ "type" ] == "bit" ) $J = "CONV( $J , 2, 10) + 0" ; if ( preg_match ( "~geometry|point|linestring|polygon~" , $o [ "type" ])) $J = "GeomFromText( $J )" ; return $J ;} function
2016-06-08 18:32:06 -06:00
support ( $Fc ){ global $h ; return ! preg_match ( "~scheme|sequence|type|view_trigger" . ( $h -> server_info < 5.1 ? "|event|partitioning" . ( $h -> server_info < 5 ? "|routine|trigger|view" : "" ) : "" ) . "~" , $Fc );} function
kill_process ( $X ){ return
queries ( "KILL " . number ( $X ));} function
max_connections (){ global $h ; return $h -> result ( "SELECT @@max_connections" );} $w = "sql" ; $Bh = array (); $Lg = array (); foreach ( array ( lang ( 24 ) => array ( "tinyint" => 3 , "smallint" => 5 , "mediumint" => 8 , "int" => 10 , "bigint" => 20 , "decimal" => 66 , "float" => 12 , "double" => 21 ), lang ( 25 ) => array ( "date" => 10 , "datetime" => 19 , "timestamp" => 19 , "time" => 10 , "year" => 4 ), lang ( 26 ) => array ( "char" => 255 , "varchar" => 65535 , "tinytext" => 255 , "text" => 65535 , "mediumtext" => 16777215 , "longtext" => 4294967295 ), lang ( 30 ) => array ( "enum" => 65535 , "set" => 64 ), lang ( 27 ) => array ( "bit" => 20 , "binary" => 255 , "varbinary" => 65535 , "tinyblob" => 255 , "blob" => 65535 , "mediumblob" => 16777215 , "longblob" => 4294967295 ), lang ( 29 ) => array ( "geometry" => 0 , "point" => 0 , "linestring" => 0 , "polygon" => 0 , "multipoint" => 0 , "multilinestring" => 0 , "multipolygon" => 0 , "geometrycollection" => 0 ),) as $x => $X ){ $Bh += $X ; $Lg [ $x ] = array_keys ( $X );} $Ih = array ( "unsigned" , "zerofill" , "unsigned zerofill" ); $Re = array ( "=" , "<" , ">" , "<=" , ">=" , "!=" , "LIKE" , "LIKE %%" , "REGEXP" , "IN" , "IS NULL" , "NOT LIKE" , "NOT REGEXP" , "NOT IN" , "IS NOT NULL" , "SQL" ); $Uc = array ( "char_length" , "date" , "from_unixtime" , "lower" , "round" , "sec_to_time" , "time_to_sec" , "upper" ); $Zc = array ( "avg" , "count" , "count distinct" , "group_concat" , "max" , "min" , "sum" ); $fc = 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" ]) . "&" : "" ) : '' )); $ia = "4.2.5" ; class
2012-06-04 14:58:40 +00:00
Adminer { var $operators ; function
2016-06-08 18:32:06 -06:00
name (){ return "<a href='https://www.adminer.org/' target='_blank' id='h1'>Adminer</a>" ;} function
2012-06-04 14:58:40 +00:00
credentials (){ return
2014-04-27 06:39:48 +00:00
array ( SERVER , $_GET [ "username" ], get_password ());} function
2015-04-14 21:38:33 +00:00
permanentLogin ( $j = false ){ return
password_file ( $j );} function
2014-04-27 06:39:48 +00:00
bruteForceKey (){ return $_SERVER [ "REMOTE_ADDR" ];} function
2012-06-04 14:58:40 +00:00
database (){ return
DB ;} function
2015-04-14 21:38:33 +00:00
databases ( $Lc = true ){ return
get_databases ( $Lc );} function
2014-04-27 06:39:48 +00:00
schemas (){ return
schemas ();} function
2013-07-27 15:43:34 +00:00
queryTimeout (){ return
5 ;} function
headers (){ return
true ;} function
2012-06-04 14:58:40 +00:00
head (){ return
true ;} function
2015-04-14 21:38:33 +00:00
loginForm (){ global $Xb ; echo '<table cellspacing="0">
2016-06-08 18:38:27 -06:00
<tr><th>' , lang ( 31 ), '<td>' , adminer_html_select ( "auth[driver]" , $Xb , DRIVER ), '<tr><th>' , lang ( 32 ), '<td><input name="auth[server]" value="' , h ( SERVER ), '" title="hostname[:port]" placeholder="localhost" autocapitalize="off">
2014-04-27 06:39:48 +00:00
<tr><th>' , lang ( 33 ), '<td><input name="auth[username]" id="username" value="' , h ( $_GET [ "username" ]), '" autocapitalize="off">
<tr><th>' , lang ( 34 ), '<td><input type="password" name="auth[password]">
2016-06-08 18:32:06 -06:00
<tr><th>' , lang ( 35 ), '<td><input name="auth[db]" value="' , h ( $_GET [ "db" ]), '" autocapitalize="off">
2012-06-04 14:58:40 +00:00
</table>
<script type="text/javascript">
2016-06-08 18:32:06 -06:00
focus(document.getElementById(\'username\'));
2012-06-04 14:58:40 +00:00
</script>
2016-06-08 18:32:06 -06:00
' , "<p><input type='submit' value='" . lang ( 36 ) . "'> \n " , checkbox ( "auth[permanent]" , 1 , $_COOKIE [ "adminer_permanent" ], lang ( 37 )) . " \n " ;} function
login ( $Zd , $G ){ global $w ; if ( $w == "sqlite" ) return
lang ( 38 , 'login()' ); return
2012-06-04 14:58:40 +00:00
true ;} function
2015-04-14 21:38:33 +00:00
tableName ( $Sg ){ return
h ( $Sg [ "Name" ]);} function
2016-06-08 18:32:06 -06:00
fieldName ( $o , $We = 0 ){ return '<span title="' . h ( $o [ "full_type" ]) . '">' . h ( $o [ "field" ]) . '</span>' ;} function
selectLinks ( $Sg , $O = "" ){ echo '<p class="links">' ; $Yd = array ( "select" => lang ( 39 )); if ( support ( "table" ) || support ( "indexes" )) $Yd [ "table" ] = lang ( 40 ); if ( support ( "table" )){ if ( is_view ( $Sg )) $Yd [ "view" ] = lang ( 41 ); else $Yd [ "create" ] = lang ( 42 );} if ( $O !== null ) $Yd [ "edit" ] = lang ( 43 ); foreach ( $Yd
2015-04-14 21:38:33 +00:00
as $x => $X ) echo " <a href='" . h ( ME ) . " $x =" . urlencode ( $Sg [ "Name" ]) . ( $x == "edit" ? $O : "" ) . "'" . bold ( isset ( $_GET [ $x ])) . "> $X </a>" ; echo " \n " ;} function
2014-04-27 06:39:48 +00:00
foreignKeys ( $Q ){ return
foreign_keys ( $Q );} function
2015-04-14 21:38:33 +00:00
backwardKeys ( $Q , $Rg ){ return
2012-06-04 14:58:40 +00:00
array ();} function
2015-04-14 21:38:33 +00:00
backwardKeysPrint ( $Oa , $K ){} function
selectQuery ( $H , $ih ){ global $w ; return "<p><code class='jush- $w '>" . h ( str_replace ( " \n " , " " , $H )) . "</code> <span class='time'>( $ih )</span>" . ( support ( "sql" ) ? " <a href='" . h ( ME ) . "sql=" . urlencode ( $H ) . "'>" . lang ( 10 ) . "</a>" : "" ) . "</p>" ;} function
2014-04-27 06:39:48 +00:00
rowDescription ( $Q ){ return "" ;} function
2015-04-14 21:38:33 +00:00
rowDescriptions ( $L , $Nc ){ return $L ;} function
selectLink ( $X , $o ){} function
2016-06-08 18:32:06 -06:00
selectVal ( $X , $_ , $o , $df ){ $J = ( $X === null ? "<i>NULL</i>" : ( preg_match ( "~char|binary~" , $o [ "type" ]) &&! preg_match ( "~var~" , $o [ "type" ]) ? "<code> $X </code>" : $X )); if ( preg_match ( '~blob|bytea|raw|file~' , $o [ "type" ]) &&! is_utf8 ( $X )) $J = lang ( 44 , strlen ( $df )); return ( $_ ? "<a href='" . h ( $_ ) . "'" . ( is_url ( $_ ) ? " rel='noreferrer'" : "" ) . "> $J </a>" : $J );} function
2015-04-14 21:38:33 +00:00
editVal ( $X , $o ){ return $X ;} function
2016-06-08 18:32:06 -06:00
selectColumnsPrint ( $M , $f ){ global $Uc , $Zc ; print_fieldset ( "select" , lang ( 45 ), $M ); $s = 0 ; $M [ "" ] = array (); foreach ( $M
as $x => $X ){ $X = $_GET [ "columns" ][ $x ]; $e = select_input ( " name='columns[ $s ][col]' onchange='" . ( $x !== "" ? "selectFieldChange(this.form)" : "selectAddRow(this)" ) . ";'" , $f , $X [ "col" ]); echo "<div>" . ( $Uc || $Zc ? "<select name='columns[ $s ][fun]' onchange='helpClose();" . ( $x !== "" ? "" : " this.nextSibling.nextSibling.onchange();" ) . "'" . on_help ( "getTarget(event).value && getTarget(event).value.replace(/ | \$ /, '(') + ')'" , 1 ) . ">" . optionlist ( array ( - 1 => "" ) + array_filter ( array ( lang ( 46 ) => $Uc , lang ( 47 ) => $Zc )), $X [ "fun" ]) . "</select>" . "( $e )" : $e ) . "</div> \n " ; $s ++ ;} echo "</div></fieldset> \n " ;} function
selectSearchPrint ( $Z , $f , $v ){ print_fieldset ( "search" , lang ( 48 ), $Z ); foreach ( $v
2016-06-08 18:38:27 -06:00
as $s => $u ){ if ( $u [ "type" ] == "FULLTEXT" ){ echo "(<i>" . implode ( "</i>, <i>" , array_map ( 'h' , $u [ "columns" ])) . "</i>) AGAINST" , " <input type='search' name='fulltext[ $s ]' value='" . h ( $_GET [ "fulltext" ][ $s ]) . "' onchange='selectFieldChange(this.form);'>" , checkbox ( "boolean[ $s ]" , 1 , isset ( $_GET [ "boolean" ][ $s ]), "BOOL" ), "<br> \n " ;}} $_GET [ "where" ] = ( array ) $_GET [ "where" ]; reset ( $_GET [ "where" ]); $Za = "this.nextSibling.onchange();" ; for ( $s = 0 ; $s <= count ( $_GET [ "where" ]); $s ++ ){ list (, $X ) = each ( $_GET [ "where" ]); if ( ! $X || ( " $X[col]$X[val] " != "" && in_array ( $X [ "op" ], $this -> operators ))){ echo "<div>" . select_input ( " name='where[ $s ][col]' onchange=' $Za '" , $f , $X [ "col" ], "(" . lang ( 49 ) . ")" ), adminer_html_select ( "where[ $s ][op]" , $this -> operators , $X [ "op" ], $Za ), "<input type='search' name='where[ $s ][val]' value='" . h ( $X [ "val" ]) . "' onchange='" . ( $X ? "selectFieldChange(this.form)" : "selectAddRow(this)" ) . ";' onkeydown='selectSearchKeydown(this, event);' onsearch='selectSearchSearch(this);'></div> \n " ;}} echo "</div></fieldset> \n " ;} function
2016-06-08 18:32:06 -06:00
selectOrderPrint ( $We , $f , $v ){ print_fieldset ( "sort" , lang ( 50 ), $We ); $s = 0 ; foreach (( array ) $_GET [ "order" ] as $x => $X ){ if ( $X != "" ){ echo "<div>" . select_input ( " name='order[ $s ]' onchange='selectFieldChange(this.form);'" , $f , $X ), checkbox ( "desc[ $s ]" , 1 , isset ( $_GET [ "desc" ][ $x ]), lang ( 51 )) . "</div> \n " ; $s ++ ;}} echo "<div>" . select_input ( " name='order[ $s ]' onchange='selectAddRow(this);'" , $f ), checkbox ( "desc[ $s ]" , 1 , false , lang ( 51 )) . "</div> \n " , "</div></fieldset> \n " ;} function
selectLimitPrint ( $z ){ echo "<fieldset><legend>" . lang ( 52 ) . "</legend><div>" ; echo "<input type='number' name='limit' class='size' value='" . h ( $z ) . "' onchange='selectFieldChange(this.form);'>" , "</div></fieldset> \n " ;} function
selectLengthPrint ( $hh ){ if ( $hh !== null ){ echo "<fieldset><legend>" . lang ( 53 ) . "</legend><div>" , "<input type='number' name='text_length' class='size' value='" . h ( $hh ) . "'>" , "</div></fieldset> \n " ;}} function
selectActionPrint ( $v ){ echo "<fieldset><legend>" . lang ( 54 ) . "</legend><div>" , "<input type='submit' value='" . lang ( 45 ) . "'>" , " <span id='noindex' title='" . lang ( 55 ) . "'></span>" , "<script type='text/javascript'> \n " , "var indexColumns = " ; $f = array (); foreach ( $v
2014-04-27 06:39:48 +00:00
as $u ){ if ( $u [ "type" ] != "FULLTEXT" ) $f [ reset ( $u [ "columns" ])] = 1 ;} $f [ "" ] = 1 ; foreach ( $f
2013-07-27 15:43:34 +00:00
as $x => $X ) json_row ( $x ); echo "; \n " , "selectFieldChange(document.getElementById('form')); \n " , "</script> \n " , "</div></fieldset> \n " ;} function
selectCommandPrint (){ return ! information_schema ( DB );} function
selectImportPrint (){ return ! information_schema ( DB );} function
2015-04-14 21:38:33 +00:00
selectEmailPrint ( $kc , $f ){} function
selectColumnsProcess ( $f , $v ){ global $Uc , $Zc ; $M = array (); $Xc = array (); foreach (( array ) $_GET [ "columns" ] as $x => $X ){ if ( $X [ "fun" ] == "count" || ( $X [ "col" ] != "" && ( ! $X [ "fun" ] || in_array ( $X [ "fun" ], $Uc ) || in_array ( $X [ "fun" ], $Zc )))){ $M [ $x ] = apply_sql_function ( $X [ "fun" ],( $X [ "col" ] != "" ? idf_escape ( $X [ "col" ]) : "*" )); if ( ! in_array ( $X [ "fun" ], $Zc )) $Xc [] = $M [ $x ];}} return
array ( $M , $Xc );} function
selectSearchProcess ( $p , $v ){ global $h , $w ; $J = array (); foreach ( $v
as $s => $u ){ if ( $u [ "type" ] == "FULLTEXT" && $_GET [ "fulltext" ][ $s ] != "" ) $J [] = "MATCH (" . implode ( ", " , array_map ( 'idf_escape' , $u [ "columns" ])) . ") AGAINST (" . q ( $_GET [ "fulltext" ][ $s ]) . ( isset ( $_GET [ "boolean" ][ $s ]) ? " IN BOOLEAN MODE" : "" ) . ")" ;} foreach (( array ) $_GET [ "where" ] as $X ){ if ( " $X[col]$X[val] " != "" && in_array ( $X [ "op" ], $this -> operators )){ $tb = " $X[op] " ; if ( preg_match ( '~IN$~' , $X [ "op" ])){ $nd = process_length ( $X [ "val" ]); $tb .= " " . ( $nd != "" ? $nd : "(NULL)" );} elseif ( $X [ "op" ] == "SQL" ) $tb = " $X[val] " ; elseif ( $X [ "op" ] == "LIKE %%" ) $tb = " LIKE " . $this -> processInput ( $p [ $X [ "col" ]], "% $X[val] %" ); elseif ( $X [ "op" ] == "ILIKE %%" ) $tb = " ILIKE " . $this -> processInput ( $p [ $X [ "col" ]], "% $X[val] %" ); elseif ( ! preg_match ( '~NULL$~' , $X [ "op" ])) $tb .= " " . $this -> processInput ( $p [ $X [ "col" ]], $X [ "val" ]); if ( $X [ "col" ] != "" ) $J [] = idf_escape ( $X [ "col" ]) . $tb ; else { $ob = array (); foreach ( $p
as $C => $o ){ $Cd = preg_match ( '~char|text|enum|set~' , $o [ "type" ]); if (( is_numeric ( $X [ "val" ]) ||! preg_match ( '~(^|[^o])int|float|double|decimal|bit~' , $o [ "type" ])) && ( ! preg_match ( "~[ \x80 - \xFF ]~" , $X [ "val" ]) || $Cd )){ $C = idf_escape ( $C ); $ob [] = ( $w == "sql" && $Cd &&! preg_match ( "~^utf8_~" , $o [ "collation" ]) ? "CONVERT( $C USING " . charset ( $h ) . ")" : $C );}} $J [] = ( $ob ? "(" . implode ( " $tb OR " , $ob ) . " $tb )" : "0" );}}} return $J ;} function
selectOrderProcess ( $p , $v ){ $J = array (); foreach (( array ) $_GET [ "order" ] as $x => $X ){ if ( $X != "" ) $J [] = ( preg_match ( '~^((COUNT\\(DISTINCT |[A-Z0-9_]+\\()(`(?:[^`]|``)+`|"(?:[^"]|"")+")\\)|COUNT\\(\\*\\))$~' , $X ) ? $X : idf_escape ( $X )) . ( isset ( $_GET [ "desc" ][ $x ]) ? " DESC" : "" );} return $J ;} function
2013-07-27 15:43:34 +00:00
selectLimitProcess (){ return ( isset ( $_GET [ "limit" ]) ? $_GET [ "limit" ] : "50" );} function
2012-06-04 14:58:40 +00:00
selectLengthProcess (){ return ( isset ( $_GET [ "text_length" ]) ? $_GET [ "text_length" ] : "100" );} function
2015-04-14 21:38:33 +00:00
selectEmailProcess ( $Z , $Nc ){ return
2012-06-04 14:58:40 +00:00
false ;} function
2016-06-08 18:32:06 -06:00
selectQueryBuild ( $M , $Z , $Xc , $We , $z , $E ){ return "" ;} function
messageQuery ( $H , $ih ){ global $w ; restart_session (); $ed =& get_session ( "queries" ); $jd = "sql-" . count ( $ed [ $_GET [ "db" ]]); if ( strlen ( $H ) > 1e6 ) $H = preg_replace ( '~[\x80-\xFF]+$~' , '' , substr ( $H , 0 , 1e6 )) . " \n ..." ; $ed [ $_GET [ "db" ]][] = array ( $H , time (), $ih ); return " <span class='time'>" .@ date ( "H:i:s" ) . "</span> <a href='# $jd ' onclick= \" return !toggle(' $jd '); \" >" . lang ( 56 ) . "</a>" . "<div id=' $jd ' class='hidden'><pre><code class='jush- $w '>" . shorten_utf8 ( $H , 1000 ) . '</code></pre>' . ( $ih ? " <span class='time'>( $ih )</span>" : '' ) . ( support ( "sql" ) ? '<p><a href="' . h ( str_replace ( "db=" . urlencode ( DB ), "db=" . urlencode ( $_GET [ "db" ]), ME ) . 'sql=&history=' . ( count ( $ed [ $_GET [ "db" ]]) - 1 )) . '">' . lang ( 10 ) . '</a>' : '' ) . '</div>' ;} function
2015-04-14 21:38:33 +00:00
editFunctions ( $o ){ global $fc ; $J = ( $o [ "null" ] ? "NULL/" : "" ); foreach ( $fc
as $x => $Uc ){ if ( ! $x || ( ! isset ( $_GET [ "call" ]) && ( isset ( $_GET [ "select" ]) || where ( $_GET )))){ foreach ( $Uc
2016-06-08 18:32:06 -06:00
as $sf => $X ){ if ( ! $sf || preg_match ( "~ $sf ~" , $o [ "type" ])) $J .= "/ $X " ;} if ( $x &&! preg_match ( '~set|blob|bytea|raw|file~' , $o [ "type" ])) $J .= "/SQL" ;}} if ( $o [ "auto_increment" ] &&! isset ( $_GET [ "select" ]) &&! where ( $_GET )) $J = lang ( 57 ); return
2014-04-27 06:39:48 +00:00
explode ( "/" , $J );} function
2015-04-14 21:38:33 +00:00
editInput ( $Q , $o , $Ja , $Y ){ if ( $o [ "type" ] == "enum" ) return ( isset ( $_GET [ "select" ]) ? "<label><input type='radio' $Ja value='-1' checked><i>" . lang ( 8 ) . "</i></label> " : "" ) . ( $o [ "null" ] ? "<label><input type='radio' $Ja value=''" . ( $Y !== null || isset ( $_GET [ "select" ]) ? "" : " checked" ) . "><i>NULL</i></label> " : "" ) . enum_input ( "radio" , $Ja , $o , $Y , 0 ); return "" ;} function
processInput ( $o , $Y , $r = "" ){ if ( $r == "SQL" ) return $Y ; $C = $o [ "field" ]; $J = q ( $Y ); if ( preg_match ( '~^(now|getdate|uuid)$~' , $r )) $J = " $r ()" ; elseif ( preg_match ( '~^current_(date|timestamp)$~' , $r )) $J = $r ; elseif ( preg_match ( '~^([+-]|\\|\\|)$~' , $r )) $J = idf_escape ( $C ) . " $r $J " ; elseif ( preg_match ( '~^[+-] interval$~' , $r )) $J = idf_escape ( $C ) . " $r " . ( preg_match ( "~^( \\ d+|'[0-9.: -]') [A-Z_]+$~i" , $Y ) ? $Y : $J ); elseif ( preg_match ( '~^(addtime|subtime|concat)$~' , $r )) $J = " $r (" . idf_escape ( $C ) . ", $J )" ; elseif ( preg_match ( '~^(md5|sha1|password|encrypt)$~' , $r )) $J = " $r ( $J )" ; return
unconvert_field ( $o , $J );} function
2016-06-08 18:32:06 -06:00
dumpOutput (){ $J = array ( 'text' => lang ( 58 ), 'file' => lang ( 59 )); if ( function_exists ( 'gzencode' )) $J [ 'gz' ] = 'gzip' ; return $J ;} function
2012-06-04 14:58:40 +00:00
dumpFormat (){ return
array ( 'sql' => 'SQL' , 'csv' => 'CSV,' , 'csv;' => 'CSV;' , 'tsv' => 'TSV' );} function
2015-04-14 21:38:33 +00:00
dumpDatabase ( $m ){} function
dumpTable ( $Q , $Mg , $Dd = 0 ){ if ( $_POST [ "format" ] != "sql" ){ echo " \xef\xbb\xbf " ; if ( $Mg ) dump_csv ( array_keys ( fields ( $Q )));} else { if ( $Dd == 2 ){ $p = array (); foreach ( fields ( $Q ) as $C => $o ) $p [] = idf_escape ( $C ) . " $o[full_type] " ; $j = "CREATE TABLE " . table ( $Q ) . " (" . implode ( ", " , $p ) . ")" ;} else $j = create_sql ( $Q , $_POST [ "auto_increment" ]); set_utf8mb4 ( $j ); if ( $Mg && $j ){ if ( $Mg == "DROP+CREATE" || $Dd == 1 ) echo "DROP " . ( $Dd == 2 ? "VIEW" : "TABLE" ) . " IF EXISTS " . table ( $Q ) . "; \n " ; if ( $Dd == 1 ) $j = remove_definer ( $j ); echo " $j ; \n\n " ;}}} function
2016-06-08 18:32:06 -06:00
dumpData ( $Q , $Mg , $H ){ global $h , $w ; $fe = ( $w == "sqlite" ? 0 : 1048576 ); if ( $Mg ){ if ( $_POST [ "format" ] == "sql" ){ if ( $Mg == "TRUNCATE+INSERT" ) echo
2015-04-14 21:38:33 +00:00
truncate_sql ( $Q ) . "; \n " ; $p = fields ( $Q );} $I = $h -> query ( $H , 1 ); if ( $I ){ $wd = "" ; $Xa = "" ; $Kd = array (); $Og = "" ; $Gc = ( $Q != '' ? 'fetch_assoc' : 'fetch_row' ); while ( $K = $I -> $Gc ()){ if ( ! $Kd ){ $Th = array (); foreach ( $K
as $X ){ $o = $I -> fetch_field (); $Kd [] = $o -> name ; $x = idf_escape ( $o -> name ); $Th [] = " $x = VALUES( $x )" ;} $Og = ( $Mg == "INSERT+UPDATE" ? " \n ON DUPLICATE KEY UPDATE " . implode ( ", " , $Th ) : "" ) . "; \n " ;} if ( $_POST [ "format" ] != "sql" ){ if ( $Mg == "table" ){ dump_csv ( $Kd ); $Mg = "INSERT" ;} dump_csv ( $K );} else { if ( ! $wd ) $wd = "INSERT INTO " . table ( $Q ) . " (" . implode ( ", " , array_map ( 'idf_escape' , $Kd )) . ") VALUES" ; foreach ( $K
2016-06-08 18:32:06 -06:00
as $x => $X ){ $o = $p [ $x ]; $K [ $x ] = ( $X !== null ? unconvert_field ( $o , preg_match ( '~(^|[^o])int|float|double|decimal~' , $o [ "type" ]) && $X != '' ? $X : q ( $X )) : "NULL" );} $lg = ( $fe ? " \n " : " " ) . "(" . implode ( ", \t " , $K ) . ")" ; if ( ! $Xa ) $Xa = $wd . $lg ; elseif ( strlen ( $Xa ) + 4 + strlen ( $lg ) + strlen ( $Og ) < $fe ) $Xa .= ", $lg " ; else { echo $Xa . $Og ; $Xa = $wd . $lg ;}}} if ( $Xa ) echo $Xa . $Og ;} elseif ( $_POST [ "format" ] == "sql" ) echo "-- " . str_replace ( " \n " , " " , $h -> error ) . " \n " ;}} function
2015-04-14 21:38:33 +00:00
dumpFilename ( $kd ){ return
friendly_url ( $kd != "" ? $kd : ( SERVER != "" ? SERVER : "localhost" ));} function
2016-06-08 18:32:06 -06:00
dumpHeaders ( $kd , $ue = false ){ $gf = $_POST [ "output" ]; $Ac = ( preg_match ( '~sql~' , $_POST [ "format" ]) ? "sql" : ( $ue ? "tar" : "csv" )); header ( "Content-Type: " . ( $gf == "gz" ? "application/x-gzip" : ( $Ac == "tar" ? "application/x-tar" : ( $Ac == "sql" || $gf != "file" ? "text/plain" : "text/csv" ) . "; charset=utf-8" ))); if ( $gf == "gz" ) ob_start ( 'ob_gzencode' , 1e6 ); return $Ac ;} function
homepage (){ echo '<p class="links">' . ( $_GET [ "ns" ] == "" && support ( "database" ) ? '<a href="' . h ( ME ) . 'database=">' . lang ( 60 ) . "</a> \n " : "" ),( support ( "scheme" ) ? "<a href='" . h ( ME ) . "scheme='>" . ( $_GET [ "ns" ] != "" ? lang ( 61 ) : lang ( 62 )) . "</a> \n " : "" ),( $_GET [ "ns" ] !== "" ? '<a href="' . h ( ME ) . 'schema=">' . lang ( 63 ) . "</a> \n " : "" ),( support ( "privileges" ) ? "<a href='" . h ( ME ) . "privileges='>" . lang ( 64 ) . "</a> \n " : "" ); return
2012-06-04 14:58:40 +00:00
true ;} function
2016-06-08 18:32:06 -06:00
navigation ( $te ){ global $ia , $w , $Xb , $h ; echo '<h1>
2013-07-27 15:43:34 +00:00
' , $this -> name (), ' <span class="version">' , $ia , '</span>
2016-06-08 18:32:06 -06:00
<a href="https://www.adminer.org/#download" target="_blank" id="version">' ,( version_compare ( $ia , $_COOKIE [ "adminer_version" ]) < 0 ? h ( $_COOKIE [ "adminer_version" ]) : "" ), '</a>
2012-06-04 14:58:40 +00:00
</h1>
2016-06-08 18:32:06 -06:00
' ; if ( $te == "auth" ){ $Kc = true ; foreach (( array ) $_SESSION [ "pwds" ] as $Vh => $yg ){ foreach ( $yg
2015-04-14 21:38:33 +00:00
as $N => $Qh ){ foreach ( $Qh
2016-06-08 18:32:06 -06:00
as $V => $G ){ if ( $G !== null ){ if ( $Kc ){ echo "<p id='logins' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'> \n " ; $Kc = false ;} $Jb = $_SESSION [ "db" ][ $Vh ][ $N ][ $V ]; foreach (( $Jb ? array_keys ( $Jb ) : array ( "" )) as $m ) echo "<a href='" . h ( auth_url ( $Vh , $N , $V , $m )) . "'>( $Xb[$Vh] ) " . h ( $V . ( $N != "" ? "@ $N " : "" ) . ( $m != "" ? " - $m " : "" )) . "</a><br> \n " ;}}}}} else { if ( $_GET [ "ns" ] !== "" &&! $te && DB != "" ){ $h -> select_db ( DB ); $S = table_status ( '' , true );} if ( support ( "sql" )){ echo '<script type="text/javascript" src="' , h ( preg_replace ( "~ \\ ?.*~" , "" , ME )) . "?file=jush.js&version=4.2.5" , '"></script>
2014-04-27 06:39:48 +00:00
<script type="text/javascript">
2016-06-08 18:32:06 -06:00
' ; if ( $S ){ $Yd = array (); foreach ( $S
as $Q => $U ) $Yd [] = preg_quote ( $Q , '/' ); echo "var jushLinks = { $w : [ '" . js_escape ( ME ) . ( support ( "table" ) ? "table=" : "select=" ) . " \$ &', / \\ b(" . implode ( "|" , $Yd ) . ") \\ b/g ] }; \n " ; foreach ( array ( "bac" , "bra" , "sqlite_quo" , "mssql_bra" ) as $X ) echo "jushLinks. $X = jushLinks. $w ; \n " ;} echo 'bodyLoad(\'' ,( is_object ( $h ) ? substr ( $h -> server_info , 0 , 3 ) : "" ), '\');
2014-04-27 06:39:48 +00:00
</script>
2016-06-08 18:32:06 -06:00
' ;} $this -> databasesPrint ( $te ); if ( DB == "" ||! $te ){ echo "<p class='links'>" . ( support ( "sql" ) ? "<a href='" . h ( ME ) . "sql='" . bold ( isset ( $_GET [ "sql" ]) &&! isset ( $_GET [ "import" ])) . ">" . lang ( 56 ) . "</a> \n <a href='" . h ( ME ) . "import='" . bold ( isset ( $_GET [ "import" ])) . ">" . lang ( 65 ) . "</a> \n " : "" ) . "" ; if ( support ( "dump" )) echo "<a href='" . h ( ME ) . "dump=" . urlencode ( isset ( $_GET [ "table" ]) ? $_GET [ "table" ] : $_GET [ "select" ]) . "' id='dump'" . bold ( isset ( $_GET [ "dump" ])) . ">" . lang ( 66 ) . "</a> \n " ;} if ( $_GET [ "ns" ] !== "" &&! $te && DB != "" ){ echo '<a href="' . h ( ME ) . 'create="' . bold ( $_GET [ "create" ] === "" ) . ">" . lang ( 67 ) . "</a> \n " ; if ( ! $S ) echo "<p class='message'>" . lang ( 9 ) . " \n " ; else $this -> tablesPrint ( $S );}}} function
databasesPrint ( $te ){ global $b , $h ; $l = $this -> databases (); echo '<form action="">
2013-07-27 15:43:34 +00:00
<p id="dbs">
2016-06-08 18:32:06 -06:00
' ; hidden_fields_get (); $Hb = " onmousedown='dbMouseDown(event, this);' onchange='dbChange(this);'" ; echo "<span title='" . lang ( 68 ) . "'>DB</span>: " . ( $l ? "<select name='db' $Hb >" . optionlist ( array ( "" => "" ) + $l , DB ) . "</select>" : '<input name="db" value="' . h ( DB ) . '" autocapitalize="off">' ), "<input type='submit' value='" . lang ( 20 ) . "'" . ( $l ? " class='hidden'" : "" ) . "> \n " ; if ( $te != "db" && DB != "" && $h -> select_db ( DB )){ if ( support ( "scheme" )){ echo "<br>" . lang ( 69 ) . ": <select name='ns' $Hb >" . optionlist ( array ( "" => "" ) + $b -> schemas (), $_GET [ "ns" ]) . "</select>" ; if ( $_GET [ "ns" ] != "" ) set_schema ( $_GET [ "ns" ]);}} echo ( isset ( $_GET [ "sql" ]) ? '<input type="hidden" name="sql" value="">' : ( isset ( $_GET [ "schema" ]) ? '<input type="hidden" name="schema" value="">' : ( isset ( $_GET [ "dump" ]) ? '<input type="hidden" name="dump" value="">' : ( isset ( $_GET [ "privileges" ]) ? '<input type="hidden" name="privileges" value="">' : "" )))), "</p></form> \n " ;} function
2014-04-27 06:39:48 +00:00
tablesPrint ( $S ){ echo "<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'> \n " ; foreach ( $S
2016-06-08 18:32:06 -06:00
as $Q => $Ig ){ echo '<a href="' . h ( ME ) . 'select=' . urlencode ( $Q ) . '"' . bold ( $_GET [ "select" ] == $Q || $_GET [ "edit" ] == $Q , "select" ) . ">" . lang ( 70 ) . "</a> " ; $C = $this -> tableName ( $Ig ); echo ( support ( "table" ) || support ( "indexes" ) ? '<a href="' . h ( ME ) . 'table=' . urlencode ( $Q ) . '"' . bold ( in_array ( $Q , array ( $_GET [ "table" ], $_GET [ "create" ], $_GET [ "indexes" ], $_GET [ "foreign" ], $_GET [ "trigger" ])),( is_view ( $Ig ) ? "view" : "" ), "structure" ) . " title='" . lang ( 40 ) . "'> $C </a>" : "<span> $C </span>" ) . "<br> \n " ;}}} $b = ( function_exists ( 'adminer_object' ) ? adminer_object () : new
Adminer ); if ( $b -> operators === null ) $b -> operators = $Re ; function
2015-04-14 21:38:33 +00:00
page_header ( $lh , $n = "" , $Wa = array (), $mh = "" ){ global $ca , $ia , $b , $Xb , $w ; page_headers (); if ( is_ajax () && $n ){ page_messages ( $n ); exit ;} $nh = $lh . ( $mh != "" ? ": $mh " : "" ); $oh = strip_tags ( $nh . ( SERVER != "" && SERVER != "localhost" ? h ( " - " . SERVER ) : "" ) . " - " . $b -> name ()); echo '<!DOCTYPE html>
2016-06-08 18:32:06 -06:00
<html lang="' , $ca , '" dir="' , lang ( 71 ), '">
2012-06-04 14:58:40 +00:00
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta name="robots" content="noindex">
2015-04-14 21:38:33 +00:00
<meta name="referrer" content="origin-when-crossorigin">
<title>' , $oh , '</title>
2016-06-08 18:32:06 -06:00
<link rel="stylesheet" type="text/css" href="' , h ( preg_replace ( "~ \\ ?.*~" , "" , ME )) . "?file=default.css&version=4.2.5" , '">
<script type="text/javascript" src="' , h ( preg_replace ( "~ \\ ?.*~" , "" , ME )) . "?file=functions.js&version=4.2.5" , '"></script>
' ; if ( $b -> head ()){ echo '<link rel="shortcut icon" type="image/x-icon" href="' , h ( preg_replace ( "~ \\ ?.*~" , "" , ME )) . "?file=favicon.ico&version=4.2.5" , '">
<link rel="apple-touch-icon" href="' , h ( preg_replace ( "~ \\ ?.*~" , "" , ME )) . "?file=favicon.ico&version=4.2.5" , '">
2013-07-27 15:43:34 +00:00
' ; if ( file_exists ( "adminer.css" )){ echo '<link rel="stylesheet" type="text/css" href="adminer.css">
' ;}} echo '
2016-06-08 18:32:06 -06:00
<body class="' , lang ( 71 ), ' nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);"' ,( isset ( $_COOKIE [ "adminer_version" ]) ? "" : " onload= \" verifyVersion(' $ia '); \" " ); ?> >
2012-06-04 14:58:40 +00:00
<script type="text/javascript">
2015-04-14 21:38:33 +00:00
document.body.className = document.body.className.replace(/ nojs/, ' js');
var offlineMessage = '<?php echo
2016-06-08 18:32:06 -06:00
js_escape(lang(72)),'\';
2012-06-04 14:58:40 +00:00
</script>
2014-04-27 06:39:48 +00:00
<div id="help" class="jush-',$w,' jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div>
2012-06-04 14:58:40 +00:00
<div id="content">
2015-04-14 21:38:33 +00:00
';if($Wa!==null){$_=substr(preg_replace('~\b(username|db|ns)=[^&]*&~','',ME),0,-1);echo'<p id="breadcrumb"><a href="'.h($_?$_:".").'">'.$Xb[DRIVER].'</a> » ';$_=substr(preg_replace('~\b(db|ns)=[^&]*&~','',ME),0,-1);$N=(SERVER!=""?h(SERVER):lang(32));if($Wa===false)echo"$N\n";else{echo"<a href='".($_?h($_):".")."' accesskey='1' title='Alt+Shift+1'>$N</a> » ";if($_GET["ns"]!=""||(DB!=""&&is_array($Wa)))echo'<a href="'.h($_."&db=".urlencode(DB).(support("scheme")?"&ns=":"")).'">'.h(DB).'</a> » ';if(is_array($Wa)){if($_GET["ns"]!="")echo'<a href="'.h(substr(ME,0,-1)).'">'.h($_GET["ns"]).'</a> » ';foreach($Wa
as$x=>$X){$Ob=(is_array($X)?$X[1]:h($X));if($Ob!="")echo"<a href='".h(ME."$x=").urlencode(is_array($X)?$X[0]:$X)."'>$Ob</a> » ";}}echo"$lh\n";}}echo"<h2>$nh</h2>\n","<div id='ajaxstatus' class='jsonly hidden'></div>\n";restart_session();page_messages($n);$l=&get_session("dbs");if(DB!=""&&$l&&!in_array(DB,$l,true))$l=null;stop_session();define("PAGE_HEADER",1);}function
2014-04-27 06:39:48 +00:00
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
2016-06-08 18:32:06 -06:00
page_messages($n){$Kh=preg_replace('~^[^?]*~','',$_SERVER["REQUEST_URI"]);$pe=$_SESSION["messages"][$Kh];if($pe){echo"<div class='message'>".implode("</div>\n<div class='message'>",$pe)."</div>\n";unset($_SESSION["messages"][$Kh]);}if($n)echo"<div class='error'>$n</div>\n";}function
page_footer($te=""){global$b,$T;echo'</div>
2012-06-04 14:58:40 +00:00
2016-06-08 18:32:06 -06:00
';switch_lang();if($te!="auth"){echo'<form action="" method="post">
2014-04-27 06:39:48 +00:00
<p class="logout">
2016-06-08 18:32:06 -06:00
<input type="submit" name="logout" value="',lang(73),'" id="logout">
2014-04-27 06:39:48 +00:00
<input type="hidden" name="token" value="',$T,'">
</p>
</form>
';}echo'<div id="menu">
2016-06-08 18:32:06 -06:00
';$b->navigation($te);echo'</div>
2013-07-27 15:43:34 +00:00
<script type="text/javascript">setupSubmitHighlight(document);</script>
';}function
2016-06-08 18:32:06 -06:00
int32($we){while($we>=2147483648)$we-=4294967296;while($we<=-2147483649)$we+=4294967296;return(int)$we;}function
long2str($W,$ai){$lg='';foreach($W
as$X)$lg.=pack('V',$X);if($ai)return
substr($lg,0,end($W));return$lg;}function
str2long($lg,$ai){$W=array_values(unpack('V*',str_pad($lg,4*ceil(strlen($lg)/4),"\0")));if($ai)$W[]=strlen($lg);return$W;}function
2015-04-14 21:38:33 +00:00
xxtea_mx($gi,$fi,$Pg,$Gd){return
int32((($gi>>5&0x7FFFFFF)^$fi<<2)+(($fi>>3&0x1FFFFFFF)^$gi<<4))^int32(($Pg^$fi)+($Gd^$gi));}function
2016-06-08 18:32:06 -06:00
encrypt_string($Kg,$x){if($Kg=="")return"";$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($Kg,true);$we=count($W)-1;$gi=$W[$we];$fi=$W[0];$Kf=floor(6+52/($we+1));$Pg=0;while($Kf-->0){$Pg=int32($Pg+0x9E3779B9);$ec=$Pg>>2&3;for($hf=0;$hf<$we;$hf++){$fi=$W[$hf+1];$ve=xxtea_mx($gi,$fi,$Pg,$x[$hf&3^$ec]);$gi=int32($W[$hf]+$ve);$W[$hf]=$gi;}$fi=$W[0];$ve=xxtea_mx($gi,$fi,$Pg,$x[$hf&3^$ec]);$gi=int32($W[$we]+$ve);$W[$we]=$gi;}return
2013-07-27 15:43:34 +00:00
long2str($W,false);}function
2015-04-14 21:38:33 +00:00
decrypt_string($Kg,$x){if($Kg=="")return"";if(!$x)return
2016-06-08 18:32:06 -06:00
false;$x=array_values(unpack("V*",pack("H*",md5($x))));$W=str2long($Kg,false);$we=count($W)-1;$gi=$W[$we];$fi=$W[0];$Kf=floor(6+52/($we+1));$Pg=int32($Kf*0x9E3779B9);while($Pg){$ec=$Pg>>2&3;for($hf=$we;$hf>0;$hf--){$gi=$W[$hf-1];$ve=xxtea_mx($gi,$fi,$Pg,$x[$hf&3^$ec]);$fi=int32($W[$hf]-$ve);$W[$hf]=$fi;}$gi=$W[$we];$ve=xxtea_mx($gi,$fi,$Pg,$x[$hf&3^$ec]);$fi=int32($W[0]-$ve);$W[0]=$fi;$Pg=int32($Pg-0x9E3779B9);}return
long2str($W,true);}$h='';$dd=$_SESSION["token"];if(!$dd)$_SESSION["token"]=rand(1,1e6);$T=get_token();$tf=array();if($_COOKIE["adminer_permanent"]){foreach(explode(" ",$_COOKIE["adminer_permanent"])as$X){list($x)=explode(":",$X);$tf[$x]=$X;}}function
2015-04-14 21:38:33 +00:00
add_invalid_login(){global$b;$Ic=get_temp_dir()."/adminer.invalid";$Sc=@fopen($Ic,"r+");if(!$Sc){$Sc=@fopen($Ic,"w");if(!$Sc)return;}flock($Sc,LOCK_EX);$zd=unserialize(stream_get_contents($Sc));$ih=time();if($zd){foreach($zd
2016-06-08 18:32:06 -06:00
as$_d=>$X){if($X[0]<$ih)unset($zd[$_d]);}}$yd=&$zd[$b->bruteForceKey()];if(!$yd)$yd=array($ih+30*60,0);$yd[1]++;$wg=serialize($zd);rewind($Sc);fwrite($Sc,$wg);ftruncate($Sc,strlen($wg));flock($Sc,LOCK_UN);fclose($Sc);}$Ka=$_POST["auth"];if($Ka){$zd=unserialize(@file_get_contents(get_temp_dir()."/adminer.invalid"));$yd=$zd[$b->bruteForceKey()];$Be=($yd[1]>30?$yd[0]-time():0);if($Be>0)auth_error(lang(74,ceil($Be/60)));session_regenerate_id();$Vh=$Ka["driver"];$N=$Ka["server"];$V=$Ka["username"];$G=(string)$Ka["password"];$m=$Ka["db"];set_password($Vh,$N,$V,$G);$_SESSION["db"][$Vh][$N][$V][$m]=true;if($Ka["permanent"]){$x=base64_encode($Vh)."-".base64_encode($N)."-".base64_encode($V)."-".base64_encode($m);$Ef=$b->permanentLogin(true);$tf[$x]="$x:".base64_encode($Ef?encrypt_string($G,$Ef):"");cookie("adminer_permanent",implode(" ",$tf));}if(count($_POST)==1||DRIVER!=$Vh||SERVER!=$N||$_GET["username"]!==$V||DB!=$m)redirect(auth_url($Vh,$N,$V,$m));}elseif($_POST["logout"]){if($dd&&!verify_token()){page_header(lang(73),lang(75));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),lang(76));}}elseif($tf&&!$_SESSION["pwds"]){session_regenerate_id();$Ef=$b->permanentLogin();foreach($tf
as$x=>$X){list(,$hb)=explode(":",$X);list($Vh,$N,$V,$m)=array_map('base64_decode',explode("-",$x));set_password($Vh,$N,$V,decrypt_string(base64_decode($hb),$Ef));$_SESSION["db"][$Vh][$N][$V][$m]=true;}}function
unset_permanent(){global$tf;foreach($tf
as$x=>$X){list($Vh,$N,$V,$m)=array_map('base64_decode',explode("-",$x));if($Vh==DRIVER&&$N==SERVER&&$V==$_GET["username"]&&$m==DB)unset($tf[$x]);}cookie("adminer_permanent",implode(" ",$tf));}function
auth_error($n){global$b,$dd;$n=h($n);$zg=session_name();if(isset($_GET["username"])){header("HTTP/1.1 403 Forbidden");if(($_COOKIE[$zg]||$_GET[$zg])&&!$dd)$n=lang(77);else{add_invalid_login();$G=get_password();if($G!==null){if($G===false)$n.='<br>'.lang(78,'<code>permanentLogin()</code>');set_password(DRIVER,SERVER,$_GET["username"],null);}unset_permanent();}}if(!$_COOKIE[$zg]&&$_GET[$zg]&&ini_bool("session.use_only_cookies"))$n=lang(79);$F=session_get_cookie_params();cookie("adminer_key",($_COOKIE["adminer_key"]?$_COOKIE["adminer_key"]:rand_string()),$F["lifetime"]);page_header(lang(36),$n,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(lang(80),lang(81,implode(", ",$zf)),false);page_footer("auth");exit;}$h=connect();}$Wb=new
Min_Driver($h);if(!is_object($h)||($Zd=$b->login($_GET["username"],get_password()))!==true)auth_error((is_string($h)?$h:(is_string($Zd)?$Zd:lang(82))));if($Ka&&$_POST["token"])$_POST["token"]=$T;$n='';if($_POST){if(!verify_token()){$td="max_input_vars";$je=ini_get($td);if(extension_loaded("suhosin")){foreach(array("suhosin.request.max_vars","suhosin.post.max_vars")as$x){$X=ini_get($x);if($X&&(!$je||$X<$je)){$td=$x;$je=$X;}}}$n=(!$_POST["token"]&&$je?lang(83,"'$td'"):lang(75).' '.lang(84));}}elseif($_SERVER["REQUEST_METHOD"]=="POST"){$n=lang(85,"'post_max_size'");if(isset($_GET["sql"]))$n.=' '.lang(86);}if(!ini_bool("session.use_cookies")||@ini_set("session.use_cookies",false)!==false)session_write_close();function
select($I,$i=null,$Ze=array(),$z=0){global$w;$Yd=array();$v=array();$f=array();$Ta=array();$Bh=array();$J=array();odd('');for($s=0;(!$z||$s<$z)&&($K=$I->fetch_row());$s++){if(!$s){echo"<table cellspacing='0' class='nowrap'>\n","<thead><tr>";for($Fd=0;$Fd<count($K);$Fd++){$o=$I->fetch_field();$C=$o->name;$Ye=$o->orgtable;$Xe=$o->orgname;$J[$o->table]=$Ye;if($Ze&&$w=="sql")$Yd[$Fd]=($C=="table"?"table=":($C=="possible_keys"?"indexes=":null));elseif($Ye!=""){if(!isset($v[$Ye])){$v[$Ye]=array();foreach(indexes($Ye,$i)as$u){if($u["type"]=="PRIMARY"){$v[$Ye]=array_flip($u["columns"]);break;}}$f[$Ye]=$v[$Ye];}if(isset($f[$Ye][$Xe])){unset($f[$Ye][$Xe]);$v[$Ye][$Xe]=$Fd;$Yd[$Fd]=$Ye;}}if($o->charsetnr==63)$Ta[$Fd]=true;$Bh[$Fd]=$o->type;echo"<th".($Ye!=""||$o->name!=$Xe?" title='".h(($Ye!=""?"$Ye.":"").$Xe)."'":"").">".h($C).($Ze?doc_link(array('sql'=>"explain-output.html#explain_".strtolower($C))):"");}echo"</thead>\n";}echo"<tr".odd().">";foreach($K
as$x=>$X){if($X===null)$X="<i>NULL</i>";elseif($Ta[$x]&&!is_utf8($X))$X="<i>".lang(44,strlen($X))."</i>";elseif(!strlen($X))$X=" ";else{$X=h($X);if($Bh[$x]==254)$X="<code>$X</code>";}if(isset($Yd[$x])&&!$f[$Yd[$x]]){if($Ze&&$w=="sql"){$Q=$K[array_search("table=",$Yd)];$_=$Yd[$x].urlencode($Ze[$Q]!=""?$Ze[$Q]:$Q);}else{$_="edit=".urlencode($Yd[$x]);foreach($v[$Yd[$x]]as$lb=>$Fd)$_.="&where".urlencode("[".bracket_escape($lb)."]")."=".urlencode($K[$Fd]);}$X="<a href='".h(ME.$_)."'>$X</a>";}echo"<td>$X";}}echo($s?"</table>":"<p class='message'>".lang(12))."\n";return$J;}function
referencable_primary($tg){$J=array();foreach(table_status('',true)as$Tg=>$Q){if($Tg!=$tg&&fk_support($Q)){foreach(fields($Tg)as$o){if($o["primary"]){if($J[$Tg]){unset($J[$Tg]);break;}$J[$Tg]=$o;}}}}return$J;}function
2015-04-14 21:38:33 +00:00
textarea($C,$Y,$L=10,$ob=80){global$w;echo"<textarea name='$C' rows='$L' cols='$ob' class='sqlarea jush-$w' spellcheck='false' wrap='off'>";if(is_array($Y)){foreach($Y
2013-07-27 15:43:34 +00:00
as$X)echo
h($X[0])."\n\n\n";}else
echo
h($Y);echo"</textarea>";}function
2016-06-08 18:32:06 -06:00
edit_type($x,$o,$nb,$Oc=array()){global$Lg,$Bh,$Ih,$Me;$U=$o["type"];echo'<td><select name="',h($x),'[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"',on_help("getTarget(event).value",1),'>';if($U&&!isset($Bh[$U])&&!isset($Oc[$U]))array_unshift($Lg,$U);if($Oc)$Lg[lang(87)]=$Oc;echo
2015-04-14 21:38:33 +00:00
optionlist($Lg,$U),'</select>
2016-06-08 18:32:06 -06:00
<td><input name="',h($x),'[length]" value="',h($o["length"]),'" size="3" onfocus="editingLengthFocus(this);"',(!$o["length"]&&preg_match('~var(char|binary)$~',$U)?" class='required'":""),' onchange="editingLengthChange(this);" onkeyup="this.onchange();"><td class="options">';echo"<select name='".h($x)."[collation]'".(preg_match('~(char|text|enum|set)$~',$U)?"":" class='hidden'").'><option value="">('.lang(88).')'.optionlist($nb,$o["collation"]).'</select>',($Ih?"<select name='".h($x)."[unsigned]'".(!$U||preg_match('~((^|[^o])int|float|double|decimal)$~',$U)?"":" class='hidden'").'><option>'.optionlist($Ih,$o["unsigned"]).'</select>':''),(isset($o['on_update'])?"<select name='".h($x)."[on_update]'".(preg_match('~timestamp|datetime~',$U)?"":" class='hidden'").'>'.optionlist(array(""=>"(".lang(89).")","CURRENT_TIMESTAMP"),$o["on_update"]).'</select>':''),($Oc?"<select name='".h($x)."[on_delete]'".(preg_match("~`~",$U)?"":" class='hidden'")."><option value=''>(".lang(90).")".optionlist(explode("|",$Me),$o["on_delete"])."</select> ":" ");}function
process_length($y){global$pc;return(preg_match("~^\\s*\\(?\\s*$pc(?:\\s*,\\s*$pc)*+\\s*\\)?\\s*\$~",$y)&&preg_match_all("~$pc~",$y,$de)?"(".implode(",",$de[0]).")":preg_replace('~^[0-9].*~','(\0)',preg_replace('~[^-0-9,+()[\]]~','',$y)));}function
2015-04-14 21:38:33 +00:00
process_type($o,$mb="COLLATE"){global$Ih;return" $o[type]".process_length($o["length"]).(preg_match('~(^|[^o])int|float|double|decimal~',$o["type"])&&in_array($o["unsigned"],$Ih)?" $o[unsigned]":"").(preg_match('~char|text|enum|set~',$o["type"])&&$o["collation"]?" $mb ".q($o["collation"]):"");}function
process_field($o,$_h){global$w;$Lb=$o["default"];return
array(idf_escape(trim($o["field"])),process_type($_h),($o["null"]?" NULL":" NOT NULL"),(isset($Lb)?" DEFAULT ".((preg_match('~time~',$o["type"])&&preg_match('~^CURRENT_TIMESTAMP$~i',$Lb))||($w=="sqlite"&&preg_match('~^CURRENT_(TIME|TIMESTAMP|DATE)$~i',$Lb))||($o["type"]=="bit"&&preg_match("~^([0-9]+|b'[0-1]+')\$~",$Lb))||($w=="pgsql"&&preg_match("~^[a-z]+\\(('[^']*')+\\)\$~",$Lb))?$Lb:q($Lb)):""),(preg_match('~timestamp|datetime~',$o["type"])&&$o["on_update"]?" ON UPDATE $o[on_update]":""),(support("comment")&&$o["comment"]!=""?" COMMENT ".q($o["comment"]):""),($o["auto_increment"]?auto_increment():null),);}function
2014-04-27 06:39:48 +00:00
type_class($U){foreach(array('char'=>'text','date'=>'time|year','binary'=>'blob','enum'=>'set',)as$x=>$X){if(preg_match("~$x|$X~",$U))return" class='$x'";}}function
2016-06-08 18:32:06 -06:00
edit_fields($p,$nb,$U="TABLE",$Oc=array(),$sb=false){global$h,$ud;$p=array_values($p);echo'<thead><tr class="wrap">
';if($U=="PROCEDURE"){echo'<td> ';}echo'<th>',($U=="TABLE"?lang(91):lang(92)),'<td>',lang(93),'<textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;" onblur="editingLengthBlur(this);"></textarea>
<td>',lang(94),'<td>',lang(95);if($U=="TABLE"){echo'<td>NULL
<td><input type="radio" name="auto_increment_col" value=""><acronym title="',lang(57),'">AI</acronym>',doc_link(array('sql'=>"example-auto-increment.html",'sqlite'=>"autoinc.html",'pgsql'=>"datatype.html#DATATYPE-SERIAL",'mssql'=>"ms186775.aspx",)),'<td>',lang(96),(support("comment")?"<td".($sb?"":" class='hidden'").">".lang(97):"");}echo'<td>',"<input type='image' class='icon' name='add[".(support("move_col")?0:count($p))."]' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=4.2.5' alt='+' title='".lang(98)."'>",'<script type="text/javascript">row_count = ',count($p),';</script>
2012-06-04 14:58:40 +00:00
</thead>
<tbody onkeydown="return editingKeydown(event);">
2015-04-14 21:38:33 +00:00
';foreach($p
2016-06-08 18:32:06 -06:00
as$s=>$o){$s++;$af=$o[($_POST?"orig":"field")];$Sb=(isset($_POST["add"][$s-1])||(isset($o["field"])&&!$_POST["drop_col"][$s]))&&(support("drop_col")||$af=="");echo'<tr',($Sb?"":" style='display: none;'"),'>
2016-06-08 18:38:27 -06:00
',($U=="PROCEDURE"?"<td>".adminer_html_select("fields[$s][inout]",explode("|",$ud),$o["inout"]):""),'<th>';if($Sb){echo'<input name="fields[',$s,'][field]" value="',h($o["field"]),'" onchange="editingNameChange(this);',($o["field"]!=""||count($p)>1?'':' editingAddRow(this);" onkeyup="if (this.value) editingAddRow(this);'),'" maxlength="64" autocapitalize="off">';}echo'<input type="hidden" name="fields[',$s,'][orig]" value="',h($af),'">
2015-04-14 21:38:33 +00:00
';edit_type("fields[$s]",$o,$nb,$Oc);if($U=="TABLE"){echo'<td>',checkbox("fields[$s][null]",1,$o["null"],"","","block"),'<td><label class="block"><input type="radio" name="auto_increment_col" value="',$s,'"';if($o["auto_increment"]){echo' checked';}?> onclick="var field = this.form['fields[' + this.value + '][field]']; if (!field.value) { field.value = 'id'; field.onchange(); }"></label><td><?php
2013-07-27 15:43:34 +00:00
echo
2015-04-14 21:38:33 +00:00
checkbox("fields[$s][has_default]",1,$o["has_default"]),'<input name="fields[',$s,'][default]" value="',h($o["default"]),'" onkeyup="keyupChange.call(this);" onchange="this.previousSibling.checked = true;">
2016-06-08 18:32:06 -06:00
',(support("comment")?"<td".($sb?"":" class='hidden'")."><input name='fields[$s][comment]' value='".h($o["comment"])."' maxlength='".($h->server_info>=5.5?1024:255)."'>":"");}echo"<td>",(support("move_col")?"<input type='image' class='icon' name='add[$s]' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=4.2.5' alt='+' title='".lang(98)."' onclick='return !editingAddRow(this, 1);'> "."<input type='image' class='icon' name='up[$s]' src='".h(preg_replace("~\\?.*~","",ME))."?file=up.gif&version=4.2.5' alt='^' title='".lang(99)."'> "."<input type='image' class='icon' name='down[$s]' src='".h(preg_replace("~\\?.*~","",ME))."?file=down.gif&version=4.2.5' alt='v' title='".lang(100)."'> ":""),($af==""||support("drop_col")?"<input type='image' class='icon' name='drop_col[$s]' src='".h(preg_replace("~\\?.*~","",ME))."?file=cross.gif&version=4.2.5' alt='x' title='".lang(101)."' onclick=\"return !editingRemoveRow(this, 'fields\$1[field]');\">":""),"\n";}}function
2015-04-14 21:38:33 +00:00
process_fields(&$p){ksort($p);$D=0;if($_POST["up"]){$Qd=0;foreach($p
as$x=>$o){if(key($_POST["up"])==$x){unset($p[$x]);array_splice($p,$Qd,0,array($o));break;}if(isset($o["field"]))$Qd=$D;$D++;}}elseif($_POST["down"]){$Qc=false;foreach($p
as$x=>$o){if(isset($o["field"])&&$Qc){unset($p[key($_POST["down"])]);array_splice($p,$D,0,array($Qc));break;}if(key($_POST["down"])==$x)$Qc=$o;$D++;}}elseif($_POST["add"]){$p=array_values($p);array_splice($p,key($_POST["add"]),0,array(array()));}elseif(!$_POST["drop_col"])return
2013-07-27 15:43:34 +00:00
false;return
true;}function
2014-04-27 06:39:48 +00:00
normalize_enum($B){return"'".str_replace("'","''",addcslashes(stripcslashes(str_replace($B[0][0].$B[0][0],$B[0][0],substr($B[0],1,-1))),'\\'))."'";}function
2016-06-08 18:32:06 -06:00
grant($Vc,$Gf,$f,$Le){if(!$Gf)return
true;if($Gf==array("ALL PRIVILEGES","GRANT OPTION"))return($Vc=="GRANT"?queries("$Vc ALL PRIVILEGES$Le WITH GRANT OPTION"):queries("$Vc ALL PRIVILEGES$Le")&&queries("$Vc GRANT OPTION$Le"));return
queries("$Vc ".preg_replace('~(GRANT OPTION)\\([^)]*\\)~','\\1',implode("$f, ",$Gf).$f).$Le);}function
drop_create($Yb,$j,$Zb,$fh,$bc,$A,$oe,$me,$ne,$Ie,$ze){if($_POST["drop"])query_redirect($Yb,$A,$oe);elseif($Ie=="")query_redirect($j,$A,$ne);elseif($Ie!=$ze){$Cb=queries($j);queries_redirect($A,$me,$Cb&&queries($Yb));if($Cb)queries($Zb);}else
queries_redirect($A,$me,queries($fh)&&queries($bc)&&queries($Yb)&&queries($j));}function
create_trigger($Le,$K){global$w;$kh=" $K[Timing] $K[Event]".($K["Event"]=="UPDATE OF"?" ".idf_escape($K["Of"]):"");return"CREATE TRIGGER ".idf_escape($K["Trigger"]).($w=="mssql"?$Le.$kh:$kh.$Le).rtrim(" $K[Type]\n$K[Statement]",";").";";}function
create_routine($hg,$K){global$ud;$O=array();$p=(array)$K["fields"];ksort($p);foreach($p
as$o){if($o["field"]!="")$O[]=(preg_match("~^($ud)\$~",$o["inout"])?"$o[inout] ":"").idf_escape($o["field"]).process_type($o,"CHARACTER SET");}return"CREATE $hg ".idf_escape(trim($K["name"]))." (".implode(", ",$O).")".(isset($_GET["function"])?" RETURNS".process_type($K["returns"],"CHARACTER SET"):"").($K["language"]?" LANGUAGE $K[language]":"").rtrim("\n$K[definition]",";").";";}function
2014-04-27 06:39:48 +00:00
remove_definer($H){return
preg_replace('~^([A-Z =]+) DEFINER=`'.preg_replace('~@(.*)~','`@`(%|\\1)',logged_user()).'`~','\\1',$H);}function
2016-06-08 18:32:06 -06:00
format_foreign_key($q){global$Me;return" FOREIGN KEY (".implode(", ",array_map('idf_escape',$q["source"])).") REFERENCES ".table($q["table"])." (".implode(", ",array_map('idf_escape',$q["target"])).")".(preg_match("~^($Me)\$~",$q["on_delete"])?" ON DELETE $q[on_delete]":"").(preg_match("~^($Me)\$~",$q["on_update"])?" ON UPDATE $q[on_update]":"");}function
2015-04-14 21:38:33 +00:00
tar_file($Ic,$ph){$J=pack("a100a8a8a8a12a12",$Ic,644,0,0,decoct($ph->size),decoct(time()));$fb=8*32;for($s=0;$s<strlen($J);$s++)$fb+=ord($J[$s]);$J.=sprintf("%06o",$fb)."\0 ";echo$J,str_repeat("\0",512-strlen($J));$ph->send();echo
str_repeat("\0",511-($ph->size+511)%512);}function
ini_bytes($td){$X=ini_get($td);switch(strtolower(substr($X,-1))){case'g':$X*=1024;case'm':$X*=1024;case'k':$X*=1024;}return$X;}function
2016-06-08 18:32:06 -06:00
doc_link($rf){global$w,$h;$Mh=array('sql'=>"http://dev.mysql.com/doc/refman/".substr($h->server_info,0,3)."/en/",'sqlite'=>"http://www.sqlite.org/",'pgsql'=>"http://www.postgresql.org/docs/".substr($h->server_info,0,3)."/static/",'mssql'=>"http://msdn.microsoft.com/library/",'oracle'=>"http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/",);return($rf[$w]?"<a href='$Mh[$w]$rf[$w]' target='_blank' rel='noreferrer'><sup>?</sup></a>":"");}function
2014-04-27 06:39:48 +00:00
ob_gzencode($P){return
gzencode($P);}function
2015-04-14 21:38:33 +00:00
db_size($m){global$h;if(!$h->select_db($m))return"?";$J=0;foreach(table_status()as$R)$J+=$R["Data_length"]+$R["Index_length"];return
2014-04-27 06:39:48 +00:00
format_number($J);}function
2015-04-14 21:38:33 +00:00
set_utf8mb4($j){global$h;static$O=false;if(!$O&&preg_match('~\butf8mb4~i',$j)){$O=true;echo"SET NAMES ".charset($h).";\n\n";}}function
2016-06-08 18:32:06 -06:00
connect_error(){global$b,$h,$T,$n,$Xb;if(DB!=""){header("HTTP/1.1 404 Not Found");page_header(lang(35).": ".h(DB),lang(102),true);}else{if($_POST["db"]&&!$n)queries_redirect(substr(ME,0,-1),lang(103),drop_databases($_POST["db"]));page_header(lang(104),$n,false);echo"<p class='links'>\n";foreach(array('database'=>lang(105),'privileges'=>lang(64),'processlist'=>lang(106),'variables'=>lang(107),'status'=>lang(108),)as$x=>$X){if(support($x))echo"<a href='".h(ME)."$x='>$X</a>\n";}echo"<p>".lang(109,$Xb[DRIVER],"<b>".h($h->server_info)."</b>","<b>$h->extension</b>")."\n","<p>".lang(110,"<b>".h(logged_user())."</b>")."\n";$l=$b->databases();if($l){$og=support("scheme");$nb=collations();echo"<form action='' method='post'>\n","<table cellspacing='0' class='checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n","<thead><tr>".(support("database")?"<td> ":"")."<th>".lang(35)." - <a href='".h(ME)."refresh=1'>".lang(111)."</a>"."<td>".lang(112)."<td>".lang(113)."<td>".lang(114)." - <a href='".h(ME)."dbsize=1' onclick=\"return !ajaxSetHtml('".h(js_escape(ME))."script=connect');\">".lang(115)."</a>"."</thead>\n";$l=($_GET["dbsize"]?count_tables($l):array_flip($l));foreach($l
as$m=>$S){$gg=h(ME)."db=".urlencode($m);echo"<tr".odd().">".(support("database")?"<td>".checkbox("db[]",$m,in_array($m,(array)$_POST["db"])):""),"<th><a href='$gg'>".h($m)."</a>";$d=nbsp(db_collation($m,$nb));echo"<td>".(support("database")?"<a href='$gg".($og?"&ns=":"")."&database=' title='".lang(60)."'>$d</a>":$d),"<td align='right'><a href='$gg&schema=' id='tables-".h($m)."' title='".lang(63)."'>".($_GET["dbsize"]?$S:"?")."</a>","<td align='right' id='size-".h($m)."'>".($_GET["dbsize"]?db_size($m):"?"),"\n";}echo"</table>\n",(support("database")?"<fieldset><legend>".lang(116)." <span id='selected'></span></legend><div>\n"."<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^db/));\">\n"."<input type='submit' name='drop' value='".lang(117)."'".confirm().">\n"."</div></fieldset>\n":""),"<script type='text/javascript'>tableCheck();</script>\n","<input type='hidden' name='token' value='$T'>\n","</form>\n";}}page_footer("db");}if(isset($_GET["status"]))$_GET["variables"]=$_GET["status"];if(isset($_GET["import"]))$_GET["sql"]=$_GET["import"];if(!(DB!=""?$h->select_db(DB):isset($_GET["sql"])||isset($_GET["dump"])||isset($_GET["database"])||isset($_GET["processlist"])||isset($_GET["privileges"])||isset($_GET["user"])||isset($_GET["variables"])||$_GET["script"]=="connect"||$_GET["script"]=="kill")){if(DB!=""||$_GET["refresh"]){restart_session();set_session("dbs",null);}connect_error();exit;}if(support("scheme")&&DB!=""&&$_GET["ns"]!==""){if(!isset($_GET["ns"]))redirect(preg_replace('~ns=[^&]*&~','',ME)."ns=".get_schema());if(!set_schema($_GET["ns"])){header("HTTP/1.1 404 Not Found");page_header(lang(69).": ".h($_GET["ns"]),lang(118),true);page_footer("ns");exit;}}$Me="RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT";class
2013-07-27 15:43:34 +00:00
TmpFile{var$handler;var$size;function
2016-06-08 18:32:06 -06:00
__construct(){$this->handler=tmpfile();}function
2015-04-14 21:38:33 +00:00
write($xb){$this->size+=strlen($xb);fwrite($this->handler,$xb);}function
2016-06-08 18:32:06 -06:00
send(){fseek($this->handler,0);fpassthru($this->handler);fclose($this->handler);}}$pc="'(?:''|[^'\\\\]|\\\\.)*'";$ud="IN|OUT|INOUT";if(isset($_GET["select"])&&($_POST["edit"]||$_POST["clone"])&&!$_POST["save"])$_GET["edit"]=$_GET["select"];if(isset($_GET["callf"]))$_GET["call"]=$_GET["callf"];if(isset($_GET["function"]))$_GET["procedure"]=$_GET["function"];if(isset($_GET["download"])){$a=$_GET["download"];$p=fields($a);header("Content-Type: application/octet-stream");header("Content-Disposition: attachment; filename=".friendly_url("$a-".implode("_",$_GET["where"])).".".friendly_url($_GET["field"]));$M=array(idf_escape($_GET["field"]));$I=$Wb->select($a,$M,array(where($_GET,$p)),$M);$K=($I?$I->fetch_row():array());echo$K[0];exit;}elseif(isset($_GET["table"])){$a=$_GET["table"];$p=fields($a);if(!$p)$n=error();$R=table_status1($a,true);page_header(($p&&is_view($R)?lang(119):lang(120)).": ".h($a),$n);$b->selectLinks($R);$rb=$R["Comment"];if($rb!="")echo"<p>".lang(97).": ".h($rb)."\n";if($p){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(121)."<td>".lang(93).(support("comment")?"<td>".lang(97):"")."</thead>\n";foreach($p
as$o){echo"<tr".odd()."><th>".h($o["field"]),"<td><span title='".h($o["collation"])."'>".h($o["full_type"])."</span>",($o["null"]?" <i>NULL</i>":""),($o["auto_increment"]?" <i>".lang(57)."</i>":""),(isset($o["default"])?" <span title='".lang(96)."'>[<b>".h($o["default"])."</b>]</span>":""),(support("comment")?"<td>".nbsp($o["comment"]):""),"\n";}echo"</table>\n";}if(!is_view($R)){if(support("indexes")){echo"<h3 id='indexes'>".lang(122)."</h3>\n";$v=indexes($a);if($v){echo"<table cellspacing='0'>\n";foreach($v
as$C=>$u){ksort($u["columns"]);$Df=array();foreach($u["columns"]as$x=>$X)$Df[]="<i>".h($X)."</i>".($u["lengths"][$x]?"(".$u["lengths"][$x].")":"").($u["descs"][$x]?" DESC":"");echo"<tr title='".h($C)."'><th>$u[type]<td>".implode(", ",$Df)."\n";}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'indexes='.urlencode($a).'">'.lang(123)."</a>\n";}if(fk_support($R)){echo"<h3 id='foreign-keys'>".lang(87)."</h3>\n";$Oc=foreign_keys($a);if($Oc){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(124)."<td>".lang(125)."<td>".lang(90)."<td>".lang(89)."<td> </thead>\n";foreach($Oc
as$C=>$q){echo"<tr title='".h($C)."'>","<th><i>".implode("</i>, <i>",array_map('h',$q["source"]))."</i>","<td><a href='".h($q["db"]!=""?preg_replace('~db=[^&]*~',"db=".urlencode($q["db"]),ME):($q["ns"]!=""?preg_replace('~ns=[^&]*~',"ns=".urlencode($q["ns"]),ME):ME))."table=".urlencode($q["table"])."'>".($q["db"]!=""?"<b>".h($q["db"])."</b>.":"").($q["ns"]!=""?"<b>".h($q["ns"])."</b>.":"").h($q["table"])."</a>","(<i>".implode("</i>, <i>",array_map('h',$q["target"]))."</i>)","<td>".nbsp($q["on_delete"])."\n","<td>".nbsp($q["on_update"])."\n",'<td><a href="'.h(ME.'foreign='.urlencode($a).'&name='.urlencode($C)).'">'.lang(126).'</a>';}echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'foreign='.urlencode($a).'">'.lang(127)."</a>\n";}}if(support(is_view($R)?"view_trigger":"trigger")){echo"<h3 id='triggers'>".lang(128)."</h3>\n";$zh=triggers($a);if($zh){echo"<table cellspacing='0'>\n";foreach($zh
as$x=>$X)echo"<tr valign='top'><td>".h($X[0])."<td>".h($X[1])."<th>".h($x)."<td><a href='".h(ME.'trigger='.urlencode($a).'&name='.urlencode($x))."'>".lang(126)."</a>\n";echo"</table>\n";}echo'<p class="links"><a href="'.h(ME).'trigger='.urlencode($a).'">'.lang(129)."</a>\n";}}elseif(isset($_GET["schema"])){page_header(lang(63),"",array(),h(DB.($_GET["ns"]?".$_GET[ns]":"")));$Vg=array();$Wg=array();$ea=($_GET["schema"]?$_GET["schema"]:$_COOKIE["adminer_schema-".str_replace(".","_",DB)]);preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~',$ea,$de,PREG_SET_ORDER);foreach($de
as$s=>$B){$Vg[$B[1]]=array($B[2],$B[3]);$Wg[]="\n\t'".js_escape($B[1])."': [ $B[2], $B[3] ]";}$rh=0;$Qa=-1;$ng=array();$Vf=array();$Ud=array();foreach(table_status('',true)as$Q=>$R){if(is_view($R))continue;$wf=0;$ng[$Q]["fields"]=array();foreach(fields($Q)as$C=>$o){$wf+=1.25;$o["pos"]=$wf;$ng[$Q]["fields"][$C]=$o;}$ng[$Q]["pos"]=($Vg[$Q]?$Vg[$Q]:array($rh,0));foreach($b->foreignKeys($Q)as$X){if(!$X["db"]){$Sd=$Qa;if($Vg[$Q][1]||$Vg[$X["table"]][1])$Sd=min(floatval($Vg[$Q][1]),floatval($Vg[$X["table"]][1]))-1;else$Qa-=.1;while($Ud[(string)$Sd])$Sd-=.0001;$ng[$Q]["references"][$X["table"]][(string)$Sd]=array($X["source"],$X["target"]);$Vf[$X["table"]][$Q][(string)$Sd]=$X["target"];$Ud[(string)$Sd]=true;}}$rh=max($rh,$ng[$Q]["pos"][0]+2.5+$wf);}echo'<div id="schema" style="height: ',$rh,'em;" onselectstart="return false;">
2012-06-04 14:58:40 +00:00
<script type="text/javascript">
2015-04-14 21:38:33 +00:00
var tablePos = {',implode(",",$Wg)."\n",'};
var em = document.getElementById(\'schema\').offsetHeight / ',$rh,';
2012-06-04 14:58:40 +00:00
document.onmousemove = schemaMousemove;
document.onmouseup = function (ev) {
schemaMouseup(ev, \'',js_escape(DB),'\');
};
</script>
2016-06-08 18:32:06 -06:00
';foreach($ng
as$C=>$Q){echo"<div class='table' style='top: ".$Q["pos"][0]."em; left: ".$Q["pos"][1]."em;' onmousedown='schemaMousedown(this, event);'>",'<a href="'.h(ME).'table='.urlencode($C).'"><b>'.h($C)."</b></a>";foreach($Q["fields"]as$o){$X='<span'.type_class($o["type"]).' title="'.h($o["full_type"].($o["null"]?" NULL":'')).'">'.h($o["field"]).'</span>';echo"<br>".($o["primary"]?"<i>$X</i>":$X);}foreach((array)$Q["references"]as$ch=>$Wf){foreach($Wf
as$Sd=>$Sf){$Td=$Sd-$Vg[$C][1];$s=0;foreach($Sf[0]as$Dg)echo"\n<div class='references' title='".h($ch)."' id='refs$Sd-".($s++)."' style='left: $Td"."em; top: ".$Q["fields"][$Dg]["pos"]."em; padding-top: .5em;'><div style='border-top: 1px solid Gray; width: ".(-$Td)."em;'></div></div>";}}foreach((array)$Vf[$C]as$ch=>$Wf){foreach($Wf
2015-04-14 21:38:33 +00:00
as$Sd=>$f){$Td=$Sd-$Vg[$C][1];$s=0;foreach($f
2016-06-08 18:32:06 -06:00
as$bh)echo"\n<div class='references' title='".h($ch)."' id='refd$Sd-".($s++)."' style='left: $Td"."em; top: ".$Q["fields"][$bh]["pos"]."em; height: 1.25em; background: url(".h(preg_replace("~\\?.*~","",ME))."?file=arrow.gif) no-repeat right center;&version=4.2.5'><div style='height: .5em; border-bottom: 1px solid Gray; width: ".(-$Td)."em;'></div></div>";}}echo"\n</div>\n";}foreach($ng
as$C=>$Q){foreach((array)$Q["references"]as$ch=>$Wf){foreach($Wf
as$Sd=>$Sf){$se=$rh;$he=-10;foreach($Sf[0]as$x=>$Dg){$xf=$Q["pos"][0]+$Q["fields"][$Dg]["pos"];$yf=$ng[$ch]["pos"][0]+$ng[$ch]["fields"][$Sf[1][$x]]["pos"];$se=min($se,$xf,$yf);$he=max($he,$xf,$yf);}echo"<div class='references' id='refl$Sd' style='left: $Sd"."em; top: $se"."em; padding: .5em 0;'><div style='border-right: 1px solid Gray; margin-top: 1px; height: ".($he-$se)."em;'></div></div>\n";}}}echo'</div>
<p class="links"><a href="',h(ME."schema=".urlencode($ea)),'" id="schema-link">',lang(130),'</a>
2015-04-14 21:38:33 +00:00
';}elseif(isset($_GET["dump"])){$a=$_GET["dump"];if($_POST&&!$n){$_b="";foreach(array("output","format","db_style","routines","events","table_style","auto_increment","triggers","data_style")as$x)$_b.="&$x=".urlencode($_POST[$x]);cookie("adminer_export",substr($_b,1));$S=array_flip((array)$_POST["tables"])+array_flip((array)$_POST["data"]);$Ac=dump_headers((count($S)==1?key($S):DB),(DB==""||count($S)>1));$Bd=preg_match('~sql~',$_POST["format"]);if($Bd){echo"-- Adminer $ia ".$Xb[DRIVER]." dump\n\n";if($w=="sql"){echo"SET NAMES utf8;
2014-04-27 06:39:48 +00:00
SET time_zone = '+00:00';
2013-07-27 15:43:34 +00:00
".($_POST["data_style"]?"SET foreign_key_checks = 0;
2012-06-04 14:58:40 +00:00
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
2013-07-27 15:43:34 +00:00
":"")."
2015-04-14 21:38:33 +00:00
";$h->query("SET time_zone = '+00:00';");}}$Mg=$_POST["db_style"];$l=array(DB);if(DB==""){$l=$_POST["databases"];if(is_string($l))$l=explode("\n",rtrim(str_replace("\r","",$l),"\n"));}foreach((array)$l
as$m){$b->dumpDatabase($m);if($h->select_db($m)){if($Bd&&preg_match('~CREATE~',$Mg)&&($j=$h->result("SHOW CREATE DATABASE ".idf_escape($m),1))){set_utf8mb4($j);if($Mg=="DROP+CREATE")echo"DROP DATABASE IF EXISTS ".idf_escape($m).";\n";echo"$j;\n";}if($Bd){if($Mg)echo
2016-06-08 18:32:06 -06:00
use_sql($m).";\n\n";$ff="";if($_POST["routines"]){foreach(array("FUNCTION","PROCEDURE")as$hg){foreach(get_rows("SHOW $hg STATUS WHERE Db = ".q($m),null,"-- ")as$K){$j=remove_definer($h->result("SHOW CREATE $hg ".idf_escape($K["Name"]),2));set_utf8mb4($j);$ff.=($Mg!='DROP+CREATE'?"DROP $hg IF EXISTS ".idf_escape($K["Name"]).";;\n":"")."$j;;\n\n";}}}if($_POST["events"]){foreach(get_rows("SHOW EVENTS",null,"-- ")as$K){$j=remove_definer($h->result("SHOW CREATE EVENT ".idf_escape($K["Name"]),3));set_utf8mb4($j);$ff.=($Mg!='DROP+CREATE'?"DROP EVENT IF EXISTS ".idf_escape($K["Name"]).";;\n":"")."$j;;\n\n";}}if($ff)echo"DELIMITER ;;\n\n$ff"."DELIMITER ;\n\n";}if($_POST["table_style"]||$_POST["data_style"]){$Yh=array();foreach(table_status('',true)as$C=>$R){$Q=(DB==""||in_array($C,(array)$_POST["tables"]));$Eb=(DB==""||in_array($C,(array)$_POST["data"]));if($Q||$Eb){if($Ac=="tar"){$ph=new
2015-04-14 21:38:33 +00:00
TmpFile;ob_start(array($ph,'write'),1e5);}$b->dumpTable($C,($Q?$_POST["table_style"]:""),(is_view($R)?2:0));if(is_view($R))$Yh[]=$C;elseif($Eb){$p=fields($C);$b->dumpData($C,$_POST["data_style"],"SELECT *".convert_fields($p,$p)." FROM ".table($C));}if($Bd&&$_POST["triggers"]&&$Q&&($zh=trigger_sql($C,$_POST["table_style"])))echo"\nDELIMITER ;;\n$zh\nDELIMITER ;\n";if($Ac=="tar"){ob_end_flush();tar_file((DB!=""?"":"$m/")."$C.csv",$ph);}elseif($Bd)echo"\n";}}foreach($Yh
as$Xh)$b->dumpTable($Xh,$_POST["table_style"],1);if($Ac=="tar")echo
2016-06-08 18:32:06 -06:00
pack("x512");}}}if($Bd)echo"-- ".$h->result("SELECT NOW()")."\n";exit;}page_header(lang(66),$n,($_GET["export"]!=""?array("table"=>$_GET["export"]):array()),h(DB));echo'
2012-06-04 14:58:40 +00:00
<form action="" method="post">
<table cellspacing="0">
2016-06-08 18:38:27 -06:00
';$Ib=array('','USE','DROP+CREATE','CREATE');$Xg=array('','DROP+CREATE','CREATE');$Fb=array('','TRUNCATE+INSERT','INSERT');if($w=="sql")$Fb[]='INSERT+UPDATE';parse_str($_COOKIE["adminer_export"],$K);if(!$K)$K=array("output"=>"text","format"=>"sql","db_style"=>(DB!=""?"":"CREATE"),"table_style"=>"DROP+CREATE","data_style"=>"INSERT");if(!isset($K["events"])){$K["routines"]=$K["events"]=($_GET["dump"]=="");$K["triggers"]=$K["table_style"];}echo"<tr><th>".lang(131)."<td>".adminer_html_select("output",$b->dumpOutput(),$K["output"],0)."\n";echo"<tr><th>".lang(132)."<td>".adminer_html_select("format",$b->dumpFormat(),$K["format"],0)."\n";echo($w=="sqlite"?"":"<tr><th>".lang(35)."<td>".adminer_html_select('db_style',$Ib,$K["db_style"]).(support("routine")?checkbox("routines",1,$K["routines"],lang(133)):"").(support("event")?checkbox("events",1,$K["events"],lang(134)):"")),"<tr><th>".lang(113)."<td>".adminer_html_select('table_style',$Xg,$K["table_style"]).checkbox("auto_increment",1,$K["auto_increment"],lang(57)).(support("trigger")?checkbox("triggers",1,$K["triggers"],lang(128)):""),"<tr><th>".lang(135)."<td>".adminer_html_select('data_style',$Fb,$K["data_style"]),'</table>
2016-06-08 18:32:06 -06:00
<p><input type="submit" value="',lang(66),'">
2014-04-27 06:39:48 +00:00
<input type="hidden" name="token" value="',$T,'">
2012-06-04 14:58:40 +00:00
<table cellspacing="0">
2016-06-08 18:32:06 -06:00
';$Af=array();if(DB!=""){$db=($a!=""?"":" checked");echo"<thead><tr>","<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$db onclick='formCheck(this, /^tables\\[/);'>".lang(113)."</label>","<th style='text-align: right;'><label class='block'>".lang(135)."<input type='checkbox' id='check-data'$db onclick='formCheck(this, /^data\\[/);'></label>","</thead>\n";$Yh="";$Yg=tables_list();foreach($Yg
as$C=>$U){$_f=preg_replace('~_.*~','',$C);$db=($a==""||$a==(substr($a,-1)=="%"?"$_f%":$C));$Df="<tr><td>".checkbox("tables[]",$C,$db,$C,"checkboxClick(event, this); formUncheck('check-tables');","block");if($U!==null&&!preg_match('~table~i',$U))$Yh.="$Df\n";else
echo"$Df<td align='right'><label class='block'><span id='Rows-".h($C)."'></span>".checkbox("data[]",$C,$db,"","checkboxClick(event, this); formUncheck('check-data');")."</label>\n";$Af[$_f]++;}echo$Yh;if($Yg)echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n";}else{echo"<thead><tr><th style='text-align: left;'><label class='block'><input type='checkbox' id='check-databases'".($a==""?" checked":"")." onclick='formCheck(this, /^databases\\[/);'>".lang(35)."</label></thead>\n";$l=$b->databases();if($l){foreach($l
as$m){if(!information_schema($m)){$_f=preg_replace('~_.*~','',$m);echo"<tr><td>".checkbox("databases[]",$m,$a==""||$a=="$_f%",$m,"formUncheck('check-databases');","block")."\n";$Af[$_f]++;}}}else
2013-07-27 15:43:34 +00:00
echo"<tr><td><textarea name='databases' rows='10' cols='20'></textarea>";}echo'</table>
2012-06-04 14:58:40 +00:00
</form>
2016-06-08 18:32:06 -06:00
';$Kc=true;foreach($Af
as$x=>$X){if($x!=""&&$X>1){echo($Kc?"<p>":" ")."<a href='".h(ME)."dump=".urlencode("$x%")."'>".h($x)."</a>";$Kc=false;}}}elseif(isset($_GET["privileges"])){page_header(lang(64));$I=$h->query("SELECT User, Host FROM mysql.".(DB==""?"user":"db WHERE ".q(DB)." LIKE Db")." ORDER BY Host, User");$Vc=$I;if(!$I)$I=$h->query("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', 1) AS User, SUBSTRING_INDEX(CURRENT_USER, '@', -1) AS Host");echo"<form action=''><p>\n";hidden_fields_get();echo"<input type='hidden' name='db' value='".h(DB)."'>\n",($Vc?"":"<input type='hidden' name='grant' value=''>\n"),"<table cellspacing='0'>\n","<thead><tr><th>".lang(33)."<th>".lang(32)."<th> </thead>\n";while($K=$I->fetch_assoc())echo'<tr'.odd().'><td>'.h($K["User"])."<td>".h($K["Host"]).'<td><a href="'.h(ME.'user='.urlencode($K["User"]).'&host='.urlencode($K["Host"])).'">'.lang(10)."</a>\n";if(!$Vc||DB!="")echo"<tr".odd()."><td><input name='user' autocapitalize='off'><td><input name='host' value='localhost' autocapitalize='off'><td><input type='submit' value='".lang(10)."'>\n";echo"</table>\n","</form>\n",'<p class="links"><a href="'.h(ME).'user=">'.lang(136)."</a>";}elseif(isset($_GET["sql"])){if(!$n&&$_POST["export"]){dump_headers("sql");$b->dumpTable("","");$b->dumpData("","table",$_POST["query"]);exit;}restart_session();$fd=&get_session("queries");$ed=&$fd[DB];if(!$n&&$_POST["clear"]){$ed=array();redirect(remove_from_uri("history"));}page_header((isset($_GET["import"])?lang(65):lang(56)),$n);if(!$n&&$_POST){$Sc=false;if(!isset($_GET["import"]))$H=$_POST["query"];elseif($_POST["webfile"]){$Sc=@fopen((file_exists("adminer.sql")?"adminer.sql":"compress.zlib://adminer.sql.gz"),"rb");$H=($Sc?fread($Sc,1e6):false);}else$H=get_file("sql_file",true);if(is_string($H)){if(function_exists('memory_get_usage'))@ini_set("memory_limit",max(ini_bytes("memory_limit"),2*strlen($H)+memory_get_usage()+8e6));if($H!=""&&strlen($H)<1e6){$Kf=$H.(preg_match("~;[ \t\r\n]*\$~",$H)?"":";");if(!$ed||reset(end($ed))!=$Kf){restart_session();$ed[]=array($Kf,time());set_session("queries",$fd);stop_session();}}$Eg="(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";$Nb=";";$D=0;$mc=true;$i=connect();if(is_object($i)&&DB!="")$i->select_db(DB);$qb=0;$rc=array();$kf='[\'"'.($w=="sql"?'`#':($w=="sqlite"?'`[':($w=="mssql"?'[':''))).']|/\\*|-- |$'.($w=="pgsql"?'|\\$[^$]*\\$':'');$sh=microtime(true);parse_str($_COOKIE["adminer_export"],$xa);$dc=$b->dumpFormat();unset($dc["sql"]);while($H!=""){if(!$D&&preg_match("~^$Eg*+DELIMITER\\s+(\\S+)~i",$H,$B)){$Nb=$B[1];$H=substr($H,strlen($B[0]));}else{preg_match('('.preg_quote($Nb)."\\s*|$kf)",$H,$B,PREG_OFFSET_CAPTURE,$D);list($Qc,$wf)=$B[0];if(!$Qc&&$Sc&&!feof($Sc))$H.=fread($Sc,1e5);else{if(!$Qc&&rtrim($H)=="")break;$D=$wf+strlen($Qc);if($Qc&&rtrim($Qc)!=$Nb){while(preg_match('('.($Qc=='/*'?'\\*/':($Qc=='['?']':(preg_match('~^-- |^#~',$Qc)?"\n":preg_quote($Qc)."|\\\\."))).'|$)s',$H,$B,PREG_OFFSET_CAPTURE,$D)){$lg=$B[0][0];if(!$lg&&$Sc&&!feof($Sc))$H.=fread($Sc,1e5);else{$D=$B[0][1]+strlen($lg);if($lg[0]!="\\")break;}}}else{$mc=false;$Kf=substr($H,0,$wf);$qb++;$Df="<pre id='sql-$qb'><code class='jush-$w'>".shorten_utf8(trim($Kf),1000)."</code></pre>\n";if($w=="sqlite"&&preg_match("~^$Eg*+ATTACH\\b~i",$Kf,$B)){echo$Df,"<p class='error'>".lang(137)."\n";$rc[]=" <a href='#sql-$qb'>$qb</a>";if($_POST["error_stops"])break;}else{if(!$_POST["only_errors"]){echo$Df;ob_flush();flush();}$Hg=microtime(true);if($h->multi_query($Kf)&&is_object($i)&&preg_match("~^$Eg*+USE\\b~i",$Kf))$i->query($Kf);do{$I=$h->store_result();$ih=" <span class='time'>(".format_time($Hg).")</span>".(strlen($Kf)<1000?" <a href='".h(ME)."sql=".urlencode(trim($Kf))."'>".lang(10)."</a>":"");if($h->error){echo($_POST["only_errors"]?$Df:""),"<p class='error'>".lang(138).($h->errno?" ($h->errno)":"").": ".error()."\n";$rc[]=" <a href='#sql-$qb'>$qb</a>";if($_POST["error_stops"])break
2016-06-08 18:38:27 -06:00
2;}elseif(is_object($I)){$z=$_POST["limit"];$Ze=select($I,$i,array(),$z);if(!$_POST["only_errors"]){echo"<form action='' method='post'>\n";$Ce=$I->num_rows;echo"<p>".($Ce?($z&&$Ce>$z?lang(139,$z):"").lang(140,$Ce):""),$ih;$jd="export-$qb";$_c=", <a href='#$jd' onclick=\"return !toggle('$jd');\">".lang(66)."</a><span id='$jd' class='hidden'>: ".adminer_html_select("output",$b->dumpOutput(),$xa["output"])." ".adminer_html_select("format",$dc,$xa["format"])."<input type='hidden' name='query' value='".h($Kf)."'>"." <input type='submit' name='export' value='".lang(66)."'><input type='hidden' name='token' value='$T'></span>\n";if($i&&preg_match("~^($Eg|\\()*+SELECT\\b~i",$Kf)&&($zc=explain($i,$Kf))){$jd="explain-$qb";echo", <a href='#$jd' onclick=\"return !toggle('$jd');\">EXPLAIN</a>$_c","<div id='$jd' class='hidden'>\n";select($zc,$i,$Ze);echo"</div>\n";}else
2016-06-08 18:32:06 -06:00
echo$_c;echo"</form>\n";}}else{if(preg_match("~^$Eg*+(CREATE|DROP|ALTER)$Eg++(DATABASE|SCHEMA)\\b~i",$Kf)){restart_session();set_session("dbs",null);stop_session();}if(!$_POST["only_errors"])echo"<p class='message' title='".h($h->info)."'>".lang(141,$h->affected_rows)."$ih\n";}$Hg=microtime(true);}while($h->next_result());}$H=substr($H,$D);$D=0;}}}}if($mc)echo"<p class='message'>".lang(142)."\n";elseif($_POST["only_errors"]){echo"<p class='message'>".lang(143,$qb-count($rc))," <span class='time'>(".format_time($sh).")</span>\n";}elseif($rc&&$qb>1)echo"<p class='error'>".lang(138).": ".implode("",$rc)."\n";}else
2014-04-27 06:39:48 +00:00
echo"<p class='error'>".upload_error($H)."\n";}echo'
2012-06-04 14:58:40 +00:00
<form action="" method="post" enctype="multipart/form-data" id="form">
2016-06-08 18:32:06 -06:00
';$wc="<input type='submit' value='".lang(144)."' title='Ctrl+Enter'>";if(!isset($_GET["import"])){$Kf=$_GET["sql"];if($_POST)$Kf=$_POST["query"];elseif($_GET["history"]=="all")$Kf=$ed;elseif($_GET["history"]!="")$Kf=$ed[$_GET["history"]][0];echo"<p>";textarea("query",$Kf,20);echo($_POST?"":"<script type='text/javascript'>focus(document.getElementsByTagName('textarea')[0]);</script>\n"),"<p>$wc\n",lang(145).": <input type='number' name='limit' class='size' value='".h($_POST?$_POST["limit"]:$_GET["limit"])."'>\n";}else{echo"<fieldset><legend>".lang(146)."</legend><div>",(ini_bool("file_uploads")?"SQL (< ".ini_get("upload_max_filesize")."B): <input type='file' name='sql_file[]' multiple>\n$wc":lang(147)),"</div></fieldset>\n","<fieldset><legend>".lang(148)."</legend><div>",lang(149,"<code>adminer.sql".(extension_loaded("zlib")?"[.gz]":"")."</code>"),' <input type="submit" name="webfile" value="'.lang(150).'">',"</div></fieldset>\n","<p>";}echo
checkbox("error_stops",1,($_POST?$_POST["error_stops"]:isset($_GET["import"])),lang(151))."\n",checkbox("only_errors",1,($_POST?$_POST["only_errors"]:isset($_GET["import"])),lang(152))."\n","<input type='hidden' name='token' value='$T'>\n";if(!isset($_GET["import"])&&$ed){print_fieldset("history",lang(153),$_GET["history"]!="");for($X=end($ed);$X;$X=prev($ed)){$x=key($ed);list($Kf,$ih,$hc)=$X;echo'<a href="'.h(ME."sql=&history=$x").'">'.lang(10)."</a>"." <span class='time' title='".@date('Y-m-d',$ih)."'>".@date("H:i:s",$ih)."</span>"." <code class='jush-$w'>".shorten_utf8(ltrim(str_replace("\n"," ",str_replace("\r","",preg_replace('~^(#|-- ).*~m','',$Kf)))),80,"</code>").($hc?" <span class='time'>($hc)</span>":"")."<br>\n";}echo"<input type='submit' name='clear' value='".lang(154)."'>\n","<a href='".h(ME."sql=&history=all")."'>".lang(155)."</a>\n","</div></fieldset>\n";}echo'</form>
2015-04-14 21:38:33 +00:00
';}elseif(isset($_GET["edit"])){$a=$_GET["edit"];$p=fields($a);$Z=(isset($_GET["select"])?(count($_POST["check"])==1?where_check($_POST["check"][0],$p):""):where($_GET,$p));$Jh=(isset($_GET["select"])?$_POST["edit"]:$Z);foreach($p
2016-06-08 18:32:06 -06:00
as$C=>$o){if(!isset($o["privileges"][$Jh?"update":"insert"])||$b->fieldName($o)=="")unset($p[$C]);}if($_POST&&!$n&&!isset($_GET["select"])){$A=$_POST["referer"];if($_POST["insert"])$A=($Jh?null:$_SERVER["REQUEST_URI"]);elseif(!preg_match('~^.+&select=.+$~',$A))$A=ME."select=".urlencode($a);$v=indexes($a);$Eh=unique_array($_GET["where"],$v);$Nf="\nWHERE $Z";if(isset($_POST["delete"]))queries_redirect($A,lang(156),$Wb->delete($a,$Nf,!$Eh));else{$O=array();foreach($p
as$C=>$o){$X=process_input($o);if($X!==false&&$X!==null)$O[idf_escape($C)]=$X;}if($Jh){if(!$O)redirect($A);queries_redirect($A,lang(157),$Wb->update($a,$O,$Nf,!$Eh));if(is_ajax()){page_headers();page_messages($n);exit;}}else{$I=$Wb->insert($a,$O);$Rd=($I?last_id():0);queries_redirect($A,lang(158,($Rd?" $Rd":"")),$I);}}}$K=null;if($_POST["save"])$K=(array)$_POST["fields"];elseif($Z){$M=array();foreach($p
2015-04-14 21:38:33 +00:00
as$C=>$o){if(isset($o["privileges"]["select"])){$Ga=convert_field($o);if($_POST["clone"]&&$o["auto_increment"])$Ga="''";if($w=="sql"&&preg_match("~enum|set~",$o["type"]))$Ga="1*".idf_escape($C);$M[]=($Ga?"$Ga AS ":"").idf_escape($C);}}$K=array();if(!support("table"))$M=array("*");if($M){$I=$Wb->select($a,$M,array($Z),$M,array(),(isset($_GET["select"])?2:1));$K=$I->fetch_assoc();if(!$K)$K=false;if(isset($_GET["select"])&&(!$K||$I->fetch_assoc()))$K=null;}}if(!support("table")&&!$p){if(!$Z){$I=$Wb->select($a,array("*"),$Z,array("*"));$K=($I?$I->fetch_assoc():false);if(!$K)$K=array($Wb->primary=>"");}if($K){foreach($K
2016-06-08 18:32:06 -06:00
as$x=>$X){if(!$Z)$K[$x]=null;$p[$x]=array("field"=>$x,"null"=>($x!=$Wb->primary),"auto_increment"=>($x==$Wb->primary));}}}edit_form($a,$p,$K,$Jh);}elseif(isset($_GET["create"])){$a=$_GET["create"];$lf=array();foreach(array('HASH','LINEAR HASH','KEY','LINEAR KEY','RANGE','LIST')as$x)$lf[$x]=$x;$Uf=referencable_primary($a);$Oc=array();foreach($Uf
as$Tg=>$o)$Oc[str_replace("`","``",$Tg)."`".str_replace("`","``",$o["field"])]=$Tg;$cf=array();$R=array();if($a!=""){$cf=fields($a);$R=table_status($a);if(!$R)$n=lang(9);}$K=$_POST;$K["fields"]=(array)$K["fields"];if($K["auto_increment_col"])$K["fields"][$K["auto_increment_col"]]["auto_increment"]=true;if($_POST&&!process_fields($K["fields"])&&!$n){if($_POST["drop"])queries_redirect(substr(ME,0,-1),lang(159),drop_tables(array($a)));else{$p=array();$Da=array();$Nh=false;$Mc=array();ksort($K["fields"]);$bf=reset($cf);$Aa=" FIRST";foreach($K["fields"]as$x=>$o){$q=$Oc[$o["type"]];$_h=($q!==null?$Uf[$q]:$o);if($o["field"]!=""){if(!$o["has_default"])$o["default"]=null;if($x==$K["auto_increment_col"])$o["auto_increment"]=true;$If=process_field($o,$_h);$Da[]=array($o["orig"],$If,$Aa);if($If!=process_field($bf,$bf)){$p[]=array($o["orig"],$If,$Aa);if($o["orig"]!=""||$Aa)$Nh=true;}if($q!==null)$Mc[idf_escape($o["field"])]=($a!=""&&$w!="sqlite"?"ADD":" ").format_foreign_key(array('table'=>$Oc[$o["type"]],'source'=>array($o["field"]),'target'=>array($_h["field"]),'on_delete'=>$o["on_delete"],));$Aa=" AFTER ".idf_escape($o["field"]);}elseif($o["orig"]!=""){$Nh=true;$p[]=array($o["orig"]);}if($o["orig"]!=""){$bf=next($cf);if(!$bf)$Aa="";}}$nf="";if($lf[$K["partition_by"]]){$of=array();if($K["partition_by"]=='RANGE'||$K["partition_by"]=='LIST'){foreach(array_filter($K["partition_names"])as$x=>$X){$Y=$K["partition_values"][$x];$of[]="\n PARTITION ".idf_escape($X)." VALUES ".($K["partition_by"]=='RANGE'?"LESS THAN":"IN").($Y!=""?" ($Y)":" MAXVALUE");}}$nf.="\nPARTITION BY $K[partition_by]($K[partition])".($of?" (".implode(",",$of)."\n)":($K["partitions"]?" PARTITIONS ".(+$K["partitions"]):""));}elseif(support("partitioning")&&preg_match("~partitioned~",$R["Create_options"]))$nf.="\nREMOVE PARTITIONING";$le=lang(160);if($a==""){cookie("adminer_engine",$K["Engine"]);$le=lang(161);}$C=trim($K["name"]);queries_redirect(ME.(support("table")?"table=":"select=").urlencode($C),$le,alter_table($a,$C,($w=="sqlite"&&($Nh||$Mc)?$Da:$p),$Mc,($K["Comment"]!=$R["Comment"]?$K["Comment"]:null),($K["Engine"]&&$K["Engine"]!=$R["Engine"]?$K["Engine"]:""),($K["Collation"]&&$K["Collation"]!=$R["Collation"]?$K["Collation"]:""),($K["Auto_increment"]!=""?number($K["Auto_increment"]):""),$nf));}}page_header(($a!=""?lang(42):lang(67)),$n,array("table"=>$a),h($a));if(!$_POST){$K=array("Engine"=>$_COOKIE["adminer_engine"],"fields"=>array(array("field"=>"","type"=>(isset($Bh["int"])?"int":(isset($Bh["integer"])?"integer":"")))),"partition_names"=>array(""),);if($a!=""){$K=$R;$K["name"]=$a;$K["fields"]=array();if(!$_GET["auto_increment"])$K["Auto_increment"]="";foreach($cf
as$o){$o["has_default"]=isset($o["default"]);$K["fields"][]=$o;}if(support("partitioning")){$Tc="FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = ".q(DB)." AND TABLE_NAME = ".q($a);$I=$h->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $Tc ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");list($K["partition_by"],$K["partitions"],$K["partition"])=$I->fetch_row();$of=get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $Tc AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");$of[""]="";$K["partition_names"]=array_keys($of);$K["partition_values"]=array_values($of);}}}$nb=collations();$oc=engines();foreach($oc
2015-04-14 21:38:33 +00:00
as$nc){if(!strcasecmp($nc,$K["Engine"])){$K["Engine"]=$nc;break;}}echo'
2012-06-04 14:58:40 +00:00
<form action="" method="post" id="form">
<p>
2014-04-27 06:39:48 +00:00
';if(support("columns")||$a==""){echo
2016-06-08 18:32:06 -06:00
lang(162),': <input name="name" maxlength="64" value="',h($K["name"]),'" autocapitalize="off">
2016-06-08 18:38:27 -06:00
';if($a==""&&!$_POST){?><script type='text/javascript'>focus(document.getElementById('form')['name']);</script><?php }echo($oc?"<select name='Engine' onchange='helpClose();'".on_help("getTarget(event).value",1).">".optionlist(array(""=>"(".lang(163).")")+$oc,$K["Engine"])."</select>":""),' ',($nb&&!preg_match("~sqlite|mssql~",$w)?adminer_html_select("Collation",array(""=>"(".lang(88).")")+$nb,$K["Collation"]):""),' <input type="submit" value="',lang(14),'">
2014-04-27 06:39:48 +00:00
';}echo'
';if(support("columns")){echo'<table cellspacing="0" id="edit-fields" class="nowrap">
2015-04-14 21:38:33 +00:00
';$sb=($_POST?$_POST["comments"]:$K["Comment"]!="");if(!$_POST&&!$sb){foreach($K["fields"]as$o){if($o["comment"]!=""){$sb=true;break;}}}edit_fields($K["fields"],$nb,"TABLE",$Oc,$sb);echo'</table>
2012-06-04 14:58:40 +00:00
<p>
2016-06-08 18:32:06 -06:00
',lang(57),': <input type="number" name="Auto_increment" size="6" value="',h($K["Auto_increment"]),'">
',checkbox("defaults",1,true,lang(164),"columnShow(this.checked, 5)","jsonly");if(!$_POST["defaults"]){echo'<script type="text/javascript">editingHideDefaults()</script>';}echo(support("comment")?"<label><input type='checkbox' name='comments' value='1' class='jsonly' onclick=\"columnShow(this.checked, 6); toggle('Comment'); if (this.checked) this.form['Comment'].focus();\"".($sb?" checked":"").">".lang(97)."</label>".' <input name="Comment" id="Comment" value="'.h($K["Comment"]).'" maxlength="'.($h->server_info>=5.5?2048:60).'"'.($sb?'':' class="hidden"').'>':''),'<p>
2014-04-27 06:39:48 +00:00
<input type="submit" value="',lang(14),'">
';}echo'
2016-06-08 18:32:06 -06:00
';if($a!=""){echo'<input type="submit" name="drop" value="',lang(117),'"',confirm(),'>';}if(support("partitioning")){$mf=preg_match('~RANGE|LIST~',$K["partition_by"]);print_fieldset("partition",lang(165),$K["partition_by"]);echo'<p>
',"<select name='partition_by' onchange='partitionByChange(this);'".on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')",1).">".optionlist(array(""=>"")+$lf,$K["partition_by"])."</select>",'(<input name="partition" value="',h($K["partition"]),'">)
',lang(166),': <input type="number" name="partitions" class="size',($mf||!$K["partition_by"]?" hidden":""),'" value="',h($K["partitions"]),'">
<table cellspacing="0" id="partition-table"',($mf?"":" class='hidden'"),'>
<thead><tr><th>',lang(167),'<th>',lang(168),'</thead>
2014-04-27 06:39:48 +00:00
';foreach($K["partition_names"]as$x=>$X){echo'<tr>','<td><input name="partition_names[]" value="'.h($X).'"'.($x==count($K["partition_names"])-1?' onchange="partitionNameChange(this);"':'').' autocapitalize="off">','<td><input name="partition_values[]" value="'.h($K["partition_values"][$x]).'">';}echo'</table>
2012-06-04 14:58:40 +00:00
</div></fieldset>
2014-04-27 06:39:48 +00:00
';}echo'<input type="hidden" name="token" value="',$T,'">
2013-07-27 15:43:34 +00:00
</form>
2016-06-08 18:32:06 -06:00
';}elseif(isset($_GET["indexes"])){$a=$_GET["indexes"];$pd=array("PRIMARY","UNIQUE","INDEX");$R=table_status($a,true);if(preg_match('~MyISAM|M?aria'.($h->server_info>=5.6?'|InnoDB':'').'~i',$R["Engine"]))$pd[]="FULLTEXT";$v=indexes($a);$Bf=array();if($w=="mongo"){$Bf=$v["_id_"];unset($pd[0]);unset($v["_id_"]);}$K=$_POST;if($_POST&&!$n&&!$_POST["add"]&&!$_POST["drop_col"]){$c=array();foreach($K["indexes"]as$u){$C=$u["name"];if(in_array($u["type"],$pd)){$f=array();$Wd=array();$Pb=array();$O=array();ksort($u["columns"]);foreach($u["columns"]as$x=>$e){if($e!=""){$y=$u["lengths"][$x];$Ob=$u["descs"][$x];$O[]=idf_escape($e).($y?"(".(+$y).")":"").($Ob?" DESC":"");$f[]=$e;$Wd[]=($y?$y:null);$Pb[]=$Ob;}}if($f){$xc=$v[$C];if($xc){ksort($xc["columns"]);ksort($xc["lengths"]);ksort($xc["descs"]);if($u["type"]==$xc["type"]&&array_values($xc["columns"])===$f&&(!$xc["lengths"]||array_values($xc["lengths"])===$Wd)&&array_values($xc["descs"])===$Pb){unset($v[$C]);continue;}}$c[]=array($u["type"],$C,$O);}}}foreach($v
as$C=>$xc)$c[]=array($xc["type"],$C,"DROP");if(!$c)redirect(ME."table=".urlencode($a));queries_redirect(ME."table=".urlencode($a),lang(169),alter_indexes($a,$c));}page_header(lang(122),$n,array("table"=>$a),h($a));$p=array_keys(fields($a));if($_POST["add"]){foreach($K["indexes"]as$x=>$u){if($u["columns"][count($u["columns"])]!="")$K["indexes"][$x]["columns"][]="";}$u=end($K["indexes"]);if($u["type"]||array_filter($u["columns"],'strlen'))$K["indexes"][]=array("columns"=>array(1=>""));}if(!$K){foreach($v
2014-04-27 06:39:48 +00:00
as$x=>$u){$v[$x]["name"]=$x;$v[$x]["columns"][]="";}$v[]=array("columns"=>array(1=>""));$K["indexes"]=$v;}echo'
2012-06-04 14:58:40 +00:00
<form action="" method="post">
<table cellspacing="0" class="nowrap">
2014-04-27 06:39:48 +00:00
<thead><tr>
2016-06-08 18:32:06 -06:00
<th>',lang(170),'<th><input type="submit" style="left: -1000px; position: absolute;">',lang(171),'<th>',lang(172);?>
<th><noscript><input type='image' class='icon' name='add[0]' src='" . h(preg_replace("~\\?.*~", "", ME)) . "?file=plus.gif&version=4.2.5' alt='+' title='<?php echo
lang(98),'\'></noscript>
2014-04-27 06:39:48 +00:00
</thead>
2016-06-08 18:32:06 -06:00
';if($Bf){echo"<tr><td>PRIMARY<td>";foreach($Bf["columns"]as$x=>$e){echo
2016-06-08 18:38:27 -06:00
select_input(" disabled",$p,$e),"<label><input disabled type='checkbox'>".lang(51)."</label> ";}echo"<td><td>\n";}$Fd=1;foreach($K["indexes"]as$u){if(!$_POST["drop_col"]||$Fd!=key($_POST["drop_col"])){echo"<tr><td>".adminer_html_select("indexes[$Fd][type]",array(-1=>"")+$pd,$u["type"],($Fd==count($K["indexes"])?"indexesAddRow(this);":1)),"<td>";ksort($u["columns"]);$s=1;foreach($u["columns"]as$x=>$e){echo"<span>".select_input(" name='indexes[$Fd][columns][$s]' onchange=\"".($s==count($u["columns"])?"indexesAddColumn":"indexesChangeColumn")."(this, '".h(js_escape($w=="sql"?"":$_GET["indexes"]."_"))."');\"",($p?array_combine($p,$p):$p),$e),($w=="sql"||$w=="mssql"?"<input type='number' name='indexes[$Fd][lengths][$s]' class='size' value='".h($u["lengths"][$x])."'>":""),($w!="sql"?checkbox("indexes[$Fd][descs][$s]",1,$u["descs"][$x],lang(51)):"")," </span>";$s++;}echo"<td><input name='indexes[$Fd][name]' value='".h($u["name"])."' autocapitalize='off'>\n","<td><input type='image' class='icon' name='drop_col[$Fd]' src='".h(preg_replace("~\\?.*~","",ME))."?file=cross.gif&version=4.2.5' alt='x' title='".lang(101)."' onclick=\"return !editingRemoveRow(this, 'indexes\$1[type]');\">\n";}$Fd++;}echo'</table>
2012-06-04 14:58:40 +00:00
<p>
2014-04-27 06:39:48 +00:00
<input type="submit" value="',lang(14),'">
<input type="hidden" name="token" value="',$T,'">
2012-06-04 14:58:40 +00:00
</form>
2016-06-08 18:32:06 -06:00
';}elseif(isset($_GET["database"])){$K=$_POST;if($_POST&&!$n&&!isset($_POST["add_x"])){$C=trim($K["name"]);if($_POST["drop"]){$_GET["db"]="";queries_redirect(remove_from_uri("db|database"),lang(173),drop_databases(array(DB)));}elseif(DB!==$C){if(DB!=""){$_GET["db"]=$C;queries_redirect(preg_replace('~\bdb=[^&]*&~','',ME)."db=".urlencode($C),lang(174),rename_database($C,$K["collation"]));}else{$l=explode("\n",str_replace("\r","",$C));$Ng=true;$Qd="";foreach($l
as$m){if(count($l)==1||$m!=""){if(!create_database($m,$K["collation"]))$Ng=false;$Qd=$m;}}restart_session();set_session("dbs",null);queries_redirect(ME."db=".urlencode($Qd),lang(175),$Ng);}}else{if(!$K["collation"])redirect(substr(ME,0,-1));query_redirect("ALTER DATABASE ".idf_escape($C).(preg_match('~^[a-z0-9_]+$~i',$K["collation"])?" COLLATE $K[collation]":""),substr(ME,0,-1),lang(176));}}page_header(DB!=""?lang(60):lang(177),$n,array(),h(DB));$nb=collations();$C=DB;if($_POST)$C=$K["name"];elseif(DB!="")$K["collation"]=db_collation(DB,$nb);elseif($w=="sql"){foreach(get_vals("SHOW GRANTS")as$Vc){if(preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~',$Vc,$B)&&$B[1]){$C=stripcslashes(idf_unescape("`$B[2]`"));break;}}}echo'
2012-06-04 14:58:40 +00:00
<form action="" method="post">
<p>
2016-06-08 18:38:27 -06:00
',($_POST["add_x"]||strpos($C,"\n")?'<textarea id="name" name="name" rows="10" cols="40">'.h($C).'</textarea><br>':'<input name="name" id="name" value="'.h($C).'" maxlength="64" autocapitalize="off">')."\n".($nb?adminer_html_select("collation",array(""=>"(".lang(88).")")+$nb,$K["collation"]).doc_link(array('sql'=>"charset-charsets.html",'mssql'=>"ms187963.aspx",)):"");?>
2013-07-27 15:43:34 +00:00
<script type='text/javascript'>focus(document.getElementById('name'));</script>
2012-06-04 14:58:40 +00:00
<input type="submit" value="<?php echo
2014-04-27 06:39:48 +00:00
lang(14),'">
2016-06-08 18:32:06 -06:00
';if(DB!="")echo"<input type='submit' name='drop' value='".lang(117)."'".confirm().">\n";elseif(!$_POST["add_x"]&&$_GET["db"]=="")echo"<input type='image' class='icon' name='add' src='".h(preg_replace("~\\?.*~","",ME))."?file=plus.gif&version=4.2.5' alt='+' title='".lang(98)."'>\n";echo'<input type="hidden" name="token" value="',$T,'">
2012-06-04 14:58:40 +00:00
</form>
2016-06-08 18:32:06 -06:00
';}elseif(isset($_GET["scheme"])){$K=$_POST;if($_POST&&!$n){$_=preg_replace('~ns=[^&]*&~','',ME)."ns=";if($_POST["drop"])query_redirect("DROP SCHEMA ".idf_escape($_GET["ns"]),$_,lang(178));else{$C=trim($K["name"]);$_.=urlencode($C);if($_GET["ns"]=="")query_redirect("CREATE SCHEMA ".idf_escape($C),$_,lang(179));elseif($_GET["ns"]!=$C)query_redirect("ALTER SCHEMA ".idf_escape($_GET["ns"])." RENAME TO ".idf_escape($C),$_,lang(180));else
redirect($_);}}page_header($_GET["ns"]!=""?lang(61):lang(62),$n);if(!$K)$K["name"]=$_GET["ns"];echo'
2012-06-04 14:58:40 +00:00
<form action="" method="post">
2014-04-27 06:39:48 +00:00
<p><input name="name" id="name" value="',h($K["name"]);?>" autocapitalize="off">
2013-07-27 15:43:34 +00:00
<script type='text/javascript'>focus(document.getElementById('name'));</script>
<input type="submit" value="<?php echo
2014-04-27 06:39:48 +00:00
lang(14),'">
2016-06-08 18:32:06 -06:00
';if($_GET["ns"]!="")echo"<input type='submit' name='drop' value='".lang(117)."'".confirm().">\n";echo'<input type="hidden" name="token" value="',$T,'">
2012-06-04 14:58:40 +00:00
</form>
2016-06-08 18:32:06 -06:00
';}elseif(isset($_GET["call"])){$da=$_GET["call"];page_header(lang(181).": ".h($da),$n);$hg=routine($da,(isset($_GET["callf"])?"FUNCTION":"PROCEDURE"));$nd=array();$ff=array();foreach($hg["fields"]as$s=>$o){if(substr($o["inout"],-3)=="OUT")$ff[$s]="@".idf_escape($o["field"])." AS ".idf_escape($o["field"]);if(!$o["inout"]||substr($o["inout"],0,2)=="IN")$nd[]=$s;}if(!$n&&$_POST){$Ya=array();foreach($hg["fields"]as$x=>$o){if(in_array($x,$nd)){$X=process_input($o);if($X===false)$X="''";if(isset($ff[$x]))$h->query("SET @".idf_escape($o["field"])." = $X");}$Ya[]=(isset($ff[$x])?"@".idf_escape($o["field"]):$X);}$H=(isset($_GET["callf"])?"SELECT":"CALL")." ".idf_escape($da)."(".implode(", ",$Ya).")";echo"<p><code class='jush-$w'>".h($H)."</code> <a href='".h(ME)."sql=".urlencode($H)."'>".lang(10)."</a>\n";if(!$h->multi_query($H))echo"<p class='error'>".error()."\n";else{$i=connect();if(is_object($i))$i->select_db(DB);do{$I=$h->store_result();if(is_object($I))select($I,$i);else
echo"<p class='message'>".lang(182,$h->affected_rows)."\n";}while($h->next_result());if($ff)select($h->query("SELECT ".implode(", ",$ff)));}}echo'
2012-06-04 14:58:40 +00:00
<form action="" method="post">
2015-04-14 21:38:33 +00:00
';if($nd){echo"<table cellspacing='0'>\n";foreach($nd
2016-06-08 18:32:06 -06:00
as$x){$o=$hg["fields"][$x];$C=$o["field"];echo"<tr><th>".$b->fieldName($o);$Y=$_POST["fields"][$C];if($Y!=""){if($o["type"]=="enum")$Y=+$Y;if($o["type"]=="set")$Y=array_sum($Y);}input($o,$Y,(string)$_POST["function"][$C]);echo"\n";}echo"</table>\n";}echo'<p>
<input type="submit" value="',lang(181),'">
2014-04-27 06:39:48 +00:00
<input type="hidden" name="token" value="',$T,'">
2012-06-04 14:58:40 +00:00
</form>
2016-06-08 18:32:06 -06:00
';}elseif(isset($_GET["foreign"])){$a=$_GET["foreign"];$C=$_GET["name"];$K=$_POST;if($_POST&&!$n&&!$_POST["add"]&&!$_POST["change"]&&!$_POST["change-js"]){$le=($_POST["drop"]?lang(183):($C!=""?lang(184):lang(185)));$A=ME."table=".urlencode($a);$K["source"]=array_filter($K["source"],'strlen');ksort($K["source"]);$bh=array();foreach($K["source"]as$x=>$X)$bh[$x]=$K["target"][$x];$K["target"]=$bh;if($w=="sqlite")queries_redirect($A,$le,recreate_table($a,$a,array(),array(),array(" $C"=>($_POST["drop"]?"":" ".format_foreign_key($K)))));else{$c="ALTER TABLE ".table($a);$Yb="\nDROP ".($w=="sql"?"FOREIGN KEY ":"CONSTRAINT ").idf_escape($C);if($_POST["drop"])query_redirect($c.$Yb,$A,$le);else{query_redirect($c.($C!=""?"$Yb,":"")."\nADD".format_foreign_key($K),$A,$le);$n=lang(186)."<br>$n";}}}page_header(lang(187),$n,array("table"=>$a),h($a));if($_POST){ksort($K["source"]);if($_POST["add"])$K["source"][]="";elseif($_POST["change"]||$_POST["change-js"])$K["target"]=array();}elseif($C!=""){$Oc=foreign_keys($a);$K=$Oc[$C];$K["source"][]="";}else{$K["table"]=$a;$K["source"]=array("");}$Dg=array_keys(fields($a));$bh=($a===$K["table"]?$Dg:array_keys(fields($K["table"])));$Tf=array_keys(array_filter(table_status('',true),'fk_support'));echo'
2012-06-04 14:58:40 +00:00
<form action="" method="post">
<p>
2014-04-27 06:39:48 +00:00
';if($K["db"]==""&&$K["ns"]==""){echo
2016-06-08 18:32:06 -06:00
lang(188),':
2016-06-08 18:38:27 -06:00
',adminer_html_select("table",$Tf,$K["table"],"this.form['change-js'].value = '1'; this.form.submit();"),'<input type="hidden" name="change-js" value="">
2016-06-08 18:32:06 -06:00
<noscript><p><input type="submit" name="change" value="',lang(189),'"></noscript>
2012-06-04 14:58:40 +00:00
<table cellspacing="0">
2016-06-08 18:32:06 -06:00
<thead><tr><th>',lang(124),'<th>',lang(125),'</thead>
2016-06-08 18:38:27 -06:00
';$Fd=0;foreach($K["source"]as$x=>$X){echo"<tr>","<td>".adminer_html_select("source[".(+$x)."]",array(-1=>"")+$Dg,$X,($Fd==count($K["source"])-1?"foreignAddRow(this);":1)),"<td>".adminer_html_select("target[".(+$x)."]",$bh,$K["target"][$x]);$Fd++;}echo'</table>
2012-06-04 14:58:40 +00:00
<p>
2016-06-08 18:38:27 -06:00
',lang(90),': ',adminer_html_select("on_delete",array(-1=>"")+explode("|",$Me),$K["on_delete"]),' ',lang(89),': ',adminer_html_select("on_update",array(-1=>"")+explode("|",$Me),$K["on_update"]),doc_link(array('sql'=>"innodb-foreign-key-constraints.html",'pgsql'=>"sql-createtable.html#SQL-CREATETABLE-REFERENCES",'mssql'=>"ms174979.aspx",'oracle'=>"clauses002.htm#sthref2903",)),'<p>
2014-04-27 06:39:48 +00:00
<input type="submit" value="',lang(14),'">
2016-06-08 18:32:06 -06:00
<noscript><p><input type="submit" name="add" value="',lang(190),'"></noscript>
';}if($C!=""){echo'<input type="submit" name="drop" value="',lang(117),'"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
2012-06-04 14:58:40 +00:00
</form>
2016-06-08 18:32:06 -06:00
';}elseif(isset($_GET["view"])){$a=$_GET["view"];$K=$_POST;if($_POST&&!$n){$C=trim($K["name"]);$Ga=" AS\n$K[select]";$A=ME."table=".urlencode($C);$le=lang(191);if($_GET["materialized"])$U="MATERIALIZED VIEW";else{$U="VIEW";if($w=="pgsql"){$Ig=table_status($C);$U=($Ig?strtoupper($Ig["Engine"]):$U);}}if(!$_POST["drop"]&&$a==$C&&$w!="sqlite"&&$U!="MATERIALIZED VIEW")query_redirect(($w=="mssql"?"ALTER":"CREATE OR REPLACE")." VIEW ".table($C).$Ga,$A,$le);else{$dh=$C."_adminer_".uniqid();drop_create("DROP $U ".table($a),"CREATE $U ".table($C).$Ga,"DROP $U ".table($C),"CREATE $U ".table($dh).$Ga,"DROP $U ".table($dh),($_POST["drop"]?substr(ME,0,-1):$A),lang(192),$le,lang(193),$a,$C);}}if(!$_POST&&$a!=""){$K=view($a);$K["name"]=$a;if(!$n)$n=error();}page_header(($a!=""?lang(41):lang(194)),$n,array("table"=>$a),h($a));echo'
2012-06-04 14:58:40 +00:00
<form action="" method="post">
2016-06-08 18:32:06 -06:00
<p>',lang(172),': <input name="name" value="',h($K["name"]),'" maxlength="64" autocapitalize="off">
2014-04-27 06:39:48 +00:00
<p>';textarea("select",$K["select"]);echo'<p>
<input type="submit" value="',lang(14),'">
2016-06-08 18:32:06 -06:00
';if($_GET["view"]!=""){echo'<input type="submit" name="drop" value="',lang(117),'"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
2012-06-04 14:58:40 +00:00
</form>
2016-06-08 18:32:06 -06:00
';}elseif(isset($_GET["event"])){$aa=$_GET["event"];$xd=array("YEAR","QUARTER","MONTH","DAY","HOUR","MINUTE","WEEK","SECOND","YEAR_MONTH","DAY_HOUR","DAY_MINUTE","DAY_SECOND","HOUR_MINUTE","HOUR_SECOND","MINUTE_SECOND");$Jg=array("ENABLED"=>"ENABLE","DISABLED"=>"DISABLE","SLAVESIDE_DISABLED"=>"DISABLE ON SLAVE");$K=$_POST;if($_POST&&!$n){if($_POST["drop"])query_redirect("DROP EVENT ".idf_escape($aa),substr(ME,0,-1),lang(195));elseif(in_array($K["INTERVAL_FIELD"],$xd)&&isset($Jg[$K["STATUS"]])){$mg="\nON SCHEDULE ".($K["INTERVAL_VALUE"]?"EVERY ".q($K["INTERVAL_VALUE"])." $K[INTERVAL_FIELD]".($K["STARTS"]?" STARTS ".q($K["STARTS"]):"").($K["ENDS"]?" ENDS ".q($K["ENDS"]):""):"AT ".q($K["STARTS"]))." ON COMPLETION".($K["ON_COMPLETION"]?"":" NOT")." PRESERVE";queries_redirect(substr(ME,0,-1),($aa!=""?lang(196):lang(197)),queries(($aa!=""?"ALTER EVENT ".idf_escape($aa).$mg.($aa!=$K["EVENT_NAME"]?"\nRENAME TO ".idf_escape($K["EVENT_NAME"]):""):"CREATE EVENT ".idf_escape($K["EVENT_NAME"]).$mg)."\n".$Jg[$K["STATUS"]]." COMMENT ".q($K["EVENT_COMMENT"]).rtrim(" DO\n$K[EVENT_DEFINITION]",";").";"));}}page_header(($aa!=""?lang(198).": ".h($aa):lang(199)),$n);if(!$K&&$aa!=""){$L=get_rows("SELECT * FROM information_schema.EVENTS WHERE EVENT_SCHEMA = ".q(DB)." AND EVENT_NAME = ".q($aa));$K=reset($L);}echo'
2012-06-04 14:58:40 +00:00
<form action="" method="post">
<table cellspacing="0">
2016-06-08 18:32:06 -06:00
<tr><th>',lang(172),'<td><input name="EVENT_NAME" value="',h($K["EVENT_NAME"]),'" maxlength="64" autocapitalize="off">
<tr><th title="datetime">',lang(200),'<td><input name="STARTS" value="',h("$K[EXECUTE_AT]$K[STARTS]"),'">
<tr><th title="datetime">',lang(201),'<td><input name="ENDS" value="',h($K["ENDS"]),'">
2016-06-08 18:38:27 -06:00
<tr><th>',lang(202),'<td><input type="number" name="INTERVAL_VALUE" value="',h($K["INTERVAL_VALUE"]),'" class="size"> ',adminer_html_select("INTERVAL_FIELD",$xd,$K["INTERVAL_FIELD"]),'<tr><th>',lang(108),'<td>',adminer_html_select("STATUS",$Jg,$K["STATUS"]),'<tr><th>',lang(97),'<td><input name="EVENT_COMMENT" value="',h($K["EVENT_COMMENT"]),'" maxlength="64">
2016-06-08 18:32:06 -06:00
<tr><th> <td>',checkbox("ON_COMPLETION","PRESERVE",$K["ON_COMPLETION"]=="PRESERVE",lang(203)),'</table>
2014-04-27 06:39:48 +00:00
<p>';textarea("EVENT_DEFINITION",$K["EVENT_DEFINITION"]);echo'<p>
<input type="submit" value="',lang(14),'">
2016-06-08 18:32:06 -06:00
';if($aa!=""){echo'<input type="submit" name="drop" value="',lang(117),'"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
2012-06-04 14:58:40 +00:00
</form>
2016-06-08 18:32:06 -06:00
';}elseif(isset($_GET["procedure"])){$da=$_GET["procedure"];$hg=(isset($_GET["function"])?"FUNCTION":"PROCEDURE");$K=$_POST;$K["fields"]=(array)$K["fields"];if($_POST&&!process_fields($K["fields"])&&!$n){$dh="$K[name]_adminer_".uniqid();drop_create("DROP $hg ".idf_escape($da),create_routine($hg,$K),"DROP $hg ".idf_escape($K["name"]),create_routine($hg,array("name"=>$dh)+$K),"DROP $hg ".idf_escape($dh),substr(ME,0,-1),lang(204),lang(205),lang(206),$da,$K["name"]);}page_header(($da!=""?(isset($_GET["function"])?lang(207):lang(208)).": ".h($da):(isset($_GET["function"])?lang(209):lang(210))),$n);if(!$_POST&&$da!=""){$K=routine($da,$hg);$K["name"]=$da;}$nb=get_vals("SHOW CHARACTER SET");sort($nb);$ig=routine_languages();echo'
2012-06-04 14:58:40 +00:00
<form action="" method="post" id="form">
2016-06-08 18:32:06 -06:00
<p>',lang(172),': <input name="name" value="',h($K["name"]),'" maxlength="64" autocapitalize="off">
2016-06-08 18:38:27 -06:00
',($ig?lang(19).": ".adminer_html_select("language",$ig,$K["language"]):""),'<input type="submit" value="',lang(14),'">
2014-04-27 06:39:48 +00:00
<table cellspacing="0" class="nowrap">
2016-06-08 18:32:06 -06:00
';edit_fields($K["fields"],$nb,$hg);if(isset($_GET["function"])){echo"<tr><td>".lang(211);edit_type("returns",$K["returns"],$nb);}echo'</table>
2014-04-27 06:39:48 +00:00
<p>';textarea("definition",$K["definition"]);echo'<p>
<input type="submit" value="',lang(14),'">
2016-06-08 18:32:06 -06:00
';if($da!=""){echo'<input type="submit" name="drop" value="',lang(117),'"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
2012-06-04 14:58:40 +00:00
</form>
2016-06-08 18:32:06 -06:00
';}elseif(isset($_GET["sequence"])){$fa=$_GET["sequence"];$K=$_POST;if($_POST&&!$n){$_=substr(ME,0,-1);$C=trim($K["name"]);if($_POST["drop"])query_redirect("DROP SEQUENCE ".idf_escape($fa),$_,lang(212));elseif($fa=="")query_redirect("CREATE SEQUENCE ".idf_escape($C),$_,lang(213));elseif($fa!=$C)query_redirect("ALTER SEQUENCE ".idf_escape($fa)." RENAME TO ".idf_escape($C),$_,lang(214));else
redirect($_);}page_header($fa!=""?lang(215).": ".h($fa):lang(216),$n);if(!$K)$K["name"]=$fa;echo'
2012-06-04 14:58:40 +00:00
<form action="" method="post">
2014-04-27 06:39:48 +00:00
<p><input name="name" value="',h($K["name"]),'" autocapitalize="off">
<input type="submit" value="',lang(14),'">
2016-06-08 18:32:06 -06:00
';if($fa!="")echo"<input type='submit' name='drop' value='".lang(117)."'".confirm().">\n";echo'<input type="hidden" name="token" value="',$T,'">
2012-06-04 14:58:40 +00:00
</form>
2016-06-08 18:32:06 -06:00
';}elseif(isset($_GET["type"])){$ga=$_GET["type"];$K=$_POST;if($_POST&&!$n){$_=substr(ME,0,-1);if($_POST["drop"])query_redirect("DROP TYPE ".idf_escape($ga),$_,lang(217));else
query_redirect("CREATE TYPE ".idf_escape(trim($K["name"]))." $K[as]",$_,lang(218));}page_header($ga!=""?lang(219).": ".h($ga):lang(220),$n);if(!$K)$K["as"]="AS ";echo'
2012-06-04 14:58:40 +00:00
<form action="" method="post">
<p>
2016-06-08 18:32:06 -06:00
';if($ga!="")echo"<input type='submit' name='drop' value='".lang(117)."'".confirm().">\n";else{echo"<input name='name' value='".h($K['name'])."' autocapitalize='off'>\n";textarea("as",$K["as"]);echo"<p><input type='submit' value='".lang(14)."'>\n";}echo'<input type="hidden" name="token" value="',$T,'">
2012-06-04 14:58:40 +00:00
</form>
2016-06-08 18:32:06 -06:00
';}elseif(isset($_GET["trigger"])){$a=$_GET["trigger"];$C=$_GET["name"];$yh=trigger_options();$K=(array)trigger($C)+array("Trigger"=>$a."_bi");if($_POST){if(!$n&&in_array($_POST["Timing"],$yh["Timing"])&&in_array($_POST["Event"],$yh["Event"])&&in_array($_POST["Type"],$yh["Type"])){$Le=" ON ".table($a);$Yb="DROP TRIGGER ".idf_escape($C).($w=="pgsql"?$Le:"");$A=ME."table=".urlencode($a);if($_POST["drop"])query_redirect($Yb,$A,lang(221));else{if($C!="")queries($Yb);queries_redirect($A,($C!=""?lang(222):lang(223)),queries(create_trigger($Le,$_POST)));if($C!="")queries(create_trigger($Le,$K+array("Type"=>reset($yh["Type"]))));}}$K=$_POST;}page_header(($C!=""?lang(224).": ".h($C):lang(225)),$n,array("table"=>$a));echo'
2012-06-04 14:58:40 +00:00
<form action="" method="post" id="form">
<table cellspacing="0">
2016-06-08 18:38:27 -06:00
<tr><th>',lang(226),'<td>',adminer_html_select("Timing",$yh["Timing"],$K["Timing"],"triggerChange(/^".preg_quote($a,"/")."_[ba][iud]$/, '".js_escape($a)."', this.form);"),'<tr><th>',lang(227),'<td>',adminer_html_select("Event",$yh["Event"],$K["Event"],"this.form['Timing'].onchange();"),(in_array("UPDATE OF",$yh["Event"])?" <input name='Of' value='".h($K["Of"])."' class='hidden'>":""),'<tr><th>',lang(93),'<td>',adminer_html_select("Type",$yh["Type"],$K["Type"]),'</table>
2016-06-08 18:32:06 -06:00
<p>',lang(172),': <input name="Trigger" value="',h($K["Trigger"]);?>" maxlength="64" autocapitalize="off">
2014-04-27 06:39:48 +00:00
<script type="text/javascript">document.getElementById('form')['Timing'].onchange();</script>
<p><?php textarea("Statement",$K["Statement"]);echo'<p>
<input type="submit" value="',lang(14),'">
2016-06-08 18:32:06 -06:00
';if($C!=""){echo'<input type="submit" name="drop" value="',lang(117),'"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
2012-06-04 14:58:40 +00:00
</form>
2016-06-08 18:32:06 -06:00
';}elseif(isset($_GET["user"])){$ha=$_GET["user"];$Gf=array(""=>array("All privileges"=>""));foreach(get_rows("SHOW PRIVILEGES")as$K){foreach(explode(",",($K["Privilege"]=="Grant option"?"":$K["Context"]))as$yb)$Gf[$yb][$K["Privilege"]]=$K["Comment"];}$Gf["Server Admin"]+=$Gf["File access on server"];$Gf["Databases"]["Create routine"]=$Gf["Procedures"]["Create routine"];unset($Gf["Procedures"]["Create routine"]);$Gf["Columns"]=array();foreach(array("Select","Insert","Update","References")as$X)$Gf["Columns"][$X]=$Gf["Tables"][$X];unset($Gf["Server Admin"]["Usage"]);foreach($Gf["Tables"]as$x=>$X)unset($Gf["Databases"][$x]);$ye=array();if($_POST){foreach($_POST["objects"]as$x=>$X)$ye[$X]=(array)$ye[$X]+(array)$_POST["grants"][$x];}$Wc=array();$Je="";if(isset($_GET["host"])&&($I=$h->query("SHOW GRANTS FOR ".q($ha)."@".q($_GET["host"])))){while($K=$I->fetch_row()){if(preg_match('~GRANT (.*) ON (.*) TO ~',$K[0],$B)&&preg_match_all('~ *([^(,]*[^ ,(])( *\\([^)]+\\))?~',$B[1],$de,PREG_SET_ORDER)){foreach($de
as$X){if($X[1]!="USAGE")$Wc["$B[2]$X[2]"][$X[1]]=true;if(preg_match('~ WITH GRANT OPTION~',$K[0]))$Wc["$B[2]$X[2]"]["GRANT OPTION"]=true;}}if(preg_match("~ IDENTIFIED BY PASSWORD '([^']+)~",$K[0],$B))$Je=$B[1];}}if($_POST&&!$n){$Ke=(isset($_GET["host"])?q($ha)."@".q($_GET["host"]):"''");if($_POST["drop"])query_redirect("DROP USER $Ke",ME."privileges=",lang(228));else{$_e=q($_POST["user"])."@".q($_POST["host"]);$pf=$_POST["pass"];if($pf!=''&&!$_POST["hashed"]){$pf=$h->result("SELECT PASSWORD(".q($pf).")");$n=!$pf;}$Cb=false;if(!$n){if($Ke!=$_e){$Cb=queries(($h->server_info<5?"GRANT USAGE ON *.* TO":"CREATE USER")." $_e IDENTIFIED BY PASSWORD ".q($pf));$n=!$Cb;}elseif($pf!=$Je)queries("SET PASSWORD FOR $_e = ".q($pf));}if(!$n){$eg=array();foreach($ye
as$Ee=>$Vc){if(isset($_GET["grant"]))$Vc=array_filter($Vc);$Vc=array_keys($Vc);if(isset($_GET["grant"]))$eg=array_diff(array_keys(array_filter($ye[$Ee],'strlen')),$Vc);elseif($Ke==$_e){$He=array_keys((array)$Wc[$Ee]);$eg=array_diff($He,$Vc);$Vc=array_diff($Vc,$He);unset($Wc[$Ee]);}if(preg_match('~^(.+)\\s*(\\(.*\\))?$~U',$Ee,$B)&&(!grant("REVOKE",$eg,$B[2]," ON $B[1] FROM $_e")||!grant("GRANT",$Vc,$B[2]," ON $B[1] TO $_e"))){$n=true;break;}}}if(!$n&&isset($_GET["host"])){if($Ke!=$_e)queries("DROP USER $Ke");elseif(!isset($_GET["grant"])){foreach($Wc
as$Ee=>$eg){if(preg_match('~^(.+)(\\(.*\\))?$~U',$Ee,$B))grant("REVOKE",array_keys($eg),$B[2]," ON $B[1] FROM $_e");}}}queries_redirect(ME."privileges=",(isset($_GET["host"])?lang(229):lang(230)),!$n);if($Cb)$h->query("DROP USER $_e");}}page_header((isset($_GET["host"])?lang(33).": ".h("$ha@$_GET[host]"):lang(136)),$n,array("privileges"=>array('',lang(64))));if($_POST){$K=$_POST;$Wc=$ye;}else{$K=$_GET+array("host"=>$h->result("SELECT SUBSTRING_INDEX(CURRENT_USER, '@', -1)"));$K["pass"]=$Je;if($Je!="")$K["hashed"]=true;$Wc[(DB==""||$Wc?"":idf_escape(addcslashes(DB,"%_\\"))).".*"]=array();}echo'<form action="" method="post">
2012-06-04 14:58:40 +00:00
<table cellspacing="0">
2014-04-27 06:39:48 +00:00
<tr><th>',lang(32),'<td><input name="host" maxlength="60" value="',h($K["host"]),'" autocapitalize="off">
<tr><th>',lang(33),'<td><input name="user" maxlength="16" value="',h($K["user"]),'" autocapitalize="off">
<tr><th>',lang(34),'<td><input name="pass" id="pass" value="',h($K["pass"]),'">
';if(!$K["hashed"]){echo'<script type="text/javascript">typePassword(document.getElementById(\'pass\'));</script>';}echo
2016-06-08 18:32:06 -06:00
checkbox("hashed",1,$K["hashed"],lang(231),"typePassword(this.form['pass'], this.checked);"),'</table>
2012-06-04 14:58:40 +00:00
2016-06-08 18:32:06 -06:00
';echo"<table cellspacing='0'>\n","<thead><tr><th colspan='2'>".lang(64).doc_link(array('sql'=>"grant.html#priv_level"));$s=0;foreach($Wc
as$Ee=>$Vc){echo'<th>'.($Ee!="*.*"?"<input name='objects[$s]' value='".h($Ee)."' size='10' autocapitalize='off'>":"<input type='hidden' name='objects[$s]' value='*.*' size='10'>*.*");$s++;}echo"</thead>\n";foreach(array(""=>"","Server Admin"=>lang(32),"Databases"=>lang(35),"Tables"=>lang(120),"Columns"=>lang(121),"Procedures"=>lang(232),)as$yb=>$Ob){foreach((array)$Gf[$yb]as$Ff=>$rb){echo"<tr".odd()."><td".($Ob?">$Ob<td":" colspan='2'").' lang="en" title="'.h($rb).'">'.h($Ff);$s=0;foreach($Wc
as$Ee=>$Vc){$C="'grants[$s][".h(strtoupper($Ff))."]'";$Y=$Vc[strtoupper($Ff)];if($yb=="Server Admin"&&$Ee!=(isset($Wc["*.*"])?"*.*":".*"))echo"<td> ";elseif(isset($_GET["grant"]))echo"<td><select name=$C><option><option value='1'".($Y?" selected":"").">".lang(233)."<option value='0'".($Y=="0"?" selected":"").">".lang(234)."</select>";else
echo"<td align='center'><label class='block'><input type='checkbox' name=$C value='1'".($Y?" checked":"").($Ff=="All privileges"?" id='grants-$s-all'":($Ff=="Grant option"?"":" onclick=\"if (this.checked) formUncheck('grants-$s-all');\""))."></label>";$s++;}}}echo"</table>\n",'<p>
2014-04-27 06:39:48 +00:00
<input type="submit" value="',lang(14),'">
2016-06-08 18:32:06 -06:00
';if(isset($_GET["host"])){echo'<input type="submit" name="drop" value="',lang(117),'"',confirm(),'>';}echo'<input type="hidden" name="token" value="',$T,'">
2012-06-04 14:58:40 +00:00
</form>
2016-06-08 18:32:06 -06:00
';}elseif(isset($_GET["processlist"])){if(support("kill")&&$_POST&&!$n){$Md=0;foreach((array)$_POST["kill"]as$X){if(kill_process($X))$Md++;}queries_redirect(ME."processlist=",lang(235,$Md),$Md||!$_POST["kill"]);}page_header(lang(106),$n);echo'
2012-06-04 14:58:40 +00:00
<form action="" method="post">
2013-07-27 15:43:34 +00:00
<table cellspacing="0" onclick="tableClick(event);" ondblclick="tableClick(event, true);" class="nowrap checkable">
2015-04-14 21:38:33 +00:00
';$s=-1;foreach(process_list()as$s=>$K){if(!$s){echo"<thead><tr lang='en'>".(support("kill")?"<th> ":"");foreach($K
2016-06-08 18:32:06 -06:00
as$x=>$X)echo"<th>$x".doc_link(array('sql'=>"show-processlist.html#processlist_".strtolower($x),'pgsql'=>"monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",'oracle'=>"../b14237/dynviews_2088.htm",));echo"</thead>\n";}echo"<tr".odd().">".(support("kill")?"<td>".checkbox("kill[]",$K[$w=="sql"?"Id":"pid"],0):"");foreach($K
as$x=>$X)echo"<td>".(($w=="sql"&&$x=="Info"&&preg_match("~Query|Killed~",$K["Command"])&&$X!="")||($w=="pgsql"&&$x=="current_query"&&$X!="<IDLE>")||($w=="oracle"&&$x=="sql_text"&&$X!="")?"<code class='jush-$w'>".shorten_utf8($X,100,"</code>").' <a href="'.h(ME.($K["db"]!=""?"db=".urlencode($K["db"])."&":"")."sql=".urlencode($X)).'">'.lang(236).'</a>':nbsp($X));echo"\n";}echo'</table>
2013-07-27 15:43:34 +00:00
<script type=\'text/javascript\'>tableCheck();</script>
<p>
2016-06-08 18:32:06 -06:00
';if(support("kill")){echo($s+1)."/".lang(237,max_connections()),"<p><input type='submit' value='".lang(238)."'>\n";}echo'<input type="hidden" name="token" value="',$T,'">
2012-06-04 14:58:40 +00:00
</form>
2016-06-08 18:32:06 -06:00
';}elseif(isset($_GET["select"])){$a=$_GET["select"];$R=table_status1($a);$v=indexes($a);$p=fields($a);$Oc=column_foreign_keys($a);$Ge="";if($R["Oid"]){$Ge=($w=="sqlite"?"rowid":"oid");$v[]=array("type"=>"PRIMARY","columns"=>array($Ge));}parse_str($_COOKIE["adminer_import"],$ya);$fg=array();$f=array();$hh=null;foreach($p
as$x=>$o){$C=$b->fieldName($o);if(isset($o["privileges"]["select"])&&$C!=""){$f[$x]=html_entity_decode(strip_tags($C),ENT_QUOTES);if(is_shortable($o))$hh=$b->selectLengthProcess();}$fg+=$o["privileges"];}list($M,$Xc)=$b->selectColumnsProcess($f,$v);$Ad=count($Xc)<count($M);$Z=$b->selectSearchProcess($p,$v);$We=$b->selectOrderProcess($p,$v);$z=$b->selectLimitProcess();$Tc=($M?implode(", ",$M):"*".($Ge?", $Ge":"")).convert_fields($f,$p,$M)."\nFROM ".table($a);$Yc=($Xc&&$Ad?"\nGROUP BY ".implode(", ",$Xc):"").($We?"\nORDER BY ".implode(", ",$We):"");if($_GET["val"]&&is_ajax()){header("Content-Type: text/plain; charset=utf-8");foreach($_GET["val"]as$Fh=>$K){$Ga=convert_field($p[key($K)]);$M=array($Ga?$Ga:idf_escape(key($K)));$Z[]=where_check($Fh,$p);$J=$Wb->select($a,$M,$Z,$M);if($J)echo
reset($J->fetch_row());}exit;}if($_POST&&!$n){$ci=$Z;if(!$_POST["all"]&&is_array($_POST["check"])){$eb=array();foreach($_POST["check"]as$bb)$eb[]=where_check($bb,$p);$ci[]="((".implode(") OR (",$eb)."))";}$ci=($ci?"\nWHERE ".implode(" AND ",$ci):"");$Bf=$Hh=null;foreach($v
as$u){if($u["type"]=="PRIMARY"){$Bf=array_flip($u["columns"]);$Hh=($M?$Bf:array());break;}}foreach((array)$Hh
2015-04-14 21:38:33 +00:00
as$x=>$X){if(in_array(idf_escape($x),$M))unset($Hh[$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"])||$Hh===array())$H="SELECT $Tc$ci$Yc";else{$Dh=array();foreach($_POST["check"]as$X)$Dh[]="(SELECT".limit($Tc,"\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$p).$Yc,1).")";$H=implode(" UNION ALL ",$Dh);}$b->dumpData($a,"table",$H);exit;}if(!$b->selectEmailProcess($Z,$Oc)){if($_POST["save"]||$_POST["delete"]){$I=true;$za=0;$O=array();if(!$_POST["delete"]){foreach($f
2016-06-08 18:32:06 -06:00
as$C=>$X){$X=process_input($p[$C]);if($X!==null&&($_POST["clone"]||$X!==false))$O[idf_escape($C)]=($X!==false?$X:idf_escape($C));}}if($_POST["delete"]||$O){if($_POST["clone"])$H="INTO ".table($a)." (".implode(", ",array_keys($O)).")\nSELECT ".implode(", ",$O)."\nFROM ".table($a);if($_POST["all"]||($Hh===array()&&is_array($_POST["check"]))||$Ad){$I=($_POST["delete"]?$Wb->delete($a,$ci):($_POST["clone"]?queries("INSERT $H$ci"):$Wb->update($a,$O,$ci)));$za=$h->affected_rows;}else{foreach((array)$_POST["check"]as$X){$bi="\nWHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($X,$p);$I=($_POST["delete"]?$Wb->delete($a,$bi,1):($_POST["clone"]?queries("INSERT".limit1($H,$bi)):$Wb->update($a,$O,$bi)));if(!$I)break;$za+=$h->affected_rows;}}}$le=lang(239,$za);if($_POST["clone"]&&$I&&$za==1){$Rd=last_id();if($Rd)$le=lang(158," $Rd");}queries_redirect(remove_from_uri($_POST["all"]&&$_POST["delete"]?"page":""),$le,$I);if(!$_POST["delete"]){edit_form($a,$p,(array)$_POST["fields"],!$_POST["clone"]);page_footer();exit;}}elseif(!$_POST["import"]){if(!$_POST["val"])$n=lang(240);else{$I=true;$za=0;foreach($_POST["val"]as$Fh=>$K){$O=array();foreach($K
as$x=>$X){$x=bracket_escape($x,1);$O[idf_escape($x)]=(preg_match('~char|text~',$p[$x]["type"])||$X!=""?$b->processInput($p[$x],$X):"NULL");}$I=$Wb->update($a,$O," WHERE ".($Z?implode(" AND ",$Z)." AND ":"").where_check($Fh,$p),!($Ad||$Hh===array())," ");if(!$I)break;$za+=$h->affected_rows;}queries_redirect(remove_from_uri(),lang(239,$za),$I);}}elseif(!is_string($Hc=get_file("csv_file",true)))$n=upload_error($Hc);elseif(!preg_match('~~u',$Hc))$n=lang(241);else{cookie("adminer_import","output=".urlencode($ya["output"])."&format=".urlencode($_POST["separator"]));$I=true;$ob=array_keys($p);preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~',$Hc,$de);$za=count($de[0]);$Wb->begin();$ug=($_POST["separator"]=="csv"?",":($_POST["separator"]=="tsv"?"\t":";"));$L=array();foreach($de[0]as$x=>$X){preg_match_all("~((?>\"[^\"]*\")+|[^$ug]*)$ug~",$X.$ug,$ee);if(!$x&&!array_diff($ee[1],$ob)){$ob=$ee[1];$za--;}else{$O=array();foreach($ee[1]as$s=>$lb)$O[idf_escape($ob[$s])]=($lb==""&&$p[$ob[$s]]["null"]?"NULL":q(str_replace('""','"',preg_replace('~^"|"$~','',$lb))));$L[]=$O;}}$I=(!$L||$Wb->insertUpdate($a,$L,$Bf));if($I)$Wb->commit();queries_redirect(remove_from_uri("page"),lang(242,$za),$I);$Wb->rollback();}}}$Tg=$b->tableName($R);if(is_ajax()){page_headers();ob_start();}else
page_header(lang(45).": $Tg",$n);$O=null;if(isset($fg["insert"])||!support("table")){$O="";foreach((array)$_GET["where"]as$X){if(count($Oc[$X["col"]])==1&&($X["op"]=="="||(!$X["op"]&&!preg_match('~[_%]~',$X["val"]))))$O.="&set".urlencode("[".bracket_escape($X["col"])."]")."=".urlencode($X["val"]);}}$b->selectLinks($R,$O);if(!$f&&support("table"))echo"<p class='error'>".lang(243).($p?".":": ".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($M,$f);$b->selectSearchPrint($Z,$f,$v);$b->selectOrderPrint($We,$f,$v);$b->selectLimitPrint($z);$b->selectLengthPrint($hh);$b->selectActionPrint($v);echo"</form>\n";$E=$_GET["page"];if($E=="last"){$Rc=$h->result(count_rows($a,$Z,$Ad,$Xc));$E=floor(max(0,$Rc-1)/$z);}$rg=$M;if(!$rg){$rg[]="*";if($Ge)$rg[]=$Ge;}$zb=convert_fields($f,$p,$M);if($zb)$rg[]=substr($zb,2);$I=$Wb->select($a,$rg,$Z,$Xc,$We,$z,$E,true);if(!$I)echo"<p class='error'>".error()."\n";else{if($w=="mssql"&&$E)$I->seek($z*$E);$lc=array();echo"<form action='' method='post' enctype='multipart/form-data'>\n";$L=array();while($K=$I->fetch_assoc()){if($E&&$w=="oracle")unset($K["RNUM"]);$L[]=$K;}if($_GET["page"]!="last"&&+$z&&$Xc&&$Ad&&$w=="sql")$Rc=$h->result(" SELECT FOUND_ROWS()");if(!$L)echo"<p class='message'>".lang(12)."\n";else{$Pa=$b->backwardKeys($a,$Tg);echo"<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n","<thead><tr>".(!$Xc&&$M?"":"<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")."'>".lang(244)."</a>");$xe=array();$Uc=array();reset($M);$Pf=1;foreach($L[0]as$x=>$X){if($x!=$Ge){$X=$_GET["columns"][key($M)];$o=$p[$M?($X?$X["col"]:current($M)):$x];$C=($o?$b->fieldName($o,$Pf):($X["fun"]?"*":$x));if($C!=""){$Pf++;$xe[$x]=$C;$e=idf_escape($x);$id=remove_from_uri('(order|desc)[^=]*|page').'&order%5B0%5D='.urlencode($x);$Ob="&desc%5B0%5D=1";echo'<th onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' hidden\');">','<a href="'.h($id.($We[0]==$e||$We[0]==$x||(!$We&&$Ad&&$Xc[0]==$e)?$Ob:'')).'">';echo
2016-06-08 18:52:06 -06:00
apply_sql_function($X["fun"],$C)."</a>";echo"<span class='column hidden'>","<a href='".h($id.$Ob)."' title='".lang(51)."' class='text'> ↓</a>";if(!$X["fun"])echo'<a href="#fieldset-search" onclick="selectSearch(\''.h(js_escape($x)).'\'); return false;" title="'.lang(48).'" class="text jsonly"> =</a>';echo"</span>";}$Uc[$x]=$X["fun"];next($M);}}$Wd=array();if($_GET["modify"]){foreach($L
2014-04-27 06:39:48 +00:00
as$K){foreach($K
2016-06-08 18:32:06 -06:00
as$x=>$X)$Wd[$x]=max($Wd[$x],min(40,strlen(utf8_decode($X))));}}echo($Pa?"<th>".lang(245):"")."</thead>\n";if(is_ajax()){if($z%2==1&&$E%2==1)odd();ob_end_clean();}foreach($b->rowDescriptions($L,$Oc)as$we=>$K){$Eh=unique_array($L[$we],$v);if(!$Eh){$Eh=array();foreach($L[$we]as$x=>$X){if(!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~',$x))$Eh[$x]=$X;}}$Fh="";foreach($Eh
as$x=>$X){if(($w=="sql"||$w=="pgsql")&&strlen($X)>64){$x=(strpos($x,'(')?$x:idf_escape($x));$x="MD5(".($w=='sql'&&preg_match("~^utf8_~",$p[$x]["collation"])?$x:"CONVERT($x USING ".charset($h).")").")";$X=md5($X);}$Fh.="&".($X!==null?urlencode("where[".bracket_escape($x)."]")."=".urlencode($X):"null%5B%5D=".urlencode($x));}echo"<tr".odd().">".(!$Xc&&$M?"":"<td>".checkbox("check[]",substr($Fh,1),in_array(substr($Fh,1),(array)$_POST["check"]),"","this.form['all'].checked = false; formUncheck('all-page');").($Ad||information_schema(DB)?"":" <a href='".h(ME."edit=".urlencode($a).$Fh)."'>".lang(246)."</a>"));foreach($K
as$x=>$X){if(isset($xe[$x])){$o=$p[$x];if($X!=""&&(!isset($lc[$x])||$lc[$x]!=""))$lc[$x]=(is_mail($X)?$xe[$x]:"");$_="";if(preg_match('~blob|bytea|raw|file~',$o["type"])&&$X!="")$_=ME.'download='.urlencode($a).'&field='.urlencode($x).$Fh;if(!$_&&$X!==null){foreach((array)$Oc[$x]as$q){if(count($Oc[$x])==1||end($q["source"])==$x){$_="";foreach($q["source"]as$s=>$Dg)$_.=where_link($s,$q["target"][$s],$L[$we][$Dg]);$_=($q["db"]!=""?preg_replace('~([?&]db=)[^&]+~','\\1'.urlencode($q["db"]),ME):ME).'select='.urlencode($q["table"]).$_;if(count($q["source"])==1)break;}}}if($x=="COUNT(*)"){$_=ME."select=".urlencode($a);$s=0;foreach((array)$_GET["where"]as$W){if(!array_key_exists($W["col"],$Eh))$_.=where_link($s++,$W["col"],$W["val"],$W["op"]);}foreach($Eh
as$Gd=>$W)$_.=where_link($s++,$Gd,$W);}$X=select_value($X,$_,$o,$hh);$jd=h("val[$Fh][".bracket_escape($x)."]");$Y=$_POST["val"][$Fh][bracket_escape($x)];$gc=!is_array($K[$x])&&is_utf8($X)&&$L[$we][$x]==$K[$x]&&!$Uc[$x];$gh=preg_match('~text|lob~',$o["type"]);if(($_GET["modify"]&&$gc)||$Y!==null){$ad=h($Y!==null?$Y:$K[$x]);echo"<td>".($gh?"<textarea name='$jd' cols='30' rows='".(substr_count($K[$x],"\n")+1)."'>$ad</textarea>":"<input name='$jd' value='$ad' size='$Wd[$x]'>");}else{$ae=strpos($X,"<i>...</i>");echo"<td id='$jd' onclick=\"selectClick(this, event, ".($ae?2:($gh?1:0)).($gc?"":", '".h(lang(247))."'").");\">$X";}}}if($Pa)echo"<td>";$b->backwardKeysPrint($Pa,$L[$we]);echo"</tr>\n";}if(is_ajax())exit;echo"</table>\n";}if(($L||$E)&&!is_ajax()){$vc=true;if($_GET["page"]!="last"){if(!+$z)$Rc=count($L);elseif($w!="sql"||!$Ad){$Rc=($Ad?false:found_rows($R,$Z));if($Rc<max(1e4,2*($E+1)*$z))$Rc=reset(slow_query(count_rows($a,$Z,$Ad,$Xc)));else$vc=false;}}if(+$z&&($Rc===false||$Rc>$z||$E)){echo"<p class='pages'>";$ge=($Rc===false?$E+(count($L)>=$z?2:1):floor(($Rc-1)/$z));if($w!="simpledb"){echo'<a href="'.h(remove_from_uri("page"))."\" onclick=\"pageClick(this.href, +prompt('".lang(248)."', '".($E+1)."'), event); return false;\">".lang(248)."</a>:",pagination(0,$E).($E>5?" ...":"");for($s=max(1,$E-4);$s<min($ge,$E+5);$s++)echo
pagination($s,$E);if($ge>0){echo($E+5<$ge?" ...":""),($vc&&$Rc!==false?pagination($ge,$E):" <a href='".h(remove_from_uri("page")."&page=last")."' title='~$ge'>".lang(249)."</a>");}echo(($Rc===false?count($L)+1:$Rc-$E*$z)>$z?' <a href="'.h(remove_from_uri("page")."&page=".($E+1)).'" onclick="return !selectLoadMore(this, '.(+$z).', \''.lang(250).'...\');" class="loadmore">'.lang(251).'</a>':'');}else{echo
lang(248).":",pagination(0,$E).($E>1?" ...":""),($E?pagination($E,$E):""),($ge>$E?pagination($E+1,$E).($ge>$E+1?" ...":""):"");}}echo"<p class='count'>\n",($Rc!==false?"(".($vc?"":"~ ").lang(140,$Rc).") ":"");$Tb=($vc?"":"~ ").$Rc;echo
checkbox("all",1,0,lang(252),"var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$Tb' : checked); selectCount('selected2', this.checked || !checked ? '$Tb' : checked);")."\n";if($b->selectCommandPrint()){echo'<fieldset',($_GET["modify"]?'':' class="jsonly"'),'><legend>',lang(244),'</legend><div>
<input type="submit" value="',lang(14),'"',($_GET["modify"]?'':' title="'.lang(240).'"'),'>
2014-04-27 06:39:48 +00:00
</div></fieldset>
2016-06-08 18:32:06 -06:00
<fieldset><legend>',lang(116),' <span id="selected"></span></legend><div>
2014-04-27 06:39:48 +00:00
<input type="submit" name="edit" value="',lang(10),'">
2016-06-08 18:32:06 -06:00
<input type="submit" name="clone" value="',lang(236),'">
2014-04-27 06:39:48 +00:00
<input type="submit" name="delete" value="',lang(18),'"',confirm(),'>
2012-06-04 14:58:40 +00:00
</div></fieldset>
2016-06-08 18:38:27 -06:00
';}$Pc=$b->dumpFormat();foreach((array)$_GET["columns"]as$e){if($e["fun"]){unset($Pc['sql']);break;}}if($Pc){print_fieldset("export",lang(66)." <span id='selected2'></span>");$gf=$b->dumpOutput();echo($gf?adminer_html_select("output",$gf,$ya["output"])." ":""),adminer_html_select("format",$Pc,$ya["format"])," <input type='submit' name='export' value='".lang(66)."'>\n","</div></fieldset>\n";}echo(!$Xc&&$M?"":"<script type='text/javascript'>tableCheck();</script>\n");}if($b->selectImportPrint()){print_fieldset("import",lang(65),!$L);echo"<input type='file' name='csv_file'> ",adminer_html_select("separator",array("csv"=>"CSV,","csv;"=>"CSV;","tsv"=>"TSV"),$ya["format"],1);echo" <input type='submit' name='import' value='".lang(65)."'>","</div></fieldset>\n";}$b->selectEmailPrint(array_filter($lc,'strlen'),$f);echo"<p><input type='hidden' name='token' value='$T'></p>\n","</form>\n";}}if(is_ajax()){ob_end_clean();exit;}}elseif(isset($_GET["variables"])){$Ig=isset($_GET["status"]);page_header($Ig?lang(108):lang(107));$Uh=($Ig?show_status():show_variables());if(!$Uh)echo"<p class='message'>".lang(12)."\n";else{echo"<table cellspacing='0'>\n";foreach($Uh
2015-04-14 21:38:33 +00:00
as$x=>$X){echo"<tr>","<th><code class='jush-".$w.($Ig?"status":"set")."'>".h($x)."</code>","<td>".nbsp($X);}echo"</table>\n";}}elseif(isset($_GET["script"])){header("Content-Type: text/javascript; charset=utf-8");if($_GET["script"]=="db"){$Qg=array("Data_length"=>0,"Index_length"=>0,"Data_free"=>0);foreach(table_status()as$C=>$R){json_row("Comment-$C",nbsp($R["Comment"]));if(!is_view($R)){foreach(array("Engine","Collation")as$x)json_row("$x-$C",nbsp($R[$x]));foreach($Qg+array("Auto_increment"=>0,"Rows"=>0)as$x=>$X){if($R[$x]!=""){$X=format_number($R[$x]);json_row("$x-$C",($x=="Rows"&&$X&&$R["Engine"]==($Fg=="pgsql"?"table":"InnoDB")?"~ $X":$X));if(isset($Qg[$x]))$Qg[$x]+=($R["Engine"]!="InnoDB"||$x!="Data_free"?$R[$x]:0);}elseif(array_key_exists($x,$R))json_row("$x-$C");}}}foreach($Qg
2016-06-08 18:32:06 -06:00
as$x=>$X)json_row("sum-$x",format_number($X));json_row("");}elseif($_GET["script"]=="kill")$h->query("KILL ".number($_POST["kill"]));else{foreach(count_tables($b->databases())as$m=>$X){json_row("tables-$m",$X);json_row("size-$m",db_size($m));}json_row("");}exit;}else{$Zg=array_merge((array)$_POST["tables"],(array)$_POST["views"]);if($Zg&&!$n&&!$_POST["search"]){$I=true;$le="";if($w=="sql"&&count($_POST["tables"])>1&&($_POST["drop"]||$_POST["truncate"]||$_POST["copy"]))queries("SET foreign_key_checks = 0");if($_POST["truncate"]){if($_POST["tables"])$I=truncate_tables($_POST["tables"]);$le=lang(253);}elseif($_POST["move"]){$I=move_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$le=lang(254);}elseif($_POST["copy"]){$I=copy_tables((array)$_POST["tables"],(array)$_POST["views"],$_POST["target"]);$le=lang(255);}elseif($_POST["drop"]){if($_POST["views"])$I=drop_views($_POST["views"]);if($I&&$_POST["tables"])$I=drop_tables($_POST["tables"]);$le=lang(256);}elseif($w!="sql"){$I=($w=="sqlite"?queries("VACUUM"):apply_queries("VACUUM".($_POST["optimize"]?"":" ANALYZE"),$_POST["tables"]));$le=lang(257);}elseif(!$_POST["tables"])$le=lang(9);elseif($I=queries(($_POST["optimize"]?"OPTIMIZE":($_POST["check"]?"CHECK":($_POST["repair"]?"REPAIR":"ANALYZE")))." TABLE ".implode(", ",array_map('idf_escape',$_POST["tables"])))){while($K=$I->fetch_assoc())$le.="<b>".h($K["Table"])."</b>: ".h($K["Msg_text"])."<br>";}queries_redirect(substr(ME,0,-1),$le,$I);}page_header(($_GET["ns"]==""?lang(35).": ".h(DB):lang(69).": ".h($_GET["ns"])),$n,true);if($b->homepage()){if($_GET["ns"]!==""){echo"<h3 id='tables-views'>".lang(258)."</h3>\n";$Yg=tables_list();if(!$Yg)echo"<p class='message'>".lang(9)."\n";else{echo"<form action='' method='post'>\n";if(support("table")){echo"<fieldset><legend>".lang(259)." <span id='selected2'></span></legend><div>","<input type='search' name='query' value='".h($_POST["query"])."'> <input type='submit' name='search' value='".lang(48)."'>\n","</div></fieldset>\n";if($_POST["search"]&&$_POST["query"]!="")search_tables();}echo"<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n",'<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);">';$Ub=doc_link(array('sql'=>'show-table-status.html'));echo'<th>'.lang(120),'<td>'.lang(260).doc_link(array('sql'=>'storage-engines.html')),'<td>'.lang(112).doc_link(array('sql'=>'charset-mysql.html')),'<td>'.lang(261).$Ub,'<td>'.lang(262).$Ub,'<td>'.lang(263).$Ub,'<td>'.lang(57).doc_link(array('sql'=>'example-auto-increment.html')),'<td>'.lang(264).$Ub,(support("comment")?'<td>'.lang(97).$Ub:''),"</thead>\n";$S=0;foreach($Yg
2016-06-08 18:38:27 -06:00
as$C=>$U){$Xh=($U!==null&&!preg_match('~table~i',$U));echo'<tr'.odd().'><td>'.checkbox(($Xh?"views[]":"tables[]"),$C,in_array($C,$Zg,true),"","formUncheck('check-all');"),'<th>'.(support("table")||support("indexes")?'<a href="'.h(ME).'table='.urlencode($C).'" title="'.lang(40).'">'.h($C).'</a>':h($C));if($Xh){echo'<td colspan="6"><a href="'.h(ME)."view=".urlencode($C).'" title="'.lang(41).'">'.(preg_match('~materialized~i',$U)?lang(265):lang(119)).'</a>','<td align="right"><a href="'.h(ME)."select=".urlencode($C).'" title="'.lang(39).'">?</a>';}else{foreach(array("Engine"=>array(),"Collation"=>array(),"Data_length"=>array("create",lang(42)),"Index_length"=>array("indexes",lang(123)),"Data_free"=>array("edit",lang(43)),"Auto_increment"=>array("auto_increment=1&create",lang(42)),"Rows"=>array("select",lang(39)),)as$x=>$_){$jd=" id='$x-".h($C)."'";echo($_?"<td align='right'>".(support("table")||$x=="Rows"||(support("indexes")&&$x!="Data_length")?"<a href='".h(ME."$_[0]=").urlencode($C)."'$jd title='$_[1]'>?</a>":"<span$jd>?</span>"):"<td id='$x-".h($C)."'> ");}$S++;}echo(support("comment")?"<td id='Comment-".h($C)."'> ":"");}echo"<tr><td> <th>".lang(237,count($Yg)),"<td>".nbsp($w=="sql"?$h->result("SELECT @@storage_engine"):""),"<td>".nbsp(db_collation(DB,collations()));foreach(array("Data_length","Index_length","Data_free")as$x)echo"<td align='right' id='sum-$x'> ";echo"</table>\n";if(!information_schema(DB)){$Rh="<input type='submit' value='".lang(266)."'".on_help("'VACUUM'")."> ";$Se="<input type='submit' name='optimize' value='".lang(267)."'".on_help($w=="sql"?"'OPTIMIZE TABLE'":"'VACUUM OPTIMIZE'")."> ";echo"<fieldset><legend>".lang(116)." <span id='selected'></span></legend><div>".($w=="sqlite"?$Rh:($w=="pgsql"?$Rh.$Se:($w=="sql"?"<input type='submit' value='".lang(268)."'".on_help("'ANALYZE TABLE'")."> ".$Se."<input type='submit' name='check' value='".lang(269)."'".on_help("'CHECK TABLE'")."> "."<input type='submit' name='repair' value='".lang(270)."'".on_help("'REPAIR TABLE'")."> ":"")))."<input type='submit' name='truncate' value='".lang(271)."'".confirm().on_help($w=="sqlite"?"'DELETE'":"'TRUNCATE".($w=="pgsql"?"'":" TABLE'"))."> "."<input type='submit' name='drop' value='".lang(117)."'".confirm().on_help("'DROP TABLE'").">\n";$l=(support("scheme")?$b->schemas():$b->databases());if(count($l)!=1&&$w!="sqlite"){$m=(isset($_POST["target"])?$_POST["target"]:(support("scheme")?$_GET["ns"]:DB));echo"<p>".lang(272).": ",($l?adminer_html_select("target",$l,$m):'<input name="target" value="'.h($m).'" autocapitalize="off">')," <input type='submit' name='move' value='".lang(273)."'>",(support("copy")?" <input type='submit' name='copy' value='".lang(274)."'>":""),"\n";}echo"<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^(tables|views)\[/));".(support("table")?" selectCount('selected2', formChecked(this, /^tables\[/) || $S);":"")."\">\n";echo"<input type='hidden' name='token' value='$T'>\n","</div></fieldset>\n";}echo"</form>\n","<script type='text/javascript'>tableCheck();</script>\n";}echo'<p class="links"><a href="'.h(ME).'create=">'.lang(67)."</a>\n",(support("view")?'<a href="'.h(ME).'view=">'.lang(194)."</a>\n":""),(support("materializedview")?'<a href="'.h(ME).'view=&materialized=1">'.lang(275)."</a>\n":"");if(support("routine")){echo"<h3 id='routines'>".lang(133)."</h3>\n";$jg=routines();if($jg){echo"<table cellspacing='0'>\n",'<thead><tr><th>'.lang(172).'<td>'.lang(93).'<td>'.lang(211)."<td> </thead>\n";odd('');foreach($jg
2016-06-08 18:32:06 -06:00
as$K){echo'<tr'.odd().'>','<th><a href="'.h(ME).($K["ROUTINE_TYPE"]!="PROCEDURE"?'callf=':'call=').urlencode($K["ROUTINE_NAME"]).'">'.h($K["ROUTINE_NAME"]).'</a>','<td>'.h($K["ROUTINE_TYPE"]),'<td>'.h($K["DTD_IDENTIFIER"]),'<td><a href="'.h(ME).($K["ROUTINE_TYPE"]!="PROCEDURE"?'function=':'procedure=').urlencode($K["ROUTINE_NAME"]).'">'.lang(126)."</a>";}echo"</table>\n";}echo'<p class="links">'.(support("procedure")?'<a href="'.h(ME).'procedure=">'.lang(210).'</a>':'').'<a href="'.h(ME).'function=">'.lang(209)."</a>\n";}if(support("sequence")){echo"<h3 id='sequences'>".lang(276)."</h3>\n";$vg=get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");if($vg){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(172)."</thead>\n";odd('');foreach($vg
as$X)echo"<tr".odd()."><th><a href='".h(ME)."sequence=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".h(ME)."sequence='>".lang(216)."</a>\n";}if(support("type")){echo"<h3 id='user-types'>".lang(23)."</h3>\n";$Ph=types();if($Ph){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(172)."</thead>\n";odd('');foreach($Ph
as$X)echo"<tr".odd()."><th><a href='".h(ME)."type=".urlencode($X)."'>".h($X)."</a>\n";echo"</table>\n";}echo"<p class='links'><a href='".h(ME)."type='>".lang(220)."</a>\n";}if(support("event")){echo"<h3 id='events'>".lang(134)."</h3>\n";$L=get_rows("SHOW EVENTS");if($L){echo"<table cellspacing='0'>\n","<thead><tr><th>".lang(172)."<td>".lang(277)."<td>".lang(200)."<td>".lang(201)."<td></thead>\n";foreach($L
2016-06-08 18:52:06 -06:00
as$K){echo"<tr>","<th>".h($K["Name"]),"<td>".($K["Execute at"]?lang(278)."<td>".$K["Execute at"]:lang(202)." ".$K["Interval value"]." ".$K["Interval field"]."<td>$K[Starts]"),"<td>$K[Ends]",'<td><a href="'.h(ME).'event='.urlencode($K["Name"]).'">'.lang(126).'</a>';}echo"</table>\n";$tc=$h->result("SELECT @@event_scheduler");if($tc&&$tc!="ON")echo"<p class='error'><code class='jush-sqlset'>event_scheduler</code>: ".h($tc)."\n";}echo'<p class="links"><a href="'.h(ME).'event=">'.lang(199)."</a>\n";}if($Yg)echo"<script type='text/javascript'>ajaxSetHtml('".js_escape(ME)."script=db');</script>\n";}}}page_footer();