Skip to content
Snippets Groups Projects
Commit 16f15a81 authored by Dominik Eckelmann's avatar Dominik Eckelmann
Browse files

empty ID in wl() will be treated as $conf['start']

parent 84148531
No related branches found
No related tags found
No related merge requests found
<?php
class common_wl_test extends DokuWikiTest {
function test_wl_empty() {
global $conf;
$conf['useslash'] = 0;
$conf['userewrite'] = 0;
$conf['start'] = 'start';
$this->assertEquals(DOKU_BASE . DOKU_SCRIPT . '?id=start' , wl());
}
function test_wl_empty_rewrite1() {
global $conf;
$conf['useslash'] = 0;
$conf['userewrite'] = 1;
$conf['start'] = 'start';
$this->assertEquals(DOKU_BASE . 'start' , wl());
}
function test_wl_empty_rewrite2() {
global $conf;
$conf['useslash'] = 0;
$conf['userewrite'] = 2;
$conf['start'] = 'start';
$this->assertEquals(DOKU_BASE . DOKU_SCRIPT . '/start' , wl());
}
function test_wl_id() {
global $conf;
$conf['useslash'] = 0;
$conf['userewrite'] = 0;
$expect = DOKU_BASE . DOKU_SCRIPT . '?id=some';
$this->assertEquals($expect, wl('some'));
}
function test_wl_id_ns() {
global $conf;
$conf['useslash'] = 0;
$conf['userewrite'] = 0;
$expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:some';
$this->assertEquals($expect, wl('some:some'));
}
function test_wl_id_ns_start() {
global $conf;
$conf['useslash'] = 0;
$conf['userewrite'] = 0;
$expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:';
$this->assertEquals($expect, wl('some:'));
}
function test_wl_args_array() {
global $conf;
$conf['useslash'] = 0;
$conf['userewrite'] = 0;
$args = array('a' => 'b', 'c' => 'd', 'q' => '&ä');
$expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:&amp;a=b&amp;c=d&amp;q=%26%C3%A4';
$this->assertEquals($expect, wl('some:', $args));
}
function test_wl_args_string() {
global $conf;
$conf['useslash'] = 0;
$conf['userewrite'] = 0;
$args = 'a=b&c=d';
$expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:&amp;a=b&c=d';
$this->assertEquals($expect, wl('some:', $args));
}
function test_wl_args_comma_string() {
global $conf;
$conf['useslash'] = 0;
$conf['userewrite'] = 0;
$args = 'a=b,c=d';
$expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:&amp;a=b&amp;c=d';
$this->assertEquals($expect, wl('some:', $args));
}
function test_wl_abs() {
global $conf;
$conf['useslash'] = 0;
$conf['userewrite'] = 0;
$expect = DOKU_URL . DOKU_SCRIPT . '?id=some:';
$this->assertEquals($expect, wl('some:', '', true));
}
function test_wl_sep() {
global $conf;
$conf['useslash'] = 0;
$conf['userewrite'] = 0;
$expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:&a=b&c=d';
$this->assertEquals($expect, wl('some:', 'a=b,c=d', false, '&'));
}
function test_wl_useslash() {
global $conf;
$conf['useslash'] = 1;
$conf['userewrite'] = 0;
$expect = DOKU_BASE . DOKU_SCRIPT . '?id=some:&a=b&c=d';
$this->assertEquals($expect, wl('some:', 'a=b,c=d', false, '&'));
}
function test_wl_useslash_rewrite1() {
global $conf;
$conf['useslash'] = 1;
$conf['userewrite'] = 1;
$expect = DOKU_BASE . 'some/?a=b&c=d';
$this->assertEquals($expect, wl('some:', 'a=b,c=d', false, '&'));
}
function test_wl_useslash_rewrite1_sub_page() {
global $conf;
$conf['useslash'] = 1;
$conf['userewrite'] = 1;
$expect = DOKU_BASE . 'some/one?a=b&c=d';
$this->assertEquals($expect, wl('some:one', 'a=b,c=d', false, '&'));
}
function test_wl_useslash_rewrite2() {
global $conf;
$conf['useslash'] = 1;
$conf['userewrite'] = 2;
$expect = DOKU_BASE . DOKU_SCRIPT . '/some/one?a=b&c=d';
$this->assertEquals($expect, wl('some:one', 'a=b,c=d', false, '&'));
}
}
\ No newline at end of file
......@@ -342,16 +342,18 @@ function idfilter($id,$ue=true){
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
function wl($id='',$more='',$abs=false,$sep='&amp;'){
function wl($id='',$urlParameters='',$absolute=false,$separator='&amp;'){
global $conf;
if(is_array($more)){
$more = buildURLparams($more,$sep);
if(is_array($urlParameters)){
$urlParameters = buildURLparams($urlParameters,$separator);
}else{
$more = str_replace(',',$sep,$more);
$urlParameters = str_replace(',',$separator,$urlParameters);
}
$id = idfilter($id);
if($abs){
if ($id === '') {
$id = $conf['start'];
}
$id = idfilter($id);
if($absolute){
$xlink = DOKU_URL;
}else{
$xlink = DOKU_BASE;
......@@ -359,16 +361,16 @@ function wl($id='',$more='',$abs=false,$sep='&amp;'){
if($conf['userewrite'] == 2){
$xlink .= DOKU_SCRIPT.'/'.$id;
if($more) $xlink .= '?'.$more;
if($urlParameters) $xlink .= '?'.$urlParameters;
}elseif($conf['userewrite']){
$xlink .= $id;
if($more) $xlink .= '?'.$more;
if($urlParameters) $xlink .= '?'.$urlParameters;
}elseif($id){
$xlink .= DOKU_SCRIPT.'?id='.$id;
if($more) $xlink .= $sep.$more;
if($urlParameters) $xlink .= $separator.$urlParameters;
}else{
$xlink .= DOKU_SCRIPT;
if($more) $xlink .= '?'.$more;
if($urlParameters) $xlink .= '?'.$urlParameters;
}
return $xlink;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment