Projet

Général

Profil

Révision 0bd646e4

Ajouté par Victor PONGNIAN il y a plus de 11 ans

remise en forme du travail de Victor Pongnian suit à son stage
Il reste pas mal de cosmétique à revoir mais le système devrait déjà être utilisable dans l'état.

Voir les différences:

genererPano.php
1
<?php
2
	if (isset($_GET['name'])) {
3
		// Protection de la variable GET
4
		$pano_name = htmlspecialchars($_GET['name']);
5
		$filePartArr = explode('.',$pano_name);  
6
		$ext = $filePartArr[count($filePartArr) - 1];
7
		if($ext=="tif"){
8
			$pano_basename = basename($pano_name,".tif");
9
		}else if($ext=="jpeg"){
10
		      $pano_basename = basename($pano_name,".jpeg");
11
		} else {
12
			$pano_basename = basename($pano_name,".jpg");
13
		} 
1
<!DOCTYPE html>
2
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
3
<head>
4
  <meta http-equiv="Content-type" content="text/html; charset=UTF-8"/>
5
  <link type="image/x-icon" rel="shortcut icon" href="images/tsf.png"/>
6
  <title>convertiseur image vers panorama</title>
7
</head>
14 8

  
15
		//Partie exécutante du script gen_tiles qui gènere les tuiles à partir d'une image.
16
		$input = './to_tiles/gen_tiles.sh -p '.$pano_basename.' /var/www/data/tsf2/vpongnian/panorama/upload/'.$pano_name;
17
		$escaped_command = escapeshellcmd($input);
18
		$output = shell_exec($escaped_command);
19
		$log_file = fopen('./log/'.$pano_basename.'.log','a+');
20
		fputs($log_file, $output);   // verbose intégré dans un .log.
21
		fclose($log_file);
22
		
23
                // Ouverture d'un nouveau dossier qui contiendra toutes les tuiles.
24
		$dir = '/var/www/data/tsf2/tiles/'.$pano_basename;
25
		
26
		mkdir($dir,0777);
27
		
28
		$dir_fd = opendir('/var/www/data/tsf2/vpongnian/panorama');
9
<?php
10
require 'class/utils.class.php';
11
utils::init();
12
if (isset($_GET['name'])) {
13
  $pano_name = $_GET['name'];
14
  $pano_basename = preg_replace('/\.[^.]+$/', '', $pano_name);
15
  
16
  //Partie exécutante du script gen_tiles qui gènere les tuiles à partir d'une image.
17
  $panos_dir = 'tiles';
18
  $pano_dest = $panos_dir.'/'.$pano_basename;
19
  if (! is_dir($panos_dir)) {
20
    echo "<p class=\"error\">le répertoire \"$panos_dir\" n'est pas accessible</p>\n";
21
  } else if (file_exists($pano_dest)) {
22
    echo "<p class=\"error\">le nom de répertoire \"$pano_dest\" est déjà pris</p>\n";
23
  } else {
24
    mkdir($pano_dest);
25
    $escaped_command = escapeshellcmd('./to_tiles/gen_tiles.sh -p '.$pano_dest.'/'.$pano_basename.' ./upload/'.$pano_name);
29 26
		
30
		while (false !== ($image_name = readdir($dir_fd))) {
31
	    	        // Déplacement des tuiles dans le nouveau dossier à partir de dir_fd.
32
			if(preg_match('/(.*)_[0-9]+_[0-9]+_[0-9]+\.jpg$/', $image_name, $reg)) {
33
	        	rename("./".$image_name, $dir."/".$image_name);
34
	    	}
35
	    	
36
	    }
37
	    closedir($dir_fd);
38
	    header("Location: ./index.php?");
27
    printf("<h2>Exécution de la commande :</h2>\n<p class=\"cmd\"><samp>%s</samp></p>\n<pre>", htmlspecialchars($escaped_command));
28
    if ($fp = popen($escaped_command, 'r')) {
29
      while (!feof($fp)) {
30
	//set_time_limit (20); 
31
	$results = fgets($fp, 4096);
32
	if (strlen($results) == 0) {
33
	  // stop the browser timing out
34
	  flush();
35
	} else {
36
	  $tok = strtok($results, "\n");
37
	  while ($tok !== false) {
38
	    echo htmlspecialchars(sprintf("%s\n",$tok))."<br/>";
39
	    flush(); 
40
	    $tok = strtok("\n");
41
	  }
39 42
	}
40
?>
43
      }
44
      print("</pre>\n");
45
      if (pclose($fp) === 0) {
46
	print("<h4><span class=\"success\">Opération réussie</span></h4>\n");
47
	printf("<p>Pour acceder directement au panorama <a href=\"panorama.php?dir=%s&amp;panorama=%s\">cliquer ici</a></p>\n", 
48
	       $panos_dir, $pano_basename);
49
      } else {
50
	print("<h4><span class=\"error\">Opération en échec durant l'exécution du script !</span></h4>\n");
51
      }
52
    } else {
53
      print("<h4><span class=\"error\">Opération en échec à l'ouverture du script !</span></h4>\n");
54
    }
55
  }
56
  print("<p>Pour acceder à la liste des panoramas <a href=\".\">cliquer ici</a></p>\n") ;
57
}
58
?>

Formats disponibles : Unified diff