/** * @param waContact $contact * @param array|string $fields * @param bool $old_value * @return array|void */ public function get(waContact $contact, $fields = array(), $old_value = false) { if (!is_array($fields)) { $all_fields = array($fields); } else { $all_fields = $fields; } $result = array(); $load_fields = array(); foreach ($all_fields as $field_id) { if ($contact->issetCache($field_id, $old_value)) { $result[$field_id] = $contact->getCache($field_id, $old_value); } else { if (strpos($field_id, ':') === false) { $result[$field_id] = null; } $load_fields[] = $field_id; } } if ((!$fields || $load_fields) && $contact->getId()) { if ($load_result = $this->load($contact, $load_fields)) { $result = $load_result + $result; } $contact->setCache($result); } if (!is_array($fields)) { return $result[$fields]; } else { return $result; } }