rcaputo / snerp-vortex

A subversion repository exporter.
15 stars 3 forks source link

Importer error on MediaWiki r13782 caused by a branch/ that's not-a-branch #16

Open avar opened 14 years ago

avar commented 14 years ago

snerp seems to be getting really confused on the hashar branch.

I think the issue is that the branch doesn't use the same directory layout as trunk/.

The backtrace is:

8385 r13782 by hashar at 2006-04-20T20:58:04.161352Z
8385 REP) doing: file_change branches/hashar/includes/CategoryPage.php
8385 REP) entity:
8385 REP) status: is not entity
8385 REP) calling method on_file_change
8385 pushdir /tmp/snerp-into
8385 GIT) already on branch branch-hashar
edit includes/CategoryPage.php failed: file doesn't exist at lib/SVN/Dump/Replayer.pm line 281
        SVN::Dump::Replayer::rewrite_file('SVN::Dump::Replayer::Git=HASH(0x10fe720)', 'SVN::Dump::Change::Edit=HASH(0x15a0ae00)', 'includes/CategoryPage.php') called at lib/SVN/Dump/Replayer/Git.pm line 336
        SVN::Dump::Replayer::Git::on_file_change('SVN::Dump::Replayer::Git=HASH(0x10fe720)', 'SVN::Dump::Change::Edit=HASH(0x15a0ae00)', 'SVN::Dump::Revision=HASH(0x15a9bff8)') called at lib/SVN/Dump/Replayer.pm line 112
        SVN::Dump::Replayer::on_revision_done('SVN::Dump::Replayer::Git=HASH(0x10fe720)', 13782) called at /usr/local/lib/perl/5.10.1/Class/MOP/Method/Wrapped.pm line 54
        Class::MOP::Method::Wrapped::__ANON__('SVN::Dump::Replayer::Git=HASH(0x10fe720)', 13782) called at /usr/local/lib/perl/5.10.1/Class/MOP/Method/Wrapped.pm line 89
        SVN::Dump::Replayer::Git::on_revision_done('SVN::Dump::Replayer::Git=HASH(0x10fe720)', 13782) called at lib/SVN/Dump/Walker.pm line 114
        SVN::Dump::Walker::walk('SVN::Dump::Replayer::Git=HASH(0x10fe720)') called at ./snerp line 150

I.e. it's trying to alter includes/CategoryPage.php when the file is actually at phase3/includes/CategoryPage.php.

The content of the revision in the dump is:

Revision-number: 13782
Prop-content-length: 250
Content-length: 250

K 7
svn:log
V 148
Patch from #5638 by Daniel Kinzler <daniel@brightbyte.de> :
show translated titles per user language, based on interlanguage links (patch included)

K 10
svn:author
V 6
hashar
K 8
svn:date
V 27
2006-04-20T20:58:04.161352Z
PROPS-END

Node-path: branches/hashar/includes/CategoryPage.php
Node-kind: file
Node-action: change
Text-content-length: 10977
Text-content-md5: 1052820106dec6e879b7e22be1b1611b
Text-content-sha1: 3c26bebb0da1ecc074527a83246578d9f7853155
Content-length: 10977

<?php
/**
 * Special handling for category description pages
 * Modelled after ImagePage.php
 *
 * @package MediaWiki
 */

if( !defined( 'MEDIAWIKI' ) )
    die( -1 );

global $wgCategoryMagicGallery;
if( $wgCategoryMagicGallery )
    /** */
    require_once('ImageGallery.php');

/**
 * @package MediaWiki
 */
class CategoryPage extends Article {

    function view() {
        if(!wfRunHooks('CategoryPageView', array(&$this))) return;

        if ( NS_CATEGORY == $this->mTitle->getNamespace() ) {
            $this->openShowCategory();
        }

        Article::view();

        # If the article we've just shown is in the "Image" namespace,
        # follow it with the history list and link list for the image
        # it describes.

        if ( NS_CATEGORY == $this->mTitle->getNamespace() ) {
            $this->closeShowCategory();
        }
    }

    function openShowCategory() {
        # For overloading
    }

    # generate a list of subcategories and pages for a category
    # depending on wfMsg("usenewcategorypage") it either calls the new
    # or the old code. The new code will not work properly for some
    # languages due to sorting issues, so they might want to turn it
    # off.

    function closeShowCategory() {
        global $wgOut, $wgRequest;
        $pageConditions = array();
        $from = $wgRequest->getVal( 'from' );
        $until = $wgRequest->getVal( 'until' );
        $wgOut->addHTML( $this->doCategoryMagic( $from, $until ) );
    }

