/home/mjc1/public_html/ej_sql/libraries/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
158
159
160
161
<?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 selected if requested
     * @uses    htmlspecialchars() to escape items
     * @param   mixed   $selected   the selected db or true for selecting current db
     * @param   boolean $include_information_schema
     * @return  string  HTML option tags
     */
    
function getHtmlOptions($selected ''$include_information_schema true)
    {
        if (
true === $selected) {
            
$selected $this->getDefault();
        }

        
$options '';
        foreach (
$this->items as $each_db) {
            if (
false === $include_information_schema && 'information_schema' === $each_db) {
                continue;
            }
            
$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() {}
}
?>