Difference between revisions of "Copy.php"

From Organic Design wiki
m
m ({{legacy}}, Category:MediaWiki)
 
(18 intermediate revisions by the same user not shown)
Line 1: Line 1:
<?
+
{{legacy}}
global $wgContLang,$wgArticlePath,$xwIsAdmin;
+
<php><?
 +
global $wgContLang,$wgArticlePath,$xwAnonymous;
 +
$xwIsAdmin = true;
  
 
# Get copy-target and summary-text from form
 
# Get copy-target and summary-text from form
Line 9: Line 11:
 
xwGetProperty($properties, 'copy/action', $action);
 
xwGetProperty($properties, 'copy/action', $action);
  
if ($target) {
+
if ($summary) $summary = " : $summary";
# Perform the operation if target defined (called on data event)
+
if (!$xwIsAdmin) $action = 'copy';
 
+
$target = ucfirst(str_replace(' ', '_', $target));
if ($summary) $summary = " : $summary";
+
$ot = Title::newFromText($title);
if (!$xwIsAdmin) $action = 'copy';
+
$nt = Title::newFromText($target);
$target = ucfirst(str_replace(' ', '_', $target));
+
$ns = $ot->getNamespace();
$ot = Title::newFromText($title);
+
if ($nstxt = $wgContLang->getNsText($ns)) $nstxt .= ':';
$nt = Title::newFromText($target);
+
$err = $msg = '';
$ns = $ot->getNamespace();
+
$link = str_replace('$1','',$wgArticlePath);
$nstxt = $wgContLang->getNsText($ns).':';
+
$olink = $action == 'rename' ? ' class="new"' : '';
$err = $msg = '';
+
$olink = "<a$olink href=\"$link$title\">$title</a>";
$link = str_replace('$1','',$wgArticlePath);
+
$nlink = "<a href=\"$link$target\">$target</a>";
$olink = $action == 'rename' ? ' class="new"' : '';
 
$olink = "<a$olink href=\"$link$title\">$title</a>";
 
$nlink = "<a href=\"$link$target\">$target</a>";
 
  
 +
if ($target && !$xwAnonymous) {
 
# Create list of articles to apply the process to (main, talk, xml)
 
# Create list of articles to apply the process to (main, talk, xml)
 
$list = array($nstxt);
 
$list = array($nstxt);
 
if ($xml) ereg('^Xml:',$title)
 
if ($xml) ereg('^Xml:',$title)
? $msg .= "<li>Properties not copied, [[$title]] is already a properties article!</li>"
+
? $msg .= "<li>Properties not copied, $olink is already a properties article!</li>"
 
: array_push($list,"Xml:$nstxt");
 
: array_push($list,"Xml:$nstxt");
 
if ($talk) $ns & 1
 
if ($talk) $ns & 1
? $msg .= "<li>Talk page not copied, [[$title]] is already a talk page!</li>"
+
? $msg .= "<li>Talk page not copied, $olink is already a talk page!</li>"
 
: array_push($list,$wgContLang->getNsText($ns|1).':');
 
: array_push($list,$wgContLang->getNsText($ns|1).':');
  
Line 40: Line 40:
 
$ot = Title::newFromText($nstxt.$title);
 
$ot = Title::newFromText($nstxt.$title);
 
$nt = Title::newFromText($nstxt.$target);
 
$nt = Title::newFromText($nstxt.$target);
 +
$olink = $action == 'rename' ? ' class="new"' : '';
 +
$olink = "<a$olink href=\"$link$nstxt$title\">$nstxt$title</a>";
 +
$nlink = "<a href=\"$link$nstxt$target\">$nstxt$target</a>";
 
if ($ot->getArticleID() == 0) $msg .= $err = "<li>$nstxt"."Article does't exist</li>";
 
if ($ot->getArticleID() == 0) $msg .= $err = "<li>$nstxt"."Article does't exist</li>";
 
else if ($nt->getArticleID()) $msg .= $err = "<li><b>Could not $action to $nlink because it already exists!</b></li>";
 
else if ($nt->getArticleID()) $msg .= $err = "<li><b>Could not $action to $nlink because it already exists!</b></li>";
Line 46: Line 49:
 
$na = new Article($nt);
 
$na = new Article($nt);
 
if ($action == 'copy') {
 
if ($action == 'copy') {
$na->insertNewArticle($article, "[[talk:copy.php|Copied]] from [[$nstxt$title]]$summary", false, false);
+
$text = xwArticleContent($nstxt.$title);
 +
$na->insertNewArticle($text, "[[talk:copy.php|Copied]] from [[$nstxt$title]]$summary", false, false);
 
$msg .= "<li>New copy of $olink successfully created as $nlink</li>";
 
$msg .= "<li>New copy of $olink successfully created as $nlink</li>";
 
}
 
}
Line 56: Line 60:
 
if ($action == 'rename') {
 
if ($action == 'rename') {
 
$dbw =& wfGetDB(DB_MASTER);
 
$dbw =& wfGetDB(DB_MASTER);
$dbw->delete('cur', array('cur_namespace' => $ns, 'cur_title' => $title));
+
$okey = $ot->getDBkey();
$dbw->delete('old', array('old_namespace' => $ns, 'old_title' => $title));
+
$dbw->delete('cur', array('cur_namespace' => $ns, 'cur_title' => $okey));
$dbw->delete('recentchanges', array('rc_namespace' => $ns, 'rc_title' => $title));
+
$dbw->delete('old', array('old_namespace' => $ns, 'old_title' => $okey));
 +
$dbw->delete('recentchanges', array('rc_namespace' => $ns, 'rc_title' => $okey));
 
}
 
}
 
}
 
}
Line 79: Line 84:
 
