]> git.llucax.com Git - mecon/meconlib.git/blob - pear_lib_tmp/HTML/Link.php
Se agrega la primera versiĆ³n de HTML_Link y se corrige HTML_Image.
[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                 $val = '?' . join('&', $vars);
125             }
126             $attrs .= ' ' . $key . '="' . htmlentities($val) . '"';
127         }
128         return "<A$attrs>" . htmlentities($this->getContents) . '</A>';
129     }
130     // -X2C
131
132     // +X2C Operation 217
133     /**
134      * Gets hypertext reference.
135      *
136      * @return string
137      * @access public
138      */
139     function getHref() // ~X2C
140     {
141         return $this->getAttribute('href');
142     }
143     // -X2C
144
145     // +X2C Operation 218
146     /**
147      * Sets hypertext reference.
148      *
149      * @param  string $href Hypertext reference.
150      *
151      * @return void
152      * @access public
153      */
154     function setHref($href) // ~X2C
155     {
156         $this->updateAttributes(array('href' => $href));
157     }
158     // -X2C
159
160     // +X2C Operation 225
161     /**
162      * Set a GET variable.
163      *
164      * @param  string $key Key for the GET variable.
165      * @param  mixed &$value Value for the variable.
166      *
167      * @return void
168      * @access public
169      */
170     function setGetVar($key, &$value) // ~X2C
171     {
172         if (is_object($value)) {
173             $this->attrs[$key] =& $value;
174         } else {
175             $this->attrs[$key] = $value;
176         }
177     }
178     // -X2C
179
180     // +X2C Operation 226
181     /**
182      * Updates GET variables.
183      *
184      * @param  array $vars Array (as key => value pairs) of GET variables to update.
185 If they doesn't exists, they are added, if they exists, they are updated.
186      *
187      * @return void
188      * @access public
189      */
190     function updateGetVars($vars) // ~X2C
191     {
192         $this->_getVars += $vars;
193     }
194     // -X2C
195
196     // +X2C Operation 227
197     /**
198      * Unsets (removes) GET variables. This method supports variable arguments.
199      *
200      * @param  string $key Key of the GET variable to remove.
201      *
202      * @return void
203      * @access public
204      */
205     function unsetGetVars($key) // ~X2C
206     {
207         $keys = func_get_args();
208         foreach ($keys as $key) {
209             unset($this->_getVars($key));
210         }
211     }
212     // -X2C
213
214     // +X2C Operation 230
215     /**
216      * Adds contents to the link.
217      *
218      * @param  mixed &$contents Contents to add. Can be an object with a toHtml() method.
219      *
220      * @return void
221      * @access public
222      */
223     function addContents(&$contents) // ~X2C
224     {
225         if (is_object($contents)) {
226             $this->_contents[] =& $contents;
227         } else {
228             $this->_contents[] = $contents;
229         }
230     }
231     // -X2C
232
233     // +X2C Operation 231
234     /**
235      * @return string
236      * @access public
237      */
238     function getContents() // ~X2C
239     {
240         $html = '';
241         foreach ($this->_contents as $c) {
242             if (is_object($c) and method_exists($c, 'tohtml')) {
243                 $html .= $c->toHtml();
244             } else {
245                 $html .= $c;
246             }
247         }
248         return $html;
249     }
250     // -X2C
251
252     // +X2C Operation 232
253     /**
254      * @param  mixed $contents New link contents.
255      *
256      * @return void
257      * @access public
258      */
259     function setContents($contents) // ~X2C
260     {
261         $this->_contents = $contents;
262     }
263     // -X2C
264
265 } // -X2C Class :HTML_Link
266
267 ?>