Файл: source/library/scrud/templates/csv.php
Строк: 39
<?php
$csv = array();
$aryHeader = array();
$aryAlias = array();
foreach ($fields as $field) {
if (!in_array($field, $this->fields))
continue;
$aryHeader[] = $field;
if (!array_key_exists($field, $this->fieldsAlias)) {
$aryAlias[] = $field;
} else {
$aryAlias[] = $this->fieldsAlias[$field];
}
}
$csv[] = $aryAlias;
foreach ($this->results as $v) {
$tmp = array();
foreach ($aryHeader as $v1) {
$__value = '';
$__aryField = explode('.', $v1);
if (count($__aryField) > 1) {
$__tmp = $v;
foreach ($__aryField as $key => $value) {
if (is_array($__tmp[$value])) {
$__tmp = $__tmp[$value];
} else {
$__value = $__tmp[$value];
}
}
} else if (count($__aryField) == 1) {
$__value = $result[$field];
}
if (!isset($this->form[$v1])) {
$this->form[$v1]['element'][0] = '';
}
switch ($this->form[$v1]['element'][0]) {
case 'select':
case 'autocomplete':
case 'radio':
$e = $this->form[$v1]['element'];
$options = array();
$params = array();
if (isset($e[1]) && !empty($e[1])) {
if (array_key_exists('option_table', $e[1])) {
if (array_key_exists('option_key', $e[1]) &&
array_key_exists('option_value', $e[1])) {
$_dao = new GenericDao($e[1]['option_table'], $this->da);
$params['fields'] = array($e[1]['option_key'], $e[1]['option_value']);
$rs = $_dao->find($params);
if (!empty($rs)) {
foreach ($rs as $v2) {
$options[$v2[$e[1]['option_key']]] = $v2[$e[1]['option_value']];
}
}
}
} else {
$options = $e[1];
}
}
if (isset($e[2]) && array_key_exists('multiple', $e[2]) && !is_array($__value)){
$tmp1 = explode(',', $__value);
$__value = array();
foreach ($tmp1 as $mv){
if (!empty($mv)){
$__value[] = $mv;
}
}
}
if (!is_array($__value)){
if (isset($e[1]) && !empty($__value)) {
$tmp[] = (isset($options[$__value])) ? $options[$__value] : $__value;
}
}else{
$tmp1 = '';
$sp = '';
foreach ($__value as $sv){
$tmp1 .= $sp.((isset($options[$sv])) ? $options[$sv] : $sv);
$sp = ',';
}
$tmp[] = $tmp1;
}
break;
case 'checkbox':
$value = explode(',', $__value);
if (!empty($value) && is_array($value) && count($value) > 0) {
$tmp1 = array();
foreach ($value as $k2 => $v2) {
if (isset($this->form[$v1]['element'][1][$v2])) {
$tmp1[] = $this->form[$v1]['element'][1][$v2];
}
}
$value = implode(', ', $tmp1);
} else {
$value = '';
}
$tmp[] = $value;
break;
default :
$tmp[] = $__value;
break;
}
}
$csv[] = $tmp;
}
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=" . $_GET['table'] . "-" . date("YmdHis") . ".csv");
header("Pragma: no-cache");
header("Expires: 0");
foreach ($csv as $v) {
echo arrayToCsv($v) . "n";
}