public function getFilteredPackages($packageState = 'available', $packagePath = null, $packageType = null)
{
switch (strtolower($packageState)) {
case 'available':
$packages = $this->getAvailablePackages();
break;
case 'active':
$packages = $this->getActivePackages();
break;
case 'frozen':
$packages = $this->getFrozenPackages();
break;
default:
throw new Exception\InvalidPackageStateException('The package state "' . $packageState . '" is invalid', 1372458274);
}
if ($packagePath !== null) {
$packages = $this->filterPackagesByPath($packages, $packagePath);
}
if ($packageType !== null) {
$packages = $this->filterPackagesByType($packages, $packageType);
}
return $packages;
}