CreateTable.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. /* vim: set expandtab sw=4 ts=4 sts=4: */
  3. /**
  4. * Displays form for creating a table (if user has privileges for that)
  5. *
  6. * for MySQL >= 4.1.0, we should be able to detect if user has a CREATE
  7. * privilege by looking at SHOW GRANTS output;
  8. * for < 4.1.0, it could be more difficult because the logic tries to
  9. * detect the current host and it might be expressed in many ways; also
  10. * on a shared server, the user might be unable to define a controluser
  11. * that has the proper rights to the "mysql" db;
  12. * so we give up and assume that user has the right to create a table
  13. *
  14. * Note: in this case we could even skip the following "foreach" logic
  15. *
  16. * Addendum, 2006-01-19: ok, I give up. We got some reports about servers
  17. * where the hostname field in mysql.user is not the same as the one
  18. * in mysql.db for a user. In this case, SHOW GRANTS does not return
  19. * the db-specific privileges. And probably, those users are on a shared
  20. * server, so can't set up a control user with rights to the "mysql" db.
  21. * We cannot reliably detect the db-specific privileges, so no more
  22. * warnings about the lack of privileges for CREATE TABLE. Tested
  23. * on MySQL 5.0.18.
  24. *
  25. * @package PhpMyAdmin
  26. */
  27. namespace PhpMyAdmin\Display;
  28. use PhpMyAdmin\Template;
  29. require_once './libraries/check_user_privileges.inc.php';
  30. /**
  31. * PhpMyAdmin\Display\CreateTable class
  32. *
  33. * @package PhpMyAdmin
  34. */
  35. class CreateTable
  36. {
  37. /**
  38. * Returns the html for create table.
  39. *
  40. * @param string $db database name
  41. *
  42. * @return string
  43. */
  44. public static function getHtml($db)
  45. {
  46. return Template::get('database/create_table')->render(
  47. array('db' => $db)
  48. );
  49. }
  50. }