2 /* vim: set expandtab sw=4 ts=4 sts=4: */
4 * Displays index edit/creation form and handles it
10 * Gets some core libraries
12 require_once 'libraries/common.inc.php';
13 require_once 'libraries/Index.class.php';
14 require_once 'libraries/Template.class.php';
16 if (! isset($_REQUEST['create_edit_table'])) {
17 include_once 'libraries/tbl_common.inc.php';
20 if (isset($_REQUEST['index'])) {
21 if (is_array($_REQUEST['index'])) {
22 // coming already from form
23 $index = new PMA_Index($_REQUEST['index']);
25 $index = $GLOBALS['dbi']->getTable($db, $table)
26 ->getIndex($_REQUEST['index']);
29 $index = new PMA_Index
;
33 * Process the data from the edit/create index form,
34 * run the query to build the new index
35 * and moves back to "tbl_sql.php"
37 if (isset($_REQUEST['do_save_data'])) {
41 $sql_query = $GLOBALS['dbi']->getTable($db, $table)
42 ->getSqlQueryForIndexCreateOrEdit($index, $error);
44 // If there is a request for SQL previewing.
45 if (isset($_REQUEST['preview_sql'])) {
47 PMA_Response
::getInstance()->addJSON(
49 PMA\Template
::get('preview_sql')
52 'query_data' => $sql_query
58 $GLOBALS['dbi']->query($sql_query);
59 if ($GLOBALS['is_ajax_request'] == true) {
60 $message = PMA_Message
::success(
61 __('Table %1$s has been altered successfully.')
63 $message->addParam($table);
64 $response = PMA_Response
::getInstance();
66 'message', PMA_Util
::getMessage($message, $sql_query, 'success')
68 $response->addJSON('index_table', PMA_Index
::getHtmlForIndexes($table, $db));
70 include 'tbl_structure.php';
73 $response = PMA_Response
::getInstance();
74 $response->isSuccess(false);
75 $response->addJSON('message', $error);
78 } // end builds the new index
82 * Display the form to edit/create an index
84 require_once 'libraries/tbl_info.inc.php';
87 if (isset($_REQUEST['index']) && is_array($_REQUEST['index'])) {
88 // coming already from form
89 if (isset($_REQUEST['index']['columns']['names'])) {
90 $add_fields = count($_REQUEST['index']['columns']['names'])
91 - $index->getColumnCount();
93 if (isset($_REQUEST['add_fields'])) {
94 $add_fields +
= $_REQUEST['added_fields'];
96 } elseif (isset($_REQUEST['create_index'])) {
97 $add_fields = $_REQUEST['added_fields'];
98 } // end preparing form values
100 // Get fields and stores their name/type
101 if (isset($_REQUEST['create_edit_table'])) {
102 $fields = json_decode($_REQUEST['columns'], true);
103 $index_params = array(
104 'Non_unique' => ($_REQUEST['index']['Index_choice'] == 'UNIQUE') ?
'0' : '1'
106 $index->set($index_params);
107 $add_fields = count($fields);
109 $fields = $GLOBALS['dbi']->getTable($db, $table)->getNameAndTypeOfTheColumns();
112 $form_params = array(
117 if (isset($_REQUEST['create_index'])) {
118 $form_params['create_index'] = 1;
119 } elseif (isset($_REQUEST['old_index'])) {
120 $form_params['old_index'] = $_REQUEST['old_index'];
121 } elseif (isset($_REQUEST['index'])) {
122 $form_params['old_index'] = $_REQUEST['index'];
125 $response = PMA_Response
::getInstance();
127 PMA\Template
::get('index_form')
132 'form_params' => $form_params,
133 'add_fields' => $add_fields
137 $header = $response->getHeader();
138 $scripts = $header->getScripts();
139 $scripts->addFile('indexes.js');