LuckyCoinkydink/bundled-libs/serendipity_generateFTPChecksums.php

66 lines
2.1 KiB
PHP

<?php
# Copyright (c) 2008 Judebert (on behalf of the Serendipity development team)
# All rights reserved. See LICENSE file for licensing details
// Call this file from the base directory with
// echo "true" | php -B "define('IN_serendipity', true);" -F bundled-libs/serendipity_generateFTPChecksums.php
if (IN_serendipity !== true) {
die ("Don't hack!\n");
}
echo "Creating checksums.\n";
$basedir = realpath(dirname(__FILE__) . '/../') . '/';
require_once $basedir . 'include/functions_installer.inc.php';
require_once $basedir . 'include/functions_images.inc.php';
$conf = file_get_contents($basedir . 'serendipity_config.inc.php');
preg_match('@\$serendipity\[\'version\'\]\s*=\s*\'(.+)\'@imsU', $conf, $vmatch);
// Find all the files in the serendipity directory and calculate their md5 sums
$sums = array();
$excludes = array(
'CHANGELOG',
'checksums.inc.php',
);
$files = serendipity_traversePath($basedir, '', false);
foreach ($files as $fdata) {
echo $fdata['relpath'] . "\n";
// Don't take checksums of directories
if ($fdata['directory']) {
continue;
}
$fname = $fdata['name'];
$prel = $fdata['relpath'];
$path = $basedir . $prel;
if ($fname[0] == '.' || !is_readable($path)) {
// serendipity_traversePath already excludes CVS and svn directories
continue;
}
// Are we SURE we should checksum this file?
if (is_file($path) && !in_array($fname, $excludes)) {
$sum = serendipity_FTPChecksum($path);
// If you find the valid file with an MD5 sum of 0, let me know. ;)
if ($sum) {
$sums[$prel] = $sum;
}
continue;
}
}
if (!empty($sums)) {
$file = fopen($basedir . '/' . 'checksums.inc.php', 'w');
if (!$file) {
die('Unable to open output file!');
}
fwrite($file, '<?php' . "\n" . 'global $serendipity;' . "\n" . '$serendipity[\'checksums_' . $vmatch[1] . '\'] = array (' . "\n");
foreach ($sums as $fname => $sum) {
fwrite($file, "'$fname' => '$sum',\n");
}
fwrite($file, ');');
fclose($file);
}
/* vim: set sts=4 ts=4 sw=4 expandtab : */
?>