com web/windows: Implement latest folder generation: include/listing.php templates/releases_latest.tpl templates/web.config.re write.tpl
| From: | Anatol Belski | Date: | Tue, 15 Jan 2019 17:04:42 +0000 |
| Subject: | com web/windows: Implement latest folder generation: include/listing.php templates/releases_latest.tpl templates/web.config.re write.tpl | ||
| Groups: | php.webmaster | ||
| Request: | Send a blank email to php-webmaster+get-27696@lists.php.net to get a copy of this message | ||
Commit: 901e48a45278dc60051fbbfad59137b6cb984648
Author: Anatol Belski <ab@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>