PageProtection/Patch for PageProtection1.4 and MediaWiki1.6.8

From Meta, a Wikimedia project coordination wiki
Jump to navigation Jump to search
Ambox outdated content.svg

This page is kept for historical interest. Its content is outdated or may be wrong.

You may find more up-to-date information on the www.mediawiki.org website.

MediaWiki logo
Blue Glass Arrow.svg MediaWiki.svg
A proposal to move this page to MediaWiki.org was rejected.
Because the Template:MoveToMediaWiki tag was on the page for a year without any MediaWiki.org importers seeing fit to transwiki it, the move proposal was regarded as rejected by the MediaWiki.org community.


diff -r -u PageProtection-1.4/AccessList.php PageProtection-1.4-for-1.6.8/AccessList.php
--- PageProtection-1.4/AccessList.php   2006-07-21 09:30:12.000000000 +0200
+++ PageProtection-1.4-for-1.6.8/AccessList.php 2006-07-21 09:31:21.000000000 +0200
@@ -135,7 +135,7 @@
     {
         foreach($users as $user)
         {
-            $this->AddUSer($user);
+            $this->AddUser($user);
         }
     }

diff -r -u PageProtection-1.4/ErrorHandler.php PageProtection-1.4-for-1.6.8/ErrorHandler.php
--- PageProtection-1.4/ErrorHandler.php 2006-07-21 09:30:24.000000000 +0200
+++ PageProtection-1.4-for-1.6.8/ErrorHandler.php       2006-07-21 13:09:43.000000000 +0200
@@ -8,6 +8,7 @@
     var $mShow;
     var $mPage;
     var $mAccess;
+    var $mParser1;

     /**
     * Constructor.
@@ -16,11 +17,12 @@
     *                (warning, page, none, text, crypt)
     * @param page Optional name of page to display if show="page"
     */
-    function ErrorHandler($access, $show = "warning", $page = "")
+    function ErrorHandler($access, &$parser, $show = "warning", $page = "")
     {
         $this->mShow = $show;
         $this->mPage = $page;
         $this->mAccess = $access;
+        $this->mParser1 = $parser;
     }

     /**
@@ -67,7 +69,7 @@
         $msg = str_replace(VAR_GROUPS, $this->mAccess->getGroupList(), $msg);

         if ($parseWiki) {
-            return $wgOut->parse($msg);
+            return ($this->mParser1->parseTag ($msg));
         } else {
             return $msg;
         }
@@ -79,7 +81,7 @@
     */
     function getErrorPage() {
         $tit = Title::newFromText($this->mPage);
-        $art = new Article(&$tit);
+        $art = new Article($tit);
         return $this->formatMessage($art->getContent());
     }

diff -r -u PageProtection-1.4/PageProtection.php PageProtection-1.4-for-1.6.8/PageProtection.php
--- PageProtection-1.4/PageProtection.php       2006-07-21 09:30:45.000000000 +0200
+++ PageProtection-1.4-for-1.6.8/PageProtection.php     2006-07-21 13:14:11.000000000 +0200
@@ -61,12 +61,14 @@
     global $wgUser;
     global $wgOut;

-    $protect = new ProtectPage();
+    $protect = new ProtectPage($parser);
     $protect->initShow($params["users"], $params["groups"], $params["show"]);

