on non-mySQL schemas.
* (bug 14763) Child classes of Database (DatabasePostgres and DatabaseOracle)
had stict standards issues with setFakeSlaveLag() and setFakeMaster().
+* Image now can't contain "*" or "?" characters under Windows
=== API changes in 1.13 ===
*/
function wfVarDump( $var ) {
global $wgOut;
- $s = str_replace("\n","<br />\n", var_export( $var, true ) . "\n");
+ ob_start();
+ var_dump( $var );
+ $s = str_replace("\n","<br />\n", ob_get_contents() . "\n");
+ ob_end_clean();
if ( headers_sent() || !@is_object( $wgOut ) ) {
print $s;
} else {
return md5( mt_rand( 0, 0x7fffffff ) . $salt );
}
+
+/**
+ * Checks filename for validity
+ * @param mixed $title Filename or title to check
+ */
+function wfIsValidFileName( $name ) {
+ if( !$name instanceof Title )
+ if( !Title::makeTitleSafe( NS_IMAGE, $name ) )
+ return false;
+ else
+ $name = $name->getText();
+
+ if( in_string( ':', $name ) )
+ return false;
+ elseif( wfBaseName( $name ) != $name )
+ return false;
+ elseif( wfIsWindows() && ( in_string( '*', $name ) || in_string( '?', $name ) ) )
+ return false;
+ else
+ return true;
+}
if( $nt->getNamespace() != NS_IMAGE ) {
$errors[] = array('imagenocrossnamespace');
}
+ if( !wfIsValidFileName( $nt ) ) {
+ $errors[] = array('imageinvalidfilename');
+ }
if( !File::checkExtensionCompatibility( $file, $nt->getDbKey() ) ) {
$errors[] = array('imagetypemismatch');
}
* out of it. We'll strip some silently that Title would die on.
*/
$filtered = preg_replace ( "/[^".Title::legalChars()."]|:/", '-', $filtered );
+ if( wfIsWindows() )
+ $filtered = preg_replace ( "/[*?]/", '-', $filtered );
$nt = Title::makeTitleSafe( NS_IMAGE, $filtered );
if( is_null( $nt ) ) {
$resultDetails = array( 'filtered' => $filtered );
cannot move pages from and into that namespace.',
'imagenocrossnamespace' => 'Cannot move file to non-file namespace',
'imagetypemismatch' => 'The new file extension does not match its type',
+'imageinvalidfilename' => 'Target image file name is invalid',
# Export
'export' => 'Export pages',
'immobile_namespace',
'imagenocrossnamespace',
'imagetypemismatch',
+ 'imageinvalidfilename',
),
'export' => array(
'export',