You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

86 lines
2.7 KiB

<?php
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$
if (basename($_SERVER['SCRIPT_NAME']) === basename(__FILE__)) {
die('This script may only be included.');
}
function svn_last_update()
{
$cachelib = TikiLib::lib('cache');
$cache = $cachelib->getSerialized('svn_last_update');
if ($cache && is_readable('.svn') && $cache['wcdb_mtime'] < filemtime('.svn/wc.db')) {
$cache = false;
}
if ($cache) {
return $cache;
} else {
$cache = [];
}
if (is_readable('.svn')) {
$svn = [];
if (is_readable('.svn/entries')) {
$fp = fopen('.svn/entries', 'r');
for ($i = 0; 10 > $i && $line = fgets($fp, 80); ++$i) {
$svn[] = $line;
}
fclose($fp);
}
if (count($svn) > 2) {
// Standard SVN client
$cache['svnrev'] = $svn[3];
$cache['lastup'] = strtotime($svn[9]);
} else {
// Check for Tortoise 1.7+ SVN client, if sqlite3 is present
if (extension_loaded('sqlite3')) {
$location = '.svn/wc.db';
if (is_file($location)) {
$handle = new SQLite3($location);
// Assign svnrev
$query = "select max(changed_revision) as svnrev from nodes";
$result = $handle->query($query);
$svnrev = $lastupTime = $strDT = '';
if ($result) {
$resx = $result->fetchArray(SQLITE3_ASSOC);
$cache['svnrev'] = $resx['svnrev'];
}
// Assign lastup
$query = "select max(changed_date)/1000000 as lastup from nodes";
$result = $handle->query($query);
if ($result) {
$resx = $result->fetchArray(SQLITE3_ASSOC);
$lastupTime = (int)$resx['lastup'];
$dt = new DateTime();
$dt->setTimestamp($lastupTime);
$cache['lastup'] = $dt->format(DateTime::ISO8601);
}
// Release/Unlock the database afterwards
$handle->close();
}
}
}
$cache['wcdb_mtime'] = filemtime('.svn/wc.db');
}
if (! $cache) {
$cache['lastup'] = null;
$cache['svnrev'] = null;
$cache['wcdb_mtime'] = null;
}
$cachelib->cacheItem('svn_last_update', serialize($cache));
return $cache;
}