-    if ($protect->hasAccess(&$wgUser)) {
+    if ($protect->hasAccess($wgUser)) {
         global $wgRequest;
-        return $wgOut->parse($protect->mEnc->decrypt($text));
+        $text = $protect->mEnc->decrypt($text);
+        $text = $protect->parseTag($text);
+        return ($text);
     }

     $show = $params["show"];
@@ -90,7 +92,7 @@
 function protectSave(&$article, &$user, &$text, &$summary, &$minoredit, &$watchthis, &$sectionanchor) {
 //    die($text);
     $protect = new ProtectPage();
-    $protect->mParser = new ProtectionParser($text,&$protect->mEnc);
+    $protect->mParser = new ProtectionParser($text, $protect->mEnc);
     $protect->mParser->parseText();
     $protect->encryptTags($text, $user->getName());

@@ -114,11 +116,11 @@
         return $editpage;
     }

-    if ($protect->mAccess->hasAccess(&$wgUser) ) {
+    if ($protect->mAccess->hasAccess($wgUser) ) {
         $editpage->mArticle->mContent =  $protect->decryptPage();
         return true;
     } else {
-        $err = new ErrorHandler($protect->mAccess);
+        $err = new ErrorHandler($protect->mAccess, null);
         return $err->stopEditing();
     }

diff -r -u PageProtection-1.4/ProtectionParser.php PageProtection-1.4-for-1.6.8/ProtectionParser.php
--- PageProtection-1.4/ProtectionParser.php     2006-07-21 09:30:51.000000000 +0200
+++ PageProtection-1.4-for-1.6.8/ProtectionParser.php   2006-07-21 13:16:48.000000000 +0200
@@ -8,7 +8,6 @@
 class ProtectionParser
 {
     var $mContent = array();
-    var $mTags = array();
     var $mParams = array();
     var $mParsedText;
     var $mText;
@@ -59,25 +58,24 @@

     /**
     * Parses a text for protect-tags and stores the texts in member-fields.
-    * The resulting array are mContent, mTags, mParams and mSections.
+    * The resulting array are mContent, mParams and mSections.
     */
     function parseText() {
         $this->mContent = array();
-        $this->mTags = array();
         $this->mParams = array();
-        
-        $this->mParsedText = Parser::extractTagsAndParams(PROTECT_TAG, 
-            $this->mText,
-            &$this->mContent, 
-            &$this->mTags,
-            &$this->mParams );
+       
+        $this->mElements = array (PROTECT_TAG);
+       $this->mParsedText = Parser::extractTagsAndParams(
+               $this->mElements,
+               $this->mText,
+               $this->mContent );

         // decrypt all tags that are stored encrypted
         foreach($this->mContent as $key => $content)
         {
-            $dec = $this->mEnc->decrypt($content);
+            $dec = $this->mEnc->decrypt($content[1]);
             if ($dec != "") {
-                $this->mContent[$key] = $dec;
+                $this->mContent[$key][1] = $dec;
             }
         }
     }
@@ -91,9 +89,9 @@
     function getAccessList()
     {
         $list = new AccessList();
-        foreach ($this->mParams as $param) {
-            $list->RestrictUsers($param["users"]);
-            $list->RestrictGroups($param["groups"]);
+        foreach ($this->mContent as $param) {
+            $list->RestrictUsers($param[2]["users"]);
+            $list->RestrictGroups($param[2]["groups"]);
         }
         return $list;
     }
@@ -106,9 +104,13 @@
     function getDecrypted() {
         $text = $this->mParsedText;
         foreach ($this->mContent as $rand => $cnt) {
+            $mTags = $cnt[0];
+           foreach ($cnt[2] as $tag => $value) {
+                $mTags .= " $tag=\"$value\"";
+            }
             $text = str_replace($rand,
-                $this->mTags[$rand]
-                    .$this->mEnc->decrypt($cnt)
+                "<" . $mTags . ">"
+                    .$this->mEnc->decrypt($cnt[1])
                     ."</protect>",
                 $text);
         }
@@ -120,7 +122,7 @@
     * @return true if Page is protected.
     */
     function isProtected() {
-        if (count($this->mTags) != 0) {
+        if (count($this->mContent) != 0) {
             return true;
         }
         return false;
@@ -136,18 +138,18 @@
         require_once("ProtectTag.php");
         $text = $this->mParsedText;
         foreach ($this->mContent as $rand => $cnt) {
-            $access = new AccessList(   $this->mParams[$rand]["users"],
-                                        $this->mParams[$rand]["groups"]);
+            $access = new AccessList($cnt[2]["users"],
+                                     $cnt[2]["groups"]);
             $access->AddUser($userName);

             $tag = new ProtectTag();
             $tag->setAccessList($access);
-            $tag->setShow($this->mParams[$rand]["show"]);
-            $tag->setErrorPage($this->mParams[$rand]["errorpage"]);
+            $tag->setShow($cnt[2]["show"]);
+            $tag->setErrorPage($cnt[2]["errorpage"]);

             $text = str_replace($rand,
                 $tag->getStart()."\n"
-                    .$this->mEnc->encrypt($cnt)."\n"
+                    .$this->mEnc->encrypt($cnt[1])."\n"
                     .$tag->getEnd(),
                 $text);
         }
diff -r -u PageProtection-1.4/ProtectPage.php PageProtection-1.4-for-1.6.8/ProtectPage.php
--- PageProtection-1.4/ProtectPage.php  2006-07-21 09:30:56.000000000 +0200
+++ PageProtection-1.4-for-1.6.8/ProtectPage.php        2006-07-21 13:19:10.000000000 +0200
@@ -15,13 +15,15 @@
     var $mEnc = null;
     var $mAccess = null;
     var $mParser = null;
+    var $mParser1 = null;
     var $mShow = "";

     /**
     * Constructor.
     */
-    function ProtectPage() {
+    function ProtectPage(&$parser) {
         $this->mEnc = new Encryption();
+        $this->mParser1 = $parser;
     }

     /**
@@ -55,7 +57,7 @@
     *                   (usually current username)
     */
     function encryptTags(&$text, $userName) {
-        $this->mParser = new ProtectionParser($text, &$this->mEnc);
+        $this->mParser = new ProtectionParser($text, $this->mEnc);
         $this->mParser->parseText();
         $text = $this->mParser->getEncrypted($userName);
     }
@@ -66,7 +68,7 @@
     * @editpage EditPage object
     */
     function initEdit($editpage) {
-        $this->mParser = new ProtectionParser($editpage, &$this->mEnc);
+        $this->mParser = new ProtectionParser($editpage, $this->mEnc);
         $this->mParser->parseText();
         $this->mAccess = $this->mParser->getAccessList();
     }
@@ -78,6 +80,20 @@
     function decryptPage() {
         return $this->mParser->getDecrypted();
     }
+    /*
+     * From Cipe.php
+     */
+    function parseTag ($text) {
+        $text = $this->mParser1->parse( $text,
+                                        $this->mParser1->mTitle,
+                                        $this->mParser1->mOptions,
+                                        false, false );
+        $text = $text->getText();
+        $text = preg_replace ('~^<p>\s*~', '', $text );
+        $text = preg_replace ('~\s*</p>\s*~', '', $text );
+        $text = preg_replace ('~\n$~', '', $text );
+        return ($text);
+    }
 }

 ?>