diff options
Diffstat (limited to 'inc/format.php.bak')
-rw-r--r-- | inc/format.php.bak | 593 |
1 files changed, 0 insertions, 593 deletions
diff --git a/inc/format.php.bak b/inc/format.php.bak deleted file mode 100644 index 0a20b566c..000000000 --- a/inc/format.php.bak +++ /dev/null @@ -1,593 +0,0 @@ -<?php -/** - * link format functions - * - * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) - * @author Andreas Gohr <andi@splitbrain.org> - * @deprecated part of the XHTML renderer - */ - -trigger_error('deprecated parser.php included'); - - if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../').'/'); - require_once(DOKU_INC.'conf/dokuwiki.php'); - require_once(DOKU_INC.'inc/common.php'); - - -/** - * Assembles all parts defined by the link formater below - * Returns HTML for the link - * - * @author Andreas Gohr <andi@splitbrain.org> - */ -function format_link_build($link){ - //make sure the url is XHTML compliant (skip mailto) - if(substr($link['url'],0,7) != 'mailto:'){ - $link['url'] = str_replace('&','&',$link['url']); - $link['url'] = str_replace('&amp;','&',$link['url']); - } - //remove double encodings in titles - $link['title'] = str_replace('&amp;','&',$link['title']); - - $ret = ''; - $ret .= $link['pre']; - $ret .= '<a href="'.$link['url'].'"'; - if($link['class']) $ret .= ' class="'.$link['class'].'"'; - if($link['target']) $ret .= ' target="'.$link['target'].'"'; - if($link['title']) $ret .= ' title="'.$link['title'].'"'; - if($link['style']) $ret .= ' style="'.$link['style'].'"'; - if($link['more']) $ret .= ' '.$link['more']; - $ret .= '>'; - $ret .= $link['name']; - $ret .= '</a>'; - $ret .= $link['suf']; - return $ret; -} - -/** - * Link Formaters - * - * Each of these functions need to set - * - * $link['url'] URL to use in href="" - * $link['name'] HTML to enclose in <a> with proper special char encoding - * $link['class'] CSS class to set on link - * $link['target'] which target to use (blank) for current window - * $link['style'] Additonal style attribute set with style="" - * $link['title'] Title to set with title="" - * $link['pre'] HTML to prepend to link - * $link['suf'] HTML to append to link - * $link['more'] Additonal HTML to include into the anchortag - * - */ - -/** - * format wiki links - * - * @author Andreas Gohr <andi@splitbrain.org> - */ -function format_link_wiki($link){ - global $conf; - global $ID; //we use this to get the current namespace - //obvious setup - $link['target'] = $conf['target']['wiki']; - $link['style'] = ''; - $link['pre'] = ''; - $link['suf'] = ''; - $link['more'] = 'onclick="return svchk()" onkeypress="return svchk()"'; - - $ns = getNS($ID); - - //if links starts with . add current namespace - if(strpos($link['url'],'.')===0){ - $link['url'] = $ns.':'.substr($link['url'],1); - } - - //if link contains no namespace. add current namespace (if any) - if($ns !== false && strpos($link['url'],':') === false){ - $link['url'] = $ns.':'.$link['url']; - } - - //keep hashlink if exists - list($link['url'],$hash) = split('#',$link['url'],2); - $hash = cleanID($hash); - - $file = wikiFN($link['url']); - $url = cleanID($link['url']); - - //check alternative plural/nonplural form - if(!@file_exists($file) && $conf['autoplural']){ - if(substr($url,-1) == 's'){ - $try = substr($url,0,-1); - }else{ - $try = $url.'s'; - } - $tryfile = wikiFN($try); - if(@file_exists($tryfile)){ - $file = $tryfile; - $url = $try; - } - } - - //set class and name depending on file existence and content - if(@file_exists($file)){ - $link['class']="wikilink1"; - if ($conf['useheading'] && empty($link['name'])) { - $hl = getFirstHeading(io_readFile($file)); - if ($hl) $link['name'] = $hl; - } - }else{ - $link['class']="wikilink2"; - } - - //if no name set yet, use (unclean) link without namespace - if(empty($link['name'])){ - if($conf['useslash']){ - $nssep = '[:;/]'; - }else{ - $nssep = '[:;]'; - } - $link['name'] = preg_replace('!.*'.$nssep.'!','',$link['url']); - } - $link['name'] = htmlspecialchars($link['name']); - - //set title - $link['title'] = $url; - - //construct the full link - $link['url'] = wl($url); - - //add hash if exists - if($hash) $link['url'] .= '#'.$hash; - - return $link; -} - -/** - * format external URLs - * - * @author Andreas Gohr <andi@splitbrain.org> - */ -function format_link_externalurl($link){ - global $conf; - //simple setup - $link['class'] = 'urlextern'; - $link['target'] = $conf['target']['extern']; - $link['pre'] = ''; - $link['suf'] = ''; - $link['style'] = ''; - $link['more'] = 'onclick="return svchk()" onkeypress="return svchk()"'; - $link['url'] = $link['url']; //keep it - $link['title'] = htmlspecialchars($link['url']); - if(!$link['name']) $link['name'] = htmlspecialchars($link['url']); - if($conf['relnofollow']) $link['more'] .= ' rel="nofollow"'; - //thats it :-) - return $link; -} - -/** - * format windows share links - * - * this only works in IE :-( - * - * @author Andreas Gohr <andi@splitbrain.org> - */ -function format_link_windows($link){ - global $conf; - global $lang; - //simple setup - $link['class'] = 'windows'; - $link['target'] = $conf['target']['windows']; - $link['pre'] = ''; - $link['suf'] = ''; - $link['style'] = ''; - //Display error on browsers other than IE - $link['more'] = 'onclick="if(document.all == null){alert(\''.htmlspecialchars($lang['nosmblinks'],ENT_QUOTES).'\');}" onkeypress="if(document.all == null){alert(\''.htmlspecialchars($lang['nosmblinks'],ENT_QUOTES).'\');}"'; - - if(!$link['name']) $link['name'] = htmlspecialchars($link['url']); - $link['title'] = htmlspecialchars($link['url']); - $link['url'] = str_replace('\\','/',$link['url']); - $link['url'] = 'file:///'.$link['url']; - - return $link; -} - -/** - * format email addresses - * - * @author Andreas Gohr <andi@splitbrain.org> - */ -function format_link_email($link){ - global $conf; - //simple setup - $link['class'] = 'mail'; - $link['target'] = ''; - $link['pre'] = ''; - $link['suf'] = ''; - $link['style'] = ''; - $link['more'] = ''; - - $link['name'] = htmlspecialchars($link['name']); - - //shields up - if($conf['mailguard']=='visible'){ - //the mail name gets some visible encoding - $link['url'] = str_replace('@',' [at] ',$link['url']); - $link['url'] = str_replace('.',' [dot] ',$link['url']); - $link['url'] = str_replace('-',' [dash] ',$link['url']); - }elseif($conf['mailguard']=='hex'){ - for ($x=0; $x < strlen($link['url']); $x++) { - $encode .= '&#x' . bin2hex($link['url'][$x]).';'; - } - $link['url'] = $encode; - } - - $link['title'] = $link['url']; - if(!$link['name']) $link['name'] = $link['url']; - $link['url'] = 'mailto:'.$link['url']; - - return $link; -} - -/** - * format interwiki links - * - * @author Andreas Gohr <andi@splitbrain.org> - */ -function format_link_interwiki($link){ - global $conf; - - //obvious ones - $link['class'] = 'interwiki'; - $link['target'] = $conf['target']['interwiki']; - $link['pre'] = ''; - $link['suf'] = ''; - $link['more'] = 'onclick="return svchk()" onkeypress="return svchk()"'; - - //get interwiki short name - list($wiki,$link['url']) = split('>',$link['url'],2); - $wiki = strtolower(trim($wiki)); //always use lowercase - $link['url'] = trim($link['url']); - if(!$link['name']) $link['name'] = $link['url']; - - //encode special chars - $link['name'] = htmlspecialchars($link['name']); - - //set default to google - $url = 'http://www.google.com/search?q='; - $ico = 'google'; - - // Initialize as NULL - for the first fn call - static $iwlinks = NULL; - - // load interwikilinks if needed - if (!$iwlinks) $iwlinks = file('conf/interwiki.conf'); - - //add special case 'this' - $iwlinks[] = 'this '.DOKU_URL.'{NAME}'; - - //go through iwlinks and find URL for wiki - foreach ($iwlinks as $line){ - $line = preg_replace('/#.*/','',$line); //skip comments - $line = trim($line); - list($iw,$iwurl) = preg_split('/\s+/',$line); - if(!$iw or !$iwurl) continue; //skip broken or empty lines - //check for match - if(strtolower($iw) == $wiki){ - $ico = $wiki; - $url = $iwurl; - break; - } - } - - //if ico exists set additonal style - if(@file_exists('interwiki/'.$ico.'.png')){ - $link['style']='background: transparent url('.DOKU_BASE.'interwiki/'.$ico.'.png) 0px 1px no-repeat;'; - }elseif(@file_exists('interwiki/'.$ico.'.gif')){ - $link['style']='background: transparent url('.DOKU_BASE.'interwiki/'.$ico.'.gif) 0px 1px no-repeat;'; - } - - //do we stay at the same server? Use local target - if( strpos($url,DOKU_URL) === 0 ){ - $link['target'] = $conf['target']['wiki']; - } - - //replace placeholder - if(preg_match('#\{(URL|NAME|SCHEME|HOST|PORT|PATH|QUERY)\}#',$url)){ - //use placeholders - $url = str_replace('{URL}',urlencode($link['url']),$url); - $url = str_replace('{NAME}',$link['url'],$url); - $parsed = parse_url($link['url']); - if(!$parsed['port']) $parsed['port'] = 80; - $url = str_replace('{SCHEME}',$parsed['scheme'],$url); - $url = str_replace('{HOST}',$parsed['host'],$url); - $url = str_replace('{PORT}',$parsed['port'],$url); - $url = str_replace('{PATH}',$parsed['path'],$url); - $url = str_replace('{QUERY}',$parsed['query'],$url); - $link['url'] = $url; - }else{ - //default - $link['url'] = $url.urlencode($link['url']); - } - - $link['title'] = htmlspecialchars($link['url']); - - //done :-) - return $link; -} - -/** - * format embedded media - * - * @author Andreas Gohr <andi@splitbrain.org> - */ -function format_link_media($link){ - global $conf; - global $ID; - - $link['class'] = 'media'; - $link['style'] = ''; - $link['pre'] = ''; - $link['suf'] = ''; - $link['more'] = 'onclick="return svchk()" onkeypress="return svchk()"'; - $class = 'media'; - - list($link['name'],$title) = split('\|',$link['name'],2); - $t = htmlspecialchars($title); - - //set alignment from spaces - if(substr($link['name'],0,1)==' ' && substr($link['name'],-1,1)==' '){ - $link['pre'] = "</p>\n<div align=\"center\">"; - $link['suf'] = "</div>\n<p>"; - }elseif(substr($link['name'],0,1)==' '){ - #$a = ' align="right"'; - $class = 'mediaright'; - }elseif(substr($link['name'],-1,1)==' '){ - #$a = ' align="left"'; - $class = 'medialeft'; - }else{ - $a = ' align="middle"'; - } - $link['name'] = trim($link['name']); - - //split into src and parameters (using the very last questionmark) - $pos = strrpos($link['name'], '?'); - if($pos !== false){ - $src = substr($link['name'],0,$pos); - $param = substr($link['name'],$pos+1); - }else{ - $src = $link['name']; - $param = ''; - } - - //parse width and height - if(preg_match('#(\d+)(x(\d+))?#i',$param,$size)){ - if($size[1]) $w = $size[1]; - if($size[3]) $h = $size[3]; - } - - //namespace mangling for internal images - if(!preg_match('#^https?://#i',$src)){ - $ns = getNS($ID); - //if src starts with . add current namespace - if(strpos($src,'.') === 0){ - $src = $ns.':'.substr($src,1); - } - //if src contains no namespace add current namespace if any - if($ns !== false && strpos($src,':') === false ){ - $src = $ns.':'.$src; - } - } - - //check for nocache/recache param - preg_match('/(nocache|recache)/i',$param,$cachemode); - - //do image caching, resizing and src rewriting - $cache = $src; - $isimg = img_cache($cache,$src,$w,$h,$cachemode[1]); - - //set link to src if none given - if(!$link['url']){ - $link['url'] = $src; - $link['target'] = $conf['target']['media']; - } - - //prepare name - if($isimg){ - $link['name'] = '<img src="'.$cache.'"'; - if($w) $link['name'] .= ' width="'.$w.'"'; - if($h) $link['name'] .= ' height="'.$h.'"'; - if($t) $link['name'] .= ' title="'.$t.'"'; - if($a) $link['name'] .= $a; - $link['name'] .= ' class="'.$class.'" border="0" alt="'.$t.'" />'; - }else{ - if($t){ - $link['name'] = $t; - }else{ - $link['name'] = basename($src); - } - } - - return $link; -} - -/** - * Build an URL list from a RSS feed - * - * Uses magpie - * - * @author Andreas Gohr <andi@splitbrain.org> - */ -function format_rss($url){ - global $lang; - define('MAGPIE_CACHE_ON', false); //we do our own caching - define('MAGPIE_DIR', 'inc/magpie/'); - define('MAGPIE_OUTPUT_ENCODING','UTF-8'); //return all feeds as UTF-8 - require_once(MAGPIE_DIR.'/rss_fetch.inc'); - - //disable warning while fetching - $elvl = error_reporting(E_ERROR); - $rss = fetch_rss($url); - error_reporting($elvl); - - $ret = '<ul class="rss">'; - if($rss){ - foreach ($rss->items as $item ) { - $link = array(); - $link['url'] = $item['link']; - $link['name'] = $item['title']; - $link = format_link_externalurl($link); - $ret .= '<li>'.format_link_build($link).'</li>'; - } - }else{ - $link['url'] = $url; - $link = format_link_externalurl($link); - $ret .= '<li>'; - $ret .= '<em>'.$lang['rssfailed'].'</em>'; - $ret .= format_link_build($link); - $ret .= '</li>'; - } - $ret .= '</ul>'; - return $ret; -} - -/** - * Create cache images - * - * @author Andreas Gohr <andi@splitbrain.org> - */ -function img_cache(&$csrc,&$src,&$w,&$h,$cachemode){ - global $conf; - - //container for various paths - $f['full']['web'] = $src; - $f['resz']['web'] = $src; - $f['full']['fs'] = $src; - $f['resz']['fs'] = $src; - - //generate cachename - $md5 = md5($src); - - //check if it is an image - if(preg_match('#\.(jpe?g|gif|png)$#i',$src,$match)){ - $ext = strtolower($match[1]); - $isimg = true; - } - - //check if it is external or a local mediafile - if(preg_match('#^([a-z0-9]+?)://#i',$src)){ - $isurl = true; - }else{ - $src = str_replace(':','/',$src); - $src = utf8_encodeFN($src); - $f['full']['web'] = $conf['mediaweb'].'/'.$src; - $f['resz']['web'] = $conf['mediaweb'].'/'.$src; - $f['full']['fs'] = $conf['mediadir'].'/'.$src; - $f['resz']['fs'] = $conf['mediadir'].'/'.$src; - } - - //download external images if allowed - if($isurl && $isimg && $cachemode != 'nocache'){ - $cache = $conf['mediadir']."/_cache/$md5.$ext"; - if ( ($cachemode == 'recache' && io_download($src,$cache)) || - @file_exists($cache) || io_download($src,$cache)){ - $f['full']['web'] = $conf['mediaweb']."/_cache/$md5.$ext"; - $f['resz']['web'] = $conf['mediaweb']."/_cache/$md5.$ext"; - $f['full']['fs'] = $conf['mediadir']."/_cache/$md5.$ext"; - $f['resz']['fs'] = $conf['mediadir']."/_cache/$md5.$ext"; - $isurl = false; - } - } - - //for local images (cached or media) do resizing - if($isimg && (!$isurl)){ - if($w){ - $info = getImageSize($f['full']['fs']); - //if $h not given calcualte it with correct aspect ratio - if(!$h){ - $h = round(($w * $info[1]) / $info[0]); - } - $cache = $conf['mediadir'].'/_cache/'.$md5.'.'.$w.'x'.$h.'.'.$ext; - //delete outdated cachefile - if(@file_exists($cache) && (filemtime($cache)<filemtime($f['full']['fs']))){ - unlink($cache); - } - //check if a resized cachecopy exists else create one - if(@file_exists($cache) || img_resize($ext,$f['full']['fs'],$info[0],$info[1],$cache,$w,$h)){ - $f['resz']['web'] = $conf['mediaweb'].'/_cache/'.$md5.'.'.$w.'x'.$h.'.'.$ext; - $f['resz']['fs'] = $conf['mediadir'].'/_cache/'.$md5.'.'.$w.'x'.$h.'.'.$ext; - } - }else{ - //if no new size was given just return the img size - $info = getImageSize($f['full']['fs']); - $w = $info[0]; - $h = $info[1]; - } - //urlencode (yes! secondtime! with force!) - $f['full']['web'] = utf8_encodeFN($f['full']['web'],false); - $f['resz']['web'] = utf8_encodeFN($f['resz']['web'],false); - } - - //set srcs - $src = $f['full']['web']; - $csrc = $f['resz']['web']; - return $isimg; -} - -/** - * resize images - * - * @author Andreas Gohr <andi@splitbrain.org> - */ -function img_resize($ext,$from,$from_w,$from_h,$to,$to_w,$to_h){ - global $conf; - - if($conf['gdlib'] < 1) return false; //no GDlib available or wanted - - // create an image of the given filetype - if ($ext == 'jpg' || $ext == 'jpeg'){ - if(!function_exists("imagecreatefromjpeg")) return false; - $image = @imagecreateFromjpeg($from); - }elseif($ext == 'png') { - if(!function_exists("imagecreatefrompng")) return false; - $image = @imagecreatefrompng($from); - }elseif($ext == 'gif') { - if(!function_exists("imagecreatefromgif")) return false; - $image = @imagecreatefromgif($from); - } - if(!$image) return false; - - if(($conf['gdlib']>1) && function_exists("imagecreatetruecolor")){ - $newimg = @imagecreatetruecolor ($to_w, $to_h); - } - if(!$newimg) $newimg = @imagecreate($to_w, $to_h); - if(!$newimg) return false; - - // create cachedir - io_makeFileDir($to); - - //try resampling first - if(function_exists("imagecopyresampled")){ - if(!@imagecopyresampled($newimg, $image, 0, 0, 0, 0, $to_w, $to_h, $from_w, $from_h)) { - imagecopyresized($newimg, $image, 0, 0, 0, 0, $to_w, $to_h, $from_w, $from_h); - } - }else{ - imagecopyresized($newimg, $image, 0, 0, 0, 0, $to_w, $to_h, $from_w, $from_h); - } - - if ($ext == 'jpg' || $ext == 'jpeg'){ - if(!function_exists("imagejpeg")) return false; - return imagejpeg($newimg, $to, 70); - }elseif($ext == 'png') { - if(!function_exists("imagepng")) return false; - return imagepng($newimg, $to); - }elseif($ext == 'gif') { - if(!function_exists("imagegif")) return false; - return imagegif($newimg, $to); - } - - return false; -} - - -//Setup VIM: ex: et ts=2 enc=utf-8 : |