new PMA_List class
This commit is contained in:
@@ -5,6 +5,9 @@ phpMyAdmin - ChangeLog
|
||||
$Id$
|
||||
$Source$
|
||||
|
||||
2006-09-21 Sebastian Mendel <cybot_tm@users.sourceforge.net>
|
||||
* libraries/PMA_List.class.php: new PMA_List class
|
||||
|
||||
2006-09-20 Marc Delisle <lem9@users.sourceforge.net>
|
||||
### 2.9.0 released from QA_2_9
|
||||
|
||||
|
154
libraries/PMA_List.class.php
Normal file
154
libraries/PMA_List.class.php
Normal file
@@ -0,0 +1,154 @@
|
||||
<?php
|
||||
/**
|
||||
* hold the PMA_List base class
|
||||
*/
|
||||
|
||||
/**
|
||||
* @todo add caching
|
||||
* @since phpMyAdmin 2.9.10
|
||||
* @abstract
|
||||
*/
|
||||
/* abstract public */ class PMA_List
|
||||
{
|
||||
/**
|
||||
* @var array the list items
|
||||
* @access public
|
||||
*/
|
||||
var $items = array();
|
||||
|
||||
/**
|
||||
* @var array details for list items
|
||||
* @access public
|
||||
*/
|
||||
var $details = array();
|
||||
|
||||
/**
|
||||
* @var bool whether we need to re-index the database list for consistency keys
|
||||
* @access protected
|
||||
*/
|
||||
var $_need_to_reindex = false;
|
||||
|
||||
/**
|
||||
* @var mixed empty item
|
||||
*/
|
||||
var $item_empty = '';
|
||||
|
||||
/**
|
||||
* returns first item from list
|
||||
*
|
||||
* @uses PMA_List::$items to get first item
|
||||
* @uses reset() to retrive first item from PMA_List::$items array
|
||||
* @return string value of first item
|
||||
*/
|
||||
function getFirst()
|
||||
{
|
||||
return reset($this->items);
|
||||
}
|
||||
|
||||
/**
|
||||
* returns item only if there is only one in the list
|
||||
*
|
||||
* @uses PMA_List::count() to decide what to return
|
||||
* @uses PMA_List::getFirst() to return it
|
||||
* @uses PMA_List::getEmpty() to return it
|
||||
* @return single item
|
||||
*/
|
||||
function getSingleItem()
|
||||
{
|
||||
if ($this->count() === 1) {
|
||||
return $this->getFirst();
|
||||
}
|
||||
|
||||
return $this->getEmpty();
|
||||
}
|
||||
|
||||
/**
|
||||
* returns list item count
|
||||
*
|
||||
* @uses PMA_List::$items to count it items
|
||||
* @uses count() to count items in PMA_List::$items
|
||||
* @return integer PMA_List::$items count
|
||||
*/
|
||||
function count()
|
||||
{
|
||||
return count($this->items);
|
||||
}
|
||||
|
||||
/**
|
||||
* defines what is an empty item (0, '', false or null)
|
||||
*
|
||||
* @uses PMA_List::$item_empty as return value
|
||||
* @return mixed an empty item
|
||||
*/
|
||||
function getEmpty()
|
||||
{
|
||||
return $this->item_empty;
|
||||
}
|
||||
|
||||
/**
|
||||
* checks if the given db names exists in the current list, if there is
|
||||
* missing at least one item it reutrns false other wise true
|
||||
*
|
||||
* @uses PMA_List::$items to check for existence of specific item
|
||||
* @uses func_get_args()
|
||||
* @uses in_array() to check if given arguments exists in PMA_List::$items
|
||||
* @param string $db_name,.. one or more mysql result resources
|
||||
* @return boolean true if all items exists, otheriwse false
|
||||
*/
|
||||
function exists()
|
||||
{
|
||||
foreach (func_get_args() as $result) {
|
||||
if (! in_array($result, $this->items)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns HTML <option>-tags to be used inside <select></select>
|
||||
*
|
||||
* @uses PMA_List::$items to build up the option items
|
||||
* @uses PMA_List::getDefault() to mark this as sleected if requested
|
||||
* @uses htmlspecialchars() to escape items
|
||||
* @param mixed $selected the selected db or true for selecting current db
|
||||
* @return string HTML option tags
|
||||
*/
|
||||
function getHtmlOptions($selected = '')
|
||||
{
|
||||
if (true === $selected) {
|
||||
$selected = $this->getDefault();
|
||||
}
|
||||
|
||||
$options = '';
|
||||
foreach ($this->items as $each_db) {
|
||||
$options .= '<option value="' . htmlspecialchars($each_db) . '"';
|
||||
if ($selected === $each_db) {
|
||||
$options .= ' selected="selected"';
|
||||
}
|
||||
$options .= '>' . htmlspecialchars($each_db) . '</option>' . "\n";
|
||||
}
|
||||
|
||||
return $options;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns default item
|
||||
*
|
||||
* @uses PMA_List::getEmpty() as fallback
|
||||
* @return string default item
|
||||
*/
|
||||
function getDefault()
|
||||
{
|
||||
return $this->getEmpty();
|
||||
}
|
||||
|
||||
/**
|
||||
* builds up the list
|
||||
*
|
||||
* @abstract
|
||||
*/
|
||||
/* abstract public */ function build() {}
|
||||
}
|
||||
?>
|
Reference in New Issue
Block a user