simpletool 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1707) hide show
  1. checksums.yaml +4 -4
  2. data/lib/simpletool.rb +46 -11
  3. data/lib/support/ftp/vsftpd.conf +152 -0
  4. data/lib/support/phpmyadmin/nginx.phpmyadmin.default +112 -0
  5. data/lib/support/phpmyadmin/phpmyadmin/CONTRIBUTING.md +25 -0
  6. data/lib/support/phpmyadmin/phpmyadmin/ChangeLog +312 -0
  7. data/lib/support/phpmyadmin/phpmyadmin/DCO +44 -0
  8. data/lib/support/phpmyadmin/phpmyadmin/LICENSE +340 -0
  9. data/lib/support/phpmyadmin/phpmyadmin/README +52 -0
  10. data/lib/support/phpmyadmin/phpmyadmin/RELEASE-DATE-4.4.8 +1 -0
  11. data/lib/support/phpmyadmin/phpmyadmin/browse_foreigners.php +61 -0
  12. data/lib/support/phpmyadmin/phpmyadmin/changelog.php +153 -0
  13. data/lib/support/phpmyadmin/phpmyadmin/chk_rel.php +27 -0
  14. data/lib/support/phpmyadmin/phpmyadmin/composer.json +30 -0
  15. data/lib/support/phpmyadmin/phpmyadmin/config.sample.inc.php +152 -0
  16. data/lib/support/phpmyadmin/phpmyadmin/db_central_columns.php +134 -0
  17. data/lib/support/phpmyadmin/phpmyadmin/db_create.php +141 -0
  18. data/lib/support/phpmyadmin/phpmyadmin/db_datadict.php +208 -0
  19. data/lib/support/phpmyadmin/phpmyadmin/db_designer.php +173 -0
  20. data/lib/support/phpmyadmin/phpmyadmin/db_events.php +26 -0
  21. data/lib/support/phpmyadmin/phpmyadmin/db_export.php +94 -0
  22. data/lib/support/phpmyadmin/phpmyadmin/db_import.php +25 -0
  23. data/lib/support/phpmyadmin/phpmyadmin/db_operations.php +291 -0
  24. data/lib/support/phpmyadmin/phpmyadmin/db_printview.php +175 -0
  25. data/lib/support/phpmyadmin/phpmyadmin/db_qbe.php +131 -0
  26. data/lib/support/phpmyadmin/phpmyadmin/db_routines.php +27 -0
  27. data/lib/support/phpmyadmin/phpmyadmin/db_search.php +63 -0
  28. data/lib/support/phpmyadmin/phpmyadmin/db_sql.php +45 -0
  29. data/lib/support/phpmyadmin/phpmyadmin/db_sql_autocomplete.php +24 -0
  30. data/lib/support/phpmyadmin/phpmyadmin/db_sql_format.php +18 -0
  31. data/lib/support/phpmyadmin/phpmyadmin/db_structure.php +345 -0
  32. data/lib/support/phpmyadmin/phpmyadmin/db_tracking.php +350 -0
  33. data/lib/support/phpmyadmin/phpmyadmin/db_triggers.php +25 -0
  34. data/lib/support/phpmyadmin/phpmyadmin/doc/Makefile +197 -0
  35. data/lib/support/phpmyadmin/phpmyadmin/doc/_ext/configext.py +188 -0
  36. data/lib/support/phpmyadmin/phpmyadmin/doc/conf.py +304 -0
  37. data/lib/support/phpmyadmin/phpmyadmin/doc/config.rst +2794 -0
  38. data/lib/support/phpmyadmin/phpmyadmin/doc/copyright.rst +50 -0
  39. data/lib/support/phpmyadmin/phpmyadmin/doc/credits.rst +657 -0
  40. data/lib/support/phpmyadmin/phpmyadmin/doc/developers.rst +12 -0
  41. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/config.doctree +0 -0
  42. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/copyright.doctree +0 -0
  43. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/credits.doctree +0 -0
  44. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/developers.doctree +0 -0
  45. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/environment.pickle +0 -0
  46. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/faq.doctree +0 -0
  47. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/glossary.doctree +0 -0
  48. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/import_export.doctree +0 -0
  49. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/index.doctree +0 -0
  50. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/intro.doctree +0 -0
  51. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/other.doctree +0 -0
  52. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/privileges.doctree +0 -0
  53. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/require.doctree +0 -0
  54. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/setup.doctree +0 -0
  55. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/transformations.doctree +0 -0
  56. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/user.doctree +0 -0
  57. data/lib/support/phpmyadmin/phpmyadmin/doc/doctrees/vendors.doctree +0 -0
  58. data/lib/support/phpmyadmin/phpmyadmin/doc/faq.rst +2112 -0
  59. data/lib/support/phpmyadmin/phpmyadmin/doc/glossary.rst +399 -0
  60. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_sources/config.txt +2794 -0
  61. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_sources/copyright.txt +50 -0
  62. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_sources/credits.txt +657 -0
  63. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_sources/developers.txt +12 -0
  64. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_sources/faq.txt +2112 -0
  65. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_sources/glossary.txt +399 -0
  66. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_sources/import_export.txt +27 -0
  67. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_sources/index.txt +32 -0
  68. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_sources/intro.txt +68 -0
  69. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_sources/other.txt +18 -0
  70. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_sources/privileges.txt +50 -0
  71. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_sources/require.txt +54 -0
  72. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_sources/setup.txt +543 -0
  73. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_sources/transformations.txt +138 -0
  74. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_sources/user.txt +10 -0
  75. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_sources/vendors.txt +35 -0
  76. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/ajax-loader.gif +0 -0
  77. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/basic.css +540 -0
  78. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/comment-bright.png +0 -0
  79. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/comment-close.png +0 -0
  80. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/comment.png +0 -0
  81. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/default.css +256 -0
  82. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/doctools.js +247 -0
  83. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/down-pressed.png +0 -0
  84. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/down.png +0 -0
  85. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/file.png +0 -0
  86. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/jquery.js +154 -0
  87. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/minus.png +0 -0
  88. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/plus.png +0 -0
  89. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/pygments.css +62 -0
  90. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/searchtools.js +560 -0
  91. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/sidebar.js +151 -0
  92. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/underscore.js +23 -0
  93. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/up-pressed.png +0 -0
  94. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/up.png +0 -0
  95. data/lib/support/phpmyadmin/phpmyadmin/doc/html/_static/websupport.js +808 -0
  96. data/lib/support/phpmyadmin/phpmyadmin/doc/html/config.html +5000 -0
  97. data/lib/support/phpmyadmin/phpmyadmin/doc/html/copyright.html +157 -0
  98. data/lib/support/phpmyadmin/phpmyadmin/doc/html/credits.html +714 -0
  99. data/lib/support/phpmyadmin/phpmyadmin/doc/html/developers.html +118 -0
  100. data/lib/support/phpmyadmin/phpmyadmin/doc/html/faq.html +1871 -0
  101. data/lib/support/phpmyadmin/phpmyadmin/doc/html/genindex.html +3807 -0
  102. data/lib/support/phpmyadmin/phpmyadmin/doc/html/glossary.html +618 -0
  103. data/lib/support/phpmyadmin/phpmyadmin/doc/html/import_export.html +148 -0
  104. data/lib/support/phpmyadmin/phpmyadmin/doc/html/index.html +210 -0
  105. data/lib/support/phpmyadmin/phpmyadmin/doc/html/intro.html +182 -0
  106. data/lib/support/phpmyadmin/phpmyadmin/doc/html/objects.inv +0 -0
  107. data/lib/support/phpmyadmin/phpmyadmin/doc/html/other.html +135 -0
  108. data/lib/support/phpmyadmin/phpmyadmin/doc/html/privileges.html +169 -0
  109. data/lib/support/phpmyadmin/phpmyadmin/doc/html/require.html +168 -0
  110. data/lib/support/phpmyadmin/phpmyadmin/doc/html/search.html +100 -0
  111. data/lib/support/phpmyadmin/phpmyadmin/doc/html/searchindex.js +1 -0
  112. data/lib/support/phpmyadmin/phpmyadmin/doc/html/setup.html +909 -0
  113. data/lib/support/phpmyadmin/phpmyadmin/doc/html/transformations.html +240 -0
  114. data/lib/support/phpmyadmin/phpmyadmin/doc/html/user.html +139 -0
  115. data/lib/support/phpmyadmin/phpmyadmin/doc/html/vendors.html +149 -0
  116. data/lib/support/phpmyadmin/phpmyadmin/doc/import_export.rst +27 -0
  117. data/lib/support/phpmyadmin/phpmyadmin/doc/index.rst +32 -0
  118. data/lib/support/phpmyadmin/phpmyadmin/doc/intro.rst +68 -0
  119. data/lib/support/phpmyadmin/phpmyadmin/doc/make.bat +242 -0
  120. data/lib/support/phpmyadmin/phpmyadmin/doc/other.rst +18 -0
  121. data/lib/support/phpmyadmin/phpmyadmin/doc/privileges.rst +50 -0
  122. data/lib/support/phpmyadmin/phpmyadmin/doc/require.rst +54 -0
  123. data/lib/support/phpmyadmin/phpmyadmin/doc/setup.rst +543 -0
  124. data/lib/support/phpmyadmin/phpmyadmin/doc/transformations.rst +138 -0
  125. data/lib/support/phpmyadmin/phpmyadmin/doc/user.rst +10 -0
  126. data/lib/support/phpmyadmin/phpmyadmin/doc/vendors.rst +35 -0
  127. data/lib/support/phpmyadmin/phpmyadmin/error_report.php +130 -0
  128. data/lib/support/phpmyadmin/phpmyadmin/examples/config.manyhosts.inc.php +51 -0
  129. data/lib/support/phpmyadmin/phpmyadmin/examples/openid.php +160 -0
  130. data/lib/support/phpmyadmin/phpmyadmin/examples/signon-script.php +37 -0
  131. data/lib/support/phpmyadmin/phpmyadmin/examples/signon.php +71 -0
  132. data/lib/support/phpmyadmin/phpmyadmin/examples/swekey.sample.conf +44 -0
  133. data/lib/support/phpmyadmin/phpmyadmin/export.php +480 -0
  134. data/lib/support/phpmyadmin/phpmyadmin/favicon.ico +0 -0
  135. data/lib/support/phpmyadmin/phpmyadmin/file_echo.php +81 -0
  136. data/lib/support/phpmyadmin/phpmyadmin/gis_data_editor.php +429 -0
  137. data/lib/support/phpmyadmin/phpmyadmin/import.php +770 -0
  138. data/lib/support/phpmyadmin/phpmyadmin/import_status.php +118 -0
  139. data/lib/support/phpmyadmin/phpmyadmin/index.php +701 -0
  140. data/lib/support/phpmyadmin/phpmyadmin/js/OpenStreetMap.js +126 -0
  141. data/lib/support/phpmyadmin/phpmyadmin/js/ajax.js +1031 -0
  142. data/lib/support/phpmyadmin/phpmyadmin/js/big_ints.js +67 -0
  143. data/lib/support/phpmyadmin/phpmyadmin/js/canvg/MIT-LICENSE.txt +22 -0
  144. data/lib/support/phpmyadmin/phpmyadmin/js/canvg/canvg.js +2509 -0
  145. data/lib/support/phpmyadmin/phpmyadmin/js/chart.js +664 -0
  146. data/lib/support/phpmyadmin/phpmyadmin/js/codemirror/LICENSE +19 -0
  147. data/lib/support/phpmyadmin/phpmyadmin/js/codemirror/addon/hint/show-hint.js +394 -0
  148. data/lib/support/phpmyadmin/phpmyadmin/js/codemirror/addon/hint/sql-hint.js +248 -0
  149. data/lib/support/phpmyadmin/phpmyadmin/js/codemirror/addon/runmode/runmode.js +72 -0
  150. data/lib/support/phpmyadmin/phpmyadmin/js/codemirror/lib/codemirror.js +8645 -0
  151. data/lib/support/phpmyadmin/phpmyadmin/js/codemirror/mode/javascript/javascript.js +692 -0
  152. data/lib/support/phpmyadmin/phpmyadmin/js/codemirror/mode/sql/sql.js +391 -0
  153. data/lib/support/phpmyadmin/phpmyadmin/js/codemirror/mode/xml/xml.js +384 -0
  154. data/lib/support/phpmyadmin/phpmyadmin/js/common.js +515 -0
  155. data/lib/support/phpmyadmin/phpmyadmin/js/config.js +798 -0
  156. data/lib/support/phpmyadmin/phpmyadmin/js/console.js +1032 -0
  157. data/lib/support/phpmyadmin/phpmyadmin/js/cross_framing_protection.js +10 -0
  158. data/lib/support/phpmyadmin/phpmyadmin/js/db_central_columns.js +200 -0
  159. data/lib/support/phpmyadmin/phpmyadmin/js/db_operations.js +157 -0
  160. data/lib/support/phpmyadmin/phpmyadmin/js/db_qbe.js +64 -0
  161. data/lib/support/phpmyadmin/phpmyadmin/js/db_search.js +239 -0
  162. data/lib/support/phpmyadmin/phpmyadmin/js/db_structure.js +391 -0
  163. data/lib/support/phpmyadmin/phpmyadmin/js/db_tracking.js +85 -0
  164. data/lib/support/phpmyadmin/phpmyadmin/js/doclinks.js +365 -0
  165. data/lib/support/phpmyadmin/phpmyadmin/js/error_report.js +340 -0
  166. data/lib/support/phpmyadmin/phpmyadmin/js/export.js +401 -0
  167. data/lib/support/phpmyadmin/phpmyadmin/js/functions.js +4579 -0
  168. data/lib/support/phpmyadmin/phpmyadmin/js/get_image.js.php +148 -0
  169. data/lib/support/phpmyadmin/phpmyadmin/js/get_scripts.js.php +62 -0
  170. data/lib/support/phpmyadmin/phpmyadmin/js/gis_data_editor.js +396 -0
  171. data/lib/support/phpmyadmin/phpmyadmin/js/import.js +167 -0
  172. data/lib/support/phpmyadmin/phpmyadmin/js/indexes.js +697 -0
  173. data/lib/support/phpmyadmin/phpmyadmin/js/jqplot/excanvas.js +1438 -0
  174. data/lib/support/phpmyadmin/phpmyadmin/js/jqplot/jquery.jqplot.js +11411 -0
  175. data/lib/support/phpmyadmin/phpmyadmin/js/jqplot/plugins/jqplot.barRenderer.js +801 -0
  176. data/lib/support/phpmyadmin/phpmyadmin/js/jqplot/plugins/jqplot.byteFormatter.js +46 -0
  177. data/lib/support/phpmyadmin/phpmyadmin/js/jqplot/plugins/jqplot.canvasAxisLabelRenderer.js +203 -0
  178. data/lib/support/phpmyadmin/phpmyadmin/js/jqplot/plugins/jqplot.canvasTextRenderer.js +449 -0
  179. data/lib/support/phpmyadmin/phpmyadmin/js/jqplot/plugins/jqplot.categoryAxisRenderer.js +679 -0
  180. data/lib/support/phpmyadmin/phpmyadmin/js/jqplot/plugins/jqplot.cursor.js +1108 -0
  181. data/lib/support/phpmyadmin/phpmyadmin/js/jqplot/plugins/jqplot.dateAxisRenderer.js +741 -0
  182. data/lib/support/phpmyadmin/phpmyadmin/js/jqplot/plugins/jqplot.highlighter.js +465 -0
  183. data/lib/support/phpmyadmin/phpmyadmin/js/jqplot/plugins/jqplot.pieRenderer.js +904 -0
  184. data/lib/support/phpmyadmin/phpmyadmin/js/jqplot/plugins/jqplot.pointLabels.js +377 -0
  185. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/MIT-LICENSE.txt +21 -0
  186. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/jquery-1.11.1.min.js +4 -0
  187. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/jquery-ui-1.11.2.min.js +13 -0
  188. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/jquery-ui-timepicker-addon.js +2223 -0
  189. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/jquery.ba-hashchange-1.3.js +390 -0
  190. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/jquery.cookie.js +91 -0
  191. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/jquery.debounce-1.0.5.js +71 -0
  192. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/jquery.event.drag-2.2.js +402 -0
  193. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/jquery.fullscreen.js +60 -0
  194. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/jquery.mousewheel.js +221 -0
  195. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/jquery.sortableTable.js +272 -0
  196. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/jquery.svg.js +1352 -0
  197. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/jquery.tablesorter.js +1033 -0
  198. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/jquery.uitablefilter.js +117 -0
  199. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/README +9 -0
  200. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/ajax/jsonp.js +89 -0
  201. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/ajax/load.js +75 -0
  202. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/ajax/parseJSON.js +51 -0
  203. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/ajax/parseXML.js +31 -0
  204. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/ajax/script.js +93 -0
  205. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/ajax/var/nonce.js +5 -0
  206. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/ajax/var/rquery.js +3 -0
  207. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/ajax/xhr.js +196 -0
  208. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/ajax.js +807 -0
  209. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/attributes/attr.js +271 -0
  210. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/attributes/classes.js +157 -0
  211. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/attributes/prop.js +134 -0
  212. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/attributes/support.js +62 -0
  213. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/attributes/val.js +178 -0
  214. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/attributes.js +11 -0
  215. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/callbacks.js +205 -0
  216. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/core/access.js +60 -0
  217. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/core/init.js +132 -0
  218. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/core/parseHTML.js +39 -0
  219. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/core/ready.js +152 -0
  220. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/core/var/rsingleTag.js +4 -0
  221. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/core.js +534 -0
  222. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/css/addGetHookIf.js +32 -0
  223. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/css/curCSS.js +117 -0
  224. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/css/defaultDisplay.js +69 -0
  225. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/css/hiddenVisibleSelectors.js +20 -0
  226. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/css/support.js +149 -0
  227. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/css/swap.js +28 -0
  228. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/css/var/cssExpand.js +3 -0
  229. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/css/var/isHidden.js +13 -0
  230. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/css/var/rmargin.js +3 -0
  231. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/css/var/rnumnonpx.js +5 -0
  232. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/css.js +504 -0
  233. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/data/accepts.js +21 -0
  234. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/data/support.js +25 -0
  235. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/data.js +335 -0
  236. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/deferred.js +150 -0
  237. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/deprecated.js +13 -0
  238. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/dimensions.js +50 -0
  239. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/effects/Tween.js +114 -0
  240. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/effects/animatedSelector.js +13 -0
  241. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/effects/support.js +55 -0
  242. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/effects.js +656 -0
  243. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/event/alias.js +39 -0
  244. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/event/support.js +26 -0
  245. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/event.js +1037 -0
  246. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/exports/amd.js +24 -0
  247. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/exports/global.js +32 -0
  248. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/intro.js +44 -0
  249. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/jquery.js +37 -0
  250. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/manipulation/_evalUrl.js +18 -0
  251. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/manipulation/support.js +76 -0
  252. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/manipulation/var/rcheckableType.js +3 -0
  253. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/manipulation.js +744 -0
  254. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/offset.js +211 -0
  255. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/outro.js +1 -0
  256. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/queue/delay.js +22 -0
  257. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/queue.js +142 -0
  258. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/selector-sizzle.js +14 -0
  259. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/selector.js +1 -0
  260. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/serialize.js +110 -0
  261. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/sizzle/dist/sizzle.js +2044 -0
  262. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/sizzle/dist/sizzle.min.js +3 -0
  263. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/sizzle/dist/sizzle.min.map +1 -0
  264. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/sizzle/test/data/empty.js +0 -0
  265. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/sizzle/test/data/mixed_sort.html +22 -0
  266. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/sizzle/test/data/testinit.js +136 -0
  267. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/sizzle/test/index.html +242 -0
  268. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/sizzle/test/jquery.js +9597 -0
  269. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/sizzle/test/unit/extending.js +95 -0
  270. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/sizzle/test/unit/selector.js +1149 -0
  271. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/sizzle/test/unit/utilities.js +169 -0
  272. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/support.js +58 -0
  273. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/traversing/findFilter.js +100 -0
  274. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/traversing/var/rneedsContext.js +6 -0
  275. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/traversing.js +200 -0
  276. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/var/class2type.js +4 -0
  277. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/var/concat.js +5 -0
  278. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/var/deletedIds.js +3 -0
  279. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/var/hasOwn.js +5 -0
  280. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/var/indexOf.js +5 -0
  281. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/var/pnum.js +3 -0
  282. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/var/push.js +5 -0
  283. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/var/rnotwhite.js +3 -0
  284. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/var/slice.js +5 -0
  285. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/var/strundefined.js +3 -0
  286. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/var/support.js +4 -0
  287. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/var/toString.js +5 -0
  288. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery/wrap.js +75 -0
  289. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/accordion.js +584 -0
  290. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/autocomplete.js +628 -0
  291. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/button.js +411 -0
  292. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/core.js +304 -0
  293. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/datepicker.js +2080 -0
  294. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/dialog.js +875 -0
  295. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/draggable.js +1128 -0
  296. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/droppable.js +413 -0
  297. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/effect-blind.js +90 -0
  298. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/effect-bounce.js +123 -0
  299. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/effect-clip.js +77 -0
  300. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/effect-drop.js +75 -0
  301. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/effect-explode.js +107 -0
  302. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/effect-fade.js +40 -0
  303. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/effect-fold.js +86 -0
  304. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/effect-highlight.js +60 -0
  305. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/effect-puff.js +60 -0
  306. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/effect-pulsate.js +73 -0
  307. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/effect-scale.js +89 -0
  308. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/effect-shake.js +84 -0
  309. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/effect-size.js +233 -0
  310. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/effect-slide.js +74 -0
  311. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/effect-transfer.js +57 -0
  312. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/effect.js +1301 -0
  313. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/menu.js +646 -0
  314. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/mouse.js +199 -0
  315. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/position.js +517 -0
  316. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/progressbar.js +159 -0
  317. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/resizable.js +1179 -0
  318. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/selectable.js +287 -0
  319. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/selectmenu.js +616 -0
  320. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/slider.js +699 -0
  321. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/sortable.js +1304 -0
  322. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/spinner.js +514 -0
  323. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/tabs.js +880 -0
  324. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/tooltip.js +461 -0
  325. data/lib/support/phpmyadmin/phpmyadmin/js/jquery/src/jquery-ui/widget.js +557 -0
  326. data/lib/support/phpmyadmin/phpmyadmin/js/keyhandler.js +145 -0
  327. data/lib/support/phpmyadmin/phpmyadmin/js/line_counts.php +523 -0
  328. data/lib/support/phpmyadmin/phpmyadmin/js/makegrid.js +1973 -0
  329. data/lib/support/phpmyadmin/phpmyadmin/js/menu-resizer.js +182 -0
  330. data/lib/support/phpmyadmin/phpmyadmin/js/messages.php +718 -0
  331. data/lib/support/phpmyadmin/phpmyadmin/js/multi_column_sort.js +81 -0
  332. data/lib/support/phpmyadmin/phpmyadmin/js/navigation.js +1505 -0
  333. data/lib/support/phpmyadmin/phpmyadmin/js/normalization.js +707 -0
  334. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/OpenLayers.js +2681 -0
  335. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/blank.gif +0 -0
  336. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/cloud-popup-relative.png +0 -0
  337. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/drag-rectangle-off.png +0 -0
  338. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/drag-rectangle-on.png +0 -0
  339. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/east-mini.png +0 -0
  340. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/layer-switcher-maximize.png +0 -0
  341. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/layer-switcher-minimize.png +0 -0
  342. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/marker-blue.png +0 -0
  343. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/marker-gold.png +0 -0
  344. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/marker-green.png +0 -0
  345. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/marker.png +0 -0
  346. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/measuring-stick-off.png +0 -0
  347. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/measuring-stick-on.png +0 -0
  348. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/north-mini.png +0 -0
  349. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/panning-hand-off.png +0 -0
  350. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/panning-hand-on.png +0 -0
  351. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/slider.png +0 -0
  352. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/south-mini.png +0 -0
  353. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/west-mini.png +0 -0
  354. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/zoom-minus-mini.png +0 -0
  355. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/zoom-plus-mini.png +0 -0
  356. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/zoom-world-mini.png +0 -0
  357. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/img/zoombar.png +0 -0
  358. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/README +12 -0
  359. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/Firebug/errorIcon.png +0 -0
  360. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/Firebug/firebug.css +209 -0
  361. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/Firebug/firebug.html +23 -0
  362. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/Firebug/firebug.js +674 -0
  363. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/Firebug/firebugx.js +9 -0
  364. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/Firebug/infoIcon.png +0 -0
  365. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/Firebug/license.txt +30 -0
  366. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/Firebug/readme.txt +13 -0
  367. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/Firebug/warningIcon.png +0 -0
  368. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/Gears/gears_init.js +88 -0
  369. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Ajax.js +678 -0
  370. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/BaseTypes/Bounds.js +681 -0
  371. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/BaseTypes/Class.js +116 -0
  372. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/BaseTypes/Element.js +251 -0
  373. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/BaseTypes/LonLat.js +190 -0
  374. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/BaseTypes/Pixel.js +125 -0
  375. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/BaseTypes/Size.js +85 -0
  376. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/BaseTypes.js +682 -0
  377. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Console.js +246 -0
  378. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/ArgParser.js +166 -0
  379. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/Attribution.js +97 -0
  380. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/Button.js +44 -0
  381. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/DragFeature.js +303 -0
  382. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/DragPan.js +94 -0
  383. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/DrawFeature.js +126 -0
  384. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/EditingToolbar.js +63 -0
  385. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/GetFeature.js +595 -0
  386. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/Graticule.js +373 -0
  387. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/KeyboardDefaults.js +127 -0
  388. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/LayerSwitcher.js +620 -0
  389. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/Measure.js +321 -0
  390. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/ModifyFeature.js +777 -0
  391. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/MouseDefaults.js +368 -0
  392. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/MousePosition.js +213 -0
  393. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/MouseToolbar.js +406 -0
  394. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/NavToolbar.js +55 -0
  395. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/Navigation.js +303 -0
  396. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/NavigationHistory.js +423 -0
  397. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/OverviewMap.js +720 -0
  398. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/Pan.js +86 -0
  399. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/PanPanel.js +63 -0
  400. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/PanZoom.js +246 -0
  401. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/PanZoomBar.js +396 -0
  402. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/Panel.js +371 -0
  403. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/Permalink.js +220 -0
  404. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/SLDSelect.js +570 -0
  405. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/Scale.js +99 -0
  406. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/ScaleLine.js +223 -0
  407. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/SelectFeature.js +613 -0
  408. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/Snapping.js +547 -0
  409. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/Split.js +498 -0
  410. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/TransformFeature.js +579 -0
  411. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/WMSGetFeatureInfo.js +524 -0
  412. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/WMTSGetFeatureInfo.js +442 -0
  413. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/ZoomBox.js +95 -0
  414. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/ZoomIn.js +35 -0
  415. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/ZoomOut.js +35 -0
  416. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/ZoomPanel.js +54 -0
  417. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control/ZoomToMaxExtent.js +40 -0
  418. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Control.js +368 -0
  419. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Events.js +855 -0
  420. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Feature/Vector.js +454 -0
  421. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Feature/WFS.js +80 -0
  422. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Feature.js +227 -0
  423. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Filter/Comparison.js +258 -0
  424. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Filter/FeatureId.js +81 -0
  425. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Filter/Logical.js +119 -0
  426. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Filter/Spatial.js +128 -0
  427. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Filter.js +68 -0
  428. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/ArcXML/Features.js +49 -0
  429. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/ArcXML.js +1028 -0
  430. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/Atom.js +727 -0
  431. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/CSWGetDomain/v2_0_2.js +243 -0
  432. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/CSWGetDomain.js +34 -0
  433. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/CSWGetRecords/v2_0_2.js +440 -0
  434. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/CSWGetRecords.js +34 -0
  435. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/Context.js +334 -0
  436. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/Filter/v1.js +426 -0
  437. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/Filter/v1_0_0.js +169 -0
  438. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/Filter/v1_1_0.js +182 -0
  439. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/Filter.js +115 -0
  440. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/GML/Base.js +578 -0
  441. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/GML/v2.js +193 -0
  442. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/GML/v3.js +462 -0
  443. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/GML.js +924 -0
  444. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/GPX.js +184 -0
  445. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/GeoJSON.js +716 -0
  446. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/GeoRSS.js +420 -0
  447. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/JSON.js +389 -0
  448. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/KML.js +1429 -0
  449. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/OSM.js +457 -0
  450. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/OWSCommon/v1.js +256 -0
  451. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/OWSCommon/v1_0_0.js +50 -0
  452. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/OWSCommon/v1_1_0.js +64 -0
  453. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/OWSContext/v0_3_1.js +589 -0
  454. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/OWSContext.js +81 -0
  455. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/SLD/v1.js +1100 -0
  456. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/SLD/v1_0_0.js +51 -0
  457. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/SLD.js +131 -0
  458. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/SOSCapabilities/v1_0_0.js +158 -0
  459. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/SOSCapabilities.js +83 -0
  460. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/SOSGetFeatureOfInterest.js +193 -0
  461. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/SOSGetObservation.js +262 -0
  462. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/Text.js +152 -0
  463. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WFS.js +220 -0
  464. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WFSCapabilities/v1.js +126 -0
  465. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WFSCapabilities/v1_0_0.js +157 -0
  466. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WFSCapabilities/v1_1_0.js +36 -0
  467. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WFSCapabilities.js +80 -0
  468. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WFSDescribeFeatureType.js +198 -0
  469. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WFST/v1.js +368 -0
  470. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WFST/v1_0_0.js +150 -0
  471. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WFST/v1_1_0.js +161 -0
  472. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WFST.js +34 -0
  473. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WKT.js +358 -0
  474. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WMC/v1.js +835 -0
  475. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WMC/v1_0_0.js +76 -0
  476. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WMC/v1_1_0.js +127 -0
  477. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WMC.js +152 -0
  478. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1.js +418 -0
  479. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_1.js +118 -0
  480. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_1_0.js +62 -0
  481. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_1_1.js +58 -0
  482. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_3.js +128 -0
  483. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_3_0.js +30 -0
  484. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WMSCapabilities.js +82 -0
  485. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WMSDescribeLayer/v1_1.js +100 -0
  486. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WMSDescribeLayer.js +91 -0
  487. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WMSGetFeatureInfo.js +284 -0
  488. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WMTSCapabilities/v1_0_0.js +221 -0
  489. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/WMTSCapabilities.js +162 -0
  490. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format/XML.js +881 -0
  491. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Format.js +123 -0
  492. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Geometry/Collection.js +546 -0
  493. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Geometry/Curve.js +93 -0
  494. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Geometry/LineString.js +552 -0
  495. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Geometry/LinearRing.js +417 -0
  496. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Geometry/MultiLineString.js +262 -0
  497. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Geometry/MultiPoint.js +70 -0
  498. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Geometry/MultiPolygon.js +46 -0
  499. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Geometry/Point.js +283 -0
  500. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Geometry/Polygon.js +259 -0
  501. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Geometry/Rectangle.js +99 -0
  502. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Geometry/Surface.js +17 -0
  503. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Geometry.js +456 -0
  504. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Handler/Box.js +221 -0
  505. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Handler/Click.js +325 -0
  506. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Handler/Drag.js +420 -0
  507. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Handler/Feature.js +388 -0
  508. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Handler/Hover.js +183 -0
  509. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Handler/Keyboard.js +109 -0
  510. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Handler/MouseWheel.js +283 -0
  511. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Handler/Path.js +302 -0
  512. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Handler/Point.js +373 -0
  513. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Handler/Polygon.js +144 -0
  514. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Handler/RegularPolygon.js +421 -0
  515. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Handler.js +287 -0
  516. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Icon.js +227 -0
  517. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/ar.js +38 -0
  518. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/be-tarask.js +80 -0
  519. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/bg.js +29 -0
  520. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/br.js +79 -0
  521. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/ca.js +128 -0
  522. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/cs-CZ.js +69 -0
  523. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/da-DK.js +119 -0
  524. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/de.js +81 -0
  525. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/el.js +19 -0
  526. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/en-CA.js +21 -0
  527. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/en.js +128 -0
  528. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/es.js +129 -0
  529. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/fi.js +34 -0
  530. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/fr.js +80 -0
  531. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/fur.js +35 -0
  532. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/gl.js +79 -0
  533. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/gsw.js +79 -0
  534. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/hr.js +61 -0
  535. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/hsb.js +79 -0
  536. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/hu.js +80 -0
  537. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/ia.js +79 -0
  538. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/id.js +80 -0
  539. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/io.js +19 -0
  540. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/is.js +37 -0
  541. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/it.js +116 -0
  542. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/ja.js +80 -0
  543. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/km.js +25 -0
  544. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/ksh.js +79 -0
  545. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/nb.js +118 -0
  546. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/nds.js +61 -0
  547. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/nl.js +79 -0
  548. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/nn.js +27 -0
  549. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/oc.js +79 -0
  550. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/pt-BR.js +80 -0
  551. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/pt.js +81 -0
  552. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/ru.js +82 -0
  553. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/sk.js +71 -0
  554. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/sv-SE.js +71 -0
  555. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/te.js +27 -0
  556. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/vi.js +79 -0
  557. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/zh-CN.js +116 -0
  558. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang/zh-TW.js +117 -0
  559. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Lang.js +133 -0
  560. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/ArcGIS93Rest.js +253 -0
  561. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/ArcIMS.js +466 -0
  562. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/Boxes.js +76 -0
  563. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/EventPane.js +418 -0
  564. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/FixedZoomLevels.js +315 -0
  565. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/GML.js +174 -0
  566. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/GeoRSS.js +266 -0
  567. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/Google/v3.js +419 -0
  568. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/Google.js +795 -0
  569. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/Grid.js +755 -0
  570. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/HTTPRequest.js +230 -0
  571. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/Image.js +254 -0
  572. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/KaMap.js +206 -0
  573. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/KaMapCache.js +148 -0
  574. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/MapGuide.js +489 -0
  575. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/MapServer/Untiled.js +72 -0
  576. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/MapServer.js +199 -0
  577. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/Markers.js +187 -0
  578. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/MultiMap.js +284 -0
  579. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/PointTrack.js +103 -0
  580. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/SphericalMercator.js +196 -0
  581. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/TMS.js +167 -0
  582. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/Text.js +264 -0
  583. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/TileCache.js +165 -0
  584. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/Vector/RootContainer.js +157 -0
  585. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/Vector.js +947 -0
  586. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/VirtualEarth.js +368 -0
  587. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/WFS.js +609 -0
  588. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/WMS/Post.js +99 -0
  589. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/WMS/Untiled.js +72 -0
  590. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/WMS.js +268 -0
  591. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/WMTS.js +476 -0
  592. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/WorldWind.js +120 -0
  593. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/XYZ.js +196 -0
  594. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/Yahoo.js +430 -0
  595. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer/Zoomify.js +308 -0
  596. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Layer.js +1304 -0
  597. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Map.js +2417 -0
  598. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Marker/Box.js +120 -0
  599. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Marker.js +242 -0
  600. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Popup/Anchored.js +198 -0
  601. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Popup/AnchoredBubble.js +190 -0
  602. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Popup/Framed.js +343 -0
  603. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Popup/FramedCloud.js +231 -0
  604. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Popup.js +1052 -0
  605. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Projection.js +178 -0
  606. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Protocol/HTTP.js +655 -0
  607. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Protocol/SOS/v1_0_0.js +132 -0
  608. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Protocol/SOS.js +33 -0
  609. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Protocol/SQL/Gears.js +561 -0
  610. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Protocol/SQL.js +88 -0
  611. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Protocol/WFS/v1.js +342 -0
  612. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Protocol/WFS/v1_0_0.js +44 -0
  613. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Protocol/WFS/v1_1_0.js +48 -0
  614. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Protocol/WFS.js +71 -0
  615. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Protocol.js +272 -0
  616. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Renderer/Canvas.js +494 -0
  617. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Renderer/Elements.js +1010 -0
  618. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Renderer/SVG.js +995 -0
  619. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Renderer/VML.js +999 -0
  620. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Renderer.js +362 -0
  621. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Request/XMLHttpRequest.js +384 -0
  622. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Request.js +358 -0
  623. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Rule.js +240 -0
  624. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/SingleFile.js +10 -0
  625. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Strategy/BBOX.js +278 -0
  626. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Strategy/Cluster.js +280 -0
  627. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Strategy/Filter.js +164 -0
  628. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Strategy/Fixed.js +138 -0
  629. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Strategy/Paging.js +236 -0
  630. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Strategy/Refresh.js +140 -0
  631. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Strategy/Save.js +229 -0
  632. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Strategy.js +117 -0
  633. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Style.js +443 -0
  634. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Style2.js +111 -0
  635. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/StyleMap.js +160 -0
  636. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Symbolizer/Line.js +69 -0
  637. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Symbolizer/Point.js +141 -0
  638. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Symbolizer/Polygon.js +81 -0
  639. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Symbolizer/Raster.js +34 -0
  640. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Symbolizer/Text.js +65 -0
  641. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Symbolizer.js +51 -0
  642. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Tile/Image/IFrame.js +262 -0
  643. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Tile/Image.js +578 -0
  644. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Tile/WFS.js +192 -0
  645. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Tile.js +281 -0
  646. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Tween.js +318 -0
  647. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers/Util.js +1797 -0
  648. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/OpenLayers.js +348 -0
  649. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/Rico/Color.js +244 -0
  650. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/src/openlayers/lib/Rico/Corner.js +330 -0
  651. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/framedCloud.css +0 -0
  652. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/google.css +10 -0
  653. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/ie6-style.css +7 -0
  654. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/add_point_off.png +0 -0
  655. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/add_point_on.png +0 -0
  656. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/blank.gif +0 -0
  657. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/close.gif +0 -0
  658. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/drag-rectangle-off.png +0 -0
  659. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/drag-rectangle-on.png +0 -0
  660. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/draw_line_off.png +0 -0
  661. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/draw_line_on.png +0 -0
  662. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/draw_point_off.png +0 -0
  663. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/draw_point_on.png +0 -0
  664. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/draw_polygon_off.png +0 -0
  665. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/draw_polygon_on.png +0 -0
  666. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/editing_tool_bar.png +0 -0
  667. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/move_feature_off.png +0 -0
  668. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/move_feature_on.png +0 -0
  669. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/navigation_history.png +0 -0
  670. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/overview_replacement.gif +0 -0
  671. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/pan-panel-NOALPHA.png +0 -0
  672. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/pan-panel.png +0 -0
  673. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/pan_off.png +0 -0
  674. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/pan_on.png +0 -0
  675. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/panning-hand-off.png +0 -0
  676. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/panning-hand-on.png +0 -0
  677. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/remove_point_off.png +0 -0
  678. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/remove_point_on.png +0 -0
  679. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/ruler.png +0 -0
  680. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/save_features_off.png +0 -0
  681. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/save_features_on.png +0 -0
  682. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/view_next_off.png +0 -0
  683. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/view_next_on.png +0 -0
  684. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/view_previous_off.png +0 -0
  685. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/view_previous_on.png +0 -0
  686. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/zoom-panel-NOALPHA.png +0 -0
  687. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/img/zoom-panel.png +0 -0
  688. data/lib/support/phpmyadmin/phpmyadmin/js/openlayers/theme/default/style.css +397 -0
  689. data/lib/support/phpmyadmin/phpmyadmin/js/pmd/designer_db.js +136 -0
  690. data/lib/support/phpmyadmin/phpmyadmin/js/pmd/designer_objects.js +17 -0
  691. data/lib/support/phpmyadmin/phpmyadmin/js/pmd/designer_page.js +164 -0
  692. data/lib/support/phpmyadmin/phpmyadmin/js/pmd/history.js +812 -0
  693. data/lib/support/phpmyadmin/phpmyadmin/js/pmd/iecanvas.js +147 -0
  694. data/lib/support/phpmyadmin/phpmyadmin/js/pmd/init.js +40 -0
  695. data/lib/support/phpmyadmin/phpmyadmin/js/pmd/move.js +1993 -0
  696. data/lib/support/phpmyadmin/phpmyadmin/js/replication.js +72 -0
  697. data/lib/support/phpmyadmin/phpmyadmin/js/rte.js +944 -0
  698. data/lib/support/phpmyadmin/phpmyadmin/js/server_databases.js +137 -0
  699. data/lib/support/phpmyadmin/phpmyadmin/js/server_plugins.js +30 -0
  700. data/lib/support/phpmyadmin/phpmyadmin/js/server_privileges.js +451 -0
  701. data/lib/support/phpmyadmin/phpmyadmin/js/server_status_advisor.js +93 -0
  702. data/lib/support/phpmyadmin/phpmyadmin/js/server_status_monitor.js +2172 -0
  703. data/lib/support/phpmyadmin/phpmyadmin/js/server_status_processes.js +189 -0
  704. data/lib/support/phpmyadmin/phpmyadmin/js/server_status_queries.js +34 -0
  705. data/lib/support/phpmyadmin/phpmyadmin/js/server_status_sorter.js +89 -0
  706. data/lib/support/phpmyadmin/phpmyadmin/js/server_status_variables.js +103 -0
  707. data/lib/support/phpmyadmin/phpmyadmin/js/server_user_groups.js +42 -0
  708. data/lib/support/phpmyadmin/phpmyadmin/js/server_variables.js +147 -0
  709. data/lib/support/phpmyadmin/phpmyadmin/js/sprintf.js +211 -0
  710. data/lib/support/phpmyadmin/phpmyadmin/js/sql.js +842 -0
  711. data/lib/support/phpmyadmin/phpmyadmin/js/tbl_change.js +754 -0
  712. data/lib/support/phpmyadmin/phpmyadmin/js/tbl_chart.js +437 -0
  713. data/lib/support/phpmyadmin/phpmyadmin/js/tbl_find_replace.js +47 -0
  714. data/lib/support/phpmyadmin/phpmyadmin/js/tbl_gis_visualization.js +353 -0
  715. data/lib/support/phpmyadmin/phpmyadmin/js/tbl_operations.js +240 -0
  716. data/lib/support/phpmyadmin/phpmyadmin/js/tbl_relation.js +233 -0
  717. data/lib/support/phpmyadmin/phpmyadmin/js/tbl_select.js +395 -0
  718. data/lib/support/phpmyadmin/phpmyadmin/js/tbl_structure.js +397 -0
  719. data/lib/support/phpmyadmin/phpmyadmin/js/tbl_tracking.js +96 -0
  720. data/lib/support/phpmyadmin/phpmyadmin/js/tbl_zoom_plot_jqplot.js +638 -0
  721. data/lib/support/phpmyadmin/phpmyadmin/js/tracekit/tracekit.js +1114 -0
  722. data/lib/support/phpmyadmin/phpmyadmin/js/transformations/image_upload.js +28 -0
  723. data/lib/support/phpmyadmin/phpmyadmin/js/transformations/json.js +18 -0
  724. data/lib/support/phpmyadmin/phpmyadmin/js/transformations/json_editor.js +17 -0
  725. data/lib/support/phpmyadmin/phpmyadmin/js/transformations/sql_editor.js +30 -0
  726. data/lib/support/phpmyadmin/phpmyadmin/js/transformations/xml.js +18 -0
  727. data/lib/support/phpmyadmin/phpmyadmin/js/transformations/xml_editor.js +16 -0
  728. data/lib/support/phpmyadmin/phpmyadmin/js/whitelist.php +38 -0
  729. data/lib/support/phpmyadmin/phpmyadmin/libraries/Advisor.class.php +526 -0
  730. data/lib/support/phpmyadmin/phpmyadmin/libraries/Config.class.php +1926 -0
  731. data/lib/support/phpmyadmin/phpmyadmin/libraries/Console.class.php +320 -0
  732. data/lib/support/phpmyadmin/phpmyadmin/libraries/DBQbe.class.php +1593 -0
  733. data/lib/support/phpmyadmin/phpmyadmin/libraries/DatabaseInterface.class.php +2864 -0
  734. data/lib/support/phpmyadmin/phpmyadmin/libraries/DbSearch.class.php +502 -0
  735. data/lib/support/phpmyadmin/phpmyadmin/libraries/DisplayResults.class.php +5685 -0
  736. data/lib/support/phpmyadmin/phpmyadmin/libraries/Error.class.php +470 -0
  737. data/lib/support/phpmyadmin/phpmyadmin/libraries/Error_Handler.class.php +561 -0
  738. data/lib/support/phpmyadmin/phpmyadmin/libraries/File.class.php +732 -0
  739. data/lib/support/phpmyadmin/phpmyadmin/libraries/Font.class.php +145 -0
  740. data/lib/support/phpmyadmin/phpmyadmin/libraries/Footer.class.php +351 -0
  741. data/lib/support/phpmyadmin/phpmyadmin/libraries/Header.class.php +752 -0
  742. data/lib/support/phpmyadmin/phpmyadmin/libraries/Index.class.php +1011 -0
  743. data/lib/support/phpmyadmin/phpmyadmin/libraries/List.class.php +122 -0
  744. data/lib/support/phpmyadmin/phpmyadmin/libraries/List_Database.class.php +193 -0
  745. data/lib/support/phpmyadmin/phpmyadmin/libraries/Menu.class.php +631 -0
  746. data/lib/support/phpmyadmin/phpmyadmin/libraries/Message.class.php +759 -0
  747. data/lib/support/phpmyadmin/phpmyadmin/libraries/OutputBuffering.class.php +139 -0
  748. data/lib/support/phpmyadmin/phpmyadmin/libraries/PDF.class.php +149 -0
  749. data/lib/support/phpmyadmin/phpmyadmin/libraries/PMA.php +109 -0
  750. data/lib/support/phpmyadmin/phpmyadmin/libraries/Partition.class.php +77 -0
  751. data/lib/support/phpmyadmin/phpmyadmin/libraries/RecentFavoriteTable.class.php +393 -0
  752. data/lib/support/phpmyadmin/phpmyadmin/libraries/Response.class.php +397 -0
  753. data/lib/support/phpmyadmin/phpmyadmin/libraries/SavedSearches.class.php +447 -0
  754. data/lib/support/phpmyadmin/phpmyadmin/libraries/Scripts.class.php +284 -0
  755. data/lib/support/phpmyadmin/phpmyadmin/libraries/ServerStatusData.class.php +448 -0
  756. data/lib/support/phpmyadmin/phpmyadmin/libraries/StorageEngine.class.php +451 -0
  757. data/lib/support/phpmyadmin/phpmyadmin/libraries/String.class.php +188 -0
  758. data/lib/support/phpmyadmin/phpmyadmin/libraries/StringAbstractType.class.php +35 -0
  759. data/lib/support/phpmyadmin/phpmyadmin/libraries/StringByte.int.php +173 -0
  760. data/lib/support/phpmyadmin/phpmyadmin/libraries/StringCType.class.php +110 -0
  761. data/lib/support/phpmyadmin/phpmyadmin/libraries/StringNativeType.class.php +138 -0
  762. data/lib/support/phpmyadmin/phpmyadmin/libraries/StringType.int.php +84 -0
  763. data/lib/support/phpmyadmin/phpmyadmin/libraries/Table.class.php +1806 -0
  764. data/lib/support/phpmyadmin/phpmyadmin/libraries/TableSearch.class.php +1587 -0
  765. data/lib/support/phpmyadmin/phpmyadmin/libraries/Theme.class.php +485 -0
  766. data/lib/support/phpmyadmin/phpmyadmin/libraries/Theme_Manager.class.php +460 -0
  767. data/lib/support/phpmyadmin/phpmyadmin/libraries/Tracker.class.php +1030 -0
  768. data/lib/support/phpmyadmin/phpmyadmin/libraries/Types.class.php +1071 -0
  769. data/lib/support/phpmyadmin/phpmyadmin/libraries/Util.class.php +4602 -0
  770. data/lib/support/phpmyadmin/phpmyadmin/libraries/advisory_rules.txt +470 -0
  771. data/lib/support/phpmyadmin/phpmyadmin/libraries/bfShapeFiles/ShapeFile.lib.php +682 -0
  772. data/lib/support/phpmyadmin/phpmyadmin/libraries/bookmark.lib.php +273 -0
  773. data/lib/support/phpmyadmin/phpmyadmin/libraries/browse_foreigners.lib.php +316 -0
  774. data/lib/support/phpmyadmin/phpmyadmin/libraries/build_html_for_db.lib.php +184 -0
  775. data/lib/support/phpmyadmin/phpmyadmin/libraries/central_columns.lib.php +1003 -0
  776. data/lib/support/phpmyadmin/phpmyadmin/libraries/charset_conversion.lib.php +120 -0
  777. data/lib/support/phpmyadmin/phpmyadmin/libraries/check_user_privileges.lib.php +195 -0
  778. data/lib/support/phpmyadmin/phpmyadmin/libraries/cleanup.lib.php +50 -0
  779. data/lib/support/phpmyadmin/phpmyadmin/libraries/common.inc.php +1203 -0
  780. data/lib/support/phpmyadmin/phpmyadmin/libraries/config/ConfigFile.class.php +543 -0
  781. data/lib/support/phpmyadmin/phpmyadmin/libraries/config/Form.class.php +231 -0
  782. data/lib/support/phpmyadmin/phpmyadmin/libraries/config/FormDisplay.class.php +837 -0
  783. data/lib/support/phpmyadmin/phpmyadmin/libraries/config/FormDisplay.tpl.php +491 -0
  784. data/lib/support/phpmyadmin/phpmyadmin/libraries/config/ServerConfigChecks.class.php +577 -0
  785. data/lib/support/phpmyadmin/phpmyadmin/libraries/config/Validator.class.php +624 -0
  786. data/lib/support/phpmyadmin/phpmyadmin/libraries/config/config_functions.lib.php +54 -0
  787. data/lib/support/phpmyadmin/phpmyadmin/libraries/config/messages.inc.php +818 -0
  788. data/lib/support/phpmyadmin/phpmyadmin/libraries/config/setup.forms.php +384 -0
  789. data/lib/support/phpmyadmin/phpmyadmin/libraries/config/user_preferences.forms.php +281 -0
  790. data/lib/support/phpmyadmin/phpmyadmin/libraries/config.default.php +3011 -0
  791. data/lib/support/phpmyadmin/phpmyadmin/libraries/config.values.php +270 -0
  792. data/lib/support/phpmyadmin/phpmyadmin/libraries/core.lib.php +1013 -0
  793. data/lib/support/phpmyadmin/phpmyadmin/libraries/create_addfield.lib.php +376 -0
  794. data/lib/support/phpmyadmin/phpmyadmin/libraries/data_dictionary_relations.lib.php +167 -0
  795. data/lib/support/phpmyadmin/phpmyadmin/libraries/database_interface.inc.php +74 -0
  796. data/lib/support/phpmyadmin/phpmyadmin/libraries/db_common.inc.php +105 -0
  797. data/lib/support/phpmyadmin/phpmyadmin/libraries/db_designer.lib.php +1397 -0
  798. data/lib/support/phpmyadmin/phpmyadmin/libraries/db_info.inc.php +248 -0
  799. data/lib/support/phpmyadmin/phpmyadmin/libraries/db_printview.lib.php +30 -0
  800. data/lib/support/phpmyadmin/phpmyadmin/libraries/db_table_exists.lib.php +106 -0
  801. data/lib/support/phpmyadmin/phpmyadmin/libraries/dbi/DBIDrizzle.class.php +583 -0
  802. data/lib/support/phpmyadmin/phpmyadmin/libraries/dbi/DBIDummy.class.php +906 -0
  803. data/lib/support/phpmyadmin/phpmyadmin/libraries/dbi/DBIExtension.int.php +262 -0
  804. data/lib/support/phpmyadmin/phpmyadmin/libraries/dbi/DBIMysql.class.php +469 -0
  805. data/lib/support/phpmyadmin/phpmyadmin/libraries/dbi/DBIMysqli.class.php +620 -0
  806. data/lib/support/phpmyadmin/phpmyadmin/libraries/dbi/drizzle-wrappers.lib.php +427 -0
  807. data/lib/support/phpmyadmin/phpmyadmin/libraries/display_change_password.lib.php +113 -0
  808. data/lib/support/phpmyadmin/phpmyadmin/libraries/display_create_database.lib.php +62 -0
  809. data/lib/support/phpmyadmin/phpmyadmin/libraries/display_create_table.lib.php +82 -0
  810. data/lib/support/phpmyadmin/phpmyadmin/libraries/display_export.inc.php +72 -0
  811. data/lib/support/phpmyadmin/phpmyadmin/libraries/display_export.lib.php +872 -0
  812. data/lib/support/phpmyadmin/phpmyadmin/libraries/display_git_revision.lib.php +83 -0
  813. data/lib/support/phpmyadmin/phpmyadmin/libraries/display_import.inc.php +64 -0
  814. data/lib/support/phpmyadmin/phpmyadmin/libraries/display_import.lib.php +602 -0
  815. data/lib/support/phpmyadmin/phpmyadmin/libraries/display_import_ajax.lib.php +129 -0
  816. data/lib/support/phpmyadmin/phpmyadmin/libraries/display_select_lang.lib.php +98 -0
  817. data/lib/support/phpmyadmin/phpmyadmin/libraries/display_structure.inc.php +272 -0
  818. data/lib/support/phpmyadmin/phpmyadmin/libraries/engines/bdb.lib.php +87 -0
  819. data/lib/support/phpmyadmin/phpmyadmin/libraries/engines/berkeleydb.lib.php +26 -0
  820. data/lib/support/phpmyadmin/phpmyadmin/libraries/engines/binlog.lib.php +31 -0
  821. data/lib/support/phpmyadmin/phpmyadmin/libraries/engines/innobase.lib.php +25 -0
  822. data/lib/support/phpmyadmin/phpmyadmin/libraries/engines/innodb.lib.php +392 -0
  823. data/lib/support/phpmyadmin/phpmyadmin/libraries/engines/memory.lib.php +34 -0
  824. data/lib/support/phpmyadmin/phpmyadmin/libraries/engines/merge.lib.php +21 -0
  825. data/lib/support/phpmyadmin/phpmyadmin/libraries/engines/mrg_myisam.lib.php +36 -0
  826. data/lib/support/phpmyadmin/phpmyadmin/libraries/engines/myisam.lib.php +69 -0
  827. data/lib/support/phpmyadmin/phpmyadmin/libraries/engines/ndbcluster.lib.php +55 -0
  828. data/lib/support/phpmyadmin/phpmyadmin/libraries/engines/pbxt.lib.php +149 -0
  829. data/lib/support/phpmyadmin/phpmyadmin/libraries/engines/performance_schema.lib.php +31 -0
  830. data/lib/support/phpmyadmin/phpmyadmin/libraries/error.inc.php +58 -0
  831. data/lib/support/phpmyadmin/phpmyadmin/libraries/error_report.lib.php +432 -0
  832. data/lib/support/phpmyadmin/phpmyadmin/libraries/export.lib.php +858 -0
  833. data/lib/support/phpmyadmin/phpmyadmin/libraries/file_listing.lib.php +99 -0
  834. data/lib/support/phpmyadmin/phpmyadmin/libraries/gis/GIS_Factory.class.php +66 -0
  835. data/lib/support/phpmyadmin/phpmyadmin/libraries/gis/GIS_Geometry.class.php +376 -0
  836. data/lib/support/phpmyadmin/phpmyadmin/libraries/gis/GIS_Geometrycollection.class.php +364 -0
  837. data/lib/support/phpmyadmin/phpmyadmin/libraries/gis/GIS_Linestring.class.php +323 -0
  838. data/lib/support/phpmyadmin/phpmyadmin/libraries/gis/GIS_Multilinestring.class.php +394 -0
  839. data/lib/support/phpmyadmin/phpmyadmin/libraries/gis/GIS_Multipoint.class.php +367 -0
  840. data/lib/support/phpmyadmin/phpmyadmin/libraries/gis/GIS_Multipolygon.class.php +564 -0
  841. data/lib/support/phpmyadmin/phpmyadmin/libraries/gis/GIS_Point.class.php +314 -0
  842. data/lib/support/phpmyadmin/phpmyadmin/libraries/gis/GIS_Polygon.class.php +581 -0
  843. data/lib/support/phpmyadmin/phpmyadmin/libraries/gis/GIS_Visualization.class.php +504 -0
  844. data/lib/support/phpmyadmin/phpmyadmin/libraries/iconv_wrapper.lib.php +128 -0
  845. data/lib/support/phpmyadmin/phpmyadmin/libraries/import.lib.php +1954 -0
  846. data/lib/support/phpmyadmin/phpmyadmin/libraries/index.lib.php +48 -0
  847. data/lib/support/phpmyadmin/phpmyadmin/libraries/information_schema_relations.lib.php +327 -0
  848. data/lib/support/phpmyadmin/phpmyadmin/libraries/insert_edit.lib.php +2931 -0
  849. data/lib/support/phpmyadmin/phpmyadmin/libraries/ip_allow_deny.lib.php +341 -0
  850. data/lib/support/phpmyadmin/phpmyadmin/libraries/js_escape.lib.php +135 -0
  851. data/lib/support/phpmyadmin/phpmyadmin/libraries/kanji-encoding.lib.php +168 -0
  852. data/lib/support/phpmyadmin/phpmyadmin/libraries/language_stats.inc.php +87 -0
  853. data/lib/support/phpmyadmin/phpmyadmin/libraries/logging.lib.php +30 -0
  854. data/lib/support/phpmyadmin/phpmyadmin/libraries/mime.lib.php +34 -0
  855. data/lib/support/phpmyadmin/phpmyadmin/libraries/mult_submits.inc.php +307 -0
  856. data/lib/support/phpmyadmin/phpmyadmin/libraries/mult_submits.lib.php +647 -0
  857. data/lib/support/phpmyadmin/phpmyadmin/libraries/mysql_charsets.inc.php +129 -0
  858. data/lib/support/phpmyadmin/phpmyadmin/libraries/mysql_charsets.lib.php +379 -0
  859. data/lib/support/phpmyadmin/phpmyadmin/libraries/mysql_relations.lib.php +169 -0
  860. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Navigation.class.php +228 -0
  861. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/NavigationHeader.class.php +223 -0
  862. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/NavigationTree.class.php +1452 -0
  863. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/NodeFactory.class.php +97 -0
  864. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node.class.php +813 -0
  865. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_Column.class.php +47 -0
  866. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_Column_Container.class.php +57 -0
  867. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_Database.class.php +663 -0
  868. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_DatabaseChild.class.php +52 -0
  869. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_Database_Container.class.php +51 -0
  870. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_Event.class.php +57 -0
  871. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_Event_Container.class.php +54 -0
  872. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_Function.class.php +57 -0
  873. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_Function_Container.class.php +53 -0
  874. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_Index.class.php +45 -0
  875. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_Index_Container.class.php +57 -0
  876. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_Procedure.class.php +57 -0
  877. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_Procedure_Container.class.php +55 -0
  878. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_Table.class.php +294 -0
  879. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_Table_Container.class.php +60 -0
  880. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_Trigger.class.php +45 -0
  881. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_Trigger_Container.class.php +57 -0
  882. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_View.class.php +57 -0
  883. data/lib/support/phpmyadmin/phpmyadmin/libraries/navigation/Nodes/Node_View_Container.class.php +60 -0
  884. data/lib/support/phpmyadmin/phpmyadmin/libraries/normalization.lib.php +945 -0
  885. data/lib/support/phpmyadmin/phpmyadmin/libraries/opendocument.lib.php +171 -0
  886. data/lib/support/phpmyadmin/phpmyadmin/libraries/operations.lib.php +1649 -0
  887. data/lib/support/phpmyadmin/phpmyadmin/libraries/parse_analyze.inc.php +144 -0
  888. data/lib/support/phpmyadmin/phpmyadmin/libraries/php-gettext/gettext.inc +536 -0
  889. data/lib/support/phpmyadmin/phpmyadmin/libraries/php-gettext/gettext.php +432 -0
  890. data/lib/support/phpmyadmin/phpmyadmin/libraries/php-gettext/streams.php +167 -0
  891. data/lib/support/phpmyadmin/phpmyadmin/libraries/phpseclib/Crypt/AES.php +184 -0
  892. data/lib/support/phpmyadmin/phpmyadmin/libraries/phpseclib/Crypt/Base.php +1984 -0
  893. data/lib/support/phpmyadmin/phpmyadmin/libraries/phpseclib/Crypt/Random.php +251 -0
  894. data/lib/support/phpmyadmin/phpmyadmin/libraries/phpseclib/Crypt/Rijndael.php +1370 -0
  895. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugin_interface.lib.php +557 -0
  896. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/AuthenticationPlugin.class.php +100 -0
  897. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/ExportPlugin.class.php +326 -0
  898. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/IOTransformationsPlugin.class.php +91 -0
  899. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/ImportPlugin.class.php +77 -0
  900. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/SchemaPlugin.class.php +76 -0
  901. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/TransformationsInterface.int.php +49 -0
  902. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/TransformationsPlugin.class.php +69 -0
  903. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/UploadInterface.int.php +36 -0
  904. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/auth/AuthenticationConfig.class.php +183 -0
  905. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/auth/AuthenticationCookie.class.php +871 -0
  906. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/auth/AuthenticationHttp.class.php +289 -0
  907. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/auth/AuthenticationSignon.class.php +267 -0
  908. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/auth/recaptcha/LICENSE +29 -0
  909. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/auth/recaptcha/recaptchalib.php +140 -0
  910. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/auth/swekey/authentication.inc.php +176 -0
  911. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/auth/swekey/musbe-ca.crt +25 -0
  912. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/auth/swekey/swekey.auth.lib.php +318 -0
  913. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/auth/swekey/swekey.php +536 -0
  914. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/ExportCodegen.class.php +434 -0
  915. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/ExportCsv.class.php +323 -0
  916. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/ExportExcel.class.php +92 -0
  917. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/ExportHtmlword.class.php +644 -0
  918. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/ExportJson.class.php +215 -0
  919. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/ExportLatex.class.php +656 -0
  920. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/ExportMediawiki.class.php +379 -0
  921. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/ExportOds.class.php +334 -0
  922. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/ExportOdt.class.php +765 -0
  923. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/ExportPdf.class.php +276 -0
  924. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/ExportPhparray.class.php +233 -0
  925. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/ExportSql.class.php +2601 -0
  926. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/ExportTexytext.class.php +575 -0
  927. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/ExportXml.class.php +584 -0
  928. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/ExportYaml.class.php +212 -0
  929. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/PMA_ExportPdf.class.php +434 -0
  930. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/README +267 -0
  931. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/export/TableProperty.class.php +286 -0
  932. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/import/AbstractImportCsv.class.php +90 -0
  933. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/import/ImportCsv.class.php +687 -0
  934. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/import/ImportLdi.class.php +161 -0
  935. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/import/ImportMediawiki.class.php +598 -0
  936. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/import/ImportOds.class.php +414 -0
  937. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/import/ImportShp.class.php +327 -0
  938. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/import/ImportSql.class.php +620 -0
  939. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/import/ImportXml.class.php +366 -0
  940. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/import/README +159 -0
  941. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/import/ShapeFile.class.php +102 -0
  942. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/import/ShapeRecord.class.php +161 -0
  943. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/import/upload/UploadApc.class.php +84 -0
  944. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/import/upload/UploadNoplugin.class.php +64 -0
  945. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/import/upload/UploadProgress.class.php +94 -0
  946. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/import/upload/UploadSession.class.php +96 -0
  947. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/Export_Relation_Schema.class.php +299 -0
  948. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/RelationStats.class.php +108 -0
  949. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/SchemaDia.class.php +117 -0
  950. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/SchemaEps.class.php +102 -0
  951. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/SchemaPdf.class.php +132 -0
  952. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/SchemaSvg.class.php +90 -0
  953. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/TableStats.class.php +179 -0
  954. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/dia/Dia_Relation_Schema.class.php +378 -0
  955. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/dia/RelationStatsDia.class.php +216 -0
  956. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/dia/TableStatsDia.class.php +227 -0
  957. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/eps/Eps_Relation_Schema.class.php +508 -0
  958. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/eps/RelationStatsEps.class.php +135 -0
  959. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/eps/TableStatsEps.class.php +157 -0
  960. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/pdf/Pdf_Relation_Schema.class.php +1070 -0
  961. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/pdf/RelationStatsPdf.class.php +135 -0
  962. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/pdf/TableStatsPdf.class.php +222 -0
  963. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/svg/RelationStatsSvg.class.php +119 -0
  964. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/svg/Svg_Relation_Schema.class.php +501 -0
  965. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/schema/svg/TableStatsSvg.class.php +180 -0
  966. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/README +4 -0
  967. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/TEMPLATE +46 -0
  968. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/TEMPLATE_ABSTRACT +73 -0
  969. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/Text_Plain_Link.class.php +44 -0
  970. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/Text_Plain_Longtoipv4.class.php +44 -0
  971. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/Text_Plain_Preappend.class.php +45 -0
  972. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/Text_Plain_Substring.class.php +44 -0
  973. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/Bool2TextTransformationsPlugin.class.php +69 -0
  974. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/CodeMirrorEditorTransformationPlugin.class.php +64 -0
  975. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/DateFormatTransformationsPlugin.class.php +164 -0
  976. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/DownloadTransformationsPlugin.class.php +95 -0
  977. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/ExternalTransformationsPlugin.class.php +155 -0
  978. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/FormattedTransformationsPlugin.class.php +65 -0
  979. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/HexTransformationsPlugin.class.php +72 -0
  980. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/ImageLinkTransformationsPlugin.class.php +74 -0
  981. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/ImageUploadTransformationsPlugin.class.php +110 -0
  982. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/InlineTransformationsPlugin.class.php +86 -0
  983. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/LongToIPv4TransformationsPlugin.class.php +68 -0
  984. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/PreApPendTransformationsPlugin.class.php +71 -0
  985. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/RegexValidationTransformationsPlugin.class.php +74 -0
  986. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/SQLTransformationsPlugin.class.php +67 -0
  987. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/SubstringTransformationsPlugin.class.php +92 -0
  988. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/TextFileUploadTransformationsPlugin.class.php +93 -0
  989. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/TextImageLinkTransformationsPlugin.class.php +81 -0
  990. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/abstract/TextLinkTransformationsPlugin.class.php +82 -0
  991. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/generator_main_class.sh +16 -0
  992. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/generator_plugin.sh +64 -0
  993. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/input/Image_JPEG_Upload.class.php +46 -0
  994. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/input/Text_Plain_Fileupload.class.php +45 -0
  995. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/input/Text_Plain_JsonEditor.class.php +86 -0
  996. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/input/Text_Plain_Regexvalidation.class.php +46 -0
  997. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/input/Text_Plain_SqlEditor.class.php +86 -0
  998. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/input/Text_Plain_XmlEditor.class.php +86 -0
  999. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/output/Application_Octetstream_Download.class.php +44 -0
  1000. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/output/Application_Octetstream_Hex.class.php +45 -0
  1001. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/output/Image_JPEG_Inline.class.php +45 -0
  1002. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/output/Image_JPEG_Link.class.php +45 -0
  1003. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/output/Image_PNG_Inline.class.php +45 -0
  1004. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/output/Text_Octetstream_Sql.class.php +45 -0
  1005. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/output/Text_Plain_Bool2text.class.php +47 -0
  1006. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/output/Text_Plain_Dateformat.class.php +45 -0
  1007. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/output/Text_Plain_External.class.php +45 -0
  1008. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/output/Text_Plain_Formatted.class.php +45 -0
  1009. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/output/Text_Plain_Imagelink.class.php +45 -0
  1010. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/output/Text_Plain_Json.class.php +96 -0
  1011. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/output/Text_Plain_Sql.class.php +57 -0
  1012. data/lib/support/phpmyadmin/phpmyadmin/libraries/plugins/transformations/output/Text_Plain_Xml.class.php +96 -0
  1013. data/lib/support/phpmyadmin/phpmyadmin/libraries/pmd_common.php +657 -0
  1014. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/PropertyItem.class.php +49 -0
  1015. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/options/OptionsPropertyGroup.class.php +99 -0
  1016. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/options/OptionsPropertyItem.class.php +127 -0
  1017. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/options/OptionsPropertyOneItem.class.php +172 -0
  1018. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/options/groups/OptionsPropertyMainGroup.class.php +35 -0
  1019. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/options/groups/OptionsPropertyRootGroup.class.php +35 -0
  1020. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/options/groups/OptionsPropertySubgroup.class.php +68 -0
  1021. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/options/items/BoolPropertyItem.class.php +35 -0
  1022. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/options/items/DocPropertyItem.class.php +35 -0
  1023. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/options/items/HiddenPropertyItem.class.php +35 -0
  1024. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/options/items/MessageOnlyPropertyItem.class.php +35 -0
  1025. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/options/items/NumberPropertyItem.class.php +35 -0
  1026. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/options/items/RadioPropertyItem.class.php +35 -0
  1027. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/options/items/SelectPropertyItem.class.php +35 -0
  1028. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/options/items/TextPropertyItem.class.php +35 -0
  1029. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/plugins/ExportPluginProperties.class.php +68 -0
  1030. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/plugins/ImportPluginProperties.class.php +34 -0
  1031. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/plugins/PluginPropertyItem.class.php +183 -0
  1032. data/lib/support/phpmyadmin/phpmyadmin/libraries/properties/plugins/SchemaPluginProperties.class.php +47 -0
  1033. data/lib/support/phpmyadmin/phpmyadmin/libraries/relation.lib.php +2024 -0
  1034. data/lib/support/phpmyadmin/phpmyadmin/libraries/relation_cleanup.lib.php +216 -0
  1035. data/lib/support/phpmyadmin/phpmyadmin/libraries/replication.inc.php +321 -0
  1036. data/lib/support/phpmyadmin/phpmyadmin/libraries/replication_gui.lib.php +1088 -0
  1037. data/lib/support/phpmyadmin/phpmyadmin/libraries/rte/rte_events.lib.php +618 -0
  1038. data/lib/support/phpmyadmin/phpmyadmin/libraries/rte/rte_export.lib.php +121 -0
  1039. data/lib/support/phpmyadmin/phpmyadmin/libraries/rte/rte_footer.lib.php +130 -0
  1040. data/lib/support/phpmyadmin/phpmyadmin/libraries/rte/rte_general.lib.php +88 -0
  1041. data/lib/support/phpmyadmin/phpmyadmin/libraries/rte/rte_list.lib.php +387 -0
  1042. data/lib/support/phpmyadmin/phpmyadmin/libraries/rte/rte_main.inc.php +94 -0
  1043. data/lib/support/phpmyadmin/phpmyadmin/libraries/rte/rte_routines.lib.php +1733 -0
  1044. data/lib/support/phpmyadmin/phpmyadmin/libraries/rte/rte_triggers.lib.php +463 -0
  1045. data/lib/support/phpmyadmin/phpmyadmin/libraries/rte/rte_words.lib.php +75 -0
  1046. data/lib/support/phpmyadmin/phpmyadmin/libraries/sanitizing.lib.php +191 -0
  1047. data/lib/support/phpmyadmin/phpmyadmin/libraries/select_lang.lib.php +621 -0
  1048. data/lib/support/phpmyadmin/phpmyadmin/libraries/select_server.lib.php +111 -0
  1049. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_bin_log.lib.php +244 -0
  1050. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_collations.lib.php +100 -0
  1051. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_common.inc.php +53 -0
  1052. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_common.lib.php +67 -0
  1053. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_databases.lib.php +498 -0
  1054. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_engines.lib.php +145 -0
  1055. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_plugins.lib.php +207 -0
  1056. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_privileges.lib.php +4692 -0
  1057. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_status.lib.php +317 -0
  1058. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_status_advisor.lib.php +68 -0
  1059. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_status_monitor.lib.php +825 -0
  1060. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_status_processes.lib.php +320 -0
  1061. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_status_queries.lib.php +154 -0
  1062. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_status_variables.lib.php +765 -0
  1063. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_user_groups.lib.php +360 -0
  1064. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_users.lib.php +58 -0
  1065. data/lib/support/phpmyadmin/phpmyadmin/libraries/server_variables.lib.php +1683 -0
  1066. data/lib/support/phpmyadmin/phpmyadmin/libraries/session.inc.php +130 -0
  1067. data/lib/support/phpmyadmin/phpmyadmin/libraries/special_schema_links.lib.php +461 -0
  1068. data/lib/support/phpmyadmin/phpmyadmin/libraries/sql-formatter/LICENSE.txt +21 -0
  1069. data/lib/support/phpmyadmin/phpmyadmin/libraries/sql-formatter/README.md +185 -0
  1070. data/lib/support/phpmyadmin/phpmyadmin/libraries/sql-formatter/lib/SqlFormatter.php +1085 -0
  1071. data/lib/support/phpmyadmin/phpmyadmin/libraries/sql.lib.php +2293 -0
  1072. data/lib/support/phpmyadmin/phpmyadmin/libraries/sql_query_form.lib.php +477 -0
  1073. data/lib/support/phpmyadmin/phpmyadmin/libraries/sqlparser.data.php +999 -0
  1074. data/lib/support/phpmyadmin/phpmyadmin/libraries/sqlparser.lib.php +2997 -0
  1075. data/lib/support/phpmyadmin/phpmyadmin/libraries/string.lib.php +33 -0
  1076. data/lib/support/phpmyadmin/phpmyadmin/libraries/stringMb.lib.php +78 -0
  1077. data/lib/support/phpmyadmin/phpmyadmin/libraries/stringNative.lib.php +245 -0
  1078. data/lib/support/phpmyadmin/phpmyadmin/libraries/structure.lib.php +3294 -0
  1079. data/lib/support/phpmyadmin/phpmyadmin/libraries/sysinfo.lib.php +369 -0
  1080. data/lib/support/phpmyadmin/phpmyadmin/libraries/tbl_chart.lib.php +383 -0
  1081. data/lib/support/phpmyadmin/phpmyadmin/libraries/tbl_columns_definition_form.inc.php +195 -0
  1082. data/lib/support/phpmyadmin/phpmyadmin/libraries/tbl_columns_definition_form.lib.php +1458 -0
  1083. data/lib/support/phpmyadmin/phpmyadmin/libraries/tbl_common.inc.php +48 -0
  1084. data/lib/support/phpmyadmin/phpmyadmin/libraries/tbl_gis_visualization.lib.php +281 -0
  1085. data/lib/support/phpmyadmin/phpmyadmin/libraries/tbl_indexes.lib.php +480 -0
  1086. data/lib/support/phpmyadmin/phpmyadmin/libraries/tbl_info.inc.php +108 -0
  1087. data/lib/support/phpmyadmin/phpmyadmin/libraries/tbl_printview.lib.php +602 -0
  1088. data/lib/support/phpmyadmin/phpmyadmin/libraries/tbl_relation.lib.php +1222 -0
  1089. data/lib/support/phpmyadmin/phpmyadmin/libraries/tbl_views.lib.php +161 -0
  1090. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/LICENSE.TXT +858 -0
  1091. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/README.TXT +115 -0
  1092. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/config/tcpdf_config.php +227 -0
  1093. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/fonts/dejavu-fonts-ttf-2.34/LICENSE +99 -0
  1094. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/fonts/dejavusans.ctg.z +0 -0
  1095. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/fonts/dejavusans.php +16 -0
  1096. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/fonts/dejavusans.z +0 -0
  1097. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/fonts/dejavusansb.ctg.z +0 -0
  1098. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/fonts/dejavusansb.php +16 -0
  1099. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/fonts/dejavusansb.z +0 -0
  1100. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/fonts/helvetica.php +13 -0
  1101. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/include/sRGB.icc +0 -0
  1102. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/include/tcpdf_colors.php +462 -0
  1103. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/include/tcpdf_font_data.php +18447 -0
  1104. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/include/tcpdf_fonts.php +2591 -0
  1105. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/include/tcpdf_images.php +355 -0
  1106. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/include/tcpdf_static.php +2528 -0
  1107. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/tcpdf.php +24478 -0
  1108. data/lib/support/phpmyadmin/phpmyadmin/libraries/tcpdf/tcpdf_autoconfig.php +241 -0
  1109. data/lib/support/phpmyadmin/phpmyadmin/libraries/tracking.lib.php +1439 -0
  1110. data/lib/support/phpmyadmin/phpmyadmin/libraries/transformations.lib.php +461 -0
  1111. data/lib/support/phpmyadmin/phpmyadmin/libraries/url_generating.lib.php +256 -0
  1112. data/lib/support/phpmyadmin/phpmyadmin/libraries/user_preferences.inc.php +71 -0
  1113. data/lib/support/phpmyadmin/phpmyadmin/libraries/user_preferences.lib.php +301 -0
  1114. data/lib/support/phpmyadmin/phpmyadmin/libraries/vendor_config.php +93 -0
  1115. data/lib/support/phpmyadmin/phpmyadmin/libraries/zip.lib.php +211 -0
  1116. data/lib/support/phpmyadmin/phpmyadmin/libraries/zip_extension.lib.php +195 -0
  1117. data/lib/support/phpmyadmin/phpmyadmin/license.php +31 -0
  1118. data/lib/support/phpmyadmin/phpmyadmin/locale/az/LC_MESSAGES/phpmyadmin.mo +0 -0
  1119. data/lib/support/phpmyadmin/phpmyadmin/locale/bg/LC_MESSAGES/phpmyadmin.mo +0 -0
  1120. data/lib/support/phpmyadmin/phpmyadmin/locale/bn/LC_MESSAGES/phpmyadmin.mo +0 -0
  1121. data/lib/support/phpmyadmin/phpmyadmin/locale/ca/LC_MESSAGES/phpmyadmin.mo +0 -0
  1122. data/lib/support/phpmyadmin/phpmyadmin/locale/cs/LC_MESSAGES/phpmyadmin.mo +0 -0
  1123. data/lib/support/phpmyadmin/phpmyadmin/locale/da/LC_MESSAGES/phpmyadmin.mo +0 -0
  1124. data/lib/support/phpmyadmin/phpmyadmin/locale/de/LC_MESSAGES/phpmyadmin.mo +0 -0
  1125. data/lib/support/phpmyadmin/phpmyadmin/locale/el/LC_MESSAGES/phpmyadmin.mo +0 -0
  1126. data/lib/support/phpmyadmin/phpmyadmin/locale/en_GB/LC_MESSAGES/phpmyadmin.mo +0 -0
  1127. data/lib/support/phpmyadmin/phpmyadmin/locale/es/LC_MESSAGES/phpmyadmin.mo +0 -0
  1128. data/lib/support/phpmyadmin/phpmyadmin/locale/et/LC_MESSAGES/phpmyadmin.mo +0 -0
  1129. data/lib/support/phpmyadmin/phpmyadmin/locale/fi/LC_MESSAGES/phpmyadmin.mo +0 -0
  1130. data/lib/support/phpmyadmin/phpmyadmin/locale/fr/LC_MESSAGES/phpmyadmin.mo +0 -0
  1131. data/lib/support/phpmyadmin/phpmyadmin/locale/gl/LC_MESSAGES/phpmyadmin.mo +0 -0
  1132. data/lib/support/phpmyadmin/phpmyadmin/locale/hi/LC_MESSAGES/phpmyadmin.mo +0 -0
  1133. data/lib/support/phpmyadmin/phpmyadmin/locale/hu/LC_MESSAGES/phpmyadmin.mo +0 -0
  1134. data/lib/support/phpmyadmin/phpmyadmin/locale/ia/LC_MESSAGES/phpmyadmin.mo +0 -0
  1135. data/lib/support/phpmyadmin/phpmyadmin/locale/id/LC_MESSAGES/phpmyadmin.mo +0 -0
  1136. data/lib/support/phpmyadmin/phpmyadmin/locale/it/LC_MESSAGES/phpmyadmin.mo +0 -0
  1137. data/lib/support/phpmyadmin/phpmyadmin/locale/ja/LC_MESSAGES/phpmyadmin.mo +0 -0
  1138. data/lib/support/phpmyadmin/phpmyadmin/locale/ko/LC_MESSAGES/phpmyadmin.mo +0 -0
  1139. data/lib/support/phpmyadmin/phpmyadmin/locale/lt/LC_MESSAGES/phpmyadmin.mo +0 -0
  1140. data/lib/support/phpmyadmin/phpmyadmin/locale/nb/LC_MESSAGES/phpmyadmin.mo +0 -0
  1141. data/lib/support/phpmyadmin/phpmyadmin/locale/nl/LC_MESSAGES/phpmyadmin.mo +0 -0
  1142. data/lib/support/phpmyadmin/phpmyadmin/locale/pl/LC_MESSAGES/phpmyadmin.mo +0 -0
  1143. data/lib/support/phpmyadmin/phpmyadmin/locale/pt/LC_MESSAGES/phpmyadmin.mo +0 -0
  1144. data/lib/support/phpmyadmin/phpmyadmin/locale/pt_BR/LC_MESSAGES/phpmyadmin.mo +0 -0
  1145. data/lib/support/phpmyadmin/phpmyadmin/locale/ro/LC_MESSAGES/phpmyadmin.mo +0 -0
  1146. data/lib/support/phpmyadmin/phpmyadmin/locale/ru/LC_MESSAGES/phpmyadmin.mo +0 -0
  1147. data/lib/support/phpmyadmin/phpmyadmin/locale/si/LC_MESSAGES/phpmyadmin.mo +0 -0
  1148. data/lib/support/phpmyadmin/phpmyadmin/locale/sk/LC_MESSAGES/phpmyadmin.mo +0 -0
  1149. data/lib/support/phpmyadmin/phpmyadmin/locale/sl/LC_MESSAGES/phpmyadmin.mo +0 -0
  1150. data/lib/support/phpmyadmin/phpmyadmin/locale/sq/LC_MESSAGES/phpmyadmin.mo +0 -0
  1151. data/lib/support/phpmyadmin/phpmyadmin/locale/sr@latin/LC_MESSAGES/phpmyadmin.mo +0 -0
  1152. data/lib/support/phpmyadmin/phpmyadmin/locale/sv/LC_MESSAGES/phpmyadmin.mo +0 -0
  1153. data/lib/support/phpmyadmin/phpmyadmin/locale/tr/LC_MESSAGES/phpmyadmin.mo +0 -0
  1154. data/lib/support/phpmyadmin/phpmyadmin/locale/uk/LC_MESSAGES/phpmyadmin.mo +0 -0
  1155. data/lib/support/phpmyadmin/phpmyadmin/locale/zh_CN/LC_MESSAGES/phpmyadmin.mo +0 -0
  1156. data/lib/support/phpmyadmin/phpmyadmin/locale/zh_TW/LC_MESSAGES/phpmyadmin.mo +0 -0
  1157. data/lib/support/phpmyadmin/phpmyadmin/navigation.php +71 -0
  1158. data/lib/support/phpmyadmin/phpmyadmin/normalization.php +122 -0
  1159. data/lib/support/phpmyadmin/phpmyadmin/phpinfo.php +21 -0
  1160. data/lib/support/phpmyadmin/phpmyadmin/phpmyadmin.css.php +39 -0
  1161. data/lib/support/phpmyadmin/phpmyadmin/phpunit.xml.hhvm +30 -0
  1162. data/lib/support/phpmyadmin/phpmyadmin/phpunit.xml.nocoverage +40 -0
  1163. data/lib/support/phpmyadmin/phpmyadmin/prefs_forms.php +92 -0
  1164. data/lib/support/phpmyadmin/phpmyadmin/prefs_manage.php +375 -0
  1165. data/lib/support/phpmyadmin/phpmyadmin/print.css +92 -0
  1166. data/lib/support/phpmyadmin/phpmyadmin/robots.txt +2 -0
  1167. data/lib/support/phpmyadmin/phpmyadmin/schema_export.php +77 -0
  1168. data/lib/support/phpmyadmin/phpmyadmin/server_binlog.php +54 -0
  1169. data/lib/support/phpmyadmin/phpmyadmin/server_collations.php +39 -0
  1170. data/lib/support/phpmyadmin/phpmyadmin/server_databases.php +118 -0
  1171. data/lib/support/phpmyadmin/phpmyadmin/server_engines.php +34 -0
  1172. data/lib/support/phpmyadmin/phpmyadmin/server_export.php +29 -0
  1173. data/lib/support/phpmyadmin/phpmyadmin/server_import.php +27 -0
  1174. data/lib/support/phpmyadmin/phpmyadmin/server_plugins.php +59 -0
  1175. data/lib/support/phpmyadmin/phpmyadmin/server_privileges.php +410 -0
  1176. data/lib/support/phpmyadmin/phpmyadmin/server_replication.php +83 -0
  1177. data/lib/support/phpmyadmin/phpmyadmin/server_sql.php +32 -0
  1178. data/lib/support/phpmyadmin/phpmyadmin/server_status.php +38 -0
  1179. data/lib/support/phpmyadmin/phpmyadmin/server_status_advisor.php +39 -0
  1180. data/lib/support/phpmyadmin/phpmyadmin/server_status_monitor.php +113 -0
  1181. data/lib/support/phpmyadmin/phpmyadmin/server_status_processes.php +64 -0
  1182. data/lib/support/phpmyadmin/phpmyadmin/server_status_queries.php +54 -0
  1183. data/lib/support/phpmyadmin/phpmyadmin/server_status_variables.php +57 -0
  1184. data/lib/support/phpmyadmin/phpmyadmin/server_user_groups.php +72 -0
  1185. data/lib/support/phpmyadmin/phpmyadmin/server_variables.php +60 -0
  1186. data/lib/support/phpmyadmin/phpmyadmin/setup/ajax.js +11 -0
  1187. data/lib/support/phpmyadmin/phpmyadmin/setup/config.php +81 -0
  1188. data/lib/support/phpmyadmin/phpmyadmin/setup/frames/config.inc.php +52 -0
  1189. data/lib/support/phpmyadmin/phpmyadmin/setup/frames/form.inc.php +36 -0
  1190. data/lib/support/phpmyadmin/phpmyadmin/setup/frames/index.inc.php +313 -0
  1191. data/lib/support/phpmyadmin/phpmyadmin/setup/frames/menu.inc.php +37 -0
  1192. data/lib/support/phpmyadmin/phpmyadmin/setup/frames/servers.inc.php +50 -0
  1193. data/lib/support/phpmyadmin/phpmyadmin/setup/index.php +61 -0
  1194. data/lib/support/phpmyadmin/phpmyadmin/setup/lib/ConfigGenerator.class.php +161 -0
  1195. data/lib/support/phpmyadmin/phpmyadmin/setup/lib/common.inc.php +56 -0
  1196. data/lib/support/phpmyadmin/phpmyadmin/setup/lib/form_processing.lib.php +81 -0
  1197. data/lib/support/phpmyadmin/phpmyadmin/setup/lib/index.lib.php +204 -0
  1198. data/lib/support/phpmyadmin/phpmyadmin/setup/scripts.js +216 -0
  1199. data/lib/support/phpmyadmin/phpmyadmin/setup/styles.css +619 -0
  1200. data/lib/support/phpmyadmin/phpmyadmin/setup/validate.php +32 -0
  1201. data/lib/support/phpmyadmin/phpmyadmin/show_config_errors.php +40 -0
  1202. data/lib/support/phpmyadmin/phpmyadmin/sql/create_tables.sql +323 -0
  1203. data/lib/support/phpmyadmin/phpmyadmin/sql/create_tables_drizzle.sql +275 -0
  1204. data/lib/support/phpmyadmin/phpmyadmin/sql/upgrade_column_info_4_3_0+.sql +47 -0
  1205. data/lib/support/phpmyadmin/phpmyadmin/sql/upgrade_tables_mysql_4_1_2+.sql +144 -0
  1206. data/lib/support/phpmyadmin/phpmyadmin/sql.php +203 -0
  1207. data/lib/support/phpmyadmin/phpmyadmin/tbl_addfield.php +124 -0
  1208. data/lib/support/phpmyadmin/phpmyadmin/tbl_change.php +232 -0
  1209. data/lib/support/phpmyadmin/phpmyadmin/tbl_chart.php +142 -0
  1210. data/lib/support/phpmyadmin/phpmyadmin/tbl_create.php +108 -0
  1211. data/lib/support/phpmyadmin/phpmyadmin/tbl_export.php +107 -0
  1212. data/lib/support/phpmyadmin/phpmyadmin/tbl_find_replace.php +66 -0
  1213. data/lib/support/phpmyadmin/phpmyadmin/tbl_get_field.php +55 -0
  1214. data/lib/support/phpmyadmin/phpmyadmin/tbl_gis_visualization.php +115 -0
  1215. data/lib/support/phpmyadmin/phpmyadmin/tbl_import.php +30 -0
  1216. data/lib/support/phpmyadmin/phpmyadmin/tbl_indexes.php +60 -0
  1217. data/lib/support/phpmyadmin/phpmyadmin/tbl_operations.php +423 -0
  1218. data/lib/support/phpmyadmin/phpmyadmin/tbl_printview.php +74 -0
  1219. data/lib/support/phpmyadmin/phpmyadmin/tbl_recent_favorite.php +19 -0
  1220. data/lib/support/phpmyadmin/phpmyadmin/tbl_relation.php +156 -0
  1221. data/lib/support/phpmyadmin/phpmyadmin/tbl_replace.php +468 -0
  1222. data/lib/support/phpmyadmin/phpmyadmin/tbl_row_action.php +146 -0
  1223. data/lib/support/phpmyadmin/phpmyadmin/tbl_select.php +81 -0
  1224. data/lib/support/phpmyadmin/phpmyadmin/tbl_sql.php +52 -0
  1225. data/lib/support/phpmyadmin/phpmyadmin/tbl_structure.php +210 -0
  1226. data/lib/support/phpmyadmin/phpmyadmin/tbl_tracking.php +209 -0
  1227. data/lib/support/phpmyadmin/phpmyadmin/tbl_triggers.php +10 -0
  1228. data/lib/support/phpmyadmin/phpmyadmin/tbl_zoom_select.php +165 -0
  1229. data/lib/support/phpmyadmin/phpmyadmin/themes/dot.gif +0 -0
  1230. data/lib/support/phpmyadmin/phpmyadmin/themes/original/css/common.css.php +3078 -0
  1231. data/lib/support/phpmyadmin/phpmyadmin/themes/original/css/navigation.css.php +424 -0
  1232. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/ajax_clock_small.gif +0 -0
  1233. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/arrow_ltr.png +0 -0
  1234. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/arrow_rtl.png +0 -0
  1235. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_bookmark.png +0 -0
  1236. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_browse.png +0 -0
  1237. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_calendar.png +0 -0
  1238. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_chart.png +0 -0
  1239. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_close.png +0 -0
  1240. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_column_add.png +0 -0
  1241. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_comment.png +0 -0
  1242. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_dbstatistics.png +0 -0
  1243. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_deltbl.png +0 -0
  1244. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_docs.png +0 -0
  1245. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_drop.png +0 -0
  1246. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_edit.png +0 -0
  1247. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_empty.png +0 -0
  1248. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_engine.png +0 -0
  1249. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_event_add.png +0 -0
  1250. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_events.png +0 -0
  1251. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_export.png +0 -0
  1252. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_favorite.png +0 -0
  1253. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_find_replace.png +0 -0
  1254. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_ftext.png +0 -0
  1255. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_globe.gif +0 -0
  1256. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_group.png +0 -0
  1257. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_help.png +0 -0
  1258. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_home.png +0 -0
  1259. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_import.png +0 -0
  1260. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_index.png +0 -0
  1261. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_index_add.png +0 -0
  1262. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_info.png +0 -0
  1263. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_inline_edit.png +0 -0
  1264. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_insrow.png +0 -0
  1265. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_minus.png +0 -0
  1266. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_more.png +0 -0
  1267. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_move.png +0 -0
  1268. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_newdb.png +0 -0
  1269. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_newtbl.png +0 -0
  1270. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_nextpage.png +0 -0
  1271. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_no_favorite.png +0 -0
  1272. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_plus.png +0 -0
  1273. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_primary.png +0 -0
  1274. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_print.png +0 -0
  1275. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_props.png +0 -0
  1276. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_relations.png +0 -0
  1277. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_report.png +0 -0
  1278. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_routine_add.png +0 -0
  1279. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_routines.png +0 -0
  1280. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_save.png +0 -0
  1281. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_saveimage.png +0 -0
  1282. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_sbrowse.png +0 -0
  1283. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_search.png +0 -0
  1284. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_selboard.png +0 -0
  1285. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_select.png +0 -0
  1286. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_snewtbl.png +0 -0
  1287. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_spatial.png +0 -0
  1288. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_sql.png +0 -0
  1289. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_sqlhelp.png +0 -0
  1290. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_table_add.png +0 -0
  1291. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_tblanalyse.png +0 -0
  1292. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_tblexport.png +0 -0
  1293. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_tblimport.png +0 -0
  1294. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_tblops.png +0 -0
  1295. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_tbloptimize.png +0 -0
  1296. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_tipp.png +0 -0
  1297. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_trigger_add.png +0 -0
  1298. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_triggers.png +0 -0
  1299. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_undo.png +0 -0
  1300. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_unique.png +0 -0
  1301. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_usradd.png +0 -0
  1302. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_usrcheck.png +0 -0
  1303. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_usrdrop.png +0 -0
  1304. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_usredit.png +0 -0
  1305. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_usrlist.png +0 -0
  1306. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_versions.png +0 -0
  1307. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_view.png +0 -0
  1308. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_view_add.png +0 -0
  1309. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/b_views.png +0 -0
  1310. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/bd_browse.png +0 -0
  1311. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/bd_deltbl.png +0 -0
  1312. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/bd_drop.png +0 -0
  1313. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/bd_edit.png +0 -0
  1314. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/bd_empty.png +0 -0
  1315. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/bd_export.png +0 -0
  1316. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/bd_ftext.png +0 -0
  1317. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/bd_index.png +0 -0
  1318. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/bd_insrow.png +0 -0
  1319. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/bd_nextpage.png +0 -0
  1320. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/bd_primary.png +0 -0
  1321. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/bd_routine_add.png +0 -0
  1322. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/bd_sbrowse.png +0 -0
  1323. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/bd_select.png +0 -0
  1324. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/bd_spatial.png +0 -0
  1325. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/bd_unique.png +0 -0
  1326. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/centralColumns.png +0 -0
  1327. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/centralColumns_add.png +0 -0
  1328. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/centralColumns_delete.png +0 -0
  1329. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/cleardot.gif +0 -0
  1330. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/col_drop.png +0 -0
  1331. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/col_pointer.png +0 -0
  1332. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/col_pointer_ver.png +0 -0
  1333. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/console.png +0 -0
  1334. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/east-mini.png +0 -0
  1335. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/error.ico +0 -0
  1336. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/eye.png +0 -0
  1337. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/eye_grey.png +0 -0
  1338. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/lightbulb.png +0 -0
  1339. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/lightbulb_off.png +0 -0
  1340. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/logo_left.png +0 -0
  1341. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/logo_right.png +0 -0
  1342. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/more.png +0 -0
  1343. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/new_data.png +0 -0
  1344. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/new_data_hovered.png +0 -0
  1345. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/new_data_selected.png +0 -0
  1346. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/new_data_selected_hovered.png +0 -0
  1347. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/new_struct.png +0 -0
  1348. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/new_struct_hovered.png +0 -0
  1349. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/new_struct_selected.png +0 -0
  1350. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/new_struct_selected_hovered.png +0 -0
  1351. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/normalize.png +0 -0
  1352. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/north-mini.png +0 -0
  1353. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/pause.png +0 -0
  1354. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/play.png +0 -0
  1355. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_asc.png +0 -0
  1356. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_asci.png +0 -0
  1357. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_attention.png +0 -0
  1358. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_cancel.png +0 -0
  1359. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_cog.png +0 -0
  1360. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_collapseall.png +0 -0
  1361. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_db.png +0 -0
  1362. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_desc.png +0 -0
  1363. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_error.png +0 -0
  1364. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_error2.png +0 -0
  1365. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_fulltext.png +0 -0
  1366. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_host.png +0 -0
  1367. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_info.png +0 -0
  1368. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_lang.png +0 -0
  1369. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_link.png +0 -0
  1370. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_lock.png +0 -0
  1371. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_loggoff.png +0 -0
  1372. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_notice.png +0 -0
  1373. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_partialtext.png +0 -0
  1374. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_passwd.png +0 -0
  1375. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_really.png +0 -0
  1376. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_reload.png +0 -0
  1377. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_replication.png +0 -0
  1378. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_rights.png +0 -0
  1379. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_sortable.png +0 -0
  1380. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_status.png +0 -0
  1381. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_success.png +0 -0
  1382. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_sync.png +0 -0
  1383. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_tbl.png +0 -0
  1384. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_theme.png +0 -0
  1385. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_top.png +0 -0
  1386. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_unlink.png +0 -0
  1387. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_vars.png +0 -0
  1388. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/s_views.png +0 -0
  1389. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/south-mini.png +0 -0
  1390. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/spacer.png +0 -0
  1391. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/sprites.png +0 -0
  1392. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/toggle-ltr.png +0 -0
  1393. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/toggle-rtl.png +0 -0
  1394. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/vertical_line.png +0 -0
  1395. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/west-mini.png +0 -0
  1396. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/window-new.png +0 -0
  1397. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/zoom-minus-mini.png +0 -0
  1398. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/zoom-plus-mini.png +0 -0
  1399. data/lib/support/phpmyadmin/phpmyadmin/themes/original/img/zoom-world-mini.png +0 -0
  1400. data/lib/support/phpmyadmin/phpmyadmin/themes/original/info.inc.php +15 -0
  1401. data/lib/support/phpmyadmin/phpmyadmin/themes/original/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  1402. data/lib/support/phpmyadmin/phpmyadmin/themes/original/jquery/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  1403. data/lib/support/phpmyadmin/phpmyadmin/themes/original/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  1404. data/lib/support/phpmyadmin/phpmyadmin/themes/original/jquery/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  1405. data/lib/support/phpmyadmin/phpmyadmin/themes/original/jquery/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  1406. data/lib/support/phpmyadmin/phpmyadmin/themes/original/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  1407. data/lib/support/phpmyadmin/phpmyadmin/themes/original/jquery/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  1408. data/lib/support/phpmyadmin/phpmyadmin/themes/original/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  1409. data/lib/support/phpmyadmin/phpmyadmin/themes/original/jquery/images/ui-icons_222222_256x240.png +0 -0
  1410. data/lib/support/phpmyadmin/phpmyadmin/themes/original/jquery/images/ui-icons_2e83ff_256x240.png +0 -0
  1411. data/lib/support/phpmyadmin/phpmyadmin/themes/original/jquery/images/ui-icons_454545_256x240.png +0 -0
  1412. data/lib/support/phpmyadmin/phpmyadmin/themes/original/jquery/images/ui-icons_888888_256x240.png +0 -0
  1413. data/lib/support/phpmyadmin/phpmyadmin/themes/original/jquery/images/ui-icons_cd0a0a_256x240.png +0 -0
  1414. data/lib/support/phpmyadmin/phpmyadmin/themes/original/jquery/jquery-ui-1.11.2.css +1225 -0
  1415. data/lib/support/phpmyadmin/phpmyadmin/themes/original/layout.inc.php +102 -0
  1416. data/lib/support/phpmyadmin/phpmyadmin/themes/original/screen.png +0 -0
  1417. data/lib/support/phpmyadmin/phpmyadmin/themes/original/sprites.lib.php +720 -0
  1418. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/css/codemirror.css.php +350 -0
  1419. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/css/common.css.php +3401 -0
  1420. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/css/enum_editor.css.php +80 -0
  1421. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/css/gis.css.php +52 -0
  1422. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/css/jqplot.css.php +277 -0
  1423. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/css/navigation.css.php +429 -0
  1424. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/css/pmd.css.php +605 -0
  1425. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/css/resizable-menu.css.php +57 -0
  1426. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/css/rte.css.php +43 -0
  1427. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/ajax_clock_small.gif +0 -0
  1428. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/arrow_ltr.png +0 -0
  1429. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/arrow_rtl.png +0 -0
  1430. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/asc_order.png +0 -0
  1431. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_bookmark.png +0 -0
  1432. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_browse.png +0 -0
  1433. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_calendar.png +0 -0
  1434. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_chart.png +0 -0
  1435. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_close.png +0 -0
  1436. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_column_add.png +0 -0
  1437. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_comment.png +0 -0
  1438. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_dbstatistics.png +0 -0
  1439. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_deltbl.png +0 -0
  1440. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_docs.png +0 -0
  1441. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_docsql.png +0 -0
  1442. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_drop.png +0 -0
  1443. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_edit.png +0 -0
  1444. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_empty.png +0 -0
  1445. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_engine.png +0 -0
  1446. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_event_add.png +0 -0
  1447. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_events.png +0 -0
  1448. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_export.png +0 -0
  1449. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_favorite.png +0 -0
  1450. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_find_replace.png +0 -0
  1451. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_firstpage.png +0 -0
  1452. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_ftext.png +0 -0
  1453. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_globe.gif +0 -0
  1454. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_group.png +0 -0
  1455. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_help.png +0 -0
  1456. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_home.png +0 -0
  1457. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_import.png +0 -0
  1458. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_index.png +0 -0
  1459. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_index_add.png +0 -0
  1460. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_info.png +0 -0
  1461. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_inline_edit.png +0 -0
  1462. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_insrow.png +0 -0
  1463. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_lastpage.png +0 -0
  1464. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_minus.png +0 -0
  1465. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_more.png +0 -0
  1466. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_move.png +0 -0
  1467. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_newdb.png +0 -0
  1468. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_newtbl.png +0 -0
  1469. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_nextpage.png +0 -0
  1470. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_no_favorite.png +0 -0
  1471. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_pdfdoc.png +0 -0
  1472. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_plus.png +0 -0
  1473. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_prevpage.png +0 -0
  1474. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_primary.png +0 -0
  1475. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_print.png +0 -0
  1476. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_props.png +0 -0
  1477. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_relations.png +0 -0
  1478. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_report.png +0 -0
  1479. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_routine_add.png +0 -0
  1480. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_routines.png +0 -0
  1481. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_save.png +0 -0
  1482. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_saveimage.png +0 -0
  1483. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_sbrowse.png +0 -0
  1484. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_sdb.png +0 -0
  1485. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_search.png +0 -0
  1486. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_selboard.png +0 -0
  1487. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_select.png +0 -0
  1488. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_snewtbl.png +0 -0
  1489. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_spatial.png +0 -0
  1490. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_sql.png +0 -0
  1491. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_sqldoc.png +0 -0
  1492. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_sqlhelp.png +0 -0
  1493. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_table_add.png +0 -0
  1494. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_tblanalyse.png +0 -0
  1495. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_tblexport.png +0 -0
  1496. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_tblimport.png +0 -0
  1497. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_tblops.png +0 -0
  1498. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_tbloptimize.png +0 -0
  1499. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_tipp.png +0 -0
  1500. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_trigger_add.png +0 -0
  1501. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_triggers.png +0 -0
  1502. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_undo.png +0 -0
  1503. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_unique.png +0 -0
  1504. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_usradd.png +0 -0
  1505. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_usrcheck.png +0 -0
  1506. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_usrdrop.png +0 -0
  1507. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_usredit.png +0 -0
  1508. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_usrlist.png +0 -0
  1509. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_versions.png +0 -0
  1510. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_view.png +0 -0
  1511. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_view_add.png +0 -0
  1512. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/b_views.png +0 -0
  1513. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_browse.png +0 -0
  1514. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_deltbl.png +0 -0
  1515. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_drop.png +0 -0
  1516. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_edit.png +0 -0
  1517. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_empty.png +0 -0
  1518. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_export.png +0 -0
  1519. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_firstpage.png +0 -0
  1520. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_ftext.png +0 -0
  1521. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_index.png +0 -0
  1522. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_insrow.png +0 -0
  1523. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_lastpage.png +0 -0
  1524. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_nextpage.png +0 -0
  1525. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_prevpage.png +0 -0
  1526. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_primary.png +0 -0
  1527. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_routine_add.png +0 -0
  1528. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_sbrowse.png +0 -0
  1529. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_select.png +0 -0
  1530. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_spatial.png +0 -0
  1531. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/bd_unique.png +0 -0
  1532. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/centralColumns.png +0 -0
  1533. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/centralColumns_add.png +0 -0
  1534. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/centralColumns_delete.png +0 -0
  1535. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/col_drop.png +0 -0
  1536. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/col_pointer.png +0 -0
  1537. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/col_pointer_ver.png +0 -0
  1538. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/console.png +0 -0
  1539. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/database.png +0 -0
  1540. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/east-mini.png +0 -0
  1541. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/error.ico +0 -0
  1542. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/eye.png +0 -0
  1543. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/eye_grey.png +0 -0
  1544. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/item.png +0 -0
  1545. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/left_nav_bg.png +0 -0
  1546. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/lightbulb.png +0 -0
  1547. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/lightbulb_off.png +0 -0
  1548. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/logo_left.png +0 -0
  1549. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/logo_right.png +0 -0
  1550. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/more.png +0 -0
  1551. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/new_data.png +0 -0
  1552. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/new_data_hovered.png +0 -0
  1553. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/new_data_selected.png +0 -0
  1554. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/new_data_selected_hovered.png +0 -0
  1555. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/new_struct.png +0 -0
  1556. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/new_struct_hovered.png +0 -0
  1557. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/new_struct_selected.png +0 -0
  1558. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/new_struct_selected_hovered.png +0 -0
  1559. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/normalize.png +0 -0
  1560. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/north-mini.png +0 -0
  1561. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pause.png +0 -0
  1562. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/php_sym.png +0 -0
  1563. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/play.png +0 -0
  1564. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pma_logo2.png +0 -0
  1565. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/1.png +0 -0
  1566. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/2.png +0 -0
  1567. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/2leftarrow.png +0 -0
  1568. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/2leftarrow_m.png +0 -0
  1569. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/2rightarrow.png +0 -0
  1570. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/2rightarrow_m.png +0 -0
  1571. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/3.png +0 -0
  1572. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/4.png +0 -0
  1573. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/5.png +0 -0
  1574. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/6.png +0 -0
  1575. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/7.png +0 -0
  1576. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/8.png +0 -0
  1577. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/FieldKey_small.png +0 -0
  1578. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/Field_small.png +0 -0
  1579. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/Field_small_char.png +0 -0
  1580. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/Field_small_date.png +0 -0
  1581. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/Field_small_int.png +0 -0
  1582. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/Header.png +0 -0
  1583. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/Header_Linked.png +0 -0
  1584. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/anchor.png +0 -0
  1585. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/and_icon.png +0 -0
  1586. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/ang_direct.png +0 -0
  1587. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/bord.png +0 -0
  1588. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/bottom.png +0 -0
  1589. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/def.png +0 -0
  1590. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/display_field.png +0 -0
  1591. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/downarrow1.png +0 -0
  1592. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/downarrow2.png +0 -0
  1593. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/downarrow2_m.png +0 -0
  1594. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/exec.png +0 -0
  1595. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/exec_small.png +0 -0
  1596. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/exitFullscreen.png +0 -0
  1597. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/export.png +0 -0
  1598. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/favicon.ico +0 -0
  1599. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/grid.png +0 -0
  1600. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/help.png +0 -0
  1601. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/help_relation.png +0 -0
  1602. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/left_panel_butt.png +0 -0
  1603. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/left_panel_tab.png +0 -0
  1604. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/minus.png +0 -0
  1605. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/or_icon.png +0 -0
  1606. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/page_add.png +0 -0
  1607. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/page_delete.png +0 -0
  1608. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/page_edit.png +0 -0
  1609. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/pdf.png +0 -0
  1610. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/plus.png +0 -0
  1611. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/query_builder.png +0 -0
  1612. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/relation.png +0 -0
  1613. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/reload.png +0 -0
  1614. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/resize.png +0 -0
  1615. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/resizeright.png +0 -0
  1616. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/rightarrow1.png +0 -0
  1617. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/rightarrow2.png +0 -0
  1618. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/save.png +0 -0
  1619. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/save_as.png +0 -0
  1620. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/small_tab.png +0 -0
  1621. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/table.png +0 -0
  1622. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/toggle_lines.png +0 -0
  1623. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/top_panel.png +0 -0
  1624. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/uparrow2_m.png +0 -0
  1625. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/pmd/viewInFullscreen.png +0 -0
  1626. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_asc.png +0 -0
  1627. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_asci.png +0 -0
  1628. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_attention.png +0 -0
  1629. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_cancel.png +0 -0
  1630. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_cancel2.png +0 -0
  1631. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_cog.png +0 -0
  1632. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_collapseall.png +0 -0
  1633. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_db.png +0 -0
  1634. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_desc.png +0 -0
  1635. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_error.png +0 -0
  1636. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_error2.png +0 -0
  1637. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_fulltext.png +0 -0
  1638. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_host.png +0 -0
  1639. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_info.png +0 -0
  1640. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_lang.png +0 -0
  1641. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_link.png +0 -0
  1642. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_lock.png +0 -0
  1643. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_loggoff.png +0 -0
  1644. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_notice.png +0 -0
  1645. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_okay.png +0 -0
  1646. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_partialtext.png +0 -0
  1647. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_passwd.png +0 -0
  1648. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_process.png +0 -0
  1649. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_really.png +0 -0
  1650. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_reload.png +0 -0
  1651. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_replication.png +0 -0
  1652. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_rights.png +0 -0
  1653. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_sortable.png +0 -0
  1654. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_status.png +0 -0
  1655. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_success.png +0 -0
  1656. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_sync.png +0 -0
  1657. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_tbl.png +0 -0
  1658. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_theme.png +0 -0
  1659. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_top.png +0 -0
  1660. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_unlink.png +0 -0
  1661. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_vars.png +0 -0
  1662. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/s_views.png +0 -0
  1663. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/select_bg.png +0 -0
  1664. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/south-mini.png +0 -0
  1665. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/spacer.png +0 -0
  1666. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/sprites.png +0 -0
  1667. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/toggle-ltr.png +0 -0
  1668. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/toggle-rtl.png +0 -0
  1669. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/vertical_line.png +0 -0
  1670. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/west-mini.png +0 -0
  1671. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/window-new.png +0 -0
  1672. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/zoom-minus-mini.png +0 -0
  1673. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/zoom-plus-mini.png +0 -0
  1674. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/img/zoom-world-mini.png +0 -0
  1675. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/info.inc.php +21 -0
  1676. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/jquery/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  1677. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/jquery/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  1678. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  1679. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/jquery/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  1680. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/jquery/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  1681. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  1682. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/jquery/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  1683. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  1684. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/jquery/images/ui-icons_222222_256x240.png +0 -0
  1685. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/jquery/images/ui-icons_2e83ff_256x240.png +0 -0
  1686. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/jquery/images/ui-icons_454545_256x240.png +0 -0
  1687. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/jquery/images/ui-icons_888888_256x240.png +0 -0
  1688. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/jquery/images/ui-icons_cd0a0a_256x240.png +0 -0
  1689. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/jquery/jquery-ui-1.11.2.css +1225 -0
  1690. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/layout.inc.php +104 -0
  1691. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/screen.png +0 -0
  1692. data/lib/support/phpmyadmin/phpmyadmin/themes/pmahomme/sprites.lib.php +805 -0
  1693. data/lib/support/phpmyadmin/phpmyadmin/themes/sprites.css.php +60 -0
  1694. data/lib/support/phpmyadmin/phpmyadmin/themes/svg_gradient.php +53 -0
  1695. data/lib/support/phpmyadmin/phpmyadmin/themes.php +32 -0
  1696. data/lib/support/phpmyadmin/phpmyadmin/transformation_overview.php +74 -0
  1697. data/lib/support/phpmyadmin/phpmyadmin/transformation_wrapper.php +148 -0
  1698. data/lib/support/phpmyadmin/phpmyadmin/url.php +38 -0
  1699. data/lib/support/phpmyadmin/phpmyadmin/user_password.php +200 -0
  1700. data/lib/support/phpmyadmin/phpmyadmin/version_check.php +30 -0
  1701. data/lib/support/phpmyadmin/phpmyadmin/view_create.php +291 -0
  1702. data/lib/support/phpmyadmin/phpmyadmin/view_operations.php +139 -0
  1703. data/lib/support/phpmyadmin/phpmyadmin/webapp.php +55 -0
  1704. data/lib/support/pptp_vpn/ubuntu/pptpd-options +122 -0
  1705. data/lib/support/pptp_vpn/ubuntu/rc.local +17 -0
  1706. data/lib/support/pptp_vpn/ubuntu/sysctl.conf +102 -0
  1707. metadata +1705 -1
