View Issue Details

This bug affects 1 person(s).
 6
IDProjectCategoryView StatusLast Update
05432Bug reportsImport/Exportpublic2012-03-14 21:08
Reporterkolmen1 Assigned Toc_schmitz  
PriorityurgentSeveritypartial_block 
Status closedResolutionfixed 
Product Version1.91+ 
Fixed in Version1.91+ 
Summary05432: Export answers to PDF fails when using IE, FF works well
Description

I found the same issue was fixed some time ago see:
Changes from 1.90+ (build 9284) to 1.90+ (build 9290) Legend: # updated feature, - bug fix
-Fixed issue: PDF download of printed answers fails in Internet Explorer (c_schmitz)

It's quite urgent for me :)
I've two installations1.91+, build 10377 works fine, the bug is in build 10629
Current demo contains the same bug....

TagsNo tags attached.
Attached Files
printanswers.php (9,247 bytes)   
<?php
/*
 * LimeSurvey
 * Copyright (C) 2007 The LimeSurvey Project Team / Carsten Schmitz
 * All rights reserved.
 * License: GNU/GPL License v2 or later, see LICENSE.php
 * LimeSurvey is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 * See COPYRIGHT.php for copyright notices and details.
 *
 * $Id: printanswers.php 9858 2011-03-08 12:50:47Z c_schmitz $
 *
 */

//Security Checked: POST, GET, SESSION, REQUEST, returnglobal, DB
require_once(dirname(__FILE__).'/classes/core/startup.php');
require_once(dirname(__FILE__).'/config-defaults.php');
require_once(dirname(__FILE__).'/common.php');
if(isset($usepdfexport) && $usepdfexport == 1)
{
    require_once($pdfexportdir."/extensiontcpdf.php");
}

if (!isset($surveyid)) {$surveyid=returnglobal('sid');}
else {
    //This next line ensures that the $surveyid value is never anything but a number.
    $surveyid=sanitize_int($surveyid);
}

// Compute the Session name
// Session name is based:
// * on this specific limesurvey installation (Value SessionName in DB)
// * on the surveyid (from Get or Post param). If no surveyid is given we are on the public surveys portal
$usquery = "SELECT stg_value FROM ".db_table_name("settings_global")." where stg_name='SessionName'";
$usresult = db_execute_assoc($usquery,'',true);          //Checked
if ($usresult)
{
    $usrow = $usresult->FetchRow();
    $stg_SessionName=$usrow['stg_value'];
    if ($surveyid)
    {
        @session_name($stg_SessionName.'-runtime-'.$surveyid);
    }
    else
    {
        @session_name($stg_SessionName.'-runtime-publicportal');
    }
}
else
{
    session_name("LimeSurveyRuntime-$surveyid");
}
session_set_cookie_params(0,$relativeurl.'/');
@session_start();

if (isset($_SESSION['sid'])) {$surveyid=$_SESSION['sid'];}  else die('Invalid survey/session');

//Debut session time out
if (!isset($_SESSION['finished']) || !isset($_SESSION['srid']))
// Argh ... a session time out! RUN!
//display "sorry but your session has expired"
{
    require_once($rootdir.'/classes/core/language.php');
    $baselang = GetBaseLanguageFromSurveyID($surveyid);
    $clang = new limesurvey_lang($baselang);
    //A nice exit

    sendcacheheaders();
    doHeader();

    echo templatereplace(file_get_contents(sGetTemplatePath(validate_templatedir("default"))."/startpage.pstpl"));
    echo "<center><br />\n"
    ."\t<font color='RED'><strong>".$clang->gT("ERROR")."</strong></font><br />\n"
    ."\t".$clang->gT("We are sorry but your session has expired.")."<br />".$clang->gT("Either you have been inactive for too long, you have cookies disabled for your browser, or there were problems with your connection.")."<br />\n"
    ."\t".sprintf($clang->gT("Please contact %s ( %s ) for further assistance."),$siteadminname,$siteadminemail)."\n"
    ."</center><br />\n";

    echo templatereplace(file_get_contents(sGetTemplatePath(validate_templatedir("default"))."/endpage.pstpl"));
    doFooter();
    exit;
};
//Fin session time out

