getExtraValues($allowed)) { $this->error(tr('Unexpected values: %0', implode(', ', $extra))); } $object = $element->object; if (! $object || count($object) != 2) { $this->error(tra('Item must be provided and contain one argument: type, object-id')); } $type = $this->evaluateChild($object[0]); $object = $this->evaluateChild($object[1]); $field = $element->field; if (! $field || count($field) != 1) { $this->error(tra('Field must be provided and contain one argument: field permanent name')); } $field = $field[0]; if ($type != 'trackeritem') { return $default; } return $this->fetchValue($object, $field, $default); } protected function fetchValue($object, $field, $default) { $trklib = TikiLib::lib('trk'); $item = $trklib->get_tracker_item($object); if (! $item) { return $default; } if (! $definition = Tracker_Definition::get($item['trackerId'])) { return $default; } if (! $field = $definition->getFieldFromPermName($field)) { return $default; } $fieldId = $field['fieldId']; if (! isset($item[$fieldId])) { return $default; } return $item[$fieldId]; } }