Blame
Date:
Fri Dec 16 05:00:21 2022 UTC
Message:
Daily backup
001
2021-12-17
jrmu
<?php if (!defined('PmWiki')) exit();
002
2021-12-17
jrmu
/* Copyright 2005-2017 Patrick R. Michaud (pmichaud@pobox.com)
003
2021-12-17
jrmu
This file is part of PmWiki; you can redistribute it and/or modify
004
2021-12-17
jrmu
it under the terms of the GNU General Public License as published
005
2021-12-17
jrmu
by the Free Software Foundation; either version 2 of the License, or
006
2021-12-17
jrmu
(at your option) any later version. See pmwiki.php for full details.
007
2021-12-17
jrmu
008
2021-12-17
jrmu
This script handles various "fixup transitions" that might need to
009
2021-12-17
jrmu
occur to help existing sites smoothly upgrade to newer releases of
010
2021-12-17
jrmu
PmWiki. Rather than put the workarounds in the main code files, we
011
2021-12-17
jrmu
try to centralize them here so we can see what's deprecated and a
012
2021-12-17
jrmu
simple switch (?trans=0 in the url) can tell the admin if his site
013
2021-12-17
jrmu
is relying on an outdated feature or way of doing things.
014
2021-12-17
jrmu
015
2021-12-17
jrmu
Transitions defined in this script:
016
2021-12-17
jrmu
017
2021-12-17
jrmu
$Transition['nosessionencode'] - turn off session encoding
018
2021-12-17
jrmu
019
2021-12-17
jrmu
$Transition['version'] < 2001967 - all transitions listed above
020
2021-12-17
jrmu
021
2021-12-17
jrmu
$Transition['wspre'] - leading spaces are pre text
022
2021-12-17
jrmu
023
2021-12-17
jrmu
$Transition['version'] < 2001941 - all transitions listed above
024
2021-12-17
jrmu
025
2021-12-17
jrmu
$Transition['wikiwords'] - 2.1-style WikiWord processing
026
2021-12-17
jrmu
027
2021-12-17
jrmu
$Transition['version'] < 2001924 - all transitions listed above
028
2021-12-17
jrmu
029
2021-12-17
jrmu
$Transition['abslinks'] - absolute links/page vars
030
2021-12-17
jrmu
031
2021-12-17
jrmu
$Transition['version'] < 2001901 - all transitions listed above
032
2021-12-17
jrmu
033
2021-12-17
jrmu
$Transition['vspace'] - restore <p class='vspace'></p>
034
2021-12-17
jrmu
035
2021-12-17
jrmu
$Transition['version'] < 2001006 - all transitions listed above
036
2021-12-17
jrmu
037
2021-12-17
jrmu
$Transition['fplbygroup'] - restore FPLByGroup function
038
2021-12-17
jrmu
039
2021-12-17
jrmu
$Transition['version'] < 2000915 - all transitions listed above
040
2021-12-17
jrmu
041
2021-12-17
jrmu
$Transition['mainrc'] - keep using Main.AllRecentChanges
042
2021-12-17
jrmu
$Transition['mainapprovedurls'] - keep using Main.ApprovedUrls
043
2021-12-17
jrmu
$Transition['pageeditfmt'] - default $PageEditFmt value
044
2021-12-17
jrmu
$Transition['mainpages'] - other default pages in Main
045
2021-12-17
jrmu
046
2021-12-17
jrmu
$Transition['version'] < 1999944 - all transitions listed above
047
2021-12-17
jrmu
048
2021-12-17
jrmu
To get all of the transitions for compatibility with a previous
049
2021-12-17
jrmu
version of PmWiki, simply set $Transition['version'] in a local
050
2021-12-17
jrmu
configuration file to the version number you want compatibility
051
2021-12-17
jrmu
with. All of the transitions associated with that version will
052
2021-12-17
jrmu
then be enabled. Example:
053
2021-12-17
jrmu
054
2021-12-17
jrmu
# Keep compatibility with PmWiki version 2.0.13
055
2021-12-17
jrmu
$Transition['version'] = 2000013;
056
2021-12-17
jrmu
057
2021-12-17
jrmu
To explicitly enable or disable specific transitions, set
058
2021-12-17
jrmu
the corresponding $Transition[] element to 1 or 0. This will
059
2021-12-17
jrmu
override the $Transition['version'] item listed above. For
060
2021-12-17
jrmu
example, to enable just the 'pageeditfmt' transition, use
061
2021-12-17
jrmu
062
2021-12-17
jrmu
$Transition['pageeditfmt'] = 1;
063
2021-12-17
jrmu
064
2021-12-17
jrmu
Script maintained by Petko YOTOV www.pmwiki.org/petko
065
2021-12-17
jrmu
*/
066
2021-12-17
jrmu
067
2021-12-17
jrmu
## if ?trans=0 is specified, then we don't do any fixups.
068
2021-12-17
jrmu
if (@$_REQUEST['trans']==='0') return;
069
2021-12-17
jrmu
070
2021-12-17
jrmu
## set a default Transition version if we don't have one
071
2021-12-17
jrmu
SDV($Transition['version'], $VersionNum);
072
2021-12-17
jrmu
073
2021-12-17
jrmu
## Transitions from 2.2.0-beta67
074
2021-12-17
jrmu
if (@$Transition['version'] < 2001967)
075
2021-12-17
jrmu
SDVA($Transition, array('nosessionencode' => 1));
076
2021-12-17
jrmu
077
2021-12-17
jrmu
if (@$Transition['nosessionencode']) {
078
2021-12-17
jrmu
$SessionEncode = NULL;
079
2021-12-17
jrmu
$SessionDecode = NULL;
080
2021-12-17
jrmu
}
081
2021-12-17
jrmu
082
2021-12-17
jrmu
## Transitions from 2.2.0-beta41
083
2021-12-17
jrmu
if (@$Transition['version'] < 2001941)
084
2021-12-17
jrmu
SDVA($Transition, array('wspre' => 1));
085
2021-12-17
jrmu
086
2021-12-17
jrmu
if (@$Transition['wspre']) SDV($EnableWSPre, 1);
087
2021-12-17
jrmu
088
2021-12-17
jrmu
## Transitions from 2.2.0-beta24
089
2021-12-17
jrmu
if (@$Transition['version'] < 2001924)
090
2021-12-17
jrmu
SDVA($Transition, array('wikiwords' => 1));
091
2021-12-17
jrmu
092
2021-12-17
jrmu
## wikiwords:
093
2021-12-17
jrmu
## This restores the PmWiki 2.1 behavior for WikiWord processing.
094
2021-12-17
jrmu
## WikiWords aren't linked by default, but appear with
095
2021-12-17
jrmu
## <span class='wikiword'>...</span> tags around them.
096
2021-12-17
jrmu
if (@$Transition['wikiwords']) {
097
2021-12-17
jrmu
SDV($EnableWikiWords, 1);
098
2021-12-17
jrmu
SDV($LinkWikiWords, 0);
099
2021-12-17
jrmu
}
100
2021-12-17
jrmu
101
2021-12-17
jrmu
## Transitions from 2.2.0-beta1
102
2021-12-17
jrmu
if (@$Transition['version'] < 2001901)
103
2021-12-17
jrmu
SDVA($Transition, array('abslinks' => 1));
104
2021-12-17
jrmu
105
2021-12-17
jrmu
## abslinks:
106
2021-12-17
jrmu
## This restores settings so that PmWiki treats all links
107
2021-12-17
jrmu
## as absolute (following the 2.1.x and earlier interpretation).
108
2021-12-17
jrmu
if (@$Transition['abslinks']) {
109
2021-12-17
jrmu
SDV($EnableRelativePageLinks, 0);
110
2021-12-17
jrmu
SDV($EnableRelativePageVars, 0);
111
2021-12-17
jrmu
}
112
2021-12-17
jrmu
113
2021-12-17
jrmu
## Transitions from 2.1.12
114
2021-12-17
jrmu
115
2021-12-17
jrmu
if (@$Transition['version'] < 2001012)
116
2021-12-17
jrmu
SDVA($Transition, array('nodivnest' => 1));
117
2021-12-17
jrmu
118
2021-12-17
jrmu
## nodivnest:
119
2021-12-17
jrmu
## This restores the PmWiki 2.1.11 behavior that doesn't
120
2021-12-17
jrmu
## allow nesting of divs and tables.
121
2021-12-17
jrmu
if (@$Transition['nodivnest']) {
122
2021-12-17
jrmu
function TCells($m) {
123
2021-12-17
jrmu
list($x, $name, $attr) = $m;
124
2021-12-17
jrmu
global $MarkupFrame;
125
2021-12-17
jrmu
$attr = preg_replace('/([a-zA-Z]=)([^\'"]\\S*)/',"\$1'\$2'",$attr);
126
2021-12-17
jrmu
$tattr = @$MarkupFrame[0]['tattr'];
127
2021-12-17
jrmu
$name = strtolower($name);
128
2021-12-17
jrmu
$out = '<:block>';
129
2021-12-17
jrmu
if (strncmp($name, 'cell', 4) != 0 || @$MarkupFrame[0]['closeall']['div']) {
130
2021-12-17
jrmu
$out .= @$MarkupFrame[0]['closeall']['div'];
131
2021-12-17
jrmu
unset($MarkupFrame[0]['closeall']['div']);
132
2021-12-17
jrmu
$out .= @$MarkupFrame[0]['closeall']['table'];
133
2021-12-17
jrmu
unset($MarkupFrame[0]['closeall']['table']);
134
2021-12-17
jrmu
}
135
2021-12-17
jrmu
if ($name == 'div') {
136
2021-12-17
jrmu
$MarkupFrame[0]['closeall']['div'] = "</div>";
137
2021-12-17
jrmu
$out .= "<div $attr>";
138
2021-12-17
jrmu
}
139
2021-12-17
jrmu
if ($name == 'table') $MarkupFrame[0]['tattr'] = $attr;
140
2021-12-17
jrmu
if (strncmp($name, 'cell', 4) == 0) {
141
2021-12-17
jrmu
if (strpos($attr, "valign=")===false) $attr .= " valign='top'";
142
2021-12-17
jrmu
if (!@$MarkupFrame[0]['closeall']['table']) {
143
2021-12-17
jrmu
$MarkupFrame[0]['closeall']['table'] = "</td></tr></table>";
144
2021-12-17
jrmu
$out .= "<table $tattr><tr><td $attr>";
145
2021-12-17
jrmu
} else if ($name == 'cellnr') $out .= "</td></tr><tr><td $attr>";
146
2021-12-17
jrmu
else $out .= "</td><td $attr>";
147
2021-12-17
jrmu
}
148
2021-12-17
jrmu
return $out;
149
2021-12-17
jrmu
}
150
2021-12-17
jrmu
151
2021-12-17
jrmu
Markup('table', '<block',
152
2021-12-17
jrmu
'/^\\(:(table|cell|cellnr|tableend|div|divend)(\\s.*?)?:\\)/i',
153
2021-12-17
jrmu
"TCells");
154
2021-12-17
jrmu
}
155
2021-12-17
jrmu
156
2021-12-17
jrmu
157
2021-12-17
jrmu
## Transitions from 2.1.7
158
2021-12-17
jrmu
159
2021-12-17
jrmu
if (@$Transition['version'] < 2001007)
160
2021-12-17
jrmu
SDVA($Transition, array('vspace' => 1));
161
2021-12-17
jrmu
162
2021-12-17
jrmu
## vspace:
163
2021-12-17
jrmu
## This restores PmWiki's use of <p class='vspace'></p> to mark
164
2021-12-17
jrmu
## vertical space in the output.
165
2021-12-17
jrmu
if (@$Transition['vspace']) $HTMLVSpace = "<p class='vspace'></p>";
166
2021-12-17
jrmu
167
2021-12-17
jrmu
168
2021-12-17
jrmu
## Transitions from 2.1.beta15
169
2021-12-17
jrmu
170
2021-12-17
jrmu
if (@$Transition['version'] < 2000915)
171
2021-12-17
jrmu
SDVA($Transition, array('fplbygroup' => 1));
172
2021-12-17
jrmu
173
2021-12-17
jrmu
## fplbygroup:
174
2021-12-17
jrmu
## The FPLByGroup function was removed in 2.1.beta15, this restores it.
175
2021-12-17
jrmu
if (@$Transition['fplbygroup'] && !function_exists('FPLByGroup')) {
176
2021-12-17
jrmu
SDV($FPLFormatOpt['bygroup'], array('fn' => 'FPLByGroup'));
177
2021-12-17
jrmu
function FPLByGroup($pagename, &$matches, $opt) {
178
2021-12-17
jrmu
global $FPLByGroupStartFmt, $FPLByGroupEndFmt, $FPLByGroupGFmt,
179
2021-12-17
jrmu
$FPLByGroupIFmt, $FPLByGroupOpt;
180
2021-12-17
jrmu
SDV($FPLByGroupStartFmt,"<dl class='fplbygroup'>");
181
2021-12-17
jrmu
SDV($FPLByGroupEndFmt,'</dl>');
182
2021-12-17
jrmu
SDV($FPLByGroupGFmt,"<dt><a href='\$ScriptUrl/\$Group'>\$Group</a> /</dt>\n");
183
2021-12-17
jrmu
SDV($FPLByGroupIFmt,"<dd><a href='\$PageUrl'>\$Name</a></dd>\n");
184
2021-12-17
jrmu
SDVA($FPLByGroupOpt, array('readf' => 0, 'order' => 'name'));
185
2021-12-17
jrmu
$matches = MakePageList($pagename,
186
2021-12-17
jrmu
array_merge((array)$FPLByGroupOpt, $opt), 0);
187
2021-12-17
jrmu
if (@$opt['count']) array_splice($matches, $opt['count']);
188
2021-12-17
jrmu
if (count($matches)<1) return '';
189
2021-12-17
jrmu
$out = '';
190
2021-12-17
jrmu
foreach($matches as $pn) {
191
2021-12-17
jrmu
$pgroup = FmtPageName($FPLByGroupGFmt, $pn);
192
2021-12-17
jrmu
if ($pgroup != @$lgroup) { $out .= $pgroup; $lgroup = $pgroup; }
193
2021-12-17
jrmu
$out .= FmtPageName($FPLByGroupIFmt, $pn);
194
2021-12-17
jrmu
}
195
2021-12-17
jrmu
return FmtPageName($FPLByGroupStartFmt, $pagename) . $out .
196
2021-12-17
jrmu
FmtPageName($FPLByGroupEndFmt, $pagename);
197
2021-12-17
jrmu
}
198
2021-12-17
jrmu
}
199
2021-12-17
jrmu
200
2021-12-17
jrmu
## Transitions from 2.0.beta44
201
2021-12-17
jrmu
202
2021-12-17
jrmu
if (@$Transition['version'] < 1999944)
203
2021-12-17
jrmu
SDVA($Transition, array('mainrc' => 1, 'mainapprovedurls' => 1,
204
2021-12-17
jrmu
'pageeditfmt' => 1, 'mainpages' => 1));
205
2021-12-17
jrmu
206
2021-12-17
jrmu
## mainrc:
207
2021-12-17
jrmu
## 2.0.beta44 switched Main.AllRecentChanges to be
208
2021-12-17
jrmu
## $SiteGroup.AllRecentChanges. This setting keeps Main.AllRecentChanges
209
2021-12-17
jrmu
## if it exists.
210
2021-12-17
jrmu
if (@$Transition['mainrc'] && PageExists('Main.AllRecentChanges')) {
211
2021-12-17
jrmu
SDV($RecentChangesFmt['Main.AllRecentChanges'],
212
2021-12-17
jrmu
'* [[$Group.$Name]] . . . $CurrentTime $[by] $AuthorLink');
213
2021-12-17
jrmu
}
214
2021-12-17
jrmu
215
2021-12-17
jrmu
## siteapprovedurls:
216
2021-12-17
jrmu
## 2.0.beta44 switched Main.ApprovedUrls to be $SiteGroup.ApprovedUrls .
217
2021-12-17
jrmu
## This setting keeps using Main.ApprovedUrls if it exists.
218
2021-12-17
jrmu
if (@$Transition['mainapprovedurls'] && PageExists('Main.ApprovedUrls')) {
219
2021-12-17
jrmu
$ApprovedUrlPagesFmt = (array)$ApprovedUrlPagesFmt;
220
2021-12-17
jrmu
if (PageExists(FmtPageName($ApprovedUrlPagesFmt[0], $pagename)))
221
2021-12-17
jrmu
$ApprovedUrlPagesFmt[] = 'Main.ApprovedUrls';
222
2021-12-17
jrmu
else array_unshift($ApprovedUrlPagesFmt, 'Main.ApprovedUrls');
223
2021-12-17
jrmu
}
224
2021-12-17
jrmu
225
2021-12-17
jrmu
## pageeditfmt:
226
2021-12-17
jrmu
## 2.0.beta44 switched to using wiki markup forms for page editing.
227
2021-12-17
jrmu
## However, some sites and skins have customized values of $PageEdit.
228
2021-12-17
jrmu
## This setting restores the default values.
229
2021-12-17
jrmu
if (@$Transition['pageeditfmt']) {
230
2021-12-17
jrmu
SDV($PageEditFmt, "<div id='wikiedit'>
231
2021-12-17
jrmu
<a id='top' name='top'></a>
232
2021-12-17
jrmu
<h1 class='wikiaction'>$[Editing \$FullName]</h1>
233
2021-12-17
jrmu
<form method='post' action='\$PageUrl?action=edit'>
234
2021-12-17
jrmu
<input type='hidden' name='action' value='edit' />
235
2021-12-17
jrmu
<input type='hidden' name='n' value='\$FullName' />
236
2021-12-17
jrmu
<input type='hidden' name='basetime' value='\$EditBaseTime' />
237
2021-12-17
jrmu
\$EditMessageFmt
238
2021-12-17
jrmu
<textarea id='text' name='text' rows='25' cols='60'
239
2021-12-17
jrmu
onkeydown='if (event.keyCode==27) event.returnValue=false;'
240
2021-12-17
jrmu
>\$EditText</textarea><br />
241
2021-12-17
jrmu
$[Author]: <input type='text' name='author' value='\$Author' />
242
2021-12-17
jrmu
<input type='checkbox' name='diffclass' value='minor' \$DiffClassMinor />
243
2021-12-17
jrmu
$[This is a minor edit]<br />
244
2021-12-17
jrmu
<input type='submit' name='post' value=' $[Save] ' />
245
2021-12-17
jrmu
<input type='submit' name='preview' value=' $[Preview] ' />
246
2021-12-17
jrmu
<input type='reset' value=' $[Reset] ' /></form></div>");
247
2021-12-17
jrmu
if (@$_POST['preview'])
248
2021-12-17
jrmu
SDV($PagePreviewFmt, "<div id='wikipreview'>
249
2021-12-17
jrmu
<h2 class='wikiaction'>$[Preview \$FullName]</h2>
250
2021-12-17
jrmu
<p><b>$[Page is unsaved]</b></p>
251
2021-12-17
jrmu
\$PreviewText
252
2021-12-17
jrmu
<hr /><p><b>$[End of preview -- remember to save]</b><br />
253
2021-12-17
jrmu
<a href='#top'>$[Top]</a></p></div>");
254
2021-12-17
jrmu
SDV($HandleEditFmt, array(&$PageStartFmt,
255
2021-12-17
jrmu
&$PageEditFmt, 'wiki:$[PmWiki.EditQuickReference]', &$PagePreviewFmt,
256
2021-12-17
jrmu
&$PageEndFmt));
257
2021-12-17
jrmu
$EditMessageFmt = implode('', $MessagesFmt) . $EditMessageFmt;
258
2021-12-17
jrmu
if ($action=='edit' && IsEnabled($EnableGUIButtons, 0))
259
2021-12-17
jrmu
array_push($EditFunctions, 'GUIEdit');
260
2021-12-17
jrmu
} else $MessagesFmt[] = @$EditMessageFmt;
261
2021-12-17
jrmu
262
2021-12-17
jrmu
263
2021-12-17
jrmu
function GUIEdit($pagename, &$page, &$new) {
264
2021-12-17
jrmu
global $EditMessageFmt;
265
2021-12-17
jrmu
$EditMessageFmt .= GUIButtonCode($pagename);
266
2021-12-17
jrmu
}
267
2021-12-17
jrmu
268
2021-12-17
jrmu
## mainpages:
269
2021-12-17
jrmu
## In 2.0.beta44 several utility pages change location to the new Site
270
2021-12-17
jrmu
## group. These settings cause some skins (that use translations)
271
2021-12-17
jrmu
## to know to link to the new locations.
272
2021-12-17
jrmu
if (@$Transition['mainpages']) {
273
2021-12-17
jrmu
XLSDV('en', array(
274
2021-12-17
jrmu
'Main/SearchWiki' => XL('Site/Search'),
275
2021-12-17
jrmu
'PmWiki.EditQuickReference' => XL('Site/EditQuickReference'),
276
2021-12-17
jrmu
'PmWiki.UploadQuickReference' => XL('Site/UploadQuickReference'),
277
2021-12-17
jrmu
));
278
2021-12-17
jrmu
}
279
2021-12-17
jrmu
IRCNow