/**
* {@inheritdoc}
*/
public function installResource(Resource $resource, InstallationParams $params)
{
$targetPath = Path::makeAbsolute($params->getTargetLocation(), $params->getRootDirectory());
if (!file_exists($targetPath)) {
mkdir($targetPath, 0777, true);
}
$repoPath = $params->getWebPathForResource($resource);
$parameterValues = $params->getParameterValues();
$relative = !isset($parameterValues['relative']) || $parameterValues['relative'];
$filesystemRepo = new FilesystemRepository($targetPath, $this->symlinks, $relative);
if ('/' === $repoPath) {
foreach ($resource->listChildren() as $child) {
$name = $child->getName();
// If the resource is not attached, the name is empty
if (!$name && $child instanceof FilesystemResource) {
$name = Path::getFilename($child->getFilesystemPath());
}
if ($name) {
$filesystemRepo->remove($repoPath . '/' . $name);
}
}
} else {
$filesystemRepo->remove($repoPath);
}
$filesystemRepo->add($repoPath, $resource);
}