<?php

/*

  Receive files by HTTP PUT (Mozilla Composer),
  backup existing file + write new one.

*/

if (! isset($_SERVER'PATH_INFO' ]))
  exit;

if (
trim($_SERVER'PATH_INFO' ]) == '')
  exit;

$subpath $_SERVER'PATH_INFO' ];

if (
substr($subpath08) == '/publish')
  
$subpath substr($subpath8);

if (
$subpath] != '/')
  
$subpath '/' $subpath;

$filename $_SERVER'DOCUMENT_ROOT' ] . $subpath;

if (! 
is_dir(dirname($filename)))
  
mkdir(dirname($filename));

$tmpfile dirname($filename) . '/.' basename($filename) . '.publish.tmp';
$backupfile dirname($filename) . '/.' basename($filename) . '.bak';

$fp fopen($tmpfile'w');

if (
$fp)
  { 
$putdata fopen('php://input''r');

    while (
$data fread($putdata1024))
      
fwrite($fp$data);

    
fclose($fp);

    if (
file_exists($filename))
      
copy($filename$backupfile);

    
rename($tmpfile$filename);

    
fclose($putdata);
  }
  
?>