[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