db_qbe.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. <?php
  2. /* vim: set expandtab sw=4 ts=4 sts=4: */
  3. /**
  4. * query by example the whole database
  5. *
  6. * @package PhpMyAdmin
  7. */
  8. /**
  9. * requirements
  10. */
  11. require_once 'libraries/common.inc.php';
  12. require_once 'libraries/DBQbe.class.php';
  13. require_once 'libraries/bookmark.lib.php';
  14. require_once 'libraries/sql.lib.php';
  15. $response = PMA_Response::getInstance();
  16. // Gets the relation settings
  17. $cfgRelation = PMA_getRelationsParam();
  18. $savedSearchList = array();
  19. $currentSearchId = null;
  20. if ($cfgRelation['savedsearcheswork']) {
  21. include 'libraries/SavedSearches.class.php';
  22. $header = $response->getHeader();
  23. $scripts = $header->getScripts();
  24. $scripts->addFile('db_qbe.js');
  25. //Get saved search list.
  26. $savedSearch = new PMA_SavedSearches($GLOBALS);
  27. $savedSearch->setUsername($GLOBALS['cfg']['Server']['user'])
  28. ->setDbname($_REQUEST['db']);
  29. if (!empty($_REQUEST['searchId'])) {
  30. $savedSearch->setId($_REQUEST['searchId']);
  31. }
  32. //Action field is sent.
  33. if (isset($_REQUEST['action'])) {
  34. $savedSearch->setSearchName($_REQUEST['searchName']);
  35. if ('create' === $_REQUEST['action']) {
  36. $saveResult = $savedSearch->setId(null)
  37. ->setCriterias($_REQUEST)
  38. ->save();
  39. } elseif ('update' === $_REQUEST['action']) {
  40. $saveResult = $savedSearch->setCriterias($_REQUEST)
  41. ->save();
  42. } elseif ('delete' === $_REQUEST['action']) {
  43. $deleteResult = $savedSearch->delete();
  44. //After deletion, reset search.
  45. $savedSearch = new PMA_SavedSearches($GLOBALS);
  46. $savedSearch->setUsername($GLOBALS['cfg']['Server']['user'])
  47. ->setDbname($_REQUEST['db']);
  48. $_REQUEST = array();
  49. } elseif ('load' === $_REQUEST['action']) {
  50. if (empty($_REQUEST['searchId'])) {
  51. //when not loading a search, reset the object.
  52. $savedSearch = new PMA_SavedSearches($GLOBALS);
  53. $savedSearch->setUsername($GLOBALS['cfg']['Server']['user'])
  54. ->setDbname($_REQUEST['db']);
  55. $_REQUEST = array();
  56. } else {
  57. $loadResult = $savedSearch->load();
  58. }
  59. }
  60. //Else, it's an "update query"
  61. }
  62. $savedSearchList = $savedSearch->getList();
  63. $currentSearchId = $savedSearch->getId();
  64. }
  65. /**
  66. * A query has been submitted -> (maybe) execute it
  67. */
  68. $message_to_display = false;
  69. if (isset($_REQUEST['submit_sql']) && ! empty($sql_query)) {
  70. if (! preg_match('@^SELECT@i', $sql_query)) {
  71. $message_to_display = true;
  72. } else {
  73. $goto = 'db_sql.php';
  74. // Parse and analyze the query
  75. include_once 'libraries/parse_analyze.inc.php';
  76. PMA_executeQueryAndSendQueryResponse(
  77. $analyzed_sql_results, false, $_REQUEST['db'], null, null, null, null,
  78. false, null, null, null, null, $goto, $pmaThemeImage, null, null, null,
  79. $sql_query, null, null
  80. );
  81. }
  82. }
  83. $sub_part = '_qbe';
  84. require 'libraries/db_common.inc.php';
  85. $url_query .= '&amp;goto=db_qbe.php';
  86. $url_params['goto'] = 'db_qbe.php';
  87. require 'libraries/db_info.inc.php';
  88. if ($message_to_display) {
  89. PMA_Message::error(__('You have to choose at least one column to display!'))
  90. ->display();
  91. }
  92. unset($message_to_display);
  93. // create new qbe search instance
  94. $db_qbe = new PMA_DBQbe($GLOBALS['db'], $savedSearchList, $savedSearch);
  95. /**
  96. * Displays the Query by example form
  97. */
  98. if ($cfgRelation['designerwork']) {
  99. $url = 'pmd_general.php' . PMA_URL_getCommon(
  100. array_merge(
  101. $url_params,
  102. array('query' => 1)
  103. )
  104. );
  105. $response->addHTML(
  106. PMA_Message::notice(
  107. sprintf(
  108. __('Switch to %svisual builder%s'),
  109. '<a href="' . $url . '">',
  110. '</a>'
  111. )
  112. )
  113. );
  114. }
  115. $response->addHTML($db_qbe->getSelectionForm($cfgRelation));
  116. ?>