$id=$_SESSION['srid']; //I want to see the answers with this id
$clang = $_SESSION['s_lang'];

//A little bit of debug to see in the noodles plate
/*if ($debug==2)
 {
 echo "MonSurveyID $surveyid et ma langue ". $_SESSION['s_lang']. " et SRID = ". $_SESSION['srid'] ."<br />";
 echo "session id".session_id()." \n"."<br />";

 echo //"secanswer ". $_SESSION['secanswer']
 "oldsid ". $_SESSION['oldsid']."<br />"
 ."step ". $_SESSION['step']."<br />"
 ."scid ". $_SESSION['scid']
 ."srid ". $_SESSION['srid']."<br />"
 ."datestamp ". $_SESSION['datestamp']."<br />"
 ."insertarray ". $_SESSION['insertarray']."<br />"
 ."fieldarray ". $_SESSION['fieldarray']."<br />";
 ."holdname". $_SESSION['holdname'];

 print " limit ". $limit."<br />"; //afficher les 50 derniéres réponses par ex. (pas nécessaire)
 print " surveyid ".$surveyid."<br />"; //sid
 print " id ".$id."<br />"; //identifiant de la réponses
 print " order ". $order ."<br />"; //ordre de tri (pas nécessaire)
 print " this survey ". $thissurvey['tablename'];
 };   */

//Ensure script is not run directly, avoid path disclosure
if (!isset($rootdir) || isset($_REQUEST['$rootdir'])) {die("browse - Cannot run this script directly");}

// Set the language for dispay
require_once($rootdir.'/classes/core/language.php');  // has been secured
if (isset($_SESSION['s_lang']))
{
    $clang = SetSurveyLanguage( $surveyid, $_SESSION['s_lang']);
    $language = $_SESSION['s_lang'];
} else {
$language = GetBaseLanguageFromSurveyID($surveyid);
    $clang = SetSurveyLanguage( $surveyid, $language);
}

// Get the survey inforamtion
$thissurvey = getSurveyInfo($surveyid,$language);

//SET THE TEMPLATE DIRECTORY
if (!isset($thissurvey['templatedir']) || !$thissurvey['templatedir'])
{
    $thistpl=validate_templatedir("default");
}
else
{
    $thistpl=validate_templatedir($thissurvey['templatedir']);
}

if ($thissurvey['printanswers']=='N') die();  //Die quietly if print answers is not permitted






//CHECK IF SURVEY IS ACTIVATED AND EXISTS
$actquery = "SELECT * FROM ".db_table_name('surveys')." as a inner join ".db_table_name('surveys_languagesettings')." as b on (b.surveyls_survey_id=a.sid and b.surveyls_language=a.language) WHERE a.sid=$surveyid";

$actresult = db_execute_assoc($actquery);    //Checked
$actcount = $actresult->RecordCount();
if ($actcount > 0)
{
    while ($actrow = $actresult->FetchRow())
    {
        $surveytable = db_table_name("survey_".$actrow['sid']);
        $surveyname = "{$actrow['surveyls_title']}";
    }
}


//OK. IF WE GOT THIS FAR, THEN THE SURVEY EXISTS AND IT IS ACTIVE, SO LETS GET TO WORK.
//SHOW HEADER
$printoutput = '';
if(isset($usepdfexport) && $usepdfexport == 1)
{
    $printoutput .= "<form action='printanswers.php?printableexport=pdf&sid=$surveyid' method='post'>\n<center><input type='submit' value='".$clang->gT("PDF Export")."'id=\"exportbutton\"/><input type='hidden' name='printableexport' /></center></form>";
}
if(isset($_POST['printableexport']))
{
    $pdf = new PDF($pdforientation);
    $pdf->SetFont($pdfdefaultfont,'',$pdffontsize);
    $pdf->AddPage();
        $pdf->titleintopdf($clang->gT("Survey name (ID)",'unescaped').": {$surveyname} ({$surveyid})");
}
$printoutput .= "\t<div class='printouttitle'><strong>".$clang->gT("Survey name (ID):")."</strong> $surveyname ($surveyid)</div><p>&nbsp;\n";


$aFullResponseTable=aGetFullResponseTable($surveyid,$id,$language);

//Get the fieldmap @TODO: do we need to filter out some fields?
unset ($aFullResponseTable['id']);
unset ($aFullResponseTable['token']);
unset ($aFullResponseTable['lastpage']);
unset ($aFullResponseTable['startlanguage']);
unset ($aFullResponseTable['datestamp']);
unset ($aFullResponseTable['startdate']);

$printoutput .= "<table class='printouttable' >\n";
if(isset($_POST['printableexport']))
{
    $pdf->intopdf($clang->gT("Question",'unescaped').": ".$clang->gT("Your answer",'unescaped'));
}

$oldgid = 0;
$oldqid = 0;
foreach ($aFullResponseTable as $sFieldname=>$fname)
{
    if (substr($sFieldname,0,4)=='gid_')
    {

	    if(isset($_POST['printableexport']))
	    {
		    $pdf->intopdf(FlattenText($fname[0],true));
		    $pdf->ln(2);
        }
        else
        {
           $printoutput .= "\t<tr class='printanswersgroup'><td colspan='2'>{$fname[0]}</td></tr>\n";
        }
	}
    elseif (substr($sFieldname,0,4)=='qid_')
    {
        if(isset($_POST['printableexport']))
        {
            $pdf->intopdf(FlattenText($fname[0].$fname[1],true).": ".$fname[2]);
            $pdf->ln(2);
        }
        else
        {
            $printoutput .= "\t<tr class='printanswersquestionhead'><td  colspan='2'>{$fname[0]}</td></tr>\n";
        }
    }
    else
    {
        if(isset($_POST['printableexport']))
        {
            $pdf->intopdf(FlattenText($fname[0].$fname[1],true).": ".$fname[2]);
            $pdf->ln(2);
        }
        else
        {
            $printoutput .= "\t<tr class='printanswersquestion'><td>{$fname[0]} {$fname[1]}</td><td class='printanswersanswertext'>{$fname[2]}</td></tr>";
        }
    }
}

$printoutput .= "</table>\n";
if(isset($_POST['printableexport']))
{

    header("Pragma: public");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

    $sExportFileName=sanitize_filename($surveyname);
    $pdf->Output($sExportFileName."-".$surveyid.".pdf","D");
}


//Display the page with user answers
if(!isset($_POST['printableexport']))
{
    sendcacheheaders();
    doHeader();

    echo templatereplace(file_get_contents(sGetTemplatePath($thistpl).'/startpage.pstpl'));
    echo templatereplace(file_get_contents(sGetTemplatePath($thistpl).'/printanswers.pstpl'),array('ANSWERTABLE'=>$printoutput));
    echo templatereplace(file_get_contents(sGetTemplatePath($thistpl).'/endpage.pstpl'));
    echo "</body></html>";
}


?>
printanswers.php (9,247 bytes)   
Bug heat6
Complete LimeSurvey version number (& build)10629
I will donate to the project if issue is resolvedYes
BrowserIE
Database type & versionMySQL
Server OS (if known)LINUX - RedHat
Webserver software & version (if known)Apache 2.0
PHP Version5.1.6

Users monitoring this issue

There are no users monitoring this issue.

Activities

c_schmitz

c_schmitz

2011-08-29 23:22

administrator   ~16177

Please use attached patch - we are looking forward to your donation!

kolmen1

kolmen1

2011-08-30 13:09

reporter   ~16179

Sorry but the Hot patch doesn't work.
It works on build 10377
But on build 10629 doesn't , it also doesn't work on demo system
You can try by yourself:
http://www.konin.pl/limesurvey/index.php?sid=91627&amp;lang=pl&amp;token=89wytsf9xya3t5v

c_schmitz

c_schmitz

2011-08-30 13:33

administrator   ~16180

Last edited: 2011-08-30 13:35

I see - I thought you were talking about exporting responses in the admin interface. Actually there have not been any changes since 10377 on that code. Which IE browser are you using?

kolmen1

kolmen1

