Tripal v1.0 (6.x-1.0)
chado_wrapper_functions.inc
Go to the documentation of this file.
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 }
 All Classes Files Functions Variables