    /**
     * Format the category data list.
     *
     * @param string $from -- return only sort keys from this item on
     * @param string $until -- don't return keys after this point.
     * @return string HTML output
     * @access private
     */
    function doCategoryMagic( $from = '', $until = '' ) {
        global $wgContLang,$wgUser, $wgCategoryMagicGallery, $wgCategoryPagingLimit, $wgInterlanguageTitles, $wgLanguageCode;
        $fname = 'CategoryPage::doCategoryMagic';
        wfProfileIn( $fname );

        $articles = array();
        $articles_start_char = array();
        $children = array();
        $children_start_char = array();
        $data = array();
        if( $wgCategoryMagicGallery ) {
            $ig = new ImageGallery();
        }

        $dbr =& wfGetDB( DB_SLAVE );
        if( $from != '' ) {
            $pageCondition = 'cl_sortkey >= ' . $dbr->addQuotes( $from );
            $flip = false;
        } elseif( $until != '' ) {
            $pageCondition = 'cl_sortkey < ' . $dbr->addQuotes( $until );
            $flip = true;
        } else {
            $pageCondition = '1 = 1';
            $flip = false;
        }
        $limit = $wgCategoryPagingLimit;

        if ( $wgInterlanguageTitles ) {
            $sql= 'SELECT page_title, page_namespace, page_len, cl_sortkey, ll_title
                   FROM ' . $dbr->tableName( 'page' ) . '
                   INNER JOIN ' . $dbr->tableName( 'categorylinks' ) . ' ON cl_from =  page_id
                   LEFT JOIN ' . $dbr->tableName( 'langlinks' ) . ' ON ll_from = page_id AND ll_lang = ' . $dbr->addQuotes( $wgLanguageCode ) . '
                   WHERE cl_to = ' . $dbr->addQuotes( $this->mTitle->getDBKey() ) . '
                   ' . /* AND page_is_redirect = 0 */ '
                   ORDER BY ' . ( $flip ? 'cl_sortkey DESC' : 'cl_sortkey' ) . '
                   LIMIT ' . ( $limit + 1 ) . '
                   ';

            $res = $dbr->query( $sql, $fname );
        } else {
            $res = $dbr->select( array( 'page', 'categorylinks' ),
                         array( 'page_title', 'page_namespace', 'page_len', 'cl_sortkey' ),
                         array( $pageCondition,
                            'cl_from      =  page_id',
                            'cl_to'    => $this->mTitle->getDBKey()),
                            #'page_is_redirect' => 0),
                         #+ $pageCondition,
                         $fname,
                         array( 'ORDER BY' => $flip ? 'cl_sortkey DESC' : 'cl_sortkey',
                            'LIMIT'    => $limit + 1 ) );
        }

        $sk =& $wgUser->getSkin();
        $r = "<br style=\"clear:both;\"/>\n";
        $count = 0;
        $nextPage = null;
        while( $x = $dbr->fetchObject ( $res ) ) {
            if( ++$count > $limit ) {
                // We've reached the one extra which shows that there are
                // additional pages to be had. Stop here...
                $nextPage = $x->cl_sortkey;
                break;
            }

            $title = Title::makeTitle( $x->page_namespace, $x->page_title );

            if ( $wgInterlanguageTitles && ! is_null( $x->ll_title ) ) {
                $localTitleHTML = ' <i>[' . $wgContLang->convertHtml( $x->ll_title ) . ']</i>';
            } else {
                $localTitleHTML = '';
            }

            if( $title->getNamespace() == NS_CATEGORY ) {
                // Subcategory; strip the 'Category' namespace from the link text.
                array_push( $children, $sk->makeKnownLinkObj( $title, $wgContLang->convertHtml( $title->getText() ) ) . $localTitleHTML );

                // If there's a link from Category:A to Category:B, the sortkey of the resulting
                // entry in the categorylinks table is Category:A, not A, which it SHOULD be.
                // Workaround: If sortkey == "Category:".$title, than use $title for sorting,
                // else use sortkey...
                $sortkey='';
                if( $title->getPrefixedText() == $x->cl_sortkey ) {
                    $sortkey=$wgContLang->firstChar( $x->page_title );
                } else {
                    $sortkey=$wgContLang->firstChar( $x->cl_sortkey );
                }
                array_push( $children_start_char, $wgContLang->convert( $sortkey ) ) ;
            } elseif( $wgCategoryMagicGallery && $title->getNamespace() == NS_IMAGE ) {
                // Show thumbnails of categorized images, in a separate chunk
                if( $flip ) {
                    $ig->insert( Image::newFromTitle( $title ) );
                } else {
                    $ig->add( Image::newFromTitle( $title ) );
                }
            } else {
                // Page in this category
                array_push( $articles, $sk->makeSizeLinkObj( $x->page_len, $title, $wgContLang->convert( $title->getPrefixedText() ) ) . $localTitleHTML ) ;
                array_push( $articles_start_char, $wgContLang->convert( $wgContLang->firstChar( $x->cl_sortkey ) ) );
            }
        }
        $dbr->freeResult( $res );

        if( $flip ) {
            $children       = array_reverse( $children );
            $children_start_char = array_reverse( $children_start_char );
            $articles       = array_reverse( $articles );
            $articles_start_char = array_reverse( $articles_start_char );
        }

        if( $until != '' ) {
            $r .= $this->pagingLinks( $this->mTitle, $nextPage, $until, $limit );
        } elseif( $nextPage != '' || $from != '' ) {
            $r .= $this->pagingLinks( $this->mTitle, $from, $nextPage, $limit );
        }

        # Don't show subcategories section if there are none.
        if( count( $children ) > 0 ) {
            # Showing subcategories
            $r .= '<h2>' . wfMsg( 'subcategories' ) . "</h2>\n";
            $r .= $this->formatCount( $children, 'subcategorycount' );
            $r .= $this->formatList( $children, $children_start_char );
        }

        # Showing articles in this category
        $ti = htmlspecialchars( $this->mTitle->getText() );
        $r .= '<h2>' . wfMsg( 'category_header', $ti ) . "</h2>\n";
        $r .= $this->formatCount( $articles, 'categoryarticlecount' );
        $r .= $this->formatList( $articles, $articles_start_char );

        if( $wgCategoryMagicGallery && ! $ig->isEmpty() ) {
            $r.= $ig->toHTML();
        }

        if( $until != '' ) {
            $r .= $this->pagingLinks( $this->mTitle, $nextPage, $until, $limit );
        } elseif( $nextPage != '' || $from != '' ) {
            $r .= $this->pagingLinks( $this->mTitle, $from, $nextPage, $limit );
        }

        wfProfileOut( $fname );
        return $r;
    }

    /**
     * @param array $articles
     * @param string $message
     * @return string
     * @access private
     */
    function formatCount( $articles, $message ) {
        global $wgContLang;
        $numart = count( $articles );
        if( $numart == 1 ) {
            # Slightly different message to avoid silly plural
            $message .= '1';
        }
        return wfMsg( $message, $wgContLang->formatNum( $numart ) );
    }
    /**
     * Format a list of articles chunked by letter, either as a
     * bullet list or a columnar format, depending on the length.
     *
     * @param array $articles
     * @param array $articles_start_char
     * @param int   $cutoff
     * @return string
     * @access private
     */
    function formatList( $articles, $articles_start_char, $cutoff = 6 ) {
        if ( count ( $articles ) > $cutoff ) {
            return $this->columnList( $articles, $articles_start_char );
        } elseif ( count($articles) > 0) {
            // for short lists of articles in categories.
            return $this->shortList( $articles, $articles_start_char );
        }
        return '';
    }

    /**
     * Format a list of articles chunked by letter in a three-column
     * list, ordered vertically.
     *
     * @param array $articles
     * @param array $articles_start_char
     * @return string
     * @access private
     */
    function columnList( $articles, $articles_start_char ) {
        // divide list into three equal chunks
        $chunk = (int) (count ( $articles ) / 3);

        // get and display header
        $r = '<table width="100%"><tr valign="top">';

        $prev_start_char = 'none';

        // loop through the chunks
        for($startChunk = 0, $endChunk = $chunk, $chunkIndex = 0;
            $chunkIndex < 3;
            $chunkIndex++, $startChunk = $endChunk, $endChunk += $chunk + 1)
        {
            $r .= "<td>\n";
            $atColumnTop = true;

            // output all articles in category
            for ($index = $startChunk ;
                $index < $endChunk && $index < count($articles);
                $index++ )
            {
                // check for change of starting letter or begining of chunk
                if ( ($index == $startChunk) ||
                     ($articles_start_char[$index] != $articles_start_char[$index - 1]) )

                {
                    if( $atColumnTop ) {
                        $atColumnTop = false;
                    } else {
                        $r .= "</ul>\n";
                    }
                    $cont_msg = "";
                    if ( $articles_start_char[$index] == $prev_start_char )
                        $cont_msg = wfMsgHtml('listingcontinuesabbrev');
                    $r .= "<h3>" . htmlspecialchars( $articles_start_char[$index] ) . "$cont_msg</h3>\n<ul>";
                    $prev_start_char = $articles_start_char[$index];
                }

                $r .= "<li>{$articles[$index]}</li>";
            }
            if( !$atColumnTop ) {
                $r .= "</ul>\n";
            }
            $r .= "</td>\n";

        }
        $r .= '</tr></table>';
        return $r;
    }

    /**
     * Format a list of articles chunked by letter in a bullet list.
     * @param array $articles
     * @param array $articles_start_char
     * @return string
     * @access private
     */
    function shortList( $articles, $articles_start_char ) {
        $r = '<h3>' . htmlspecialchars( $articles_start_char[0] ) . "</h3>\n";
        $r .= '<ul><li>'.$articles[0].'</li>';
        for ($index = 1; $index < count($articles); $index++ )
        {
            if ($articles_start_char[$index] != $articles_start_char[$index - 1])
            {
                $r .= "</ul><h3>" . htmlspecialchars( $articles_start_char[$index] ) . "</h3>\n<ul>";
            }

            $r .= "<li>{$articles[$index]}</li>";
        }
        $r .= '</ul>';
        return $r;
    }

    /**
     * @param Title  $title
     * @param string $first
     * @param string $last
     * @param int    $limit
     * @param array  $query - additional query options to pass
     * @return string
     * @access private
     */
    function pagingLinks( $title, $first, $last, $limit, $query = array() ) {
        global $wgUser, $wgLang;
        $sk =& $wgUser->getSkin();
        $limitText = $wgLang->formatNum( $limit );

        $prevLink = htmlspecialchars( wfMsg( 'prevn', $limitText ) );
        if( $first != '' ) {
            $prevLink = $sk->makeLinkObj( $title, $prevLink,
                wfArrayToCGI( $query + array( 'until' => $first ) ) );
        }
        $nextLink = htmlspecialchars( wfMsg( 'nextn', $limitText ) );
        if( $last != '' ) {
            $nextLink = $sk->makeLinkObj( $title, $nextLink,
                wfArrayToCGI( $query + array( 'from' => $last ) ) );
        }

        return "($prevLink) ($nextLink)";
    }
}