<td>".($xwIsAdmin?"<input type=radio name=\"xpath:/properties/copy:action\" value=rename checked>Rename
 
<td>".($xwIsAdmin?"<input type=radio name=\"xpath:/properties/copy:action\" value=rename checked>Rename
 
&nbsp;&nbsp;<input type=radio name=\"xpath:/properties/copy:action\" value=redir>Redirect
 
&nbsp;&nbsp;<input type=radio name=\"xpath:/properties/copy:action\" value=redir>Redirect
&nbsp;&nbsp;":'')."<input type=radio name=\"xpath:/properties/copy:action\" value=copy'.($xwIsAdmin?'':' checked').'>Copy
+
&nbsp;&nbsp;":'')."<input type=radio name=\"xpath:/properties/copy:action\" value=copy".($xwIsAdmin?' ':' checked').">Copy
 
<tr><td><td><input type=checkbox checked=checked value=1 name=\"xpath:/properties/copy:xml\">
 
<tr><td><td><input type=checkbox checked=checked value=1 name=\"xpath:/properties/copy:xml\">
 
Also apply to <b>properties</b>
 
Also apply to <b>properties</b>
Line 86: Line 91:
 
<tr><td><td><input type=submit value=\"  Commit  \">
 
<tr><td><td><input type=submit value=\"  Commit  \">
 
<tr><td colspan=2><br><br><br>
 
<tr><td colspan=2><br><br><br>
 +
<h3>Bugs</h3>
 +
<ul>
 +
<li>Rename's not showing up in changes</li>
 +
<li>$ in name not working</li>
 +
</ul>
 
<h3>Help</h3>
 
<h3>Help</h3>
<b>Rename</b><br>
+
<i>For information and discussion about this form, see <a href=\"".$link."talk:copy.php\">talk:copy.php</a></i><br><br>
 +
<b>Rename</b> <i>(admin only)</i><br>
 
Changes the title of the article applying to current content and all the history.<br>
 
Changes the title of the article applying to current content and all the history.<br>
 
The original title becomes unused and all links to that title will become red creation links.<br><br>
 
The original title becomes unused and all links to that title will become red creation links.<br><br>
<b>Redirect</b><br>
+
<b>Redirect</b> <i>(admin only)</i><br>
 
Changes the title of the article applying to current content and all the history.<br>
 
Changes the title of the article applying to current content and all the history.<br>
 
Any links referring to the original title are automatically redirected to the new title<br>
 
Any links referring to the original title are automatically redirected to the new title<br>
Line 101: Line 112:
 
$article = preg_replace('/(?<=<!-- start content -->).+(?=<!-- end content -->)/s',$msg,$article);
 
$article = preg_replace('/(?<=<!-- start content -->).+(?=<!-- end content -->)/s',$msg,$article);
 
}
 
}
 
+
?></php>
?>
 

Latest revision as of 11:56, 18 July 2007

Legacy.svg Legacy: This article describes a concept that has been superseded in the course of ongoing development on the Organic Design wiki. Please do not develop this any further or base work on this concept, this is only useful for a historic record of work done. You may find a link to the currently used concept or function in this article, if not you can contact the author to find out what has taken the place of this legacy item.

<php><? global $wgContLang,$wgArticlePath,$xwAnonymous; $xwIsAdmin = true;

  1. Get copy-target and summary-text from form

xwGetProperty($properties, 'copy/target', $target); xwGetProperty($properties, 'copy/summary', $summary); xwGetProperty($properties, 'copy/xml', $xml); # move/copy properties too? xwGetProperty($properties, 'copy/talk', $talk); # move/copy talk too? xwGetProperty($properties, 'copy/action', $action);

