]> git.llucax.com Git - mecon/meconlib.git/blob - pear_lib_tmp/HTML/Link.php
2059785bf593a6320d81e5111974e06faa850eba
[mecon/meconlib.git] / pear_lib_tmp / HTML / Link.php
1 <?php
2 // vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
3 // +----------------------------------------------------------------------+
4 // | PHP Version 4                                                        |
5 // +----------------------------------------------------------------------+
6 // | Copyright (c) 1997-2003 The PHP Group                                |
7 // +----------------------------------------------------------------------+
8 // | This source file is subject to version 2.02 of the PHP license,      |
9 // | that is bundled with this package in the file LICENSE, and is        |
10 // | available at through the world-wide-web at                           |
11 // | http://www.php.net/license/2_02.txt.                                 |
12 // | If you did not receive a copy of the PHP license and are unable to   |
13 // | obtain it through the world-wide-web, please send a note to          |
14 // | license@php.net so we can mail you a copy immediately.               |
15 // +----------------------------------------------------------------------+
16 // | Created: Tue Jul 22 18:16:09 2003                                    |
17 // | Author:  Leandro Lucarella <llucar@mecon.gov.ar>                     |
18 // +----------------------------------------------------------------------+
19 //
20 // $Id$
21 //
22
23 // +X2C includes
24 require_once 'HTML/Common.php';
25 // ~X2C
26
27 // +X2C Class 214 :HTML_Link
28 /**
29  * HTML Link representation.
30 When adding GET variables, if the value is an object, it looks for a toString() method, if it doesn't exists or if is an array, it serializes the object/array to get a string value.
31 This is done in toHtml() method. Object are stored as references.
32  *
33  * @package HTML
34  * @access public
35  */
36 class HTML_Link extends HTML_Common {
37     /**
38      * Variables to send via GET HTTP method.
39      *
40      * @var    array $getVars
41      * @access protected
42      */
43     var $_getVars = array();
44
45     /**
46      * Link contents.
47      *
48      * @var    array $contents
49      * @access protected
50      */
51     var $_contents = array();
52
53     /**
54      * Gets GetVars.
55      *
56      * @return array
57      * @access public
58      */
59     function getGetVars()
60     {
61         return $this->_getVars;
62     }
63     /**
64      * Sets GetVars.
65      *
66      * @param  array $getVars GetVars.
67      *
68      * @return void
69      * @access public
70      */
71     function setGetVars($getVars)
72     {
73         $this->_getVars = $getVars;
74     }
75
76     // ~X2C
77
78     // +X2C Operation 221
79     /**
80      * Constructor.
81      *
82      * @param  string $href Hypertext reference.
83      * @param  mixed $contents Link contents.
84      * @param  array $getVars Array (as key => value pairs) of GET variables to pass to the link.
85      * @param  array $attrs Other links (A tag) attributes.
86      *
87      * @return void
88      * @access public
89      */
90     function HTML_Link($href = '', $contents = '', $getVars = array(), $attrs = array()) // ~X2C
91     {
92         if (is_array($attrs)) {
93             $attrs['href'] = $href;
94         } else {
95             $attrs .= " href=$href";
96         }
97         parent::HTML_Common($attrs);
98         $this->_getVars = $getVars;
99         $this->addContents($contents);
100     }
101     // -X2C
102
103     // +X2C Operation 216
104     /**
105      * Converts to HTML output.
106      *
107      * @return string
108      * @access public
109      */
110     function toHtml() // ~X2C
111     {
112         $attrs = '';
113         foreach ($this->getAttributes() as $key => $val) {
114             if ($key == 'href') {
115                 $vars = array();
116                 foreach ($this->_getVars as $var => $v) {
117                     if (is_object($v) and method_exists($v, 'tostring')) {
118                         $v = $v->tostring();
119                     } elseif (is_object($v) or is_array($v)) {
120                         $v = serialize($v);
121                     }
122                     $vars[] = urlencode($var) . '=' . urlencode($v);
123                 }
124                 if ($vars) {
125                     $val = '?' . join('&', $vars);
126                 }
127             }
128             $attrs .= ' ' . $key . '="' . htmlentities($val) . '"';
129         }
130         return "<A$attrs>" . htmlentities($this->getContents()) . '</A>';
131     }
132     // -X2C
133
134     // +X2C Operation 217
135     /**
136      * Gets hypertext reference.
137      *
138      * @return string
139      * @access public
140      */
141     function getHref() // ~X2C
142     {
143         return $this->getAttribute('href');
144     }
145     // -X2C
146
147     // +X2C Operation 218
148     /**
149      * Sets hypertext reference.
150      *
151      * @param  string $href Hypertext reference.
152      *
153      * @return void
154      * @access public
155      */
156     function setHref($href) // ~X2C
157     {
158         $this->updateAttributes(array('href' => $href));
159     }
160     // -X2C
161
162     // +X2C Operation 225
163     /**
164      * Set a GET variable.
165      *
166      * @param  string $key Key for the GET variable.
167      * @param  mixed &$value Value for the variable.
168      *
169      * @return void
170      * @access public
171      */
172     function setGetVar($key, &$value) // ~X2C
173     {
174         if (is_object($value)) {
175             $this->attrs[$key] =& $value;
176         } else {
177             $this->attrs[$key] = $value;
178         }
179     }
180     // -X2C
181
182     // +X2C Operation 226
183     /**
184      * Updates GET variables.
185      *
186      * @param  array $vars Array (as key => value pairs) of GET variables to update.
187 If they doesn't exists, they are added, if they exists, they are updated.
188      *
189      * @return void
190      * @access public
191      */
192     function updateGetVars($vars) // ~X2C
193     {
194         $this->_getVars += $vars;
195     }
196     // -X2C
197
198     // +X2C Operation 227
199     /**
200      * Unsets (removes) GET variables. This method supports variable arguments.
201      *
202      * @param  string $key Key of the GET variable to remove.
203      *
204      * @return void
205      * @access public
206      */
207     function unsetGetVars($key) // ~X2C
208     {
209         $keys = func_get_args();
210         foreach ($keys as $key) {
211             unset($this->_getVars[$key]);
212         }
213     }
214     // -X2C
215
216     // +X2C Operation 230
217     /**
218      * Adds contents to the link.
219      *
220      * @param  mixed &$contents Contents to add. Can be an object with a toHtml() method.
221      *
222      * @return void
223      * @access public
224      */
225     function addContents(&$contents) // ~X2C
226     {
227         if (is_object($contents)) {
228             $this->_contents[] =& $contents;
229         } else {
230             $this->_contents[] = $contents;
231         }
232     }
233     // -X2C
234
235     // +X2C Operation 231
236     /**
237      * @return string
238      * @access public
239      */
240     function getContents() // ~X2C
241     {
242         $html = '';
243         foreach ($this->_contents as $c) {
244             if (is_object($c) and method_exists($c, 'tohtml')) {
245                 $html .= $c->toHtml();
246             } else {
247                 $html .= $c;
248             }
249         }
250         return $html;
251     }
252     // -X2C
253
254     // +X2C Operation 232
255     /**
256      * @param  mixed $contents New link contents.
257      *
258      * @return void
259      * @access public
260      */
261     function setContents($contents) // ~X2C
262     {
263         $this->_contents = $contents;
264     }
265     // -X2C
266
267 } // -X2C Class :HTML_Link
268
269 ?>