?>

Node-path: branches/hashar/includes/DefaultSettings.php
Node-kind: file
Node-action: change
Text-content-length: 64259
Text-content-md5: a1350f97402611b306b1b60c705cbfed
Text-content-sha1: cacfd68974a3c634305edb167332aacfb0a90d9c
Content-length: 64259

<?php
/**
 *
 *                 DO NOT EVER EDIT THIS FILE!
 *
 *
 * To customize your installation, edit "LocalSettings.php". If you make
 * changes here, they will be lost on next upgrade of MediaWiki!
 *
 * Note that since all these string interpolations are expanded
 * before LocalSettings is included, if you localize something
 * like $wgScriptPath, you must also localize everything that
 * depends on it.
 *
 * Documentation is in the source and on:
 * http://www.mediawiki.org/wiki/Help:Configuration_settings
 *
 * @package MediaWiki
 */

# This is not a valid entry point, perform no further processing unless MEDIAWIKI is defined
if( !defined( 'MEDIAWIKI' ) ) {
    echo "This file is part of MediaWiki and is not a valid entry point\n";
    die( -1 );
}

/**
 * Create a site configuration object
 * Not used for much in a default install
 */
require_once( 'includes/SiteConfiguration.php' );
$wgConf = new SiteConfiguration;

/** MediaWiki version number */
$wgVersion          = '1.7alpha';

/** Name of the site. It must be changed in LocalSettings.php */
$wgSitename         = 'MediaWiki';

/** Will be same as you set @see $wgSitename */
$wgMetaNamespace    = FALSE;

/** URL of the server. It will be automatically built including https mode */
$wgServer = '';

if( isset( $_SERVER['SERVER_NAME'] ) ) {
    $wgServerName = $_SERVER['SERVER_NAME'];
} elseif( isset( $_SERVER['HOSTNAME'] ) ) {
    $wgServerName = $_SERVER['HOSTNAME'];
} elseif( isset( $_SERVER['HTTP_HOST'] ) ) {
    $wgServerName = $_SERVER['HTTP_HOST'];
} elseif( isset( $_SERVER['SERVER_ADDR'] ) ) {
    $wgServerName = $_SERVER['SERVER_ADDR'];
} else {
    $wgServerName = 'localhost';
}

# check if server use https:
$wgProto = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';

$wgServer = $wgProto.'://' . $wgServerName;
# If the port is a non-standard one, add it to the URL
if(    isset( $_SERVER['SERVER_PORT'] )
    && (    ( $wgProto == 'http' && $_SERVER['SERVER_PORT'] != 80 )
     || ( $wgProto == 'https' && $_SERVER['SERVER_PORT'] != 443 ) ) ) {

    $wgServer .= ":" . $_SERVER['SERVER_PORT'];
}

/**
 * The path we should point to.
 * It might be a virtual path in case with use apache mod_rewrite for example
 */
$wgScriptPath       = '/wiki';

/**
 * Whether to support URLs like index.php/Page_title
 * @global bool $wgUsePathInfo
 */
$wgUsePathInfo      = ( strpos( php_sapi_name(), 'cgi' ) === false );

/**#@+
 * Script users will request to get articles
 * ATTN: Old installations used wiki.phtml and redirect.phtml -
 * make sure that LocalSettings.php is correctly set!
 * @deprecated
 */
/**
 *  @global string $wgScript
 */
$wgScript           = "{$wgScriptPath}/index.php";
/**
 *  @global string $wgRedirectScript
 */
$wgRedirectScript   = "{$wgScriptPath}/redirect.php";
/**#@-*/

/**#@+
 * @global string
 */
/**
 * style path as seen by users
 * @global string $wgStylePath
 */
$wgStylePath   = "{$wgScriptPath}/skins";
/**
 * filesystem stylesheets directory
 * @global string $wgStyleDirectory
 */
$wgStyleDirectory = "{$IP}/skins";
$wgStyleSheetPath = &$wgStylePath;
$wgArticlePath      = "{$wgScript}?title=$1";
$wgUploadPath       = "{$wgScriptPath}/upload";
$wgUploadDirectory  = "{$IP}/upload";
$wgHashedUploadDirectory    = true;
$wgLogo             = "{$wgUploadPath}/wiki.png";
$wgFavicon          = '/favicon.ico';
$wgMathPath         = "{$wgUploadPath}/math";
$wgMathDirectory    = "{$wgUploadDirectory}/math";
$wgTmpDirectory     = "{$wgUploadDirectory}/tmp";
$wgUploadBaseUrl    = "";
/**#@-*/

/**
 * Allowed title characters -- regex character class
 * Don't change this unless you know what you're doing
 *
 * Problematic punctuation:
 *  []{}|#    Are needed for link syntax, never enable these
 *  %         Enabled by default, minor problems with path to query rewrite rules, see below
 *  +         Doesn't work with path to query rewrite rules, corrupted by apache
 *  ?         Enabled by default, but doesn't work with path to PATH_INFO rewrites
 *
 * All three of these punctuation problems can be avoided by using an alias, instead of a
 * rewrite rule of either variety.
 *
 * The problem with % is that when using a path to query rewrite rule, URLs are
 * double-unescaped: once by Apache's path conversion code, and again by PHP. So
 * %253F, for example, becomes "?". Our code does not double-escape to compensate
 * for this, indeed double escaping would break if the double-escaped title was
 * passed in the query string rather than the path. This is a minor security issue
 * because articles can be created such that they are hard to view or edit.
 *
 * Theoretically 0x80-0x9F of ISO 8859-1 should be disallowed, but
 * this breaks interlanguage links
 */
$wgLegalTitleChars = " %!\"$&'()*,\\-.\\/0-9:;=?@A-Z\\\\^_`a-z~\\x80-\\xFF";

/**
 * The external URL protocols
 */
$wgUrlProtocols = array(
    'http://',
    'https://',
    'ftp://',
    'irc://',
    'gopher://',
    'telnet://', // Well if we're going to support the above.. -ævar
    'nntp://', // @bug 3808 RFC 1738
    'worldwind://',
    'mailto:',
    'news:'
);

/** internal name of virus scanner. This servers as a key to the $wgAntivirusSetup array.
 * Set this to NULL to disable virus scanning. If not null, every file uploaded will be scanned for viruses.
 * @global string $wgAntivirus
 */
$wgAntivirus= NULL;

/** Configuration for different virus scanners. This an associative array of associative arrays:
 * it contains on setup array per known scanner type. The entry is selected by $wgAntivirus, i.e.
 * valid values for $wgAntivirus are the keys defined in this array.
 *
 * The configuration array for each scanner contains the following keys: "command", "codemap", "messagepattern";
 *
 * "command" is the full command to call the virus scanner - %f will be replaced with the name of the
 * file to scan. If not present, the filename will be appended to the command. Note that this must be
 * overwritten if the scanner is not in the system path; in that case, plase set
 * $wgAntivirusSetup[$wgAntivirus]['command'] to the desired command with full path.
 *
 * "codemap" is a mapping of exit code to return codes of the detectVirus function in SpecialUpload.
 * An exit code mapped to AV_SCAN_FAILED causes the function to consider the scan to be failed. This will pass
 * the file if $wgAntivirusRequired is not set.
 * An exit code mapped to AV_SCAN_ABORTED causes the function to consider the file to have an usupported format,
 * which is probably imune to virusses. This causes the file to pass.
 * An exit code mapped to AV_NO_VIRUS will cause the file to pass, meaning no virus was found.
 * All other codes (like AV_VIRUS_FOUND) will cause the function to report a virus.
 * You may use "*" as a key in the array to catch all exit codes not mapped otherwise.
 *
 * "messagepattern" is a perl regular expression to extract the meaningful part of the scanners
 * output. The relevant part should be matched as group one (\1).
 * If not defined or the pattern does not match, the full message is shown to the user.
 *
 * @global array $wgAntivirusSetup
 */
