<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://katlas.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PasdoMacel</id>
	<title>Knot Atlas - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://katlas.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=PasdoMacel"/>
	<link rel="alternate" type="text/html" href="https://katlas.org/wiki/Special:Contributions/PasdoMacel"/>
	<updated>2026-05-06T01:41:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://katlas.org/index.php?title=ImagePage.php&amp;diff=1692064</id>
		<title>ImagePage.php</title>
		<link rel="alternate" type="text/html" href="https://katlas.org/index.php?title=ImagePage.php&amp;diff=1692064"/>
		<updated>2008-12-18T19:08:57Z</updated>

		<summary type="html">&lt;p&gt;PasdoMacel: bocmontroc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;cvivicnasite&lt;br /&gt;
[[User:Scott]] made some modifications to ImagePage.php, so when following redirects from image pages, the image is not displayed.&lt;br /&gt;
[[Category:Source Code]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * @package MediaWiki&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
if( !defined( &#039;MEDIAWIKI&#039; ) )&lt;br /&gt;
    die();&lt;br /&gt;
&lt;br /&gt;
require_once( &#039;Image.php&#039; );&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Special handling for image description pages&lt;br /&gt;
 * @package MediaWiki&lt;br /&gt;
 */&lt;br /&gt;
class ImagePage extends Article {&lt;br /&gt;
&lt;br /&gt;
    /* private */ var $img;  // Image object this page is shown for. Initilaized in openShowImage, not&lt;br /&gt;
                 // available in doDelete etc.&lt;br /&gt;
&lt;br /&gt;
    function view() {&lt;br /&gt;
        if ( Namespace::getImage() == $this-&amp;gt;mTitle-&amp;gt;getNamespace() ) {&lt;br /&gt;
            $this-&amp;gt;openShowImage();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        Article::view();&lt;br /&gt;
&lt;br /&gt;
        # If the article we&#039;ve just shown is in the &amp;quot;Image&amp;quot; namespace,&lt;br /&gt;
        # follow it with the history list and link list for the image&lt;br /&gt;
        # it describes.&lt;br /&gt;
&lt;br /&gt;
        if ( Namespace::getImage() == $this-&amp;gt;mTitle-&amp;gt;getNamespace() ) {&lt;br /&gt;
            $this-&amp;gt;closeShowImage();&lt;br /&gt;
            $this-&amp;gt;imageHistory();&lt;br /&gt;
            $this-&amp;gt;imageLinks();&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function openShowImage()&lt;br /&gt;
    {&lt;br /&gt;
        global $wgOut, $wgUser, $wgImageLimits, $wgRequest, $wgUseImageResize;&lt;br /&gt;
        $this-&amp;gt;img  = Image::newFromTitle( $this-&amp;gt;mTitle );&lt;br /&gt;
        $full_url  = $this-&amp;gt;img-&amp;gt;getViewURL();&lt;br /&gt;
        $anchoropen = &#039;&#039;;&lt;br /&gt;
        $anchorclose = &#039;&#039;;&lt;br /&gt;
&lt;br /&gt;
        if( $wgUser-&amp;gt;getOption( &#039;imagesize&#039; ) == &#039;&#039; ) {&lt;br /&gt;
            $sizeSel = User::getDefaultOption( &#039;imagesize&#039; );&lt;br /&gt;
        } else {&lt;br /&gt;
            $sizeSel = IntVal( $wgUser-&amp;gt;getOption( &#039;imagesize&#039; ) );&lt;br /&gt;
        }&lt;br /&gt;
        if( !isset( $wgImageLimits[$sizeSel] ) ) {&lt;br /&gt;
            $sizeSel = User::getDefaultOption( &#039;imagesize&#039; );&lt;br /&gt;
        }&lt;br /&gt;
        $max = $wgImageLimits[$sizeSel];&lt;br /&gt;
        $maxWidth = $max[0];&lt;br /&gt;
        $maxHeight = $max[1];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        if ( $this-&amp;gt;img-&amp;gt;exists() ) {&lt;br /&gt;
&lt;br /&gt;
            $sk = $wgUser-&amp;gt;getSkin();&lt;br /&gt;
&lt;br /&gt;
            if ( $this-&amp;gt;img-&amp;gt;getType() != &#039;&#039; ) {&lt;br /&gt;
                # image&lt;br /&gt;
                $width = $this-&amp;gt;img-&amp;gt;getWidth();&lt;br /&gt;
                $height = $this-&amp;gt;img-&amp;gt;getHeight();&lt;br /&gt;
                $msg = wfMsg(&#039;showbigimage&#039;, $width, $height, intval( $this-&amp;gt;img-&amp;gt;getSize()/1024 ) );&lt;br /&gt;
                if ( $width &amp;gt; $maxWidth ) {&lt;br /&gt;
                    $height = floor( $height * $maxWidth / $width );&lt;br /&gt;
                    $width  = $maxWidth;&lt;br /&gt;
                }&lt;br /&gt;
                if ( $height &amp;gt; $maxHeight ) {&lt;br /&gt;
                    $width = floor( $width * $maxHeight / $height );&lt;br /&gt;
                    $height = $maxHeight;&lt;br /&gt;
                }&lt;br /&gt;
                if ( $width != $this-&amp;gt;img-&amp;gt;getWidth() || $height != $this-&amp;gt;img-&amp;gt;getHeight() ) {&lt;br /&gt;
                    if( $wgUseImageResize ) {&lt;br /&gt;
                        $thumbnail = $this-&amp;gt;img-&amp;gt;getThumbnail( $width );&lt;br /&gt;
                        if (    ( $thumbnail == null )&lt;br /&gt;
                             || ( ( ! $this-&amp;gt;img-&amp;gt;mustRender() )&lt;br /&gt;
                                  &amp;amp;&amp;amp; ( $thumbnail-&amp;gt;getSize() &amp;gt; $this-&amp;gt;img-&amp;gt;getSize() ) ) ) {&lt;br /&gt;
                            # the thumbnail is bigger thatn the original image.&lt;br /&gt;
                            # show the original image instead of the thumb.&lt;br /&gt;
                            $url = $full_url;&lt;br /&gt;
                            $width = $this-&amp;gt;img-&amp;gt;getWidth();&lt;br /&gt;
                            $height = $this-&amp;gt;img-&amp;gt;getHeight();&lt;br /&gt;
                        } else {&lt;br /&gt;
                            $url = $thumbnail-&amp;gt;getUrl();&lt;br /&gt;
                        }&lt;br /&gt;
                    } else {&lt;br /&gt;
                        # No resize ability? Show the full image, but scale&lt;br /&gt;
                        # it down in the browser so it fits on the page.&lt;br /&gt;
                        $url = $full_url;&lt;br /&gt;
                    }&lt;br /&gt;
                    $anchoropen  = &amp;quot;&amp;lt;a href=\&amp;quot;{$full_url}\&amp;quot;&amp;gt;&amp;quot;;&lt;br /&gt;
                    $anchorclose = &amp;quot;&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;\n$anchoropen{$msg}&amp;lt;/a&amp;gt;&amp;quot;;&lt;br /&gt;
                } else {&lt;br /&gt;
                    $url = $full_url;&lt;br /&gt;
                }&lt;br /&gt;
# Changes by Scott Morrison, Aug 30, 2005. No rights reserved.&lt;br /&gt;
# try to determine if the image page we&#039;re on contains an image, without messing anything else up!&lt;br /&gt;
#       this is a hack, and someone who knows better should fix it!&lt;br /&gt;
#       in particular, the literal string &amp;quot;Image:&amp;quot; needs to be fixed.&lt;br /&gt;
                $pageTitle = $this-&amp;gt;getTitle();&lt;br /&gt;
                $pageTitle = $pageTitle-&amp;gt;getText();&lt;br /&gt;
                $article = &amp;amp; new Article( Title::newFromText( &amp;quot;Image:&amp;quot;.$pageTitle ) );&lt;br /&gt;
                $content = $article-&amp;gt;getContent( true );&lt;br /&gt;
# now if we&#039;ve been specifically asked not to redirect, or we&#039;re on a normal image page, or , show the image&lt;br /&gt;
# otherwise, we&#039;re about to be redirected somewhere else, so don&#039;t show the image!&lt;br /&gt;
                if($wgRequest-&amp;gt;getVal( &#039;redirect&#039; ) == &#039;no&#039; || substr($content, 0 , 9) != &#039;#REDIRECT&#039;) {&lt;br /&gt;
                   $s = &#039;&amp;lt;div class=&amp;quot;fullImageLink&amp;quot;&amp;gt;&#039; . $anchoropen .&lt;br /&gt;
                     &amp;quot;&amp;lt;img border=\&amp;quot;0\&amp;quot; src=\&amp;quot;{$url}\&amp;quot; width=\&amp;quot;{$width}\&amp;quot; height=\&amp;quot;{$height}\&amp;quot; alt=\&amp;quot;&amp;quot; .&lt;br /&gt;
                     htmlspecialchars( $wgRequest-&amp;gt;getVal( &#039;image&#039; ) ).&#039;&amp;quot; /&amp;gt;&#039; . $anchorclose . &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
                } else {&lt;br /&gt;
                    $s = &#039;&#039;;&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                $s = &amp;quot;&amp;lt;div class=\&amp;quot;fullMedia\&amp;quot;&amp;gt;&amp;quot; . $sk-&amp;gt;makeMediaLink( $this-&amp;gt;img-&amp;gt;getName(),&#039;&#039; ) . &#039;&amp;lt;/div&amp;gt;&#039;;&lt;br /&gt;
            }&lt;br /&gt;
            $wgOut-&amp;gt;addHTML( $s );&lt;br /&gt;
            if($this-&amp;gt;img-&amp;gt;fromSharedDirectory) {&lt;br /&gt;
                $wgOut-&amp;gt;addWikiText(&amp;quot;&amp;lt;div class=\&amp;quot;sharedUploadNotice\&amp;quot;&amp;gt;&amp;quot;.wfMsg(&amp;quot;sharedupload&amp;quot;).&amp;quot;&amp;lt;/div&amp;gt;&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function closeShowImage()&lt;br /&gt;
    {&lt;br /&gt;
        # For overloading&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * If the page we&#039;ve just displayed is in the &amp;quot;Image&amp;quot; namespace,&lt;br /&gt;
     * we follow it with an upload history of the image and its usage.&lt;br /&gt;
     */&lt;br /&gt;
    function imageHistory()&lt;br /&gt;
    {&lt;br /&gt;
        global $wgUser, $wgOut;&lt;br /&gt;
&lt;br /&gt;
        $sk = $wgUser-&amp;gt;getSkin();&lt;br /&gt;
&lt;br /&gt;
        $line = $this-&amp;gt;img-&amp;gt;nextHistoryLine();&lt;br /&gt;
&lt;br /&gt;
        if ( $line ) {&lt;br /&gt;
            $list =&amp;amp; new ImageHistoryList( $sk );&lt;br /&gt;
            $s = $list-&amp;gt;beginImageHistoryList() .&lt;br /&gt;
                $list-&amp;gt;imageHistoryLine( true, $line-&amp;gt;img_timestamp,&lt;br /&gt;
                    $this-&amp;gt;mTitle-&amp;gt;getDBkey(),  $line-&amp;gt;img_user,&lt;br /&gt;
                    $line-&amp;gt;img_user_text, $line-&amp;gt;img_size, $line-&amp;gt;img_description );&lt;br /&gt;
&lt;br /&gt;
            while ( $line = $this-&amp;gt;img-&amp;gt;nextHistoryLine() ) {&lt;br /&gt;
                $s .= $list-&amp;gt;imageHistoryLine( false, $line-&amp;gt;img_timestamp,&lt;br /&gt;
                $line-&amp;gt;oi_archive_name, $line-&amp;gt;img_user,&lt;br /&gt;
                $line-&amp;gt;img_user_text, $line-&amp;gt;img_size, $line-&amp;gt;img_description );&lt;br /&gt;
            }&lt;br /&gt;
            $s .= $list-&amp;gt;endImageHistoryList();&lt;br /&gt;
        } else { $s=&#039;&#039;; }&lt;br /&gt;
        $wgOut-&amp;gt;addHTML( $s );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function imageLinks()&lt;br /&gt;
    {&lt;br /&gt;
        global $wgUser, $wgOut;&lt;br /&gt;
&lt;br /&gt;
        $wgOut-&amp;gt;addHTML( &#039;&amp;lt;h2&amp;gt;&#039; . wfMsg( &#039;imagelinks&#039; ) . &amp;quot;&amp;lt;/h2&amp;gt;\n&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
        $dbr =&amp;amp; wfGetDB( DB_SLAVE );&lt;br /&gt;
        $cur = $dbr-&amp;gt;tableName( &#039;cur&#039; );&lt;br /&gt;
        $imagelinks = $dbr-&amp;gt;tableName( &#039;imagelinks&#039; );&lt;br /&gt;
&lt;br /&gt;
        $sql = &amp;quot;SELECT cur_namespace,cur_title FROM $imagelinks,$cur WHERE il_to=&amp;quot; .&lt;br /&gt;
          $dbr-&amp;gt;addQuotes( $this-&amp;gt;mTitle-&amp;gt;getDBkey() ) . &amp;quot; AND il_from=cur_id&amp;quot;&lt;br /&gt;
          . &amp;quot; LIMIT 500&amp;quot;; # quickie emergency brake&lt;br /&gt;
        $res = $dbr-&amp;gt;query( $sql, &amp;quot;ImagePage::imageLinks&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
        if ( 0 == $dbr-&amp;gt;numRows( $res ) ) {&lt;br /&gt;
            $wgOut-&amp;gt;addHtml( &#039;&amp;lt;p&amp;gt;&#039; . wfMsg( &amp;quot;nolinkstoimage&amp;quot; ) . &amp;quot;&amp;lt;/p&amp;gt;\n&amp;quot; );&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        $wgOut-&amp;gt;addHTML( &#039;&amp;lt;p&amp;gt;&#039; . wfMsg( &#039;linkstoimage&#039; ) .  &amp;quot;&amp;lt;/p&amp;gt;\n&amp;lt;ul&amp;gt;&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
        $sk = $wgUser-&amp;gt;getSkin();&lt;br /&gt;
        while ( $s = $dbr-&amp;gt;fetchObject( $res ) ) {&lt;br /&gt;
            $name = Title::MakeTitle( $s-&amp;gt;cur_namespace, $s-&amp;gt;cur_title );&lt;br /&gt;
            $link = $sk-&amp;gt;makeKnownLinkObj( $name, &amp;quot;&amp;quot; );&lt;br /&gt;
            $wgOut-&amp;gt;addHTML( &amp;quot;&amp;lt;li&amp;gt;{$link}&amp;lt;/li&amp;gt;\n&amp;quot; );&lt;br /&gt;
        }&lt;br /&gt;
        $wgOut-&amp;gt;addHTML( &amp;quot;&amp;lt;/ul&amp;gt;\n&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function delete()&lt;br /&gt;
    {&lt;br /&gt;
        global $wgUser, $wgOut, $wgRequest;&lt;br /&gt;
&lt;br /&gt;
        $confirm = $wgRequest-&amp;gt;getBool( &#039;wpConfirm&#039; );&lt;br /&gt;
        $image = $wgRequest-&amp;gt;getVal( &#039;image&#039; );&lt;br /&gt;
        $oldimage = $wgRequest-&amp;gt;getVal( &#039;oldimage&#039; );&lt;br /&gt;
&lt;br /&gt;
        # Only sysops can delete images. Previously ordinary users could delete&lt;br /&gt;
        # old revisions, but this is no longer the case.&lt;br /&gt;
        if ( !$wgUser-&amp;gt;isAllowed(&#039;delete&#039;) ) {&lt;br /&gt;
            $wgOut-&amp;gt;sysopRequired();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if ( $wgUser-&amp;gt;isBlocked() ) {&lt;br /&gt;
            return $this-&amp;gt;blockedIPpage();&lt;br /&gt;
        }&lt;br /&gt;
        if ( wfReadOnly() ) {&lt;br /&gt;
            $wgOut-&amp;gt;readOnlyPage();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        # Better double-check that it hasn&#039;t been deleted yet!&lt;br /&gt;
        $wgOut-&amp;gt;setPagetitle( wfMsg( &#039;confirmdelete&#039; ) );&lt;br /&gt;
        if ( !is_null( $image ) ) {&lt;br /&gt;
            if ( &#039;&#039; == trim( $image ) ) {&lt;br /&gt;
                $wgOut-&amp;gt;fatalError( wfMsg( &#039;cannotdelete&#039; ) );&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        # Deleting old images doesn&#039;t require confirmation&lt;br /&gt;
        if ( !is_null( $oldimage ) || $confirm ) {&lt;br /&gt;
            if( $wgUser-&amp;gt;matchEditToken( $wgRequest-&amp;gt;getVal( &#039;wpEditToken&#039; ), $oldimage ) ) {&lt;br /&gt;
                $this-&amp;gt;doDelete();&lt;br /&gt;
            } else {&lt;br /&gt;
                $wgOut-&amp;gt;fatalError( wfMsg( &#039;sessionfailure&#039; ) );&lt;br /&gt;
            }&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if ( !is_null( $image ) ) {&lt;br /&gt;
            $q = &#039;&amp;amp;image=&#039; . urlencode( $image );&lt;br /&gt;
        } else if ( !is_null( $oldimage ) ) {&lt;br /&gt;
            $q = &#039;&amp;amp;oldimage=&#039; . urlencode( $oldimage );&lt;br /&gt;
        } else {&lt;br /&gt;
            $q = &#039;&#039;;&lt;br /&gt;
        }&lt;br /&gt;
        return $this-&amp;gt;confirmDelete( $q, $wgRequest-&amp;gt;getText( &#039;wpReason&#039; ) );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function doDelete()&lt;br /&gt;
    {&lt;br /&gt;
        global $wgOut, $wgUser, $wgContLang, $wgRequest;&lt;br /&gt;
        global $wgUseSquid, $wgInternalServer, $wgDeferredUpdateList;&lt;br /&gt;
        $fname = &#039;ImagePage::doDelete&#039;;&lt;br /&gt;
&lt;br /&gt;
        $reason = $wgRequest-&amp;gt;getVal( &#039;wpReason&#039; );&lt;br /&gt;
        $oldimage = $wgRequest-&amp;gt;getVal( &#039;oldimage&#039; );&lt;br /&gt;
&lt;br /&gt;
        $dbw =&amp;amp; wfGetDB( DB_MASTER );&lt;br /&gt;
&lt;br /&gt;
        if ( !is_null( $oldimage ) ) {&lt;br /&gt;
            if ( strlen( $oldimage ) &amp;lt; 16 ) {&lt;br /&gt;
                $wgOut-&amp;gt;unexpectedValueError( &#039;oldimage&#039;, htmlspecialchars($oldimage) );&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            if ( strstr( $oldimage, &amp;quot;/&amp;quot; ) || strstr( $oldimage, &amp;quot;\\&amp;quot; ) ) {&lt;br /&gt;
                $wgOut-&amp;gt;unexpectedValueError( &#039;oldimage&#039;, htmlspecialchars($oldimage) );&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            # Squid purging&lt;br /&gt;
            if ( $wgUseSquid ) {&lt;br /&gt;
                $archUrl = wfImageArchiveUrl( $oldimage );&lt;br /&gt;
                # don&#039;t prefix with internal server if we share one (-&amp;gt; Commons)&lt;br /&gt;
                $prefix = preg_match(&amp;quot;/^http:\/\//&amp;quot;,$archUrl) ? &#039;&#039; : $wgInternalServer;&lt;br /&gt;
                $urlArr = Array(&lt;br /&gt;
                    $prefix.$archUrl&lt;br /&gt;
                );&lt;br /&gt;
                wfPurgeSquidServers($urlArr);&lt;br /&gt;
            }&lt;br /&gt;
            $this-&amp;gt;doDeleteOldImage( $oldimage );&lt;br /&gt;
            $dbw-&amp;gt;delete( &#039;oldimage&#039;, array( &#039;oi_archive_name&#039; =&amp;gt; $oldimage ) );&lt;br /&gt;
            $deleted = $oldimage;&lt;br /&gt;
        } else {&lt;br /&gt;
            $image = $this-&amp;gt;mTitle-&amp;gt;getDBkey();&lt;br /&gt;
            $dest = wfImageDir( $image );&lt;br /&gt;
            $archive = wfImageDir( $image );&lt;br /&gt;
&lt;br /&gt;
            # Delete the image file if it exists; due to sync problems&lt;br /&gt;
            # or manual trimming sometimes the file will be missing.&lt;br /&gt;
            $targetFile = &amp;quot;{$dest}/{$image}&amp;quot;;&lt;br /&gt;
            if( file_exists( $targetFile ) &amp;amp;&amp;amp; ! @unlink( $targetFile ) ) {&lt;br /&gt;
                # If the deletion operation actually failed, bug out:&lt;br /&gt;
                $wgOut-&amp;gt;fileDeleteError( $targetFile );&lt;br /&gt;
                return;&lt;br /&gt;
            }&lt;br /&gt;
            $dbw-&amp;gt;delete( &#039;image&#039;, array( &#039;img_name&#039; =&amp;gt; $image ) );&lt;br /&gt;
            $res = $dbw-&amp;gt;select( &#039;oldimage&#039;, array( &#039;oi_archive_name&#039; ), array( &#039;oi_name&#039; =&amp;gt; $image ) );&lt;br /&gt;
&lt;br /&gt;
            # Squid purging&lt;br /&gt;
            if ( $wgUseSquid ) {&lt;br /&gt;
                $curUrl = Image::wfImageUrl( $image );&lt;br /&gt;
                # don&#039;t prefix with internal server if we share one (-&amp;gt; Commons)&lt;br /&gt;
                $prefix = preg_match(&amp;quot;/^http:\/\//&amp;quot;,$curUrl) ? &#039;&#039; : $wgInternalServer;&lt;br /&gt;
                $urlArr = Array(&lt;br /&gt;
                    $prefix.$curUrl&lt;br /&gt;
                );&lt;br /&gt;
                wfPurgeSquidServers($urlArr);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            $urlArr = Array();&lt;br /&gt;
            while ( $s = $dbw-&amp;gt;fetchObject( $res ) ) {&lt;br /&gt;
                $this-&amp;gt;doDeleteOldImage( $s-&amp;gt;oi_archive_name );&lt;br /&gt;
                $urlArr[] = $wgInternalServer.wfImageArchiveUrl( $s-&amp;gt;oi_archive_name );&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            # Squid purging, part II&lt;br /&gt;
            if ( $wgUseSquid ) {&lt;br /&gt;
                /* this needs to be done after LinksUpdate */&lt;br /&gt;
                $u = new SquidUpdate( $urlArr );&lt;br /&gt;
                array_push( $wgDeferredUpdateList, $u );&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            $dbw-&amp;gt;delete( &#039;oldimage&#039;, array( &#039;oi_name&#039; =&amp;gt; $image ) );&lt;br /&gt;
&lt;br /&gt;
            # Image itself is now gone, and database is cleaned.&lt;br /&gt;
            # Now we remove the image description page.&lt;br /&gt;
&lt;br /&gt;
            $nt = Title::newFromText( $wgContLang-&amp;gt;getNsText( Namespace::getImage() ) . &amp;quot;:&amp;quot; . $image );&lt;br /&gt;
            $article = new Article( $nt );&lt;br /&gt;
            $article-&amp;gt;doDeleteArticle( $reason ); # ignore errors&lt;br /&gt;
&lt;br /&gt;
            /* refresh image metadata cache */&lt;br /&gt;
            new Image( $image, true );&lt;br /&gt;
&lt;br /&gt;
            $deleted = $image;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $wgOut-&amp;gt;setPagetitle( wfMsg( &#039;actioncomplete&#039; ) );&lt;br /&gt;
        $wgOut-&amp;gt;setRobotpolicy( &#039;noindex,nofollow&#039; );&lt;br /&gt;
&lt;br /&gt;
        $sk = $wgUser-&amp;gt;getSkin();&lt;br /&gt;
        $loglink = $sk-&amp;gt;makeKnownLink( $wgContLang-&amp;gt;getNsText( NS_SPECIAL ) .&lt;br /&gt;
          &#039;:Log/delete&#039;, wfMsg( &#039;deletionlog&#039; ) );&lt;br /&gt;
&lt;br /&gt;
        $text = wfMsg( &#039;deletedtext&#039;, $deleted, $loglink );&lt;br /&gt;
&lt;br /&gt;
        $wgOut-&amp;gt;addHTML( &#039;&amp;lt;p&amp;gt;&#039; . $text . &amp;quot;&amp;lt;/p&amp;gt;\n&amp;quot; );&lt;br /&gt;
        $wgOut-&amp;gt;returnToMain( false );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function doDeleteOldImage( $oldimage )&lt;br /&gt;
    {&lt;br /&gt;
        global $wgOut;&lt;br /&gt;
&lt;br /&gt;
        $name = substr( $oldimage, 15 );&lt;br /&gt;
        $archive = wfImageArchiveDir( $name );&lt;br /&gt;
&lt;br /&gt;
        # Delete the image if it exists. Sometimes the file will be missing&lt;br /&gt;
        # due to manual intervention or weird sync problems; treat that&lt;br /&gt;
        # condition gracefully and continue to delete the database entry.&lt;br /&gt;
        # Also some records may end up with an empty oi_archive_name field&lt;br /&gt;
        # if the original file was missing when a new upload was made;&lt;br /&gt;
        # don&#039;t try to delete the directory then!&lt;br /&gt;
        #&lt;br /&gt;
        $targetFile = &amp;quot;{$archive}/{$oldimage}&amp;quot;;&lt;br /&gt;
        if( $oldimage != &#039;&#039; &amp;amp;&amp;amp; file_exists( $targetFile ) &amp;amp;&amp;amp; !@unlink( $targetFile ) ) {&lt;br /&gt;
            # If we actually have a file and can&#039;t delete it, throw an error.&lt;br /&gt;
            $wgOut-&amp;gt;fileDeleteError( &amp;quot;{$archive}/{$oldimage}&amp;quot; );&lt;br /&gt;
        } else {&lt;br /&gt;
            # Log the deletion&lt;br /&gt;
            $log = new LogPage( &#039;delete&#039; );&lt;br /&gt;
            $log-&amp;gt;addEntry( &#039;delete&#039;, $this-&amp;gt;mTitle, wfMsg(&#039;deletedrevision&#039;,$oldimage) );&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function revert()&lt;br /&gt;
    {&lt;br /&gt;
        global $wgOut, $wgRequest, $wgUser;&lt;br /&gt;
        global $wgUseSquid, $wgInternalServer, $wgDeferredUpdateList;&lt;br /&gt;
&lt;br /&gt;
        $oldimage = $wgRequest-&amp;gt;getText( &#039;oldimage&#039; );&lt;br /&gt;
        if ( strlen( $oldimage ) &amp;lt; 16 ) {&lt;br /&gt;
            $wgOut-&amp;gt;unexpectedValueError( &#039;oldimage&#039;, htmlspecialchars($oldimage) );&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if ( strstr( $oldimage, &amp;quot;/&amp;quot; ) || strstr( $oldimage, &amp;quot;\\&amp;quot; ) ) {&lt;br /&gt;
            $wgOut-&amp;gt;unexpectedValueError( &#039;oldimage&#039;, htmlspecialchars($oldimage) );&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if ( wfReadOnly() ) {&lt;br /&gt;
            $wgOut-&amp;gt;readOnlyPage();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if( $wgUser-&amp;gt;getId() == 0 ) {&lt;br /&gt;
            $wgOut-&amp;gt;errorpage( &#039;uploadnologin&#039;, &#039;uploadnologintext&#039; );&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if ( ! $this-&amp;gt;mTitle-&amp;gt;userCanEdit() ) {&lt;br /&gt;
            $wgOut-&amp;gt;sysopRequired();&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if ( $wgUser-&amp;gt;isBlocked() ) {&lt;br /&gt;
            return $this-&amp;gt;blockedIPpage();&lt;br /&gt;
        }&lt;br /&gt;
        if( !$wgUser-&amp;gt;matchEditToken( $wgRequest-&amp;gt;getVal( &#039;wpEditToken&#039; ), $oldimage ) ) {&lt;br /&gt;
            $wgOut-&amp;gt;errorpage( &#039;internalerror&#039;, &#039;sessionfailure&#039; );&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        $name = substr( $oldimage, 15 );&lt;br /&gt;
&lt;br /&gt;
        $dest = wfImageDir( $name );&lt;br /&gt;
        $archive = wfImageArchiveDir( $name );&lt;br /&gt;
        $curfile = &amp;quot;{$dest}/{$name}&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        if ( ! is_file( $curfile ) ) {&lt;br /&gt;
            $wgOut-&amp;gt;fileNotFoundError( htmlspecialchars( $curfile ) );&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        $oldver = wfTimestampNow() . &amp;quot;!{$name}&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        $dbr =&amp;amp; wfGetDB( DB_SLAVE );&lt;br /&gt;
        $size = $dbr-&amp;gt;selectField( &#039;oldimage&#039;, &#039;oi_size&#039;, &#039;oi_archive_name=\&#039;&#039; .&lt;br /&gt;
          $dbr-&amp;gt;strencode( $oldimage ) . &amp;quot;&#039;&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
        if ( ! rename( $curfile, &amp;quot;${archive}/{$oldver}&amp;quot; ) ) {&lt;br /&gt;
            $wgOut-&amp;gt;fileRenameError( $curfile, &amp;quot;${archive}/{$oldver}&amp;quot; );&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        if ( ! copy( &amp;quot;{$archive}/{$oldimage}&amp;quot;, $curfile ) ) {&lt;br /&gt;
            $wgOut-&amp;gt;fileCopyError( &amp;quot;${archive}/{$oldimage}&amp;quot;, $curfile );&lt;br /&gt;
        }&lt;br /&gt;
        wfRecordUpload( $name, $oldver, $size, wfMsg( &amp;quot;reverted&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
        /* refresh image metadata cache */&lt;br /&gt;
        new Image( $name, true );&lt;br /&gt;
&lt;br /&gt;
        # Squid purging&lt;br /&gt;
        if ( $wgUseSquid ) {&lt;br /&gt;
            $archUrl = wfImageArchiveUrl( $name );&lt;br /&gt;
            $curUrl = Image::wfImageUrl( $name );&lt;br /&gt;
            $prefix = preg_match(&amp;quot;/^http:\/\//&amp;quot;,$curUrl) ? &#039;&#039; : $wgInternalServer;&lt;br /&gt;
            $urlArr = Array(&lt;br /&gt;
                    $prefix.$archUrl,&lt;br /&gt;
                    $prefix.$curUrl&lt;br /&gt;
            );&lt;br /&gt;
            wfPurgeSquidServers($urlArr);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $wgOut-&amp;gt;setPagetitle( wfMsg( &#039;actioncomplete&#039; ) );&lt;br /&gt;
        $wgOut-&amp;gt;setRobotpolicy( &#039;noindex,nofollow&#039; );&lt;br /&gt;
        $wgOut-&amp;gt;addHTML( wfMsg( &#039;imagereverted&#039; ) );&lt;br /&gt;
        $wgOut-&amp;gt;returnToMain( false );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function blockedIPpage() {&lt;br /&gt;
        # yucky hack&lt;br /&gt;
        require_once( &#039;EditPage.php&#039; );&lt;br /&gt;
        $edit = new EditPage( $this-&amp;gt;mTitle );&lt;br /&gt;
        $edit-&amp;gt;blockedIPpage();&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class ImageHistoryList {&lt;br /&gt;
    function ImageHistoryList( &amp;amp;$skin ) {&lt;br /&gt;
        $this-&amp;gt;skin =&amp;amp; $skin;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function beginImageHistoryList() {&lt;br /&gt;
        $s = &amp;quot;\n&amp;lt;h2&amp;gt;&amp;quot; . wfMsg( &#039;imghistory&#039; ) . &amp;quot;&amp;lt;/h2&amp;gt;\n&amp;quot; .&lt;br /&gt;
          &amp;quot;&amp;lt;p&amp;gt;&amp;quot; . wfMsg( &#039;imghistlegend&#039; ) . &amp;quot;&amp;lt;/p&amp;gt;\n&amp;quot;.&#039;&amp;lt;ul class=&amp;quot;special&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
        return $s;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function endImageHistoryList() {&lt;br /&gt;
        $s = &amp;quot;&amp;lt;/ul&amp;gt;\n&amp;quot;;&lt;br /&gt;
        return $s;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function imageHistoryLine( $iscur, $timestamp, $img, $user, $usertext, $size, $description ) {&lt;br /&gt;
        global $wgUser, $wgLang, $wgContLang, $wgTitle;&lt;br /&gt;
&lt;br /&gt;
        $datetime = $wgLang-&amp;gt;timeanddate( $timestamp, true );&lt;br /&gt;
        $del = wfMsg( &#039;deleteimg&#039; );&lt;br /&gt;
        $delall = wfMsg( &#039;deleteimgcompletely&#039; );&lt;br /&gt;
        $cur = wfMsg( &#039;cur&#039; );&lt;br /&gt;
&lt;br /&gt;
        if ( $iscur ) {&lt;br /&gt;
            $url = Image::wfImageUrl( $img );&lt;br /&gt;
            $rlink = $cur;&lt;br /&gt;
            if ( $wgUser-&amp;gt;isAllowed(&#039;delete&#039;) ) {&lt;br /&gt;
                $link = $wgTitle-&amp;gt;escapeLocalURL( &#039;image=&#039; . $wgTitle-&amp;gt;getPartialURL() .&lt;br /&gt;
                  &#039;&amp;amp;action=delete&#039; );&lt;br /&gt;
                $style = $this-&amp;gt;skin-&amp;gt;getInternalLinkAttributes( $link, $delall );&lt;br /&gt;
&lt;br /&gt;
                $dlink = &#039;&amp;lt;a href=&amp;quot;&#039;.$link.&#039;&amp;quot;&#039;.$style.&#039;&amp;gt;&#039;.$delall.&#039;&amp;lt;/a&amp;gt;&#039;;&lt;br /&gt;
            } else {&lt;br /&gt;
                $dlink = $del;&lt;br /&gt;
            }&lt;br /&gt;
        } else {&lt;br /&gt;
            $url = htmlspecialchars( wfImageArchiveUrl( $img ) );&lt;br /&gt;
            if( $wgUser-&amp;gt;getID() != 0 &amp;amp;&amp;amp; $wgTitle-&amp;gt;userCanEdit() ) {&lt;br /&gt;
                $token = urlencode( $wgUser-&amp;gt;editToken( $img ) );&lt;br /&gt;
                $rlink = $this-&amp;gt;skin-&amp;gt;makeKnownLink( $wgTitle-&amp;gt;getPrefixedText(),&lt;br /&gt;
                           wfMsg( &#039;revertimg&#039; ), &#039;action=revert&amp;amp;oldimage=&#039; .&lt;br /&gt;
                           urlencode( $img ) . &amp;quot;&amp;amp;wpEditToken=$token&amp;quot; );&lt;br /&gt;
                $dlink = $this-&amp;gt;skin-&amp;gt;makeKnownLink( $wgTitle-&amp;gt;getPrefixedText(),&lt;br /&gt;
                           $del, &#039;action=delete&amp;amp;oldimage=&#039; . urlencode( $img ) .&lt;br /&gt;
                           &amp;quot;&amp;amp;wpEditToken=$token&amp;quot; );&lt;br /&gt;
            } else {&lt;br /&gt;
                # Having live active links for non-logged in users&lt;br /&gt;
                # means that bots and spiders crawling our site can&lt;br /&gt;
                # inadvertently change content. Baaaad idea.&lt;br /&gt;
                $rlink = wfMsg( &#039;revertimg&#039; );&lt;br /&gt;
                $dlink = $del;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        if ( 0 == $user ) {&lt;br /&gt;
            $userlink = $usertext;&lt;br /&gt;
        } else {&lt;br /&gt;
            $userlink = $this-&amp;gt;skin-&amp;gt;makeLink( $wgContLang-&amp;gt;getNsText( Namespace::getUser() ) .&lt;br /&gt;
                           &#039;:&#039;.$usertext, $usertext );&lt;br /&gt;
        }&lt;br /&gt;
        $nbytes = wfMsg( &#039;nbytes&#039;, $size );&lt;br /&gt;
        $style = $this-&amp;gt;skin-&amp;gt;getInternalLinkAttributes( $url, $datetime );&lt;br /&gt;
&lt;br /&gt;
        $s = &amp;quot;&amp;lt;li&amp;gt; ({$dlink}) ({$rlink}) &amp;lt;a href=\&amp;quot;{$url}\&amp;quot;{$style}&amp;gt;{$datetime}&amp;lt;/a&amp;gt;&amp;quot;&lt;br /&gt;
          . &amp;quot; . . {$userlink} ({$nbytes})&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
        if ( &#039;&#039; != $description &amp;amp;&amp;amp; &#039;*&#039; != $description ) {&lt;br /&gt;
            $sk=$wgUser-&amp;gt;getSkin();&lt;br /&gt;
            $s .= $wgContLang-&amp;gt;emphasize(&#039; (&#039; . $sk-&amp;gt;formatComment($description,$wgTitle) . &#039;)&#039;);&lt;br /&gt;
        }&lt;br /&gt;
        $s .= &amp;quot;&amp;lt;/li&amp;gt;\n&amp;quot;;&lt;br /&gt;
        return $s;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PasdoMacel</name></author>
	</entry>
</feed>