128 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
<?php
 | 
						|
 | 
						|
function dir_is_empty($dirname)
 | 
						|
{
 | 
						|
  // Check if directory is empty but ignore install script
 | 
						|
  if (!is_dir($dirname)) return false;
 | 
						|
  foreach (scandir($dirname) as $file) {
 | 
						|
    if (!in_array($file, array('.','..','oci-framagrav.php'))) return false;
 | 
						|
  }
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
// If install directory is not empty stop processing
 | 
						|
$dest = dirname(__FILE__).'/';
 | 
						|
if (dir_is_empty($dest) === false) {
 | 
						|
    echo nl2br("Le dossier httpdocs/ doit être vide pour y migrer votre Framasite.\r\n");
 | 
						|
    exit();
 | 
						|
}
 | 
						|
 | 
						|
// We have a ZIP file !
 | 
						|
if($_FILES["zip_file"]["name"]) {
 | 
						|
    $filename = $_FILES["zip_file"]["name"];
 | 
						|
    $source = $_FILES["zip_file"]["tmp_name"];
 | 
						|
    $type = $_FILES["zip_file"]["type"];
 | 
						|
 | 
						|
    $name = explode(".", $filename);
 | 
						|
    $accepted_types = array('application/zip', 'application/x-zip-compressed', 'multipart/x-zip', 'application/x-compressed');
 | 
						|
    foreach($accepted_types as $mime_type) {
 | 
						|
        if($mime_type == $type) {
 | 
						|
            $okay = true;
 | 
						|
            break;
 | 
						|
        } 
 | 
						|
    }
 | 
						|
 | 
						|
    $continue = strtolower($name[1]) == 'zip' ? true : false;
 | 
						|
    if(!$continue) {
 | 
						|
        $message = "Votre fichier n'est pas une archive ZIP.";
 | 
						|
    }
 | 
						|
 | 
						|
    /* PHP current path */
 | 
						|
    $filenoext = basename ($filename, '.zip');  // absolute path (lowercase)
 | 
						|
    $filenoext = basename ($filenoext, '.ZIP');  // absolute path (uppercase)
 | 
						|
 | 
						|
    $targetdir = $path . $filenoext; // target directory
 | 
						|
    $targetzip = $path . $filename; // target zip file
 | 
						|
 | 
						|
    /* here it is really happening */
 | 
						|
    if(move_uploaded_file($source, $targetzip)) {
 | 
						|
        $zip = new ZipArchive();
 | 
						|
        $x = $zip->open($targetzip);  // open the zip file to extract
 | 
						|
        if ($x === true) {
 | 
						|
            $zip->extractTo('.'); // place in the directory with same name  
 | 
						|
            $zip->close();
 | 
						|
 | 
						|
            unlink($targetzip);
 | 
						|
        }
 | 
						|
    } else {    
 | 
						|
        echo nl2br("Une erreur vient de se produire lors du téléversement de votre fichier.\r\n");
 | 
						|
        exit();
 | 
						|
    }
 | 
						|
 | 
						|
    // Download latest CMS zip with cURL
 | 
						|
    $ch = curl_init();
 | 
						|
    $source = "https://ouvaton.coop/oci/framagrav-themes.zip";
 | 
						|
    curl_setopt($ch, CURLOPT_URL, $source);
 | 
						|
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
 | 
						|
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 | 
						|
    $data = curl_exec($ch);
 | 
						|
    // If any cURL error stop processing
 | 
						|
    if(curl_errno($ch)) {
 | 
						|
    echo nl2br("Une erreur vient de se produire. Rechargez la page pour essayer à nouveau, ou contactez l'assistance si le problème persiste.\r\n");
 | 
						|
    echo 'Erreur cURL : '.curl_error($ch);
 | 
						|
    curl_close($ch);
 | 
						|
    exit;
 | 
						|
    }
 | 
						|
 | 
						|
    // Check HTTP code
 | 
						|
    switch ($http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE)) {
 | 
						|
    case 200:
 | 
						|
        // Create CMS zip
 | 
						|
        $destination = "themes.zip";
 | 
						|
        $file = fopen($destination, "w+");
 | 
						|
        fputs($file, $data);
 | 
						|
        fclose($file);
 | 
						|
        curl_close($ch);
 | 
						|
 | 
						|
        // Unzip archive file
 | 
						|
        $file = 'themes.zip';
 | 
						|
        $zip = new ZipArchive;
 | 
						|
        if ($zip->open($file) === TRUE) {
 | 
						|
                $zip->extractTo('.');
 | 
						|
                $zip->close();
 | 
						|
        } else {echo nl2br("Une erreur lors de la décompression de l'archive vient de se produire, contactez l'assistance !\r\n");}
 | 
						|
        // Zip archive is not needed anymore
 | 
						|
        unlink('themes.zip');
 | 
						|
 | 
						|
        // Redirecting user to CMS install page
 | 
						|
        $host  = $_SERVER['HTTP_HOST'];
 | 
						|
        $uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
 | 
						|
        header("Location: http://$host$uri/");
 | 
						|
        // Remove script
 | 
						|
        unlink(__FILE__);
 | 
						|
        exit;
 | 
						|
    default:
 | 
						|
        // If any HTTP error stop processing
 | 
						|
        echo nl2br("Une erreur vient de se produire. Rechargez la page pour essayer à nouveau, ou contactez l'assistance si le problème persiste.\r\n");
 | 
						|
        echo nl2br("Code HTTP : ".$http_code."\r\n");
 | 
						|
        curl_close($ch);
 | 
						|
        exit;
 | 
						|
    }
 | 
						|
}
 | 
						|
?>
 | 
						|
 | 
						|
<!DOCTYPE html>
 | 
						|
<html>
 | 
						|
<head>
 | 
						|
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 | 
						|
    <title>Migration de votre Framasite chez Ouvaton</title>
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
    <?php if($message) echo "<p>$message</p>"; ?>
 | 
						|
    <form enctype="multipart/form-data" method="post" action="">
 | 
						|
        <label>Sélectionnez l'archive ZIP de votre site : <input type="file" name="zip_file" /></label>
 | 
						|
        <br />
 | 
						|
        <input type="submit" name="submit" value="Envoyer" />
 | 
						|
    </form>
 | 
						|
</body>
 | 
						|
</html>
 |