Tripal v1.0 (6.x-1.0)
|
00001 <?php 00002 00017 function chado_wrapper_split_array_agg_results($handler, &$values) { 00018 00019 if ($handler->aggregated) { 00020 foreach ($values as $k => $v) { 00021 00022 if (preg_match('/^{(.*)}$/', $v->{$handler->field_alias}, $matches)) { 00023 $values[$k]->{$handler->field_alias} = str_getcsv($matches[1]); 00024 } 00025 else { 00026 $values[$k]->{$handler->field_alias} = array(); 00027 } 00028 } 00029 } 00030 00031 return $values; 00032 } 00033 00043 function chado_wrapper_is_aggregated_by_join($handler) { 00044 $aggregated = FALSE; 00045 00046 $table = $handler->query->get_table_info($handler->table); 00047 if (preg_match('/aggregator/', $table['join']->definition['handler'])) { 00048 $aggregated = TRUE; 00049 } 00050 00051 return $aggregated; 00052 } 00053 00065 function chado_wrapper_is_aggregated_by_result($handler, $values) { 00066 $aggregated = FALSE; 00067 00068 00069 $i = 0; 00070 while (empty($values[$i]->{$handler->field_alias}) AND $i <= sizeof($values)) { 00071 $i++; 00072 } 00073 00074 if (preg_match('/^{.*}$/', $values[$i]->{$handler->field_alias})) { 00075 $aggregated = TRUE; 00076 } 00077 00078 return $aggregated; 00079 } 00080 00081 function chado_wrapper_render_items($handler, $values) { 00082 00083 // If it's aggregated (an array), then render each part 00084 // using the parent render functionality 00085 if ($handler->aggregated) { 00086 00087 $items = array(); 00088 00089 $parts = $values->{$handler->field_alias}; 00090 foreach ($parts as $p) { 00091 $v[ $handler->field_alias ] = $p; 00092 $val = (object) $v; 00093 $items[] = $handler->parent_render($val); 00094 unset($v, $val); 00095 } 00096 00097 if ($handler->options['type'] == 'separator') { 00098 return implode(check_plain($handler->options['separator']), $items); 00099 } 00100 else { 00101 return theme('item_list', $items, NULL, $handler->options['type']); 00102 } 00103 00104 // Otherwise it is not aggragated 00105 // Just render like the default handler would 00106 } 00107 else { 00108 return $handler->parent_render($values); 00109 } 00110 }