forked from phpmyadmin/phpmyadmin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathList.class.php
157 lines (141 loc) · 3.79 KB
/
List.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* hold the PMA_List base class
*
* @version $Id$
*/
/**
* @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() {}
}
?>