* Fix explicit s-maxage=0 on raw pages; should help with proxy issues in
[lhc/web/wiklou.git] / includes / EditPage.php
index c174a28..128b0e4 100644 (file)
@@ -53,7 +53,7 @@ class EditPage {
                if ( !$wgUseMetadataEdit ) return ;
                if ( $wgMetadataWhitelist == '' ) return ;
                $s = '' ;
-               $t = $this->mArticle->getContent ( true ) ;
+               $t = $this->mArticle->getContent();
 
                # MISSING : <nowiki> filtering
 
@@ -90,7 +90,7 @@ class EditPage {
                $sat = array () ; # stand-alone-templates; must be lowercase
                $wl_title = Title::newFromText ( $wgMetadataWhitelist ) ;
                $wl_article = new Article ( $wl_title ) ;
-               $wl = explode ( "\n" , $wl_article->getContent(true) ) ;
+               $wl = explode ( "\n" , $wl_article->getContent() ) ;
                foreach ( $wl AS $x )
                {
                        $isentry = false ;
@@ -153,7 +153,8 @@ class EditPage {
         * the newly-edited page.
         */
        function edit() {
-               global $wgOut, $wgUser, $wgRequest, $wgTitle;
+               global $wgOut, $wgUser, $wgRequest, $wgTitle,
+                      $wgEmailConfirmToEdit;
 
                if ( ! wfRunHooks( 'AlternateEdit', array( &$this  ) ) )
                        return;
@@ -176,7 +177,7 @@ class EditPage {
 
                if ( ! $this->mTitle->userCanEdit() ) {
                        wfDebug( "$fname: user can't edit\n" );
-                       $wgOut->readOnlyPage( $this->mArticle->getContent( true ), true );
+                       $wgOut->readOnlyPage( $this->mArticle->getContent(), true );
                        wfProfileOut( $fname );
                        return;
                }
@@ -197,11 +198,17 @@ class EditPage {
                                return;
                        } else {
                                wfDebug( "$fname: read-only page\n" );
-                               $wgOut->readOnlyPage( $this->mArticle->getContent( true ), true );
+                               $wgOut->readOnlyPage( $this->mArticle->getContent(), true );
                                wfProfileOut( $fname );
                                return;
                        }
                }
+               if ($wgEmailConfirmToEdit && !$wgUser->isEmailConfirmed()) {
+                       wfDebug("$fname: user must confirm e-mail address\n");
+                       $this->userNotConfirmedPage();
+                       wfProfileOut($fname);
+                       return;
+               }
                if ( !$this->mTitle->userCan( 'create' ) && !$this->mTitle->exists() ) {
                        wfDebug( "$fname: no create permission\n" );
                        $this->noCreatePermission();
@@ -215,7 +222,7 @@ class EditPage {
                        } else if ( $this->diff ) {
                                $this->formtype = 'diff';
                        } else {
-                               $wgOut->readOnlyPage( $this->mArticle->getContent( true ) );
+                               $wgOut->readOnlyPage( $this->mArticle->getContent() );
                                wfProfileOut( $fname );
                                return;
                        }
@@ -424,7 +431,7 @@ class EditPage {
                        if(isset($introtitle) && $introtitle->userCanRead()) {
                                $rev=Revision::newFromTitle($introtitle);
                                if($rev) {
-                                       $wgOut->addWikiText($rev->getText());
+                                       $wgOut->addSecondaryWikiText($rev->getText());
                                        $addstandardintro=false;
                                }
                        }
@@ -651,7 +658,7 @@ class EditPage {
         */
        function initialiseForm() {
                $this->edittime = $this->mArticle->getTimestamp();
-               $this->textbox1 = $this->mArticle->getContent( true );
+               $this->textbox1 = $this->mArticle->getContent();
                $this->summary = '';
                if ( !$this->mArticle->exists() && $this->mArticle->mTitle->getNamespace() == NS_MEDIAWIKI )
                        $this->textbox1 = wfMsgWeirdKey ( $this->mArticle->mTitle->getText() ) ;
@@ -685,7 +692,7 @@ class EditPage {
                        $wgOut->addWikiText( wfMsg( 'explainconflict' ) );
 
                        $this->textbox2 = $this->textbox1;
-                       $this->textbox1 = $this->mArticle->getContent( true );
+                       $this->textbox1 = $this->mArticle->getContent();
                        $this->edittime = $this->mArticle->getTimestamp();
                } else {
 
@@ -722,11 +729,22 @@ class EditPage {
                        $wgOut->addWikiText( wfMsg( 'readonlywarning' ) );
                } else if ( $this->isCssJsSubpage and 'preview' != $this->formtype) {
                        $wgOut->addWikiText( wfMsg( 'usercssjsyoucanpreview' ));
+               } else if( $wgUser->isAnon() && $this->formtype != 'preview' ) {
+                       $wgOut->addWikiText( wfMsg( 'anoneditwarning' ) );
+               }
+               
+               if( $this->mTitle->isProtected( 'edit' ) ) {
+                       if( $this->mTitle->isSemiProtected() ) {
+                               $notice = wfMsg( 'semiprotectedpagewarning' );
+                               if( wfEmptyMsg( 'semiprotectedpagewarning', $notice ) || $notice == '-' ) {
+                                       $notice = '';
+                               }
+                       } else {
+                               $notice = wfMsg( 'protectedpagewarning' );
+                       }
+                       $wgOut->addWikiText( $notice );
                }
-               if( $this->mTitle->isProtected('edit') ) {
-                       $wgOut->addWikiText( wfMsg( 'protectedpagewarning' ) );
-               }
-
+               
                $kblength = (int)(strlen( $this->textbox1 ) / 1024);
                if( $kblength > 29 ) {
                        $wgOut->addWikiText( wfMsg( 'longpagewarning', $wgLang->formatNum( $kblength ) ) );
@@ -997,6 +1015,14 @@ END
                $outText = '';
                $templates = $this->mArticle->getUsedTemplates();
                if ( count( $templates ) > 0 ) {
+                       # Do a batch existence check
+                       $batch = new LinkBatch;
+                       foreach( $templates as $title ) {
+                               $batch->addObj( $title );
+                       }
+                       $batch->execute();
+
+                       # Construct the HTML
                        $outText = '<br />'. wfMsg( 'templatesused' ) . '<ul>';
                        foreach ( $templates as $titleObj ) {
                                $outText .= '<li>' . $sk->makeLinkObj( $titleObj ) . '</li>';
@@ -1093,6 +1119,7 @@ END
                        } else if(preg_match("/\\.js$/", $wgTitle->getText() ) ) {
                                $previewtext = wfMsg('userjspreview');
                        }
+                        $parserOptions->setTidy(true);
                        $parserOutput = $wgParser->parse( $previewtext , $wgTitle, $parserOptions );
                        $wgOut->addHTML( $parserOutput->mText );
                        wfProfileOut( $fname );
@@ -1100,7 +1127,7 @@ END
                } else {
                        # if user want to see preview when he edit an article
                        if( $wgUser->getOption('previewonfirst') and ($this->textbox1 == '')) {
-                               $this->textbox1 = $this->mArticle->getContent(true);
+                               $this->textbox1 = $this->mArticle->getContent();
                        }
 
                        $toparse = $this->textbox1;
@@ -1112,7 +1139,7 @@ END
                        }
 
                        if ( $this->mMetaData != "" ) $toparse .= "\n" . $this->mMetaData ;
-
+                        $parserOptions->setTidy(true);
                        $parserOutput = $wgParser->parse( $this->mArticle->preSaveTransform( $toparse ) ."\n\n",
                                        $wgTitle, $parserOptions );
 
@@ -1146,6 +1173,22 @@ END
                $wgOut->returnToMain( false );
        }
 
+       /**
+        * Creates a basic error page which informs the user that
+        * they have to validate their email address before being
+        * allowed to edit.
+        */
+       function userNotConfirmedPage() {
+
+               global $wgOut;
+
+               $wgOut->setPageTitle( wfMsg( 'confirmedittitle' ) );
+               $wgOut->setRobotpolicy( 'noindex,nofollow' );
+               $wgOut->setArticleRelated( false );
+               $wgOut->addWikiText( wfMsg( 'confirmedittext' ) );
+               $wgOut->returnToMain( false );
+       }
+
        /**
         * @todo document
         */