private function prepareObject($rows, $start, $limit, $dimension, $member_type_id, $total)
 {
     $custom_properties = MemberCustomProperties::getAllMemberCustomPropertiesByObjectType($member_type_id);
     $ot = ObjectTypes::findById($member_type_id);
     $object = array("totalCount" => $total, "start" => $start, "dimension_id" => $dimension->getId(), "dimension_name" => $dimension->getName(), "object_type_name" => $ot->getName(), "members" => array());
     $member_ids = array();
     $ids = array();
     for ($i = 0; $i < $limit; $i++) {
         if (isset($rows[$i])) {
             $row = $rows[$i];
             $info = $row;
             $info['icon_cls'] = $ot->getIconClass();
             $path_ids = array();
             $m = Members::findById(array_var($row, 'member_id'));
             $all_parents = $m->getAllParentMembersInHierarchy();
             foreach ($all_parents as $parent) {
                 if (!isset($path_ids[$dimension->getId()])) {
                     $path_ids[$dimension->getId()] = array();
                 }
                 $path_ids[$dimension->getId()][$parent->getId()] = $parent->getId();
                 break;
             }
             $info['mem_path'] = json_encode($path_ids);
             // calculated info
             /*	$more_info = array(
             				'total_tasks' => array_var($row, 'total_tasks'),
             				'completed_tasks' => array_var($row, 'completed_tasks'),
             				'task_completion_p' => number_format(array_var($row, 'task_completion_p'), 2),
             				'total_estimated_time' => array_var($row, 'total_estimated_time'),
             				'total_worked_time' => array_var($row, 'total_worked_time'),
             				'time_worked_p' => number_format(array_var($row, 'time_worked_p'), 2),
             			);
             			$info = array_merge($info, $more_info);*/
             $object["members"][] = $info;
             $member_ids[] = array_var($row, 'member_id');
         }
     }
     // set custom properties
     foreach ($member_ids as $k => &$mid) {
         if (!is_numeric($mid) || $mid == 0) {
             unset($member_ids[$k]);
         }
     }
     if (Plugins::instance()->isActivePlugin('member_custom_properties') && count($member_ids) > 0) {
         foreach ($custom_properties as $cp) {
             $cp_rows = DB::executeAll("SELECT * FROM " . TABLE_PREFIX . "member_custom_property_values cpv \r\n\t\t\t\t\tWHERE cpv.member_id IN (" . implode(',', $member_ids) . ") \r\n\t\t\t\t\tAND cpv.custom_property_id = '" . $cp->getId() . "' AND cpv.value != ''\r\n\t\t\t\t\tAND cpv.value != '" . EMPTY_DATETIME . "' AND cpv.value != '" . EMPTY_DATE . "'\r\n\t\t\t\t\tORDER BY cpv.member_id");
             $mcpv = new MemberCustomPropertyValue();
             foreach ($cp_rows as $cp_row) {
                 $mcpv->setValue($cp_row['value']);
                 $cp_val = get_member_custom_property_value_for_listing($cp, $cp_row['member_id'], array($mcpv));
                 foreach ($object["members"] as &$x) {
                     if ($x['member_id'] == $cp_row['member_id']) {
                         $x['cp_' . $cp->getId()] = $cp_val;
                         break;
                     }
                 }
             }
         }
     }
     return $object;
 }
     } else {
         echo select_box($name, $options, array('tabindex' => $startTi + $ti, 'style' => 'min-width:140px', 'id' => $genid . 'cp' . $customProp->getId()));
     }
     break;
 case 'table':
     $columnNames = explode(',', $customProp->getValues());
     $cell_width = 600 / count($columnNames) . "px";
     $html = '<div class="og-add-custom-properties"><table><tr>';
     foreach ($columnNames as $colName) {
         $html .= '<th style="width:' . $cell_width . ';min-width:120px;">' . $colName . '</th>';
     }
     $ti += 1000;
     $html .= '</tr><tr>';
     $values = MemberCustomPropertyValues::getMemberCustomPropertyValues($member->getId(), $customProp->getId());
     if (trim($default_value) != '' && (!is_array($values) || count($values) == 0)) {
         $def_cp_value = new MemberCustomPropertyValue();
         $def_cp_value->setValue($default_value);
         $values = array($def_cp_value);
     }
     $rows = 0;
     if (is_array($values) && count($values) > 0) {
         foreach ($values as $val) {
             $col = 0;
             $values = str_replace("\\|", "%%_PIPE_%%", $val->getValue());
             $exploded = explode("|", $values);
             foreach ($exploded as $v) {
                 $v = str_replace("%%_PIPE_%%", "|", $v);
                 $html .= '<td><input class="value" style="width:' . $cell_width . ';min-width:120px;" name="' . $name . "[{$rows}][{$col}]" . '" value="' . clean($v) . '" tabindex="' . ($startTi + $ti++) . '"/></td>';
                 $col++;
             }
             $html .= '<td><div class="ico ico-delete" style="width:16px;height:16px;cursor:pointer" onclick="og.removeTableCustomPropertyRow(this.parentNode.parentNode);return false;">&nbsp;</div></td>';