Exemplo n.º 1
0
 static function exportCSV($contentObjectID, $contentClassAttributeID, $languageCode)
 {
     $surveyString = '';
     function printLine($list, $array)
     {
         $surveyString = '';
         $found = false;
         foreach ($list as $key) {
             $login = '';
             $name = '';
             if (isset($array[$key]) and $key == 'user_id' and is_numeric($array[$key])) {
                 $userID = $array[$key];
                 $contentObject = eZContentObject::fetch($userID);
                 if ($contentObject instanceof eZContentObject) {
                     $name = $contentObject->attribute('name');
                     $dataMap = $contentObject->attribute('data_map');
                     foreach ($dataMap as $contentObjectAttribute) {
                         if ($contentObjectAttribute->attribute('data_type_string') == 'ezuser') {
                             $user = $contentObjectAttribute->content();
                             if ($user instanceof eZUser) {
                                 $content = $user->attribute('login');
                             }
                         }
                     }
                     if ($name != '') {
                         $content .= " ({$name})";
                     }
                 }
                 $surveyString .= '"' . str_replace('"', '""', $content) . '";';
             } else {
                 if (isset($array[$key])) {
                     $surveyString .= '"' . str_replace('"', '""', $array[$key]) . '";';
                     $found = true;
                 } else {
                     $surveyString .= '"";';
                 }
             }
         }
         if ($found === true) {
             $surveyString .= "\n";
         }
         return $surveyString;
     }
     $survey = eZSurvey::fetchByObjectInfo($contentObjectID, $contentClassAttributeID, $languageCode);
     if (!$survey || !$survey->published()) {
         return false;
     }
     $questionList = $survey->fetchQuestionList();
     $questions = array();
     $indexList = array();
     foreach (array_keys($questionList) as $key) {
         if ($questionList[$key]->canAnswer()) {
             $oldKey = $questionList[$key]->attribute('original_id');
             $indexList[] = $oldKey;
             $questions[$oldKey] = $questionList[$key]->attribute('text');
         }
     }
     $surveyINI = eZINI::instance('ezsurvey.ini');
     $showHeadlineUserName = $surveyINI->variable('CSVExportSettings', 'ShowUserName') == 'true' ? true : false;
     if ($showHeadlineUserName === true) {
         $indexList[] = 'user_id';
         $questions['user_id'] = $surveyINI->variable('CSVExportSettings', 'HeadlineUserName');
     }
     $surveyString = printLine($indexList, $questions);
     $db = eZDB::instance();
     $query = "SELECT ezsurveyquestionresult.result_id as result_id, question_id, questionoriginal_id, text, ezsurveyresult.user_id as user_id\n                                  FROM ezsurveyquestionresult, ezsurveyresult, ezsurvey\n                                  WHERE ezsurveyresult.id=ezsurveyquestionresult.result_id AND\n                                        ezsurveyresult.survey_id=ezsurvey.id AND\n                                        contentclassattribute_id='" . $contentClassAttributeID . "' AND\n                                        contentobject_id='" . $contentObjectID . "' AND\n                                        language_code='" . $languageCode . "'\n                                  ORDER BY tstamp ASC, ezsurveyquestionresult.result_id ASC";
     $rows = $db->arrayQuery($query);
     $extraQuery = "SELECT ezsurveyquestionmetadata.result_id as result_id, question_id, value\n                                  FROM ezsurveyquestionmetadata, ezsurveyresult, ezsurvey\n                                  WHERE ezsurveyresult.id=ezsurveyquestionmetadata.result_id AND\n                                        ezsurveyresult.survey_id=ezsurvey.id AND\n                                        ezsurveyquestionmetadata.value<>'' AND\n                                        contentclassattribute_id='" . $contentClassAttributeID . "' AND\n                                        contentobject_id='" . $contentObjectID . "' AND\n                                        language_code='" . $languageCode . "'\n                                  ORDER BY tstamp ASC, ezsurveyquestionmetadata.result_id ASC";
     $extraResultArray = $db->arrayQuery($extraQuery);
     $extraResultHash = array();
     foreach ($extraResultArray as $extraResultItem) {
         $extraResultHash[$extraResultItem['result_id']][$extraResultItem['question_id']] = $extraResultItem['value'];
     }
     $oldID = false;
     $answers = array();
     foreach (array_keys($rows) as $key) {
         $row =& $rows[$key];
         if ($oldID != $row['result_id']) {
             if ($oldID !== false) {
                 $surveyString .= printLine($indexList, $answers);
                 unset($answers);
                 $answers = array();
             }
             $oldID = $row['result_id'];
         }
         if (isset($answers[$row['questionoriginal_id']])) {
             $answers[$row['questionoriginal_id']] .= "; " . $row['text'];
         } else {
             $answers[$row['questionoriginal_id']] = $row['text'];
         }
         if (isset($extraResultHash[$row['result_id']][$row['question_id']])) {
             $answers[$row['questionoriginal_id']] .= "; " . $extraResultHash[$row['result_id']][$row['question_id']];
             unset($extraResultHash[$row['result_id']][$row['question_id']]);
         }
         if (!isset($answers['user_id']) and $showHeadlineUserName === true) {
             $answers['user_id'] = $row['user_id'];
         }
     }
     if ($oldID !== false) {
         $surveyString .= printLine($indexList, $answers);
     }
     return $surveyString;
 }
Exemplo n.º 2
0
// please contact us via e-mail to licence@ez.no. Further contact
// information is available at http://ez.no/home/contact/.
//
// The "GNU General Public License" (GPL) is available at
// http://www.gnu.org/copyleft/gpl.html.
//
// Contact licence@ez.no if any conditions of this licencing isn't clear to
// you.
//
/*! \file export.php
*/
$Module = $Params['Module'];
$contentObjectID = $Params['ContentObjectID'];
$contentClassAttributeID = $Params['ContentClassAttributeID'];
$languageCode = $Params['LanguageCode'];
$survey = eZSurvey::fetchByObjectInfo($contentObjectID, $contentClassAttributeID, $languageCode);
if (!is_object($survey)) {
    return $Module->handleError(eZError::KERNEL_NOT_AVAILABLE, 'kernel');
}
// $surveyID = $survey->attribute( 'id' );
// $db = eZDB::instance();
// $db->setIsSQLOutputEnabled( false );
// $http = eZHTTPTool::instance();
$output = eZSurveyResult::exportCSV($contentObjectID, $contentClassAttributeID, $languageCode);
if ($output !== false) {
    $contentLength = strlen($output);
    header("Pragma: ");
    header("Cache-Control: ");
    header("Content-Length: {$contentLength}");
    // header( "Content-Type: application/vnd.ms-excel" );
    header("Content-Type: text/comma-separated-values");