diff options
author | Andreas Gohr <andi@splitbrain.org> | 2012-11-08 23:15:08 +0100 |
---|---|---|
committer | Andreas Gohr <andi@splitbrain.org> | 2012-11-08 23:15:08 +0100 |
commit | 04924b7a9d090c0814cfff3e6706263e4d5a46e8 (patch) | |
tree | d83fc6b5683fbc9c639bfd1832f96dca2f3c8646 /inc/template.php | |
parent | 1ea7a6bada66fc9b7a45f61b4892e4ea23196d89 (diff) | |
parent | a731ed1d6736ca405b3559adfd9500affcc59412 (diff) | |
download | rpg-04924b7a9d090c0814cfff3e6706263e4d5a46e8.tar.gz rpg-04924b7a9d090c0814cfff3e6706263e4d5a46e8.tar.bz2 |
Merge branch 'master' into proxyconnect
* master: (169 commits)
added PCRE UTF-8 checks to do=check FS#2636
avoid multiple paralell update checks
fix regression bug in HTTPClient FS#2621
changed PAGEUTILS_ID_HIDEPAGE to has BEFORE/AFTER
TarLib code cleanup
TarLib: fixed appending in non-dynamic mode
fixed third method of adding files in TarLib
fix lone zero block in TarLib created archives
fix use of constructor in TarLib
Slovak language update
Korean language update
Latvian language update
added event PAGEUTILS_ID_HIDEPAGE
added test for isHiddenPage()
removed redundant variables in tpl_include_page() (because of 3ff8773b)
added cut off points for mobile devices as parameters to style.ini
Corrected typo: ruke -> rule
Persian language update
Spanish language update
russian language update
...
Diffstat (limited to 'inc/template.php')
-rw-r--r-- | inc/template.php | 947 |
1 files changed, 517 insertions, 430 deletions
diff --git a/inc/template.php b/inc/template.php index 5b6260155..0d96be214 100644 --- a/inc/template.php +++ b/inc/template.php @@ -9,29 +9,33 @@ if(!defined('DOKU_INC')) die('meh.'); /** - * Returns the path to the given template, uses - * default one if the custom version doesn't exist. + * Access a template file + * + * Returns the path to the given file inside the current template, uses + * default template if the custom version doesn't exist. * * @author Andreas Gohr <andi@splitbrain.org> + * @param string $file + * @return string */ -function template($tpl){ +function template($file) { global $conf; - if(@is_readable(DOKU_INC.'lib/tpl/'.$conf['template'].'/'.$tpl)) - return DOKU_INC.'lib/tpl/'.$conf['template'].'/'.$tpl; + if(@is_readable(DOKU_INC.'lib/tpl/'.$conf['template'].'/'.$file)) + return DOKU_INC.'lib/tpl/'.$conf['template'].'/'.$file; - return DOKU_INC.'lib/tpl/default/'.$tpl; + return DOKU_INC.'lib/tpl/dokuwiki/'.$file; } - /** * Convenience function to access template dir from local FS * * This replaces the deprecated DOKU_TPLINC constant * * @author Andreas Gohr <andi@splitbrain.org> + * @return string */ -function tpl_incdir(){ +function tpl_incdir() { global $conf; return DOKU_INC.'lib/tpl/'.$conf['template'].'/'; } @@ -42,8 +46,9 @@ function tpl_incdir(){ * This replaces the deprecated DOKU_TPL constant * * @author Andreas Gohr <andi@splitbrain.org> + * @return string */ -function tpl_basedir(){ +function tpl_basedir() { global $conf; return DOKU_BASE.'lib/tpl/'.$conf['template'].'/'; } @@ -59,32 +64,43 @@ function tpl_basedir(){ * handled by this function. ACL stuff is not done here either. * * @author Andreas Gohr <andi@splitbrain.org> + * @triggers TPL_ACT_RENDER + * @triggers TPL_CONTENT_DISPLAY + * @param bool $prependTOC should the TOC be displayed here? + * @return bool true if any output */ -function tpl_content($prependTOC=true) { +function tpl_content($prependTOC = true) { global $ACT; global $INFO; $INFO['prependTOC'] = $prependTOC; ob_start(); - trigger_event('TPL_ACT_RENDER',$ACT,'tpl_content_core'); + trigger_event('TPL_ACT_RENDER', $ACT, 'tpl_content_core'); $html_output = ob_get_clean(); - trigger_event('TPL_CONTENT_DISPLAY',$html_output,'ptln'); + trigger_event('TPL_CONTENT_DISPLAY', $html_output, 'ptln'); return !empty($html_output); } -function tpl_content_core(){ +/** + * Default Action of TPL_ACT_RENDER + * + * @return bool + */ +function tpl_content_core() { global $ACT; global $TEXT; global $PRE; global $SUF; global $SUM; global $IDX; + global $INPUT; - switch($ACT){ + switch($ACT) { case 'show': html_show(); break; + /** @noinspection PhpMissingBreakStatementInspection */ case 'locked': html_locked(); case 'edit': @@ -102,20 +118,13 @@ function tpl_content_core(){ html_search(); break; case 'revisions': - $first = isset($_REQUEST['first']) ? intval($_REQUEST['first']) : 0; - html_revisions($first); + html_revisions($INPUT->int('first')); break; case 'diff': html_diff(); break; case 'recent': - if (is_array($_REQUEST['first'])) { - $_REQUEST['first'] = array_keys($_REQUEST['first']); - $_REQUEST['first'] = $_REQUEST['first'][0]; - } - $first = is_numeric($_REQUEST['first']) ? intval($_REQUEST['first']) : 0; - $show_changes = $_REQUEST['show_changes']; - html_recent($first, $show_changes); + html_recent($INPUT->extract('first')->int('first'), $INPUT->str('show_changes')); break; case 'index': html_index($IDX); #FIXME can this be pulled from globals? is it sanitized correctly? @@ -124,8 +133,8 @@ function tpl_content_core(){ html_backlinks(); break; case 'conflict': - html_conflict(con($PRE,$TEXT,$SUF),$SUM); - html_diff(con($PRE,$TEXT,$SUF),false); + html_conflict(con($PRE, $TEXT, $SUF), $SUM); + html_diff(con($PRE, $TEXT, $SUF), false); break; case 'login': html_login(); @@ -152,9 +161,9 @@ function tpl_content_core(){ tpl_media(); break; default: - $evt = new Doku_Event('TPL_ACT_UNKNOWN',$ACT); - if ($evt->advise_before()) - msg("Failed to handle command: ".hsc($ACT),-1); + $evt = new Doku_Event('TPL_ACT_UNKNOWN', $ACT); + if($evt->advise_before()) + msg("Failed to handle command: ".hsc($ACT), -1); $evt->advise_after(); unset($evt); return false; @@ -169,43 +178,47 @@ function tpl_content_core(){ * a false argument * * @author Andreas Gohr <andi@splitbrain.org> + * @param bool $return Should the TOC be returned instead to be printed? + * @return string */ -function tpl_toc($return=false){ +function tpl_toc($return = false) { global $TOC; global $ACT; global $ID; global $REV; global $INFO; global $conf; + global $INPUT; $toc = array(); - if(is_array($TOC)){ + if(is_array($TOC)) { // if a TOC was prepared in global scope, always use it $toc = $TOC; - }elseif(($ACT == 'show' || substr($ACT,0,6) == 'export') && !$REV && $INFO['exists']){ + } elseif(($ACT == 'show' || substr($ACT, 0, 6) == 'export') && !$REV && $INFO['exists']) { // get TOC from metadata, render if neccessary $meta = p_get_metadata($ID, false, METADATA_RENDER_USING_CACHE); - if(isset($meta['internal']['toc'])){ + if(isset($meta['internal']['toc'])) { $tocok = $meta['internal']['toc']; - }else{ + } else { $tocok = true; } - $toc = $meta['description']['tableofcontents']; - if(!$tocok || !is_array($toc) || !$conf['tocminheads'] || count($toc) < $conf['tocminheads']){ + $toc = $meta['description']['tableofcontents']; + if(!$tocok || !is_array($toc) || !$conf['tocminheads'] || count($toc) < $conf['tocminheads']) { $toc = array(); } - }elseif($ACT == 'admin'){ + } elseif($ACT == 'admin') { // try to load admin plugin TOC FIXME: duplicates code from tpl_admin $plugin = null; - if (!empty($_REQUEST['page'])) { + $class = $INPUT->str('page'); + if(!empty($class)) { $pluginlist = plugin_list('admin'); - if (in_array($_REQUEST['page'], $pluginlist)) { + if(in_array($class, $pluginlist)) { // attempt to load the plugin - $plugin =& plugin_load('admin',$_REQUEST['page']); + /** @var $plugin DokuWiki_Admin_Plugin */ + $plugin =& plugin_load('admin', $class); } } - if ( ($plugin !== null) && - (!$plugin->forAdminOnly() || $INFO['isadmin']) ){ + if( ($plugin !== null) && (!$plugin->forAdminOnly() || $INFO['isadmin']) ) { $toc = $plugin->getTOC(); $TOC = $toc; // avoid later rebuild } @@ -215,6 +228,7 @@ function tpl_toc($return=false){ $html = html_TOC($toc); if($return) return $html; echo $html; + return ''; } /** @@ -222,26 +236,28 @@ function tpl_toc($return=false){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function tpl_admin(){ +function tpl_admin() { global $INFO; global $TOC; + global $INPUT; $plugin = null; - if (!empty($_REQUEST['page'])) { + $class = $INPUT->str('page'); + if(!empty($class)) { $pluginlist = plugin_list('admin'); - if (in_array($_REQUEST['page'], $pluginlist)) { - + if(in_array($class, $pluginlist)) { // attempt to load the plugin - $plugin =& plugin_load('admin',$_REQUEST['page']); + /** @var $plugin DokuWiki_Admin_Plugin */ + $plugin =& plugin_load('admin', $class); } } - if ($plugin !== null){ + if($plugin !== null) { if(!is_array($TOC)) $TOC = $plugin->getTOC(); //if TOC wasn't requested yet if($INFO['prependTOC']) tpl_toc(); $plugin->html(); - }else{ + } else { html_admin(); } return true; @@ -252,11 +268,12 @@ function tpl_admin(){ * * This has to go into the head section of your template. * - * @triggers TPL_METAHEADER_OUTPUT - * @param boolean $alt Should feeds and alternative format links be added? * @author Andreas Gohr <andi@splitbrain.org> + * @triggers TPL_METAHEADER_OUTPUT + * @param bool $alt Should feeds and alternative format links be added? + * @return bool */ -function tpl_metaheaders($alt=true){ +function tpl_metaheaders($alt = true) { global $ID; global $REV; global $INFO; @@ -265,13 +282,12 @@ function tpl_metaheaders($alt=true){ global $QUERY; global $lang; global $conf; - $it=2; // prepare the head array $head = array(); // prepare seed for js and css - $tseed = 0; + $tseed = 0; $depends = getConfigFiles('main'); foreach($depends as $f) { $time = @filemtime($f); @@ -279,99 +295,119 @@ function tpl_metaheaders($alt=true){ } // the usual stuff - $head['meta'][] = array( 'name'=>'generator', 'content'=>'DokuWiki'); - $head['link'][] = array( 'rel'=>'search', 'type'=>'application/opensearchdescription+xml', - 'href'=>DOKU_BASE.'lib/exe/opensearch.php', 'title'=>$conf['title'] ); - $head['link'][] = array( 'rel'=>'start', 'href'=>DOKU_BASE ); - if(actionOK('index')){ - $head['link'][] = array( 'rel'=>'contents', 'href'=> wl($ID,'do=index',false,'&'), - 'title'=>$lang['btn_index'] ); + $head['meta'][] = array('name'=> 'generator', 'content'=> 'DokuWiki'); + $head['link'][] = array( + 'rel' => 'search', 'type'=> 'application/opensearchdescription+xml', + 'href'=> DOKU_BASE.'lib/exe/opensearch.php', 'title'=> $conf['title'] + ); + $head['link'][] = array('rel'=> 'start', 'href'=> DOKU_BASE); + if(actionOK('index')) { + $head['link'][] = array( + 'rel' => 'contents', 'href'=> wl($ID, 'do=index', false, '&'), + 'title'=> $lang['btn_index'] + ); } - if($alt){ - $head['link'][] = array( 'rel'=>'alternate', 'type'=>'application/rss+xml', - 'title'=>'Recent Changes', 'href'=>DOKU_BASE.'feed.php'); - $head['link'][] = array( 'rel'=>'alternate', 'type'=>'application/rss+xml', - 'title'=>'Current Namespace', - 'href'=>DOKU_BASE.'feed.php?mode=list&ns='.$INFO['namespace']); - if(($ACT == 'show' || $ACT == 'search') && $INFO['writable']){ - $head['link'][] = array( 'rel'=>'edit', - 'title'=>$lang['btn_edit'], - 'href'=> wl($ID,'do=edit',false,'&')); + if($alt) { + $head['link'][] = array( + 'rel' => 'alternate', 'type'=> 'application/rss+xml', + 'title'=> 'Recent Changes', 'href'=> DOKU_BASE.'feed.php' + ); + $head['link'][] = array( + 'rel' => 'alternate', 'type'=> 'application/rss+xml', + 'title'=> 'Current Namespace', + 'href' => DOKU_BASE.'feed.php?mode=list&ns='.$INFO['namespace'] + ); + if(($ACT == 'show' || $ACT == 'search') && $INFO['writable']) { + $head['link'][] = array( + 'rel' => 'edit', + 'title'=> $lang['btn_edit'], + 'href' => wl($ID, 'do=edit', false, '&') + ); } - if($ACT == 'search'){ - $head['link'][] = array( 'rel'=>'alternate', 'type'=>'application/rss+xml', - 'title'=>'Search Result', - 'href'=>DOKU_BASE.'feed.php?mode=search&q='.$QUERY); + if($ACT == 'search') { + $head['link'][] = array( + 'rel' => 'alternate', 'type'=> 'application/rss+xml', + 'title'=> 'Search Result', + 'href' => DOKU_BASE.'feed.php?mode=search&q='.$QUERY + ); } - if(actionOK('export_xhtml')){ - $head['link'][] = array( 'rel'=>'alternate', 'type'=>'text/html', 'title'=>'Plain HTML', - 'href'=>exportlink($ID, 'xhtml', '', false, '&')); + if(actionOK('export_xhtml')) { + $head['link'][] = array( + 'rel' => 'alternate', 'type'=> 'text/html', 'title'=> 'Plain HTML', + 'href'=> exportlink($ID, 'xhtml', '', false, '&') + ); } - if(actionOK('export_raw')){ - $head['link'][] = array( 'rel'=>'alternate', 'type'=>'text/plain', 'title'=>'Wiki Markup', - 'href'=>exportlink($ID, 'raw', '', false, '&')); + if(actionOK('export_raw')) { + $head['link'][] = array( + 'rel' => 'alternate', 'type'=> 'text/plain', 'title'=> 'Wiki Markup', + 'href'=> exportlink($ID, 'raw', '', false, '&') + ); } } // setup robot tags apropriate for different modes - if( ($ACT=='show' || $ACT=='export_xhtml') && !$REV){ - if($INFO['exists']){ + if(($ACT == 'show' || $ACT == 'export_xhtml') && !$REV) { + if($INFO['exists']) { //delay indexing: - if((time() - $INFO['lastmod']) >= $conf['indexdelay']){ - $head['meta'][] = array( 'name'=>'robots', 'content'=>'index,follow'); - }else{ - $head['meta'][] = array( 'name'=>'robots', 'content'=>'noindex,nofollow'); + if((time() - $INFO['lastmod']) >= $conf['indexdelay']) { + $head['meta'][] = array('name'=> 'robots', 'content'=> 'index,follow'); + } else { + $head['meta'][] = array('name'=> 'robots', 'content'=> 'noindex,nofollow'); } - $head['link'][] = array( 'rel'=>'canonical', 'href'=>wl($ID,'',true,'&') ); - }else{ - $head['meta'][] = array( 'name'=>'robots', 'content'=>'noindex,follow'); + $head['link'][] = array('rel'=> 'canonical', 'href'=> wl($ID, '', true, '&')); + } else { + $head['meta'][] = array('name'=> 'robots', 'content'=> 'noindex,follow'); } - }elseif(defined('DOKU_MEDIADETAIL')){ - $head['meta'][] = array( 'name'=>'robots', 'content'=>'index,follow'); - }else{ - $head['meta'][] = array( 'name'=>'robots', 'content'=>'noindex,nofollow'); + } elseif(defined('DOKU_MEDIADETAIL')) { + $head['meta'][] = array('name'=> 'robots', 'content'=> 'index,follow'); + } else { + $head['meta'][] = array('name'=> 'robots', 'content'=> 'noindex,nofollow'); } // set metadata - if($ACT == 'show' || $ACT=='export_xhtml'){ + if($ACT == 'show' || $ACT == 'export_xhtml') { // date of modification - if($REV){ - $head['meta'][] = array( 'name'=>'date', 'content'=>date('Y-m-d\TH:i:sO',$REV)); - }else{ - $head['meta'][] = array( 'name'=>'date', 'content'=>date('Y-m-d\TH:i:sO',$INFO['lastmod'])); + if($REV) { + $head['meta'][] = array('name'=> 'date', 'content'=> date('Y-m-d\TH:i:sO', $REV)); + } else { + $head['meta'][] = array('name'=> 'date', 'content'=> date('Y-m-d\TH:i:sO', $INFO['lastmod'])); } // keywords (explicit or implicit) - if(!empty($INFO['meta']['subject'])){ - $head['meta'][] = array( 'name'=>'keywords', 'content'=>join(',',$INFO['meta']['subject'])); - }else{ - $head['meta'][] = array( 'name'=>'keywords', 'content'=>str_replace(':',',',$ID)); + if(!empty($INFO['meta']['subject'])) { + $head['meta'][] = array('name'=> 'keywords', 'content'=> join(',', $INFO['meta']['subject'])); + } else { + $head['meta'][] = array('name'=> 'keywords', 'content'=> str_replace(':', ',', $ID)); } } // load stylesheets - $head['link'][] = array('rel'=>'stylesheet', 'type'=>'text/css', - 'href'=>DOKU_BASE.'lib/exe/css.php?t='.$conf['template'].'&tseed='.$tseed); + $head['link'][] = array( + 'rel' => 'stylesheet', 'type'=> 'text/css', + 'href'=> DOKU_BASE.'lib/exe/css.php?t='.$conf['template'].'&tseed='.$tseed + ); // make $INFO and other vars available to JavaScripts - $json = new JSON(); + $json = new JSON(); $script = "var NS='".$INFO['namespace']."';"; - if($conf['useacl'] && $_SERVER['REMOTE_USER']){ + if($conf['useacl'] && $_SERVER['REMOTE_USER']) { $script .= "var SIG='".toolbar_signature()."';"; } $script .= 'var JSINFO = '.$json->encode($JSINFO).';'; - $head['script'][] = array( 'type'=>'text/javascript', '_data'=> $script); + $head['script'][] = array('type'=> 'text/javascript', '_data'=> $script); // load external javascript - $head['script'][] = array( 'type'=>'text/javascript', 'charset'=>'utf-8', '_data'=>'', - 'src'=>DOKU_BASE.'lib/exe/js.php'.'?tseed='.$tseed); + $head['script'][] = array( + 'type'=> 'text/javascript', 'charset'=> 'utf-8', '_data'=> '', + 'src' => DOKU_BASE.'lib/exe/js.php'.'?tseed='.$tseed + ); // trigger event here - trigger_event('TPL_METAHEADER_OUTPUT',$head,'_tpl_metaheaders_action',true); + trigger_event('TPL_METAHEADER_OUTPUT', $head, '_tpl_metaheaders_action', true); return true; } @@ -387,18 +423,18 @@ function tpl_metaheaders($alt=true){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function _tpl_metaheaders_action($data){ - foreach($data as $tag => $inst){ - foreach($inst as $attr){ - echo '<',$tag,' ',buildAttributes($attr); - if(isset($attr['_data']) || $tag == 'script'){ +function _tpl_metaheaders_action($data) { + foreach($data as $tag => $inst) { + foreach($inst as $attr) { + echo '<', $tag, ' ', buildAttributes($attr); + if(isset($attr['_data']) || $tag == 'script') { if($tag == 'script' && $attr['_data']) - $attr['_data'] = "<!--//--><![CDATA[//><!--\n". + $attr['_data'] = "/*<![CDATA[*/". $attr['_data']. - "\n//--><!]]>"; + "\n/*!]]>*/"; - echo '>',$attr['_data'],'</',$tag,'>'; - }else{ + echo '>', $attr['_data'], '</', $tag, '>'; + } else { echo '/>'; } echo "\n"; @@ -413,11 +449,11 @@ function _tpl_metaheaders_action($data){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function tpl_link($url,$name,$more='',$return=false){ +function tpl_link($url, $name, $more = '', $return = false) { $out = '<a href="'.$url.'" '; - if ($more) $out .= ' '.$more; + if($more) $out .= ' '.$more; $out .= ">$name</a>"; - if ($return) return $out; + if($return) return $out; print $out; return true; } @@ -429,8 +465,8 @@ function tpl_link($url,$name,$more='',$return=false){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function tpl_pagelink($id,$name=null){ - print html_wikilink($id,$name); +function tpl_pagelink($id, $name = null) { + print html_wikilink($id, $name); return true; } @@ -442,14 +478,13 @@ function tpl_pagelink($id,$name=null){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function tpl_getparent($id){ - global $conf; +function tpl_getparent($id) { $parent = getNS($id).':'; - resolve_pageid('',$parent,$exists); + resolve_pageid('', $parent, $exists); if($parent == $id) { - $pos = strrpos (getNS($id),':'); - $parent = substr($parent,0,$pos).':'; - resolve_pageid('',$parent,$exists); + $pos = strrpos(getNS($id), ':'); + $parent = substr($parent, 0, $pos).':'; + resolve_pageid('', $parent, $exists); if($parent == $id) return false; } return $parent; @@ -461,21 +496,27 @@ function tpl_getparent($id){ * @author Adrian Lang <mail@adrianlang.de> * @see tpl_get_action */ -function tpl_button($type,$return=false){ +function tpl_button($type, $return = false) { $data = tpl_get_action($type); - if ($data === false) { + if($data === false) { return false; - } elseif (!is_array($data)) { + } elseif(!is_array($data)) { $out = sprintf($data, 'button'); } else { + /** + * @var string $accesskey + * @var string $id + * @var string $method + * @var array $params + */ extract($data); - if ($id === '#dokuwiki__top') { + if($id === '#dokuwiki__top') { $out = html_topbtn(); } else { $out = html_btn($type, $id, $accesskey, $params, $method); } } - if ($return) return $out; + if($return) return $out; echo $out; return true; } @@ -486,32 +527,40 @@ function tpl_button($type,$return=false){ * @author Adrian Lang <mail@adrianlang.de> * @see tpl_get_action */ -function tpl_actionlink($type,$pre='',$suf='',$inner='',$return=false){ +function tpl_actionlink($type, $pre = '', $suf = '', $inner = '', $return = false) { global $lang; $data = tpl_get_action($type); - if ($data === false) { + if($data === false) { return false; - } elseif (!is_array($data)) { + } elseif(!is_array($data)) { $out = sprintf($data, 'link'); } else { + /** + * @var string $accesskey + * @var string $id + * @var string $method + * @var array $params + */ extract($data); - if (strpos($id, '#') === 0) { + if(strpos($id, '#') === 0) { $linktarget = $id; } else { $linktarget = wl($id, $params); } - $caption = $lang['btn_' . $type]; - $akey = $addTitle = ''; - if($accesskey){ - $akey = 'accesskey="'.$accesskey.'" '; + $caption = $lang['btn_'.$type]; + $akey = $addTitle = ''; + if($accesskey) { + $akey = 'accesskey="'.$accesskey.'" '; $addTitle = ' ['.strtoupper($accesskey).']'; } - $out = tpl_link($linktarget, $pre.(($inner)?$inner:$caption).$suf, - 'class="action ' . $type . '" ' . - $akey . 'rel="nofollow" ' . - 'title="' . hsc($caption).$addTitle . '"', 1); + $out = tpl_link( + $linktarget, $pre.(($inner) ? $inner : $caption).$suf, + 'class="action '.$type.'" '. + $akey.'rel="nofollow" '. + 'title="'.hsc($caption).$addTitle.'"', 1 + ); } - if ($return) return $out; + if($return) return $out; echo $out; return true; } @@ -536,53 +585,53 @@ function tpl_actionlink($type,$pre='',$suf='',$inner='',$return=false){ * @author Andreas Gohr <andi@splitbrain.org> * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net> * @author Adrian Lang <mail@adrianlang.de> + * @param string $type + * @return array|bool|string */ function tpl_get_action($type) { global $ID; global $INFO; global $REV; global $ACT; - global $conf; - global $auth; // check disabled actions and fix the badly named ones - if($type == 'history') $type='revisions'; + if($type == 'history') $type = 'revisions'; if(!actionOK($type)) return false; $accesskey = null; $id = $ID; $method = 'get'; $params = array('do' => $type); - switch($type){ + switch($type) { case 'edit': // most complicated type - we need to decide on current action - if($ACT == 'show' || $ACT == 'search'){ + if($ACT == 'show' || $ACT == 'search') { $method = 'post'; - if($INFO['writable']){ + if($INFO['writable']) { $accesskey = 'e'; if(!empty($INFO['draft'])) { - $type = 'draft'; + $type = 'draft'; $params['do'] = 'draft'; } else { $params['rev'] = $REV; - if(!$INFO['exists']){ - $type = 'create'; + if(!$INFO['exists']) { + $type = 'create'; } } - }else{ + } else { if(!actionOK('source')) return false; //pseudo action $params['rev'] = $REV; - $type = 'source'; - $accesskey = 'v'; + $type = 'source'; + $accesskey = 'v'; } - }else{ - $params = array(); - $type = 'show'; + } else { + $params = array(); + $type = 'show'; $accesskey = 'v'; } break; case 'revisions': - $type = 'revs'; + $type = 'revs'; $accesskey = 'o'; break; case 'recent': @@ -593,40 +642,40 @@ function tpl_get_action($type) { break; case 'top': $accesskey = 't'; - $params = array(); - $id = '#dokuwiki__top'; + $params = array(); + $id = '#dokuwiki__top'; break; case 'back': $parent = tpl_getparent($ID); - if (!$parent) { + if(!$parent) { return false; } - $id = $parent; - $params = array(); + $id = $parent; + $params = array(); $accesskey = 'b'; break; case 'login': $params['sectok'] = getSecurityToken(); - if(isset($_SERVER['REMOTE_USER'])){ - if (!actionOK('logout')) { + if(isset($_SERVER['REMOTE_USER'])) { + if(!actionOK('logout')) { return false; } $params['do'] = 'logout'; - $type = 'logout'; + $type = 'logout'; } break; case 'register': - if($_SERVER['REMOTE_USER']){ + if($_SERVER['REMOTE_USER']) { return false; } break; case 'resendpwd': - if($_SERVER['REMOTE_USER']){ + if($_SERVER['REMOTE_USER']) { return false; } break; case 'admin': - if(!$INFO['ismanager']){ + if(!$INFO['ismanager']) { return false; } break; @@ -634,21 +683,22 @@ function tpl_get_action($type) { if(!$INFO['ismanager'] || !$REV || !$INFO['writable']) { return false; } - $params['rev'] = $REV; + $params['rev'] = $REV; $params['sectok'] = getSecurityToken(); break; + /** @noinspection PhpMissingBreakStatementInspection */ case 'subscription': - $type = 'subscribe'; + $type = 'subscribe'; $params['do'] = 'subscribe'; case 'subscribe': - if(!$_SERVER['REMOTE_USER']){ + if(!$_SERVER['REMOTE_USER']) { return false; } break; case 'backlink': break; case 'profile': - if(!isset($_SERVER['REMOTE_USER'])){ + if(!isset($_SERVER['REMOTE_USER'])) { return false; } break; @@ -665,14 +715,25 @@ function tpl_get_action($type) { * Wrapper around tpl_button() and tpl_actionlink() * * @author Anika Henke <anika@selfthinker.org> + * @param + * @param bool $link link or form button? + * @param bool $wrapper HTML element wrapper + * @param bool $return return or print + * @param string $pre prefix for links + * @param string $suf suffix for links + * @param string $inner inner HTML for links + * @return bool|string */ -function tpl_action($type,$link=0,$wrapper=false,$return=false,$pre='',$suf='',$inner='') { +function tpl_action($type, $link = false, $wrapper = false, $return = false, $pre = '', $suf = '', $inner = '') { $out = ''; - if ($link) $out .= tpl_actionlink($type,$pre,$suf,$inner,1); - else $out .= tpl_button($type,1); - if ($out && $wrapper) $out = "<$wrapper>$out</$wrapper>"; + if($link) { + $out .= tpl_actionlink($type, $pre, $suf, $inner, 1); + } else { + $out .= tpl_button($type, 1); + } + if($out && $wrapper) $out = "<$wrapper>$out</$wrapper>"; - if ($return) return $out; + if($return) return $out; print $out; return $out ? true : false; } @@ -688,14 +749,17 @@ function tpl_action($type,$link=0,$wrapper=false,$return=false,$pre='',$suf='',$ * autocompletion feature (MSIE and Firefox) * * @author Andreas Gohr <andi@splitbrain.org> + * @param bool $ajax + * @param bool $autocomplete + * @return bool */ -function tpl_searchform($ajax=true,$autocomplete=true){ +function tpl_searchform($ajax = true, $autocomplete = true) { global $lang; global $ACT; global $QUERY; // don't print the search form if search action has been disabled - if (!actionOk('search')) return false; + if(!actionOk('search')) return false; print '<form action="'.wl().'" accept-charset="utf-8" class="search" id="dw__search" method="get"><div class="no">'; print '<input type="hidden" name="do" value="search" />'; @@ -713,8 +777,10 @@ function tpl_searchform($ajax=true,$autocomplete=true){ * Print the breadcrumbs trace * * @author Andreas Gohr <andi@splitbrain.org> + * @param string $sep Separator between entries + * @return bool */ -function tpl_breadcrumbs($sep='•'){ +function tpl_breadcrumbs($sep = '•') { global $lang; global $conf; @@ -725,7 +791,7 @@ function tpl_breadcrumbs($sep='•'){ //reverse crumborder in right-to-left mode, add RLM character to fix heb/eng display mixups if($lang['direction'] == 'rtl') { - $crumbs = array_reverse($crumbs,true); + $crumbs = array_reverse($crumbs, true); $crumbs_sep = ' ‏<span class="bcsep">'.$sep.'</span>‏ '; } else { $crumbs_sep = ' <span class="bcsep">'.$sep.'</span> '; @@ -734,13 +800,13 @@ function tpl_breadcrumbs($sep='•'){ //render crumbs, highlight the last one print '<span class="bchead">'.$lang['breadcrumb'].':</span>'; $last = count($crumbs); - $i = 0; - foreach ($crumbs as $id => $name){ + $i = 0; + foreach($crumbs as $id => $name) { $i++; echo $crumbs_sep; - if ($i == $last) print '<span class="curid">'; - tpl_link(wl($id),hsc($name),'class="breadcrumbs" title="'.$id.'"'); - if ($i == $last) print '</span>'; + if($i == $last) print '<span class="curid">'; + tpl_link(wl($id), hsc($name), 'class="breadcrumbs" title="'.$id.'"'); + if($i == $last) print '</span>'; } return true; } @@ -756,8 +822,10 @@ function tpl_breadcrumbs($sep='•'){ * @author Sean Coates <sean@caedmon.net> * @author <fredrik@averpil.com> * @todo May behave strangely in RTL languages + * @param string $sep Separator between entries + * @return bool */ -function tpl_youarehere($sep=' » '){ +function tpl_youarehere($sep = ' » ') { global $conf; global $ID; global $lang; @@ -775,10 +843,10 @@ function tpl_youarehere($sep=' » '){ // print intermediate namespace links $part = ''; - for($i=0; $i<$count - 1; $i++){ + for($i = 0; $i < $count - 1; $i++) { $part .= $parts[$i].':'; $page = $part; - if ($page == $conf['start']) continue; // Skip startpage + if($page == $conf['start']) continue; // Skip startpage // output echo $sep; @@ -786,10 +854,10 @@ function tpl_youarehere($sep=' » '){ } // print current page, skipping start page, skipping for namespace index - resolve_pageid('',$page,$exists); - if(isset($page) && $page==$part.$parts[$i]) return; + resolve_pageid('', $page, $exists); + if(isset($page) && $page == $part.$parts[$i]) return true; $page = $part.$parts[$i]; - if($page == $conf['start']) return; + if($page == $conf['start']) return true; echo $sep; tpl_pagelink($page); return true; @@ -802,11 +870,12 @@ function tpl_youarehere($sep=' » '){ * Could be enhanced with a profile link in future? * * @author Andreas Gohr <andi@splitbrain.org> + * @return bool */ -function tpl_userinfo(){ +function tpl_userinfo() { global $lang; global $INFO; - if(isset($_SERVER['REMOTE_USER'])){ + if(isset($_SERVER['REMOTE_USER'])) { print $lang['loggedinas'].': '.hsc($INFO['userinfo']['name']).' ('.hsc($_SERVER['REMOTE_USER']).')'; return true; } @@ -817,51 +886,55 @@ function tpl_userinfo(){ * Print some info about the current page * * @author Andreas Gohr <andi@splitbrain.org> + * @param bool $ret return content instead of printing it + * @return bool|string */ -function tpl_pageinfo($ret=false){ +function tpl_pageinfo($ret = false) { global $conf; global $lang; global $INFO; global $ID; // return if we are not allowed to view the page - if (!auth_quickaclcheck($ID)) { return false; } + if(!auth_quickaclcheck($ID)) { + return false; + } // prepare date and path $fn = $INFO['filepath']; - if(!$conf['fullpath']){ - if($INFO['rev']){ - $fn = str_replace(fullpath($conf['olddir']).'/','',$fn); - }else{ - $fn = str_replace(fullpath($conf['datadir']).'/','',$fn); + if(!$conf['fullpath']) { + if($INFO['rev']) { + $fn = str_replace(fullpath($conf['olddir']).'/', '', $fn); + } else { + $fn = str_replace(fullpath($conf['datadir']).'/', '', $fn); } } - $fn = utf8_decodeFN($fn); + $fn = utf8_decodeFN($fn); $date = dformat($INFO['lastmod']); // print it - if($INFO['exists']){ + if($INFO['exists']) { $out = ''; $out .= $fn; $out .= ' · '; $out .= $lang['lastmod']; $out .= ': '; $out .= $date; - if($INFO['editor']){ + if($INFO['editor']) { $out .= ' '.$lang['by'].' '; $out .= editorinfo($INFO['editor']); - }else{ + } else { $out .= ' ('.$lang['external_edit'].')'; } - if($INFO['locked']){ + if($INFO['locked']) { $out .= ' · '; $out .= $lang['lockedby']; $out .= ': '; $out .= editorinfo($INFO['locked']); } - if($ret){ + if($ret) { return $out; - }else{ + } else { echo $out; return true; } @@ -876,21 +949,23 @@ function tpl_pageinfo($ret=false){ * the given ID is used. * * @author Andreas Gohr <andi@splitbrain.org> + * @param string $id page id + * @param bool $ret return content instead of printing + * @return bool|string */ -function tpl_pagetitle($id=null, $ret=false){ - global $conf; - if(is_null($id)){ +function tpl_pagetitle($id = null, $ret = false) { + if(is_null($id)) { global $ID; $id = $ID; } $name = $id; - if (useHeading('navigation')) { + if(useHeading('navigation')) { $title = p_get_first_heading($id); - if ($title) $name = $title; + if($title) $name = $title; } - if ($ret) { + if($ret) { return hsc($name); } else { print hsc($name); @@ -911,8 +986,12 @@ function tpl_pagetitle($id=null, $ret=false){ * Only allowed in: detail.php * * @author Andreas Gohr <andi@splitbrain.org> + * @param array $tags tags to try + * @param string $alt alternative output if no data was found + * @param null $src the image src, uses global $SRC if not given + * @return string */ -function tpl_img_getTag($tags,$alt='',$src=null){ +function tpl_img_getTag($tags, $alt = '', $src = null) { // Init Exif Reader global $SRC; @@ -931,66 +1010,72 @@ function tpl_img_getTag($tags,$alt='',$src=null){ * * Only allowed in: detail.php * + * @triggers TPL_IMG_DISPLAY * @param $maxwidth int - maximal width of the image * @param $maxheight int - maximal height of the image * @param $link bool - link to the orginal size? * @param $params array - additional image attributes + * @return mixed Result of TPL_IMG_DISPLAY */ -function tpl_img($maxwidth=0,$maxheight=0,$link=true,$params=null){ +function tpl_img($maxwidth = 0, $maxheight = 0, $link = true, $params = null) { global $IMG; + global $INPUT; $w = tpl_img_getTag('File.Width'); $h = tpl_img_getTag('File.Height'); //resize to given max values $ratio = 1; - if($w >= $h){ - if($maxwidth && $w >= $maxwidth){ - $ratio = $maxwidth/$w; - }elseif($maxheight && $h > $maxheight){ - $ratio = $maxheight/$h; + if($w >= $h) { + if($maxwidth && $w >= $maxwidth) { + $ratio = $maxwidth / $w; + } elseif($maxheight && $h > $maxheight) { + $ratio = $maxheight / $h; } - }else{ - if($maxheight && $h >= $maxheight){ - $ratio = $maxheight/$h; - }elseif($maxwidth && $w > $maxwidth){ - $ratio = $maxwidth/$w; + } else { + if($maxheight && $h >= $maxheight) { + $ratio = $maxheight / $h; + } elseif($maxwidth && $w > $maxwidth) { + $ratio = $maxwidth / $w; } } - if($ratio){ - $w = floor($ratio*$w); - $h = floor($ratio*$h); + if($ratio) { + $w = floor($ratio * $w); + $h = floor($ratio * $h); } //prepare URLs - $url=ml($IMG,array('cache'=>$_REQUEST['cache']),true,'&'); - $src=ml($IMG,array('cache'=>$_REQUEST['cache'],'w'=>$w,'h'=>$h),true,'&'); + $url = ml($IMG, array('cache'=> $INPUT->str('cache')), true, '&'); + $src = ml($IMG, array('cache'=> $INPUT->str('cache'), 'w'=> $w, 'h'=> $h), true, '&'); //prepare attributes - $alt=tpl_img_getTag('Simple.Title'); - if(is_null($params)){ + $alt = tpl_img_getTag('Simple.Title'); + if(is_null($params)) { $p = array(); - }else{ + } else { $p = $params; } - if($w) $p['width'] = $w; + if($w) $p['width'] = $w; if($h) $p['height'] = $h; - $p['class'] = 'img_detail'; - if($alt){ + $p['class'] = 'img_detail'; + if($alt) { $p['alt'] = $alt; $p['title'] = $alt; - }else{ + } else { $p['alt'] = ''; } $p['src'] = $src; - $data = array('url'=>($link?$url:null), 'params'=>$p); - return trigger_event('TPL_IMG_DISPLAY',$data,'_tpl_img_action',true); + $data = array('url'=> ($link ? $url : null), 'params'=> $p); + return trigger_event('TPL_IMG_DISPLAY', $data, '_tpl_img_action', true); } /** * Default action for TPL_IMG_DISPLAY + * + * @param array $data + * @return bool */ -function _tpl_img_action($data, $param=null) { +function _tpl_img_action($data) { global $lang; $p = buildAttributes($data['params']); @@ -1005,38 +1090,42 @@ function _tpl_img_action($data, $param=null) { * * Should be called somewhere at the very end of the main.php * template + * + * @return bool */ -function tpl_indexerWebBug(){ +function tpl_indexerWebBug() { global $ID; - $p = array(); + $p = array(); $p['src'] = DOKU_BASE.'lib/exe/indexer.php?id='.rawurlencode($ID). '&'.time(); $p['width'] = 2; //no more 1x1 px image because we live in times of ad blockers... $p['height'] = 1; $p['alt'] = ''; - $att = buildAttributes($p); + $att = buildAttributes($p); print "<img $att />"; return true; } -// configuration methods /** * tpl_getConf($id) * * use this function to access template configuration variables + * + * @param string $id + * @return string */ -function tpl_getConf($id){ +function tpl_getConf($id) { global $conf; static $tpl_configloaded = false; $tpl = $conf['template']; - if (!$tpl_configloaded){ + if(!$tpl_configloaded) { $tconf = tpl_loadConfig(); - if ($tconf !== false){ - foreach ($tconf as $key => $value){ - if (isset($conf['tpl'][$tpl][$key])) continue; + if($tconf !== false) { + foreach($tconf as $key => $value) { + if(isset($conf['tpl'][$tpl][$key])) continue; $conf['tpl'][$tpl][$key] = $value; } $tpl_configloaded = true; @@ -1048,15 +1137,18 @@ function tpl_getConf($id){ /** * tpl_loadConfig() + * * reads all template configuration variables * this function is automatically called by tpl_getConf() + * + * @return array */ -function tpl_loadConfig(){ +function tpl_loadConfig() { $file = tpl_incdir().'/conf/default.php'; $conf = array(); - if (!@file_exists($file)) return false; + if(!@file_exists($file)) return false; // load default config file include($file); @@ -1070,18 +1162,18 @@ function tpl_loadConfig(){ * * use this function to access template language variables */ -function tpl_getLang($id){ +function tpl_getLang($id) { static $lang = array(); - if (count($lang) === 0){ + if(count($lang) === 0) { $path = tpl_incdir().'lang/'; $lang = array(); - global $conf; // definitely don't invoke "global $lang" + global $conf; // definitely don't invoke "global $lang" // don't include once @include($path.'en/lang.php'); - if ($conf['lang'] != 'en') @include($path.$conf['lang'].'/lang.php'); + if($conf['lang'] != 'en') @include($path.$conf['lang'].'/lang.php'); } return $lang[$id]; @@ -1100,44 +1192,41 @@ function tpl_getLang($id){ * @param bool $fromajax - set true when calling this function via ajax * @author Andreas Gohr <andi@splitbrain.org> */ -function tpl_mediaContent($fromajax=false){ +function tpl_mediaContent($fromajax = false) { global $IMG; global $AUTH; global $INUSE; global $NS; global $JUMPTO; + global $INPUT; - if(is_array($_REQUEST['do'])){ - $do = array_shift(array_keys($_REQUEST['do'])); - }else{ - $do = $_REQUEST['do']; - } - if(in_array($do,array('save','cancel'))) $do = ''; + $do = $INPUT->extract('do')->str('do'); + if(in_array($do, array('save', 'cancel'))) $do = ''; - if(!$do){ - if($_REQUEST['edit']){ + if(!$do) { + if($INPUT->bool('edit')) { $do = 'metaform'; - }elseif(is_array($INUSE)){ + } elseif(is_array($INUSE)) { $do = 'filesinuse'; - }else{ + } else { $do = 'filelist'; } } // output the content pane, wrapped in an event. if(!$fromajax) ptln('<div id="media__content">'); - $data = array( 'do' => $do); - $evt = new Doku_Event('MEDIAMANAGER_CONTENT_OUTPUT', $data); - if ($evt->advise_before()) { + $data = array('do' => $do); + $evt = new Doku_Event('MEDIAMANAGER_CONTENT_OUTPUT', $data); + if($evt->advise_before()) { $do = $data['do']; - if($do == 'filesinuse'){ - media_filesinuse($INUSE,$IMG); - }elseif($do == 'filelist'){ - media_filelist($NS,$AUTH,$JUMPTO); - }elseif($do == 'searchlist'){ - media_searchlist($_REQUEST['q'],$NS,$AUTH); - }else{ - msg('Unknown action '.hsc($do),-1); + if($do == 'filesinuse') { + media_filesinuse($INUSE, $IMG); + } elseif($do == 'filelist') { + media_filelist($NS, $AUTH, $JUMPTO); + } elseif($do == 'searchlist') { + media_searchlist($INPUT->str('q'), $NS, $AUTH); + } else { + msg('Unknown action '.hsc($do), -1); } } $evt->advise_after(); @@ -1153,37 +1242,38 @@ function tpl_mediaContent($fromajax=false){ * * @author Kate Arzamastseva <pshns@ukr.net> */ -function tpl_mediaFileList(){ +function tpl_mediaFileList() { global $AUTH; global $NS; global $JUMPTO; global $lang; + global $INPUT; - $opened_tab = $_REQUEST['tab_files']; - if (!$opened_tab || !in_array($opened_tab, array('files', 'upload', 'search'))) $opened_tab = 'files'; - if ($_REQUEST['mediado'] == 'update') $opened_tab = 'upload'; + $opened_tab = $INPUT->str('tab_files'); + if(!$opened_tab || !in_array($opened_tab, array('files', 'upload', 'search'))) $opened_tab = 'files'; + if($INPUT->str('mediado') == 'update') $opened_tab = 'upload'; - echo '<h2 class="a11y">' . $lang['mediaselect'] . '</h2>'.NL; + echo '<h2 class="a11y">'.$lang['mediaselect'].'</h2>'.NL; media_tabs_files($opened_tab); echo '<div class="panelHeader">'.NL; echo '<h3>'; $tabTitle = ($NS) ? $NS : '['.$lang['mediaroot'].']'; - printf($lang['media_' . $opened_tab], '<strong>'.hsc($tabTitle).'</strong>'); + printf($lang['media_'.$opened_tab], '<strong>'.hsc($tabTitle).'</strong>'); echo '</h3>'.NL; - if ($opened_tab === 'search' || $opened_tab === 'files') { + if($opened_tab === 'search' || $opened_tab === 'files') { media_tab_files_options(); } echo '</div>'.NL; echo '<div class="panelContent">'.NL; - if ($opened_tab == 'files') { - media_tab_files($NS,$AUTH,$JUMPTO); - } elseif ($opened_tab == 'upload') { - media_tab_upload($NS,$AUTH,$JUMPTO); - } elseif ($opened_tab == 'search') { - media_tab_search($NS,$AUTH); + if($opened_tab == 'files') { + media_tab_files($NS, $AUTH, $JUMPTO); + } elseif($opened_tab == 'upload') { + media_tab_upload($NS, $AUTH, $JUMPTO); + } elseif($opened_tab == 'search') { + media_tab_search($NS, $AUTH); } echo '</div>'.NL; } @@ -1196,55 +1286,55 @@ function tpl_mediaFileList(){ * * @author Kate Arzamastseva <pshns@ukr.net> */ -function tpl_mediaFileDetails($image, $rev){ - global $AUTH, $NS, $conf, $DEL, $lang; +function tpl_mediaFileDetails($image, $rev) { + global $AUTH, $NS, $conf, $DEL, $lang, $INPUT; $removed = (!file_exists(mediaFN($image)) && file_exists(mediaMetaFN($image, '.changes')) && $conf['mediarevisions']); - if (!$image || (!file_exists(mediaFN($image)) && !$removed) || $DEL) return ''; - if ($rev && !file_exists(mediaFN($image, $rev))) $rev = false; - if (isset($NS) && getNS($image) != $NS) return ''; - $do = $_REQUEST['mediado']; + if(!$image || (!file_exists(mediaFN($image)) && !$removed) || $DEL) return; + if($rev && !file_exists(mediaFN($image, $rev))) $rev = false; + if(isset($NS) && getNS($image) != $NS) return; + $do = $INPUT->str('mediado'); - $opened_tab = $_REQUEST['tab_details']; + $opened_tab = $INPUT->str('tab_details'); $tab_array = array('view'); - list($ext, $mime) = mimetype($image); - if ($mime == 'image/jpeg') { + list(, $mime) = mimetype($image); + if($mime == 'image/jpeg') { $tab_array[] = 'edit'; } - if ($conf['mediarevisions']) { + if($conf['mediarevisions']) { $tab_array[] = 'history'; } - if (!$opened_tab || !in_array($opened_tab, $tab_array)) $opened_tab = 'view'; - if ($_REQUEST['edit']) $opened_tab = 'edit'; - if ($do == 'restore') $opened_tab = 'view'; + if(!$opened_tab || !in_array($opened_tab, $tab_array)) $opened_tab = 'view'; + if($INPUT->bool('edit')) $opened_tab = 'edit'; + if($do == 'restore') $opened_tab = 'view'; media_tabs_details($image, $opened_tab); echo '<div class="panelHeader"><h3>'; - list($ext,$mime,$dl) = mimetype($image,false); - $class = preg_replace('/[^_\-a-z0-9]+/i','_',$ext); - $class = 'select mediafile mf_'.$class; - $tabTitle = '<strong class="'.$class.'"><a href="'.ml($image).'" title="'.$lang['mediaview'].'">'.$image.'</a>'.'</strong>'; - if ($opened_tab === 'view' && $rev) { + list($ext) = mimetype($image, false); + $class = preg_replace('/[^_\-a-z0-9]+/i', '_', $ext); + $class = 'select mediafile mf_'.$class; + $tabTitle = '<strong><a href="'.ml($image).'" class="'.$class.'" title="'.$lang['mediaview'].'">'.$image.'</a>'.'</strong>'; + if($opened_tab === 'view' && $rev) { printf($lang['media_viewold'], $tabTitle, dformat($rev)); } else { - printf($lang['media_' . $opened_tab], $tabTitle); + printf($lang['media_'.$opened_tab], $tabTitle); } echo '</h3></div>'.NL; echo '<div class="panelContent">'.NL; - if ($opened_tab == 'view') { + if($opened_tab == 'view') { media_tab_view($image, $NS, $AUTH, $rev); - } elseif ($opened_tab == 'edit' && !$removed) { + } elseif($opened_tab == 'edit' && !$removed) { media_tab_edit($image, $NS, $AUTH); - } elseif ($opened_tab == 'history' && $conf['mediarevisions']) { - media_tab_history($image,$NS,$AUTH); + } elseif($opened_tab == 'history' && $conf['mediarevisions']) { + media_tab_history($image, $NS, $AUTH); } echo '</div>'.NL; @@ -1257,14 +1347,13 @@ function tpl_mediaFileDetails($image, $rev){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function tpl_mediaTree(){ +function tpl_mediaTree() { global $NS; ptln('<div id="media__tree">'); media_nstree($NS); ptln('</div>'); } - /** * Print a dropdown menu with all DokuWiki actions * @@ -1272,16 +1361,12 @@ function tpl_mediaTree(){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function tpl_actiondropdown($empty='',$button='>'){ +function tpl_actiondropdown($empty = '', $button = '>') { global $ID; - global $INFO; global $REV; - global $ACT; - global $conf; global $lang; - global $auth; - echo '<form action="' . DOKU_SCRIPT . '" method="post" accept-charset="utf-8">'; + echo '<form action="'.DOKU_SCRIPT.'" method="post" accept-charset="utf-8">'; echo '<div class="no">'; echo '<input type="hidden" name="id" value="'.$ID.'" />'; if($REV) echo '<input type="hidden" name="rev" value="'.$REV.'" />'; @@ -1291,45 +1376,45 @@ function tpl_actiondropdown($empty='',$button='>'){ echo '<option value="">'.$empty.'</option>'; echo '<optgroup label="'.$lang['page_tools'].'">'; - $act = tpl_get_action('edit'); - if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; + $act = tpl_get_action('edit'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; - $act = tpl_get_action('revert'); - if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; + $act = tpl_get_action('revert'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; - $act = tpl_get_action('revisions'); - if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; + $act = tpl_get_action('revisions'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; - $act = tpl_get_action('backlink'); - if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; + $act = tpl_get_action('backlink'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; - $act = tpl_get_action('subscribe'); - if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; - echo '</optgroup>'; + $act = tpl_get_action('subscribe'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; + echo '</optgroup>'; echo '<optgroup label="'.$lang['site_tools'].'">'; - $act = tpl_get_action('recent'); - if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; + $act = tpl_get_action('recent'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; - $act = tpl_get_action('media'); - if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; + $act = tpl_get_action('media'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; - $act = tpl_get_action('index'); - if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; + $act = tpl_get_action('index'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; echo '</optgroup>'; echo '<optgroup label="'.$lang['user_tools'].'">'; - $act = tpl_get_action('login'); - if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; + $act = tpl_get_action('login'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; - $act = tpl_get_action('register'); - if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; + $act = tpl_get_action('register'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; - $act = tpl_get_action('profile'); - if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; + $act = tpl_get_action('profile'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; - $act = tpl_get_action('admin'); - if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; + $act = tpl_get_action('admin'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; echo '</optgroup>'; echo '</select>'; @@ -1342,24 +1427,26 @@ function tpl_actiondropdown($empty='',$button='>'){ * Print a informational line about the used license * * @author Andreas Gohr <andi@splitbrain.org> - * @param string $img - print image? (|button|badge) - * @param bool $return - when true don't print, but return HTML - * @param bool $wrap - wrap in div with class="license"? + * @param string $img print image? (|button|badge) + * @param bool $imgonly skip the textual description? + * @param bool $return when true don't print, but return HTML + * @param bool $wrap wrap in div with class="license"? + * @return string */ -function tpl_license($img='badge',$imgonly=false,$return=false,$wrap=true){ +function tpl_license($img = 'badge', $imgonly = false, $return = false, $wrap = true) { global $license; global $conf; global $lang; if(!$conf['license']) return ''; if(!is_array($license[$conf['license']])) return ''; - $lic = $license[$conf['license']]; + $lic = $license[$conf['license']]; $target = ($conf['target']['extern']) ? ' target="'.$conf['target']['extern'].'"' : ''; $out = ''; - if($wrap) $out .= '<div class="license">'; - if($img){ + if($wrap) $out .= '<div class="license">'; + if($img) { $src = license_img($img); - if($src){ + if($src) { $out .= '<a href="'.$lic['url'].'" rel="license"'.$target; $out .= '><img src="'.DOKU_BASE.$src.'" alt="'.$lic['name'].'" /></a>'; if(!$imgonly) $out .= ' '; @@ -1374,23 +1461,24 @@ function tpl_license($img='badge',$imgonly=false,$return=false,$wrap=true){ if($return) return $out; echo $out; + return ''; } - /** - * Includes the rendered XHTML of a given page + * Includes the rendered HTML of a given page * * This function is useful to populate sidebars or similar features in a * template */ -function tpl_include_page($pageid,$print=true){ +function tpl_include_page($pageid, $print = true, $propagate = false) { global $ID; global $TOC; - $oldid = $ID; + + if ($propagate) $pageid = page_findnearest($pageid); + $oldtoc = $TOC; - $html = p_wiki_xhtml($pageid,'',false); - $ID = $oldid; - $TOC = $oldtoc; + $html = p_wiki_xhtml($pageid, '', false); + $TOC = $oldtoc; if(!$print) return $html; echo $html; @@ -1398,17 +1486,6 @@ function tpl_include_page($pageid,$print=true){ } /** - * Include the sidebar, will check current namespaces first - */ -function tpl_sidebar($print=true){ - global $conf; - - $sidebar = page_findnearest($conf['sidebar']); - if($sidebar) return tpl_include_page($sidebar, $print); - return ''; -} - -/** * Display the subscribe form * * @author Adrian Lang <lang@cosmocode.de> @@ -1418,18 +1495,18 @@ function tpl_subscribe() { global $ID; global $lang; global $conf; - $stime_days = $conf['subscribe_time']/60/60/24; + $stime_days = $conf['subscribe_time'] / 60 / 60 / 24; echo p_locale_xhtml('subscr_form'); - echo '<h2>' . $lang['subscr_m_current_header'] . '</h2>'; + echo '<h2>'.$lang['subscr_m_current_header'].'</h2>'; echo '<div class="level2">'; - if ($INFO['subscribed'] === false) { - echo '<p>' . $lang['subscr_m_not_subscribed'] . '</p>'; + if($INFO['subscribed'] === false) { + echo '<p>'.$lang['subscr_m_not_subscribed'].'</p>'; } else { echo '<ul>'; foreach($INFO['subscribed'] as $sub) { echo '<li><div class="li">'; - if ($sub['target'] !== $ID) { + if($sub['target'] !== $ID) { echo '<code class="ns">'.hsc(prettyprint_id($sub['target'])).'</code>'; } else { echo '<code class="page">'.hsc(prettyprint_id($sub['target'])).'</code>'; @@ -1438,32 +1515,36 @@ function tpl_subscribe() { if(!$sstl) $sstl = hsc($sub['style']); echo ' ('.$sstl.') '; - echo '<a href="' . wl($ID, - array('do'=>'subscribe', - 'sub_target'=>$sub['target'], - 'sub_style'=>$sub['style'], - 'sub_action'=>'unsubscribe', - 'sectok' => getSecurityToken())) . - '" class="unsubscribe">'.$lang['subscr_m_unsubscribe'] . - '</a></div></li>'; + echo '<a href="'.wl( + $ID, + array( + 'do' => 'subscribe', + 'sub_target'=> $sub['target'], + 'sub_style' => $sub['style'], + 'sub_action'=> 'unsubscribe', + 'sectok' => getSecurityToken() + ) + ). + '" class="unsubscribe">'.$lang['subscr_m_unsubscribe']. + '</a></div></li>'; } echo '</ul>'; } echo '</div>'; // Add new subscription form - echo '<h2>' . $lang['subscr_m_new_header'] . '</h2>'; + echo '<h2>'.$lang['subscr_m_new_header'].'</h2>'; echo '<div class="level2">'; - $ns = getNS($ID).':'; + $ns = getNS($ID).':'; $targets = array( - $ID => '<code class="page">'.prettyprint_id($ID).'</code>', - $ns => '<code class="ns">'.prettyprint_id($ns).'</code>', - ); - $styles = array( - 'every' => $lang['subscr_style_every'], - 'digest' => sprintf($lang['subscr_style_digest'], $stime_days), - 'list' => sprintf($lang['subscr_style_list'], $stime_days), - ); + $ID => '<code class="page">'.prettyprint_id($ID).'</code>', + $ns => '<code class="ns">'.prettyprint_id($ns).'</code>', + ); + $styles = array( + 'every' => $lang['subscr_style_every'], + 'digest' => sprintf($lang['subscr_style_digest'], $stime_days), + 'list' => sprintf($lang['subscr_style_list'], $stime_days), + ); $form = new Doku_Form(array('id' => 'subscribe__form')); $form->startFieldset($lang['subscr_m_subscribe']); @@ -1486,7 +1567,7 @@ function tpl_subscribe() { * * @author Andreas Gohr <andi@splitbrain.org> */ -function tpl_flush(){ +function tpl_flush() { ob_flush(); flush(); } @@ -1498,18 +1579,22 @@ function tpl_flush(){ * file, otherwise it is assumed to be relative to the current template * * @param array $search locations to look at - * @param bool $abs if to use absolute URL - * @param arrayref $imginfo filled with getimagesize() + * @param bool $abs if to use absolute URL + * @param array &$imginfo filled with getimagesize() + * @return string * @author Andreas Gohr <andi@splitbrain.org> */ -function tpl_getMediaFile($search, $abs=false, &$imginfo=null){ +function tpl_getMediaFile($search, $abs = false, &$imginfo = null) { + $img = ''; + $file = ''; + $ismedia = false; // loop through candidates until a match was found: - foreach($search as $img){ - if(substr($img,0,1) == ':'){ + foreach($search as $img) { + if(substr($img, 0, 1) == ':') { $file = mediaFN($img); $ismedia = true; - }else{ - $file = tpl_incdir().$img; + } else { + $file = tpl_incdir().$img; $ismedia = false; } @@ -1517,14 +1602,14 @@ function tpl_getMediaFile($search, $abs=false, &$imginfo=null){ } // fetch image data if requested - if(!is_null($imginfo)){ + if(!is_null($imginfo)) { $imginfo = getimagesize($file); } // build URL - if($ismedia){ + if($ismedia) { $url = ml($img, '', true, '', $abs); - }else{ + } else { $url = tpl_basedir().$img; if($abs) $url = DOKU_URL.substr($url, strlen(DOKU_REL)); } @@ -1548,13 +1633,13 @@ function tpl_getMediaFile($search, $abs=false, &$imginfo=null){ * @author Anika Henke <anika@selfthinker.org> * @author Andreas Gohr <andi@splitbrain.org> */ -function tpl_includeFile($file){ +function tpl_includeFile($file) { global $config_cascade; - foreach (array('protected','local','default') as $config_group) { - if (empty($config_cascade['main'][$config_group])) continue; - foreach ($config_cascade['main'][$config_group] as $conf_file) { + foreach(array('protected', 'local', 'default') as $config_group) { + if(empty($config_cascade['main'][$config_group])) continue; + foreach($config_cascade['main'][$config_group] as $conf_file) { $dir = dirname($conf_file); - if(file_exists("$dir/$file")){ + if(file_exists("$dir/$file")) { include("$dir/$file"); return; } @@ -1563,7 +1648,7 @@ function tpl_includeFile($file){ // still here? try the template dir $file = tpl_incdir().$file; - if(file_exists($file)){ + if(file_exists($file)) { include($file); } } @@ -1575,7 +1660,7 @@ function tpl_includeFile($file){ * @deprecated Use tpl_getMediaFile() instead * @author Anika Henke <anika@selfthinker.org> */ -function tpl_getFavicon($abs=false, $fileName='favicon.ico') { +function tpl_getFavicon($abs = false, $fileName = 'favicon.ico') { $look = array(":wiki:$fileName", ":$fileName", "images/$fileName"); return tpl_getMediaFile($look, $abs); } @@ -1583,21 +1668,22 @@ function tpl_getFavicon($abs=false, $fileName='favicon.ico') { /** * Returns <link> tag for various icon types (favicon|mobile|generic) * - * @param array $types - list of icon types to display (favicon|mobile|generic) * @author Anika Henke <anika@selfthinker.org> + * @param array $types - list of icon types to display (favicon|mobile|generic) + * @return string */ -function tpl_favicon($types=array('favicon')) { +function tpl_favicon($types = array('favicon')) { $return = ''; - foreach ($types as $type) { + foreach($types as $type) { switch($type) { case 'favicon': $look = array(':wiki:favicon.ico', ':favicon.ico', 'images/favicon.ico'); $return .= '<link rel="shortcut icon" href="'.tpl_getMediaFile($look).'" />'.NL; break; case 'mobile': - $look = array(':wiki:apple-touch-icon.png', ':apple-touch-icon.png', 'images/apple-touch-icon.ico'); + $look = array(':wiki:apple-touch-icon.png', ':apple-touch-icon.png', 'images/apple-touch-icon.png'); $return .= '<link rel="apple-touch-icon" href="'.tpl_getMediaFile($look).'" />'.NL; break; case 'generic': @@ -1617,14 +1703,15 @@ function tpl_favicon($types=array('favicon')) { * @author Kate Arzamastseva <pshns@ukr.net> */ function tpl_media() { - global $DEL, $NS, $IMG, $AUTH, $JUMPTO, $REV, $lang, $fullscreen, $conf; + global $NS, $IMG, $JUMPTO, $REV, $lang, $fullscreen, $INPUT; $fullscreen = true; require_once DOKU_INC.'lib/exe/mediamanager.php'; - if ($_REQUEST['image']) $image = cleanID($_REQUEST['image']); - if (isset($IMG)) $image = $IMG; - if (isset($JUMPTO)) $image = $JUMPTO; - if (isset($REV) && !$JUMPTO) $rev = $REV; + $rev = ''; + $image = cleanID($INPUT->str('image')); + if(isset($IMG)) $image = $IMG; + if(isset($JUMPTO)) $image = $JUMPTO; + if(isset($REV) && !$JUMPTO) $rev = $REV; echo '<div id="mediamanager__page">'.NL; echo '<h1>'.$lang['btn_media'].'</h1>'.NL; |