From ac7a515f564d088e043bf190c9a4ced1d5c309db Mon Sep 17 00:00:00 2001 From: Andreas Gohr <andi@splitbrain.org> Date: Thu, 9 Aug 2012 23:32:58 +0200 Subject: [PATCH] code cleanup in template.php * make use of $INPUT * clean up coding style * add phpdoc comments --- inc/template.php | 925 ++++++++++++++++++++++++++--------------------- 1 file changed, 511 insertions(+), 414 deletions(-) diff --git a/inc/template.php b/inc/template.php index 7d09f7dd4..2dc58b36d 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[*/". $attr['_data']. "\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; + 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) { + 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,23 @@ 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 * * 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) { global $ID; global $TOC; $oldid = $ID; $oldtoc = $TOC; - $html = p_wiki_xhtml($pageid,'',false); - $ID = $oldid; - $TOC = $oldtoc; + $html = p_wiki_xhtml($pageid, '', false); + $ID = $oldid; + $TOC = $oldtoc; if(!$print) return $html; echo $html; @@ -1400,7 +1487,7 @@ function tpl_include_page($pageid,$print=true){ /** * Include the sidebar, will check current namespaces first */ -function tpl_sidebar($print=true){ +function tpl_sidebar($print = true) { global $conf; $sidebar = page_findnearest($conf['sidebar']); @@ -1418,18 +1505,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 +1525,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 +1577,7 @@ function tpl_subscribe() { * * @author Andreas Gohr <andi@splitbrain.org> */ -function tpl_flush(){ +function tpl_flush() { ob_flush(); flush(); } @@ -1498,18 +1589,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 +1612,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 +1643,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 +1658,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 +1670,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,14 +1678,15 @@ 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'); @@ -1617,14 +1713,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; -- GitLab