Commit:    901e48a45278dc60051fbbfad59137b6cb984648
Author:    Anatol Belski <a...@php.net>         Tue, 15 Jan 2019 18:04:42 +0100
Parents:   3efb4b81c9c9a9d87c1793a43c4db4af018b42bd
Branches:  master

Link:       
http://git.php.net/?p=web/windows.git;a=commitdiff;h=901e48a45278dc60051fbbfad59137b6cb984648

Log:
Implement latest folder generation

Changed paths:
  M  include/listing.php
  A  templates/releases_latest.tpl
  A  templates/web.config.rewrite.tpl


Diff:
diff --git a/include/listing.php b/include/listing.php
index fa9d902..1fca9d3 100644
--- a/include/listing.php
+++ b/include/listing.php
@@ -206,6 +206,7 @@ function generate_listing($path, $snaps = false) {
        chdir($old_cwd);
 
        generate_web_config($releases);
+       generate_latest_releases_html($releases);
 
        return $releases;
 }
@@ -230,7 +231,7 @@ function get_redirection_conf_piece($tpl, $fname_real, 
$ver, $cur_ver)
 function generate_web_config(array $releases = array())
 {
        $config_tpl = file_get_contents(TPL_PATH . "/web.config.tpl");
-       $redirect_tpl = trim(file_get_contents(TPL_PATH . 
"/web.config.redirect.tpl"));
+       $redirect_tpl = trim(file_get_contents(TPL_PATH . 
"/web.config.rewrite.tpl"));
 
        /* Handle releases. */
        if (empty($releases)) {
@@ -263,7 +264,68 @@ function generate_web_config(array $releases = array())
 
        /* Save generated web.config. */
        $config_path = DOCROOT . "/web.config";
-       if (!file_put_contents($config_path, $config_content, LOCK_EX)) {
+       if (strlen($config_content) !== file_put_contents($config_path, 
$config_content, LOCK_EX)) {
+               return false;
+       }
+
+       return true;
+}
+
+function generate_latest_html_piece($fname, $ts, $size, $ver, $cur_ver)
+{
+       $tpl = " DATETIME     SIZE <a 
href=\"/downloads/releases/latest/FNAME\">FNAME</a><br>\n";
+
+       $fn = transform_fname_to_latest($fname, $ver, $cur_ver);
+
+       return str_replace(
+               array("DATETIME", "SIZE", "FNAME"),
+               array(date("m/d/Y h:i A", $ts), (int)$size, $fn),
+               $tpl
+       );
+}
+
+function generate_latest_releases_html(array $releases = array())
+{
+       $index_html_tpl = trim(file_get_contents(TPL_PATH . 
"/releases_latest.tpl"));
+       $index_html_path = DOCROOT . "/downloads/releases/latest/index.html";
+
+       /* Handle releases. */
+       if (empty($releases)) {
+               $cache = DOCROOT . "/downloads/releases/cache.info";
+               if (!file_exists($cache)) {
+                       return false;
+               }
+               include $cache;
+       }
+
+       $tmp = "";
+       foreach ($releases as $version => $release) {
+               $cur_ver = $release["version"];
+               unset($release["version"]);
+
+               $src_path = DOCROOT . "/downloads/releases/" . 
$release["source"]["path"];
+               $src_mtime = isset($release["source"]["mtime"]) ? 
strtotime($release["source"]["mtime"]) : filemtime($src_path);
+               $src_size = isset($release["source"]["size"]) ? 
((float)$release["source"]["size"]*1024*1024) : filesize($src_path);
+               $tmp .= generate_latest_html_piece($release["source"]["path"], 
$src_mtime, $src_size, $version, $cur_ver);
+               unset($release["source"]);
+
+               foreach ($release as $flavour) {
+                       $mtime = strtotime($flavour["mtime"]);
+
+                       $tmp .= 
generate_latest_html_piece($flavour["zip"]["path"], $mtime, 
(float)$flavour["zip"]["size"]*1024*1024, $version, $cur_ver);
+                       $tmp .= 
generate_latest_html_piece($flavour["debug_pack"]["path"], $mtime, 
(float)$flavour["debug_pack"]["size"]*1024*1024, $version, $cur_ver);
+               }
+       }
+
+       $index_html_content = str_replace("RELEASES_LIST_PLACEHOLDER", $tmp, 
$index_html_tpl);
+
+       if (!is_dir(dirname($index_html_path))) {
+               if (!mkdir(dirname($index_html_path))) {
+                       return false;
+               }
+       }
+
+       if (strlen($index_html_content) !== file_put_contents($index_html_path, 
$index_html_content, LOCK_EX)) {
                return false;
        }
 
diff --git a/templates/releases_latest.tpl b/templates/releases_latest.tpl
new file mode 100644
index 0000000..7700a4b
--- /dev/null
+++ b/templates/releases_latest.tpl
@@ -0,0 +1,5 @@
+<html><head><title>windows.php.net - 
/downloads/releases/latest/</title></head><body><H1>windows.php.net - 
/downloads/releases/latest/</H1><hr>
+<pre>
+<A HREF="/downloads/releases/">[To Parent Directory]</A><br><br>
+RELEASES_LIST_PLACEHOLDER
+<hr></body></html>
diff --git a/templates/web.config.rewrite.tpl b/templates/web.config.rewrite.tpl
new file mode 100644
index 0000000..9e82e09
--- /dev/null
+++ b/templates/web.config.rewrite.tpl
@@ -0,0 +1,4 @@
+               <rule name="Rewrite latest REAL_FILENAME" stopProcessing="true">
+                    <match url="^downloads/releases/latest/FAKE_FILENAME$" />
+                    <action type="Rewrite" 
url="/downloads/releases/REAL_FILENAME" appendQueryString="false" />
+                </rule>


--
PHP Webmaster List Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to