1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/limesurvey_ynh.git synced 2024-09-03 19:36:32 +02:00
limesurvey_ynh/sources/application/helpers/admin/export/PdfWriter.php

107 lines
No EOL
3.5 KiB
PHP

<?php
class PdfWriter extends Writer
{
private $pdf;
private $separator;
private $rowCounter;
private $pdfDestination;
private $surveyName;
private $clang;
/**
* Map of questions groups
*
* @var array
* @access private
*/
private $aGroupMap = array();
public function init(SurveyObj $survey, $sLanguageCode, FormattingOptions $oOptions)
{
parent::init($survey, $sLanguageCode, $oOptions);
$pdforientation=Yii::app()->getConfig('pdforientation');
$this->clang = new limesurvey_lang($sLanguageCode);
if ($oOptions->output=='file')
{
$this->pdfDestination = 'F';
} else {
$this->pdfDestination = 'D';
}
Yii::import('application.libraries.admin.pdf', true);
Yii::import('application.helpers.pdfHelper');
$aPdfLanguageSettings=pdfHelper::getPdfLanguageSettings($sLanguageCode);
// create new PDF document
$this->pdf = new pdf();
$this->surveyName = $survey->info['surveyls_title'];
$this->pdf->initAnswerPDF($survey->info, $aPdfLanguageSettings, Yii::app()->getConfig('sitename'), $this->surveyName);
$this->separator="\t";
$this->rowCounter = 0;
$this->aGroupMap = $this->setGroupMap($survey, $oOptions);
}
public function outputRecord($headers, $values, FormattingOptions $oOptions)
{
$this->rowCounter++;
if ($oOptions->answerFormat == 'short')
{
$pdfstring = '';
foreach ($values as $value)
{
$pdfstring .= $value.' | ';
}
$this->pdf->intopdf($pdfstring);
}
elseif ($oOptions->answerFormat == 'long')
{
if ($this->rowCounter != 1)
{
$this->pdf->AddPage();
}
$this->pdf->addTitle(sprintf($this->clang->gT("Survey response %d"), $this->rowCounter));
foreach ($this->aGroupMap as $gid => $questions)
{
if ($gid != 0)
{
$this->pdf->addGidAnswer($questions[0]['group_name']);
}
foreach ($questions as $question)
{
if (isset($values[$question['index']]) && isset($headers[$question['index']]))
{
if ($question['type'] == 'N' || $question['type'] == 'K')
{
$sAuxValue=number_format(floatval($values[$question['index']]), 0, '', '');
$this->pdf->addAnswer($headers[$question['index']], $sAuxValue, false);
}
else
{
$this->pdf->addAnswer($headers[$question['index']], $values[$question['index']], false);
}
}
}
}
}
else
{
safeDie('An invalid answer format was encountered: '.$oOptions->answerFormat);
}
}
public function close()
{
if ($this->pdfDestination == 'F')
{
//Save to file on filesystem.
$filename = $this->filename;
}
else
{
//Presuming this else branch is a send to client via HTTP.
$filename = $this->translate($this->surveyName, $this->languageCode).'.pdf';
}
$this->pdf->Output($filename, $this->pdfDestination);
}
}