$wgAntivirusSetup= array(

    #setup for clamav
    'clamav' => array (
        'command' => "clamscan --no-summary ",

        'codemap'=> array (
            "0"=>  AV_NO_VIRUS, #no virus
            "1"=>  AV_VIRUS_FOUND, #virus found
            "52"=> AV_SCAN_ABORTED, #unsupported file format (probably imune)
            "*"=>  AV_SCAN_FAILED, #else scan failed
        ),

        'messagepattern'=> '/.*?:(.*)/sim',
    ),

    #setup for f-prot
    'f-prot' => array (
        'command' => "f-prot ",

        'codemap'=> array (
            "0"=> AV_NO_VIRUS, #no virus
            "3"=> AV_VIRUS_FOUND, #virus found
            "6"=> AV_VIRUS_FOUND, #virus found
            "*"=> AV_SCAN_FAILED, #else scan failed
        ),

        'messagepattern'=> '/.*?Infection:(.*)$/m',
    ),
);

/** Determines if a failed virus scan (AV_SCAN_FAILED) will cause the file to be rejected.
 * @global boolean $wgAntivirusRequired
*/
$wgAntivirusRequired= true;

/** Determines if the mime type of uploaded files should be checked
 * @global boolean $wgVerifyMimeType
*/
$wgVerifyMimeType= true;

/** Sets the mime type definition file to use by MimeMagic.php.
* @global string $wgMimeTypeFile
*/
#$wgMimeTypeFile= "/etc/mime.types";
$wgMimeTypeFile= "includes/mime.types";
#$wgMimeTypeFile= NULL; #use built-in defaults only.

/** Sets the mime type info file to use by MimeMagic.php.
* @global string $wgMimeInfoFile
*/
$wgMimeInfoFile= "includes/mime.info";
#$wgMimeInfoFile= NULL; #use built-in defaults only.

/** Switch for loading the FileInfo extension by PECL at runtime.
* This should be used only if fileinfo is installed as a shared object / dynamic libary
* @global string $wgLoadFileinfoExtension
*/
$wgLoadFileinfoExtension= false;

/** Sets an external mime detector program. The command must print only the mime type to standard output.
* the name of the file to process will be appended to the command given here.
* If not set or NULL, mime_content_type will be used if available.
*/
$wgMimeDetectorCommand= NULL; # use internal mime_content_type function, available since php 4.3.0
#$wgMimeDetectorCommand= "file -bi"; #use external mime detector (Linux)

/** Switch for trivial mime detection. Used by thumb.php to disable all fance things,
* because only a few types of images are needed and file extensions can be trusted.
*/
$wgTrivialMimeDetection= false;

/**
 * To set 'pretty' URL paths for actions other than
 * plain page views, add to this array. For instance:
 *   'edit' => "$wgScriptPath/edit/$1"
 *
 * There must be an appropriate script or rewrite rule
 * in place to handle these URLs.
 */
$wgActionPaths = array();

/**
 * If you operate multiple wikis, you can define a shared upload path here.
 * Uploads to this wiki will NOT be put there - they will be put into
 * $wgUploadDirectory.
 * If $wgUseSharedUploads is set, the wiki will look in the shared repository if
 * no file of the given name is found in the local repository (for [[Image:..]],
 * [[Media:..]] links). Thumbnails will also be looked for and generated in this
 * directory.
 */
$wgUseSharedUploads = false;
/** Full path on the web server where shared uploads can be found */
$wgSharedUploadPath = "http://commons.wikimedia.org/shared/images";
/** Fetch commons image description pages and display them on the local wiki? */
$wgFetchCommonsDescriptions = false;
/** Path on the file system where shared uploads can be found. */
$wgSharedUploadDirectory = "/var/www/wiki3/images";
/** DB name with metadata about shared directory. Set this to false if the uploads do not come from a wiki. */
$wgSharedUploadDBname = false;
/** Optional table prefix used in database. */
$wgSharedUploadDBprefix = '';
/** Cache shared metadata in memcached. Don't do this if the commons wiki is in a different memcached domain */
$wgCacheSharedUploads = true;

/**
 * Point the upload navigation link to an external URL
 * Useful if you want to use a shared repository by default
 * without disabling local uploads (use $wgEnableUploads = false for that)
 * e.g. $wgUploadNavigationUrl = 'http://commons.wikimedia.org/wiki/Special:Upload';
*/
$wgUploadNavigationUrl = false;

/**
 * Give a path here to use thumb.php for thumbnail generation on client request, instead of
 * generating them on render and outputting a static URL. This is necessary if some of your
 * apache servers don't have read/write access to the thumbnail path.
 *
 * Example:
 *   $wgThumbnailScriptPath = "{$wgScriptPath}/thumb.php";
 */
$wgThumbnailScriptPath = false;
$wgSharedThumbnailScriptPath = false;

/**
 * Set the following to false especially if you have a set of files that need to
 * be accessible by all wikis, and you do not want to use the hash (path/a/aa/)
 * directory layout.
 */
$wgHashedSharedUploadDirectory = true;

/**
 * Base URL for a repository wiki. Leave this blank if uploads are just stored
 * in a shared directory and not meant to be accessible through a separate wiki.
 * Otherwise the image description pages on the local wiki will link to the
 * image description page on this wiki.
 *
 * Please specify the namespace, as in the example below.
 */
$wgRepositoryBaseUrl="http://commons.wikimedia.org/wiki/Image:";

#
# Email settings
#

/**
 * Site admin email address
 * Default to wikiadmin@SERVER_NAME
 * @global string $wgEmergencyContact
 */
$wgEmergencyContact = 'wikiadmin@' . $wgServerName;

/**
 * Password reminder email address
 * The address we should use as sender when a user is requesting his password
 * Default to apache@SERVER_NAME
 * @global string $wgPasswordSender
 */
$wgPasswordSender   = 'MediaWiki Mail <apache@' . $wgServerName . '>';

/**
 * dummy address which should be accepted during mail send action
 * It might be necessay to adapt the address or to set it equal
 * to the $wgEmergencyContact address
 */
#$wgNoReplyAddress  = $wgEmergencyContact;
$wgNoReplyAddress   = 'reply@not.possible';

/**
 * Set to true to enable the e-mail basic features:
 * Password reminders, etc. If sending e-mail on your
 * server doesn't work, you might want to disable this.
 * @global bool $wgEnableEmail
 */
$wgEnableEmail = true;

/**
 * Set to true to enable user-to-user e-mail.
 * This can potentially be abused, as it's hard to track.
 * @global bool $wgEnableUserEmail
 */
$wgEnableUserEmail = true;

/**
 * SMTP Mode
 * For using a direct (authenticated) SMTP server connection.
 * Default to false or fill an array :
 * <code>
 * "host" => 'SMTP domain',
 * "IDHost" => 'domain for MessageID',
 * "port" => "25",
 * "auth" => true/false,
 * "username" => user,
 * "password" => password
 * </code>
 *
 * @global mixed $wgSMTP
 */
$wgSMTP             = false;

/**#@+
 * Database settings
 */
