]> git.llucax.com Git - mecon/meconlib.git/blob - lib/MECON/HTML/Link.php
BugFix. Estaba mal escrito el nombre del mes Septiembre.
[mecon/meconlib.git] / lib / MECON / HTML / Link.php
1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
3                              Ministerio de Economía
4                                     meconlib
5 -------------------------------------------------------------------------------
6 This file is part of meconlib.
7
8 meconlib is free software; you can redistribute it and/or modify it under
9 the terms of the GNU General Public License as published by the Free
10 Software Foundation; either version 2 of the License, or (at your option)
11 any later version.
12
13 meconlib is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16  
17 You should have received a copy of the GNU General Public License; if not,
18 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
19 Boston, MA  02111-1307  USA
20 -------------------------------------------------------------------------------
21 Creado: Thu Aug 21 15:09:10 2003
22 Autor:  @@author <@@email>
23 -------------------------------------------------------------------------------
24 $Id$
25 -----------------------------------------------------------------------------*/
26
27 // +X2C includes
28 require_once 'HTML/Common.php';
29 // ~X2C
30
31 // +X2C Class 892 :MECON_HTML_Link
32 /**
33  * HTML Link representation.
34 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.
35 This is done in toHtml() method. Object are stored as references.
36  *
37  * @package HTML
38  * @access public
39  */
40 class MECON_HTML_Link extends HTML_Common {
41     /**
42      * Variables to send via GET HTTP method.
43      *
44      * @var    array $getVars
45      * @access protected
46      */
47     var $_getVars = array();
48
49     /**
50      * Link contents.
51      *
52      * @var    array $contents
53      * @access protected
54      */
55     var $_contents = array();
56
57     /**
58      * Gets GetVars.
59      *
60      * @return array
61      * @access public
62      */
63     function getGetVars()
64     {
65         return $this->_getVars;
66     }
67     /**
68      * Sets GetVars.
69      *
70      * @param  array $getVars GetVars.
71      *
72      * @return void
73      * @access public
74      */
75     function setGetVars($getVars)
76     {
77         $this->_getVars = $getVars;
78     }
79
80     // ~X2C
81
82     // +X2C Operation 178
83     /**
84      * Constructor.
85      *
86      * @param  string $href Hypertext reference.
87      * @param  mixed $contents Link contents.
88      * @param  array $getVars Array (as key => value pairs) of GET variables to pass to the link.
89      * @param  array $attrs Other links (A tag) attributes.
90      *
91      * @return void
92      * @access public
93      */
94     function MECON_HTML_Link($href = '', $contents = '', $getVars = array(), $attrs = array()) // ~X2C
95     {
96         if (is_array($attrs)) {
97             $attrs['href'] = $href;
98         } else {
99             $attrs .= " href=$href";
100         }
101         parent::HTML_Common($attrs);
102         $this->_getVars = $getVars;
103         $this->addContents($contents);
104     }
105     // -X2C
106
107     // +X2C Operation 179
108     /**
109      * Converts to HTML output.
110      *
111      * @return string
112      * @access public
113      */
114     function toHtml() // ~X2C
115     {
116         $attrs = '';
117         foreach ($this->getAttributes() as $key => $val) {
118             if ($key == 'href') {
119                 $vars = array();
120                 foreach ($this->_getVars as $var => $v) {
121                     if (is_object($v) and method_exists($v, 'tostring')) {
122                         $v = $v->tostring();
123                     } elseif (is_object($v) or is_array($v)) {
124                         $v = serialize($v);
125                     }
126                     $vars[] = urlencode($var) . '=' . urlencode($v);
127                 }
128                 if ($vars) {
129                     $val = '?' . join('&', $vars);
130                 }
131             }
132             $attrs .= ' ' . $key . '="' . htmlentities($val) . '"';
133         }
134         return "<A$attrs>" . $this->getContents() . '</A>';
135     }
136     // -X2C
137
138     // +X2C Operation 180
139     /**
140      * Gets hypertext reference.
141      *
142      * @return string
143      * @access public
144      */
145     function getHref() // ~X2C
146     {
147         return $this->getAttribute('href');
148     }
149     // -X2C
150
151     // +X2C Operation 181
152     /**
153      * Sets hypertext reference.
154      *
155      * @param  string $href Hypertext reference.
156      *
157      * @return void
158      * @access public
159      */
160     function setHref($href) // ~X2C
161     {
162         $this->updateAttributes(array('href' => $href));
163     }
164     // -X2C
165
166     // +X2C Operation 182
167     /**
168      * Set a GET variable.
169      *
170      * @param  string $key Key for the GET variable.
171      * @param  mixed &$value Value for the variable.
172      *
173      * @return void
174      * @access public
175      */
176     function setGetVar($key, &$value) // ~X2C
177     {
178         if (is_object($value)) {
179             $this->attrs[$key] =& $value;
180         } else {
181             $this->attrs[$key] = $value;
182         }
183     }
184     // -X2C
185
186     // +X2C Operation 183
187     /**
188      * Updates GET variables.
189      *
190      * @param  array $vars Array (as key => value pairs) of GET variables to update.
191 If they doesn't exists, they are added, if they exists, they are updated.
192      *
193      * @return void
194      * @access public
195      */
196     function updateGetVars($vars) // ~X2C
197     {
198         $this->_getVars += $vars;
199     }
200     // -X2C
201
202     // +X2C Operation 184
203     /**
204      * Unsets (removes) GET variables. This method supports variable arguments.
205      *
206      * @param  string $key Key of the GET variable to remove.
207      *
208      * @return void
209      * @access public
210      */
211     function unsetGetVars($key) // ~X2C
212     {
213         $keys = func_get_args();
214         foreach ($keys as $key) {
215             unset($this->_getVars[$key]);
216         }
217     }
218     // -X2C
219
220     // +X2C Operation 185
221     /**
222      * Adds contents to the link.
223      *
224      * @param  mixed &$contents Contents to add. Can be an object with a toHtml() method.
225      *
226      * @return void
227      * @access public
228      */
229     function addContents(&$contents) // ~X2C
230     {
231         if (is_object($contents)) {
232             $this->_contents[] =& $contents;
233         } else {
234             $this->_contents[] = $contents;
235         }
236     }
237     // -X2C
238
239     // +X2C Operation 186
240     /**
241      * @return string
242      * @access public
243      */
244     function getContents() // ~X2C
245     {
246         $html = '';
247         foreach ($this->_contents as $c) {
248             if (is_object($c) and method_exists($c, 'tohtml')) {
249                 $html .= $c->toHtml();
250             } else {
251                 $html .= htmlentities($c);
252             }
253         }
254         return $html;
255     }
256     // -X2C
257
258     // +X2C Operation 187
259     /**
260      * @param  mixed $contents New link contents.
261      *
262      * @return void
263      * @access public
264      */
265     function setContents($contents) // ~X2C
266     {
267         $this->_contents = $contents;
268     }
269     // -X2C
270
271 } // -X2C Class :MECON_HTML_Link
272 ?>