@@ -0,0 +1,4692 @@
1
+ <?php
2
+ /* vim: set expandtab sw=4 ts=4 sts=4: */
3
+ /**
4
+ * set of functions with the Privileges section in pma
5
+ *
6
+ * @package PhpMyAdmin
7
+ */
8
+
9
+ if (! defined('PHPMYADMIN')) {
10
+ exit;
11
+ }
12
+
13
+ /**
14
+ * Get Html for User Group Dialog
15
+ *
16
+ * @param string $username username
17
+ * @param bool $is_menuswork Is menuswork set in configuration
18
+ *
19
+ * @return string html
20
+ */
21
+ function PMA_getHtmlForUserGroupDialog($username, $is_menuswork)
22
+ {
23
+ $html = '';
24
+ if (! empty($_REQUEST['edit_user_group_dialog']) && $is_menuswork) {
25
+ $dialog = PMA_getHtmlToChooseUserGroup($username);
26
+ $response = PMA_Response::getInstance();
27
+ if ($GLOBALS['is_ajax_request']) {
28
+ $response->addJSON('message', $dialog);
29
+ exit;
30
+ } else {
31
+ $html .= $dialog;
32
+ }
33
+ }
34
+
35
+ return $html;
36
+ }
37
+
38
+ /**
39
+ * Escapes wildcard in a database+table specification
40
+ * before using it in a GRANT statement.
41
+ *
42
+ * Escaping a wildcard character in a GRANT is only accepted at the global
43
+ * or database level, not at table level; this is why I remove
44
+ * the escaping character. Internally, in mysql.tables_priv.Db there are
45
+ * no escaping (for example test_db) but in mysql.db you'll see test\_db
46
+ * for a db-specific privilege.
47
+ *
48
+ * @param string $dbname Database name
49
+ * @param string $tablename Table name
50
+ *
51
+ * @return string the escaped (if necessary) database.table
52
+ */
53
+ function PMA_wildcardEscapeForGrant($dbname, $tablename)
54
+ {
55
+ if (!/*overload*/mb_strlen($dbname)) {
56
+ $db_and_table = '*.*';
57
+ } else {
58
+ if (/*overload*/mb_strlen($tablename)) {
59
+ $db_and_table = PMA_Util::backquote(
60
+ PMA_Util::unescapeMysqlWildcards($dbname)
61
+ )
62
+ . '.' . PMA_Util::backquote($tablename);
63
+ } else {
64
+ $db_and_table = PMA_Util::backquote($dbname) . '.*';
65
+ }
66
+ }
67
+ return $db_and_table;
68
+ }
69
+
70
+ /**
71
+ * Generates a condition on the user name
72
+ *
73
+ * @param string $initial the user's initial
74
+ *
75
+ * @return string the generated condition
76
+ */
77
+ function PMA_rangeOfUsers($initial = '')
78
+ {
79
+ // strtolower() is used because the User field
80
+ // might be BINARY, so LIKE would be case sensitive
81
+ if ($initial === null || $initial === '') {
82
+ return '';
83
+ }
84
+
85
+ $ret = " WHERE `User` LIKE '"
86
+ . PMA_Util::sqlAddSlashes($initial, true) . "%'"
87
+ . " OR `User` LIKE '"
88
+ . PMA_Util::sqlAddSlashes(/*overload*/mb_strtolower($initial), true)
89
+ . "%'";
90
+ return $ret;
91
+ } // end function
92
+
93
+ /**
94
+ * Formats privilege name for a display
95
+ *
96
+ * @param array $privilege Privilege information
97
+ * @param boolean $html Whether to use HTML
98
+ *
99
+ * @return string
100
+ */
101
+ function PMA_formatPrivilege($privilege, $html)
102
+ {
103
+ if ($html) {
104
+ return '<dfn title="' . $privilege[2] . '">'
105
+ . $privilege[1] . '</dfn>';
106
+ } else {
107
+ return $privilege[1];
108
+ }
109
+ }
110
+
111
+ /**
112
+ * Parses privileges into an array, it modifies the array
113
+ *
114
+ * @param array &$row Results row from
115
+ *
116
+ * @return void
117
+ */
118
+ function PMA_fillInTablePrivileges(&$row)
119
+ {
120
+ $row1 = $GLOBALS['dbi']->fetchSingleRow(
121
+ 'SHOW COLUMNS FROM `mysql`.`tables_priv` LIKE \'Table_priv\';',
122
+ 'ASSOC', $GLOBALS['userlink']
123
+ );
124
+ // note: in MySQL 5.0.3 we get "Create View', 'Show view';
125
+ // the View for Create is spelled with uppercase V
126
+ // the view for Show is spelled with lowercase v
127
+ // and there is a space between the words
128
+
129
+ $av_grants = explode(
130
+ '\',\'',
131
+ /*overload*/mb_substr(
132
+ $row1['Type'],
133
+ /*overload*/mb_strpos($row1['Type'], '(') + 2,
134
+ /*overload*/mb_strpos($row1['Type'], ')')
135
+ - /*overload*/mb_strpos($row1['Type'], '(') - 3
136
+ )
137
+ );
138
+
139
+ $users_grants = explode(',', $row['Table_priv']);
140
+
141
+ foreach ($av_grants as $current_grant) {
142
+ $row[$current_grant . '_priv']
143
+ = in_array($current_grant, $users_grants) ? 'Y' : 'N';
144
+ }
145
+ unset($row['Table_priv']);
146
+ }
147
+
148
+
149
+ /**
150
+ * Extracts the privilege information of a priv table row
151
+ *
152
+ * @param array|null $row the row
153
+ * @param boolean $enableHTML add <dfn> tag with tooltips
154
+ * @param boolean $tablePrivs whether row contains table privileges
155
+ *
156
+ * @global resource $user_link the database connection
157
+ *
158
+ * @return array
159
+ */
160
+ function PMA_extractPrivInfo($row = null, $enableHTML = false, $tablePrivs = false)
161
+ {
162
+ if ($tablePrivs) {
163
+ $grants = PMA_getTableGrantsArray();
164
+ } else {
165
+ $grants = PMA_getGrantsArray();
166
+ }
167
+
168
+ if (! is_null($row) && isset($row['Table_priv'])) {
169
+ PMA_fillInTablePrivileges($row);
170
+ }
171
+
172
+ $privs = array();
173
+ $allPrivileges = true;
174
+ foreach ($grants as $current_grant) {
175
+ if ((! is_null($row) && isset($row[$current_grant[0]]))
176
+ || (is_null($row) && isset($GLOBALS[$current_grant[0]]))
177
+ ) {
178
+ if ((! is_null($row) && $row[$current_grant[0]] == 'Y')
179
+ || (is_null($row)
180
+ && ($GLOBALS[$current_grant[0]] == 'Y'
181
+ || (is_array($GLOBALS[$current_grant[0]])
182
+ && count($GLOBALS[$current_grant[0]]) == $_REQUEST['column_count']
183
+ && empty($GLOBALS[$current_grant[0] . '_none']))))
184
+ ) {
185
+ $privs[] = PMA_formatPrivilege($current_grant, $enableHTML);
186
+ } elseif (! empty($GLOBALS[$current_grant[0]])
187
+ && is_array($GLOBALS[$current_grant[0]])
188
+ && empty($GLOBALS[$current_grant[0] . '_none'])
189
+ ) {
190
+ $privs[] = PMA_formatPrivilege($current_grant, $enableHTML)
191
+ . ' (`' . join('`, `', $GLOBALS[$current_grant[0]]) . '`)';
192
+ } else {
193
+ $allPrivileges = false;
194
+ }
195
+ }
196
+ }
197
+ if (empty($privs)) {
198
+ if ($enableHTML) {
199
+ $privs[] = '<dfn title="' . __('No privileges.') . '">USAGE</dfn>';
200
+ } else {
201
+ $privs[] = 'USAGE';
202
+ }
203
+ } elseif ($allPrivileges
204
+ && (! isset($_POST['grant_count']) || count($privs) == $_POST['grant_count'])
205
+ ) {
206
+ if ($enableHTML) {
207
+ $privs = array('<dfn title="'
208
+ . __('Includes all privileges except GRANT.')
209
+ . '">ALL PRIVILEGES</dfn>'
210
+ );
211
+ } else {
212
+ $privs = array('ALL PRIVILEGES');
213
+ }
214
+ }
215
+ return $privs;
216
+ } // end of the 'PMA_extractPrivInfo()' function
217
+
218
+ /**
219
+ * Returns an array of table grants and their descriptions
220
+ *
221
+ * @return array array of table grants
222
+ */
223
+ function PMA_getTableGrantsArray()
224
+ {
225
+ return array(
226
+ array(
227
+ 'Delete',
228
+ 'DELETE',
229
+ $GLOBALS['strPrivDescDelete']
230
+ ),
231
+ array(
232
+ 'Create',
233
+ 'CREATE',
234
+ $GLOBALS['strPrivDescCreateTbl']
235
+ ),
236
+ array(
237
+ 'Drop',
238
+ 'DROP',
239
+ $GLOBALS['strPrivDescDropTbl']
240
+ ),
241
+ array(
242
+ 'Index',
243
+ 'INDEX',
244
+ $GLOBALS['strPrivDescIndex']
245
+ ),
246
+ array(
247
+ 'Alter',
248
+ 'ALTER',
249
+ $GLOBALS['strPrivDescAlter']
250
+ ),
251
+ array(
252
+ 'Create View',
253
+ 'CREATE_VIEW',
254
+ $GLOBALS['strPrivDescCreateView']
255
+ ),
256
+ array(
257
+ 'Show view',
258
+ 'SHOW_VIEW',
259
+ $GLOBALS['strPrivDescShowView']
260
+ ),
261
+ array(
262
+ 'Trigger',
263
+ 'TRIGGER',
264
+ $GLOBALS['strPrivDescTrigger']
265
+ ),
266
+ );
267
+ }
268
+
269
+ /**
270
+ * Get the grants array which contains all the privilege types
271
+ * and relevant grant messages
272
+ *
273
+ * @return array
274
+ */
275
+ function PMA_getGrantsArray()
276
+ {
277
+ return array(
278
+ array(
279
+ 'Select_priv',
280
+ 'SELECT',
281
+ __('Allows reading data.')
282
+ ),
283
+ array(
284
+ 'Insert_priv',
285
+ 'INSERT',
286
+ __('Allows inserting and replacing data.')
287
+ ),
288
+ array(
289
+ 'Update_priv',
290
+ 'UPDATE',
291
+ __('Allows changing data.')
292
+ ),
293
+ array(
294
+ 'Delete_priv',
295
+ 'DELETE',
296
+ __('Allows deleting data.')
297
+ ),
298
+ array(
299
+ 'Create_priv',
300
+ 'CREATE',
301
+ __('Allows creating new databases and tables.')
302
+ ),
303
+ array(
304
+ 'Drop_priv',
305
+ 'DROP',
306
+ __('Allows dropping databases and tables.')
307
+ ),
308
+ array(
309
+ 'Reload_priv',
310
+ 'RELOAD',
311
+ __('Allows reloading server settings and flushing the server\'s caches.')
312
+ ),
313
+ array(
314
+ 'Shutdown_priv',
315
+ 'SHUTDOWN',
316
+ __('Allows shutting down the server.')
317
+ ),
318
+ array(
319
+ 'Process_priv',
320
+ 'PROCESS',
321
+ __('Allows viewing processes of all users.')
322
+ ),
323
+ array(
324
+ 'File_priv',
325
+ 'FILE',
326
+ __('Allows importing data from and exporting data into files.')
327
+ ),
328
+ array(
329
+ 'References_priv',
330
+ 'REFERENCES',
331
+ __('Has no effect in this MySQL version.')
332
+ ),
333
+ array(
334
+ 'Index_priv',
335
+ 'INDEX',
336
+ __('Allows creating and dropping indexes.')
337
+ ),
338
+ array(
339
+ 'Alter_priv',
340
+ 'ALTER',
341
+ __('Allows altering the structure of existing tables.')
342
+ ),
343
+ array(
344
+ 'Show_db_priv',
345
+ 'SHOW DATABASES',
346
+ __('Gives access to the complete list of databases.')
347
+ ),
348
+ array(
349
+ 'Super_priv',
350
+ 'SUPER',
351
+ __(
352
+ 'Allows connecting, even if maximum number of connections '
353
+ . 'is reached; required for most administrative operations '
354
+ . 'like setting global variables or killing threads of other users.'
355
+ )
356
+ ),
357
+ array(
358
+ 'Create_tmp_table_priv',
359
+ 'CREATE TEMPORARY TABLES',
360
+ __('Allows creating temporary tables.')
361
+ ),
362
+ array(
363
+ 'Lock_tables_priv',
364
+ 'LOCK TABLES',
365
+ __('Allows locking tables for the current thread.')
366
+ ),
367
+ array(
368
+ 'Repl_slave_priv',
369
+ 'REPLICATION SLAVE',
370
+ __('Needed for the replication slaves.')
371
+ ),
372
+ array(
373
+ 'Repl_client_priv',
374
+ 'REPLICATION CLIENT',
375
+ __('Allows the user to ask where the slaves / masters are.')
376
+ ),
377
+ array(
378
+ 'Create_view_priv',
379
+ 'CREATE VIEW',
380
+ __('Allows creating new views.')
381
+ ),
382
+ array(
383
+ 'Event_priv',
384
+ 'EVENT',
385
+ __('Allows to set up events for the event scheduler.')
386
+ ),
387
+ array(
388
+ 'Trigger_priv',
389
+ 'TRIGGER',
390
+ __('Allows creating and dropping triggers.')
391
+ ),
392
+ // for table privs:
393
+ array(
394
+ 'Create View_priv',
395
+ 'CREATE VIEW',
396
+ __('Allows creating new views.')
397
+ ),
398
+ array(
399
+ 'Show_view_priv',
400
+ 'SHOW VIEW',
401
+ __('Allows performing SHOW CREATE VIEW queries.')
402
+ ),
403
+ // for table privs:
404
+ array(
405
+ 'Show view_priv',
406
+ 'SHOW VIEW',
407
+ __('Allows performing SHOW CREATE VIEW queries.')
408
+ ),
409
+ array(
410
+ 'Create_routine_priv',
411
+ 'CREATE ROUTINE',
412
+ __('Allows creating stored routines.')
413
+ ),
414
+ array(
415
+ 'Alter_routine_priv',
416
+ 'ALTER ROUTINE',
417
+ __('Allows altering and dropping stored routines.')
418
+ ),
419
+ array(
420
+ 'Create_user_priv',
421
+ 'CREATE USER',
422
+ __('Allows creating, dropping and renaming user accounts.')
423
+ ),
424
+ array(
425
+ 'Execute_priv',
426
+ 'EXECUTE',
427
+ __('Allows executing stored routines.')
428
+ ),
429
+ );
430
+ }
431
+
432
+ /**
433
+ * Displays on which column(s) a table-specific privilege is granted
434
+ *
435
+ * @param array $columns columns array
436
+ * @param array $row first row from result or boolean false
437
+ * @param string $name_for_select privilege types - Select_priv, Insert_priv
438
+ * Update_priv, References_priv
439
+ * @param string $priv_for_header privilege for header
440
+ * @param string $name privilege name: insert, select, update, references
441
+ * @param string $name_for_dfn name for dfn
442
+ * @param string $name_for_current name for current
443
+ *
444
+ * @return string $html_output html snippet
445
+ */
446
+ function PMA_getHtmlForColumnPrivileges($columns, $row, $name_for_select,
447
+ $priv_for_header, $name, $name_for_dfn, $name_for_current
448
+ ) {
449
+ $html_output = '<div class="item" id="div_item_' . $name . '">' . "\n"
450
+ . '<label for="select_' . $name . '_priv">' . "\n"
451
+ . '<code><dfn title="' . $name_for_dfn . '">'
452
+ . $priv_for_header . '</dfn></code>' . "\n"
453
+ . '</label><br />' . "\n"
454
+ . '<select id="select_' . $name . '_priv" name="'
455
+ . $name_for_select . '[]" multiple="multiple" size="8">' . "\n";
456
+
457
+ foreach ($columns as $currCol => $currColPrivs) {
458
+ $html_output .= '<option '
459
+ . 'value="' . htmlspecialchars($currCol) . '"';
460
+ if ($row[$name_for_select] == 'Y'
461
+ || $currColPrivs[$name_for_current]
462
+ ) {
463
+ $html_output .= ' selected="selected"';
464
+ }
465
+ $html_output .= '>'
466
+ . htmlspecialchars($currCol) . '</option>' . "\n";
467
+ }
468
+
469
+ $html_output .= '</select>' . "\n"
470
+ . '<i>' . __('Or') . '</i>' . "\n"
471
+ . '<label for="checkbox_' . $name_for_select
472
+ . '_none"><input type="checkbox"'
473
+ . ' name="' . $name_for_select . '_none" id="checkbox_'
474
+ . $name_for_select . '_none" title="'
475
+ . _pgettext('None privileges', 'None') . '" />'
476
+ . _pgettext('None privileges', 'None') . '</label>' . "\n"
477
+ . '</div>' . "\n";
478
+ return $html_output;
479
+ } // end function
480
+
481
+ /**
482
+ * Get sql query for display privileges table
483
+ *
484
+ * @param string $db the database
485
+ * @param string $table the table
486
+ * @param string $username username for database connection
487
+ * @param string $hostname hostname for database connection
488
+ *
489
+ * @return string sql query
490
+ */
491
+ function PMA_getSqlQueryForDisplayPrivTable($db, $table, $username, $hostname)
492
+ {
493
+ if ($db == '*') {
494
+ return "SELECT * FROM `mysql`.`user`"
495
+ . " WHERE `User` = '" . PMA_Util::sqlAddSlashes($username) . "'"
496
+ . " AND `Host` = '" . PMA_Util::sqlAddSlashes($hostname) . "';";
497
+ } elseif ($table == '*') {
498
+ return "SELECT * FROM `mysql`.`db`"
499
+ . " WHERE `User` = '" . PMA_Util::sqlAddSlashes($username) . "'"
500
+ . " AND `Host` = '" . PMA_Util::sqlAddSlashes($hostname) . "'"
501
+ . " AND '" . PMA_Util::unescapeMysqlWildcards($db) . "'"
502
+ . " LIKE `Db`;";
503
+ }
504
+ return "SELECT `Table_priv`"
505
+ . " FROM `mysql`.`tables_priv`"
506
+ . " WHERE `User` = '" . PMA_Util::sqlAddSlashes($username) . "'"
507
+ . " AND `Host` = '" . PMA_Util::sqlAddSlashes($hostname) . "'"
508
+ . " AND `Db` = '" . PMA_Util::unescapeMysqlWildcards($db) . "'"
509
+ . " AND `Table_name` = '" . PMA_Util::sqlAddSlashes($table) . "';";
510
+ }
511
+
512
+ /**
513
+ * Displays a dropdown to select the user group
514
+ * with menu items configured to each of them.
515
+ *
516
+ * @param string $username username
517
+ *
518
+ * @return string html to select the user group
519
+ */
520
+ function PMA_getHtmlToChooseUserGroup($username)
521
+ {
522
+ $html_output = '<form class="ajax" id="changeUserGroupForm"'
523
+ . ' action="server_privileges.php" method="post">';
524
+ $params = array('username' => $username);
525
+ $html_output .= PMA_URL_getHiddenInputs($params);
526
+ $html_output .= '<fieldset id="fieldset_user_group_selection">';
527
+ $html_output .= '<legend>' . __('User group') . '</legend>';
528
+
529
+ $cfgRelation = PMA_getRelationsParam();
530
+ $groupTable = PMA_Util::backquote($cfgRelation['db'])
531
+ . "." . PMA_Util::backquote($cfgRelation['usergroups']);
532
+ $userTable = PMA_Util::backquote($cfgRelation['db'])
533
+ . "." . PMA_Util::backquote($cfgRelation['users']);
534
+
535
+ $userGroups = array();
536
+ $sql_query = "SELECT DISTINCT `usergroup` FROM " . $groupTable;
537
+ $result = PMA_queryAsControlUser($sql_query, false);
538
+ if ($result) {
539
+ while ($row = $GLOBALS['dbi']->fetchRow($result)) {
540
+ $userGroups[] = $row[0];
541
+ }
542
+ }
543
+ $GLOBALS['dbi']->freeResult($result);
544
+
545
+ $userGroup = '';
546
+ if (isset($GLOBALS['username'])) {
547
+ $sql_query = "SELECT `usergroup` FROM " . $userTable
548
+ . " WHERE `username` = '" . PMA_Util::sqlAddSlashes($username) . "'";
549
+ $userGroup = $GLOBALS['dbi']->fetchValue(
550
+ $sql_query, 0, 0, $GLOBALS['controllink']
551
+ );
552
+ }
553
+
554
+ $html_output .= __('User group') . ': ';
555
+ $html_output .= '<select name="userGroup">';
556
+ $html_output .= '<option value=""></option>';
557
+ foreach ($userGroups as $oneUserGroup) {
558
+ $html_output .= '<option value="' . htmlspecialchars($oneUserGroup) . '"'
559
+ . ($oneUserGroup == $userGroup ? ' selected="selected"' : '')
560
+ . '>'
561
+ . htmlspecialchars($oneUserGroup)
562
+ . '</option>';
563
+ }
564
+ $html_output .= '</select>';
565
+ $html_output .= '<input type="hidden" name="changeUserGroup" value="1">';
566
+ $html_output .= '</fieldset>';
567
+ $html_output .= '</form>';
568
+ return $html_output;
569
+ }
570
+
571
+ /**
572
+ * Sets the user group from request values
573
+ *
574
+ * @param string $username username
575
+ * @param string $userGroup user group to set
576
+ *
577
+ * @return void
578
+ */
579
+ function PMA_setUserGroup($username, $userGroup)
580
+ {
581
+ $cfgRelation = PMA_getRelationsParam();
582
+ $userTable = PMA_Util::backquote($cfgRelation['db'])
583
+ . "." . PMA_Util::backquote($cfgRelation['users']);
584
+
585
+ $sql_query = "SELECT `usergroup` FROM " . $userTable
586
+ . " WHERE `username` = '" . PMA_Util::sqlAddSlashes($username) . "'";
587
+ $oldUserGroup = $GLOBALS['dbi']->fetchValue(
588
+ $sql_query, 0, 0, $GLOBALS['controllink']
589
+ );
590
+
591
+ if ($oldUserGroup === false) {
592
+ $upd_query = "INSERT INTO " . $userTable . "(`username`, `usergroup`)"
593
+ . " VALUES ('" . PMA_Util::sqlAddSlashes($username) . "', "
594
+ . "'" . PMA_Util::sqlAddSlashes($userGroup) . "')";
595
+ } else {
596
+ if (empty($userGroup)) {
597
+ $upd_query = "DELETE FROM " . $userTable
598
+ . " WHERE `username`='" . PMA_Util::sqlAddSlashes($username) . "'";
599
+ } elseif ($oldUserGroup != $userGroup) {
600
+ $upd_query = "UPDATE " . $userTable
601
+ . " SET `usergroup`='" . PMA_Util::sqlAddSlashes($userGroup) . "'"
602
+ . " WHERE `username`='" . PMA_Util::sqlAddSlashes($username) . "'";
603
+ }
604
+ }
605
+ if (isset($upd_query)) {
606
+ PMA_queryAsControlUser($upd_query);
607
+ }
608
+ }
609
+
610
+ /**
611
+ * Displays the privileges form table
612
+ *
613
+ * @param string $db the database
614
+ * @param string $table the table
615
+ * @param boolean $submit whether to display the submit button or not
616
+ *
617
+ * @global array $cfg the phpMyAdmin configuration
618
+ * @global resource $user_link the database connection
619
+ *
620
+ * @return string html snippet
621
+ */
622
+ function PMA_getHtmlToDisplayPrivilegesTable($db = '*',
623
+ $table = '*', $submit = true
624
+ ) {
625
+ $html_output = '';
626
+ $sql_query = '';
627
+
628
+ if ($db == '*') {
629
+ $table = '*';
630
+ }
631
+
632
+ if (isset($GLOBALS['username'])) {
633
+ $username = $GLOBALS['username'];
634
+ $hostname = $GLOBALS['hostname'];
635
+ $sql_query = PMA_getSqlQueryForDisplayPrivTable(
636
+ $db, $table, $username, $hostname
637
+ );
638
+ $row = $GLOBALS['dbi']->fetchSingleRow($sql_query);
639
+ }
640
+ if (empty($row)) {
641
+ if ($table == '*' && $GLOBALS['is_superuser']) {
642
+ if ($db == '*') {
643
+ $sql_query = 'SHOW COLUMNS FROM `mysql`.`user`;';
644
+ } elseif ($table == '*') {
645
+ $sql_query = 'SHOW COLUMNS FROM `mysql`.`db`;';
646
+ }
647
+ $res = $GLOBALS['dbi']->query($sql_query);
648
+ while ($row1 = $GLOBALS['dbi']->fetchRow($res)) {
649
+ if (mb_substr($row1[0], 0, 4) == 'max_') {
650
+ $row[$row1[0]] = 0;
651
+ } elseif (mb_substr($row1[0], 0, 5) == 'x509_'
652
+ || mb_substr($row1[0], 0, 4) == 'ssl_'
653
+ ) {
654
+ $row[$row1[0]] = '';
655
+ } else {
656
+ $row[$row1[0]] = 'N';
657
+ }
658
+ }
659
+ $GLOBALS['dbi']->freeResult($res);
660
+ } elseif ($table == '*') {
661
+ $row = array();
662
+ } else {
663
+ $row = array('Table_priv' => '');
664
+ }
665
+ }
666
+ if (isset($row['Table_priv'])) {
667
+ PMA_fillInTablePrivileges($row);
668
+
669
+ // get columns
670
+ $res = $GLOBALS['dbi']->tryQuery(
671
+ 'SHOW COLUMNS FROM '
672
+ . PMA_Util::backquote(
673
+ PMA_Util::unescapeMysqlWildcards($db)
674
+ )
675
+ . '.' . PMA_Util::backquote($table) . ';'
676
+ );
677
+ $columns = array();
678
+ if ($res) {
679
+ while ($row1 = $GLOBALS['dbi']->fetchRow($res)) {
680
+ $columns[$row1[0]] = array(
681
+ 'Select' => false,
682
+ 'Insert' => false,
683
+ 'Update' => false,
684
+ 'References' => false
685
+ );
686
+ }
687
+ $GLOBALS['dbi']->freeResult($res);
688
+ }
689
+ unset($res, $row1);
690
+ }
691
+ // table-specific privileges
692
+ if (! empty($columns)) {
693
+ $html_output .= PMA_getHtmlForTableSpecificPrivileges(
694
+ $username, $hostname, $db, $table, $columns, $row
695
+ );
696
+ } else {
697
+ // global or db-specific
698
+ $html_output .= PMA_getHtmlForGlobalOrDbSpecificPrivs($db, $table, $row);
699
+ }
700
+ $html_output .= '</fieldset>' . "\n";
701
+ if ($submit) {
702
+ $html_output .= '<fieldset id="fieldset_user_privtable_footer" '
703
+ . 'class="tblFooters">' . "\n"
704
+ . '<input type="hidden" name="update_privs" value="1" />' . "\n"
705
+ . '<input type="submit" value="' . __('Go') . '" />' . "\n"
706
+ . '</fieldset>' . "\n";
707
+ }
708
+ return $html_output;
709
+ } // end of the 'PMA_displayPrivTable()' function
710
+
711
+ /**
712
+ * Get HTML for "Require"
713
+ *
714
+ * @param array $row privilege array
715
+ *
716
+ * @return string html snippet
717
+ */
718
+ function PMA_getHtmlForRequires($row)
719
+ {
720
+ $html_output = '<fieldset>';
721
+
722
+ $html_output .= '<legend>';
723
+ $html_output .= '<input type="checkbox" name="SSL_priv" id="checkbox_SSL_priv"'
724
+ . ' value="Y" title="'
725
+ . __(
726
+ 'Requires SSL-encrypted connections.'
727
+ )
728
+ . '"'
729
+ . ((isset($row['ssl_type']) && $row['ssl_type'] != '')
730
+ ? ' checked="checked"'
731
+ : ''
732
+ )
733
+ . '/>';
734
+ $html_output .= __('Require SSL') . '</legend>';
735
+ $html_output .= '<div id="require_ssl_div">';
736
+
737
+ // Specified
738
+ $html_output .= '<div class="item">';
739
+ $html_output .= '<input type="radio" name="ssl_type" id="ssl_type_specified"'
740
+ . ' value="specified"'
741
+ . ((isset($row['ssl_type']) && $row['ssl_type'] == 'SPECIFIED')
742
+ ? ' checked="checked"'
743
+ : ''
744
+ )
745
+ . '/>';
746
+
747
+ $html_output .= '<label for="ssl_type_speified"><code>'
748
+ . 'SPECIFIED'
749
+ . '</code></label>';
750
+ $html_output .= '</div>';
751
+
752
+ $html_output .= '<div id="specified_div" style="padding-left:20px;">';
753
+
754
+ // REQUIRE CIPHER
755
+ $html_output .= '<div class="item">';
756
+ $html_output .= '<label for="text_ssl_cipher">'
757
+ . '<code><dfn title="'
758
+ . __(
759
+ 'Requires that a specific cipher method be used for a connection.'
760
+ )
761
+ . '">'
762
+ . 'REQUIRE CIPHER'
763
+ . '</dfn></code></label>';
764
+ $html_output .= '<input type="text" name="ssl_cipher" id="text_ssl_cipher" '
765
+ . 'value="' . (isset($row['ssl_cipher']) ? $row['ssl_cipher'] : '') . '" '
766
+ . 'size=80" title="'
767
+ . __(
768
+ 'Requires that a specific cipher method be used for a connection.'
769
+ )
770
+ . '" />';
771
+ $html_output .= '</div>';
772
+
773
+ // REQUIRE ISSUER
774
+ $html_output .= '<div class="item">';
775
+ $html_output .= '<label for="text_x509_issuer">'
776
+ . '<code><dfn title="'
777
+ . __(
778
+ 'Requires that a valid X509 certificate issued by this CA be presented.'
779
+ )
780
+ . '">'
781
+ . 'REQUIRE ISSUER'
782
+ . '</dfn></code></label>';
783
+ $html_output .= '<input type="text" name="x509_issuer" id="text_x509_issuer" '
784
+ . 'value="' . (isset($row['x509_issuer']) ? $row['x509_issuer'] : '') . '" '
785
+ . 'size=80" title="'
786
+ . __(
787
+ 'Requires that a valid X509 certificate issued by this CA be presented.'
788
+ )
789
+ . '" />';
790
+ $html_output .= '</div>';
791
+
792
+ // REQUIRE SUBJECT
793
+ $html_output .= '<div class="item">';
794
+ $html_output .= '<label for="text_x509_subject">'
795
+ . '<code><dfn title="'
796
+ . __(
797
+ 'Requires that a valid X509 certificate with this subject be presented.'
798
+ )
799
+ . '">'
800
+ . 'REQUIRE SUBJECT'
801
+ . '</dfn></code></label>';
802
+ $html_output .= '<input type="text" name="x509_subject" id="text_x509_subject" '
803
+ . 'value="' . (isset($row['x509_subject']) ? $row['x509_subject'] : '') . '" '
804
+ . 'size=80" title="'
805
+ . __(
806
+ 'Requires that a valid X509 certificate with this subject be presented.'
807
+ )
808
+ . '" />';
809
+ $html_output .= '</div>';
810
+
811
+ $html_output .= '</div>';
812
+
813
+ // REQUIRE X509
814
+ $html_output .= '<div class="item">';
815
+ $html_output .= '<input type="radio" name="ssl_type" id="ssl_type_X509"'
816
+ . ' value="X509" title="'
817
+ . __(
818
+ 'Requires a valid X509 cetrificate.'
819
+ )
820
+ . '"'
821
+ . ((isset($row['ssl_type']) && $row['ssl_type'] == 'X509')
822
+ ? ' checked="checked"'
823
+ : ''
824
+ )
825
+ . '/>';
826
+
827
+ $html_output .= '<label for="radio_X509_priv"><code>'
828
+ . 'REQUIRE X509'
829
+ . '</code></label>';
830
+ $html_output .= '</div>';
831
+
832
+ // REQUIRE SSL
833
+ $html_output .= '<div class="item">';
834
+ $html_output .= '<input type="radio" name="ssl_type" id="ssl_type_ANY"'
835
+ . ' value="ANY" title="'
836
+ . __(
837
+ 'Requires SSL-encrypted connections.'
838
+ )
839
+ . '"'
840
+ . ((isset($row['ssl_type']) && ($row['ssl_type'] == 'ANY' || $row['ssl_type'] == ''))
841
+ ? ' checked="checked"'
842
+ : ''
843
+ )
844
+ . '/>';
845
+
846
+ $html_output .= '<label for="ssl_type_ANY"><code>'
847
+ . 'REQUIRE SSL'
848
+ . '</code></label>';
849
+ $html_output .= '</div>';
850
+
851
+ $html_output .= '</div>';
852
+ $html_output .= '</fieldset>';
853
+
854
+ return $html_output;
855
+ }
856
+
857
+ /**
858
+ * Get HTML for "Resource limits"
859
+ *
860
+ * @param array $row first row from result or boolean false
861
+ *
862
+ * @return string html snippet
863
+ */
864
+ function PMA_getHtmlForResourceLimits($row)
865
+ {
866
+ $html_output = '<fieldset>' . "\n"
867
+ . '<legend>' . __('Resource limits') . '</legend>' . "\n"
868
+ . '<p><small>'
869
+ . '<i>' . __('Note: Setting these options to 0 (zero) removes the limit.')
870
+ . '</i></small></p>' . "\n";
871
+
872
+ $html_output .= '<div class="item">' . "\n"
873
+ . '<label for="text_max_questions">'
874
+ . '<code><dfn title="'
875
+ . __(
876
+ 'Limits the number of queries the user may send to the server per hour.'
877
+ )
878
+ . '">'
879
+ . 'MAX QUERIES PER HOUR'
880
+ . '</dfn></code></label>' . "\n"
881
+ . '<input type="number" name="max_questions" id="text_max_questions" '
882
+ . 'value="'
883
+ . (isset($row['max_questions']) ? $row['max_questions'] : '0')
884
+ . '" min="0" '
885
+ . 'title="'
886
+ . __(
887
+ 'Limits the number of queries the user may send to the server per hour.'
888
+ )
889
+ . '" />' . "\n"
890
+ . '</div>' . "\n";
891
+
892
+ $html_output .= '<div class="item">' . "\n"
893
+ . '<label for="text_max_updates">'
894
+ . '<code><dfn title="'
895
+ . __(
896
+ 'Limits the number of commands that change any table '
897
+ . 'or database the user may execute per hour.'
898
+ ) . '">'
899
+ . 'MAX UPDATES PER HOUR'
900
+ . '</dfn></code></label>' . "\n"
901
+ . '<input type="number" name="max_updates" id="text_max_updates" '
902
+ . 'value="'
903
+ . (isset($row['max_updates']) ? $row['max_updates'] : '0')
904
+ . '" min="0" '
905
+ . 'title="'
906
+ . __(
907
+ 'Limits the number of commands that change any table '
908
+ . 'or database the user may execute per hour.'
909
+ )
910
+ . '" />' . "\n"
911
+ . '</div>' . "\n";
912
+
913
+ $html_output .= '<div class="item">' . "\n"
914
+ . '<label for="text_max_connections">'
915
+ . '<code><dfn title="'
916
+ . __(
917
+ 'Limits the number of new connections the user may open per hour.'
918
+ ) . '">'
919
+ . 'MAX CONNECTIONS PER HOUR'
920
+ . '</dfn></code></label>' . "\n"
921
+ . '<input type="number" name="max_connections" id="text_max_connections" '
922
+ . 'value="'
923
+ . (isset($row['max_connections']) ? $row['max_connections'] : '0')
924
+ . '" min="0" '
925
+ . 'title="' . __(
926
+ 'Limits the number of new connections the user may open per hour.'
927
+ )
928
+ . '" />' . "\n"
929
+ . '</div>' . "\n";
930
+
931
+ $html_output .= '<div class="item">' . "\n"
932
+ . '<label for="text_max_user_connections">'
933
+ . '<code><dfn title="'
934
+ . __('Limits the number of simultaneous connections the user may have.')
935
+ . '">'
936
+ . 'MAX USER_CONNECTIONS'
937
+ . '</dfn></code></label>' . "\n"
938
+ . '<input type="number" name="max_user_connections" '
939
+ . 'id="text_max_user_connections" '
940
+ . 'value="'
941
+ . (isset($row['max_user_connections']) ? $row['max_user_connections'] : '0')
942
+ . '" '
943
+ . 'title="'
944
+ . __('Limits the number of simultaneous connections the user may have.')
945
+ . '" />' . "\n"
946
+ . '</div>' . "\n";
947
+
948
+ $html_output .= '</fieldset>' . "\n";
949
+
950
+ return $html_output;
951
+ }
952
+
953
+ /**
954
+ * Get the HTML snippet for table specific privileges
955
+ *
956
+ * @param string $username username for database connection
957
+ * @param string $hostname hostname for database connection
958
+ * @param string $db the database
959
+ * @param string $table the table
960
+ * @param array $columns columns array
961
+ * @param array $row current privileges row
962
+ *
963
+ * @return string $html_output
964
+ */
965
+ function PMA_getHtmlForTableSpecificPrivileges(
966
+ $username, $hostname, $db, $table, $columns, $row
967
+ ) {
968
+ $res = $GLOBALS['dbi']->query(
969
+ 'SELECT `Column_name`, `Column_priv`'
970
+ . ' FROM `mysql`.`columns_priv`'
971
+ . ' WHERE `User`'
972
+ . ' = \'' . PMA_Util::sqlAddSlashes($username) . "'"
973
+ . ' AND `Host`'
974
+ . ' = \'' . PMA_Util::sqlAddSlashes($hostname) . "'"
975
+ . ' AND `Db`'
976
+ . ' = \'' . PMA_Util::sqlAddSlashes(
977
+ PMA_Util::unescapeMysqlWildcards($db)
978
+ ) . "'"
979
+ . ' AND `Table_name`'
980
+ . ' = \'' . PMA_Util::sqlAddSlashes($table) . '\';'
981
+ );
982
+
983
+ while ($row1 = $GLOBALS['dbi']->fetchRow($res)) {
984
+ $row1[1] = explode(',', $row1[1]);
985
+ foreach ($row1[1] as $current) {
986
+ $columns[$row1[0]][$current] = true;
987
+ }
988
+ }
989
+ $GLOBALS['dbi']->freeResult($res);
990
+ unset($res, $row1, $current);
991
+
992
+ $html_output = '<input type="hidden" name="grant_count" '
993
+ . 'value="' . count($row) . '" />' . "\n"
994
+ . '<input type="hidden" name="column_count" '
995
+ . 'value="' . count($columns) . '" />' . "\n"
996
+ . '<fieldset id="fieldset_user_priv">' . "\n"
997
+ . '<legend data-submenu-label="Table">' . __('Table-specific privileges')
998
+ . PMA_Util::showHint(
999
+ __('Note: MySQL privilege names are expressed in English.')
1000
+ )
1001
+ . '</legend>' . "\n";
1002
+
1003
+ // privs that are attached to a specific column
1004
+ $html_output .= PMA_getHtmlForAttachedPrivilegesToTableSpecificColumn(
1005
+ $columns, $row
1006
+ );
1007
+
1008
+ // privs that are not attached to a specific column
1009
+ $html_output .= '<div class="item">' . "\n"
1010
+ . PMA_getHtmlForNotAttachedPrivilegesToTableSpecificColumn($row)
1011
+ . '</div>' . "\n";
1012
+
1013
+ // for Safari 2.0.2
1014
+ $html_output .= '<div class="clearfloat"></div>' . "\n";
1015
+
1016
+ return $html_output;
1017
+ }
1018
+
1019
+ /**
1020
+ * Get HTML snippet for privileges that are attached to a specific column
1021
+ *
1022
+ * @param array $columns columns array
1023
+ * @param array $row first row from result or boolean false
1024
+ *
1025
+ * @return string $html_output
1026
+ */
1027
+ function PMA_getHtmlForAttachedPrivilegesToTableSpecificColumn($columns, $row)
1028
+ {
1029
+ $html_output = PMA_getHtmlForColumnPrivileges(
1030
+ $columns, $row, 'Select_priv', 'SELECT',
1031
+ 'select', __('Allows reading data.'), 'Select'
1032
+ );
1033
+
1034
+ $html_output .= PMA_getHtmlForColumnPrivileges(
1035
+ $columns, $row, 'Insert_priv', 'INSERT',
1036
+ 'insert', __('Allows inserting and replacing data.'), 'Insert'
1037
+ );
1038
+
1039
+ $html_output .= PMA_getHtmlForColumnPrivileges(
1040
+ $columns, $row, 'Update_priv', 'UPDATE',
1041
+ 'update', __('Allows changing data.'), 'Update'
1042
+ );
1043
+
1044
+ $html_output .= PMA_getHtmlForColumnPrivileges(
1045
+ $columns, $row, 'References_priv', 'REFERENCES', 'references',
1046
+ __('Has no effect in this MySQL version.'), 'References'
1047
+ );
1048
+ return $html_output;
1049
+ }
1050
+
1051
+ /**
1052
+ * Get HTML for privileges that are not attached to a specific column
1053
+ *
1054
+ * @param array $row first row from result or boolean false
1055
+ *
1056
+ * @return string $html_output
1057
+ */
1058
+ function PMA_getHtmlForNotAttachedPrivilegesToTableSpecificColumn($row)
1059
+ {
1060
+ $html_output = '';
1061
+
1062
+ foreach ($row as $current_grant => $current_grant_value) {
1063
+ $grant_type = substr($current_grant, 0, -5);
1064
+ if (in_array($grant_type, array('Select', 'Insert', 'Update', 'References'))
1065
+ ) {
1066
+ continue;
1067
+ }
1068
+ // make a substitution to match the messages variables;
1069
+ // also we must substitute the grant we get, because we can't generate
1070
+ // a form variable containing blanks (those would get changed to
1071
+ // an underscore when receiving the POST)
1072
+ if ($current_grant == 'Create View_priv') {
1073
+ $tmp_current_grant = 'CreateView_priv';
1074
+ $current_grant = 'Create_view_priv';
1075
+ } elseif ($current_grant == 'Show view_priv') {
1076
+ $tmp_current_grant = 'ShowView_priv';
1077
+ $current_grant = 'Show_view_priv';
1078
+ } else {
1079
+ $tmp_current_grant = $current_grant;
1080
+ }
1081
+
1082
+ $html_output .= '<div class="item">' . "\n"
1083
+ . '<input type="checkbox"'
1084
+ . ' name="' . $current_grant . '" id="checkbox_' . $current_grant
1085
+ . '" value="Y" '
1086
+ . ($current_grant_value == 'Y' ? 'checked="checked" ' : '')
1087
+ . 'title="';
1088
+
1089
+ $html_output .= (isset($GLOBALS[
1090
+ 'strPrivDesc' . /*overload*/mb_substr(
1091
+ $tmp_current_grant,
1092
+ 0,
1093
+ (/*overload*/mb_strlen($tmp_current_grant) - 5)
1094
+ )
1095
+ ] )
1096
+ ? $GLOBALS[
1097
+ 'strPrivDesc' . /*overload*/mb_substr(
1098
+ $tmp_current_grant,
1099
+ 0,
1100
+ (/*overload*/mb_strlen($tmp_current_grant) - 5)
1101
+ )
1102
+ ]
1103
+ : $GLOBALS[
1104
+ 'strPrivDesc' . /*overload*/mb_substr(
1105
+ $tmp_current_grant,
1106
+ 0,
1107
+ (/*overload*/mb_strlen($tmp_current_grant) - 5)
1108
+ ) . 'Tbl'
1109
+ ]
1110
+ )
1111
+ . '"/>' . "\n";
1112
+
1113
+ $html_output .= '<label for="checkbox_' . $current_grant
1114
+ . '"><code><dfn title="'
1115
+ . (isset($GLOBALS[
1116
+ 'strPrivDesc' . /*overload*/mb_substr(
1117
+ $tmp_current_grant,
1118
+ 0,
1119
+ -5
1120
+ )
1121
+ ])
1122
+ ? $GLOBALS[
1123
+ 'strPrivDesc' . /*overload*/mb_substr(
1124
+ $tmp_current_grant,
1125
+ 0,
1126
+ -5
1127
+ )
1128
+ ]
1129
+ : $GLOBALS[
1130
+ 'strPrivDesc' . /*overload*/mb_substr(
1131
+ $tmp_current_grant,
1132
+ 0,
1133
+ -5
1134
+ ) . 'Tbl'
1135
+ ]
1136
+ )
1137
+ . '">'
1138
+ . /*overload*/mb_strtoupper(
1139
+ /*overload*/mb_substr(
1140
+ $current_grant,
1141
+ 0,
1142
+ -5
1143
+ )
1144
+ )
1145
+ . '</dfn></code></label>' . "\n"
1146
+ . '</div>' . "\n";
1147
+ } // end foreach ()
1148
+ return $html_output;
1149
+ }
1150
+
1151
+ /**
1152
+ * Get HTML for global or database specific privileges
1153
+ *
1154
+ * @param string $db the database
1155
+ * @param string $table the table
1156
+ * @param string $row first row from result or boolean false
1157
+ *
1158
+ * @return string $html_output
1159
+ */
1160
+ function PMA_getHtmlForGlobalOrDbSpecificPrivs($db, $table, $row)
1161
+ {
1162
+ $privTable_names = array(0 => __('Data'),
1163
+ 1 => __('Structure'),
1164
+ 2 => __('Administration')
1165
+ );
1166
+ $privTable = array();
1167
+ // d a t a
1168
+ $privTable[0] = PMA_getDataPrivilegeTable($db);
1169
+
1170
+ // s t r u c t u r e
1171
+ $privTable[1] = PMA_getStructurePrivilegeTable($table, $row);
1172
+
1173
+ // a d m i n i s t r a t i o n
1174
+ $privTable[2] = PMA_getAdministrationPrivilegeTable($db);
1175
+
1176
+ $html_output = '<input type="hidden" name="grant_count" value="'
1177
+ . (count($privTable[0])
1178
+ + count($privTable[1])
1179
+ + count($privTable[2])
1180
+ - (isset($row['Grant_priv']) ? 1 : 0)
1181
+ )
1182
+ . '" />';
1183
+ if ($db == '*') {
1184
+ $legend = __('Global privileges');
1185
+ $menu_label = __('Global');
1186
+ } else if ($table == '*') {
1187
+ $legend = __('Database-specific privileges');
1188
+ $menu_label = __('Database');
1189
+ } else {
1190
+ $legend = __('Table-specific privileges');
1191
+ $menu_label = __('Table');
1192
+ }
1193
+ $html_output .= '<fieldset id="fieldset_user_global_rights">'
1194
+ . '<legend data-submenu-label="' . $menu_label . '">' . $legend
1195
+ . '<input type="checkbox" id="addUsersForm_checkall" '
1196
+ . 'class="checkall_box" title="' . __('Check All') . '" /> '
1197
+ . '<label for="addUsersForm_checkall">' . __('Check All') . '</label> '
1198
+ . '</legend>'
1199
+ . '<p><small><i>'
1200
+ . __('Note: MySQL privilege names are expressed in English.')
1201
+ . '</i></small></p>';
1202
+
1203
+ // Output the Global privilege tables with checkboxes
1204
+ $html_output .= PMA_getHtmlForGlobalPrivTableWithCheckboxes(
1205
+ $privTable, $privTable_names, $row
1206
+ );
1207
+
1208
+ // The "Resource limits" box is not displayed for db-specific privs
1209
+ if ($db == '*') {
1210
+ $html_output .= PMA_getHtmlForResourceLimits($row);
1211
+ $html_output .= PMA_getHtmlForRequires($row);
1212
+ }
1213
+ // for Safari 2.0.2
1214
+ $html_output .= '<div class="clearfloat"></div>';
1215
+
1216
+ return $html_output;
1217
+ }
1218
+
1219
+ /**
1220
+ * Get data privilege table as an array
1221
+ *
1222
+ * @param string $db the database
1223
+ *
1224
+ * @return string data privilege table
1225
+ */
1226
+ function PMA_getDataPrivilegeTable($db)
1227
+ {
1228
+ $data_privTable = array(
1229
+ array('Select', 'SELECT', __('Allows reading data.')),
1230
+ array('Insert', 'INSERT', __('Allows inserting and replacing data.')),
1231
+ array('Update', 'UPDATE', __('Allows changing data.')),
1232
+ array('Delete', 'DELETE', __('Allows deleting data.'))
1233
+ );
1234
+ if ($db == '*') {
1235
+ $data_privTable[]
1236
+ = array('File',
1237
+ 'FILE',
1238
+ __('Allows importing data from and exporting data into files.')
1239
+ );
1240
+ }
1241
+ return $data_privTable;
1242
+ }
1243
+
1244
+ /**
1245
+ * Get structure privilege table as an array
1246
+ *
1247
+ * @param string $table the table
1248
+ * @param array $row first row from result or boolean false
1249
+ *
1250
+ * @return string structure privilege table
1251
+ */
1252
+ function PMA_getStructurePrivilegeTable($table, $row)
1253
+ {
1254
+ $structure_privTable = array(
1255
+ array('Create',
1256
+ 'CREATE',
1257
+ ($table == '*'
1258
+ ? __('Allows creating new databases and tables.')
1259
+ : __('Allows creating new tables.')
1260
+ )
1261
+ ),
1262
+ array('Alter',
1263
+ 'ALTER',
1264
+ __('Allows altering the structure of existing tables.')
1265
+ ),
1266
+ array('Index', 'INDEX', __('Allows creating and dropping indexes.')),
1267
+ array('Drop',
1268
+ 'DROP',
1269
+ ($table == '*'
1270
+ ? __('Allows dropping databases and tables.')
1271
+ : __('Allows dropping tables.')
1272
+ )
1273
+ ),
1274
+ array('Create_tmp_table',
1275
+ 'CREATE TEMPORARY TABLES',
1276
+ __('Allows creating temporary tables.')
1277
+ ),
1278
+ array('Show_view',
1279
+ 'SHOW VIEW',
1280
+ __('Allows performing SHOW CREATE VIEW queries.')
1281
+ ),
1282
+ array('Create_routine',
1283
+ 'CREATE ROUTINE',
1284
+ __('Allows creating stored routines.')
1285
+ ),
1286
+ array('Alter_routine',
1287
+ 'ALTER ROUTINE',
1288
+ __('Allows altering and dropping stored routines.')
1289
+ ),
1290
+ array('Execute', 'EXECUTE', __('Allows executing stored routines.')),
1291
+ );
1292
+ // this one is for a db-specific priv: Create_view_priv
1293
+ if (isset($row['Create_view_priv'])) {
1294
+ $structure_privTable[] = array('Create_view',
1295
+ 'CREATE VIEW',
1296
+ __('Allows creating new views.')
1297
+ );
1298
+ }
1299
+ // this one is for a table-specific priv: Create View_priv
1300
+ if (isset($row['Create View_priv'])) {
1301
+ $structure_privTable[] = array('Create View',
1302
+ 'CREATE VIEW',
1303
+ __('Allows creating new views.')
1304
+ );
1305
+ }
1306
+ if (isset($row['Event_priv'])) {
1307
+ // MySQL 5.1.6
1308
+ $structure_privTable[] = array('Event',
1309
+ 'EVENT',
1310
+ __('Allows to set up events for the event scheduler.')
1311
+ );
1312
+ $structure_privTable[] = array('Trigger',
1313
+ 'TRIGGER',
1314
+ __('Allows creating and dropping triggers.')
1315
+ );
1316
+ }
1317
+ return $structure_privTable;
1318
+ }
1319
+
1320
+ /**
1321
+ * Get administration privilege table as an array
1322
+ *
1323
+ * @param string $db the table
1324
+ *
1325
+ * @return string administration privilege table
1326
+ */
1327
+ function PMA_getAdministrationPrivilegeTable($db)
1328
+ {
1329
+ $adminPrivTable = array(
1330
+ array('Grant',
1331
+ 'GRANT',
1332
+ __(
1333
+ 'Allows adding users and privileges '
1334
+ . 'without reloading the privilege tables.'
1335
+ )
1336
+ ),
1337
+ );
1338
+ if ($db == '*') {
1339
+ $adminPrivTable[] = array('Super',
1340
+ 'SUPER',
1341
+ __(
1342
+ 'Allows connecting, even if maximum number '
1343
+ . 'of connections is reached; required for '
1344
+ . 'most administrative operations like '
1345
+ . 'setting global variables or killing threads of other users.'
1346
+ )
1347
+ );
1348
+ $adminPrivTable[] = array('Process',
1349
+ 'PROCESS',
1350
+ __('Allows viewing processes of all users.')
1351
+ );
1352
+ $adminPrivTable[] = array('Reload',
1353
+ 'RELOAD',
1354
+ __('Allows reloading server settings and flushing the server\'s caches.')
1355
+ );
1356
+ $adminPrivTable[] = array('Shutdown',
1357
+ 'SHUTDOWN',
1358
+ __('Allows shutting down the server.')
1359
+ );
1360
+ $adminPrivTable[] = array('Show_db',
1361
+ 'SHOW DATABASES',
1362
+ __('Gives access to the complete list of databases.')
1363
+ );
1364
+ }
1365
+ $adminPrivTable[] = array('Lock_tables',
1366
+ 'LOCK TABLES',
1367
+ __('Allows locking tables for the current thread.')
1368
+ );
1369
+ $adminPrivTable[] = array('References',
1370
+ 'REFERENCES',
1371
+ __('Has no effect in this MySQL version.')
1372
+ );
1373
+ if ($db == '*') {
1374
+ $adminPrivTable[] = array('Repl_client',
1375
+ 'REPLICATION CLIENT',
1376
+ __('Allows the user to ask where the slaves / masters are.')
1377
+ );
1378
+ $adminPrivTable[] = array('Repl_slave',
1379
+ 'REPLICATION SLAVE',
1380
+ __('Needed for the replication slaves.')
1381
+ );
1382
+ $adminPrivTable[] = array('Create_user',
1383
+ 'CREATE USER',
1384
+ __('Allows creating, dropping and renaming user accounts.')
1385
+ );
1386
+ }
1387
+ return $adminPrivTable;
1388
+ }
1389
+
1390
+ /**
1391
+ * Get HTML snippet for global privileges table with check boxes
1392
+ *
1393
+ * @param array $privTable privileges table array
1394
+ * @param array $privTable_names names of the privilege tables
1395
+ * (Data, Structure, Administration)
1396
+ * @param array $row first row from result or boolean false
1397
+ *
1398
+ * @return string $html_output
1399
+ */
1400
+ function PMA_getHtmlForGlobalPrivTableWithCheckboxes(
1401
+ $privTable, $privTable_names, $row
1402
+ ) {
1403
+ $html_output = '';
1404
+ foreach ($privTable as $i => $table) {
1405
+ $html_output .= '<fieldset>' . "\n"
1406
+ . '<legend>' . $privTable_names[$i] . '</legend>' . "\n";
1407
+ foreach ($table as $priv) {
1408
+ $html_output .= '<div class="item">' . "\n"
1409
+ . '<input type="checkbox" class="checkall"'
1410
+ . ' name="' . $priv[0] . '_priv" '
1411
+ . 'id="checkbox_' . $priv[0] . '_priv"'
1412
+ . ' value="Y" title="' . $priv[2] . '"'
1413
+ . ((isset($row[$priv[0] . '_priv'])
1414
+ && $row[$priv[0] . '_priv'] == 'Y')
1415
+ ? ' checked="checked"'
1416
+ : ''
1417
+ )
1418
+ . '/>' . "\n"
1419
+ . '<label for="checkbox_' . $priv[0] . '_priv">'
1420
+ . '<code>'
1421
+ . PMA_formatPrivilege($priv, true)
1422
+ . '</code></label>' . "\n"
1423
+ . '</div>' . "\n";
1424
+ }
1425
+ $html_output .= '</fieldset>' . "\n";
1426
+ }
1427
+ return $html_output;
1428
+ }
1429
+
1430
+ /**
1431
+ * Displays the fields used by the "new user" form as well as the
1432
+ * "change login information / copy user" form.
1433
+ *
1434
+ * @param string $mode are we creating a new user or are we just
1435
+ * changing one? (allowed values: 'new', 'change')
1436
+ *
1437
+ * @global array $cfg the phpMyAdmin configuration
1438
+ * @global resource $user_link the database connection
1439
+ *
1440
+ * @return string $html_output a HTML snippet
1441
+ */
1442
+ function PMA_getHtmlForLoginInformationFields($mode = 'new')
1443
+ {
1444
+ list($username_length, $hostname_length) = PMA_getUsernameAndHostnameLength();
1445
+
1446
+ if (isset($GLOBALS['username'])
1447
+ && /*overload*/mb_strlen($GLOBALS['username']) === 0
1448
+ ) {
1449
+ $GLOBALS['pred_username'] = 'any';
1450
+ }
1451
+ $html_output = '<fieldset id="fieldset_add_user_login">' . "\n"
1452
+ . '<legend>' . __('Login Information') . '</legend>' . "\n"
1453
+ . '<div class="item">' . "\n"
1454
+ . '<label for="select_pred_username">' . "\n"
1455
+ . ' ' . __('User name:') . "\n"
1456
+ . '</label>' . "\n"
1457
+ . '<span class="options">' . "\n";
1458
+
1459
+ $html_output .= '<select name="pred_username" id="select_pred_username" '
1460
+ . 'title="' . __('User name') . '"' . "\n";
1461
+
1462
+ $html_output .= ' onchange="'
1463
+ . 'if (this.value == \'any\') {'
1464
+ . ' username.value = \'\'; '
1465
+ . ' user_exists_warning.style.display = \'none\'; '
1466
+ . ' username.required = false; '
1467
+ . '} else if (this.value == \'userdefined\') {'
1468
+ . ' username.focus(); username.select(); '
1469
+ . ' username.required = true; '
1470
+ . '}">' . "\n";
1471
+
1472
+ $html_output .= '<option value="any"'
1473
+ . ((isset($GLOBALS['pred_username']) && $GLOBALS['pred_username'] == 'any')
1474
+ ? ' selected="selected"'
1475
+ : '') . '>'
1476
+ . __('Any user')
1477
+ . '</option>' . "\n";
1478
+
1479
+ $html_output .= '<option value="userdefined"'
1480
+ . ((! isset($GLOBALS['pred_username'])
1481
+ || $GLOBALS['pred_username'] == 'userdefined'
1482
+ )
1483
+ ? ' selected="selected"'
1484
+ : '') . '>'
1485
+ . __('Use text field')
1486
+ . ':</option>' . "\n";
1487
+
1488
+ $html_output .= '</select>' . "\n"
1489
+ . '</span>' . "\n";
1490
+
1491
+ $html_output .= '<input type="text" name="username" class="autofocus"'
1492
+ . ' maxlength="' . $username_length . '" title="' . __('User name') . '"'
1493
+ . (empty($GLOBALS['username'])
1494
+ ? ''
1495
+ : ' value="' . htmlspecialchars(
1496
+ isset($GLOBALS['new_username'])
1497
+ ? $GLOBALS['new_username']
1498
+ : $GLOBALS['username']
1499
+ ) . '"'
1500
+ )
1501
+ . ' onchange="pred_username.value = \'userdefined\'; this.required = true;" '
1502
+ . ((! isset($GLOBALS['pred_username'])
1503
+ || $GLOBALS['pred_username'] == 'userdefined'
1504
+ )
1505
+ ? 'required="required"'
1506
+ : '') . ' />' . "\n";
1507
+
1508
+ $html_output .= '<div id="user_exists_warning"'
1509
+ . ' name="user_exists_warning" style="display:none;">'
1510
+ . PMA_Message::notice(
1511
+ __(
1512
+ 'An account already exists with the same username '
1513
+ . 'but possibly a different hostname.'
1514
+ )
1515
+ )->getDisplay()
1516
+ . '</div>';
1517
+ $html_output .= '</div>';
1518
+
1519
+ $html_output .= '<div class="item">' . "\n"
1520
+ . '<label for="select_pred_hostname">' . "\n"
1521
+ . ' ' . __('Host:') . "\n"
1522
+ . '</label>' . "\n";
1523
+
1524
+ $html_output .= '<span class="options">' . "\n"
1525
+ . ' <select name="pred_hostname" id="select_pred_hostname" '
1526
+ . 'title="' . __('Host') . '"' . "\n";
1527
+ $_current_user = $GLOBALS['dbi']->fetchValue('SELECT USER();');
1528
+ if (! empty($_current_user)) {
1529
+ $thishost = str_replace(
1530
+ "'",
1531
+ '',
1532
+ /*overload*/mb_substr(
1533
+ $_current_user,
1534
+ (/*overload*/mb_strrpos($_current_user, '@') + 1)
1535
+ )
1536
+ );
1537
+ if ($thishost == 'localhost' || $thishost == '127.0.0.1') {
1538
+ unset($thishost);
1539
+ }
1540
+ }
1541
+ $html_output .= ' onchange="'
1542
+ . 'if (this.value == \'any\') { '
1543
+ . ' hostname.value = \'%\'; '
1544
+ . '} else if (this.value == \'localhost\') { '
1545
+ . ' hostname.value = \'localhost\'; '
1546
+ . '} '
1547
+ . (empty($thishost)
1548
+ ? ''
1549
+ : 'else if (this.value == \'thishost\') { '
1550
+ . ' hostname.value = \'' . addslashes(htmlspecialchars($thishost))
1551
+ . '\'; '
1552
+ . '} '
1553
+ )
1554
+ . 'else if (this.value == \'hosttable\') { '
1555
+ . ' hostname.value = \'\'; '
1556
+ . ' hostname.required = false; '
1557
+ . '} else if (this.value == \'userdefined\') {'
1558
+ . ' hostname.focus(); hostname.select(); '
1559
+ . ' hostname.required = true; '
1560
+ . '}">' . "\n";
1561
+ unset($_current_user);
1562
+
1563
+ // when we start editing a user, $GLOBALS['pred_hostname'] is not defined
1564
+ if (! isset($GLOBALS['pred_hostname']) && isset($GLOBALS['hostname'])) {
1565
+ switch (/*overload*/mb_strtolower($GLOBALS['hostname'])) {
1566
+ case 'localhost':
1567
+ case '127.0.0.1':
1568
+ $GLOBALS['pred_hostname'] = 'localhost';
1569
+ break;
1570
+ case '%':
1571
+ $GLOBALS['pred_hostname'] = 'any';
1572
+ break;
1573
+ default:
1574
+ $GLOBALS['pred_hostname'] = 'userdefined';
1575
+ break;
1576
+ }
1577
+ }
1578
+ $html_output .= '<option value="any"'
1579
+ . ((isset($GLOBALS['pred_hostname'])
1580
+ && $GLOBALS['pred_hostname'] == 'any'
1581
+ )
1582
+ ? ' selected="selected"'
1583
+ : '') . '>'
1584
+ . __('Any host')
1585
+ . '</option>' . "\n"
1586
+ . '<option value="localhost"'
1587
+ . ((isset($GLOBALS['pred_hostname'])
1588
+ && $GLOBALS['pred_hostname'] == 'localhost'
1589
+ )
1590
+ ? ' selected="selected"'
1591
+ : '') . '>'
1592
+ . __('Local')
1593
+ . '</option>' . "\n";
1594
+ if (! empty($thishost)) {
1595
+ $html_output .= '<option value="thishost"'
1596
+ . ((isset($GLOBALS['pred_hostname'])
1597
+ && $GLOBALS['pred_hostname'] == 'thishost'
1598
+ )
1599
+ ? ' selected="selected"'
1600
+ : '') . '>'
1601
+ . __('This Host')
1602
+ . '</option>' . "\n";
1603
+ }
1604
+ unset($thishost);
1605
+ $html_output .= '<option value="hosttable"'
1606
+ . ((isset($GLOBALS['pred_hostname'])
1607
+ && $GLOBALS['pred_hostname'] == 'hosttable'
1608
+ )
1609
+ ? ' selected="selected"'
1610
+ : '') . '>'
1611
+ . __('Use Host Table')
1612
+ . '</option>' . "\n";
1613
+
1614
+ $html_output .= '<option value="userdefined"'
1615
+ . ((isset($GLOBALS['pred_hostname'])
1616
+ && $GLOBALS['pred_hostname'] == 'userdefined'
1617
+ )
1618
+ ? ' selected="selected"'
1619
+ : '') . '>'
1620
+ . __('Use text field:') . '</option>' . "\n"
1621
+ . '</select>' . "\n"
1622
+ . '</span>' . "\n";
1623
+
1624
+ $html_output .= '<input type="text" name="hostname" maxlength="'
1625
+ . $hostname_length . '" value="'
1626
+ // use default value of '%' to match with the default 'Any host'
1627
+ . htmlspecialchars(isset($GLOBALS['hostname']) ? $GLOBALS['hostname'] : '%')
1628
+ . '" title="' . __('Host')
1629
+ . '" onchange="pred_hostname.value = \'userdefined\'; this.required = true;" '
1630
+ . ((isset($GLOBALS['pred_hostname'])
1631
+ && $GLOBALS['pred_hostname'] == 'userdefined'
1632
+ )
1633
+ ? 'required="required"'
1634
+ : '')
1635
+ . ' />' . "\n"
1636
+ . PMA_Util::showHint(
1637
+ __(
1638
+ 'When Host table is used, this field is ignored '
1639
+ . 'and values stored in Host table are used instead.'
1640
+ )
1641
+ )
1642
+ . '</div>' . "\n";
1643
+
1644
+ $html_output .= '<div class="item">' . "\n"
1645
+ . '<label for="select_pred_password">' . "\n"
1646
+ . ' ' . __('Password:') . "\n"
1647
+ . '</label>' . "\n"
1648
+ . '<span class="options">' . "\n"
1649
+ . '<select name="pred_password" id="select_pred_password" title="'
1650
+ . __('Password') . '"' . "\n";
1651
+
1652
+ $html_output .= ' onchange="'
1653
+ . 'if (this.value == \'none\') { '
1654
+ . ' pma_pw.value = \'\'; pma_pw2.value = \'\'; '
1655
+ . ' pma_pw.required = false; pma_pw2.required = false; '
1656
+ . '} else if (this.value == \'userdefined\') { '
1657
+ . ' pma_pw.focus(); pma_pw.select(); '
1658
+ . ' pma_pw.required = true; pma_pw2.required = true; '
1659
+ . '} else { '
1660
+ . ' pma_pw.required = false; pma_pw2.required = false; '
1661
+ . '}">' . "\n"
1662
+ . ($mode == 'change' ? '<option value="keep" selected="selected">'
1663
+ . __('Do not change the password')
1664
+ . '</option>' . "\n" : '')
1665
+ . '<option value="none"';
1666
+
1667
+ if (isset($GLOBALS['username']) && $mode != 'change') {
1668
+ $html_output .= ' selected="selected"';
1669
+ }
1670
+ $html_output .= '>' . __('No Password') . '</option>' . "\n"
1671
+ . '<option value="userdefined"'
1672
+ . (isset($GLOBALS['username']) ? '' : ' selected="selected"') . '>'
1673
+ . __('Use text field')
1674
+ . ':</option>' . "\n"
1675
+ . '</select>' . "\n"
1676
+ . '</span>' . "\n"
1677
+ . '<input type="password" id="text_pma_pw" name="pma_pw" '
1678
+ . 'title="' . __('Password') . '" '
1679
+ . 'onchange="pred_password.value = \'userdefined\'; this.required = true; pma_pw2.required = true;" '
1680
+ . (isset($GLOBALS['username']) ? '' : 'required="required"')
1681
+ . '/>' . "\n"
1682
+ . '</div>' . "\n";
1683
+
1684
+ $html_output .= '<div class="item" '
1685
+ . 'id="div_element_before_generate_password">' . "\n"
1686
+ . '<label for="text_pma_pw2">' . "\n"
1687
+ . ' ' . __('Re-type:') . "\n"
1688
+ . '</label>' . "\n"
1689
+ . '<span class="options">&nbsp;</span>' . "\n"
1690
+ . '<input type="password" name="pma_pw2" id="text_pma_pw2" '
1691
+ . 'title="' . __('Re-type') . '" '
1692
+ . 'onchange="pred_password.value = \'userdefined\'; this.required = true; pma_pw.required = true;" '
1693
+ . (isset($GLOBALS['username']) ? '' : 'required="required"')
1694
+ . '/>' . "\n"
1695
+ . '</div>' . "\n"
1696
+ // Generate password added here via jQuery
1697
+ . '</fieldset>' . "\n";
1698
+
1699
+ return $html_output;
1700
+ } // end of the 'PMA_displayUserAndHostFields()' function
1701
+
1702
+ /**
1703
+ * Get username and hostname length
1704
+ *
1705
+ * @return array username length and hostname length
1706
+ */
1707
+ function PMA_getUsernameAndHostnameLength()
1708
+ {
1709
+ /* Fallback values */
1710
+ $username_length = 16;
1711
+ $hostname_length = 41;
1712
+
1713
+ /* Try to get real lengths from the database */
1714
+ $fields_info = $GLOBALS['dbi']->fetchResult(
1715
+ 'SELECT COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH '
1716
+ . 'FROM information_schema.columns '
1717
+ . "WHERE table_schema = 'mysql' AND table_name = 'user' "
1718
+ . "AND COLUMN_NAME IN ('User', 'Host')"
1719
+ );
1720
+ foreach ($fields_info as $val) {
1721
+ if ($val['COLUMN_NAME'] == 'User') {
1722
+ $username_length = $val['CHARACTER_MAXIMUM_LENGTH'];
1723
+ } elseif ($val['COLUMN_NAME'] == 'Host') {
1724
+ $hostname_length = $val['CHARACTER_MAXIMUM_LENGTH'];
1725
+ }
1726
+ }
1727
+ return array($username_length, $hostname_length);
1728
+ }
1729
+
1730
+ /**
1731
+ * Returns all the grants for a certain user on a certain host
1732
+ * Used in the export privileges for all users section
1733
+ *
1734
+ * @param string $user User name
1735
+ * @param string $host Host name
1736
+ *
1737
+ * @return string containing all the grants text
1738
+ */
1739
+ function PMA_getGrants($user, $host)
1740
+ {
1741
+ $grants = $GLOBALS['dbi']->fetchResult(
1742
+ "SHOW GRANTS FOR '"
1743
+ . PMA_Util::sqlAddSlashes($user) . "'@'"
1744
+ . PMA_Util::sqlAddSlashes($host) . "'"
1745
+ );
1746
+ $response = '';
1747
+ foreach ($grants as $one_grant) {
1748
+ $response .= $one_grant . ";\n\n";
1749
+ }
1750
+ return $response;
1751
+ } // end of the 'PMA_getGrants()' function
1752
+
1753
+ /**
1754
+ * Update password and get message for password updating
1755
+ *
1756
+ * @param string $err_url error url
1757
+ * @param string $username username
1758
+ * @param string $hostname hostname
1759
+ *
1760
+ * @return string $message success or error message after updating password
1761
+ */
1762
+ function PMA_updatePassword($err_url, $username, $hostname)
1763
+ {
1764
+ // similar logic in user_password.php
1765
+ $message = '';
1766
+
1767
+ if (empty($_REQUEST['nopass'])
1768
+ && isset($_POST['pma_pw'])
1769
+ && isset($_POST['pma_pw2'])
1770
+ ) {
1771
+ if ($_POST['pma_pw'] != $_POST['pma_pw2']) {
1772
+ $message = PMA_Message::error(__('The passwords aren\'t the same!'));
1773
+ } elseif (empty($_POST['pma_pw']) || empty($_POST['pma_pw2'])) {
1774
+ $message = PMA_Message::error(__('The password is empty!'));
1775
+ }
1776
+ }
1777
+
1778
+ // here $nopass could be == 1
1779
+ if (empty($message)) {
1780
+ if (PMA_Util::getServerType() == 'MySQL'
1781
+ && PMA_MYSQL_INT_VERSION >= 50706
1782
+ ) {
1783
+ $query_prefix = "ALTER USER '"
1784
+ . PMA_Util::sqlAddSlashes($username)
1785
+ . "'@'" . PMA_Util::sqlAddSlashes($hostname) . "'"
1786
+ . " IDENTIFIED BY '";
1787
+
1788
+ // in $sql_query which will be displayed, hide the password
1789
+ $sql_query = $query_prefix . "*'";
1790
+
1791
+ $local_query = $query_prefix
1792
+ . PMA_Util::sqlAddSlashes($_POST['pma_pw']) . "'";
1793
+ } else {
1794
+ $hashing_function
1795
+ = (! empty($_REQUEST['pw_hash']) && $_REQUEST['pw_hash'] == 'old'
1796
+ ? 'OLD_'
1797
+ : ''
1798
+ )
1799
+ . 'PASSWORD';
1800
+
1801
+ $sql_query = 'SET PASSWORD FOR \''
1802
+ . PMA_Util::sqlAddSlashes($username)
1803
+ . '\'@\'' . PMA_Util::sqlAddSlashes($hostname) . '\' = '
1804
+ . (($_POST['pma_pw'] == '')
1805
+ ? '\'\''
1806
+ : $hashing_function . '(\''
1807
+ . preg_replace('@.@s', '*', $_POST['pma_pw']) . '\')');
1808
+
1809
+ $local_query = 'SET PASSWORD FOR \''
1810
+ . PMA_Util::sqlAddSlashes($username)
1811
+ . '\'@\'' . PMA_Util::sqlAddSlashes($hostname) . '\' = '
1812
+ . (($_POST['pma_pw'] == '') ? '\'\'' : $hashing_function
1813
+ . '(\'' . PMA_Util::sqlAddSlashes($_POST['pma_pw']) . '\')');
1814
+ }
1815
+
1816
+ $GLOBALS['dbi']->tryQuery($local_query)
1817
+ or PMA_Util::mysqlDie(
1818
+ $GLOBALS['dbi']->getError(), $sql_query, false, $err_url
1819
+ );
1820
+ $message = PMA_Message::success(
1821
+ __('The password for %s was changed successfully.')
1822
+ );
1823
+ $message->addParam(
1824
+ '\'' . htmlspecialchars($username)
1825
+ . '\'@\'' . htmlspecialchars($hostname) . '\''
1826
+ );
1827
+ }
1828
+ return $message;
1829
+ }
1830
+
1831
+ /**
1832
+ * Revokes privileges and get message and SQL query for privileges revokes
1833
+ *
1834
+ * @param string $dbname database name
1835
+ * @param string $tablename table name
1836
+ * @param string $username username
1837
+ * @param string $hostname host name
1838
+ *
1839
+ * @return array ($message, $sql_query)
1840
+ */
1841
+ function PMA_getMessageAndSqlQueryForPrivilegesRevoke($dbname,
1842
+ $tablename, $username, $hostname
1843
+ ) {
1844
+ $db_and_table = PMA_wildcardEscapeForGrant($dbname, $tablename);
1845
+
1846
+ $sql_query0 = 'REVOKE ALL PRIVILEGES ON ' . $db_and_table
1847
+ . ' FROM \''
1848
+ . PMA_Util::sqlAddSlashes($username) . '\'@\''
1849
+ . PMA_Util::sqlAddSlashes($hostname) . '\';';
1850
+
1851
+ $sql_query1 = 'REVOKE GRANT OPTION ON ' . $db_and_table
1852
+ . ' FROM \'' . PMA_Util::sqlAddSlashes($username) . '\'@\''
1853
+ . PMA_Util::sqlAddSlashes($hostname) . '\';';
1854
+
1855
+ $GLOBALS['dbi']->query($sql_query0);
1856
+ if (! $GLOBALS['dbi']->tryQuery($sql_query1)) {
1857
+ // this one may fail, too...
1858
+ $sql_query1 = '';
1859
+ }
1860
+ $sql_query = $sql_query0 . ' ' . $sql_query1;
1861
+ $message = PMA_Message::success(
1862
+ __('You have revoked the privileges for %s.')
1863
+ );
1864
+ $message->addParam(
1865
+ '\'' . htmlspecialchars($username)
1866
+ . '\'@\'' . htmlspecialchars($hostname) . '\''
1867
+ );
1868
+
1869
+ return array($message, $sql_query);
1870
+ }
1871
+
1872
+ /**
1873
+ * Get REQUIRE cluase
1874
+ *
1875
+ * @return stirng REQUIRE clause
1876
+ */
1877
+ function PMA_getRequireClause()
1878
+ {
1879
+ $require_clause = "";
1880
+ if (isset($_POST['SSL_priv']) && $_POST['SSL_priv'] == 'Y') {
1881
+ if (isset($_POST['ssl_type']) && $_POST['ssl_type'] == 'specified') {
1882
+ $require = array();
1883
+ if (! empty($_POST['ssl_cipher'])) {
1884
+ $require[] = "CIPHER '"
1885
+ . PMA_Util::sqlAddSlashes($_POST['ssl_cipher']) . "'";
1886
+ }
1887
+ if (! empty($_POST['x509_issuer'])) {
1888
+ $require[] = "ISSUER '"
1889
+ . PMA_Util::sqlAddSlashes($_POST['x509_issuer']) . "'";
1890
+ }
1891
+ if (! empty($_POST['x509_subject'])) {
1892
+ $require[] = "SUBJECT '"
1893
+ . PMA_Util::sqlAddSlashes($_POST['x509_subject']) . "'";
1894
+ }
1895
+ if (count($require)) {
1896
+ $require_clause = " REQUIRE " . implode(" AND ", $require);
1897
+ } else {
1898
+ $require_clause = " REQUIRE NONE";
1899
+ }
1900
+ } elseif (isset($_POST['ssl_type']) && $_POST['ssl_type'] == 'X509') {
1901
+ $require_clause = " REQUIRE X509";
1902
+ } elseif (isset($_POST['ssl_type']) && $_POST['ssl_type'] == 'ANY') {
1903
+ $require_clause = " REQUIRE SSL";
1904
+ }
1905
+ } else {
1906
+ $require_clause = " REQUIRE NONE";
1907
+ }
1908
+
1909
+ return $require_clause;
1910
+ }
1911
+
1912
+ /**
1913
+ * Get a WITH clause for 'update privileges' and 'add user'
1914
+ *
1915
+ * @return string $sql_query
1916
+ */
1917
+ function PMA_getWithClauseForAddUserAndUpdatePrivs()
1918
+ {
1919
+ $sql_query = '';
1920
+ if (isset($_POST['Grant_priv']) && $_POST['Grant_priv'] == 'Y') {
1921
+ $sql_query .= ' GRANT OPTION';
1922
+ }
1923
+ if (isset($_POST['max_questions'])) {
1924
+ $max_questions = max(0, (int)$_POST['max_questions']);
1925
+ $sql_query .= ' MAX_QUERIES_PER_HOUR ' . $max_questions;
1926
+ }
1927
+ if (isset($_POST['max_connections'])) {
1928
+ $max_connections = max(0, (int)$_POST['max_connections']);
1929
+ $sql_query .= ' MAX_CONNECTIONS_PER_HOUR ' . $max_connections;
1930
+ }
1931
+ if (isset($_POST['max_updates'])) {
1932
+ $max_updates = max(0, (int)$_POST['max_updates']);
1933
+ $sql_query .= ' MAX_UPDATES_PER_HOUR ' . $max_updates;
1934
+ }
1935
+ if (isset($_POST['max_user_connections'])) {
1936
+ $max_user_connections = max(0, (int)$_POST['max_user_connections']);
1937
+ $sql_query .= ' MAX_USER_CONNECTIONS ' . $max_user_connections;
1938
+ }
1939
+ return ((!empty($sql_query)) ? ' WITH' . $sql_query : '');
1940
+ }
1941
+
1942
+ /**
1943
+ * Get HTML for addUsersForm, This function call if isset($_REQUEST['adduser'])
1944
+ *
1945
+ * @param string $dbname database name
1946
+ *
1947
+ * @return string HTML for addUserForm
1948
+ */
1949
+ function PMA_getHtmlForAddUser($dbname)
1950
+ {
1951
+ $html_output = '<h2>' . "\n"
1952
+ . PMA_Util::getIcon('b_usradd.png') . __('Add user') . "\n"
1953
+ . '</h2>' . "\n"
1954
+ . '<form name="usersForm" id="addUsersForm"'
1955
+ . ' onsubmit="return checkAddUser(this);"'
1956
+ . ' action="server_privileges.php" method="post" autocomplete="off" >' . "\n"
1957
+ . PMA_URL_getHiddenInputs('', '')
1958
+ . PMA_getHtmlForLoginInformationFields('new');
1959
+
1960
+ $html_output .= '<fieldset id="fieldset_add_user_database">' . "\n"
1961
+ . '<legend>' . __('Database for user') . '</legend>' . "\n";
1962
+
1963
+ $html_output .= PMA_Util::getCheckbox(
1964
+ 'createdb-1',
1965
+ __('Create database with same name and grant all privileges.'),
1966
+ false, false, 'createdb-1'
1967
+ );
1968
+ $html_output .= '<br />' . "\n";
1969
+ $html_output .= PMA_Util::getCheckbox(
1970
+ 'createdb-2',
1971
+ __('Grant all privileges on wildcard name (username\\_%).'),
1972
+ false, false, 'createdb-2'
1973
+ );
1974
+ $html_output .= '<br />' . "\n";
1975
+
1976
+ if (! empty($dbname) ) {
1977
+ $html_output .= PMA_Util::getCheckbox(
1978
+ 'createdb-3',
1979
+ sprintf(
1980
+ __('Grant all privileges on database "%s".'),
1981
+ htmlspecialchars($dbname)
1982
+ ),
1983
+ true,
1984
+ false,
1985
+ 'createdb-3'
1986
+ );
1987
+ $html_output .= '<input type="hidden" name="dbname" value="'
1988
+ . htmlspecialchars($dbname) . '" />' . "\n";
1989
+ $html_output .= '<br />' . "\n";
1990
+ }
1991
+
1992
+ $html_output .= '</fieldset>' . "\n";
1993
+ if ($GLOBALS['is_grantuser']) {
1994
+ $html_output .= PMA_getHtmlToDisplayPrivilegesTable('*', '*', false);
1995
+ }
1996
+ $html_output .= '<fieldset id="fieldset_add_user_footer" class="tblFooters">'
1997
+ . "\n"
1998
+ . '<input type="hidden" name="adduser_submit" value="1" />' . "\n"
1999
+ . '<input type="submit" id="adduser_submit" value="' . __('Go') . '" />'
2000
+ . "\n"
2001
+ . '</fieldset>' . "\n"
2002
+ . '</form>' . "\n";
2003
+
2004
+ return $html_output;
2005
+ }
2006
+
2007
+ /**
2008
+ * Get the list of privileges and list of compared privileges as strings
2009
+ * and return a array that contains both strings
2010
+ *
2011
+ * @return array $list_of_privileges, $list_of_compared_privileges
2012
+ */
2013
+ function PMA_getListOfPrivilegesAndComparedPrivileges()
2014
+ {
2015
+ $list_of_privileges
2016
+ = '`User`, '
2017
+ . '`Host`, '
2018
+ . '`Select_priv`, '
2019
+ . '`Insert_priv`, '
2020
+ . '`Update_priv`, '
2021
+ . '`Delete_priv`, '
2022
+ . '`Create_priv`, '
2023
+ . '`Drop_priv`, '
2024
+ . '`Grant_priv`, '
2025
+ . '`Index_priv`, '
2026
+ . '`Alter_priv`, '
2027
+ . '`References_priv`, '
2028
+ . '`Create_tmp_table_priv`, '
2029
+ . '`Lock_tables_priv`, '
2030
+ . '`Create_view_priv`, '
2031
+ . '`Show_view_priv`, '
2032
+ . '`Create_routine_priv`, '
2033
+ . '`Alter_routine_priv`, '
2034
+ . '`Execute_priv`';
2035
+
2036
+ $listOfComparedPrivs
2037
+ = '`Select_priv` = \'N\''
2038
+ . ' AND `Insert_priv` = \'N\''
2039
+ . ' AND `Update_priv` = \'N\''
2040
+ . ' AND `Delete_priv` = \'N\''
2041
+ . ' AND `Create_priv` = \'N\''
2042
+ . ' AND `Drop_priv` = \'N\''
2043
+ . ' AND `Grant_priv` = \'N\''
2044
+ . ' AND `References_priv` = \'N\''
2045
+ . ' AND `Create_tmp_table_priv` = \'N\''
2046
+ . ' AND `Lock_tables_priv` = \'N\''
2047
+ . ' AND `Create_view_priv` = \'N\''
2048
+ . ' AND `Show_view_priv` = \'N\''
2049
+ . ' AND `Create_routine_priv` = \'N\''
2050
+ . ' AND `Alter_routine_priv` = \'N\''
2051
+ . ' AND `Execute_priv` = \'N\'';
2052
+
2053
+ $list_of_privileges .=
2054
+ ', `Event_priv`, '
2055
+ . '`Trigger_priv`';
2056
+ $listOfComparedPrivs .=
2057
+ ' AND `Event_priv` = \'N\''
2058
+ . ' AND `Trigger_priv` = \'N\'';
2059
+ return array($list_of_privileges, $listOfComparedPrivs);
2060
+ }
2061
+
2062
+ /**
2063
+ * Get the HTML for user form and check the privileges for a particular database.
2064
+ *
2065
+ * @param string $db database name
2066
+ *
2067
+ * @return string $html_output
2068
+ */
2069
+ function PMA_getHtmlForSpecificDbPrivileges($db)
2070
+ {
2071
+ $html_output = '';
2072
+ if ($GLOBALS['is_superuser']) {
2073
+ // check the privileges for a particular database.
2074
+ $html_output = '<form id="usersForm" action="server_privileges.php">';
2075
+ $html_output .= PMA_URL_getHiddenInputs($db);
2076
+ $html_output .= '<fieldset>';
2077
+ $html_output .= '<legend>' . "\n"
2078
+ . PMA_Util::getIcon('b_usrcheck.png')
2079
+ . ' '
2080
+ . sprintf(
2081
+ __('Users having access to "%s"'),
2082
+ '<a href="' . $GLOBALS['cfg']['DefaultTabDatabase']
2083
+ . PMA_URL_getCommon(array('db' => $db)) . '">'
2084
+ . htmlspecialchars($db)
2085
+ . '</a>'
2086
+ )
2087
+ . "\n"
2088
+ . '</legend>' . "\n";
2089
+
2090
+ $html_output .= '<table id="dbspecificuserrights" class="data">';
2091
+ $html_output .= PMA_getHtmlForPrivsTableHead();
2092
+ $privMap = PMA_getPrivMap($db);
2093
+ $html_output .= PMA_getHtmlTableBodyForSpecificDbOrTablePrivs($privMap, $db);
2094
+ $html_output .= '</table>';
2095
+
2096
+ $html_output .= '<div style="float:left;">';
2097
+ $html_output .= PMA_Util::getWithSelected(
2098
+ $GLOBALS['pmaThemeImage'], $GLOBALS['text_dir'], "usersForm"
2099
+ );
2100
+ $html_output .= PMA_Util::getButtonOrImage(
2101
+ 'submit_mult', 'mult_submit', 'submit_mult_export',
2102
+ __('Export'), 'b_tblexport.png', 'export'
2103
+ );
2104
+
2105
+ $html_output .= '</fieldset>';
2106
+ $html_output .= '</form>';
2107
+ } else {
2108
+ $html_output .= PMA_getHtmlForViewUsersError();
2109
+ }
2110
+
2111
+ if ($GLOBALS['is_ajax_request'] == true
2112
+ && empty($_REQUEST['ajax_page_request'])
2113
+ ) {
2114
+ $message = PMA_Message::success(__('User has been added.'));
2115
+ $response = PMA_Response::getInstance();
2116
+ $response->addJSON('message', $message);
2117
+ $response->addJSON('user_form', $html_output);
2118
+ exit;
2119
+ } else {
2120
+ // Offer to create a new user for the current database
2121
+ $html_output .= PMA_getAddUserHtmlFieldset($db);
2122
+ }
2123
+ return $html_output;
2124
+ }
2125
+
2126
+ /**
2127
+ * Get the HTML for user form and check the privileges for a particular table.
2128
+ *
2129
+ * @param string $db database name
2130
+ * @param string $table table name
2131
+ *
2132
+ * @return string $html_output
2133
+ */
2134
+ function PMA_getHtmlForSpecificTablePrivileges($db, $table)
2135
+ {
2136
+ $html_output = '';
2137
+ if ($GLOBALS['is_superuser']) {
2138
+ // check the privileges for a particular table.
2139
+ $html_output = '<form id="usersForm" action="server_privileges.php">';
2140
+ $html_output .= PMA_URL_getHiddenInputs($db, $table);
2141
+ $html_output .= '<fieldset>';
2142
+ $html_output .= '<legend>'
2143
+ . PMA_Util::getIcon('b_usrcheck.png')
2144
+ . sprintf(
2145
+ __('Users having access to "%s"'),
2146
+ '<a href="' . $GLOBALS['cfg']['DefaultTabTable']
2147
+ . PMA_URL_getCommon(
2148
+ array(
2149
+ 'db' => $db,
2150
+ 'table' => $table,
2151
+ )
2152
+ ) . '">'
2153
+ . htmlspecialchars($db) . '.' . htmlspecialchars($table)
2154
+ . '</a>'
2155
+ )
2156
+ . '</legend>';
2157
+
2158
+ $html_output .= '<table id="tablespecificuserrights" class="data">';
2159
+ $html_output .= PMA_getHtmlForPrivsTableHead();
2160
+ $privMap = PMA_getPrivMap($db);
2161
+ $sql_query = "SELECT `User`, `Host`, `Db`,"
2162
+ . " 't' AS `Type`, `Table_name`, `Table_priv`"
2163
+ . " FROM `mysql`.`tables_priv`"
2164
+ . " WHERE '" . PMA_Util::sqlAddSlashes($db) . "' LIKE `Db`"
2165
+ . " AND '" . PMA_Util::sqlAddSlashes($table) . "' LIKE `Table_name`"
2166
+ . " AND NOT (`Table_priv` = '' AND Column_priv = '')"
2167
+ . " ORDER BY `User` ASC, `Host` ASC, `Db` ASC, `Table_priv` ASC;";
2168
+ $res = $GLOBALS['dbi']->query($sql_query);
2169
+ PMA_mergePrivMapFromResult($privMap, $res);
2170
+ $html_output .= PMA_getHtmlTableBodyForSpecificDbOrTablePrivs($privMap, $db);
2171
+ $html_output .= '</table>';
2172
+
2173
+ $html_output .= '<div style="float:left;">';
2174
+ $html_output .= PMA_Util::getWithSelected(
2175
+ $GLOBALS['pmaThemeImage'], $GLOBALS['text_dir'], "usersForm"
2176
+ );
2177
+ $html_output .= PMA_Util::getButtonOrImage(
2178
+ 'submit_mult', 'mult_submit', 'submit_mult_export',
2179
+ __('Export'), 'b_tblexport.png', 'export'
2180
+ );
2181
+
2182
+ $html_output .= '</fieldset>';
2183
+ $html_output .= '</form>';
2184
+ } else {
2185
+ $html_output .= PMA_getHtmlForViewUsersError();
2186
+ }
2187
+ // Offer to create a new user for the current database
2188
+ $html_output .= PMA_getAddUserHtmlFieldset($db, $table);
2189
+ return $html_output;
2190
+ }
2191
+
2192
+ /**
2193
+ * gets privilege map
2194
+ *
2195
+ * @param string $db the database
2196
+ *
2197
+ * @return array $privMap the privilege map
2198
+ */
2199
+ function PMA_getPrivMap($db)
2200
+ {
2201
+ list($listOfPrivs, $listOfComparedPrivs)
2202
+ = PMA_getListOfPrivilegesAndComparedPrivileges();
2203
+ $sql_query
2204
+ = "("
2205
+ . " SELECT " . $listOfPrivs . ", '*' AS `Db`, 'g' AS `Type`"
2206
+ . " FROM `mysql`.`user`"
2207
+ . " WHERE NOT (" . $listOfComparedPrivs . ")"
2208
+ . ")"
2209
+ . " UNION "
2210
+ . "("
2211
+ . " SELECT " . $listOfPrivs . ", `Db`, 'd' AS `Type`"
2212
+ . " FROM `mysql`.`db`"
2213
+ . " WHERE '" . PMA_Util::sqlAddSlashes($db) . "' LIKE `Db`"
2214
+ . " AND NOT (" . $listOfComparedPrivs . ")"
2215
+ . ")"
2216
+ . " ORDER BY `User` ASC, `Host` ASC, `Db` ASC;";
2217
+ $res = $GLOBALS['dbi']->query($sql_query);
2218
+ $privMap = array();
2219
+ PMA_mergePrivMapFromResult($privMap, $res);
2220
+ return $privMap;
2221
+ }
2222
+
2223
+ /**
2224
+ * merge privilege map and rows from resultset
2225
+ *
2226
+ * @param array &$privMap the privilege map reference
2227
+ * @param object $result the resultset of query
2228
+ *
2229
+ * @return void
2230
+ */
2231
+ function PMA_mergePrivMapFromResult(&$privMap, $result)
2232
+ {
2233
+ while ($row = $GLOBALS['dbi']->fetchAssoc($result)) {
2234
+ $user = $row['User'];
2235
+ $host = $row['Host'];
2236
+ if (! isset($privMap[$user])) {
2237
+ $privMap[$user] = array();
2238
+ }
2239
+ if (! isset($privMap[$user][$host])) {
2240
+ $privMap[$user][$host] = array();
2241
+ }
2242
+ $privMap[$user][$host][] = $row;
2243
+ }
2244
+ }
2245
+
2246
+ /**
2247
+ * Get HTML snippet for privileges table head
2248
+ *
2249
+ * @return string $html_output
2250
+ */
2251
+ function PMA_getHtmlForPrivsTableHead()
2252
+ {
2253
+ return '<thead>'
2254
+ . '<tr>'
2255
+ . '<th></th>'
2256
+ . '<th>' . __('User') . '</th>'
2257
+ . '<th>' . __('Host') . '</th>'
2258
+ . '<th>' . __('Type') . '</th>'
2259
+ . '<th>' . __('Privileges') . '</th>'
2260
+ . '<th>' . __('Grant') . '</th>'
2261
+ . '<th>' . __('Action') . '</th>'
2262
+ . '</tr>'
2263
+ . '</thead>';
2264
+ }
2265
+
2266
+ /**
2267
+ * Get HTML error for View Users form
2268
+ * For non superusers such as grant/create users
2269
+ *
2270
+ * @return string $html_output
2271
+ */
2272
+ function PMA_getHtmlForViewUsersError()
2273
+ {
2274
+ return PMA_Message::error(
2275
+ __('Not enough privilege to view users.')
2276
+ )->getDisplay();
2277
+ }
2278
+
2279
+ /**
2280
+ * Get HTML snippet for table body of specific database or table privileges
2281
+ *
2282
+ * @param array $privMap privilege map
2283
+ * @param string $db database
2284
+ *
2285
+ * @return string $html_output
2286
+ */
2287
+ function PMA_getHtmlTableBodyForSpecificDbOrTablePrivs($privMap, $db)
2288
+ {
2289
+ $html_output = '<tbody>';
2290
+ $index_checkbox = 0;
2291
+ $odd_row = true;
2292
+ if (empty($privMap)) {
2293
+ $html_output .= '<tr class="odd">'
2294
+ . '<td colspan="6">'
2295
+ . __('No user found.')
2296
+ . '</td>'
2297
+ . '</tr>'
2298
+ . '</tbody>';
2299
+ return $html_output;
2300
+ }
2301
+
2302
+ foreach ($privMap as $current_user => $val) {
2303
+ foreach ($val as $current_host => $current_privileges) {
2304
+ $nbPrivileges = count($current_privileges);
2305
+ $html_output .= '<tr class="noclick '
2306
+ . ($odd_row ? 'odd' : 'even') . '">';
2307
+
2308
+ $value = htmlspecialchars($current_user . '&amp;#27;' . $current_host);
2309
+ $html_output .= '<td';
2310
+ if ($nbPrivileges > 1) {
2311
+ $html_output .= ' rowspan="' . $nbPrivileges . '"';
2312
+ }
2313
+ $html_output .= '>';
2314
+ $html_output .= '<input type="checkbox" class="checkall" name="selected_usr[]" '
2315
+ . 'id="checkbox_sel_users_' . ($index_checkbox++) . '" '
2316
+ . 'value="' . $value . '" /></td>' . "\n";
2317
+
2318
+ // user
2319
+ $html_output .= '<td';
2320
+ if ($nbPrivileges > 1) {
2321
+ $html_output .= ' rowspan="' . $nbPrivileges . '"';
2322
+ }
2323
+ $html_output .= '>';
2324
+ if (empty($current_user)) {
2325
+ $html_output .= '<span style="color: #FF0000">'
2326
+ . __('Any') . '</span>';
2327
+ } else {
2328
+ $html_output .= htmlspecialchars($current_user);
2329
+ }
2330
+ $html_output .= '</td>';
2331
+
2332
+ // host
2333
+ $html_output .= '<td';
2334
+ if ($nbPrivileges > 1) {
2335
+ $html_output .= ' rowspan="' . $nbPrivileges . '"';
2336
+ }
2337
+ $html_output .= '>';
2338
+ $html_output .= htmlspecialchars($current_host);
2339
+ $html_output .= '</td>';
2340
+
2341
+ $html_output .= PMA_getHtmlListOfPrivs(
2342
+ $db, $current_privileges, $current_user,
2343
+ $current_host, $odd_row
2344
+ );
2345
+
2346
+ $odd_row = ! $odd_row;
2347
+ }
2348
+ }
2349
+ $html_output .= '</tbody>';
2350
+
2351
+ return $html_output;
2352
+ }
2353
+
2354
+ /**
2355
+ * Get HTML to display privileges
2356
+ *
2357
+ * @param string $db Database name
2358
+ * @param array $current_privileges List of privileges
2359
+ * @param string $current_user Current user
2360
+ * @param string $current_host Current host
2361
+ * @param boolean $odd_row Current row is odd
2362
+ *
2363
+ * @return string HTML to display privileges
2364
+ */
2365
+ function PMA_getHtmlListOfPrivs(
2366
+ $db, $current_privileges, $current_user,
2367
+ $current_host, $odd_row
2368
+ ) {
2369
+ $nbPrivileges = count($current_privileges);
2370
+ $html_output = null;
2371
+ for ($i = 0; $i < $nbPrivileges; $i++) {
2372
+ $current = $current_privileges[$i];
2373
+
2374
+ // type
2375
+ $html_output .= '<td>';
2376
+ if ($current['Type'] == 'g') {
2377
+ $html_output .= __('global');
2378
+ } elseif ($current['Type'] == 'd') {
2379
+ if ($current['Db'] == PMA_Util::escapeMysqlWildcards($db)) {
2380
+ $html_output .= __('database-specific');
2381
+ } else {
2382
+ $html_output .= __('wildcard') . ': '
2383
+ . '<code>'
2384
+ . htmlspecialchars($current['Db'])
2385
+ . '</code>';
2386
+ }
2387
+ } elseif ($current['Type'] == 't') {
2388
+ $html_output .= __('table-specific');
2389
+ }
2390
+ $html_output .= '</td>';
2391
+
2392
+ // privileges
2393
+ $html_output .= '<td>';
2394
+ if (isset($current['Table_name'])) {
2395
+ $privList = explode(',', $current['Table_priv']);
2396
+ $privs = array();
2397
+ $grantsArr = PMA_getTableGrantsArray();
2398
+ foreach ($grantsArr as $grant) {
2399
+ $privs[$grant[0]] = 'N';
2400
+ foreach ($privList as $priv) {
2401
+ if ($grant[0] == $priv) {
2402
+ $privs[$grant[0]] = 'Y';
2403
+ }
2404
+ }
2405
+ }
2406
+ $html_output .= '<code>'
2407
+ . join(
2408
+ ',',
2409
+ PMA_extractPrivInfo($privs, true, true)
2410
+ )
2411
+ . '</code>';
2412
+ } else {
2413
+ $html_output .= '<code>'
2414
+ . join(
2415
+ ',',
2416
+ PMA_extractPrivInfo($current, true, false)
2417
+ )
2418
+ . '</code>';
2419
+ }
2420
+ $html_output .= '</td>';
2421
+
2422
+ // grant
2423
+ $html_output .= '<td>';
2424
+ $containsGrant = false;
2425
+ if (isset($current['Table_name'])) {
2426
+ $privList = explode(',', $current['Table_priv']);
2427
+ foreach ($privList as $priv) {
2428
+ if ($priv == 'Grant') {
2429
+ $containsGrant = true;
2430
+ }
2431
+ }
2432
+ } else {
2433
+ $containsGrant = $current['Grant_priv'] == 'Y';
2434
+ }
2435
+ $html_output .= ($containsGrant ? __('Yes') : __('No'));
2436
+ $html_output .= '</td>';
2437
+
2438
+ // action
2439
+ $html_output .= '<td>';
2440
+ if ($GLOBALS['is_grantuser']) {
2441
+ $specific_db = (isset($current['Db']) && $current['Db'] != '*')
2442
+ ? $current['Db'] : '';
2443
+ $specific_table = (isset($current['Table_name'])
2444
+ && $current['Table_name'] != '*')
2445
+ ? $current['Table_name'] : '';
2446
+ $html_output .= PMA_getUserLink(
2447
+ 'edit',
2448
+ $current_user,
2449
+ $current_host,
2450
+ $specific_db,
2451
+ $specific_table
2452
+ );
2453
+ }
2454
+ $html_output .= '</td>';
2455
+
2456
+ $html_output .= '</tr>';
2457
+ if (($i + 1) < $nbPrivileges) {
2458
+ $html_output .= '<tr class="noclick '
2459
+ . ($odd_row ? 'odd' : 'even') . '">';
2460
+ }
2461
+ }
2462
+ return $html_output;
2463
+ }
2464
+
2465
+ /**
2466
+ * Returns edit, revoke or export link for a user.
2467
+ *
2468
+ * @param string $linktype The link type (edit | revoke | export)
2469
+ * @param string $username User name
2470
+ * @param string $hostname Host name
2471
+ * @param string $dbname Database name
2472
+ * @param string $tablename Table name
2473
+ * @param string $initial Initial value
2474
+ *
2475
+ * @return string HTML code with link
2476
+ */
2477
+ function PMA_getUserLink(
2478
+ $linktype, $username, $hostname, $dbname = '', $tablename = '', $initial = ''
2479
+ ) {
2480
+ $html = '<a';
2481
+ switch($linktype) {
2482
+ case 'edit':
2483
+ $html .= ' class="edit_user_anchor"';
2484
+ break;
2485
+ case 'export':
2486
+ $html .= ' class="export_user_anchor ajax"';
2487
+ break;
2488
+ }
2489
+ $params = array(
2490
+ 'username' => $username,
2491
+ 'hostname' => $hostname
2492
+ );
2493
+ switch($linktype) {
2494
+ case 'edit':
2495
+ $params['dbname'] = $dbname;
2496
+ $params['tablename'] = $tablename;
2497
+ break;
2498
+ case 'revoke':
2499
+ $params['dbname'] = $dbname;
2500
+ $params['tablename'] = $tablename;
2501
+ $params['revokeall'] = 1;
2502
+ break;
2503
+ case 'export':
2504
+ $params['initial'] = $initial;
2505
+ $params['export'] = 1;
2506
+ break;
2507
+ }
2508
+
2509
+ $html .= ' href="server_privileges.php'
2510
+ . PMA_URL_getCommon($params)
2511
+ . '">';
2512
+
2513
+ switch($linktype) {
2514
+ case 'edit':
2515
+ $html .= PMA_Util::getIcon('b_usredit.png', __('Edit Privileges'));
2516
+ break;
2517
+ case 'revoke':
2518
+ $html .= PMA_Util::getIcon('b_usrdrop.png', __('Revoke'));
2519
+ break;
2520
+ case 'export':
2521
+ $html .= PMA_Util::getIcon('b_tblexport.png', __('Export'));
2522
+ break;
2523
+ }
2524
+ $html .= '</a>';
2525
+
2526
+ return $html;
2527
+ }
2528
+
2529
+ /**
2530
+ * Returns user group edit link
2531
+ *
2532
+ * @param string $username User name
2533
+ *
2534
+ * @return HTML code with link
2535
+ */
2536
+ function PMA_getUserGroupEditLink($username)
2537
+ {
2538
+ return '<a class="edit_user_group_anchor ajax"'
2539
+ . ' href="server_privileges.php'
2540
+ . PMA_URL_getCommon(array('username' => $username))
2541
+ . '">'
2542
+ . PMA_Util::getIcon('b_usrlist.png', __('Edit user group'))
2543
+ . '</a>';
2544
+ }
2545
+
2546
+ /**
2547
+ * Returns number of defined user groups
2548
+ *
2549
+ * @return integer $user_group_count
2550
+ */
2551
+ function PMA_getUserGroupCount()
2552
+ {
2553
+ $cfgRelation = PMA_getRelationsParam();
2554
+ $user_group_table = PMA_Util::backquote($cfgRelation['db'])
2555
+ . '.' . PMA_Util::backquote($cfgRelation['usergroups']);
2556
+ $sql_query = 'SELECT COUNT(*) FROM ' . $user_group_table;
2557
+ $user_group_count = $GLOBALS['dbi']->fetchValue(
2558
+ $sql_query, 0, 0, $GLOBALS['controllink']
2559
+ );
2560
+
2561
+ return $user_group_count;
2562
+ }
2563
+
2564
+ /**
2565
+ * This function return the extra data array for the ajax behavior
2566
+ *
2567
+ * @param string $password password
2568
+ * @param string $sql_query sql query
2569
+ * @param string $hostname hostname
2570
+ * @param string $username username
2571
+ *
2572
+ * @return array $extra_data
2573
+ */
2574
+ function PMA_getExtraDataForAjaxBehavior(
2575
+ $password, $sql_query, $hostname, $username
2576
+ ) {
2577
+ if (isset($GLOBALS['dbname'])) {
2578
+ //if (preg_match('/\\\\(?:_|%)/i', $dbname)) {
2579
+ if (preg_match('/(?<!\\\\)(?:_|%)/i', $GLOBALS['dbname'])) {
2580
+ $dbname_is_wildcard = true;
2581
+ } else {
2582
+ $dbname_is_wildcard = false;
2583
+ }
2584
+ }
2585
+
2586
+ $user_group_count = 0;
2587
+ if ($GLOBALS['cfgRelation']['menuswork']) {
2588
+ $user_group_count = PMA_getUserGroupCount();
2589
+ }
2590
+
2591
+ $extra_data = array();
2592
+ if (/*overload*/mb_strlen($sql_query)) {
2593
+ $extra_data['sql_query'] = PMA_Util::getMessage(null, $sql_query);
2594
+ }
2595
+
2596
+ if (isset($_REQUEST['change_copy'])) {
2597
+ /**
2598
+ * generate html on the fly for the new user that was just created.
2599
+ */
2600
+ $new_user_string = '<tr>' . "\n"
2601
+ . '<td> <input type="checkbox" name="selected_usr[]" '
2602
+ . 'id="checkbox_sel_users_"'
2603
+ . 'value="'
2604
+ . htmlspecialchars($username)
2605
+ . '&amp;#27;' . htmlspecialchars($hostname) . '" />'
2606
+ . '</td>' . "\n"
2607
+ . '<td><label for="checkbox_sel_users_">'
2608
+ . (empty($_REQUEST['username'])
2609
+ ? '<span style="color: #FF0000">' . __('Any') . '</span>'
2610
+ : htmlspecialchars($username) ) . '</label></td>' . "\n"
2611
+ . '<td>' . htmlspecialchars($hostname) . '</td>' . "\n";
2612
+
2613
+ $new_user_string .= '<td>';
2614
+
2615
+ if (! empty($password) || isset($_POST['pma_pw'])) {
2616
+ $new_user_string .= __('Yes');
2617
+ } else {
2618
+ $new_user_string .= '<span style="color: #FF0000">'
2619
+ . __('No')
2620
+ . '</span>';
2621
+ };
2622
+
2623
+ $new_user_string .= '</td>' . "\n";
2624
+ $new_user_string .= '<td>'
2625
+ . '<code>' . join(', ', PMA_extractPrivInfo(null, true)) . '</code>'
2626
+ . '</td>'; //Fill in privileges here
2627
+
2628
+ // if $cfg['Servers'][$i]['users'] and $cfg['Servers'][$i]['usergroups'] are
2629
+ // enabled
2630
+ $cfgRelation = PMA_getRelationsParam();
2631
+ if (isset($cfgRelation['users']) && isset($cfgRelation['usergroups'])) {
2632
+ $new_user_string .= '<td class="usrGroup"></td>';
2633
+ }
2634
+
2635
+ $new_user_string .= '<td>';
2636
+ if ((isset($_POST['Grant_priv']) && $_POST['Grant_priv'] == 'Y')) {
2637
+ $new_user_string .= __('Yes');
2638
+ } else {
2639
+ $new_user_string .= __('No');
2640
+ }
2641
+ $new_user_string .='</td>';
2642
+
2643
+ if ($GLOBALS['is_grantuser']) {
2644
+ $new_user_string .= '<td>'
2645
+ . PMA_getUserLink('edit', $username, $hostname)
2646
+ . '</td>' . "\n";
2647
+ }
2648
+
2649
+ if (isset($cfgRelation['menuswork']) && $user_group_count > 0) {
2650
+ $new_user_string .= '<td>'
2651
+ . PMA_getUserGroupEditLink($username)
2652
+ . '</td>' . "\n";
2653
+ }
2654
+
2655
+ $new_user_string .= '<td>'
2656
+ . PMA_getUserLink(
2657
+ 'export',
2658
+ $username,
2659
+ $hostname,
2660
+ '',
2661
+ '',
2662
+ isset($_GET['initial']) ? $_GET['initial'] : ''
2663
+ )
2664
+ . '</td>' . "\n";
2665
+
2666
+ $new_user_string .= '</tr>';
2667
+
2668
+ $extra_data['new_user_string'] = $new_user_string;
2669
+
2670
+ /**
2671
+ * Generate the string for this alphabet's initial, to update the user
2672
+ * pagination
2673
+ */
2674
+ $new_user_initial = /*overload*/mb_strtoupper(
2675
+ /*overload*/mb_substr($username, 0, 1)
2676
+ );
2677
+ $newUserInitialString = '<a href="server_privileges.php'
2678
+ . PMA_URL_getCommon(array('initial' => $new_user_initial)) . '">'
2679
+ . $new_user_initial . '</a>';
2680
+ $extra_data['new_user_initial'] = $new_user_initial;
2681
+ $extra_data['new_user_initial_string'] = $newUserInitialString;
2682
+ }
2683
+
2684
+ if (isset($_POST['update_privs'])) {
2685
+ $extra_data['db_specific_privs'] = false;
2686
+ $extra_data['db_wildcard_privs'] = false;
2687
+ if (isset($dbname_is_wildcard)) {
2688
+ $extra_data['db_specific_privs'] = ! $dbname_is_wildcard;
2689
+ $extra_data['db_wildcard_privs'] = $dbname_is_wildcard;
2690
+ }
2691
+ $new_privileges = join(', ', PMA_extractPrivInfo(null, true));
2692
+
2693
+ $extra_data['new_privileges'] = $new_privileges;
2694
+ }
2695
+
2696
+ if (isset($_REQUEST['validate_username'])) {
2697
+ $sql_query = "SELECT * FROM `mysql`.`user` WHERE `User` = '"
2698
+ . $_REQUEST['username'] . "';";
2699
+ $res = $GLOBALS['dbi']->query($sql_query);
2700
+ $row = $GLOBALS['dbi']->fetchRow($res);
2701
+ if (empty($row)) {
2702
+ $extra_data['user_exists'] = false;
2703
+ } else {
2704
+ $extra_data['user_exists'] = true;
2705
+ }
2706
+ }
2707
+
2708
+ return $extra_data;
2709
+ }
2710
+
2711
+ /**
2712
+ * Get the HTML snippet for change user login information
2713
+ *
2714
+ * @param string $username username
2715
+ * @param string $hostname host name
2716
+ *
2717
+ * @return string HTML snippet
2718
+ */
2719
+ function PMA_getChangeLoginInformationHtmlForm($username, $hostname)
2720
+ {
2721
+ $choices = array(
2722
+ '4' => __('… keep the old one.'),
2723
+ '1' => __('… delete the old one from the user tables.'),
2724
+ '2' => __(
2725
+ '… revoke all active privileges from '
2726
+ . 'the old one and delete it afterwards.'
2727
+ ),
2728
+ '3' => __(
2729
+ '… delete the old one from the user tables '
2730
+ . 'and reload the privileges afterwards.'
2731
+ )
2732
+ );
2733
+
2734
+ $html_output = '<form action="server_privileges.php" '
2735
+ . 'onsubmit="return checkAddUser(this);" '
2736
+ . 'method="post" class="copyUserForm submenu-item">' . "\n"
2737
+ . PMA_URL_getHiddenInputs('', '')
2738
+ . '<input type="hidden" name="old_username" '
2739
+ . 'value="' . htmlspecialchars($username) . '" />' . "\n"
2740
+ . '<input type="hidden" name="old_hostname" '
2741
+ . 'value="' . htmlspecialchars($hostname) . '" />' . "\n"
2742
+ . '<fieldset id="fieldset_change_copy_user">' . "\n"
2743
+ . '<legend data-submenu-label="' . __('Login Information') . '">' . "\n"
2744
+ . __('Change Login Information / Copy User')
2745
+ . '</legend>' . "\n"
2746
+ . PMA_getHtmlForLoginInformationFields('change');
2747
+
2748
+ $html_output .= '<fieldset id="fieldset_mode">' . "\n"
2749
+ . ' <legend>'
2750
+ . __('Create a new user with the same privileges and …')
2751
+ . '</legend>' . "\n";
2752
+ $html_output .= PMA_Util::getRadioFields(
2753
+ 'mode', $choices, '4', true
2754
+ );
2755
+ $html_output .= '</fieldset>' . "\n"
2756
+ . '</fieldset>' . "\n";
2757
+
2758
+ $html_output .= '<fieldset id="fieldset_change_copy_user_footer" '
2759
+ . 'class="tblFooters">' . "\n"
2760
+ . '<input type="hidden" name="change_copy" value="1" />' . "\n"
2761
+ . '<input type="submit" value="' . __('Go') . '" />' . "\n"
2762
+ . '</fieldset>' . "\n"
2763
+ . '</form>' . "\n";
2764
+
2765
+ return $html_output;
2766
+ }
2767
+
2768
+ /**
2769
+ * Provide a line with links to the relevant database and table
2770
+ *
2771
+ * @param string $url_dbname url database name that urlencode() string
2772
+ * @param string $dbname database name
2773
+ * @param string $tablename table name
2774
+ *
2775
+ * @return string HTML snippet
2776
+ */
2777
+ function PMA_getLinkToDbAndTable($url_dbname, $dbname, $tablename)
2778
+ {
2779
+ $html_output = '[ ' . __('Database')
2780
+ . ' <a href="' . $GLOBALS['cfg']['DefaultTabDatabase']
2781
+ . PMA_URL_getCommon(
2782
+ array(
2783
+ 'db' => $url_dbname,
2784
+ 'reload' => 1
2785
+ )
2786
+ )
2787
+ . '">'
2788
+ . htmlspecialchars($dbname) . ': '
2789
+ . PMA_Util::getTitleForTarget(
2790
+ $GLOBALS['cfg']['DefaultTabDatabase']
2791
+ )
2792
+ . "</a> ]\n";
2793
+
2794
+ if (/*overload*/mb_strlen($tablename)) {
2795
+ $html_output .= ' [ ' . __('Table') . ' <a href="'
2796
+ . $GLOBALS['cfg']['DefaultTabTable']
2797
+ . PMA_URL_getCommon(
2798
+ array(
2799
+ 'db' => $url_dbname,
2800
+ 'table' => $tablename,
2801
+ 'reload' => 1,
2802
+ )
2803
+ )
2804
+ . '">' . htmlspecialchars($tablename) . ': '
2805
+ . PMA_Util::getTitleForTarget(
2806
+ $GLOBALS['cfg']['DefaultTabTable']
2807
+ )
2808
+ . "</a> ]\n";
2809
+ }
2810
+ return $html_output;
2811
+ }
2812
+
2813
+ /**
2814
+ * no db name given, so we want all privs for the given user
2815
+ * db name was given, so we want all user specific rights for this db
2816
+ * So this function returns user rights as an array
2817
+ *
2818
+ * @param array $tables tables
2819
+ * @param string $user_host_condition a where clause that contained user's host
2820
+ * condition
2821
+ * @param string $dbname database name
2822
+ *
2823
+ * @return array $db_rights database rights
2824
+ */
2825
+ function PMA_getUserSpecificRights($tables, $user_host_condition, $dbname)
2826
+ {
2827
+ if (!/*overload*/mb_strlen($dbname)) {
2828
+ $tables_to_search_for_users = array(
2829
+ 'tables_priv', 'columns_priv',
2830
+ );
2831
+ $dbOrTableName = 'Db';
2832
+ } else {
2833
+ $user_host_condition .=
2834
+ ' AND `Db`'
2835
+ . ' LIKE \''
2836
+ . PMA_Util::sqlAddSlashes($dbname, true) . "'";
2837
+ $tables_to_search_for_users = array('columns_priv',);
2838
+ $dbOrTableName = 'Table_name';
2839
+ }
2840
+
2841
+ $db_rights_sqls = array();
2842
+ foreach ($tables_to_search_for_users as $table_search_in) {
2843
+ if (in_array($table_search_in, $tables)) {
2844
+ $db_rights_sqls[] = '
2845
+ SELECT DISTINCT `' . $dbOrTableName . '`
2846
+ FROM `mysql`.' . PMA_Util::backquote($table_search_in)
2847
+ . $user_host_condition;
2848
+ }
2849
+ }
2850
+
2851
+ $user_defaults = array(
2852
+ $dbOrTableName => '',
2853
+ 'Grant_priv' => 'N',
2854
+ 'privs' => array('USAGE'),
2855
+ 'Column_priv' => true,
2856
+ );
2857
+
2858
+ // for the rights
2859
+ $db_rights = array();
2860
+
2861
+ $db_rights_sql = '(' . implode(') UNION (', $db_rights_sqls) . ')'
2862
+ . ' ORDER BY `' . $dbOrTableName . '` ASC';
2863
+
2864
+ $db_rights_result = $GLOBALS['dbi']->query($db_rights_sql);
2865
+
2866
+ while ($db_rights_row = $GLOBALS['dbi']->fetchAssoc($db_rights_result)) {
2867
+ $db_rights_row = array_merge($user_defaults, $db_rights_row);
2868
+ if (!/*overload*/mb_strlen($dbname)) {
2869
+ // only Db names in the table `mysql`.`db` uses wildcards
2870
+ // as we are in the db specific rights display we want
2871
+ // all db names escaped, also from other sources
2872
+ $db_rights_row['Db'] = PMA_Util::escapeMysqlWildcards(
2873
+ $db_rights_row['Db']
2874
+ );
2875
+ }
2876
+ $db_rights[$db_rights_row[$dbOrTableName]] = $db_rights_row;
2877
+ }
2878
+
2879
+ $GLOBALS['dbi']->freeResult($db_rights_result);
2880
+
2881
+ if (!/*overload*/mb_strlen($dbname)) {
2882
+ $sql_query = 'SELECT * FROM `mysql`.`db`'
2883
+ . $user_host_condition . ' ORDER BY `Db` ASC';
2884
+ } else {
2885
+ $sql_query = 'SELECT `Table_name`,'
2886
+ . ' `Table_priv`,'
2887
+ . ' IF(`Column_priv` = _latin1 \'\', 0, 1)'
2888
+ . ' AS \'Column_priv\''
2889
+ . ' FROM `mysql`.`tables_priv`'
2890
+ . $user_host_condition
2891
+ . ' ORDER BY `Table_name` ASC;';
2892
+ }
2893
+
2894
+ $result = $GLOBALS['dbi']->query($sql_query);
2895
+
2896
+ while ($row = $GLOBALS['dbi']->fetchAssoc($result)) {
2897
+ if (isset($db_rights[$row[$dbOrTableName]])) {
2898
+ $db_rights[$row[$dbOrTableName]]
2899
+ = array_merge($db_rights[$row[$dbOrTableName]], $row);
2900
+ } else {
2901
+ $db_rights[$row[$dbOrTableName]] = $row;
2902
+ }
2903
+ if (!/*overload*/mb_strlen($dbname)) {
2904
+ // there are db specific rights for this user
2905
+ // so we can drop this db rights
2906
+ $db_rights[$row['Db']]['can_delete'] = true;
2907
+ }
2908
+ }
2909
+ $GLOBALS['dbi']->freeResult($result);
2910
+ return $db_rights;
2911
+ }
2912
+
2913
+ /**
2914
+ * Display user rights in table rows(Table specific or database specific privs)
2915
+ *
2916
+ * @param array $db_rights user's database rights array
2917
+ * @param string $dbname database name
2918
+ * @param string $hostname host name
2919
+ * @param string $username username
2920
+ *
2921
+ * @return array $found_rows, $html_output
2922
+ */
2923
+ function PMA_getHtmlForUserRights($db_rights, $dbname,
2924
+ $hostname, $username
2925
+ ) {
2926
+ $html_output = '';
2927
+ $found_rows = array();
2928
+
2929
+ // display rows
2930
+ if (count($db_rights) < 1) {
2931
+ $html_output .= '<tr class="odd">' . "\n"
2932
+ . '<td colspan="6"><center><i>' . __('None') . '</i></center></td>' . "\n"
2933
+ . '</tr>' . "\n";
2934
+ return array($found_rows, $html_output);
2935
+ }
2936
+
2937
+ $odd_row = true;
2938
+ //while ($row = $GLOBALS['dbi']->fetchAssoc($res)) {
2939
+ foreach ($db_rights as $row) {
2940
+ $dbNameLength = /*overload*/mb_strlen($dbname);
2941
+ $found_rows[] = (!$dbNameLength)
2942
+ ? $row['Db']
2943
+ : $row['Table_name'];
2944
+
2945
+ $html_output .= '<tr class="' . ($odd_row ? 'odd' : 'even') . '">' . "\n"
2946
+ . '<td>'
2947
+ . htmlspecialchars(
2948
+ (!$dbNameLength)
2949
+ ? $row['Db']
2950
+ : $row['Table_name']
2951
+ )
2952
+ . '</td>' . "\n"
2953
+ . '<td><code>' . "\n"
2954
+ . ' '
2955
+ . join(
2956
+ ',' . "\n" . ' ',
2957
+ PMA_extractPrivInfo($row, true)
2958
+ ) . "\n"
2959
+ . '</code></td>' . "\n"
2960
+ . '<td>'
2961
+ . ((((!$dbNameLength) && $row['Grant_priv'] == 'Y')
2962
+ || ($dbNameLength
2963
+ && in_array('Grant', explode(',', $row['Table_priv']))))
2964
+ ? __('Yes')
2965
+ : __('No'))
2966
+ . '</td>' . "\n"
2967
+ . '<td>';
2968
+ if (! empty($row['Table_privs']) || ! empty ($row['Column_priv'])) {
2969
+ $html_output .= __('Yes');
2970
+ } else {
2971
+ $html_output .= __('No');
2972
+ }
2973
+ $html_output .= '</td>';
2974
+
2975
+ $html_output .= '<td>';
2976
+ if ($GLOBALS['is_grantuser']) {
2977
+ $html_output .= PMA_getUserLink(
2978
+ 'edit',
2979
+ $username,
2980
+ $hostname,
2981
+ (!$dbNameLength) ? $row['Db'] : $dbname,
2982
+ (!$dbNameLength) ? '' : $row['Table_name']
2983
+ );
2984
+ }
2985
+ $html_output .= '</td>';
2986
+
2987
+ $html_output .= '<td>';
2988
+ if (! empty($row['can_delete'])
2989
+ || isset($row['Table_name'])
2990
+ && /*overload*/mb_strlen($row['Table_name'])
2991
+ ) {
2992
+ $html_output .= PMA_getUserLink(
2993
+ 'revoke',
2994
+ $username,
2995
+ $hostname,
2996
+ (!$dbNameLength) ? $row['Db'] : $dbname,
2997
+ (!$dbNameLength) ? '' : $row['Table_name']
2998
+ );
2999
+ }
3000
+ $html_output .= '</td>' . "\n"
3001
+ . '</tr>' . "\n";
3002
+ $odd_row = ! $odd_row;
3003
+ } // end while
3004
+
3005
+ return array($found_rows, $html_output);
3006
+ }
3007
+
3008
+ /**
3009
+ * Get a HTML table for display user's tabel specific or database specific rights
3010
+ *
3011
+ * @param string $username username
3012
+ * @param string $hostname host name
3013
+ * @param string $dbname database name
3014
+ *
3015
+ * @return array $html_output, $found_rows
3016
+ */
3017
+ function PMA_getHtmlForAllTableSpecificRights(
3018
+ $username, $hostname, $dbname
3019
+ ) {
3020
+ // table header
3021
+ $html_output = PMA_URL_getHiddenInputs('', '')
3022
+ . '<input type="hidden" name="username" '
3023
+ . 'value="' . htmlspecialchars($username) . '" />' . "\n"
3024
+ . '<input type="hidden" name="hostname" '
3025
+ . 'value="' . htmlspecialchars($hostname) . '" />' . "\n"
3026
+ . '<fieldset>' . "\n"
3027
+ . '<legend data-submenu-label="'
3028
+ . (!/*overload*/mb_strlen($dbname)
3029
+ ? __('Database')
3030
+ : __('Table')
3031
+ )
3032
+ . '">'
3033
+ . (!/*overload*/mb_strlen($dbname)
3034
+ ? __('Database-specific privileges')
3035
+ : __('Table-specific privileges')
3036
+ )
3037
+ . '</legend>' . "\n"
3038
+ . '<table class="data">' . "\n"
3039
+ . '<thead>' . "\n"
3040
+ . '<tr><th>'
3041
+ . (!/*overload*/mb_strlen($dbname) ? __('Database') : __('Table'))
3042
+ . '</th>' . "\n"
3043
+ . '<th>' . __('Privileges') . '</th>' . "\n"
3044
+ . '<th>' . __('Grant') . '</th>' . "\n"
3045
+ . '<th>'
3046
+ . (!/*overload*/mb_strlen($dbname)
3047
+ ? __('Table-specific privileges')
3048
+ : __('Column-specific privileges')
3049
+ )
3050
+ . '</th>' . "\n"
3051
+ . '<th colspan="2">' . __('Action') . '</th>' . "\n"
3052
+ . '</tr>' . "\n"
3053
+ . '</thead>' . "\n";
3054
+
3055
+ $user_host_condition = ' WHERE `User`'
3056
+ . ' = \'' . PMA_Util::sqlAddSlashes($username) . "'"
3057
+ . ' AND `Host`'
3058
+ . ' = \'' . PMA_Util::sqlAddSlashes($hostname) . "'";
3059
+
3060
+ // table body
3061
+ // get data
3062
+
3063
+ // we also want privileges for this user not in table `db` but in other table
3064
+ $tables = $GLOBALS['dbi']->fetchResult('SHOW TABLES FROM `mysql`;');
3065
+
3066
+ /**
3067
+ * no db name given, so we want all privs for the given user
3068
+ * db name was given, so we want all user specific rights for this db
3069
+ */
3070
+ $db_rights = PMA_getUserSpecificRights($tables, $user_host_condition, $dbname);
3071
+
3072
+ ksort($db_rights);
3073
+
3074
+ $html_output .= '<tbody>' . "\n";
3075
+ // display rows
3076
+ list ($found_rows, $html_out) = PMA_getHtmlForUserRights(
3077
+ $db_rights, $dbname, $hostname, $username
3078
+ );
3079
+
3080
+ $html_output .= $html_out;
3081
+ $html_output .= '</tbody>' . "\n";
3082
+ $html_output .='</table>' . "\n";
3083
+
3084
+ return array($html_output, $found_rows);
3085
+ }
3086
+
3087
+ /**
3088
+ * Get HTML for display select db
3089
+ *
3090
+ * @param array $found_rows isset($dbname)) ? $row['Db'] : $row['Table_name']
3091
+ *
3092
+ * @return string HTML snippet
3093
+ */
3094
+ function PMA_getHtmlForSelectDbInEditPrivs($found_rows)
3095
+ {
3096
+ // we already have the list of databases from libraries/common.inc.php
3097
+ // via $pma = new PMA;
3098
+ $pred_db_array = $GLOBALS['pma']->databases;
3099
+
3100
+ $databases_to_skip = array('information_schema', 'performance_schema');
3101
+
3102
+ $html_output = '<label for="text_dbname">'
3103
+ . __('Add privileges on the following database(s):') . '</label>' . "\n";
3104
+ if (! empty($pred_db_array)) {
3105
+ $html_output .= '<select name="pred_dbname[]" multiple="multiple">' . "\n";
3106
+ foreach ($pred_db_array as $current_db) {
3107
+ if (in_array($current_db, $databases_to_skip)) {
3108
+ continue;
3109
+ }
3110
+ $current_db_show = $current_db;
3111
+ $current_db = PMA_Util::escapeMysqlWildcards($current_db);
3112
+ // cannot use array_diff() once, outside of the loop,
3113
+ // because the list of databases has special characters
3114
+ // already escaped in $found_rows,
3115
+ // contrary to the output of SHOW DATABASES
3116
+ if (empty($found_rows) || ! in_array($current_db, $found_rows)) {
3117
+ $html_output .= '<option value="'
3118
+ . htmlspecialchars($current_db) . '">'
3119
+ . htmlspecialchars($current_db_show) . '</option>' . "\n";
3120
+ }
3121
+ }
3122
+ $html_output .= '</select>' . "\n";
3123
+ }
3124
+ $html_output .= '<input type="text" id="text_dbname" name="dbname" />'
3125
+ . "\n"
3126
+ . PMA_Util::showHint(
3127
+ __('Wildcards % and _ should be escaped with a \ to use them literally.')
3128
+ );
3129
+ return $html_output;
3130
+ }
3131
+
3132
+ /**
3133
+ * Get HTML for display table in edit privilege
3134
+ *
3135
+ * @param string $dbname database naame
3136
+ * @param array $found_rows isset($dbname)) ? $row['Db'] : $row['Table_name']
3137
+ *
3138
+ * @return string HTML snippet
3139
+ */
3140
+ function PMA_displayTablesInEditPrivs($dbname, $found_rows)
3141
+ {
3142
+ $html_output = '<input type="hidden" name="dbname"
3143
+ ' . 'value="' . htmlspecialchars($dbname) . '"/>' . "\n";
3144
+ $html_output .= '<label for="text_tablename">'
3145
+ . __('Add privileges on the following table:') . '</label>' . "\n";
3146
+
3147
+ $result = @$GLOBALS['dbi']->tryQuery(
3148
+ 'SHOW TABLES FROM ' . PMA_Util::backquote(
3149
+ PMA_Util::unescapeMysqlWildcards($dbname)
3150
+ ) . ';',
3151
+ null,
3152
+ PMA_DatabaseInterface::QUERY_STORE
3153
+ );
3154
+
3155
+ if ($result) {
3156
+ $pred_tbl_array = array();
3157
+ while ($row = $GLOBALS['dbi']->fetchRow($result)) {
3158
+ if (! isset($found_rows) || ! in_array($row[0], $found_rows)) {
3159
+ $pred_tbl_array[] = $row[0];
3160
+ }
3161
+ }
3162
+ $GLOBALS['dbi']->freeResult($result);
3163
+
3164
+ if (! empty($pred_tbl_array)) {
3165
+ $html_output .= '<select name="pred_tablename" '
3166
+ . 'class="autosubmit">' . "\n"
3167
+ . '<option value="" selected="selected">' . __('Use text field')
3168
+ . ':</option>' . "\n";
3169
+ foreach ($pred_tbl_array as $current_table) {
3170
+ $html_output .= '<option '
3171
+ . 'value="' . htmlspecialchars($current_table) . '">'
3172
+ . htmlspecialchars($current_table)
3173
+ . '</option>' . "\n";
3174
+ }
3175
+ $html_output .= '</select>' . "\n";
3176
+ }
3177
+ }
3178
+ $html_output .= '<input type="text" id="text_tablename" name="tablename" />'
3179
+ . "\n";
3180
+
3181
+ return $html_output;
3182
+ }
3183
+
3184
+ /**
3185
+ * Get HTML for display the users overview
3186
+ * (if less than 50 users, display them immediately)
3187
+ *
3188
+ * @param array $result ran sql query
3189
+ * @param array $db_rights user's database rights array
3190
+ * @param string $pmaThemeImage a image source link
3191
+ * @param string $text_dir text directory
3192
+ *
3193
+ * @return string HTML snippet
3194
+ */
3195
+ function PMA_getUsersOverview($result, $db_rights, $pmaThemeImage, $text_dir)
3196
+ {
3197
+ while ($row = $GLOBALS['dbi']->fetchAssoc($result)) {
3198
+ $row['privs'] = PMA_extractPrivInfo($row, true);
3199
+ $db_rights[$row['User']][$row['Host']] = $row;
3200
+ }
3201
+ @$GLOBALS['dbi']->freeResult($result);
3202
+ $user_group_count = 0;
3203
+ if ($GLOBALS['cfgRelation']['menuswork']) {
3204
+ $user_group_count = PMA_getUserGroupCount();
3205
+ }
3206
+
3207
+ $html_output
3208
+ = '<form name="usersForm" id="usersForm" action="server_privileges.php" '
3209
+ . 'method="post">' . "\n"
3210
+ . PMA_URL_getHiddenInputs('', '')
3211
+ . '<table id="tableuserrights" class="data">' . "\n"
3212
+ . '<thead>' . "\n"
3213
+ . '<tr><th></th>' . "\n"
3214
+ . '<th>' . __('User') . '</th>' . "\n"
3215
+ . '<th>' . __('Host') . '</th>' . "\n"
3216
+ . '<th>' . __('Password') . '</th>' . "\n"
3217
+ . '<th>' . __('Global privileges') . ' '
3218
+ . PMA_Util::showHint(
3219
+ __('Note: MySQL privilege names are expressed in English.')
3220
+ )
3221
+ . '</th>' . "\n";
3222
+ if ($GLOBALS['cfgRelation']['menuswork']) {
3223
+ $html_output .= '<th>' . __('User group') . '</th>' . "\n";
3224
+ }
3225
+ $html_output .= '<th>' . __('Grant') . '</th>' . "\n"
3226
+ . '<th colspan="' . ($user_group_count > 0 ? '3' : '2') . '">'
3227
+ . __('Action') . '</th>' . "\n"
3228
+ . '</tr>' . "\n"
3229
+ . '</thead>' . "\n";
3230
+
3231
+ $html_output .= '<tbody>' . "\n";
3232
+ $html_output .= PMA_getHtmlTableBodyForUserRights($db_rights);
3233
+ $html_output .= '</tbody>'
3234
+ . '</table>' . "\n";
3235
+
3236
+ $html_output .= '<div style="float:left;">'
3237
+ . PMA_Util::getWithSelected($pmaThemeImage, $text_dir, "usersForm") . "\n";
3238
+
3239
+ $html_output .= PMA_Util::getButtonOrImage(
3240
+ 'submit_mult', 'mult_submit', 'submit_mult_export',
3241
+ __('Export'), 'b_tblexport.png', 'export'
3242
+ );
3243
+ $html_output .= '<input type="hidden" name="initial" '
3244
+ . 'value="' . (isset($_GET['initial']) ? $_GET['initial'] : '') . '" />';
3245
+ $html_output .= '</div>'
3246
+ . '<div class="clear_both" style="clear:both"></div>';
3247
+
3248
+ // add/delete user fieldset
3249
+ $html_output .= PMA_getFieldsetForAddDeleteUser();
3250
+ $html_output .= '</form>' . "\n";
3251
+
3252
+ return $html_output;
3253
+ }
3254
+
3255
+ /**
3256
+ * Get table body for 'tableuserrights' table in userform
3257
+ *
3258
+ * @param array $db_rights user's database rights array
3259
+ *
3260
+ * @return string HTML snippet
3261
+ */
3262
+ function PMA_getHtmlTableBodyForUserRights($db_rights)
3263
+ {
3264
+ $cfgRelation = PMA_getRelationsParam();
3265
+ if ($cfgRelation['menuswork']) {
3266
+ $users_table = PMA_Util::backquote($cfgRelation['db'])
3267
+ . "." . PMA_Util::backquote($cfgRelation['users']);
3268
+ $sql_query = 'SELECT * FROM ' . $users_table;
3269
+ $result = PMA_queryAsControlUser($sql_query, false);
3270
+ $group_assignment = array();
3271
+ if ($result) {
3272
+ while ($row = $GLOBALS['dbi']->fetchAssoc($result)) {
3273
+ $group_assignment[$row['username']] = $row['usergroup'];
3274
+ }
3275
+ }
3276
+ $GLOBALS['dbi']->freeResult($result);
3277
+
3278
+ $user_group_count = PMA_getUserGroupCount();
3279
+ }
3280
+
3281
+ $odd_row = true;
3282
+ $index_checkbox = 0;
3283
+ $html_output = '';
3284
+ foreach ($db_rights as $user) {
3285
+ ksort($user);
3286
+ foreach ($user as $host) {
3287
+ $index_checkbox++;
3288
+ $html_output .= '<tr class="' . ($odd_row ? 'odd' : 'even') . '">'
3289
+ . "\n";
3290
+ $html_output .= '<td>'
3291
+ . '<input type="checkbox" class="checkall" name="selected_usr[]" '
3292
+ . 'id="checkbox_sel_users_'
3293
+ . $index_checkbox . '" value="'
3294
+ . htmlspecialchars($host['User'] . '&amp;#27;' . $host['Host'])
3295
+ . '"'
3296
+ . ' /></td>' . "\n";
3297
+
3298
+ $html_output .= '<td><label '
3299
+ . 'for="checkbox_sel_users_' . $index_checkbox . '">'
3300
+ . (empty($host['User'])
3301
+ ? '<span style="color: #FF0000">' . __('Any') . '</span>'
3302
+ : htmlspecialchars($host['User'])) . '</label></td>' . "\n"
3303
+ . '<td>' . htmlspecialchars($host['Host']) . '</td>' . "\n";
3304
+
3305
+ $html_output .= '<td>';
3306
+ switch ($host['Password']) {
3307
+ case 'Y':
3308
+ $html_output .= __('Yes');
3309
+ break;
3310
+ case 'N':
3311
+ $html_output .= '<span style="color: #FF0000">' . __('No')
3312
+ . '</span>';
3313
+ break;
3314
+ // this happens if this is a definition not coming from mysql.user
3315
+ default:
3316
+ $html_output .= '--'; // in future version, replace by "not present"
3317
+ break;
3318
+ } // end switch
3319
+ $html_output .= '</td>' . "\n";
3320
+
3321
+ $html_output .= '<td><code>' . "\n"
3322
+ . '' . implode(',' . "\n" . ' ', $host['privs']) . "\n"
3323
+ . '</code></td>' . "\n";
3324
+ if ($cfgRelation['menuswork']) {
3325
+ $html_output .= '<td class="usrGroup">' . "\n"
3326
+ . (isset($group_assignment[$host['User']])
3327
+ ? $group_assignment[$host['User']]
3328
+ : ''
3329
+ )
3330
+ . '</td>' . "\n";
3331
+ }
3332
+ $html_output .= '<td>'
3333
+ . ($host['Grant_priv'] == 'Y' ? __('Yes') : __('No'))
3334
+ . '</td>' . "\n";
3335
+
3336
+ if ($GLOBALS['is_grantuser']) {
3337
+ $html_output .= '<td class="center">'
3338
+ . PMA_getUserLink(
3339
+ 'edit',
3340
+ $host['User'],
3341
+ $host['Host']
3342
+ )
3343
+ . '</td>';
3344
+ }
3345
+ if ($cfgRelation['menuswork'] && $user_group_count > 0) {
3346
+ if (empty($host['User'])) {
3347
+ $html_output .= '<td class="center"></td>';
3348
+ } else {
3349
+ $html_output .= '<td class="center">'
3350
+ . PMA_getUserGroupEditLink($host['User'])
3351
+ . '</td>';
3352
+ }
3353
+ }
3354
+ $html_output .= '<td class="center">'
3355
+ . PMA_getUserLink(
3356
+ 'export',
3357
+ $host['User'],
3358
+ $host['Host'],
3359
+ '',
3360
+ '',
3361
+ isset($_GET['initial']) ? $_GET['initial'] : ''
3362
+ )
3363
+ . '</td>';
3364
+ $html_output .= '</tr>';
3365
+ $odd_row = ! $odd_row;
3366
+ }
3367
+ }
3368
+ return $html_output;
3369
+ }
3370
+
3371
+ /**
3372
+ * Get HTML fieldset for Add/Delete user
3373
+ *
3374
+ * @return string HTML snippet
3375
+ */
3376
+ function PMA_getFieldsetForAddDeleteUser()
3377
+ {
3378
+ $html_output = PMA_getAddUserHtmlFieldset();
3379
+ $html_output .= '<fieldset id="fieldset_delete_user">'
3380
+ . '<legend>' . "\n"
3381
+ . PMA_Util::getIcon('b_usrdrop.png')
3382
+ . ' ' . __('Remove selected users') . '' . "\n"
3383
+ . '</legend>' . "\n";
3384
+
3385
+ $html_output .= '<input type="hidden" name="mode" value="2" />' . "\n"
3386
+ . '('
3387
+ . __(
3388
+ 'Revoke all active privileges from the users '
3389
+ . 'and delete them afterwards.'
3390
+ )
3391
+ . ')'
3392
+ . '<br />' . "\n";
3393
+
3394
+ $html_output .= '<input type="checkbox" '
3395
+ . 'title="'
3396
+ . __('Drop the databases that have the same names as the users.')
3397
+ . '" '
3398
+ . 'name="drop_users_db" id="checkbox_drop_users_db" />' . "\n";
3399
+
3400
+ $html_output .= '<label for="checkbox_drop_users_db" '
3401
+ . 'title="'
3402
+ . __('Drop the databases that have the same names as the users.')
3403
+ . '">' . "\n"
3404
+ . ' '
3405
+ . __('Drop the databases that have the same names as the users.')
3406
+ . "\n"
3407
+ . '</label>' . "\n"
3408
+ . '</fieldset>' . "\n";
3409
+
3410
+ $html_output .= '<fieldset id="fieldset_delete_user_footer" class="tblFooters">'
3411
+ . "\n";
3412
+ $html_output .= '<input type="submit" name="delete" '
3413
+ . 'value="' . __('Go') . '" id="buttonGo" '
3414
+ . 'class="ajax"/>' . "\n";
3415
+
3416
+ $html_output .= '</fieldset>' . "\n";
3417
+
3418
+ return $html_output;
3419
+ }
3420
+
3421
+ /**
3422
+ * Get HTML for Displays the initials
3423
+ *
3424
+ * @param array $array_initials array for all initials, even non A-Z
3425
+ *
3426
+ * @return string HTML snippet
3427
+ */
3428
+ function PMA_getHtmlForInitials($array_initials)
3429
+ {
3430
+ // initialize to false the letters A-Z
3431
+ for ($letter_counter = 1; $letter_counter < 27; $letter_counter++) {
3432
+ if (! isset($array_initials[/*overload*/mb_chr($letter_counter + 64)])) {
3433
+ $array_initials[/*overload*/mb_chr($letter_counter + 64)] = false;
3434
+ }
3435
+ }
3436
+
3437
+ $initials = $GLOBALS['dbi']->tryQuery(
3438
+ 'SELECT DISTINCT UPPER(LEFT(`User`,1)) FROM `user` ORDER BY `User` ASC',
3439
+ null,
3440
+ PMA_DatabaseInterface::QUERY_STORE
3441
+ );
3442
+ while (list($tmp_initial) = $GLOBALS['dbi']->fetchRow($initials)) {
3443
+ $array_initials[$tmp_initial] = true;
3444
+ }
3445
+
3446
+ // Display the initials, which can be any characters, not
3447
+ // just letters. For letters A-Z, we add the non-used letters
3448
+ // as greyed out.
3449
+
3450
+ uksort($array_initials, "strnatcasecmp");
3451
+
3452
+ $html_output = '<table id="initials_table" cellspacing="5">'
3453
+ . '<tr>';
3454
+ foreach ($array_initials as $tmp_initial => $initial_was_found) {
3455
+ if ($tmp_initial === null) {
3456
+ continue;
3457
+ }
3458
+
3459
+ if (!$initial_was_found) {
3460
+ $html_output .= '<td>' . $tmp_initial . '</td>';
3461
+ continue;
3462
+ }
3463
+
3464
+ $html_output .= '<td>'
3465
+ . '<a class="ajax'
3466
+ . ((isset($_REQUEST['initial'])
3467
+ && $_REQUEST['initial'] === $tmp_initial
3468
+ ) ? ' active' : '')
3469
+ . '" href="server_privileges.php'
3470
+ . PMA_URL_getCommon(array('initial' => $tmp_initial))
3471
+ . '">' . $tmp_initial
3472
+ . '</a>'
3473
+ . '</td>' . "\n";
3474
+ }
3475
+ $html_output .= '<td>'
3476
+ . '<a href="server_privileges.php'
3477
+ . PMA_URL_getCommon(array('showall' => 1))
3478
+ . '" class="nowrap">' . __('Show all') . '</a></td>' . "\n";
3479
+ $html_output .= '</tr></table>';
3480
+
3481
+ return $html_output;
3482
+ }
3483
+
3484
+ /**
3485
+ * Get the database rights array for Display user overview
3486
+ *
3487
+ * @return array $db_rights database rights array
3488
+ */
3489
+ function PMA_getDbRightsForUserOverview()
3490
+ {
3491
+ // we also want users not in table `user` but in other table
3492
+ $tables = $GLOBALS['dbi']->fetchResult('SHOW TABLES FROM `mysql`;');
3493
+
3494
+ $tablesSearchForUsers = array(
3495
+ 'user', 'db', 'tables_priv', 'columns_priv', 'procs_priv',
3496
+ );
3497
+
3498
+ $db_rights_sqls = array();
3499
+ foreach ($tablesSearchForUsers as $table_search_in) {
3500
+ if (in_array($table_search_in, $tables)) {
3501
+ $db_rights_sqls[] = 'SELECT DISTINCT `User`, `Host` FROM `mysql`.`'
3502
+ . $table_search_in . '` '
3503
+ . (isset($_GET['initial'])
3504
+ ? PMA_rangeOfUsers($_GET['initial'])
3505
+ : '');
3506
+ }
3507
+ }
3508
+ $user_defaults = array(
3509
+ 'User' => '',
3510
+ 'Host' => '%',
3511
+ 'Password' => '?',
3512
+ 'Grant_priv' => 'N',
3513
+ 'privs' => array('USAGE'),
3514
+ );
3515
+
3516
+ // for the rights
3517
+ $db_rights = array();
3518
+
3519
+ $db_rights_sql = '(' . implode(') UNION (', $db_rights_sqls) . ')'
3520
+ . ' ORDER BY `User` ASC, `Host` ASC';
3521
+
3522
+ $db_rights_result = $GLOBALS['dbi']->query($db_rights_sql);
3523
+
3524
+ while ($db_rights_row = $GLOBALS['dbi']->fetchAssoc($db_rights_result)) {
3525
+ $db_rights_row = array_merge($user_defaults, $db_rights_row);
3526
+ $db_rights[$db_rights_row['User']][$db_rights_row['Host']]
3527
+ = $db_rights_row;
3528
+ }
3529
+ $GLOBALS['dbi']->freeResult($db_rights_result);
3530
+ ksort($db_rights);
3531
+
3532
+ return $db_rights;
3533
+ }
3534
+
3535
+ /**
3536
+ * Delete user and get message and sql query for delete user in privileges
3537
+ *
3538
+ * @param array $queries queries
3539
+ *
3540
+ * @return array PMA_message
3541
+ */
3542
+ function PMA_deleteUser($queries)
3543
+ {
3544
+ $sql_query = '';
3545
+ if (empty($queries)) {
3546
+ $message = PMA_Message::error(__('No users selected for deleting!'));
3547
+ } else {
3548
+ if ($_REQUEST['mode'] == 3) {
3549
+ $queries[] = '# ' . __('Reloading the privileges') . ' …';
3550
+ $queries[] = 'FLUSH PRIVILEGES;';
3551
+ }
3552
+ $drop_user_error = '';
3553
+ foreach ($queries as $sql_query) {
3554
+ if ($sql_query{0} != '#') {
3555
+ if (! $GLOBALS['dbi']->tryQuery($sql_query, $GLOBALS['userlink'])) {
3556
+ $drop_user_error .= $GLOBALS['dbi']->getError() . "\n";
3557
+ }
3558
+ }
3559
+ }
3560
+ // tracking sets this, causing the deleted db to be shown in navi
3561
+ unset($GLOBALS['db']);
3562
+
3563
+ $sql_query = join("\n", $queries);
3564
+ if (! empty($drop_user_error)) {
3565
+ $message = PMA_Message::rawError($drop_user_error);
3566
+ } else {
3567
+ $message = PMA_Message::success(
3568
+ __('The selected users have been deleted successfully.')
3569
+ );
3570
+ }
3571
+ }
3572
+ return array($sql_query, $message);
3573
+ }
3574
+
3575
+ /**
3576
+ * Update the privileges and return the success or error message
3577
+ *
3578
+ * @param string $username username
3579
+ * @param string $hostname host name
3580
+ * @param string $tablename table name
3581
+ * @param string $dbname database name
3582
+ *
3583
+ * @return PMA_message success message or error message for update
3584
+ */
3585
+ function PMA_updatePrivileges($username, $hostname, $tablename, $dbname)
3586
+ {
3587
+ $db_and_table = PMA_wildcardEscapeForGrant($dbname, $tablename);
3588
+
3589
+ $sql_query0 = 'REVOKE ALL PRIVILEGES ON ' . $db_and_table
3590
+ . ' FROM \'' . PMA_Util::sqlAddSlashes($username)
3591
+ . '\'@\'' . PMA_Util::sqlAddSlashes($hostname) . '\';';
3592
+
3593
+ if (! isset($_POST['Grant_priv']) || $_POST['Grant_priv'] != 'Y') {
3594
+ $sql_query1 = 'REVOKE GRANT OPTION ON ' . $db_and_table
3595
+ . ' FROM \'' . PMA_Util::sqlAddSlashes($username) . '\'@\''
3596
+ . PMA_Util::sqlAddSlashes($hostname) . '\';';
3597
+ } else {
3598
+ $sql_query1 = '';
3599
+ }
3600
+
3601
+ // Should not do a GRANT USAGE for a table-specific privilege, it
3602
+ // causes problems later (cannot revoke it)
3603
+ if (! (/*overload*/mb_strlen($tablename)
3604
+ && 'USAGE' == implode('', PMA_extractPrivInfo()))
3605
+ ) {
3606
+ $sql_query2 = 'GRANT ' . join(', ', PMA_extractPrivInfo())
3607
+ . ' ON ' . $db_and_table
3608
+ . ' TO \'' . PMA_Util::sqlAddSlashes($username) . '\'@\''
3609
+ . PMA_Util::sqlAddSlashes($hostname) . '\'';
3610
+
3611
+ if (! /*overload*/mb_strlen($dbname)) {
3612
+ // add REQUIRE clause
3613
+ $sql_query2 .= PMA_getRequireClause();
3614
+ }
3615
+
3616
+ if ((isset($_POST['Grant_priv']) && $_POST['Grant_priv'] == 'Y')
3617
+ || (! /*overload*/mb_strlen($dbname)
3618
+ && (isset($_POST['max_questions']) || isset($_POST['max_connections'])
3619
+ || isset($_POST['max_updates'])
3620
+ || isset($_POST['max_user_connections'])))
3621
+ ) {
3622
+ $sql_query2 .= PMA_getWithClauseForAddUserAndUpdatePrivs();
3623
+ }
3624
+ $sql_query2 .= ';';
3625
+ }
3626
+ if (! $GLOBALS['dbi']->tryQuery($sql_query0)) {
3627
+ // This might fail when the executing user does not have
3628
+ // ALL PRIVILEGES himself.
3629
+ // See https://sourceforge.net/p/phpmyadmin/bugs/3270/
3630
+ $sql_query0 = '';
3631
+ }
3632
+ if (! empty($sql_query1) && ! $GLOBALS['dbi']->tryQuery($sql_query1)) {
3633
+ // this one may fail, too...
3634
+ $sql_query1 = '';
3635
+ }
3636
+ if (! empty($sql_query2)) {
3637
+ $GLOBALS['dbi']->query($sql_query2);
3638
+ } else {
3639
+ $sql_query2 = '';
3640
+ }
3641
+ $sql_query = $sql_query0 . ' ' . $sql_query1 . ' ' . $sql_query2;
3642
+ $message = PMA_Message::success(__('You have updated the privileges for %s.'));
3643
+ $message->addParam(
3644
+ '\'' . htmlspecialchars($username)
3645
+ . '\'@\'' . htmlspecialchars($hostname) . '\''
3646
+ );
3647
+
3648
+ return array($sql_query, $message);
3649
+ }
3650
+
3651
+ /**
3652
+ * Get List of information: Changes / copies a user
3653
+ *
3654
+ * @return array
3655
+ */
3656
+ function PMA_getDataForChangeOrCopyUser()
3657
+ {
3658
+ $queries = null;
3659
+ $password = null;
3660
+
3661
+ if (isset($_REQUEST['change_copy'])) {
3662
+ $user_host_condition = ' WHERE `User` = '
3663
+ . "'" . PMA_Util::sqlAddSlashes($_REQUEST['old_username']) . "'"
3664
+ . ' AND `Host` = '
3665
+ . "'" . PMA_Util::sqlAddSlashes($_REQUEST['old_hostname']) . "';";
3666
+ $row = $GLOBALS['dbi']->fetchSingleRow(
3667
+ 'SELECT * FROM `mysql`.`user` ' . $user_host_condition
3668
+ );
3669
+ if (! $row) {
3670
+ $response = PMA_Response::getInstance();
3671
+ $response->addHTML(
3672
+ PMA_Message::notice(__('No user found.'))->getDisplay()
3673
+ );
3674
+ unset($_REQUEST['change_copy']);
3675
+ } else {
3676
+ extract($row, EXTR_OVERWRITE);
3677
+ // Recent MySQL versions have the field "Password" in mysql.user,
3678
+ // so the previous extract creates $Password but this script
3679
+ // uses $password
3680
+ if (! isset($password) && isset($Password)) {
3681
+ $password = $Password;
3682
+ }
3683
+ $queries = array();
3684
+ }
3685
+ }
3686
+
3687
+ return array($queries, $password);
3688
+ }
3689
+
3690
+ /**
3691
+ * Update Data for information: Deletes users
3692
+ *
3693
+ * @param array $queries queries array
3694
+ *
3695
+ * @return array
3696
+ */
3697
+ function PMA_getDataForDeleteUsers($queries)
3698
+ {
3699
+ if (isset($_REQUEST['change_copy'])) {
3700
+ $selected_usr = array(
3701
+ $_REQUEST['old_username'] . '&amp;#27;' . $_REQUEST['old_hostname']
3702
+ );
3703
+ } else {
3704
+ $selected_usr = $_REQUEST['selected_usr'];
3705
+ $queries = array();
3706
+ }
3707
+ foreach ($selected_usr as $each_user) {
3708
+ list($this_user, $this_host) = explode('&amp;#27;', $each_user);
3709
+ $queries[] = '# '
3710
+ . sprintf(
3711
+ __('Deleting %s'),
3712
+ '\'' . $this_user . '\'@\'' . $this_host . '\''
3713
+ )
3714
+ . ' ...';
3715
+ $queries[] = 'DROP USER \''
3716
+ . PMA_Util::sqlAddSlashes($this_user)
3717
+ . '\'@\'' . PMA_Util::sqlAddSlashes($this_host) . '\';';
3718
+
3719
+ if (isset($_REQUEST['drop_users_db'])) {
3720
+ $queries[] = 'DROP DATABASE IF EXISTS '
3721
+ . PMA_Util::backquote($this_user) . ';';
3722
+ $GLOBALS['reload'] = true;
3723
+ }
3724
+ }
3725
+ return $queries;
3726
+ }
3727
+
3728
+ /**
3729
+ * update Message For Reload
3730
+ *
3731
+ * @return array
3732
+ */
3733
+ function PMA_updateMessageForReload()
3734
+ {
3735
+ $message = null;
3736
+ if (isset($_REQUEST['flush_privileges'])) {
3737
+ $sql_query = 'FLUSH PRIVILEGES;';
3738
+ $GLOBALS['dbi']->query($sql_query);
3739
+ $message = PMA_Message::success(
3740
+ __('The privileges were reloaded successfully.')
3741
+ );
3742
+ }
3743
+
3744
+ if (isset($_REQUEST['validate_username'])) {
3745
+ $message = PMA_Message::success();
3746
+ }
3747
+
3748
+ return $message;
3749
+ }
3750
+
3751
+ /**
3752
+ * update Data For Queries from queries_for_display
3753
+ *
3754
+ * @param array $queries queries array
3755
+ * @param array|null $queries_for_display queries array for display
3756
+ *
3757
+ * @return null
3758
+ */
3759
+ function PMA_getDataForQueries($queries, $queries_for_display)
3760
+ {
3761
+ $tmp_count = 0;
3762
+ foreach ($queries as $sql_query) {
3763
+ if ($sql_query{0} != '#') {
3764
+ $GLOBALS['dbi']->query($sql_query);
3765
+ }
3766
+ // when there is a query containing a hidden password, take it
3767
+ // instead of the real query sent
3768
+ if (isset($queries_for_display[$tmp_count])) {
3769
+ $queries[$tmp_count] = $queries_for_display[$tmp_count];
3770
+ }
3771
+ $tmp_count++;
3772
+ }
3773
+
3774
+ return $queries;
3775
+ }
3776
+
3777
+ /**
3778
+ * update Data for information: Adds a user
3779
+ *
3780
+ * @param string $dbname db name
3781
+ * @param string $username user name
3782
+ * @param string $hostname host name
3783
+ * @param string $password password
3784
+ * @param bool $is_menuwork is_menuwork set?
3785
+ *
3786
+ * @return array
3787
+ */
3788
+ function PMA_addUser(
3789
+ $dbname, $username, $hostname,
3790
+ $password, $is_menuwork
3791
+ ) {
3792
+ $_add_user_error = false;
3793
+ $message = null;
3794
+ $queries = null;
3795
+ $queries_for_display = null;
3796
+ $sql_query = null;
3797
+
3798
+ if (isset($_REQUEST['adduser_submit']) || isset($_REQUEST['change_copy'])) {
3799
+ $sql_query = '';
3800
+ if ($_POST['pred_username'] == 'any') {
3801
+ $username = '';
3802
+ }
3803
+ switch ($_POST['pred_hostname']) {
3804
+ case 'any':
3805
+ $hostname = '%';
3806
+ break;
3807
+ case 'localhost':
3808
+ $hostname = 'localhost';
3809
+ break;
3810
+ case 'hosttable':
3811
+ $hostname = '';
3812
+ break;
3813
+ case 'thishost':
3814
+ $_user_name = $GLOBALS['dbi']->fetchValue('SELECT USER()');
3815
+ $hostname = /*overload*/mb_substr(
3816
+ $_user_name,
3817
+ (/*overload*/mb_strrpos($_user_name, '@') + 1)
3818
+ );
3819
+ unset($_user_name);
3820
+ break;
3821
+ }
3822
+ $sql = "SELECT '1' FROM `mysql`.`user`"
3823
+ . " WHERE `User` = '" . PMA_Util::sqlAddSlashes($username) . "'"
3824
+ . " AND `Host` = '" . PMA_Util::sqlAddSlashes($hostname) . "';";
3825
+ if ($GLOBALS['dbi']->fetchValue($sql) == 1) {
3826
+ $message = PMA_Message::error(__('The user %s already exists!'));
3827
+ $message->addParam(
3828
+ '[em]\'' . $username . '\'@\'' . $hostname . '\'[/em]'
3829
+ );
3830
+ $_REQUEST['adduser'] = true;
3831
+ $_add_user_error = true;
3832
+ } else {
3833
+ list($create_user_real, $create_user_show, $real_sql_query, $sql_query)
3834
+ = PMA_getSqlQueriesForDisplayAndAddUser(
3835
+ $username, $hostname, (isset ($password) ? $password : '')
3836
+ );
3837
+
3838
+ if (empty($_REQUEST['change_copy'])) {
3839
+ $_error = false;
3840
+
3841
+ if (isset($create_user_real)) {
3842
+ if (! $GLOBALS['dbi']->tryQuery($create_user_real)) {
3843
+ $_error = true;
3844
+ }
3845
+ $sql_query = $create_user_show . $sql_query;
3846
+ }
3847
+ list($sql_query, $message) = PMA_addUserAndCreateDatabase(
3848
+ $_error, $real_sql_query, $sql_query, $username, $hostname,
3849
+ isset($dbname) ? $dbname : null
3850
+ );
3851
+ if (! empty($_REQUEST['userGroup']) && $is_menuwork) {
3852
+ PMA_setUserGroup($GLOBALS['username'], $_REQUEST['userGroup']);
3853
+ }
3854
+
3855
+ } else {
3856
+ if (isset($create_user_real)) {
3857
+ $queries[] = $create_user_real;
3858
+ }
3859
+ $queries[] = $real_sql_query;
3860
+ // we put the query containing the hidden password in
3861
+ // $queries_for_display, at the same position occupied
3862
+ // by the real query in $queries
3863
+ $tmp_count = count($queries);
3864
+ if (isset($create_user_real)) {
3865
+ $queries_for_display[$tmp_count - 2] = $create_user_show;
3866
+ }
3867
+ $queries_for_display[$tmp_count - 1] = $sql_query;
3868
+ }
3869
+ unset($real_sql_query);
3870
+ }
3871
+ }
3872
+
3873
+ return array(
3874
+ $message, $queries, $queries_for_display, $sql_query, $_add_user_error
3875
+ );
3876
+ }
3877
+
3878
+ /**
3879
+ * Update DB information: DB, Table, isWildcard
3880
+ *
3881
+ * @return array
3882
+ */
3883
+ function PMA_getDataForDBInfo()
3884
+ {
3885
+ $username = null;
3886
+ $hostname = null;
3887
+ $dbname = null;
3888
+ $tablename = null;
3889
+ $dbname_is_wildcard = null;
3890
+
3891
+ if (isset ($_REQUEST['username'])) {
3892
+ $username = $_REQUEST['username'];
3893
+ }
3894
+ if (isset ($_REQUEST['hostname'])) {
3895
+ $hostname = $_REQUEST['hostname'];
3896
+ }
3897
+ /**
3898
+ * Checks if a dropdown box has been used for selecting a database / table
3899
+ */
3900
+ if (PMA_isValid($_REQUEST['pred_tablename'])) {
3901
+ $tablename = $_REQUEST['pred_tablename'];
3902
+ } elseif (PMA_isValid($_REQUEST['tablename'])) {
3903
+ $tablename = $_REQUEST['tablename'];
3904
+ } else {
3905
+ unset($tablename);
3906
+ }
3907
+
3908
+ if (isset($_REQUEST['pred_dbname'])) {
3909
+ $is_valid_pred_dbname = true;
3910
+ foreach ($_REQUEST['pred_dbname'] as $key => $db_name) {
3911
+ if (! PMA_isValid($db_name)) {
3912
+ $is_valid_pred_dbname = false;
3913
+ break;
3914
+ }
3915
+ }
3916
+ }
3917
+
3918
+ if (isset($_REQUEST['dbname'])) {
3919
+ $is_valid_dbname = true;
3920
+ if (is_array($_REQUEST['dbname'])) {
3921
+ foreach ($_REQUEST['dbname'] as $key => $db_name) {
3922
+ if (! PMA_isValid($db_name)) {
3923
+ $is_valid_dbname = false;
3924
+ break;
3925
+ }
3926
+ }
3927
+ } else {
3928
+ if (! PMA_isValid($_REQUEST['dbname'])) {
3929
+ $is_valid_dbname = false;
3930
+ }
3931
+ }
3932
+ }
3933
+
3934
+ if (isset($is_valid_pred_dbname) && $is_valid_pred_dbname) {
3935
+ $dbname = $_REQUEST['pred_dbname'];
3936
+ // If dbname contains only one database.
3937
+ if (count($dbname) == 1) {
3938
+ $dbname = $dbname[0];
3939
+ }
3940
+ } elseif (isset($is_valid_dbname) && $is_valid_dbname) {
3941
+ $dbname = $_REQUEST['dbname'];
3942
+ } else {
3943
+ unset($dbname);
3944
+ unset($tablename);
3945
+ }
3946
+
3947
+ if (isset($dbname)) {
3948
+ if (is_array($dbname)) {
3949
+ $db_and_table = $dbname;
3950
+ foreach ($db_and_table as $key => $db_name) {
3951
+ $db_and_table[$key] .= '.';
3952
+ }
3953
+ } else {
3954
+ $unescaped_db = PMA_Util::unescapeMysqlWildcards($dbname);
3955
+ $db_and_table = PMA_Util::backquote($unescaped_db) . '.';
3956
+ }
3957
+ if (isset($tablename)) {
3958
+ $db_and_table .= PMA_Util::backquote($tablename);
3959
+ } else {
3960
+ if (is_array($db_and_table)) {
3961
+ foreach ($db_and_table as $key => $db_name) {
3962
+ $db_and_table[$key] .= '*';
3963
+ }
3964
+ } else {
3965
+ $db_and_table .= '*';
3966
+ }
3967
+ }
3968
+ } else {
3969
+ $db_and_table = '*.*';
3970
+ }
3971
+
3972
+ // check if given $dbname is a wildcard or not
3973
+ if (isset($dbname)) {
3974
+ //if (preg_match('/\\\\(?:_|%)/i', $dbname)) {
3975
+ if (! is_array($dbname) && preg_match('/(?<!\\\\)(?:_|%)/i', $dbname)) {
3976
+ $dbname_is_wildcard = true;
3977
+ } else {
3978
+ $dbname_is_wildcard = false;
3979
+ }
3980
+ }
3981
+
3982
+ return array(
3983
+ $username, $hostname,
3984
+ isset($dbname)? $dbname : null,
3985
+ isset($tablename)? $tablename : null,
3986
+ $db_and_table,
3987
+ $dbname_is_wildcard,
3988
+ );
3989
+ }
3990
+
3991
+ /**
3992
+ * Get title and textarea for export user definition in Privileges
3993
+ *
3994
+ * @param string $username username
3995
+ * @param string $hostname host name
3996
+ *
3997
+ * @return array ($title, $export)
3998
+ */
3999
+ function PMA_getListForExportUserDefinition($username, $hostname)
4000
+ {
4001
+ $export = '<textarea class="export" cols="' . $GLOBALS['cfg']['TextareaCols']
4002
+ . '" rows="' . $GLOBALS['cfg']['TextareaRows'] . '">';
4003
+
4004
+ if (isset($_REQUEST['selected_usr'])) {
4005
+ // export privileges for selected users
4006
+ $title = __('Privileges');
4007
+
4008
+ foreach ($_REQUEST['selected_usr'] as $export_user) {
4009
+ $export_username = /*overload*/mb_substr(
4010
+ $export_user, 0, /*overload*/mb_strpos($export_user, '&')
4011
+ );
4012
+ $export_hostname = /*overload*/mb_substr(
4013
+ $export_user, /*overload*/mb_strrpos($export_user, ';') + 1
4014
+ );
4015
+ $export .= '# '
4016
+ . sprintf(
4017
+ __('Privileges for %s'),
4018
+ '`' . htmlspecialchars($export_username)
4019
+ . '`@`' . htmlspecialchars($export_hostname) . '`'
4020
+ )
4021
+ . "\n\n";
4022
+ $export .= PMA_getGrants($export_username, $export_hostname) . "\n";
4023
+ }
4024
+ } else {
4025
+ // export privileges for a single user
4026
+ $title = __('User') . ' `' . htmlspecialchars($username)
4027
+ . '`@`' . htmlspecialchars($hostname) . '`';
4028
+ $export .= PMA_getGrants($username, $hostname);
4029
+ }
4030
+ // remove trailing whitespace
4031
+ $export = trim($export);
4032
+
4033
+ $export .= '</textarea>';
4034
+
4035
+ return array($title, $export);
4036
+ }
4037
+
4038
+ /**
4039
+ * Get HTML for display Add userfieldset
4040
+ *
4041
+ * @param string $db the database
4042
+ * @param string $table the table name
4043
+ *
4044
+ * @return string html output
4045
+ */
4046
+ function PMA_getAddUserHtmlFieldset($db = '', $table = '')
4047
+ {
4048
+ if (!$GLOBALS['is_createuser']) {
4049
+ return '';
4050
+ }
4051
+ $rel_params = array();
4052
+ $url_params = array(
4053
+ 'adduser' => 1
4054
+ );
4055
+ if (!empty($db)) {
4056
+ $url_params['dbname']
4057
+ = $rel_params['checkprivsdb']
4058
+ = $db;
4059
+ }
4060
+ if (!empty($table)) {
4061
+ $url_params['tablename']
4062
+ = $rel_params['checkprivstable']
4063
+ = $table;
4064
+ }
4065
+
4066
+ return '<fieldset id="fieldset_add_user">' . "\n"
4067
+ . '<legend>' . _pgettext('Create new user', 'New') . '</legend>'
4068
+ . '<a id="add_user_anchor" href="server_privileges.php'
4069
+ . PMA_URL_getCommon($url_params) . '" '
4070
+ . (!empty($rel_params)
4071
+ ? ('rel="' . PMA_URL_getCommon($rel_params) . '" ')
4072
+ : '')
4073
+ . '>' . "\n"
4074
+ . PMA_Util::getIcon('b_usradd.png')
4075
+ . ' ' . __('Add user') . '</a>' . "\n"
4076
+ . '</fieldset>' . "\n";
4077
+ }
4078
+
4079
+ /**
4080
+ * Get HTML header for display User's properties
4081
+ *
4082
+ * @param boolean $dbname_is_wildcard whether database name is wildcard or not
4083
+ * @param string $url_dbname url database name that urlencode() string
4084
+ * @param string $dbname database name
4085
+ * @param string $username username
4086
+ * @param string $hostname host name
4087
+ * @param string $tablename table name
4088
+ *
4089
+ * @return string $html_output
4090
+ */
4091
+ function PMA_getHtmlHeaderForUserProperties(
4092
+ $dbname_is_wildcard, $url_dbname, $dbname, $username, $hostname, $tablename
4093
+ ) {
4094
+ $html_output = '<h2>' . "\n"
4095
+ . PMA_Util::getIcon('b_usredit.png')
4096
+ . __('Edit Privileges:') . ' '
4097
+ . __('User');
4098
+
4099
+ if (! empty($dbname)) {
4100
+ $html_output .= ' <i><a class="edit_user_anchor"'
4101
+ . ' href="server_privileges.php'
4102
+ . PMA_URL_getCommon(
4103
+ array(
4104
+ 'username' => $username,
4105
+ 'hostname' => $hostname,
4106
+ 'dbname' => '',
4107
+ 'tablename' => '',
4108
+ )
4109
+ )
4110
+ . '">\'' . htmlspecialchars($username)
4111
+ . '\'@\'' . htmlspecialchars($hostname)
4112
+ . '\'</a></i>' . "\n";
4113
+
4114
+ $html_output .= ' - ';
4115
+ $html_output .= ($dbname_is_wildcard
4116
+ || is_array($dbname) && count($dbname) > 1)
4117
+ ? __('Databases') : __('Database');
4118
+ if (! empty($_REQUEST['tablename'])) {
4119
+ $html_output .= ' <i><a href="server_privileges.php'
4120
+ . PMA_URL_getCommon(
4121
+ array(
4122
+ 'username' => $username,
4123
+ 'hostname' => $hostname,
4124
+ 'dbname' => $url_dbname,
4125
+ 'tablename' => '',
4126
+ )
4127
+ )
4128
+ . '">' . htmlspecialchars($dbname)
4129
+ . '</a></i>';
4130
+
4131
+ $html_output .= ' - ' . __('Table')
4132
+ . ' <i>' . htmlspecialchars($tablename) . '</i>';
4133
+ } else {
4134
+ if (! is_array($dbname)) {
4135
+ $dbname = array($dbname);
4136
+ }
4137
+ $html_output .= ' <i>'
4138
+ . htmlspecialchars(implode(', ', $dbname))
4139
+ . '</i>';
4140
+ }
4141
+
4142
+ } else {
4143
+ $html_output .= ' <i>\'' . htmlspecialchars($username)
4144
+ . '\'@\'' . htmlspecialchars($hostname)
4145
+ . '\'</i>' . "\n";
4146
+
4147
+ }
4148
+ $html_output .= '</h2>' . "\n";
4149
+ $cur_user = htmlspecialchars($GLOBALS['dbi']->getCurrentUser());
4150
+ $user = htmlspecialchars($username . '@' . $hostname);
4151
+ // Add a short notice for the user
4152
+ // to remind him that he is editing his own privileges
4153
+ if ($user === $cur_user) {
4154
+ $html_output .= PMA_Message::notice(
4155
+ __(
4156
+ 'Note: You are attempting to edit privileges of the '
4157
+ . 'user with which you are currently logged in.'
4158
+ )
4159
+ )->getDisplay();
4160
+ }
4161
+ return $html_output;
4162
+ }
4163
+
4164
+ /**
4165
+ * Get HTML snippet for display user overview page
4166
+ *
4167
+ * @param string $pmaThemeImage a image source link
4168
+ * @param string $text_dir text directory
4169
+ *
4170
+ * @return string $html_output
4171
+ */
4172
+ function PMA_getHtmlForUserOverview($pmaThemeImage, $text_dir)
4173
+ {
4174
+ $html_output = '<h2>' . "\n"
4175
+ . PMA_Util::getIcon('b_usrlist.png')
4176
+ . __('Users overview') . "\n"
4177
+ . '</h2>' . "\n";
4178
+
4179
+ $password_column = 'Password';
4180
+ if (PMA_Util::getServerType() == 'MySQL'
4181
+ && PMA_MYSQL_INT_VERSION >= 50706
4182
+ ) {
4183
+ $password_column = 'authentication_string';
4184
+ }
4185
+ // $sql_query is for the initial-filtered,
4186
+ // $sql_query_all is for counting the total no. of users
4187
+
4188
+ $sql_query = $sql_query_all = 'SELECT *,' .
4189
+ " IF(`" . $password_column . "` = _latin1 '', 'N', 'Y') AS 'Password'" .
4190
+ ' FROM `mysql`.`user`';
4191
+
4192
+ $sql_query .= (isset($_REQUEST['initial'])
4193
+ ? PMA_rangeOfUsers($_REQUEST['initial'])
4194
+ : '');
4195
+
4196
+ $sql_query .= ' ORDER BY `User` ASC, `Host` ASC;';
4197
+ $sql_query_all .= ' ;';
4198
+
4199
+ $res = $GLOBALS['dbi']->tryQuery(
4200
+ $sql_query, null, PMA_DatabaseInterface::QUERY_STORE
4201
+ );
4202
+ $res_all = $GLOBALS['dbi']->tryQuery(
4203
+ $sql_query_all, null, PMA_DatabaseInterface::QUERY_STORE
4204
+ );
4205
+
4206
+ if (! $res) {
4207
+ // the query failed! This may have two reasons:
4208
+ // - the user does not have enough privileges
4209
+ // - the privilege tables use a structure of an earlier version.
4210
+ // so let's try a more simple query
4211
+
4212
+ $GLOBALS['dbi']->freeResult($res);
4213
+ $GLOBALS['dbi']->freeResult($res_all);
4214
+ $sql_query = 'SELECT * FROM `mysql`.`user`';
4215
+ $res = $GLOBALS['dbi']->tryQuery(
4216
+ $sql_query, null, PMA_DatabaseInterface::QUERY_STORE
4217
+ );
4218
+
4219
+ if (! $res) {
4220
+ $html_output .= PMA_getHtmlForViewUsersError();
4221
+ $html_output .= PMA_getAddUserHtmlFieldset();
4222
+ } else {
4223
+ // This message is hardcoded because I will replace it by
4224
+ // a automatic repair feature soon.
4225
+ $raw = 'Your privilege table structure seems to be older than'
4226
+ . ' this MySQL version!<br />'
4227
+ . 'Please run the <code>mysql_upgrade</code> command'
4228
+ . '(<code>mysql_fix_privilege_tables</code> on older systems)'
4229
+ . ' that should be included in your MySQL server distribution'
4230
+ . ' to solve this problem!';
4231
+ $html_output .= PMA_Message::rawError($raw)->getDisplay();
4232
+ }
4233
+ $GLOBALS['dbi']->freeResult($res);
4234
+ } else {
4235
+ $db_rights = PMA_getDbRightsForUserOverview();
4236
+ // for all initials, even non A-Z
4237
+ $array_initials = array();
4238
+
4239
+ /**
4240
+ * Displays the initials
4241
+ * Also not necessary if there is less than 20 privileges
4242
+ */
4243
+ if ($GLOBALS['dbi']->numRows($res_all) > 20) {
4244
+ $html_output .= PMA_getHtmlForInitials($array_initials);
4245
+ }
4246
+
4247
+ /**
4248
+ * Display the user overview
4249
+ * (if less than 50 users, display them immediately)
4250
+ */
4251
+ if (isset($_REQUEST['initial'])
4252
+ || isset($_REQUEST['showall'])
4253
+ || $GLOBALS['dbi']->numRows($res) < 50
4254
+ ) {
4255
+ $html_output .= PMA_getUsersOverview(
4256
+ $res, $db_rights, $pmaThemeImage, $text_dir
4257
+ );
4258
+ } else {
4259
+ $html_output .= PMA_getAddUserHtmlFieldset();
4260
+ } // end if (display overview)
4261
+
4262
+ if (! $GLOBALS['is_ajax_request']
4263
+ || ! empty($_REQUEST['ajax_page_request'])
4264
+ ) {
4265
+ $flushnote = new PMA_Message(
4266
+ __(
4267
+ 'Note: phpMyAdmin gets the users\' privileges directly '
4268
+ . 'from MySQL\'s privilege tables. The content of these tables '
4269
+ . 'may differ from the privileges the server uses, '
4270
+ . 'if they have been changed manually. In this case, '
4271
+ . 'you should %sreload the privileges%s before you continue.'
4272
+ ),
4273
+ PMA_Message::NOTICE
4274
+ );
4275
+ $flushLink = '<a href="server_privileges.php'
4276
+ . PMA_URL_getCommon(array('flush_privileges' => 1))
4277
+ . '" id="reload_privileges_anchor">';
4278
+ $flushnote->addParam(
4279
+ $flushLink,
4280
+ false
4281
+ );
4282
+ $flushnote->addParam('</a>', false);
4283
+ $html_output .= $flushnote->getDisplay();
4284
+ }
4285
+ }
4286
+
4287
+ return $html_output;
4288
+ }
4289
+
4290
+ /**
4291
+ * Get HTML snippet for display user properties
4292
+ *
4293
+ * @param boolean $dbname_is_wildcard whether database name is wildcard or not
4294
+ * @param string $url_dbname url database name that urlencode() string
4295
+ * @param string $username username
4296
+ * @param string $hostname host name
4297
+ * @param string $dbname database name
4298
+ * @param string $tablename table name
4299
+ *
4300
+ * @return string $html_output
4301
+ */
4302
+ function PMA_getHtmlForUserProperties($dbname_is_wildcard,$url_dbname,
4303
+ $username, $hostname, $dbname, $tablename
4304
+ ) {
4305
+ $html_output = '<div id="edit_user_dialog">';
4306
+ $html_output .= PMA_getHtmlHeaderForUserProperties(
4307
+ $dbname_is_wildcard, $url_dbname, $dbname, $username, $hostname, $tablename
4308
+ );
4309
+
4310
+ $sql = "SELECT '1' FROM `mysql`.`user`"
4311
+ . " WHERE `User` = '" . PMA_Util::sqlAddSlashes($username) . "'"
4312
+ . " AND `Host` = '" . PMA_Util::sqlAddSlashes($hostname) . "';";
4313
+
4314
+ $user_does_not_exists = (bool) ! $GLOBALS['dbi']->fetchValue($sql);
4315
+
4316
+ if ($user_does_not_exists) {
4317
+ $html_output .= PMA_Message::error(
4318
+ __('The selected user was not found in the privilege table.')
4319
+ )->getDisplay();
4320
+ $html_output .= PMA_getHtmlForLoginInformationFields();
4321
+ //exit;
4322
+ }
4323
+
4324
+ $_params = array(
4325
+ 'username' => $username,
4326
+ 'hostname' => $hostname,
4327
+ );
4328
+ if (! is_array($dbname) && /*overload*/mb_strlen($dbname)) {
4329
+ $_params['dbname'] = $dbname;
4330
+ if (/*overload*/mb_strlen($tablename)) {
4331
+ $_params['tablename'] = $tablename;
4332
+ }
4333
+ } else {
4334
+ $_params['dbname'] = $dbname;
4335
+ }
4336
+
4337
+ $html_output .= '<form class="submenu-item" name="usersForm" '
4338
+ . 'id="addUsersForm" action="server_privileges.php" method="post">' . "\n";
4339
+ $html_output .= PMA_URL_getHiddenInputs($_params);
4340
+ $html_output .= PMA_getHtmlToDisplayPrivilegesTable(
4341
+ // If $dbname is an array, pass any one db as all have same privs.
4342
+ PMA_ifSetOr($dbname, (is_array($dbname)) ? $dbname[0] : '*', 'length'),
4343
+ PMA_ifSetOr($tablename, '*', 'length')
4344
+ );
4345
+
4346
+ $html_output .= '</form>' . "\n";
4347
+
4348
+ if (! is_array($dbname) && ! /*overload*/mb_strlen($tablename)
4349
+ && empty($dbname_is_wildcard)
4350
+ ) {
4351
+
4352
+ // no table name was given, display all table specific rights
4353
+ // but only if $dbname contains no wildcards
4354
+
4355
+ $html_output .= '<form class="submenu-item" action="server_privileges.php" '
4356
+ . 'id="db_or_table_specific_priv" method="post">' . "\n";
4357
+
4358
+ // unescape wildcards in dbname at table level
4359
+ $unescaped_db = PMA_Util::unescapeMysqlWildcards($dbname);
4360
+ list($html_rightsTable, $found_rows)
4361
+ = PMA_getHtmlForAllTableSpecificRights(
4362
+ $username, $hostname, $unescaped_db
4363
+ );
4364
+ $html_output .= $html_rightsTable;
4365
+
4366
+ if (! /*overload*/mb_strlen($dbname)) {
4367
+ // no database name was given, display select db
4368
+ $html_output .= PMA_getHtmlForSelectDbInEditPrivs($found_rows);
4369
+
4370
+ } else {
4371
+ $html_output .= PMA_displayTablesInEditPrivs($dbname, $found_rows);
4372
+ }
4373
+ $html_output .= '</fieldset>' . "\n";
4374
+
4375
+ $html_output .= '<fieldset class="tblFooters">' . "\n"
4376
+ . ' <input type="submit" value="' . __('Go') . '" />'
4377
+ . '</fieldset>' . "\n"
4378
+ . '</form>' . "\n";
4379
+ }
4380
+
4381
+ // Provide a line with links to the relevant database and table
4382
+ if (! is_array($dbname) && /*overload*/mb_strlen($dbname)
4383
+ && empty($dbname_is_wildcard)
4384
+ ) {
4385
+ $html_output .= PMA_getLinkToDbAndTable($url_dbname, $dbname, $tablename);
4386
+
4387
+ }
4388
+
4389
+ if (! is_array($dbname) && ! /*overload*/mb_strlen($dbname)
4390
+ && ! $user_does_not_exists
4391
+ ) {
4392
+ //change login information
4393
+ $html_output .= PMA_getHtmlForChangePassword($username, $hostname);
4394
+ $html_output .= PMA_getChangeLoginInformationHtmlForm($username, $hostname);
4395
+ }
4396
+ $html_output .= '</div>';
4397
+
4398
+ return $html_output;
4399
+ }
4400
+
4401
+ /**
4402
+ * Get queries for Table privileges to change or copy user
4403
+ *
4404
+ * @param string $user_host_condition user host condition to
4405
+ * select relevant table privileges
4406
+ * @param array $queries queries array
4407
+ * @param string $username username
4408
+ * @param string $hostname host name
4409
+ *
4410
+ * @return array $queries
4411
+ */
4412
+ function PMA_getTablePrivsQueriesForChangeOrCopyUser($user_host_condition,
4413
+ $queries, $username, $hostname
4414
+ ) {
4415
+ $res = $GLOBALS['dbi']->query(
4416
+ 'SELECT `Db`, `Table_name`, `Table_priv` FROM `mysql`.`tables_priv`'
4417
+ . $user_host_condition,
4418
+ $GLOBALS['userlink'],
4419
+ PMA_DatabaseInterface::QUERY_STORE
4420
+ );
4421
+ while ($row = $GLOBALS['dbi']->fetchAssoc($res)) {
4422
+
4423
+ $res2 = $GLOBALS['dbi']->query(
4424
+ 'SELECT `Column_name`, `Column_priv`'
4425
+ . ' FROM `mysql`.`columns_priv`'
4426
+ . ' WHERE `User`'
4427
+ . ' = \'' . PMA_Util::sqlAddSlashes($_REQUEST['old_username']) . "'"
4428
+ . ' AND `Host`'
4429
+ . ' = \'' . PMA_Util::sqlAddSlashes($_REQUEST['old_username']) . '\''
4430
+ . ' AND `Db`'
4431
+ . ' = \'' . PMA_Util::sqlAddSlashes($row['Db']) . "'"
4432
+ . ' AND `Table_name`'
4433
+ . ' = \'' . PMA_Util::sqlAddSlashes($row['Table_name']) . "'"
4434
+ . ';',
4435
+ null,
4436
+ PMA_DatabaseInterface::QUERY_STORE
4437
+ );
4438
+
4439
+ $tmp_privs1 = PMA_extractPrivInfo($row);
4440
+ $tmp_privs2 = array(
4441
+ 'Select' => array(),
4442
+ 'Insert' => array(),
4443
+ 'Update' => array(),
4444
+ 'References' => array()
4445
+ );
4446
+
4447
+ while ($row2 = $GLOBALS['dbi']->fetchAssoc($res2)) {
4448
+ $tmp_array = explode(',', $row2['Column_priv']);
4449
+ if (in_array('Select', $tmp_array)) {
4450
+ $tmp_privs2['Select'][] = $row2['Column_name'];
4451
+ }
4452
+ if (in_array('Insert', $tmp_array)) {
4453
+ $tmp_privs2['Insert'][] = $row2['Column_name'];
4454
+ }
4455
+ if (in_array('Update', $tmp_array)) {
4456
+ $tmp_privs2['Update'][] = $row2['Column_name'];
4457
+ }
4458
+ if (in_array('References', $tmp_array)) {
4459
+ $tmp_privs2['References'][] = $row2['Column_name'];
4460
+ }
4461
+ }
4462
+ if (count($tmp_privs2['Select']) > 0 && ! in_array('SELECT', $tmp_privs1)) {
4463
+ $tmp_privs1[] = 'SELECT (`' . join('`, `', $tmp_privs2['Select']) . '`)';
4464
+ }
4465
+ if (count($tmp_privs2['Insert']) > 0 && ! in_array('INSERT', $tmp_privs1)) {
4466
+ $tmp_privs1[] = 'INSERT (`' . join('`, `', $tmp_privs2['Insert']) . '`)';
4467
+ }
4468
+ if (count($tmp_privs2['Update']) > 0 && ! in_array('UPDATE', $tmp_privs1)) {
4469
+ $tmp_privs1[] = 'UPDATE (`' . join('`, `', $tmp_privs2['Update']) . '`)';
4470
+ }
4471
+ if (count($tmp_privs2['References']) > 0
4472
+ && ! in_array('REFERENCES', $tmp_privs1)
4473
+ ) {
4474
+ $tmp_privs1[]
4475
+ = 'REFERENCES (`' . join('`, `', $tmp_privs2['References']) . '`)';
4476
+ }
4477
+
4478
+ $queries[] = 'GRANT ' . join(', ', $tmp_privs1)
4479
+ . ' ON ' . PMA_Util::backquote($row['Db']) . '.'
4480
+ . PMA_Util::backquote($row['Table_name'])
4481
+ . ' TO \'' . PMA_Util::sqlAddSlashes($username)
4482
+ . '\'@\'' . PMA_Util::sqlAddSlashes($hostname) . '\''
4483
+ . (in_array('Grant', explode(',', $row['Table_priv']))
4484
+ ? ' WITH GRANT OPTION;'
4485
+ : ';');
4486
+ }
4487
+ return $queries;
4488
+ }
4489
+
4490
+ /**
4491
+ * Get queries for database specific privileges for change or copy user
4492
+ *
4493
+ * @param array $queries queries array with string
4494
+ * @param string $username username
4495
+ * @param string $hostname host name
4496
+ *
4497
+ * @return array $queries
4498
+ */
4499
+ function PMA_getDbSpecificPrivsQueriesForChangeOrCopyUser(
4500
+ $queries, $username, $hostname
4501
+ ) {
4502
+ $user_host_condition = ' WHERE `User`'
4503
+ . ' = \'' . PMA_Util::sqlAddSlashes($_REQUEST['old_username']) . "'"
4504
+ . ' AND `Host`'
4505
+ . ' = \'' . PMA_Util::sqlAddSlashes($_REQUEST['old_hostname']) . '\';';
4506
+
4507
+ $res = $GLOBALS['dbi']->query(
4508
+ 'SELECT * FROM `mysql`.`db`' . $user_host_condition
4509
+ );
4510
+
4511
+ while ($row = $GLOBALS['dbi']->fetchAssoc($res)) {
4512
+ $queries[] = 'GRANT ' . join(', ', PMA_extractPrivInfo($row))
4513
+ . ' ON ' . PMA_Util::backquote($row['Db']) . '.*'
4514
+ . ' TO \'' . PMA_Util::sqlAddSlashes($username)
4515
+ . '\'@\'' . PMA_Util::sqlAddSlashes($hostname) . '\''
4516
+ . ($row['Grant_priv'] == 'Y' ? ' WITH GRANT OPTION;' : ';');
4517
+ }
4518
+ $GLOBALS['dbi']->freeResult($res);
4519
+
4520
+ $queries = PMA_getTablePrivsQueriesForChangeOrCopyUser(
4521
+ $user_host_condition, $queries, $username, $hostname
4522
+ );
4523
+
4524
+ return $queries;
4525
+ }
4526
+
4527
+ /**
4528
+ * Prepares queries for adding users and
4529
+ * also create database and return query and message
4530
+ *
4531
+ * @param boolean $_error whether user create or not
4532
+ * @param string $real_sql_query SQL query for add a user
4533
+ * @param string $sql_query SQL query to be displayed
4534
+ * @param string $username username
4535
+ * @param string $hostname host name
4536
+ * @param string $dbname database name
4537
+ *
4538
+ * @return array $sql_query, $message
4539
+ */
4540
+ function PMA_addUserAndCreateDatabase($_error, $real_sql_query, $sql_query,
4541
+ $username, $hostname, $dbname
4542
+ ) {
4543
+ if ($_error || (!empty($real_sql_query)
4544
+ && !$GLOBALS['dbi']->tryQuery($real_sql_query))
4545
+ ) {
4546
+ $_REQUEST['createdb-1'] = $_REQUEST['createdb-2']
4547
+ = $_REQUEST['createdb-3'] = null;
4548
+ $message = PMA_Message::rawError($GLOBALS['dbi']->getError());
4549
+ } else {
4550
+ $message = PMA_Message::success(__('You have added a new user.'));
4551
+ }
4552
+
4553
+ if (isset($_REQUEST['createdb-1'])) {
4554
+ // Create database with same name and grant all privileges
4555
+ $q = 'CREATE DATABASE IF NOT EXISTS '
4556
+ . PMA_Util::backquote(
4557
+ PMA_Util::sqlAddSlashes($username)
4558
+ ) . ';';
4559
+ $sql_query .= $q;
4560
+ if (! $GLOBALS['dbi']->tryQuery($q)) {
4561
+ $message = PMA_Message::rawError($GLOBALS['dbi']->getError());
4562
+ }
4563
+
4564
+ /**
4565
+ * Reload the navigation
4566
+ */
4567
+ $GLOBALS['reload'] = true;
4568
+ $GLOBALS['db'] = $username;
4569
+
4570
+ $q = 'GRANT ALL PRIVILEGES ON '
4571
+ . PMA_Util::backquote(
4572
+ PMA_Util::escapeMysqlWildcards(
4573
+ PMA_Util::sqlAddSlashes($username)
4574
+ )
4575
+ ) . '.* TO \''
4576
+ . PMA_Util::sqlAddSlashes($username)
4577
+ . '\'@\'' . PMA_Util::sqlAddSlashes($hostname) . '\';';
4578
+ $sql_query .= $q;
4579
+ if (! $GLOBALS['dbi']->tryQuery($q)) {
4580
+ $message = PMA_Message::rawError($GLOBALS['dbi']->getError());
4581
+ }
4582
+ }
4583
+
4584
+ if (isset($_REQUEST['createdb-2'])) {
4585
+ // Grant all privileges on wildcard name (username\_%)
4586
+ $q = 'GRANT ALL PRIVILEGES ON '
4587
+ . PMA_Util::backquote(
4588
+ PMA_Util::sqlAddSlashes($username) . '\_%'
4589
+ ) . '.* TO \''
4590
+ . PMA_Util::sqlAddSlashes($username)
4591
+ . '\'@\'' . PMA_Util::sqlAddSlashes($hostname) . '\';';
4592
+ $sql_query .= $q;
4593
+ if (! $GLOBALS['dbi']->tryQuery($q)) {
4594
+ $message = PMA_Message::rawError($GLOBALS['dbi']->getError());
4595
+ }
4596
+ }
4597
+
4598
+ if (isset($_REQUEST['createdb-3'])) {
4599
+ // Grant all privileges on the specified database to the new user
4600
+ $q = 'GRANT ALL PRIVILEGES ON '
4601
+ . PMA_Util::backquote(
4602
+ PMA_Util::sqlAddSlashes($dbname)
4603
+ ) . '.* TO \''
4604
+ . PMA_Util::sqlAddSlashes($username)
4605
+ . '\'@\'' . PMA_Util::sqlAddSlashes($hostname) . '\';';
4606
+ $sql_query .= $q;
4607
+ if (! $GLOBALS['dbi']->tryQuery($q)) {
4608
+ $message = PMA_Message::rawError($GLOBALS['dbi']->getError());
4609
+ }
4610
+ }
4611
+ return array($sql_query, $message);
4612
+ }
4613
+
4614
+ /**
4615
+ * Get SQL queries for Display and Add user
4616
+ *
4617
+ * @param string $username username
4618
+ * @param string $hostname host name
4619
+ * @param string $password password
4620
+ *
4621
+ * @return array ($create_user_real, $create_user_show,$real_sql_query, $sql_query)
4622
+ */
4623
+ function PMA_getSqlQueriesForDisplayAndAddUser($username, $hostname, $password)
4624
+ {
4625
+ $create_user_real = 'CREATE USER \''
4626
+ . PMA_Util::sqlAddSlashes($username) . '\'@\''
4627
+ . PMA_Util::sqlAddSlashes($hostname) . '\'';
4628
+
4629
+ $real_sql_query = 'GRANT ' . join(', ', PMA_extractPrivInfo()) . ' ON *.* TO \''
4630
+ . PMA_Util::sqlAddSlashes($username) . '\'@\''
4631
+ . PMA_Util::sqlAddSlashes($hostname) . '\'';
4632
+
4633
+ if ($_POST['pred_password'] != 'none' && $_POST['pred_password'] != 'keep') {
4634
+ $sql_query = $real_sql_query;
4635
+ // Requires SELECT privilege on mysql database
4636
+ // for using this with GRANT queries. It can be skipped.
4637
+ if ($GLOBALS['is_superuser']) {
4638
+ $sql_query .= ' IDENTIFIED BY \'***\'';
4639
+ $real_sql_query .= ' IDENTIFIED BY \''
4640
+ . PMA_Util::sqlAddSlashes($_POST['pma_pw']) . '\'';
4641
+ }
4642
+ if (isset($create_user_real)) {
4643
+ $create_user_show = $create_user_real . ' IDENTIFIED BY \'***\'';
4644
+ $create_user_real .= ' IDENTIFIED BY \''
4645
+ . PMA_Util::sqlAddSlashes($_POST['pma_pw']) . '\'';
4646
+ }
4647
+ } else {
4648
+ if ($_POST['pred_password'] == 'keep' && ! empty($password)) {
4649
+ $real_sql_query .= ' IDENTIFIED BY PASSWORD \'' . $password . '\'';
4650
+ if (isset($create_user_real)) {
4651
+ $create_user_real .= ' IDENTIFIED BY PASSWORD \'' . $password . '\'';
4652
+ }
4653
+ }
4654
+ $sql_query = $real_sql_query;
4655
+ if (isset($create_user_real)) {
4656
+ $create_user_show = $create_user_real;
4657
+ }
4658
+ }
4659
+
4660
+ // add REQUIRE clause
4661
+ $require_clause = PMA_getRequireClause();
4662
+ $real_sql_query .= $require_clause;
4663
+ $sql_query .= $require_clause;
4664
+
4665
+ if ((isset($_POST['Grant_priv']) && $_POST['Grant_priv'] == 'Y')
4666
+ || (isset($_POST['max_questions']) || isset($_POST['max_connections'])
4667
+ || isset($_POST['max_updates']) || isset($_POST['max_user_connections']))
4668
+ ) {
4669
+ $with_clause = PMA_getWithClauseForAddUserAndUpdatePrivs();
4670
+ $real_sql_query .= $with_clause;
4671
+ $sql_query .= $with_clause;
4672
+ }
4673
+
4674
+ if (isset($create_user_real)) {
4675
+ $create_user_real .= ';';
4676
+ $create_user_show .= ';';
4677
+ }
4678
+ $real_sql_query .= ';';
4679
+ $sql_query .= ';';
4680
+ // No Global GRANT_OPTION privilege
4681
+ if (!$GLOBALS['is_grantuser']) {
4682
+ $real_sql_query = '';
4683
+ $sql_query = '';
4684
+ }
4685
+
4686
+ return array($create_user_real,
4687
+ $create_user_show,
4688
+ $real_sql_query,
4689
+ $sql_query
4690
+ );
4691
+ }
4692
+ ?>