Merge branch 'develop-ascraeus' into develop

* develop-ascraeus:
  [ticket/12325] Use \RecursiveDirectoryIterator
  [ticket/12325] Doc blocks
  [ticket/12325] Change private function to protected
  [ticket/12325] Add visibilities
  [ticket/12325] Add files located in deleted dirs
  [ticket/12325] Generate the list of the deleted files and folders
This commit is contained in:
Joas Schilling 2014-05-08 14:28:09 +02:00
commit fadc23344f
3 changed files with 73 additions and 0 deletions

View file

@ -141,6 +141,7 @@
<exec dir="build/old_versions" command="LC_ALL=C diff -crNEBwd release-${version} release-${newversion} > <exec dir="build/old_versions" command="LC_ALL=C diff -crNEBwd release-${version} release-${newversion} >
../new_version/patches/phpBB-${version}_to_${newversion}.patch" escape="false" /> ../new_version/patches/phpBB-${version}_to_${newversion}.patch" escape="false" />
<exec dir="build/old_versions" command="LC_ALL=C diff -qr release-${version} release-${newversion} | grep 'Only in release-${version}' > ../new_version/patches/phpBB-${version}_to_${newversion}.deleted" escape="false" />
</target> </target>
<target name="prepare-new-version"> <target name="prepare-new-version">

View file

@ -312,4 +312,63 @@ class build_package
return $result; return $result;
} }
/**
* Collect the list of the deleted files from a list of deleted files and folders.
*
* @param string $deleted_filename The full path to a file containing the list of deleted files and directories
* @param string $package_name The name of the package
* @return array
*/
public function collect_deleted_files($deleted_filename, $package_name)
{
$result = array();
$file_contents = file($deleted_filename);
foreach ($file_contents as $filename)
{
$filename = trim($filename);
if (!$filename)
{
continue;
}
$filename = str_replace('Only in ' . $package_name, '', $filename);
$filename = ltrim($filename, '/');
if (substr($filename, 0, 1) == ':')
{
$replace = '';
}
else
{
$replace = '/';
}
$filename = str_replace(': ', $replace, $filename);
if (is_dir("{$this->locations['old_versions']}{$package_name}/{$filename}"))
{
$iterator = new \RecursiveIteratorIterator(
new \RecursiveDirectoryIterator(
"{$this->locations['old_versions']}{$package_name}/{$filename}",
\FilesystemIterator::UNIX_PATHS | \FilesystemIterator::SKIP_DOTS
),
\RecursiveIteratorIterator::LEAVES_ONLY
);
foreach ($iterator as $file_info)
{
$result[] = "{$filename}/{$iterator->getSubPathname()}";
}
}
else
{
$result[] = $filename;
}
}
return $result;
}
} }

View file

@ -45,6 +45,10 @@ if (sizeof($package->old_packages))
$package->get('patch_directory') . '/phpBB-' . $dest_package_filename . $package->get('new_version_number') . '.patch', $package->get('patch_directory') . '/phpBB-' . $dest_package_filename . $package->get('new_version_number') . '.patch',
$_package_name $_package_name
); );
$diff_file_changes[$_package_name]['deleted'] = $package->collect_deleted_files(
$package->get('patch_directory') . '/phpBB-' . $dest_package_filename . $package->get('new_version_number') . '.deleted',
$_package_name
);
} }
// Now put those files determined within the correct directories // Now put those files determined within the correct directories
@ -292,6 +296,15 @@ $update_info = array(
$index_contents .= "\t'binary' => array(),\n"; $index_contents .= "\t'binary' => array(),\n";
} }
if (sizeof($file_contents['deleted']))
{
$index_contents .= "\t'deleted' => array(\n\t\t'" . implode("',\n\t\t'", $file_contents['deleted']) . "',\n\t),\n";
}
else
{
$index_contents .= "\t'deleted' => array(),\n";
}
$index_contents .= ");\n"; $index_contents .= ");\n";
$fp = fopen($dest_filename_dir . '/install/update/index.php', 'wt'); $fp = fopen($dest_filename_dir . '/install/update/index.php', 'wt');