[Mediawiki-l] Changing the signature timestamp-format?

Katharina Wolkwitz wolkwitz at fh-swf.de
Wed Jul 11 08:28:07 UTC 2007


Hi all,

I'm still looking for a way to change the timestamp-format that comes the the 
signature-button in the edit-window.
At the Moment, when I use the button "Ihre Signatur mit Zeitstempel" to
sign a text with adding a timestamp, the stamp has the following format:

09:57, 3. Jul. 2007 (CEST)

I'd like to change the timestamp-Format (and/or the DefaultDateFormat)
so that the timestamp looks like this:

03.06.2007, 09:57

After some searching I found the place where the signature is put together 
according to the number of ~ used.
I've followed through the generation of the timestamp, but found my php is 
definitly not fluent enough to even try to hack the code in order to get what I 
want. :(
Also the note in parser.php sort of discourages me even further...

How can I change timestamp-format of the signature? Can any of you help me with 
this?

To ease the way for those of you with more php-knowledge I've added those parts 
of the code that is used in formatting the timestamp.

The generation of the signature and timestamp starts in includes/parser.php

> /**
>  * Pre-save transform helper function
>  * @private
>  */
> function pstPass2( $text, &$stripState, $user ) {
> 	global $wgContLang, $wgLocaltimezone;
> 	/* Note: This is the timestamp saved as hardcoded wikitext to
> 	 * the database, we use $wgContLang here in order to give
> 	 * everyone the same signature and use the default one rather
> 	 * than the one selected in each user's preferences.
> 	 */
> 	if ( isset( $wgLocaltimezone ) ) {
> 		$oldtz = getenv( 'TZ' );
> 		putenv( 'TZ='.$wgLocaltimezone );
> 	}
> 	$d = $wgContLang->timeanddate( date( 'YmdHis' ), false, false) .
> 	  ' (' . date( 'T' ) . ')';
> 	if ( isset( $wgLocaltimezone ) ) {
> 		putenv( 'TZ='.$oldtz );
> 	}
> 	# Variable replacement
> 	# Because mOutputType is OT_WIKI, this will only process {{subst:xxx}} type tags
> 	$text = $this->replaceVariables( $text );
> 	# Strip out <nowiki> etc. added via replaceVariables
> 	$text = $this->strip( $text, $stripState, false, array( 'gallery' ) );
> 	# Signatures
> 	$sigText = $this->getUserSig( $user );
> 	$text = strtr( $text, array(
> 		'~~~~~' => $d,
> 		'~~~~' => "$sigText $d",
> 		'~~~' => $sigText
> 	) );


It continues in languages/language.php

> /**
> * @public
> * @param mixed  $ts the time format which needs to be turned into a
> *               date('YmdHis') format with wfTimestamp(TS_MW,$ts)
> * @param bool   $adj whether to adjust the time output according to the
> *               user configured offset ($timecorrection)
> * @param mixed  $format what format to return, if it's false output the
> *               default one (default true)
> * @param string $timecorrection the time offset as returned by
> *               validateTimeZone() in Special:Preferences
> * @return string
> */
> function timeanddate( $ts, $adj = false, $format = true, $timecorrection = false) {
> 	$this->load();
> 	$ts = wfTimestamp( TS_MW, $ts );
> 	if ( $adj ) { 
> 		$ts = $this->userAdjust( $ts, $timecorrection ); 
> 	}
> 	$pref = $this->dateFormat( $format );
> 	if( $pref == 'default' || !isset( $this->dateFormats["$pref both"] ) ) {
> 		$pref = $this->defaultDateFormat;
> 	}
> 

And finally the formatting of the timestamp is done in includes/GlobalFunctions.php

> /**
>  * @param mixed $outputtype A timestamp in one of the supported formats, the
>  *                          function will autodetect which format is supplied
>  *                          and act accordingly.
>  * @return string Time in the format specified in $outputtype
>  */
> function wfTimestamp($outputtype=TS_UNIX,$ts=0) {
> 	$uts = 0;
> 	$da = array();
> 	if ($ts==0) {
> 		$uts=time();
> 	} elseif (preg_match('/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)$/D',$ts,$da)) {
> 		# TS_DB
> 		$uts=gmmktime((int)$da[4],(int)$da[5],(int)$da[6],
> 			    (int)$da[2],(int)$da[3],(int)$da[1]);
> 	} elseif (preg_match('/^(\d{4}):(\d\d):(\d\d) (\d\d):(\d\d):(\d\d)$/D',$ts,$da)) {
> 		# TS_EXIF
> 		$uts=gmmktime((int)$da[4],(int)$da[5],(int)$da[6],
> 			(int)$da[2],(int)$da[3],(int)$da[1]);
> 	} elseif (preg_match('/^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/D',$ts,$da)) {
> 		# TS_MW
> 		$uts=gmmktime((int)$da[4],(int)$da[5],(int)$da[6],
> 			    (int)$da[2],(int)$da[3],(int)$da[1]);
> 	} elseif (preg_match('/^(\d{1,13})$/D',$ts,$da)) {
> 		# TS_UNIX
> 		$uts = $ts;
> 	} elseif (preg_match('/^(\d{1,2})-(...)-(\d\d(\d\d)?) (\d\d)\.(\d\d)\.(\d\d)/', $ts, $da)) {
> 		# TS_ORACLE
> 		$uts = strtotime(preg_replace('/(\d\d)\.(\d\d)\.(\d\d)(\.(\d+))?/', "$1:$2:$3",
> 				str_replace("+00:00", "UTC", $ts)));
> 	} elseif (preg_match('/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})Z$/', $ts, $da)) {
> 		# TS_ISO_8601
> 		$uts=gmmktime((int)$da[4],(int)$da[5],(int)$da[6],
> 			(int)$da[2],(int)$da[3],(int)$da[1]);
> 	} elseif (preg_match('/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)[\+\- ](\d\d)$/',$ts,$da)) {
> 		# TS_POSTGRES
> 		$uts=gmmktime((int)$da[4],(int)$da[5],(int)$da[6],
> 		(int)$da[2],(int)$da[3],(int)$da[1]);
> 	} elseif (preg_match('/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/',$ts,$da)) {
> 		# TS_POSTGRES
> 		$uts=gmmktime((int)$da[4],(int)$da[5],(int)$da[6],
> 		(int)$da[2],(int)$da[3],(int)$da[1]);
> 	} else {
> 		# Bogus value; fall back to the epoch...
> 		wfDebug("wfTimestamp() fed bogus time value: $outputtype; $ts\n");
> 		$uts = 0;
> 	}
> 

Greetings

Katharina Wolkwitz




More information about the MediaWiki-l mailing list