/** * Gets a profile for the given id. * * @param int $profile_id * The profile id. * @param array $headers * Header information from the data file. * * @return array * The profile, or NULL if no profile was found */ function fiftyone_degrees_get_profile_from_id($profile_id, $headers) { $lower = 0; $upper = $headers['profile_offsets_count'] - 1; $middle = 0; while ($lower <= $upper) { $middle = $lower + (int) (($upper - $lower) / 2); $profile_offset = fiftyone_degrees_get_profile_offset_id_from_index($middle, $headers); if ($profile_offset['profile_id'] == $profile_id) { return fiftyone_degrees_read_profile($profile_offset['offset'] - $headers['profile_offset'], $headers); } elseif ($profile_offset['profile_id'] > $profile_id) { $upper = $middle - 1; } else { $lower = $middle + 1; } } return NULL; }
function fiftyone_degrees_gallery_get_profiles(&$offset, $limit, $hardware_value_id, $headers) { $end_offset = $headers['profile_length']; $profiles = array(); while ($offset < $end_offset) { $_fiftyone_degrees_data_file = fiftyone_degrees_get_data_file($offset + $headers['profile_offset']); $profile = array(); $profile['component_id'] = fiftyone_degrees_read_byte($_fiftyone_degrees_data_file); $profile['unique_id'] = fiftyone_degrees_read_int($_fiftyone_degrees_data_file); $profile['profile_value_count'] = fiftyone_degrees_read_int($_fiftyone_degrees_data_file); $profile['signature_count'] = fiftyone_degrees_read_int($_fiftyone_degrees_data_file); if ($profile['component_id'] == 0) { $_fiftyone_degrees_data_file = fiftyone_degrees_get_data_file($offset + 1 + 4 + 4 + 4 + 4 * 6 + $headers['profile_offset']); $profile_hardware_value_id = fiftyone_degrees_read_int($_fiftyone_degrees_data_file); if ($profile_hardware_value_id == $hardware_value_id) { $profile = fiftyone_degrees_read_profile($offset, $headers); //if (in_array($hardware_value_id, $profile['profile_values'])) { $profiles[] = $profile; //var_dump($profile['profile_values']); if (count($profiles) >= $limit) { break; } //} } } $offset += 1 + 4 + 4 + 4 + $profile['profile_value_count'] * 4 + 4 * $profile['signature_count']; } return $profiles; }