/** database host name or ip address */
$wgDBserver         = 'localhost';
/** name of the database */
$wgDBname           = 'wikidb';
/** */
$wgDBconnection     = '';
/** Database username */
$wgDBuser           = 'wikiuser';
/** Database type
 * "mysql" for working code and "PostgreSQL" for development/broken code
 */
$wgDBtype           = "mysql";
/** Search type
 * Leave as null to select the default search engine for the
 * selected database type (eg SearchMySQL4), or set to a class
 * name to override to a custom search engine.
 */
$wgSearchType       = null;
/** Table name prefix */
$wgDBprefix         = '';
/** Database schema
 * on some databases this allows separate
 * logical namespace for application data
 */
$wgDBschema     = 'mediawiki';
/**#@-*/

/** Live high performance sites should disable this - some checks acquire giant mysql locks */
$wgCheckDBSchema = true;

/**
 * Shared database for multiple wikis. Presently used for storing a user table
 * for single sign-on. The server for this database must be the same as for the
 * main database.
 * EXPERIMENTAL
 */
$wgSharedDB = null;

# Database load balancer
# This is a two-dimensional array, an array of server info structures
# Fields are:
#   host:        Host name
#   dbname:      Default database name
#   user:        DB user
#   password:    DB password
#   type:        "mysql" or "pgsql"
#   load:        ratio of DB_SLAVE load, must be >=0, the sum of all loads must be >0
#   groupLoads:  array of load ratios, the key is the query group name. A query may belong
#                to several groups, the most specific group defined here is used.
#
#   flags:       bit field
#                   DBO_DEFAULT -- turns on DBO_TRX only if !$wgCommandLineMode (recommended)
#                   DBO_DEBUG -- equivalent of $wgDebugDumpSql
#                   DBO_TRX -- wrap entire request in a transaction
#                   DBO_IGNORE -- ignore errors (not useful in LocalSettings.php)
#                   DBO_NOBUFFER -- turn off buffering (not useful in LocalSettings.php)
#
#   max lag:     (optional) Maximum replication lag before a slave will taken out of rotation
#   max threads: (optional) Maximum number of running threads
#
#   These and any other user-defined properties will be assigned to the mLBInfo member
#   variable of the Database object.
#
# Leave at false to use the single-server variables above
$wgDBservers        = false;

/** How long to wait for a slave to catch up to the master */
$wgMasterWaitTimeout = 10;

/** File to log MySQL errors to */
$wgDBerrorLog       = false;

/** When to give an error message */
$wgDBClusterTimeout = 10;

/**
 * wgDBminWordLen :
 * MySQL 3.x : used to discard words that MySQL will not return any results for
 * shorter values configure mysql directly.
 * MySQL 4.x : ignore it and configure mySQL
 * See: http://dev.mysql.com/doc/mysql/en/Fulltext_Fine-tuning.html
 */
$wgDBminWordLen     = 4;
/** Set to true if using InnoDB tables */
$wgDBtransactions   = false;
/** Set to true for compatibility with extensions that might be checking.
 * MySQL 3.23.x is no longer supported. */
$wgDBmysql4         = true;

/**
 * Set to true to engage MySQL 4.1/5.0 charset-related features;
 * for now will just cause sending of 'SET NAMES=utf8' on connect.
 *
 * WARNING: THIS IS EXPERIMENTAL!
 *
 * May break if you're not using the table defs from mysql5/tables.sql.
 * May break if you're upgrading an existing wiki if set differently.
 * Broken symptoms likely to include incorrect behavior with page titles,
 * usernames, comments etc containing non-ASCII characters.
 * Might also cause failures on the object cache and other things.
 *
 * Even correct usage may cause failures with Unicode supplementary
 * characters (those not in the Basic Multilingual Plane) unless MySQL
 * has enhanced their Unicode support.
 */
$wgDBmysql5         = false;

/**
 * Other wikis on this site, can be administered from a single developer
 * account.
 * Array numeric key => database name
 */
$wgLocalDatabases   = array();

/**
 * Object cache settings
 * See Defines.php for types
 */
$wgMainCacheType = CACHE_NONE;
$wgMessageCacheType = CACHE_ANYTHING;
$wgParserCacheType = CACHE_ANYTHING;

$wgParserCacheExpireTime = 86400;

$wgSessionsInMemcached = false;
$wgLinkCacheMemcached = false; # Not fully tested

/**
 * Memcached-specific settings
 * See docs/memcached.txt
 */
$wgUseMemCached     = false;
$wgMemCachedDebug   = false; # Will be set to false in Setup.php, if the server isn't working
$wgMemCachedServers = array( '127.0.0.1:11000' );
$wgMemCachedDebug   = false;
$wgMemCachedPersistent = false;

/**
 * Directory for local copy of message cache, for use in addition to memcached
 */
$wgLocalMessageCache = false;

/**
 * Directory for compiled constant message array databases
 * WARNING: turning anything on will just break things, aaaaaah!!!!
 */
$wgCachedMessageArrays = false;

# Language settings
#
/** Site language code, should be one of ./languages/Language(.*).php */
$wgLanguageCode     = 'en';

/** Treat language links as magic connectors, not inline links */
$wgInterwikiMagic   = true;

/** Hide interlanguage links from the sidebar */
$wgHideInterlanguageLinks = false;

/** We speak UTF-8 all the time now, unless some oddities happen */
$wgInputEncoding    = 'UTF-8';
$wgOutputEncoding   = 'UTF-8';
$wgEditEncoding     = '';

# Set this to eg 'ISO-8859-1' to perform character set
# conversion when loading old revisions not marked with
# "utf-8" flag. Use this when converting wiki to UTF-8
# without the burdensome mass conversion of old text data.
#
# NOTE! This DOES NOT touch any fields other than old_text.
# Titles, comments, user names, etc still must be converted
# en masse in the database before continuing as a UTF-8 wiki.
$wgLegacyEncoding   = false;

/**
 * If set to true, the MediaWiki 1.4 to 1.5 schema conversion will
 * create stub reference rows in the text table instead of copying
 * the full text of all current entries from 'cur' to 'text'.
 *
 * This will speed up the conversion step for large sites, but
 * requires that the cur table be kept around for those revisions
 * to remain viewable.
 *
 * maintenance/migrateCurStubs.php can be used to complete the
 * migration in the background once the wiki is back online.
 *
 * This option affects the updaters *only*. Any present cur stub
 * revisions will be readable at runtime regardless of this setting.
 */
$wgLegacySchemaConversion = false;

$wgMimeType         = 'text/html';
$wgJsMimeType           = 'text/javascript';
$wgDocType          = '-//W3C//DTD XHTML 1.0 Transitional//EN';
$wgDTD              = 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd';

/** Enable to allow rewriting dates in page text.
 * DOES NOT FORMAT CORRECTLY FOR MOST LANGUAGES */
$wgUseDynamicDates  = false;
/** Enable dates like 'May 12' instead of '12 May', this only takes effect if
 * the interface is set to English
 */
$wgAmericanDates    = false;
/**
 * For Hindi and Arabic use local numerals instead of Western style (0-9)
 * numerals in interface.
 */
$wgTranslateNumerals = true;

# Translation using MediaWiki: namespace
# This will increase load times by 25-60% unless memcached is installed
# Interface messages will be loaded from the database.
$wgUseDatabaseMessages = true;
$wgMsgCacheExpiry   = 86400;

# Whether to enable language variant conversion.
$wgDisableLangConversion = false;

# Whether to use zhdaemon to perform Chinese text processing
# zhdaemon is under developement, so normally you don't want to
# use it unless for testing
$wgUseZhdaemon = false;
$wgZhdaemonHost="localhost";
$wgZhdaemonPort=2004;

