http://www.mediawiki.org/wiki/Special:Code/MediaWiki/65340
Revision: 65340 Author: siebrand Date: 2010-04-20 21:03:48 +0000 (Tue, 20 Apr 2010) Log Message: ----------- stylize.php, trailing whitespace removed, indentation updated Modified Paths: -------------- trunk/extensions/Call/Call.i18n.php trunk/extensions/Call/Call.php trunk/extensions/Call/Call_body.php Modified: trunk/extensions/Call/Call.i18n.php =================================================================== --- trunk/extensions/Call/Call.i18n.php 2010-04-20 20:30:11 UTC (rev 65339) +++ trunk/extensions/Call/Call.i18n.php 2010-04-20 21:03:48 UTC (rev 65340) @@ -555,7 +555,7 @@ */ $messages['id'] = array( 'call' => 'Panggilan', - 'call-desc' => 'Buat sebuah pranala ke templat (atau halaman wiki biasa) dengan parameter. + 'call-desc' => 'Buat sebuah pranala ke templat (atau halaman wiki biasa) dengan parameter. Dapat digunakan pada baris perintah penjelajah web atau di antara teks wiki', 'call-text' => "Pengaya \"Panggilan\" membutuhkan sebuah halaman wiki dan parameter opsional untuk halaman tersebut untuk digunakan sebagai argumen. Modified: trunk/extensions/Call/Call.php =================================================================== --- trunk/extensions/Call/Call.php 2010-04-20 20:30:11 UTC (rev 65339) +++ trunk/extensions/Call/Call.php 2010-04-20 21:03:48 UTC (rev 65340) @@ -5,7 +5,7 @@ * added "return true;" at the end of wfCallLoadMessages() */ # Not a valid entry point, skip unless MEDIAWIKI is defined -if (!defined('MEDIAWIKI')) { +if ( !defined( 'MEDIAWIKI' ) ) { echo <<<EOT To install Call as a special page, put the following line in LocalSettings.php: require_once( "\$IP/extensions/Call/Call.php" ); @@ -13,7 +13,7 @@ exit( 1 ); } -$dir = dirname(__FILE__) .'/'; +$dir = dirname( __FILE__ ) . '/'; $wgAutoloadClasses['Call'] = $dir . 'Call_body.php'; $wgExtensionMessagesFiles['Call'] = $dir . 'Call.i18n.php'; $wgExtensionAliasesFiles['Call'] = $dir . 'Call.alias.php'; Modified: trunk/extensions/Call/Call_body.php =================================================================== --- trunk/extensions/Call/Call_body.php 2010-04-20 20:30:11 UTC (rev 65339) +++ trunk/extensions/Call/Call_body.php 2010-04-20 21:03:48 UTC (rev 65340) @@ -28,215 +28,239 @@ * link2 replaces "name" by "value" and "," by "&" */ -class Call extends SpecialPage -{ - function Call() { - SpecialPage::SpecialPage("Call"); - wfLoadExtensionMessages('Call'); - } +class Call extends SpecialPage { + function Call() { + SpecialPage::SpecialPage( "Call" ); + wfLoadExtensionMessages( 'Call' ); + } - - function execute($par) { - global $wgParser; - global $wgOut, $wgRequest, $wgRawHtml, $wgUser; - $oldRawHtml = $wgRawHtml; - $wgRawHtml = false; // disable raw html if it's enabled as this could be XSS security risk - $this->setHeaders(); - - global $_REQUEST; - $argkeys = array_keys($_REQUEST); - - // find the position of "title" and count succeeding arguments until we find one that matches - // one of the patterns which belong to typical session cookie variables - // store link info - $argTitle=-1; $argCount=0; $n=0; $link1=''; $link2=''; $label1 = 'link 1'; $label2 = 'link 2'; - foreach ($argkeys as $argKey) { - if ($argKey=='link1') $link1=$wgRequest->getText($argKey); - if ($argKey=='label1') $label1=$wgRequest->getText($argKey); - if ($argKey=='link2') $link2=$wgRequest->getText($argKey); - if ($argKey=='label2') $label2=$wgRequest->getText($argKey); - if ($argKey=='title') $argTitle = $n; - else if ($argTitle>=0) { - if (preg_match('/(UserName|UserID|_session|Token)$/',$argKey)) break; - ++$argCount; - } - $n++; - } - $debug= !(strpos($wgRequest->getText('title'),'DebuG')===false); - if ($debug) { - $wgOut->addHTML("<pre>\n"); - foreach ($argkeys as $argKeyNr => $argKey) { - $wgOut->addHTML("$argKeyNr:$argKey:"); - $wgOut->addHTML($wgRequest->getText($argKey)."\n",1); - } - $wgOut->addHTML("\npar=$par\nargTitle=$argTitle\nargCount=$argCount</pre>"); - } + function execute( $par ) { + global $wgParser; + global $wgOut, $wgRequest, $wgRawHtml, $wgUser; + $oldRawHtml = $wgRawHtml; + $wgRawHtml = false; // disable raw html if it's enabled as this could be XSS security risk + $this->setHeaders(); - $wikitext=''; $n=0; $i=-1; - foreach ($argkeys as $argKeyNr => $argKey) { - $i++; - if ($i<$argTitle) continue; - if ($i==$argTitle) { - $wikitext .= preg_replace(',^[^/]+/,','',$wgRequest->getText($argKey),1); - $wikitext = str_replace( ",", "|", $wikitext ); - $wikitext = str_replace( "_", " ", $wikitext ); - continue; - } - if (++$n > $argCount) break; - $arg = $wgRequest->getText($argKey); - if ($arg=='') { - $link1 = str_replace(",$argKey,",",$argKey=,",$link1); - $link2 = str_replace($argKey,"",$link2); - $arg = str_replace( "_", " ", $argKey ); - $wikitext .= ( '|' . $arg ); - } else { - $link1 = str_replace(",$argKey,",",$argKey=$arg,",$link1); - $link2 = str_replace($argKey,str_replace(' ','_',$arg),$link2); - $arg = str_replace( "_", " ", $arg ); - $wikitext .= ( '|' . $argKey . '=' . $arg ); + global $_REQUEST; + $argkeys = array_keys( $_REQUEST ); + + // find the position of "title" and count succeeding arguments until we find one that matches + // one of the patterns which belong to typical session cookie variables + // store link info + $argTitle = -1; $argCount = 0; $n = 0; $link1 = ''; $link2 = ''; $label1 = 'link 1'; $label2 = 'link 2'; + foreach ( $argkeys as $argKey ) { + if ( $argKey == 'link1' ) { + $link1 = $wgRequest->getText( $argKey ); + } + if ( $argKey == 'label1' ) { + $label1 = $wgRequest->getText( $argKey ); + } + if ( $argKey == 'link2' ) { + $link2 = $wgRequest->getText( $argKey ); + } + if ( $argKey == 'label2' ) { + $label2 = $wgRequest->getText( $argKey ); + } + if ( $argKey == 'title' ) { + $argTitle = $n; + } else if ( $argTitle >= 0 ) { + if ( preg_match( '/(UserName|UserID|_session|Token)$/', $argKey ) ) { + break; } - } + ++$argCount; + } + $n++; + } - if ($wikitext=='' && $par!='') { - // the first argument may contain parameters which are separated by comma - // this is the case if [[Call,a=b]] syntax is used - $wikitext = str_replace( ",", "|", $par ); + $debug = !( strpos( $wgRequest->getText( 'title' ), 'DebuG' ) === false ); + if ( $debug ) { + $wgOut->addHTML( "<pre>\n" ); + foreach ( $argkeys as $argKeyNr => $argKey ) { + $wgOut->addHTML( "$argKeyNr:$argKey:" ); + $wgOut->addHTML( $wgRequest->getText( $argKey ) . "\n", 1 ); + } + $wgOut->addHTML( "\npar=$par\nargTitle=$argTitle\nargCount=$argCount</pre>" ); + } + + $wikitext = ''; $n = 0; $i = -1; + foreach ( $argkeys as $argKeyNr => $argKey ) { + $i++; + if ( $i < $argTitle ) { + continue; + } + if ( $i == $argTitle ) { + $wikitext .= preg_replace( ',^[^/]+/,', '', $wgRequest->getText( $argKey ), 1 ); + $wikitext = str_replace( ",", "|", $wikitext ); $wikitext = str_replace( "_", " ", $wikitext ); - } + continue; + } + if ( ++$n > $argCount ) { + break; + } + $arg = $wgRequest->getText( $argKey ); + if ( $arg == '' ) { + $link1 = str_replace( ",$argKey,", ",$argKey=,", $link1 ); + $link2 = str_replace( $argKey, "", $link2 ); + $arg = str_replace( "_", " ", $argKey ); + $wikitext .= ( '|' . $arg ); + } else { + $link1 = str_replace( ",$argKey,", ",$argKey=$arg,", $link1 ); + $link2 = str_replace( $argKey, str_replace( ' ', '_', $arg ), $link2 ); + $arg = str_replace( "_", " ", $arg ); + $wikitext .= ( '|' . $argKey . '=' . $arg ); + } + } - // check if the result shall be saved as a wiki article - $saveAsPageLink=''; $saveAsPage=''; $saveAsTitle=null; - $wikitextS = preg_replace('/^.*\|\s*saveAsPage\s*=\s*/s','',$wikitext); - if ($wikitextS != $wikitext) { - $saveAsPageLink= preg_replace('/\s*\|.*/s','',$wikitextS); - $saveAsTitle = Title::newFromText($saveAsPageLink); - $saveAsPage = $saveAsTitle->getText(); - if ($saveAsTitle->getNamespace()==14) $saveAsPageLink = ':'.$saveAsPageLink; - } + if ( $wikitext == '' && $par != '' ) { + // the first argument may contain parameters which are separated by comma + // this is the case if [[Call,a=b]] syntax is used + $wikitext = str_replace( ",", "|", $par ); + $wikitext = str_replace( "_", " ", $wikitext ); + } - // check if we want to execute a built-in command - $cmd = preg_replace('/^.*\|\s*cmd\s*=\s*/s','',$wikitext); - if ($cmd == $wikitext) $cmd=''; - else { - $cmd = preg_replace('/\s*\|.*/s','',$cmd); - } + // check if the result shall be saved as a wiki article + $saveAsPageLink = ''; $saveAsPage = ''; $saveAsTitle = null; + $wikitextS = preg_replace( '/^.*\|\s*saveAsPage\s*=\s*/s', '', $wikitext ); + if ( $wikitextS != $wikitext ) { + $saveAsPageLink = preg_replace( '/\s*\|.*/s', '', $wikitextS ); + $saveAsTitle = Title::newFromText( $saveAsPageLink ); + $saveAsPage = $saveAsTitle->getText(); + if ( $saveAsTitle->getNamespace() == 14 ) { + $saveAsPageLink = ':' . $saveAsPageLink; + } + } - // in both cases we need the raw text of the called page - $rawText=''; - if ($cmd!='' || $saveAsPage!='') { - $template = preg_replace('/\|.*/','',$wikitext); - if (strpos(':',$template) === false) $template = 'Template:'.$template; - else if ($template[0]==':') $template = substr($template,1); - $title = Title::newFromText($template); - if ($title!=null && !$title->exists()) $rawText= "'$template' not found."; - else { - $article = new Article($title); - $rawText = $article->getContent(); - } + // check if we want to execute a built-in command + $cmd = preg_replace( '/^.*\|\s*cmd\s*=\s*/s', '', $wikitext ); + if ( $cmd == $wikitext ) { + $cmd = ''; + } else { + $cmd = preg_replace( '/\s*\|.*/s', '', $cmd ); + } + + // in both cases we need the raw text of the called page + $rawText = ''; + if ( $cmd != '' || $saveAsPage != '' ) { + $template = preg_replace( '/\|.*/', '', $wikitext ); + if ( strpos( ':', $template ) === false ) { + $template = 'Template:' . $template; + } else if ( $template[0] == ':' ) { + $template = substr( $template, 1 ); } + $title = Title::newFromText( $template ); + if ( $title != null && !$title->exists() ) { + $rawText = "'$template' not found."; + } else { + $article = new Article( $title ); + $rawText = $article->getContent(); + } + } - if ($wikitext=='' || $wikitext=='Special:Call' ) { - // Called without parameters: dump explanation - $wgOut->addHTML(wfMsg('call-text')); - } - else if ($debug) { - // Called with DebuG target: dump parameter list - $wgOut->addHTML("<pre>\n{{".$wikitext."}}\n</pre>"); - if ($saveAsPage!='') $wgOut->addHTML( wfMsg('call-save',$saveAsPageLink) ); - } - else { - $parm=array(); - foreach (split('\|',$wikitext) as $parmArg) { - $pp = split('=',$parmArg,2); - if (count($pp) == 2) $parm[$pp[0]] = $pp[1]; - else $parm[$pp[0]] = ''; + if ( $wikitext == '' || $wikitext == 'Special:Call' ) { + // Called without parameters: dump explanation + $wgOut->addHTML( wfMsg( 'call-text' ) ); + } else if ( $debug ) { + // Called with DebuG target: dump parameter list + $wgOut->addHTML( "<pre>\n{{" . $wikitext . "}}\n</pre>" ); + if ( $saveAsPage != '' ) { + $wgOut->addHTML( wfMsg( 'call-save', $saveAsPageLink ) ); + } + } else { + $parm = array(); + foreach ( split( '\|', $wikitext ) as $parmArg ) { + $pp = split( '=', $parmArg, 2 ); + if ( count( $pp ) == 2 ) { + $parm[$pp[0]] = $pp[1]; + } else { + $parm[$pp[0]] = ''; } - if ($cmd=='convertTableToTemplateCalls') { - // execute command - $rawText = Call::convertTableToTemplateCalls($rawText,$parm); - } - if ($saveAsPage != '') { - // replace literals in text - foreach ($parm as $arg => $value) { - $rawText = str_replace($arg,$value,$rawText); - } - // do not save if article is already present - if (!($saveAsTitle->exists())) { - $article = new Article($saveAsTitle); - $article->doEdit( $rawText, $saveAsPage, EDIT_NEW | EDIT_FORCE_BOT ); - $wgOut->addHTML($wgOut->parse(wfMsg('call-save-success' ,$saveAsPageLink) ) ); - } - else { - $wgOut->addHTML($wgOut->parse(wfMsg('call-save-failed',$saveAsPageLink) ) ); - } - // output the text we produced as a note to the user - if ($link1!='') $wgOut->addHTML($wgOut->parse("[[Special:Call/$link1|$label1]]")); - $link2=str_replace(',','&',$link2); - if ($link2!='') $wgOut->addHTML($wgOut->parse("[$link2 $label2]")); - $wgOut->addHTML("<pre>\n$rawText\n</pre>"); - } - else { - // call the template and produce output - $wgOut->addHTML($wgOut->parse("{{".$wikitext."}}")); - } - } + } + if ( $cmd == 'convertTableToTemplateCalls' ) { + // execute command + $rawText = Call::convertTableToTemplateCalls( $rawText, $parm ); + } + if ( $saveAsPage != '' ) { + // replace literals in text + foreach ( $parm as $arg => $value ) { + $rawText = str_replace( $arg, $value, $rawText ); + } + // do not save if article is already present + if ( !( $saveAsTitle->exists() ) ) { + $article = new Article( $saveAsTitle ); + $article->doEdit( $rawText, $saveAsPage, EDIT_NEW | EDIT_FORCE_BOT ); + $wgOut->addHTML( $wgOut->parse( wfMsg( 'call-save-success' , $saveAsPageLink ) ) ); + } else { + $wgOut->addHTML( $wgOut->parse( wfMsg( 'call-save-failed', $saveAsPageLink ) ) ); + } + // output the text we produced as a note to the user + if ( $link1 != '' ) { + $wgOut->addHTML( $wgOut->parse( "[[Special:Call/$link1|$label1]]" ) ); + } + $link2 = str_replace( ',', '&', $link2 ); + if ( $link2 != '' ) { + $wgOut->addHTML( $wgOut->parse( "[$link2 $label2]" ) ); + } + $wgOut->addHTML( "<pre>\n$rawText\n</pre>" ); + } else { + // call the template and produce output + $wgOut->addHTML( $wgOut->parse( "{{" . $wikitext . "}}" ) ); + } + } - $skin = $wgUser->getSkin(); - $wgRawHtml = $oldRawHtml; + $skin = $wgUser->getSkin(); + $wgRawHtml = $oldRawHtml; - $newTitle = split("\,",$par,2); - if ($newTitle!=null && strlen($newTitle[0])>0) { - $newTitle[0]=str_replace("_"," ",$newTitle[0]); - $newTitle[0]=preg_replace("/^:/","",$newTitle[0]); - $wgOut->setPageTitle($newTitle[0]); - } - // $wgOut->addMeta("http:expires", "0"); - + $newTitle = split( "\,", $par, 2 ); + if ( $newTitle != null && strlen( $newTitle[0] ) > 0 ) { + $newTitle[0] = str_replace( "_", " ", $newTitle[0] ); + $newTitle[0] = preg_replace( "/^:/", "", $newTitle[0] ); + $wgOut->setPageTitle( $newTitle[0] ); } + } - static function convertTableToTemplateCalls($rawText, $parms) { - $text=array(); - $state=0; - $n=-1; - $field=array(); - $head=true; - $tpl='???'; - foreach (split("\n",$rawText) as $line) { - // $text[] = "$state $n $line"; - if ($state==0) { - if (strpos($line,'|-')!==false) { - $state=1; - $n=-1; - $tpl=$field[0]; - $field[0] = 'ID'; - } else if (strpos($line,'|')==0) { - $n++; - $field[$n]=substr($line,1); - } - } else if (strpos($line,'|-')!==false) { - $n=-1; - } else if (strpos($line,'|}')!==false) { - $text[] = '}}'; - break; - } else if ($line=='') { - $text[]=''; - } else if ($line[0]=='|') { - $n++; - if ($n==0) { - if ($head) { - $text[] = "{{DT Article|index="; - $head=false; - } - $text[] = "}}\n==".substr($line,1)."==\n{{".$tpl."\n|".$field[$n].'='.substr($line,1); - } else { - $text[] = '|'.$field[$n].'='; - $text[] = substr($line,1); - } - } else { - $text[] = $line; + static function convertTableToTemplateCalls( $rawText, $parms ) { + $text = array(); + $state = 0; + $n = -1; + $field = array(); + $head = true; + $tpl = '???'; + foreach ( split( "\n", $rawText ) as $line ) { + // $text[] = "$state $n $line"; + if ( $state == 0 ) { + if ( strpos( $line, '|-' ) !== false ) { + $state = 1; + $n = -1; + $tpl = $field[0]; + $field[0] = 'ID'; + } else if ( strpos( $line, '|' ) == 0 ) { + $n++; + $field[$n] = substr( $line, 1 ); } - } - return join("\n",$text); - } + } else if ( strpos( $line, '|-' ) !== false ) { + $n = -1; + } else if ( strpos( $line, '|}' ) !== false ) { + $text[] = '}}'; + break; + } else if ( $line == '' ) { + $text[] = ''; + } else if ( $line[0] == '|' ) { + $n++; + if ( $n == 0 ) { + if ( $head ) { + $text[] = "{{DT Article|index="; + $head = false; + } + $text[] = "}}\n==" . substr( $line, 1 ) . "==\n{{" . $tpl . "\n|" . $field[$n] . '=' . substr( $line, 1 ); + } else { + $text[] = '|' . $field[$n] . '='; + $text[] = substr( $line, 1 ); + } + } else { + $text[] = $line; + } + } + return join( "\n", $text ); + } } _______________________________________________ MediaWiki-CVS mailing list MediaWiki-CVS@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs