cvs: php-windows-web /include listing.php

[email protected] ("Pierre-Alain Joye")
Newsgroups php.webmaster
Message-ID <cvspajoye1228487022@cvsserver>
pajoye		Fri Dec  5 14:23:42 2008 UTC

  Added files:                 
    /php-windows-web/include	listing.php 
  Log:
  - missing file / initial import
pajoye-20081205142342.txt (text/plain, 11.2 KB)
http://cvs.php.net/viewvc.cgi/php-windows-web/include/listing.php?view=markup&rev=1.1
Index: php-windows-web/include/listing.php
+++ php-windows-web/include/listing.php
<?php
function processSha1Sums($snaps_dir)
{
	// Reading and processing the sha1sum file
	if (!file_exists($snaps_dir . 'sha1sum.txt')) {
		return array();
	}
	$sha1sums = file($snaps_dir . 'sha1sum.txt');
	$res = array();
	foreach ($sha1sums as $sha1){
		list($sha1, $file) = explode('  ', $sha1);
		$file = str_replace(array("\r","\n", $snaps_dir), array('','', ''), $file);
		$res[strtolower($file)] = $sha1;
	}
	return $res;
}

function bytes2string($size, $precision = 2) {
	$sizes = array('YB', 'ZB', 'EB', 'PB', 'TB', 'GB', 'MB', 'kB', 'B');
	$total = count($sizes);

	while($total-- && $size > 1024) $size /= 1024;

	return round($size, $precision).$sizes[$total];
}


function buildReleasesCache($snaps_dir, $release=false)
{
	$releases = array();
	$sha1sums = processSha1Sums($snaps_dir);
	$old_dir = getcwd();
	chdir($snaps_dir);

	if ($release) {
		$pattern = '*.zip';
	} else {
		$pattern = '{*-latest.zip}';
	}
	foreach (glob('*.zip') as $file) {
		$lower_file = strtolower($file);

		if (strpos($lower_file, '-debug-pack-') === false && strpos($lower_file, '-src') === false) {
			$basename = str_replace('.zip',  '', $file);
			$elm = explode('-', $basename);
			if (count($elm) > 5) {
				list($package, $full_version, $nts, , $vc, $arch) = $elm;
				$intermediate_version = $nts . '-Win32-'  .  $vc . '-' . $arch;
				$debugpack_file = 'php-debug-pack-' . $full_version . '-' . $intermediate_version . '.zip';
			} else {
				list($package, $full_version, ,$vc, $arch) = $elm;
				$nts = '';
				$intermediate_version = 'Win32-' . $vc . '-' . $arch;
			}
			$intermediate_version_key = str_replace('Win32', 'win32', $intermediate_version);
			$point_version = substr($full_version, 0, 3);

			$mtime = date('Y-M-d H:i:s', filemtime($file));
			if (!array_key_exists($point_version, $releases)) {
				$releases[$point_version] = array(
						'size' => bytes2string(filesize('php-' . $full_version . '-src.zip')),
						'file' =>  'php-' . $full_version . '-src.zip',
						);
			}

			$releases[$point_version][$intermediate_version_key] = array(
					'mtime' => $mtime,
					'size' => bytes2string(filesize($file)),
					'file' => 'php-' . $full_version . '-' . $intermediate_version . '.zip',
					'version' => $full_version,
					'sha1' => $sha1sums[$lower_file],
					);

			$debugpack_file = 'php-debug-pack-' . $full_version . '-' . $intermediate_version . '.zip';
			if (file_exists($debugpack_file)) {
				$releases[$point_version][$intermediate_version_key]['debug-pack'] = array(
						'mtime' => $mtime,
						'size' => bytes2string(filesize($debugpack_file)),
						'file' => $debugpack_file,
						'sha1' => $sha1sums[strtolower($debugpack_file)],
						);

			}

			$installer_file = 'php-' . $full_version . '-' . $intermediate_version . '.msi';

			if (file_exists($installer_file)) {
				$releases[$point_version][$intermediate_version_key]['installer'] = array(
						'mtime' => $mtime,
						'size' => bytes2string(filesize($installer_file)),
						'file' => $installer_file,
						'sha1' => $sha1sums[strtolower($installer_file)],
						);
			}
		}
	}
	$cache_content = '<?php $releases = ' . var_export($releases, true) . ';';

	$tmp_name = tempnam('.', '_cachinfo');
	file_put_contents($tmp_name, $cache_content);
	rename($tmp_name, 'cache.info');
	chdir($old_dir);
	return $releases;
}


