C:\xampp2_not used\php\pear\Text\Wiki\Render\Xhtml\Wikilink.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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
<?php
// vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4:
/**
 * Wikilink rule end renderer for Xhtml
 *
 * PHP versions 4 and 5
 *
 * @category   Text
 * @package    Text_Wiki
 * @author     Paul M. Jones <pmjones@php.net>
 * @license    http://www.gnu.org/copyleft/lesser.html  LGPL License 2.1
 * @version    CVS: $Id: Wikilink.php 224670 2006-12-08 21:25:24Z justinpatrin $
 * @link       http://pear.php.net/package/Text_Wiki
 */

/**
 * This class renders wiki links in XHTML.
 *
 * @category   Text
 * @package    Text_Wiki
 * @author     Paul M. Jones <pmjones@php.net>
 * @license    http://www.gnu.org/copyleft/lesser.html  LGPL License 2.1
 * @version    Release: @package_version@
 * @link       http://pear.php.net/package/Text_Wiki
 */
class Text_Wiki_Render_Xhtml_Wikilink extends Text_Wiki_Render {

    var 
$conf = array(
        
'pages' => array(), // set to null or false to turn off page checks
        
'view_url' => 'http://example.com/index.php?page=%s',
        
'new_url'  => 'http://example.com/new.php?page=%s',
        
'new_text' => '?',
        
'new_text_pos' => 'after'// 'before', 'after', or null/false
        
'css' => null,
        
'css_new' => null,
        
'exists_callback' => null // call_user_func() callback
    
);


    
/**
    *
    * Renders a token into XHTML.
    *
    * @access public
    *
    * @param array $options The "options" portion of the token (second
    * element).
    *
    * @return string The text rendered from the token options.
    *
    */

    
function token($options)
    {
        
// make nice variable names (page, anchor, text)
        
extract($options);

        
// is there a "page existence" callback?
        // we need to access it directly instead of through
        // getConf() because we'll need a reference (for
        // object instance method callbacks).
        
if (isset($this->conf['exists_callback'])) {
            
$callback =& $this->conf['exists_callback'];
        } else {
            
$callback false;
        }

        if (
$callback) {
            
// use the callback function
            
$exists call_user_func($callback$page);
        } else {
            
// no callback, go to the naive page array.
            
$list $this->getConf('pages');
            if (
is_array($list)) {
                
// yes, check against the page list
                
$exists in_array($page$list);
            } else {
                
// no, assume it exists
                
$exists true;
            }
        }

        
$anchor '#'.$this->urlEncode(substr($anchor1));

        
// does the page exist?
        
if ($exists) {

            
// PAGE EXISTS.

            // link to the page view, but we have to build
            // the HREF.  we support both the old form where
            // the page always comes at the end, and the new
            // form that uses %s for sprintf()
            
$href $this->getConf('view_url');

            if (
strpos($href'%s') === false) {
                
// use the old form (page-at-end)
                
$href $href $this->urlEncode($page) . $anchor;
            } else {
                
// use the new form (sprintf format string)
                
$href sprintf($href$this->urlEncode($page)) . $anchor;
            }

            
// get the CSS class and generate output
            
$css ' class="'.$this->textEncode($this->getConf('css')).'"';

            
$start '<a'.$css.' href="'.$this->textEncode($href).'">';
            
$end '</a>';
        } else {

            
// PAGE DOES NOT EXIST.

            // link to a create-page url, but only if new_url is set
            
$href $this->getConf('new_url'null);

            
// set the proper HREF
            
if (! $href || trim($href) == '') {

                
// no useful href, return the text as it is
                //TODO: This is no longer used, need to look closer into this branch
                
$output $text;

            } else {

                
// yes, link to the new-page href, but we have to build
                // it.  we support both the old form where
                // the page always comes at the end, and the new
                // form that uses sprintf()
                
if (strpos($href'%s') === false) {
                    
// use the old form
                    
$href $href $this->urlEncode($page);
                } else {
                    
// use the new form
                    
$href sprintf($href$this->urlEncode($page));
                }
            }

            
// get the appropriate CSS class and new-link text
            
$css ' class="'.$this->textEncode($this->getConf('css_new')).'"';
            
$new $this->getConf('new_text');

            
// what kind of linking are we doing?
            
$pos $this->getConf('new_text_pos');
            if (! 
$pos || ! $new) {
                
// no position (or no new_text), use css only on the page name

                
$start '<a'.$css.' href="'.$this->textEncode($href).'">';
                
$end '</a>';
            } elseif (
$pos == 'before') {
                
// use the new_text BEFORE the page name
                
$start '<a'.$css.' href="'.$this->textEncode($href).'">'.$this->textEncode($new).'</a>';
                
$end '';
            } else {
                
// default, use the new_text link AFTER the page name
                
$start '';
                
$end '<a'.$css.' href="'.$this->textEncode($href).'">'.$this->textEncode($new).'</a>';
            }
        }
        if (!
strlen($text)) {
            
$start .= $this->textEncode($page);
        }
        if (isset(
$type)) {
            switch (
$type) {
            case 
'start':
                
$output $start;
                break;
            case 
'end':
                
$output $end;
                break;
            }
        } else {
            
$output $start.$this->textEncode($text).$end;
        }
        return 
$output;
    }
}
?>
x

Windows NT KPTV 6.2 build 9200 (Windows Server 2012 Datacenter Edition) i586