2011-08-30 13:57

reporter   ~16181

Hi,
IE 8.0.6
by the way, your patch on my local installation 10377 couased that the responses via admin interface stoped work :) but the user still wiork fine :)
The goal is that the user will have the possibility to print the responses to pdf. As I mentioned on FF work, but IE don't - that is on production system with build 10629 - and also on demo system doesn't work

Maybe it would be easier to update the system from 10629 to 10377, how I get the source code for older build ? ( tar or gzip )

c_schmitz

c_schmitz

2011-09-02 16:00

administrator   ~16209

Please try the attached file and give feedback.

c_schmitz

c_schmitz

2011-10-18 17:41

administrator   ~16445

Feedback please?

kolmen1

kolmen1

2011-10-18 19:58

reporter   ~16457

Hi,
I solve the issue removing two lines in the file. I will have possibility to check it on saturday, after that I'll send feedback to You.

regards

macphreak

macphreak

2011-10-19 07:41

reporter   ~16468

Is there anything I can do to get this to work? Right now I have an urgent project that the PDF export is working fine with Firefox, Chrome, and all Mac Browsers. However, in IE 8 it fails. I have attached an image of the error for your review. Please let me know if there is anything I can do. I have the latest limesurvey download available on the main site.

Thanks!

macphreak

macphreak

2011-10-19 17:02

reporter   ~16474

Nevermind. this is working correctly now. This was more user error than anything. Looks like the latest release fixes this problem.

c_schmitz

c_schmitz

2011-10-19 19:21

administrator   ~16480

Okay, great ;).

Related Changesets

LimeSurvey: Yii 66a1a342

2011-09-02 07:05:41

c_schmitz

Details Diff
Fixed issue 05432: Option to export responses to PDF by participant fails when using IE

git-svn-id: file:///Users/Shitiz/Downloads/lssvn/source/limesurvey_ci@10924 b72ed6b6-b9f8-46b5-92b4-906544132732
Affected Issues
05432
mod - application/controllers/printanswers.php Diff File

Issue History

Date Modified Username Field Change
2011-08-29 21:56 kolmen1 New Issue
2011-08-29 23:21 c_schmitz Assigned To => c_schmitz
2011-08-29 23:21 c_schmitz Status new => assigned
2011-08-29 23:21 c_schmitz File Added: exportresults.php
2011-08-29 23:22 c_schmitz Note Added: 16177
2011-08-29 23:24 c_schmitz Status assigned => resolved
2011-08-29 23:24 c_schmitz Fixed in Version => 1.91+
2011-08-29 23:24 c_schmitz Resolution open => fixed
2011-08-30 13:09 kolmen1 Note Added: 16179
2011-08-30 13:09 kolmen1 Status resolved => feedback
2011-08-30 13:09 kolmen1 Resolution fixed => reopened
2011-08-30 13:33 c_schmitz Note Added: 16180
2011-08-30 13:35 c_schmitz Note Edited: 16180
2011-08-30 13:57 kolmen1 Note Added: 16181
2011-08-30 13:57 kolmen1 Status feedback => assigned
2011-09-02 15:59 c_schmitz File Deleted: exportresults.php
2011-09-02 15:59 c_schmitz File Added: printanswers.php
2011-09-02 16:00 c_schmitz Note Added: 16209
2011-09-02 16:00 c_schmitz Status assigned => feedback
2011-10-18 17:41 c_schmitz Note Added: 16445
2011-10-18 19:58 kolmen1 Note Added: 16457
2011-10-18 19:58 kolmen1 Status feedback => assigned
2011-10-19 07:41 macphreak Note Added: 16468
2011-10-19 07:41 macphreak File Added: Screen Shot 2011-10-19 at 1.40.12 AM.png
2011-10-19 17:02 macphreak Note Added: 16474
2011-10-19 19:21 c_schmitz Note Added: 16480
2011-10-19 19:21 c_schmitz Status assigned => closed
2011-10-19 19:21 c_schmitz Resolution reopened => fixed
2012-03-14 21:08 c_schmitz Changeset attached => Import 2012-03-09 13:30:34 Yii 66a1a342