function buildSnapsCache($snaps_dir, $release=false)
{
	$releases = array();
	$sha1sums = processSha1Sums($snaps_dir);
	$old_dir = getcwd();
	chdir($snaps_dir);

	if ($release) {
		$pattern = '*.zip';
	} else {
		$pattern = '{*-latest.zip}';
	}

	foreach (glob($pattern, GLOB_BRACE) as $file) {
		$lower_file = strtolower($file);
		// We only process the php-XXX (without dev or debug packs) values
		if (!$release && substr($lower_file, 0, 4) == 'php-' &&  strpos($lower_file, '-latest') !== false && strpos($lower_file, '-debug-pack-') === false) {
			$full_version = substr($file, 4, strrpos($lower_file, '-latest') - 4);
			$point_version = substr($full_version, 0, strpos($full_version, '-'));
			$intermediate_version = substr( 
					$full_version,
					strpos($full_version, $point_version) + strlen($point_version) + 1, 
					strlen($full_version) - strlen($point_version)
					);
			$link = readlink($file);
			$datetime_str = substr($link, strlen($link) - 16, 12);
			if (!preg_match("/([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/", $datetime_str, $m)) {
				$mtime = date('Y-M-d H:i:s', filemtime($file));
			} else {
				$snap_time = date_create();
				$snap_time->setDate($m[1], $m[2], $m[3]);
				$snap_time->setTime( $m[4], $m[5], 0);
				$mtime = date_format($snap_time, 'Y-M-d H:i:s');
			}

			if (!array_key_exists($point_version, $releases)) {
				$releases[$point_version] = array(
						'size' => bytes2string(filesize('php-' . $point_version . DIRECTORY_SEPARATOR . 'php-' . $point_version . '-src-latest.zip')),
						'file' => 'php-' . $point_version . '/php-' . $point_version . '-src-latest.zip',
						);
			}
			$releases[$point_version][$intermediate_version] = array(
					'mtime' => $mtime,
					'size' => bytes2string(filesize('php-' . $full_version . '-latest.zip')),
					'buildconf' => 'buildconf-' . str_replace('win32-','',$full_version) . '-latest.log',
					'configure' => 'configure-' . str_replace('win32-','',$full_version) . '-latest.log',
					'compile' => 'compile-' . str_replace('win32-','',$full_version) . '-latest.log',
					'cvs' => 'cvs-' . str_replace('win32-','',$full_version) . '-latest.log',
					'file' => 'php-' . $full_version . '-latest.zip',
					'sha1' => $sha1sums[$lower_file],
					);

			$debugpack_file = 'php-debug-pack-' . $full_version . '-latest.zip';
			if (file_exists($debugpack_file)) {
				$releases[$point_version][$intermediate_version]['debug-pack'] = array(
						'mtime' => $mtime,
						'size' => bytes2string(filesize($debugpack_file)),
						'file' => $debugpack_file,
						'sha1' => $sha1sums[strtolower($debugpack_file)],
						);

			}
			$installer_file = 'php-' . $full_version . '-latest.msi';
			if (file_exists($installer_file)) {
				$releases[$point_version][$intermediate_version]['installer'] = array(
						'mtime' => $mtime,
						'size' => bytes2string(filesize($installer_file)),
						'file' => $installer_file,
						'sha1' => $sha1sums[strtolower($installer_file)],
						);
			}
		}
	}
	$cache_content = '<?php $releases = ' . var_export($releases, true) . ';';

	$tmp_name = tempnam('.', '_cachinfo');
//	file_put_contents($tmp_name, $cache_content);
	rename($tmp_name, 'cache.info');
	chdir($old_dir);
	return $releases;
}


function processSnapsDirectory($snaps_dir, $release = false)
{
	$releases = array();
	$cache_file = $snaps_dir . 'cache.info';
	$expire = 30 * 60 * 1;
	if (1 || ! file_exists($cache_file) || (filemtime($cache_file) + $expire) < time()) {
		@unlink($cache_file);
		if ($release) {
			$releases = buildReleasesCache($snaps_dir, $release);
		} else {
			$releases = buildSnapsCache($snaps_dir, $release);
		}
	} else {
		include $cache_file;
	}

	return $releases;
}


function buildOptionPerReleases($releases, $order)
{
	$str = '';
	foreach ($order as $point_version) {
	//	foreach ($releases as $point_version => $version) {
		$version = $releases[$point_version];
		$str .= '<optgroup label="PHP '.$point_version.'">';

		unset($version['size'], $version['file']);

		foreach ($version as $intermediate_version => $build_version) {
			$str .= '<option value="php-'.$point_version.'-'.$intermediate_version.'">'
				. 'PHP '.$point_version.' '. ucfirst(str_replace('-', ' ', $intermediate_version))
				. '</option>';
		}

		$str .= '</optgroup>';
	}

	return $str;
}


