Merge branch 'colresize' into aris

This commit is contained in:
Aris Feryanto 2011-06-09 13:04:57 +07:00
commit 3ac62ac37f

View File

@ -1196,6 +1196,27 @@ class PMA_Table
return $return;
}
/**
* Get all columns
*
* returns an array with all columns
*
* @param boolean whether to quote name with backticks ``
* @return array
*/
public function getColumns($backquoted = true)
{
$sql = 'SHOW COLUMNS FROM ' . $this->getFullName(true);
$indexed = PMA_DBI_fetch_result($sql, 'Field', 'Field');
$return = array();
foreach ($indexed as $column) {
$return[] = $this->getFullName($backquoted) . '.' . ($backquoted ? PMA_backquote($column) : $column);
}
return $return;
}
/**
* Return UI preferences for this table from phpMyAdmin database.
*
@ -1276,26 +1297,12 @@ class PMA_Table
$this->uiprefs =& $_SESSION['tmp_user_values']['table_uiprefs'][$this->db_name][$this->name];
}
/**
* Get UI preferences array for this table.
* If pmadb and table_uiprefs is set, it will get the UI preferences from
* phpMyAdmin database.
*
* @return array
*/
public function getUiPrefs()
{
if (! isset($this->uiprefs)) {
$this->loadUiPrefs();
}
return $this->uiprefs;
}
/**
* Get a property from UI preferences.
* Return false if the property is not found.
* Available property:
* - PROP_SORTED_COLUMN
* - PROP_COLUMN_ORDER
*
* @uses loadUiPrefs()
*
@ -1307,6 +1314,42 @@ class PMA_Table
if (! isset($this->uiprefs)) {
$this->loadUiPrefs();
}
// do checking based on property
if ($property == self::PROP_SORTED_COLUMN) {
if (isset($this->uiprefs[$property])) {
// check if the column name is exist in this table
$tmp = explode(' ', $this->uiprefs[$property]);
$colname = $tmp[0];
$avail_columns = $this->getColumns();
foreach ($avail_columns as $each_col) {
// check if $each_col ends with $colname
if (substr_compare($each_col, $colname,
strlen($each_col) - strlen($colname)) === 0) {
return $this->uiprefs[$property];
}
}
// remove the property, since it is not exist anymore in database
$this->removeUiProp(self::PROP_SORTED_COLUMN);
return false;
} else {
return false;
}
} else if ($property == self::PROP_COLUMN_ORDER) {
if (isset($this->uiprefs[$property])) {
// check if the table has not been modified
if (self::sGetStatusInfo($this->db_name, $this->name, 'CREATE_TIME') ==
$this->uiprefs['CREATE_TIME']) {
return $this->uiprefs[$property];
} else {
// remove the property, since the table has been modified
$this->removeUiProp(self::PROP_COLUMN_ORDER);
return false;
}
} else {
return false;
}
}
// default behaviour for other property:
return isset($this->uiprefs[$property]) ? $this->uiprefs[$property] : false;
}
@ -1325,6 +1368,10 @@ class PMA_Table
$this->loadUiPrefs();
}
$this->uiprefs[$property] = $value;
// also save the create time if the property is PROP_COLUMN_ORDER
if ($property == self::PROP_COLUMN_ORDER) {
$this->uiprefs['CREATE_TIME'] = self::sGetStatusInfo($this->db_name, $this->name, 'CREATE_TIME');
}
// check if pmadb is set
if (strlen($GLOBALS['cfg']['Server']['pmadb'])
&& strlen($GLOBALS['cfg']['Server']['table_uiprefs'])) {
@ -1332,5 +1379,25 @@ class PMA_Table
}
return true;
}
/**
* Remove a property from UI preferences.
*
* @param string $property
*/
public function removeUiProp($property)
{
if (! isset($this->uiprefs)) {
$this->loadUiPrefs();
}
if (isset($this->uiprefs[$property])) {
unset($this->uiprefs[$property]);
// check if pmadb is set
if (strlen($GLOBALS['cfg']['Server']['pmadb'])
&& strlen($GLOBALS['cfg']['Server']['table_uiprefs'])) {
return $this->saveUiprefsToDb();
}
}
}
}
?>