/** Normally you can ignore this and it will be something
    like $wgMetaNamespace . "_talk". In some languages, you
    may want to set this manually for grammatical reasons.
    It is currently only respected by those languages
    where it might be relevant and where no automatic
    grammar converter exists.
*/
$wgMetaNamespaceTalk = false;

# Miscellaneous configuration settings
#

$wgLocalInterwiki   = 'w';
$wgInterwikiExpiry = 10800; # Expiry time for cache of interwiki table

/** Interwiki caching settings.
    $wgInterwikiCache specifies path to constant database file
        This cdb database is generated by dumpInterwiki from maintenance
        and has such key formats:
            dbname:key - a simple key (e.g. enwiki:meta)
            _sitename:key - site-scope key (e.g. wiktionary:meta)
            __global:key - global-scope key (e.g. __global:meta)
            __sites:dbname - site mapping (e.g. __sites:enwiki)
        Sites mapping just specifies site name, other keys provide
            "local url" data layout.
    $wgInterwikiScopes specify number of domains to check for messages:
        1 - Just wiki(db)-level
        2 - wiki and global levels
        3 - site levels
    $wgInterwikiFallbackSite - if unable to resolve from cache
*/
$wgInterwikiCache = false;
$wgInterwikiScopes = 3;
$wgInterwikiFallbackSite = 'wiki';

/**
 * If local interwikis are set up which allow redirects,
 * set this regexp to restrict URLs which will be displayed
 * as 'redirected from' links.
 *
 * It might look something like this:
 * $wgRedirectSources = '!^https?://[a-z-]+\.wikipedia\.org/!';
 *
 * Leave at false to avoid displaying any incoming redirect markers.
 * This does not affect intra-wiki redirects, which don't change
 * the URL.
 */
$wgRedirectSources = false;

$wgShowIPinHeader   = true; # For non-logged in users
$wgMaxNameChars     = 255;  # Maximum number of bytes in username
$wgMaxArticleSize   = 2048; # Maximum article size in kilobytes

$wgExtraSubtitle    = '';
$wgSiteSupportPage  = ''; # A page where you users can receive donations

$wgReadOnlyFile         = "{$wgUploadDirectory}/lock_yBgMBwiR";

/**
 * The debug log file should be not be publicly accessible if it is used, as it
 * may contain private data. */
$wgDebugLogFile         = '';

/**#@+
 * @global bool
 */
$wgDebugRedirects       = false;
$wgDebugRawPage         = false; # Avoid overlapping debug entries by leaving out CSS

$wgDebugComments        = false;
$wgReadOnly             = null;
$wgLogQueries           = false;

/**
 * Write SQL queries to the debug log
 */
$wgDebugDumpSql         = false;

/**
 * Set to an array of log group keys to filenames.
 * If set, wfDebugLog() output for that group will go to that file instead
 * of the regular $wgDebugLogFile. Useful for enabling selective logging
 * in production.
 */
$wgDebugLogGroups       = array();

/**
 * Whether to show "we're sorry, but there has been a database error" pages.
 * Displaying errors aids in debugging, but may display information useful
 * to an attacker.
 */
$wgShowSQLErrors        = false;

/**
 * If true, some error messages will be colorized when running scripts on the
 * command line; this can aid picking important things out when debugging.
 * Ignored when running on Windows or when output is redirected to a file.
 */
$wgColorErrors          = true;

/**
 * disable experimental dmoz-like category browsing. Output things like:
 * Encyclopedia > Music > Style of Music > Jazz
 */
$wgUseCategoryBrowser   = false;

/**
 * Keep parsed pages in a cache (objectcache table, turck, or memcached)
 * to speed up output of the same page viewed by another user with the
 * same options.
 *
 * This can provide a significant speedup for medium to large pages,
 * so you probably want to keep it on.
 */
$wgEnableParserCache = true;

/**
 * If on, the sidebar navigation links are cached for users with the
 * current language set. This can save a touch of load on a busy site
 * by shaving off extra message lookups.
 *
 * However it is also fragile: changing the site configuration, or
 * having a variable $wgArticlePath, can produce broken links that
 * don't update as expected.
 */
$wgEnableSidebarCache = false;

/**
 * Under which condition should a page in the main namespace be counted
 * as a valid article? If $wgUseCommaCount is set to true, it will be
 * counted if it contains at least one comma. If it is set to false
 * (default), it will only be counted if it contains at least one [[wiki
 * link]]. See http://meta.wikimedia.org/wiki/Help:Article_count
 *
 * Retroactively changing this variable will not affect
 * the existing count (cf. maintenance/recount.sql).
*/
$wgUseCommaCount = false;

/**#@-*/

/**
 * wgHitcounterUpdateFreq sets how often page counters should be updated, higher
 * values are easier on the database. A value of 1 causes the counters to be
 * updated on every hit, any higher value n cause them to update *on average*
 * every n hits. Should be set to either 1 or something largish, eg 1000, for
 * maximum efficiency.
*/
$wgHitcounterUpdateFreq = 1;

# Basic user rights and block settings
$wgSysopUserBans        = true; # Allow sysops to ban logged-in users
$wgSysopRangeBans       = true; # Allow sysops to ban IP ranges
$wgAutoblockExpiry      = 86400; # Number of seconds before autoblock entries expire
$wgBlockAllowsUTEdit    = false; # Blocks allow users to edit their own user talk page

# Pages anonymous user may see as an array, e.g.:
# array ( "Main Page", "Special:Userlogin", "Wikipedia:Help");
# NOTE: This will only work if $wgGroupPermissions['*']['read']
# is false -- see below. Otherwise, ALL pages are accessible,
# regardless of this setting.
# Also note that this will only protect _pages in the wiki_.
# Uploaded files will remain readable. Make your upload
# directory name unguessable, or use .htaccess to protect it.
$wgWhitelistRead = false;

/** 
 * Should editors be required to have a validated e-mail
 * address before being allowed to edit?
 */
$wgEmailConfirmToEdit=false;

/**
 * Permission keys given to users in each group.
 * All users are implicitly in the '*' group including anonymous visitors;
 * logged-in users are all implicitly in the 'user' group. These will be
 * combined with the permissions of all groups that a given user is listed
 * in in the user_groups table.
 *
 * Functionality to make pages inaccessible has not been extensively tested
 * for security. Use at your own risk!
 *
 * This replaces wgWhitelistAccount and wgWhitelistEdit
 */
$wgGroupPermissions = array();

// Implicit group for all visitors
$wgGroupPermissions['*'    ]['createaccount']   = true;
$wgGroupPermissions['*'    ]['read']            = true;
$wgGroupPermissions['*'    ]['edit']            = true;
$wgGroupPermissions['*'    ]['createpage']      = true;
$wgGroupPermissions['*'    ]['createtalk']      = true;

// Implicit group for all logged-in accounts
$wgGroupPermissions['user' ]['move']            = true;
$wgGroupPermissions['user' ]['read']            = true;
$wgGroupPermissions['user' ]['edit']            = true;
$wgGroupPermissions['user' ]['createpage']      = true;
$wgGroupPermissions['user' ]['createtalk']      = true;
$wgGroupPermissions['user' ]['upload']          = true;
$wgGroupPermissions['user' ]['reupload']        = true;
$wgGroupPermissions['user' ]['reupload-shared'] = true;
$wgGroupPermissions['user' ]['minoredit']       = true;

// Implicit group for accounts that pass $wgAutoConfirmAge
$wgGroupPermissions['autoconfirmed']['autoconfirmed'] = true;

// Users with bot privilege can have their edits hidden
// from various log pages by default
$wgGroupPermissions['bot'  ]['bot']             = true;
$wgGroupPermissions['bot'  ]['autoconfirmed']   = true;

