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; }
// 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");