Skip to content
Snippets Groups Projects
Commit c9b4bd1e authored by Ben Coburn's avatar Ben Coburn
Browse files

refactor wiki page edit locking

  - Adds a new function in 'inc/pageutils.php',  wikiLockFN($id)
  - All page edit locks should now be created with the file name
    generated by wikiLockFN($id).
  - wikiLockFN
    - Generates wiki page editing locks in the 'data/locks'
      directory where they belong.
    - This avoids polluting the 'data/pages' directory with lock files,
      which were causing namespaces to be created before they logically
      should exist.

darcs-hash:20060705033135-05dcb-8eac316587cd54c6ebd861fe7b15975d90b0e4dc.gz
parent 306ca8aa
No related branches found
No related tags found
No related merge requests found
......@@ -158,7 +158,7 @@ function clearLock($WIKI_ID) {
unlock($WIKI_ID);
if ( file_exists(wikiFN($WIKI_ID).'.lock') ) {
if ( file_exists(wikiLockFN($WIKI_ID)) ) {
fwrite( STDERR, "Unable to clear lock for $WIKI_ID\n" );
exit(1);
}
......@@ -168,7 +168,7 @@ function clearLock($WIKI_ID) {
#------------------------------------------------------------------------------
function deleteLock($WIKI_ID) {
$wikiLockFN = wikiFN($WIKI_ID).'.lock';
$wikiLockFN = wikiLockFN($WIKI_ID);
if ( file_exists($wikiLockFN) ) {
if ( !unlink($wikiLockFN) ) {
......
......@@ -523,7 +523,7 @@ function clientIP($single=false){
*/
function checklock($id){
global $conf;
$lock = wikiFN($id).'.lock';
$lock = wikiLockFN($id);
//no lockfile
if(!@file_exists($lock)) return false;
......@@ -549,7 +549,7 @@ function checklock($id){
* @author Andreas Gohr <andi@splitbrain.org>
*/
function lock($id){
$lock = wikiFN($id).'.lock';
$lock = wikiLockFN($id);
if($_SERVER['REMOTE_USER']){
io_saveFile($lock,$_SERVER['REMOTE_USER']);
}else{
......@@ -564,7 +564,7 @@ function lock($id){
* @return bool true if a lock was removed
*/
function unlock($id){
$lock = wikiFN($id).'.lock';
$lock = wikiLockFN($id);
if(@file_exists($lock)){
$ip = io_readFile($lock);
if( ($ip == clientIP()) || ($ip == $_SERVER['REMOTE_USER']) ){
......
......@@ -422,7 +422,7 @@ function html_locked(){
global $lang;
global $INFO;
$locktime = filemtime(wikiFN($ID).'.lock');
$locktime = filemtime(wikiLockFN($ID));
$expire = @date($conf['dformat'], $locktime + $conf['locktime'] );
$min = round(($conf['locktime'] - (time() - $locktime) )/60);
......
......@@ -151,6 +151,17 @@ function wikiFN($id,$rev=''){
return $fn;
}
/**
* Returns the full path to the file for locking the page while editing.
*
* @author Ben Coburn <btcoburn@silicodon.net>
*/
function wikiLockFN($id) {
global $conf;
return $conf['lockdir'].'/'.sha1(cleanID($id)).'.lock';
}
/**
* returns the full path to the meta file specified by ID and extension
*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment