1
0
mirror of https://github.com/processwire/processwire.git synced 2025-08-12 09:44:38 +02:00

Correction to previous commit

This commit is contained in:
Ryan Cramer
2021-11-19 14:26:00 -05:00
parent 8e1608ac6f
commit 86498bdc54

View File

@@ -575,42 +575,44 @@ class WireArray extends Wire implements \IteratorAggregate, \ArrayAccess, \Count
if(isset($this->data[$key])) return $this->data[$key]; if(isset($this->data[$key])) return $this->data[$key];
// check if key contains something other than numbers, letters, underscores, hyphens // check if key contains something other than numbers, letters, underscores, hyphens
if(is_string($key) && !ctype_alnum($key) && !ctype_alnum(strtr($key, '-_', 'ab'))) { if(is_string($key)) {
if(!ctype_alnum($key) && !ctype_alnum(strtr($key, '-_', 'ab'))) {
// check if key contains a selector // check if key contains a selector
if(Selectors::stringHasSelector($key)) { if(Selectors::stringHasSelector($key)) {
$item = $this->findOne($key); $item = $this->findOne($key);
if($item === false) $item = null; if($item === false) $item = null;
return $item; return $item;
} }
if(strpos($key, '{') !== false && strpos($key, '}')) { if(strpos($key, '{') !== false && strpos($key, '}')) {
// populate a formatted string with {tag} vars // populate a formatted string with {tag} vars
return wirePopulateStringTags($key, $this); return wirePopulateStringTags($key, $this);
} }
// check if key is requesting a property array: i.e. "name[]" // check if key is requesting a property array: i.e. "name[]"
if(strpos($key, '[]') !== false && substr($key, -2) == '[]') { if(strpos($key, '[]') !== false && substr($key, -2) == '[]') {
return $this->explode(substr($key, 0, -2)); return $this->explode(substr($key, 0, -2));
} }
// check if key is asking for first match in "a|b|c" // check if key is asking for first match in "a|b|c"
if(strpos($key, '|') !== false) { if(strpos($key, '|') !== false) {
$numericKeys = $this->usesNumericKeys(); $numericKeys = $this->usesNumericKeys();
foreach(explode('|', $key) as $k) { foreach(explode('|', $key) as $k) {
if(isset($this->data[$k])) { if(isset($this->data[$k])) {
$match = $this->data[$k]; $match = $this->data[$k];
} else if($numericKeys) { } else if($numericKeys) {
$match = $this->getItemThatMatches('name', $k); $match = $this->getItemThatMatches('name', $k);
} }
if($match) break; if($match) break;
}
return $match;
} }
return $match;
} }
// if the WireArray uses numeric keys, then it's okay to // if the WireArray uses numeric keys, then it's okay to
// match a 'name' field if the provided key is a string // match a 'name' field if the provided key is a string
if($this->usesNumericKeys()) { if(is_string($key) && $this->usesNumericKeys()) {
$match = $this->getItemThatMatches('name', $key); $match = $this->getItemThatMatches('name', $key);
} }
} }