<?php
/**
 * Skript zur Installation von TYPO3 auf einem Webserver.
 * Das Skript holt die benötigten Dateien von einem sourceforge.net Mirror,
 * entpackt sie, setzt die benötigten Rechte und benennt das Dummy-Paket in einen Namen Ihrer Wahl um.
 *
 * Benötigte PHP-Befehle: system()
 * Benötigte Shell-Befehle: wget, chmod, tar, mv
 *
 *
 * @author        Joscha Feth <joscha@feth.com>
 * @version        1.0
 * @date        2006-04-15
 **/
 
//~ Geben Sie hier den Namen ihres Projektes an.
$project    't3site';
//~ Geben Sie hier den sourceforge.net Mirror an. Beispiele: mesh, switch, ovh, kent
$mirror     'mesh';
//~ TYPO3 Version
$version     '4.0';

//~ --- END OF CONFIGURATION ---

//~ escape user input
$projectescapeshellarg(escapeshellcmd($project));
$mirror escapeshellcmd($mirror);

//~ files to retrieve
$files     = array(    'dummy' => 'dummy-'.$version,
                    
'src'     => 'typo3_src-'.$version);
//~ extensions of the files to retrieve
$ext     '.tar.gz';
//~ create download base url with selected mirror
$uri    "http://$mirror.dl.sourceforge.net/sourceforge/typo3/";
//~ let us also see stderr
$stderr ' 2>&1';
//~ divider which is put out between actions
$dividerstr_pad('',100,'-')."\n";

//~ output from cmd is plain text
header('Content-Type: text/plain');

foreach(
$files as $file) {
    
//~ get the file from sourceforge. Continue file (-c) and retry five times (--tries=5)
    
system('wget -c --tries=5 '.escapeshellarg($uri.$file.$ext).$stderr);
    echo 
$divider;
    
//~ make the file readable and writable by world (o+rw). Otherwise we would not be able to delete it any more by FTP.
    
system('chmod o+rw ./'.$file.$ext.$stderr);
    echo 
$divider;
    
//~ extract (-x) gzipped (-z) file (-f) with verbose (-v) output 
    
system('tar -zxvf ./'.$file.$ext.$stderr);
    echo 
$divider;
    
//~ make the extracted directory and contents (-R) readable and writable by world (o+rw).
    
system('chmod o+rw -R ./'.$file.$stderr);
    echo 
$divider;
}
//~ rename dummy-$version to the chosen project name $project
system("mv ./{$files['dummy']} $project");
?>