Extension:UploadedFileHasher
<translate> This extension stores its source code on a wiki page.</translate> <translate> Please be aware that this code may be unreviewed or maliciously altered.</translate> <translate> They may contain security holes, outdated interfaces that are no longer compatible etc.</translate> <translate> Note:</translate> <translate> No [[<tvar name=localisation>Special:MyLanguage/Localisation#Translation resources</tvar>|localisation]] updates are provided for this extension by <tvar name=twn>translatewiki.net </tvar>.</translate> |
<translate> This extension is currently not actively maintained!</translate> <translate> Although it may still work, any bug reports or feature requests will more than likely be ignored.</translate> |
UploadedFileHasher Release status: unmaintained |
|
---|---|
Implementation | Special page |
Description | Saves hashes of uploaded files to a page. |
Author(s) | Artūras Šlajus <x11@arturaz.net> |
Latest version | 1.0 (2010-02-13) |
MediaWiki | 1.15.1 |
PHP | 5.2.6 |
Database changes | No |
License | BSD 3-clause "Modified" License |
Download | Extension:UploadedFileHasher#Code |
Quarterly downloads | Lua error in Module:Extension at line 172: bad argument #1 to 'inNamespace' (unrecognized namespace name 'skin'). |
Public wikis using | Lua error in Module:Extension at line 172: bad argument #1 to 'inNamespace' (unrecognized namespace name 'skin'). |
The UploadedFileHasher extension saves hashes of uploaded files to a page (as JSON). It can be used to synchronize wiki content with local file system.
Example content
{"Login_logo.jpg":"6f8d394a529e2873d9c09936369fa82bb22cb74c",
"Panel_bottom_left.png":"7a719e3dde1919914394c064a855ade82b0b46c4",
"ZetiumIcon.png":"7c6518744d92d9b8bb07e89661659ba20af8ef53",
"Tile_texture_desert.jpg":"c47c42031404e7fca79e90ffa1d265c59f4deafb"}
Download instructions
Please cut and paste the code found below and place it in $IP/extensions/UploadedFileHasher.php
. Note: $IP stands for the root directory of your MediaWiki installation, the same directory that holds LocalSettings.php.
Installation
To install this extension, add the following to LocalSettings.php:
require_once("$IP/extensions/UploadedFileHasher/UploadedFileHasher.php");
Code
- UploadedFileHasher.php
<?php
class UploadedFileHasher {
const HASHES_PAGE = "FileHashes";
static function uploadComplete($file) {
$localFile = $file->mLocalFile;
$localFile->load();
// Use 40 chars sha1 for other systems compatibility.
$sha1 = sha1_file($localFile->getPath());
return self::updateHash(
$file->mDestName,
$sha1
);
}
static function updateHash($filename, $sha1) {
$title = Title::newFromText(self::HASHES_PAGE);
$article = new Article($title);
$content = $article->getRawText();
$hashes = (! empty($content)) ? json_decode($content, true) : array();
$hashes[$filename] = $sha1;
// Add spaces for manual viewing
$content = str_replace("\",", "\",\n\n", json_encode($hashes));
$flag = $article->exists() ? EDIT_UPDATE : EDIT_NEW;
$status = $article->doEdit($content, '', $flag | EDIT_FORCE_BOT);
return $status->ok;
}
}
function UploadedFileHasherUploadComplete($file) {
return UploadedFileHasher::uploadComplete($file);
}
$wgHooks['UploadComplete'][] = 'UploadedFileHasherUploadComplete';
- Pages with script errors
- Pages with broken file links
- Extensions which host their code in-wiki
- Unmaintained extensions
- Extensions without an image
- Special page extensions
- Extensions without a compatibility policy
- Extensions with manual MediaWiki version
- BSD licensed extensions
- UploadComplete extensions
- All extensions
- Extensions not in ExtensionJson