// Most extra permission abilities go to this group
$wgGroupPermissions['sysop']['block']           = true;
$wgGroupPermissions['sysop']['createaccount']   = true;
$wgGroupPermissions['sysop']['delete']          = true;
$wgGroupPermissions['sysop']['deletedhistory']  = true; // can view deleted history entries, but not see or restore the text
$wgGroupPermissions['sysop']['editinterface']   = true;
$wgGroupPermissions['sysop']['import']          = true;
$wgGroupPermissions['sysop']['importupload']    = true;
$wgGroupPermissions['sysop']['move']            = true;
$wgGroupPermissions['sysop']['patrol']          = true;
$wgGroupPermissions['sysop']['protect']         = true;
$wgGroupPermissions['sysop']['rollback']        = true;
$wgGroupPermissions['sysop']['upload']          = true;
$wgGroupPermissions['sysop']['reupload']        = true;
$wgGroupPermissions['sysop']['reupload-shared'] = true;
$wgGroupPermissions['sysop']['unwatchedpages']  = true;
$wgGroupPermissions['sysop']['autoconfirmed']   = true;

// Permission to change users' group assignments
$wgGroupPermissions['bureaucrat']['userrights'] = true;

// Experimental permissions, not ready for production use
//$wgGroupPermissions['sysop']['deleterevision'] = true;
//$wgGroupPermissions['bureaucrat']['hiderevision'] = true;

/**
 * The developer group is deprecated, but can be activated if need be
 * to use the 'lockdb' and 'unlockdb' special pages. Those require
 * that a lock file be defined and creatable/removable by the web
 * server.
 */
# $wgGroupPermissions['developer']['siteadmin'] = true;

/**
 * Set of available actions that can be restricted via Special:Protect
 * You probably shouldn't change this.
 * Translated trough restriction-* messages.
 */
$wgRestrictionTypes = array( 'edit', 'move' );

/**
 * Set of permission keys that can be selected via Special:Protect.
 * 'autoconfirm' allows all registerd users if $wgAutoConfirmAge is 0.
 */
$wgRestrictionLevels = array( '', 'autoconfirmed', 'sysop' );

/**
 * Number of seconds an account is required to age before
 * it's given the implicit 'autoconfirm' group membership.
 * This can be used to limit privileges of new accounts.
 *
 * Accounts created by earlier versions of the software
 * may not have a recorded creation date, and will always
 * be considered to pass the age test.
 *
 * When left at 0, all registered accounts will pass.
 */
$wgAutoConfirmAge = 0;
//$wgAutoConfirmAge = 600;     // ten minutes
//$wgAutoConfirmAge = 3600*24; // one day

# Proxy scanner settings
#

/**
 * If you enable this, every editor's IP address will be scanned for open HTTP
 * proxies.
 *
 * Don't enable this. Many sysops will report "hostile TCP port scans" to your
 * ISP and ask for your server to be shut down.
 *
 * You have been warned.
 */
$wgBlockOpenProxies = false;
/** Port we want to scan for a proxy */
$wgProxyPorts = array( 80, 81, 1080, 3128, 6588, 8000, 8080, 8888, 65506 );
/** Script used to scan */
$wgProxyScriptPath = "$IP/proxy_check.php";
/** */
$wgProxyMemcExpiry = 86400;
/** This should always be customised in LocalSettings.php */
$wgSecretKey = false;
/** big list of banned IP addresses, in the keys not the values */
$wgProxyList = array();
/** deprecated */
$wgProxyKey = false;

/** Number of accounts each IP address may create, 0 to disable.
 * Requires memcached */
$wgAccountCreationThrottle = 0;

# Client-side caching:

/** Allow client-side caching of pages */
$wgCachePages       = true;

/**
 * Set this to current time to invalidate all prior cached pages. Affects both
 * client- and server-side caching.
 * You can get the current date on your server by using the command:
 *   date +%Y%m%d%H%M%S
 */
$wgCacheEpoch = '20030516000000';

# Server-side caching:

/**
 * This will cache static pages for non-logged-in users to reduce
 * database traffic on public sites.
 * Must set $wgShowIPinHeader = false
 */
$wgUseFileCache = false;
/** Directory where the cached page will be saved */
$wgFileCacheDirectory = "{$wgUploadDirectory}/cache";

/**
 * When using the file cache, we can store the cached HTML gzipped to save disk
 * space. Pages will then also be served compressed to clients that support it.
 * THIS IS NOT COMPATIBLE with ob_gzhandler which is now enabled if supported in
 * the default LocalSettings.php! If you enable this, remove that setting first.
 *
 * Requires zlib support enabled in PHP.
 */
$wgUseGzip = false;

# Email notification settings
#

/** For email notification on page changes */
$wgPasswordSender = $wgEmergencyContact;

# true: from page editor if s/he opted-in
# false: Enotif mails appear to come from $wgEmergencyContact
$wgEnotifFromEditor = false;

// TODO move UPO to preferences probably ?
# If set to true, users get a corresponding option in their preferences and can choose to enable or disable at their discretion
# If set to false, the corresponding input form on the user preference page is suppressed
# It call this to be a "user-preferences-option (UPO)"
$wgEmailAuthentication              = true; # UPO (if this is set to false, texts referring to authentication are suppressed)
$wgEnotifWatchlist      = false; # UPO
$wgEnotifUserTalk       = false;    # UPO
$wgEnotifRevealEditorAddress    = false;    # UPO; reply-to address may be filled with page editor's address (if user allowed this in the preferences)
$wgEnotifMinorEdits     = true; # UPO; false: "minor edits" on pages do not trigger notification mails.
#                           # Attention: _every_ change on a user_talk page trigger a notification mail (if the user is not yet notified)

/** Show watching users in recent changes, watchlist and page history views */
$wgRCShowWatchingUsers              = false; # UPO
/** Show watching users in Page views */
$wgPageShowWatchingUsers            = false;
/**
 * Show "Updated (since my last visit)" marker in RC view, watchlist and history
 * view for watched pages with new changes */
$wgShowUpdatedMarker                = true;

$wgCookieExpiration = 2592000;

/** Clock skew or the one-second resolution of time() can occasionally cause cache
 * problems when the user requests two pages within a short period of time. This
 * variable adds a given number of seconds to vulnerable timestamps, thereby giving
 * a grace period.
 */
$wgClockSkewFudge = 5;

# Squid-related settings
#

/** Enable/disable Squid */
$wgUseSquid = false;

/** If you run Squid3 with ESI support, enable this (default:false): */
$wgUseESI = false;

/** Internal server name as known to Squid, if different */
# $wgInternalServer = 'http://yourinternal.tld:8000';
$wgInternalServer = $wgServer;

/**
 * Cache timeout for the squid, will be sent as s-maxage (without ESI) or
 * Surrogate-Control (with ESI). Without ESI, you should strip out s-maxage in
 * the Squid config. 18000 seconds = 5 hours, more cache hits with 2678400 = 31
 * days
 */
$wgSquidMaxage = 18000;

/**
 * A list of proxy servers (ips if possible) to purge on changes don't specify
 * ports here (80 is default)
 */
# $wgSquidServers = array('127.0.0.1');
$wgSquidServers = array();
$wgSquidServersNoPurge = array();

/** Maximum number of titles to purge in any one client operation */
$wgMaxSquidPurgeTitles = 400;

/** HTCP multicast purging */
$wgHTCPPort = 4827;
$wgHTCPMulticastTTL = 1;
# $wgHTCPMulticastAddress = "224.0.0.85";

# Cookie settings:
#
/**
 * Set to set an explicit domain on the login cookies eg, "justthis.domain. org"
 * or ".any.subdomain.net"
 */