function buildPointVersionBox($point_version, $version, $version_order, $mode = false)
{
	if ($mode == 'release') {
		$path = '/downloads/releases/';
	} elseif ($mode) {
		$path = '/downloads/qa/';
	} else {
		$path = '/downloads/snaps/';
	}
	
	$str = '
		<div class="block"><!-- .block -->
		<span class="corners-top"><span></span></span>
		<div class="info entry"><!-- .info -->
		<h3 id="php-'.$point_version.'" name="php-'.$point_version.'" class="summary entry-title">PHP ' . $point_version . '</h3>
		<p class="news-date"></p>
		<p>
		<a href="' . $path . $version['file'] . '">Download source code</a> [' . $version['size'] . ']
		</p>
		<div>
		';
	unset($version['size'], $version['file']);
	foreach($version_order as $v) {
		if (isset($version[$v])) {
			$str .= buildIntermediateReleaseBox($point_version, $v, $version[$v], $mode);
		}

	}

	$str .= '
		</div>
		</div><!-- .info -->
		<span class="corners-bottom"><span></span></span>
		</div><!-- .block -->
		';


	return $str;
}


function buildIntermediateReleaseBox($point_version, $intermediate_version, $build_version, $release = false)
{
	$version_human = array(
						'win32-VC6-x86' => 'Windows x86 VC6 (thread safe))',
						'nts-win32-VC6-x86' => 'Windows x86 VC6 (non thread safe))',
						'win32-VC9-x86' => 'Windows x86 VC9 (thread safe))',
						'nts-win32-VC9-x86' => 'Windows x86 VC9 (non thread safe))',
						'win32-VC9-x64' => 'Windows x64 VC9 (thread safe))',
						'nts-win32-VC9-x64' => 'Windows x64 VC9 (non thread safe))',
					);

	$intermediate_version_human = $version_human[$intermediate_version];
	if ($release == 'release') {
		$path = '/downloads/releases/';
		$version = $build_version['version'];
	} elseif ($release) {
		$path = '/downloads/qa/';
		$version = $build_version['version'];
	} else {
		$path = '/downloads/snaps/';
		$version = $point_version . ' - ' . ucfirst($intermediate_version_human);
	}
	
	$ret = '
		<div class="innerbox">
		<span class="corners-top"><span></span></span>
		<h4 id="php-'.$point_version.'-'.$intermediate_version.'" name="php-'.$point_version.'-'.$intermediate_version.'">'.ucfirst($intermediate_version_human).'</h4>
		<p>
		<ul>
		<li>
		<a href="' . $path . $build_version['file'].'">PHP ' . $version . '</a>
		['.$build_version['size'].'] -  '.$build_version['mtime'].'<br />
		<span class="md5sum">sha1: '.$build_version['sha1'].'</span>
		</li>';


	if (isset($build_version['installer'])) {	

		$ret .= '<li>
				<a href="' . $path . $build_version['installer']['file'] . '">Installer</a> 
				['.$build_version['installer']['size'].'] -  '.$build_version['installer']['mtime'].'<br />
				<span class="md5sum">sha1: '.$build_version['installer']['sha1'].'</span>';
	}


	if (isset($build_version['debug-pack'])) {	
		$ret .= '</li><li>
				<a href="' . $path . $build_version['debug-pack']['file'].'">Debug Pack</a> 
				['.$build_version['debug-pack']['size'].'] -  '.$build_version['debug-pack']['mtime'].'<br />
				<span class="md5sum">sha1: '.$build_version['debug-pack']['sha1'].'</span>
				';
	}
	if (!$release) {
		$ret .= '<blockquote>
			<strong>Logs:</strong>
			[<a href="' . $path . $build_version['buildconf'].'">BuildConf</a>]
			[<a href="' . $path . $build_version['configure'].'">Configure</a>]
			[<a href="' . $path . $build_version['compile'].'">Compile</a>]
			</blockquote>';
	}

	$ret .= '</li>
			</ul>
			</p>
			<span class="corners-bottom"><span></span></span>
			</div><!-- .innerbox -->
			';

	return $ret;
}

/*
 * Local variables:
 * tab-width: 4
 * c-basic-offset: 4
 * End:
 * vim600: sw=4 ts=4 fdm=marker
 * vim<600: sw=4 ts=4
 */
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.