Skip to content

Commit f63bcb8

Browse files
committed
Fixed Reference display in node:list
1 parent ee22142 commit f63bcb8

File tree

2 files changed

+56
-68
lines changed

2 files changed

+56
-68
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ dev-master
1616
- [embedded] No exit code returned
1717
- [profile] Profile configuration overwritten by session parameters
1818
- [node:list] Incorrect node count
19+
- [node:list] Single references not showing path
1920
- [node:edit] Multivalue references encoded as arrays when editing
2021
- [node:edit] Fixed undefined variable
2122
- [version] Versioning commands can use relative paths

src/PHPCR/Shell/Console/Helper/ResultFormatterHelper.php

Lines changed: 55 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -96,81 +96,68 @@ public function formatQueryResult(QueryResultInterface $result, OutputInterface
9696
}
9797
}
9898

99-
public function normalizeValue($value)
99+
public function formatValue(PropertyInterface $property, $showBinary = false)
100100
{
101-
if (is_array($value)) {
102-
if (empty($value)) {
103-
return '';
104-
}
105-
$array = $value;
106-
$values = array();
107-
108-
foreach ($array as $i => $value) {
109-
if ($value instanceof NodeInterface) {
110-
$uuid = $value->getIdentifier();
111-
$value = $value->getPath();
112-
if ($uuid) {
113-
$value .= ' (' . $uuid . ')';
114-
}
115-
} elseif (is_object($value)) {
116-
$value = '<UNKNOWN OBJECT>';
117-
} else {
118-
$value = $value;
119-
}
120-
$value = '[' . $i . '] ' . $this->textHelper->truncate($value, 255);
121-
$values[] = $value;
122-
}
123-
124-
return implode("\n", $values);
101+
$values = $property->getValue();
102+
if (false === $property->isMultiple()) {
103+
$values = array($values);
125104
}
105+
$return = array();
106+
107+
foreach ($values as $value) {
108+
switch (intval($property->getType())) {
109+
case PropertyType::UNDEFINED :
110+
$return[] = '#UNDEFINED#';
111+
case PropertyType::BINARY :
112+
if ($showBinary) {
113+
$lines = array();
114+
$pointer = $value;
115+
while (($line = fgets($pointer)) !== false) {
116+
$lines[] = $line;
117+
}
118+
119+
$return[] = implode('', $lines);
120+
}
126121

127-
if ($value instanceof \DateTime) {
128-
return $value->format('c');
122+
return '(binary data)';
123+
case PropertyType::BOOLEAN :
124+
$return[] = $value ? 'true' : 'false';
125+
break;
126+
case PropertyType::DATE :
127+
$return[] = $value->format('c');
128+
break;
129+
case PropertyType::REFERENCE :
130+
case PropertyType::WEAKREFERENCE :
131+
$return[] = sprintf(
132+
'%s (%s)',
133+
$this->textHelper->truncate($value->getPath(), 255),
134+
$value->getIdentifier()
135+
);
136+
break;
137+
case PropertyType::URI :
138+
case PropertyType::STRING :
139+
$return[] = $this->textHelper->truncate($value);
140+
break;
141+
case PropertyType::NAME :
142+
case PropertyType::LONG :
143+
case PropertyType::DOUBLE :
144+
case PropertyType::DECIMAL :
145+
case PropertyType::PATH :
146+
$return[] = $value;
147+
break;
148+
default:
149+
throw new \RuntimeException('Unknown type ' . $property->getType());
150+
}
129151
}
130152

131-
return $this->textHelper->truncate($value);
132-
}
133-
134-
public function formatValue(PropertyInterface $value, $showBinary = false)
135-
{
136-
if (is_array($value->getValue())) {
137-
return $this->normalizeValue($value->getValue());
153+
if ($property->isMultiple()) {
154+
return implode("\n", array_map(function ($value) {
155+
static $index = 0;
156+
return sprintf('<comment>[%d]</comment> %s', $index++, $value);
157+
}, $return));
138158
}
139159

140-
switch (intval($value->getType())) {
141-
case PropertyType::UNDEFINED :
142-
return '#UNDEFINED#';
143-
case PropertyType::BINARY :
144-
if ($showBinary) {
145-
$lines = array();
146-
$pointer = $value->getValue();
147-
while (($line = fgets($pointer)) !== false) {
148-
$lines[] = $line;
149-
}
150-
151-
return implode('', $lines);
152-
}
153-
154-
return '(binary data)';
155-
case PropertyType::BOOLEAN :
156-
return $value->getValue() ? 'true' : 'false';
157-
case PropertyType::DATE :
158-
return $value->getValue()->format('c');
159-
case PropertyType::REFERENCE :
160-
case PropertyType::WEAKREFERENCE :
161-
return $value->getValue()->getIdentifier();
162-
case PropertyType::URI :
163-
case PropertyType::STRING :
164-
return $this->textHelper->truncate($value->getValue());
165-
case PropertyType::NAME :
166-
case PropertyType::LONG :
167-
case PropertyType::DOUBLE :
168-
case PropertyType::DECIMAL :
169-
case PropertyType::PATH :
170-
return $value->getValue();
171-
default:
172-
throw new \RuntimeException('Unknown type ' . $value->getType());
173-
}
160+
return implode("\n", $return);
174161
}
175162

176163
public function formatNodePropertiesInline(NodeInterface $node)

0 commit comments

Comments
 (0)