$wgCookieDomain = '';
$wgCookiePath = '/';
$wgCookieSecure = ($wgProto == 'https');
$wgDisableCookieCheck = false;

/**  Whether to allow inline image pointing to other websites */
$wgAllowExternalImages = true;

/** If the above is false, you can specify an exception here. Image URLs
  * that start with this string are then rendered, while all others are not.
  * You can use this to set up a trusted, simple repository of images.
  *
  * Example:
  * $wgAllowExternalImagesFrom = 'http://127.0.0.1/';
  */
$wgAllowExternalImagesFrom = '';

/** Disable database-intensive features */
$wgMiserMode = false;
/** Disable all query pages if miser mode is on, not just some */
$wgDisableQueryPages = false;
/** Generate a watchlist once every hour or so */
$wgUseWatchlistCache = false;
/** The hour or so mentioned above */
$wgWLCacheTimeout = 3600;
/** Number of links to a page required before it is deemed "wanted" */
$wgWantedPagesThreshold = 1;

/**
 * To use inline TeX, you need to compile 'texvc' (in the 'math' subdirectory of
 * the MediaWiki package and have latex, dvips, gs (ghostscript), andconvert
 * (ImageMagick) installed and available in the PATH.
 * Please see math/README for more information.
 */
$wgUseTeX = false;
/** Location of the texvc binary */
$wgTexvc = './math/texvc';

#
# Profiling / debugging
#

/** Enable for more detailed by-function times in debug log */
$wgProfiling = false;
/** Only record profiling info for pages that took longer than this */
$wgProfileLimit = 0.0;
/** Don't put non-profiling info into log file */
$wgProfileOnly = false;
/** Log sums from profiling into "profiling" table in db. */
$wgProfileToDatabase = false;
/** Only profile every n requests when profiling is turned on */
$wgProfileSampleRate = 1;
/** If true, print a raw call tree instead of per-function report */
$wgProfileCallTree = false;
/** If not empty, specifies profiler type to load */
$wgProfilerType = '';

/** Settings for UDP profiler */
$wgUDPProfilerHost = '127.0.0.1';
$wgUDPProfilerPort = '3811';

/** Detects non-matching wfProfileIn/wfProfileOut calls */
$wgDebugProfiling = false;
/** Output debug message on every wfProfileIn/wfProfileOut */
$wgDebugFunctionEntry = 0;
/** Lots of debugging output from SquidUpdate.php */
$wgDebugSquid = false;

$wgDisableCounters = false;
$wgDisableTextSearch = false;
$wgDisableSearchContext = false;
/**
 * If you've disabled search semi-permanently, this also disables updates to the
 * table. If you ever re-enable, be sure to rebuild the search table.
 */
$wgDisableSearchUpdate = false;
/** Uploads have to be specially set up to be secure */
$wgEnableUploads = false;
/**
 * Show EXIF data, on by default if available.
 * Requires PHP's EXIF extension: http://www.php.net/manual/en/ref.exif.php
 */
$wgShowEXIF = function_exists( 'exif_read_data' );

/**
 * Set to true to enable the upload _link_ while local uploads are disabled.
 * Assumes that the special page link will be bounced to another server where
 * uploads do work.
 */
$wgRemoteUploads = false;
$wgDisableAnonTalk = false;
/**
 * Do DELETE/INSERT for link updates instead of incremental
 */
$wgUseDumbLinkUpdate = false;

/**
 * Anti-lock flags - bitfield
 *   ALF_PRELOAD_LINKS
 *       Preload links during link update for save
 *   ALF_PRELOAD_EXISTENCE
 *       Preload cur_id during replaceLinkHolders
 *   ALF_NO_LINK_LOCK
 *       Don't use locking reads when updating the link table. This is
 *       necessary for wikis with a high edit rate for performance
 *       reasons, but may cause link table inconsistency
 *   ALF_NO_BLOCK_LOCK
 *       As for ALF_LINK_LOCK, this flag is a necessity for high-traffic
 *       wikis.
 */
$wgAntiLockFlags = 0;

/**
 * Path to the GNU diff3 utility. If the file doesn't exist, edit conflicts will
 * fall back to the old behaviour (no merging).
 */
$wgDiff3 = '/usr/bin/diff3';

/**
 * We can also compress text in the old revisions table. If this is set on, old
 * revisions will be compressed on page save if zlib support is available. Any
 * compressed revisions will be decompressed on load regardless of this setting
 * *but will not be readable at all* if zlib support is not available.
 */
$wgCompressRevisions = false;

/**
 * This is the list of preferred extensions for uploading files. Uploading files
 * with extensions not in this list will trigger a warning.
 */
$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg' );

/** Files with these extensions will never be allowed as uploads. */
$wgFileBlacklist = array(
    # HTML may contain cookie-stealing JavaScript and web bugs
    'html', 'htm', 'js', 'jsb',
    # PHP scripts may execute arbitrary code on the server
    'php', 'phtml', 'php3', 'php4', 'phps',
    # Other types that may be interpreted by some servers
    'shtml', 'jhtml', 'pl', 'py', 'cgi',
    # May contain harmful executables for Windows victims
    'exe', 'scr', 'dll', 'msi', 'vbs', 'bat', 'com', 'pif', 'cmd', 'vxd', 'cpl' );

/** Files with these mime types will never be allowed as uploads
 * if $wgVerifyMimeType is enabled.
 */
$wgMimeTypeBlacklist= array(
    # HTML may contain cookie-stealing JavaScript and web bugs
    'text/html', 'text/javascript', 'text/x-javascript',  'application/x-shellscript',
    # PHP scripts may execute arbitrary code on the server
    'application/x-php', 'text/x-php',
    # Other types that may be interpreted by some servers
    'text/x-python', 'text/x-perl', 'text/x-bash', 'text/x-sh', 'text/x-csh',
    # Windows metafile, client-side vulnerability on some systems
    'application/x-msmetafile'
);

/** This is a flag to determine whether or not to check file extensions on upload. */
$wgCheckFileExtensions = true;

/**
 * If this is turned off, users may override the warning for files not covered
 * by $wgFileExtensions.
 */
$wgStrictFileExtensions = true;

/** Warn if uploaded files are larger than this */
$wgUploadSizeWarning = 150 * 1024;

/** For compatibility with old installations set to false */
$wgPasswordSalt = true;

/** Which namespaces should support subpages?
 * See Language.php for a list of namespaces.
 */
$wgNamespacesWithSubpages = array(
    NS_TALK           => true,
    NS_USER           => true,
    NS_USER_TALK      => true,
    NS_PROJECT_TALK   => true,
    NS_IMAGE_TALK     => true,
    NS_MEDIAWIKI_TALK => true,
    NS_TEMPLATE_TALK  => true,
    NS_HELP_TALK      => true,
    NS_CATEGORY_TALK  => true
 );

$wgNamespacesToBeSearchedDefault = array(
    NS_MAIN           => true,
);

/** If set, a bold ugly notice will show up at the top of every page. */
$wgSiteNotice = '';

#
# Images settings
#

/** dynamic server side image resizing ("Thumbnails") */
$wgUseImageResize       = false;

/**
 * Resizing can be done using PHP's internal image libraries or using
 * ImageMagick or another third-party converter, e.g. GraphicMagick.
 * These support more file formats than PHP, which only supports PNG,
 * GIF, JPG, XBM and WBMP.
 *
 * Use Image Magick instead of PHP builtin functions.
 */
$wgUseImageMagick       = false;
/** The convert command shipped with ImageMagick */
$wgImageMagickConvertCommand    = '/usr/bin/convert';

/**
 * Use another resizing converter, e.g. GraphicMagick
 * %s will be replaced with the source path,