#!/usr/bin/env php * @license GNU General Public License, version 2 (GPL-2.0) * * For full copyright and license information, please see * the docs/CREDITS.txt file. * */ if (version_compare(PHP_VERSION, '7.0-dev', '<')) { die('generate_package_json.php requires at least PHP 7.0.'); } define('IN_PHPBB', true); include_once('../phpBB/includes/functions.php'); $json_data = new \stdClass(); $json_data->metadata = new stdClass(); $json_data->metadata->current_version_date = ''; $json_data->metadata->current_version = ''; $json_data->metadata->download_path = ''; $json_data->metadata->show_update_package = true; $json_data->metadata->historic = false; $json_data->package = []; // Open build.xml $build_xml = simplexml_load_file('build.xml'); $current_version = (string) $build_xml->xpath('/project/property[@name=\'newversion\']/@value')[0]->value; $previous_version = (string) $build_xml->xpath('/project/property[@name=\'prevversion\']/@value')[0]->value; $older_verions = explode(', ', (string) $build_xml->xpath('/project/property[@name=\'olderversions\']/@value')[0]->value); // Clean and sort version info $older_verions[] = $previous_version; $older_verions = array_filter($older_verions, function($version) { preg_match(get_preg_expression('semantic_version'), $version, $matches); return empty($matches['prerelease']) || strpos($matches['prerelease'], 'pl') !== false; }); usort($older_verions, function($version_a, $version_b) { return phpbb_version_compare($version_b, $version_a); }); // Set metadata $json_data->metadata->current_version = $current_version; $json_data->metadata->current_version_date = date('Y-m-d'); $json_data->metadata->download_path = 'https://download.phpbb.com/pub/release/' . preg_replace('#([0-9]+\.[0-9]+)(\..+)#', '$1', $current_version) . '/' . $current_version . '/'; // Add package, patch files, and changed files phpbb_add_package_file( $json_data->package, 'phpBB ' . $current_version, 'phpBB-' . $current_version, 'full', '' ); phpbb_add_package_file( $json_data->package, 'phpBB ' . $current_version . ' Patch Files', 'phpBB-' . $current_version . '-patch', 'update', 'patch' ); phpbb_add_package_file( $json_data->package, 'phpBB ' . $current_version . ' Changed Files', 'phpBB-' . $current_version . '-files', 'update', 'files' ); // Loop through packages and assign to packages array foreach ($older_verions as $version) { phpbb_add_package_file( $json_data->package, 'phpBB ' . $version . ' to ' . $current_version . ' Update Package', 'phpBB-' . $version . '_to_' . $current_version, 'update', 'update', $version ); } echo(json_encode($json_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\n"); function phpbb_add_package_file(array &$package_list, $name, $file_name, $type, $subtype, $from = '') { if (!file_exists(__DIR__ . '/new_version/release_files/' . $file_name . '.zip')) { trigger_error('File does not exist: ' . __DIR__ . '/new_version/release_files/' . $file_name . '.zip'); return; } $package_file = new stdClass(); $package_file->name = $name; $package_file->filename = $file_name; $package_file->type = $type; if (!empty($subtype)) { $package_file->subtype = $subtype; } if (!empty($from)) { $package_file->from = $from; } $package_file->files = []; foreach (['zip', 'tar.bz2'] as $extension) { $file_path = 'new_version/release_files/' . $file_name . '.' . $extension; $filedata = new stdClass(); $filedata->filesize = filesize($file_path); $filedata->checksum = trim(preg_replace('/(^\w+)(.+)/', '$1', file_get_contents($file_path . '.sha256'))); $filedata->filetype = $extension; $package_file->files[] = $filedata; } $package_list[] = $package_file; }