getChoice() public method

Returns index choice (PRIMARY, UNIQUE, INDEX, SPATIAL, FULLTEXT)
public getChoice ( ) : string
return string index choice
Example #1
0
 /**
  * Function to get the sql query for index creation or edit
  *
  * @param Index $index  current index
  * @param bool  &$error whether error occurred or not
  *
  * @return string
  */
 public function getSqlQueryForIndexCreateOrEdit($index, &$error)
 {
     // $sql_query is the one displayed in the query box
     $sql_query = sprintf('ALTER TABLE %s.%s', Util::backquote($this->_db_name), Util::backquote($this->_name));
     // Drops the old index
     if (!empty($_REQUEST['old_index'])) {
         if ($_REQUEST['old_index'] == 'PRIMARY') {
             $sql_query .= ' DROP PRIMARY KEY,';
         } else {
             $sql_query .= sprintf(' DROP INDEX %s,', Util::backquote($_REQUEST['old_index']));
         }
     }
     // end if
     // Builds the new one
     switch ($index->getChoice()) {
         case 'PRIMARY':
             if ($index->getName() == '') {
                 $index->setName('PRIMARY');
             } elseif ($index->getName() != 'PRIMARY') {
                 $error = Message::error(__('The name of the primary key must be "PRIMARY"!'));
             }
             $sql_query .= ' ADD PRIMARY KEY';
             break;
         case 'FULLTEXT':
         case 'UNIQUE':
         case 'INDEX':
         case 'SPATIAL':
             if ($index->getName() == 'PRIMARY') {
                 $error = Message::error(__('Can\'t rename index to PRIMARY!'));
             }
             $sql_query .= sprintf(' ADD %s ', $index->getChoice());
             if ($index->getName()) {
                 $sql_query .= Util::backquote($index->getName());
             }
             break;
     }
     // end switch
     $index_fields = array();
     foreach ($index->getColumns() as $key => $column) {
         $index_fields[$key] = Util::backquote($column->getName());
         if ($column->getSubPart()) {
             $index_fields[$key] .= '(' . $column->getSubPart() . ')';
         }
     }
     // end while
     if (empty($index_fields)) {
         $error = Message::error(__('No index parts defined!'));
     } else {
         $sql_query .= ' (' . implode(', ', $index_fields) . ')';
     }
     $keyBlockSizes = $index->getKeyBlockSize();
     if (!empty($keyBlockSizes)) {
         $sql_query .= sprintf(' KEY_BLOCK_SIZE = ', Util::sqlAddSlashes($keyBlockSizes));
     }
     // specifying index type is allowed only for primary, unique and index only
     $type = $index->getType();
     if ($index->getChoice() != 'SPATIAL' && $index->getChoice() != 'FULLTEXT' && in_array($type, Index::getIndexTypes())) {
         $sql_query .= ' USING ' . $type;
     }
     $parser = $index->getParser();
     if ($index->getChoice() == 'FULLTEXT' && !empty($parser)) {
         $sql_query .= ' WITH PARSER ' . Util::sqlAddSlashes($parser);
     }
     $comment = $index->getComment();
     if (!empty($comment)) {
         $sql_query .= sprintf(" COMMENT '%s'", Util::sqlAddSlashes($comment));
     }
     $sql_query .= ';';
     return $sql_query;
 }