if ($summary) $summary = " : $summary"; if (!$xwIsAdmin) $action = 'copy'; $target = ucfirst(str_replace(' ', '_', $target)); $ot = Title::newFromText($title); $nt = Title::newFromText($target); $ns = $ot->getNamespace(); if ($nstxt = $wgContLang->getNsText($ns)) $nstxt .= ':'; $err = $msg = ; $link = str_replace('$1',,$wgArticlePath); $olink = $action == 'rename' ? ' class="new"' : ; $olink = "<a$olink href=\"$link$title\">$title</a>"; $nlink = "<a href=\"$link$target\">$target</a>";

if ($target && !$xwAnonymous) { # Create list of articles to apply the process to (main, talk, xml) $list = array($nstxt); if ($xml) ereg('^Xml:',$title)

? $msg .= "

  • Properties not copied, $olink is already a properties article!
  • "

    : array_push($list,"Xml:$nstxt"); if ($talk) $ns & 1

    ? $msg .= "

  • Talk page not copied, $olink is already a talk page!
  • "

    : array_push($list,$wgContLang->getNsText($ns|1).':');

    # Loop through the list and apply the requested action to each $title = $ot->getText(); $target = $nt->getText(); foreach ($list as $i => $nstxt) { $ot = Title::newFromText($nstxt.$title); $nt = Title::newFromText($nstxt.$target); $olink = $action == 'rename' ? ' class="new"' : ; $olink = "<a$olink href=\"$link$nstxt$title\">$nstxt$title</a>"; $nlink = "<a href=\"$link$nstxt$target\">$nstxt$target</a>";

    if ($ot->getArticleID() == 0) $msg .= $err = "

  • $nstxt"."Article does't exist
  • "; else if ($nt->getArticleID()) $msg .= $err = "

  • Could not $action to $nlink because it already exists!
  • ";

    else { $oa = new Article($ot); $na = new Article($nt); if ($action == 'copy') { $text = xwArticleContent($nstxt.$title); $na->insertNewArticle($text, "Copied from $nstxt$title$summary", false, false);

    $msg .= "

  • New copy of $olink successfully created as $nlink
  • ";

    } else {

    if (($err = $ot->moveTo($nt)) != 1) $msg .= $err = "

  • Move from $olink to $nlink failed: $err
  • ";

    else { $err = ;

    $msg .= "

  • $olink successfully moved to $nlink
  • ";

    if ($action == 'rename') { $dbw =& wfGetDB(DB_MASTER); $okey = $ot->getDBkey(); $dbw->delete('cur', array('cur_namespace' => $ns, 'cur_title' => $okey)); $dbw->delete('old', array('old_namespace' => $ns, 'old_title' => $okey)); $dbw->delete('recentchanges', array('rc_namespace' => $ns, 'rc_title' => $okey)); } } } } if (($i == 0) && $err) { $msg = $err; break; } # bail if problem moving the main article }

    $article = preg_replace('/(?<=)(.+)(?=)/s',"

      $msg



    $1",$article);

    } else { # Replace article content with form (called on view event bu xpath-query in button-url)

    $msg = "

    Rename/copy article:

    <form action=\"/wiki/index.php\" method=\"GET\">

    <input type=hidden name=title value=\"$title\"> <input type=hidden name=\"xpath:/properties:view\" value=\"$tTitle\"> <input type=hidden name=\"xpath:/properties:copy\">

    New title:<input type=text name=\"xpath:/properties/copy:target\">
    Reason:<input type=text name=\"xpath:/properties/copy:summary\">
    Action: ".($xwIsAdmin?"<input type=radio name=\"xpath:/properties/copy:action\" value=rename checked>Rename

      <input type=radio name=\"xpath:/properties/copy:action\" value=redir>Redirect   ":)."<input type=radio name=\"xpath:/properties/copy:action\" value=copy".($xwIsAdmin?' ':' checked').">Copy

    <input type=checkbox checked=checked value=1 name=\"xpath:/properties/copy:xml\">

    Also apply to properties

    <input type=checkbox checked=checked value=1 name=\"xpath:/properties/copy:talk\">

    Also apply to discussion

    <input type=submit value=\" Commit \">



    Bugs

    • Rename's not showing up in changes
    • $ in name not working

    Help

    For information and discussion about this form, see <a href=\"".$link."talk:copy.php\">talk:copy.php</a>

    Rename (admin only)
    Changes the title of the article applying to current content and all the history.
    The original title becomes unused and all links to that title will become red creation links.

    Redirect (admin only)
    Changes the title of the article applying to current content and all the history.
    Any links referring to the original title are automatically redirected to the new title
    (unless redir=no is included in the query-string).
    This is the action MediaWiki takes when \"move\" is applied to an article.

    Copy
    Creates a new article with the same content as the original, but exhibiting no history.
    The original title is left unaffected by this operation.

    </form>";

    $article = preg_replace('/(?<=).+(?=)/s',$msg,$article); } ?></php>