]> git.llucax.com Git - software/bife/base.git/blob - src/BIFE/Link.php
0929c3f8752dd45d71c6001c1eb35501c01e3b14
[software/bife/base.git] / src / BIFE / Link.php
1 <?php
2 // vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
3 // +--------------------------------------------------------------------+
4 // |                       BIFE - Buil It FastEr                        |
5 // +--------------------------------------------------------------------+
6 // | This file is part of BIFE.                                         |
7 // |                                                                    |
8 // | BIFE is free software; you can redistribute it and/or modify it    |
9 // | under the terms of the GNU General Public License as published by  |
10 // | the Free Software Foundation; either version 2 of the License, or  |
11 // | (at your option) any later version.                                |
12 // |                                                                    |
13 // | BIFE is distributed in the hope that it will be useful, but        |
14 // | WITHOUT ANY WARRANTY; without even the implied warranty of         |
15 // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   |
16 // | General Public License for more details.                           |
17 // |                                                                    |
18 // | You should have received a copy of the GNU General Public License  |
19 // | along with Hooks; if not, write to the Free Software Foundation,   |
20 // | Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA      |
21 // +--------------------------------------------------------------------+
22 // | Created: Sun Jun 1 20:00:20 2003                                   |
23 // | Authors: Leandro Lucarella <luca@lugmen.org.ar>                    |
24 // +--------------------------------------------------------------------+
25 //
26 // $Id$
27 //
28
29 // +X2C includes
30 require_once 'BIFE/Container.php';
31 // ~X2C
32
33 // +X2C Class 110 :Link
34 /**
35  * Link to another page.
36  *
37  * @package BIFE
38  * @access public
39  */
40 class BIFE_Link extends BIFE_Container {
41     // ~X2C
42
43     // +X2C Operation 111
44     /**
45      * Constructor.
46      *
47      * @param  array $attrs Attributes.
48      *
49      * @return void
50      * @access public
51      */
52     function BIFE_Link($attrs) // ~X2C
53     {
54         $this->__construct($attrs);
55     }
56     // -X2C
57
58     // +X2C Operation 112
59     /**
60      * Constructor.
61      *
62      * @param  array $attrs Attributes.
63      *
64      * @return void
65      * @access public
66      */
67     function __construct($attrs) // ~X2C
68     {
69         $link_attrs['URL']    = $this->getURL($attrs);
70         $link_attrs['DESC']   = @$attrs['DESC'];
71         $link_attrs['TARGET'] = @$attrs['TARGET'];
72         parent::__construct($link_attrs);
73     }
74     // -X2C
75
76     // +X2C Operation 142
77     /**
78      * Gets a URL string based on Link attributes.
79      *
80      * @param  array $attrs Link attributes.
81      *
82      * @return string
83      * @access public
84      */
85     function getURL($attrs) // ~X2C
86     {
87         $url = @$attrs['URL'];
88         if (substr($url, strlen($url)-1) == '/') {
89             $url .= 'index.xbf'; // TODO - add a configuration option for this.
90         }
91         unset($attrs['URL']);
92         $query = array();
93         foreach($attrs as $name => $value) {
94             if (substr($name, 0, 5) === 'DATA-') {
95                 if ($name = substr($name, 5)) {
96                     $query[] = urlencode($name) . '=' . urlencode($value);
97                 }
98             }
99         }
100         if ($query) {
101             $url .= '?' . join('&', $query);
102         }
103         return $url;
104     }
105     // -X2C
106
107     // +X2C Operation 160
108     /**
109      * Gets the relative path of the current BIFE file for web (URL) usage.
110      *
111      * @return string
112      * @access public
113      */
114     function getWebPath() // ~X2C
115     {
116         return (@$_SERVER['PATH_INFO']) ? '../' : './';
117     }
118     // -X2C
119
120     // +X2C Operation 161
121     /**
122      * Gets the relative path of the current BIFE file for filesystem usage.
123      *
124      * @return string
125      * @access public
126      */
127     function getFsPath() // ~X2C
128     {
129         return dirname('.' . @$_SERVER['PATH_INFO']) . '/';
130     }
131     // -X2C
132
133     // +X2C Operation 157
134     /**
135      * Renders the widget.
136      *
137      * @param  HTML_Template_HIT &$template Template to use to render the widget.
138      *
139      * @return string
140      * @access public
141      */
142     function render(&$template) // ~X2C
143     {
144         $this->attrs['CONTENTS'] = $this->renderContents($template);
145         return $template->parse('bife_link', $this->attrs, '', '');
146     }
147     // -X2C
148
149 } // -X2C Class :Link
150
151 ?>