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