?> </td> <td class="dataTableHeadingContent" align="center"><?php echo TEXT_ACTION; ?> </td> </tr> <?php if (!$criteria) { echo '<tr><td colspan="5">' . IE_INFO_NO_CRITERIA . '</td></tr>'; } else { foreach ($criteria as $key => $value) { echo '<tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)">'; echo html_hidden_field('cfield_' . $key, $value['cfield']); echo html_hidden_field('ctype_' . $key, $value['ctype']); echo '<td>' . ie_find_field_name($value['cfield'], $params) . '</td>'; echo '<td>' . html_pull_down_menu('crit_' . $key, ie_convert_criteria_types($value['ctype']), $value['crit'], $parameters = '') . '</td>'; echo '<td align="center">' . ($value['ctype'] == 'all_range' ? html_input_field('from_' . $key, $value['from'], $parameters = '') : ' ') . '</td>'; echo '<td align="center">' . ($value['ctype'] == 'all_range' ? html_input_field('to_' . $key, $value['to'], $parameters = '') : ' ') . '</td>'; echo '<td align="center">' . html_icon('emblems/emblem-unreadable.png', TEXT_DELETE, 'small', 'onclick="if (confirm(\'' . SRV_DELETE_CRITERIA . '\')) submitSeq(' . $key . ', \'remove\')"') . '</td>'; echo '</tr>'; } } echo '<tr><td colspan="5"> </td></tr>'; echo '<tr class="dataTableHeadingRow"><td colspan="5" class="dataTableHeadingContent">' . IE_CRITERIA_FILTER_ADD_FIELD . '</td></tr>'; echo '<tr>'; echo '<td>' . html_pull_down_menu('new_cname', $field_list, '', $parameters = '') . '</td>'; echo '<td>' . html_pull_down_menu('new_crit', $criteria_funcs, '', $parameters = '') . '</td>'; echo '<td> </td>'; echo '<td> </td>'; echo '<td align="center">' . html_icon('actions/list-add.png', TEXT_ADD, 'medium', 'onclick="submitToDo(\'add\')"') . '</td>';
function ie_export_data($prefs, $params, $criteria, $options) { global $db, $messageStack; global $qualifiers, $delimiters, $address_tables; if ($prefs['table_name'] == TABLE_CONTACTS) { $use_address_book = true; switch ($prefs['group_id']) { case 'ar': $account_type = 'c'; break; // customers // customers case 'ap': $account_type = 'v'; break; // vendors // vendors case 'hr': $account_type = 'e'; // employees } } else { $use_address_book = false; } // build the mapping arrays to point field names to proper position in export order $data = array(); $element_processing = array(); if ($use_address_book) { $mail[0] = array(); for ($i = 0; $i < MAX_NUM_ADDRESSES; $i++) { $ship[$i] = array(); $bill[$i] = array(); } } $index = 0; foreach ($params as $field) { if ($field['show'] && ($field['mode'] == 'e' || $field['mode'] == 'b')) { if ($use_address_book && substr($field['field'], 0, 5) == 'mail ') { $temp = explode(' ', $field['field']); $mail[0][$temp[1]] = $index; } elseif ($use_address_book && substr($field['field'], 0, 5) == 'ship ') { $temp = explode(' ', $field['field']); $ship[$temp[2] - 1][$temp[1]] = $index; } elseif ($use_address_book && substr($field['field'], 0, 5) == 'bill ') { $temp = explode(' ', $field['field']); $bill[$temp[2] - 1][$temp[1]] = $index; } else { $data[$field['field']] = $index; } $element_processing[$index] = $field['proc']; // needed for processing of each ouput value $index++; } } // fetch the delimiters and text qualifiers $delimiter = ie_fetch_delimiter($options['delimiter']); $qualifier = ie_fetch_qualifier($options['qualifier']); // ready to process the export file $output = ''; if ($options['exp_headings']) { $output_line = array(); foreach ($params as $field) { if ($field['show']) { $output_line[] = $field['name']; } } $output .= ie_implode($output_line, $delimiter, $qualifier) . chr(10); } // build export criteria $criteria_list = array(); $description_list = array(); if (is_array($criteria)) { foreach ($criteria as $filter) { $filter['name'] = ie_find_field_name($filter['cfield'], $params); $address_test = substr($filter['cfield'], 0, 5); if ($address_test == 'mail ' || $address_test == 'ship ' || $address_test == 'bill ') { $temp = explode(' ', $filter['cfield']); $filter['cfield'] = 'a.' . $temp[1]; } else { $filter['cfield'] = 'd.' . $filter['cfield']; } $crit_data = ''; $crit_desc = ''; switch ($filter['crit']) { // based on the date choice selected default: case "all": case "stock": // TBD field to compare so default to nothing // TBD field to compare so default to nothing case "assembly": // TBD field to compare so default to nothing break; case "date_range": $arrData = array('fieldname' => $filter['cfield']); $arrData['params'] = implode(':', array('b', $filter['from'], $filter['to'])); $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']); $crit_data = $temp['sql']; $crit_desc = $temp['description']; break; case "date_today": $arrData = array('fieldname' => $filter['cfield']); $arrData['params'] = implode(':', array('c', '', '')); $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']); $crit_data = $temp['sql']; $crit_desc = $temp['description']; break; case "date_week": $arrData = array('fieldname' => $filter['cfield']); $arrData['params'] = implode(':', array('d', '', '')); $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']); $crit_data = $temp['sql']; $crit_desc = $temp['description']; break; case "date_wtd": $arrData = array('fieldname' => $filter['cfield']); $arrData['params'] = implode(':', array('e', '', '')); $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']); $crit_data = $temp['sql']; $crit_desc = $temp['description']; break; case "date_month": $arrData = array('fieldname' => $filter['cfield']); $arrData['params'] = implode(':', array('f', '', '')); $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']); $crit_data = $temp['sql']; $crit_desc = $temp['description']; break; case "date_mtd": $arrData = array('fieldname' => $filter['cfield']); $arrData['params'] = implode(':', array('g', '', '')); $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']); $crit_data = $temp['sql']; $crit_desc = $temp['description']; break; case "date_qtr": $arrData = array('fieldname' => $filter['cfield']); $arrData['params'] = implode(':', array('h', '', '')); $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']); $crit_data = $temp['sql']; $crit_desc = $temp['description']; break; case "date_qtd": $arrData = array('fieldname' => $filter['cfield']); $arrData['params'] = implode(':', array('i', '', '')); $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']); $crit_data = $temp['sql']; $crit_desc = $temp['description']; break; case "date_year": $arrData = array('fieldname' => $filter['cfield']); $arrData['params'] = implode(':', array('j', '', '')); $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']); $crit_data = $temp['sql']; $crit_desc = $temp['description']; break; case "date_ytd": $arrData = array('fieldname' => $filter['cfield']); $arrData['params'] = implode(':', array('k', '', '')); $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']); $crit_data = $temp['sql']; $crit_desc = $temp['description']; break; case "period": $arrData = array('fieldname' => $filter['cfield']); $arrData['params'] = implode(':', array('l', '', '')); $temp = gen_build_sql_date($arrData['params'], $arrData['fieldname']); $crit_data = $temp['sql']; $crit_desc = $temp['description']; break; case "range": if ($filter['from'] != '') { $crit_data .= $filter['cfield'] . ">='" . $filter['from'] . "'"; $crit_desc .= ' ' . TEXT_FROM . ' ' . $filter['from']; } if ($filter['to'] != '') { if (strlen($crit_data) > 0) { $crit_data .= ' and '; } $crit_data .= $filter['cfield'] . "<='" . $filter['to'] . "'"; $crit_desc .= ' ' . TEXT_TO . ' ' . $filter['to']; } if ($crit_desc != '') { $crit_desc = $filter['name'] . ': ' . $crit_desc; } break; case "yes": case "true": case "active": case "printed": $crit_data .= $value['cfield'] . '=1'; $crit_desc .= $filter['name'] . '=' . $value['crit']; break; case "no": case "false": case "inactive": case "unprinted": $crit_data .= $value['cfield'] . '=0'; $crit_desc .= $filter['name'] . '=' . $value['crit']; } if ($crit_data != '') { $criteria_list[] = $crit_data; } if ($crit_desc != '') { $description_list[] = $crit_desc; } } } $crit_string = ''; if (count($criteria_list) > 0) { $crit_string = ' where ' . implode(' and ', $criteria_list); } // build query $fields = array_keys($data); if (!in_array('id', $fields)) { $fields[] = 'id'; } $field_list = 'd.' . implode(', d.', $fields); $sql = "select distinct " . $field_list . " from " . $prefs['table_name'] . " d "; if ($use_address_book) { $sql .= "left join " . TABLE_ADDRESS_BOOK . " a on d.id = a.ref_id "; } $sql .= $crit_string; $export_rows = $db->Execute($sql); if ($export_rows->RecordCount() == 0) { $messageStack->add(TEXT_IMP_ERMSG12, 'success'); return; } // export data while (!$export_rows->EOF) { $output_line = array(); foreach ($data as $field_name => $index) { $output_line[$index] = ie_process_the_data($export_rows->fields[$field_name], $element_processing[$index]); } if ($use_address_book) { $address_type = array($account_type . 'm' => $mail, $account_type . 's' => $ship, $account_type . 'b' => $bill); foreach ($address_type as $type => $array_name) { // fetch the id to use to link addresses to the correct main record $sql = "select * from " . TABLE_ADDRESS_BOOK . " \r\n\t\t\t\t\twhere type = '" . $type . "' \r\n\t\t\t\t\tand ref_id = '" . $export_rows->fields['id'] . "' limit " . MAX_NUM_ADDRESSES; $addresses = $db->Execute($sql); for ($i = 0; $i < count($array_name); $i++) { // each address of type foreach ($array_name[$i] as $field_name => $index) { // each field in address $output_line[$index] = ie_process_the_data($addresses->fields[$field_name], $element_processing[$index]); } $addresses->MoveNext(); } } } ksort($output_line); $output .= ie_implode($output_line, $delimiter, $qualifier) . chr(10); $export_rows->MoveNext(); } $FileSize = strlen($output); if (substr($options['export_file_name'], strrpos($options['export_file_name'], '.')) == '.csv') { header("Content-type: application/csv"); } else { header("Content-type: plain/txt"); } header("Content-disposition: attachment; filename=" . $options['export_file_name'] . "; size=" . $FileSize); header('Pragma: cache'); header('Cache-Control: public, must-revalidate, max-age=0'); header('Connection: close'); header('Expires: ' . date('r', time() + 60 * 60)); header('Last-Modified: ' . date('r', time())); print $output; exit; }