protected function validateValue($property, $value)
{
$type = $this->getType($property);
if (!$type) {
$this->stdErr->writeln("Property not writable: <error>{$property}</error>");
return false;
}
$valid = true;
$message = '';
// @todo find out exactly how these should best be validated
$selectedEnvironment = $this->getSelectedEnvironment();
switch ($property) {
case 'parent':
if ($selectedEnvironment->id === 'master') {
$message = "The master environment cannot have a parent";
$valid = false;
} elseif ($value === $selectedEnvironment->id) {
$message = "An environment cannot be the parent of itself";
$valid = false;
} elseif (!($parentEnvironment = $this->api()->getEnvironment($value, $this->getSelectedProject()))) {
$message = "Environment not found: <error>{$value}</error>";
$valid = false;
} elseif ($parentEnvironment->parent === $selectedEnvironment->id) {
$valid = false;
}
break;
}
switch ($type) {
case 'boolean':
$valid = in_array($value, ['1', '0', 'false', 'true']);
break;
}
if (!$valid) {
if ($message) {
$this->stdErr->writeln($message);
} else {
$this->stdErr->writeln("Invalid value for <error>{$property}</error>: {$value}");
}
return false;
}
return true;
}