/** * Called to display the Special:Merge page * * @param unknown_type $par * @param unknown_type $specialPage */ function wfSpecialMerge($par = NULL, $specialPage) { global $wgOut, $wgScriptPath, $wgCommandLineMode, $wrSidebarHtml, $wgMemc, $wgUser; // $sideText = ''; $mergeForm = new MergeForm(); // read query parameters into variables $mergeForm->readQueryParms($par); if (!$wgUser->isLoggedIn()) { if (!$wgCommandLineMode && !isset($_COOKIE[session_name()])) { User::SetupSession(); } $mergeTargetTitle = $mergeForm->getMergeTargetTitle(); $requestData = array(); if ($mergeTargetTitle) { $requestData['returnto'] = $mergeTargetTitle->getPrefixedUrl(); } $request = new FauxRequest($requestData); require_once 'includes/SpecialUserlogin.php'; $form = new LoginForm($request); $form->mainLoginForm("You need to sign in to merge pages<br/><br/>", ''); return; } if ($wgUser->isBlocked()) { $wgOut->blockedPage(); return; } if (wfReadOnly()) { $wgOut->readOnlyPage(); return; } $isGedcom = $mergeForm->isGedcom(); $wgOut->setPageTitle($isGedcom ? 'Update pages' : 'Merge pages'); if ($mergeForm->getFormAction() == 'Cancel') { $output = '<H2>Merge Cancelled</H2><p>You can use the <b>back</b> button on your browser to navigate back to where you were, or select an item from the menu.</p>'; } else { if ($mergeForm->getFormAction() == 'NotMatch') { $output = $mergeForm->getNotMatchResults(); } else { if ($mergeForm->getFormAction() != 'Merge' || !$mergeForm->preMerge()) { $output = '<H2>Unable to merge</H2>' . $mergeForm->getWarnings() . '<p>Press the <b>back</b> button on your browser to go back to the Compare page.</p>'; } else { if ($mergeForm->isSecondPhase()) { // disallow merging the same page twice in a row (result of double-click) if ($mergeForm->isGedcom()) { $cacheKey = 'mergekey:ged:' . $mergeForm->gedcomId . $mergeForm->gedcomKey; } else { $cacheKey = 'mergekey:' . $wgUser->getID() . $mergeForm->editToken; } if (!$wgMemc->get($cacheKey)) { $wgMemc->set($cacheKey, 't', 5); $output = $mergeForm->doMerge(); } } else { $wgOut->addScript("<script type=\"text/javascript\" src=\"{$wgScriptPath}/merge.10.js\"></script>"); // $mergeText = $isGedcom ? 'update' : 'merge'; // $mergeButton = $isGedcom ? 'Update' : 'Merge'; // $sideText = '<h3>Instructions</h3><p>' . // ($mergeForm->getMergesCount() > 1 ? "For each set of pages to $mergeText, check" : 'Check') . // " the boxes next to the pieces of information you want included in the {$mergeText}d page.</p>" . // ($isGedcom ? '<p><b>Updating pages is optional.</b> It is not necessary or desirable to update these pages unless you have more accurate information or reliable sources to add.</b></p>' // : '<p>The <i>target</i> is the page that the other page(s) will be merged into.</p>'). // '<p>The box colors are for your information only:</p>'. // '<p><font color="green">Green</font> boxes mean the information is specific and matches exactly.</p>'. // '<p><font color="yellow">Yellow</font> boxes mean the information is non-specific (missing some pieces) or is a partial match.</p>'. // '<p><font color="red">Red</font> boxes mean the information differs.</p>'. // "<p>Once you have chosen which pieces of information to include, click on the \"$mergeButton\" button at the bottom of the screen to $mergeText the pages.</p>". // '<p>(<a href="/wiki/Help:Merging_pages">more help</a>)</p>'; $output = $mergeForm->getMergeResults(); } } } } // $skin = $wgUser->getSkin(); $wrSidebarHtml = wfMsgWikiHtml('MergeHelp'); $wgOut->addHTML($output); }