8 require_once
'FDL/Class.Doc.php';
9 require_once
'FDL/freedom_util.php';
10 require_once
'EXTERNALS/fdl.php';
35 $argumentsCSV = array();
37 $defaultArgument = json_decode(
getParam(
"REPORT_DEFAULT_CSV",
"[]") ,
true);
40 $defaultDocArg = array();
42 $id =
$usage->addNeeded(
"id",
"the id of the report");
46 $currentUserTag = $currentDoc->getUTag(
"document_export_csv");
47 $defaultDocArg = json_decode($currentUserTag->comment,
true);
50 $refresh = (
$usage->addOption(
"refresh",
"would you refresh doc before build report", array(
53 ) ,
"FALSE") ==
"TRUE");
55 $default = isset($defaultDocArg[
"kind"]) ? $defaultDocArg[
"kind"] :
'simple';
56 $kind =
$usage->addOption(
"kind",
"the kind of report", array(
60 $default = isset($defaultDocArg[
"pivot"]) ? $defaultDocArg[
"pivot"] :
'id';
61 $pivot =
$usage->addOption(
"pivot",
"the pivot attr", array() , $default);
63 $default = isset($defaultArgument[
"delimiter"]) ? $defaultArgument[
"delimiter"] :
';';
64 $argumentsCSV[
"delimiter"] =
$usage->addOption(
"delimiter",
"the CSV delimiter", array() , $default);
65 $default = isset($defaultArgument[
"enclosure"]) ? $defaultArgument[
"enclosure"] :
'"';
66 $argumentsCSV[
"enclosure"] =
$usage->addOption(
"enclosure",
"the CSV enclosure", array() , $default);
67 $default = isset($defaultArgument[
"encoding"]) ? $defaultArgument[
"encoding"] :
'ISO-8859-15//TRANSLIT';
68 $argumentsCSV[
"encoding"] =
$usage->addOption(
"encoding",
"the CSV encoding", array() , $default);
69 $default = isset($defaultArgument[
"decimalSeparator"]) ? $defaultArgument[
"decimalSeparator"] :
'.';
70 $argumentsCSV[
"decimalSeparator"] =
$usage->addOption(
"decimalSeparator",
"the decimalSeparator", array() , $default);
71 $default = isset($defaultArgument[
"dateFormat"]) ? $defaultArgument[
"dateFormat"] :
'US';
72 $argumentsCSV[
"dateFormat"] =
$usage->addOption(
"dateFormat",
"the dateFormat", array(
78 $displayForm =
$usage->addHidden(
"displayForm",
"");
79 $updateDefault =
$usage->addHidden(
"updateDefault",
"");
84 $usageArguments = array(
100 $addedArguments = array();
103 if (!in_array($key, $usageArguments)) {
104 $addedArguments[] = array(
105 "argumentName" => $key,
111 $action->lay->setBlockData(
"addedArguments", $addedArguments);
113 if ($updateDefault) {
114 $action->
setParamU(
"REPORT_DEFAULT_CSV", json_encode($argumentsCSV));
115 $err = $currentDoc->addUTag($action->user->id,
"document_export_csv", json_encode(array(
120 error_log(__LINE__ .
" " . var_export(
$err,
true));
125 $action->lay->set(
"id",
$id);
127 $attributeLay = array();
128 $attributeLay[] = array(
130 "libelle" => _(
"EXPORT_CSV : identifiant unique")
133 $isSelected =
function ($currentValue, $selectedValue)
135 return $currentValue == $selectedValue ?
"selected='selected'" :
"";
138 foreach ($attr as $currentAttr) {
139 $attributeLay[] = array(
140 "key" => $currentAttr[1],
141 "libelle" => $currentAttr[0],
142 "selected" => $isSelected($currentAttr[1], $pivot) ,
146 $action->lay->setBlockData(
"pivotAttribute", $attributeLay);
151 "selected" => $isSelected(
"simple", $kind) ,
152 "label" => _(
"EXPORT_CSV Simple")
156 "selected" => $isSelected(
"pivot", $kind) ,
157 "label" => _(
"EXPORT_CSV pivot")
160 $action->lay->setBlockData(
"kinds", $kinds);
165 "selected" => $isSelected(
"UTF-8", $argumentsCSV[
"encoding"]) ,
166 "label" => _(
"EXPORT_CSV utf8")
169 "key" =>
"ISO-8859-15//TRANSLIT",
170 "selected" => $isSelected(
"ISO-8859-15//TRANSLIT", $argumentsCSV[
"encoding"]) ,
171 "label" => _(
"EXPORT_CSV ISO-8859-15 (european)")
174 $action->lay->setBlockData(
"encodings", $encodings);
176 $dateFormats = array(
179 "selected" => $isSelected(
"US", $argumentsCSV[
"dateFormat"]) ,
180 "label" => _(
"EXPORT_CSV Date format US")
184 "selected" => $isSelected(
"FR", $argumentsCSV[
"dateFormat"]) ,
185 "label" => _(
"EXPORT_CSV Date format FR")
189 "selected" => $isSelected(
"ISO", $argumentsCSV[
"dateFormat"]) ,
190 "label" => _(
"EXPORT_CSV Date format ISO")
193 $action->lay->setBlockData(
"dateFormats", $dateFormats);
195 $action->lay->set(
"delimiter", $argumentsCSV[
"delimiter"]);
196 $action->lay->set(
"enclosure", $argumentsCSV[
"enclosure"]);
197 $action->lay->set(
"decimalSeparator", $argumentsCSV[
"decimalSeparator"]);
201 $familyIdArray = $currentDoc->getFromDoc();
203 if (in_array($reportFamId, $familyIdArray)) {
206 $csvStruct = $currentDoc->generateCSVReportStruct(
true, $pivot, $argumentsCSV[
"decimalSeparator"], $argumentsCSV[
"dateFormat"], $refresh);
210 $csvStruct = $currentDoc->generateCSVReportStruct(
false,
"", $argumentsCSV[
"decimalSeparator"], $argumentsCSV[
"dateFormat"], $refresh);
213 $csvFile = tempnam($action->
GetParam(
"CORE_TMPDIR",
"/tmp") ,
"csv$id") .
".csv";
214 $fp = fopen($csvFile,
'w');
216 foreach ($csvStruct as $currentLine) {
217 if ($argumentsCSV[
"encoding"] !=
"UTF-8") {
218 $currentLine =
convertLine($currentLine, $argumentsCSV[
"encoding"]);
220 fputcsv($fp, $currentLine, $argumentsCSV[
"delimiter"], $argumentsCSV[
"enclosure"]);
226 $handle = fopen($csvFile,
'r');
227 $content = fread($handle, filesize($csvFile));
229 $action->lay->noParse =
true;
232 $fileName = sprintf(
"%s_%s.%s", $currentDoc->getTitle() , date(
"Y_m_d-H_m_s") ,
"csv");
236 $action->exitError(
'The document is not a report');
243 $returnArray = array();
244 foreach ($currentLine as $currentValue) {
245 $returnArray[] = iconv(
"UTF-8", $encoding, $currentValue);