<tr class='<?php echo $bgcc; ?>' valign='top'> <td align='center'><input type='checkbox' class='cbResponseMarker' value='<?php echo $dtrow['id']; ?>' name='markedresponses[]' /></td> <td align='center'> <a href='<?php echo $this->createUrl("admin/responses/view/surveyid/$surveyid/id/{$dtrow['id']}"); ?>'><img src='<?php echo $sImageURL; ?>/token_viewanswer.png' alt='<?php $clang->eT('View response details'); ?>'/></a> <?php if (hasSurveyPermission($surveyid, 'responses', 'update')) { ?> <a href='<?php echo $this->createUrl("admin/dataentry/editdata/subaction/edit/surveyid/{$surveyid}/id/{$dtrow['id']}"); ?>'><img src='<?php echo $sImageURL; ?>/edit_16.png' alt='<?php $clang->eT('Edit this response'); ?>'/></a> <?php } if (hasFileUploadQuestion($surveyid)) { ?> <a><img id='downloadfile_<?php echo $dtrow['id']; ?>' src='<?php echo $sImageURL; ?>down.png' alt='<?php $clang->eT('Download all files in this response as a zip file'); ?>' class='downloadfile'/></a> <?php } if (hasSurveyPermission($surveyid, 'responses', 'delete')) { ?> <a><img id='deleteresponse_<?php echo $dtrow['id']; ?>' src='<?php echo $sImageURL; ?>token_delete.png' alt='<?php $clang->eT('Delete this response'); ?>' class='deleteresponse'/></a> <?php } ?> </td> <?php $i = 0; $browsedatafield=""; if ($surveyinfo['anonymized'] == "N" && $dtrow['token']) { if (isset($dtrow['tid']) && !empty($dtrow['tid'])) { //If we have a token, create a link to edit it $browsedatafield .= "<a href='" . $this->createUrl("admin/tokens/edit/surveyid/$surveyid/tokenid/{$dtrow['tid']}/") . "' title='" . $clang->gT("Edit this token") . "'>"; $browsedatafield .= "{$dtrow['token']}"; $browsedatafield .= "</a>"; } else {
/** * @deprecated * */ function oldbrowse($iSurveyID) { $aData = $this->_getData($iSurveyID); extract($aData); $aViewUrls = array(); $sBrowseLanguage = $aData['language']; $tokenRequest = Yii::app()->request->getParam('token', null); /** * fnames is used as informational array * it containts * $fnames[] = array(<dbfieldname>, <some strange title>, <questiontext>, <group_id>, <questiontype>); */ if (Permission::model()->hasSurveyPermission($iSurveyID, 'responses', 'read')) { if (Yii::app()->request->getPost('sql')) { $aViewUrls[] = 'browseallfiltered_view'; } //add token to top of list if survey is not private if ($aData['surveyinfo']['anonymized'] == "N" && tableExists('tokens_' . $iSurveyID)) { if (Permission::model()->hasSurveyPermission($iSurveyID, 'tokens', 'read')) { $fnames[] = array("token", gT("Token ID"), 'code' => 'token'); $fnames[] = array("firstname", gT("First name"), 'code' => 'firstname'); // or token:firstname ? $fnames[] = array("lastname", gT("Last name"), 'code' => 'lastname'); $fnames[] = array("email", gT("Email"), 'code' => 'email'); } } $fnames[] = array("submitdate", gT("Completed"), gT("Completed"), "0", 'D'); $fields = createFieldMap($iSurveyID, 'full', false, false, $aData['language']); foreach ($fields as $fielddetails) { if ($fielddetails['fieldname'] == 'lastpage' || $fielddetails['fieldname'] == 'submitdate') { continue; } $question = $fielddetails['question']; if ($fielddetails['type'] != "|") { if ($fielddetails['fieldname'] == 'lastpage' || $fielddetails['fieldname'] == 'submitdate' || $fielddetails['fieldname'] == 'token') { continue; } // no headers for time data if ($fielddetails['type'] == 'interview_time') { continue; } if ($fielddetails['type'] == 'page_time') { continue; } if ($fielddetails['type'] == 'answer_time') { continue; } $fnames[] = array($fielddetails['fieldname'], viewHelper::getFieldText($fielddetails), 'code' => viewHelper::getFieldCode($fielddetails, array('LEMcompat' => true))); } elseif ($fielddetails['aid'] !== 'filecount') { $qidattributes = getQuestionAttributeValues($fielddetails['qid']); for ($i = 0; $i < $qidattributes['max_num_of_files']; $i++) { $filenum = sprintf(gT("File %s"), $i + 1); if ($qidattributes['show_title'] == 1) { $fnames[] = array($fielddetails['fieldname'], "{$filenum} - {$question} (" . gT('Title') . ")", 'code' => viewHelper::getFieldCode($fielddetails) . '(title)', "type" => "|", "metadata" => "title", "index" => $i); } if ($qidattributes['show_comment'] == 1) { $fnames[] = array($fielddetails['fieldname'], "{$filenum} - {$question} (" . gT('Comment') . ")", 'code' => viewHelper::getFieldCode($fielddetails) . '(comment)', "type" => "|", "metadata" => "comment", "index" => $i); } $fnames[] = array($fielddetails['fieldname'], "{$filenum} - {$question} (" . gT('File name') . ")", 'code' => viewHelper::getFieldCode($fielddetails) . '(name)', "type" => "|", "metadata" => "name", "index" => $i); $fnames[] = array($fielddetails['fieldname'], "{$filenum} - {$question} (" . gT('File size') . ")", 'code' => viewHelper::getFieldCode($fielddetails) . '(size)', "type" => "|", "metadata" => "size", "index" => $i); //$fnames[] = array($fielddetails['fieldname'], "File ".($i+1)." - ".$fielddetails['question']."(extension)", "type"=>"|", "metadata"=>"ext", "index"=>$i); } } else { $fnames[] = array($fielddetails['fieldname'], gT("File count"), 'code' => viewHelper::getFieldCode($fielddetails)); } } $fncount = count($fnames); $start = (int) Yii::app()->request->getParam('start', 0); $limit = (int) Yii::app()->request->getParam('limit', 50); $order = Yii::app()->request->getParam('order', 'asc'); if (!$limit) { $limit = 50; } $oCriteria = new CDbCriteria(); //Create the query if ($aData['surveyinfo']['anonymized'] == "N" && tableExists("{{tokens_{$iSurveyID}}}") && Permission::model()->hasSurveyPermission($iSurveyID, 'tokens', 'read')) { $oCriteria = SurveyDynamic::model($iSurveyID)->addTokenCriteria($oCriteria); } if (incompleteAnsFilterState() == "incomplete") { $oCriteria->addCondition("submitdate IS NULL"); } elseif (incompleteAnsFilterState() == "complete") { $oCriteria->addCondition("submitdate IS NOT NULL"); } $dtcount = SurveyDynamic::model($iSurveyID)->count($oCriteria); // or die("Couldn't get response data<br />"); if ($limit > $dtcount) { $limit = $dtcount; } //NOW LETS SHOW THE DATA if (Yii::app()->request->getPost('sql') && stripcslashes(Yii::app()->request->getPost('sql')) !== "" && Yii::app()->request->getPost('sql') != "NULL") { $oCriteria->addCondition(stripcslashes(Yii::app()->request->getPost('sql'))); } if (!is_null($tokenRequest)) { $oCriteria->addCondition('t.token = ' . Yii::app()->db->quoteValue($tokenRequest)); } $oCriteria->order = 'id ' . ($order == 'desc' ? 'desc' : 'asc'); $oCriteria->offset = $start; $oCriteria->limit = $limit; $dtresult = SurveyDynamic::model($iSurveyID)->findAllAsArray($oCriteria); $dtcount2 = count($dtresult); $cells = $fncount + 1; // Fix start if order is desc, only if actual start is 0 if ($order == 'desc' && $start == 0) { $start = $dtcount - count($dtresult); } //CONTROL MENUBAR $last = $start - $limit; $next = $start + $limit; $end = $dtcount - $limit; if ($end < 0) { $end = 0; } if ($last < 0) { $last = 0; } if ($next >= $dtcount) { $next = $dtcount - $limit; } if ($end < 0) { $end = 0; } $aData['dtcount2'] = $dtcount2; $aData['sCompletionStateValue'] = incompleteAnsFilterState(); $aData['start'] = $start; $aData['limit'] = $limit; $aData['last'] = $last; $aData['next'] = $next; $aData['end'] = $end; $aData['fncount'] = $fncount; $aData['fnames'] = $fnames; $aData['bHasFileUploadQuestion'] = hasFileUploadQuestion($iSurveyID); $aViewUrls[] = 'browseallheader_view'; $bgcc = 'even'; foreach ($dtresult as $dtrow) { if ($bgcc == "even") { $bgcc = "odd"; } else { $bgcc = "even"; } $aData['dtrow'] = $dtrow; $aData['bgcc'] = $bgcc; $aData['sBrowseLanguage'] = $sBrowseLanguage; $aViewUrls['browseallrow_view'][] = $aData; } $aViewUrls[] = 'browseallfooter_view'; $this->_renderWrappedTemplate('', $aViewUrls, $aData); } else { $aData['surveyid'] = $iSurveyID; $message['title'] = gT('Access denied!'); $message['message'] = gT('You do not have sufficient rights to access this page.'); $message['class'] = "error"; $this->_renderWrappedTemplate('survey', array("message" => $message), $aData); } }
function browse($iSurveyID) { $aData = $this->_getData($iSurveyID); extract($aData); $aViewUrls = array(); $oBrowseLanguage = new Limesurvey_lang($aData['language']); $tokenRequest = Yii::app()->request->getParam('token', null); //Delete Individual answer using inrow delete buttons/links - checked if (Yii::app()->request->getPost('deleteanswer') && Yii::app()->request->getPost('deleteanswer') != '' && Yii::app()->request->getPost('deleteanswer') != 'marked') { if (Permission::model()->hasSurveyPermission($iSurveyID, 'responses', 'delete')) { $iResponseID = (int) Yii::app()->request->getPost('deleteanswer'); // sanitize the value Response::model($iSurveyID)->findByPk($iResponseID)->delete(true); // delete timings if savetimings is set if ($aData['surveyinfo']['savetimings'] == "Y") { SurveyTimingDynamic::model($iSurveyID)->deleteByPk($iResponseID); } Yii::app()->session['flashmessage'] = sprintf(gT("Response ID %s was successfully deleted."), $iResponseID); } else { Yii::app()->session['flashmessage'] = gT("Access denied!", 'js'); } } // Marked responses -> deal with the whole batch of marked responses if (Yii::app()->request->getPost('markedresponses') && count(Yii::app()->request->getPost('markedresponses')) > 0) { // Delete the marked responses - checked if (Yii::app()->request->getPost('deleteanswer') && Yii::app()->request->getPost('deleteanswer') === 'marked') { if (Permission::model()->hasSurveyPermission($iSurveyID, 'responses', 'delete')) { foreach (Response::model($iSurveyID)->findAllByPk(Yii::app()->request->getPost('markedresponses')) as $response) { $response->deleteFiles(); // delete timings if savetimings is set /** * @todo Move this to the Response model. */ if ($aData['surveyinfo']['savetimings'] == "Y") { SurveyTimingDynamic::model($iSurveyID)->deleteByPk($iResponseID); } } Response::model($iSurveyID)->deleteByPk(Yii::app()->request->getPost('markedresponses')); Yii::app()->session['flashmessage'] = sprintf(ngT("%s response was successfully deleted.", "%s responses were successfully deleted.", count(Yii::app()->request->getPost('markedresponses'))), count(Yii::app()->request->getPost('markedresponses')), 'js'); } else { Yii::app()->session['flashmessage'] = $clang->gT("Access denied!", 'js'); } } elseif (Yii::app()->request->getPost('downloadfile') && Yii::app()->request->getPost('downloadfile') === 'marked') { if (Permission::model()->hasSurveyPermission($iSurveyID, 'responses', 'read')) { // Now, zip all the files in the filelist $zipfilename = "Responses_for_survey_{$iSurveyID}.zip"; $this->_zipFiles($iSurveyID, Yii::app()->request->getPost('markedresponses'), $zipfilename); } } } elseif (Yii::app()->request->getPost('downloadfile') && Yii::app()->request->getPost('downloadfile') != '' && Yii::app()->request->getPost('downloadfile') !== true) { if (Permission::model()->hasSurveyPermission($iSurveyID, 'responses', 'read')) { // Now, zip all the files in the filelist $zipfilename = "Files_for_responses_" . Yii::app()->request->getPost('downloadfile') . ".zip"; $this->_zipFiles($iSurveyID, Yii::app()->request->getPost('downloadfile'), $zipfilename); } } elseif (Yii::app()->request->getParam('downloadindividualfile') != '') { if (Permission::model()->hasSurveyPermission($iSurveyID, 'responses', 'read')) { $iId = (int) Yii::app()->request->getParam('id'); $downloadindividualfile = Yii::app()->request->getParam('downloadindividualfile'); $fieldname = Yii::app()->request->getParam('fieldname'); $oRow = SurveyDynamic::model($iSurveyID)->findByAttributes(array('id' => $iId)); $phparray = json_decode_ls($oRow->{$fieldname}); for ($i = 0; $i < count($phparray); $i++) { if (rawurldecode($phparray[$i]['name']) == rawurldecode($downloadindividualfile)) { $file = Yii::app()->getConfig('uploaddir') . "/surveys/" . $iSurveyID . "/files/" . $phparray[$i]['filename']; if (file_exists($file)) { @ob_clean(); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . rawurldecode($phparray[$i]['name']) . '"'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); readfile($file); exit; } else { Yii::app()->session['flashmessage'] = gT("The requested file does not exist on the server."); } break; } } } } /** * fnames is used as informational array * it containts * $fnames[] = array(<dbfieldname>, <some strange title>, <questiontext>, <group_id>, <questiontype>); */ if (Permission::model()->hasSurveyPermission($iSurveyID, 'responses', 'read')) { if (Yii::app()->request->getPost('sql')) { $aViewUrls[] = 'browseallfiltered_view'; } //add token to top of list if survey is not private if ($aData['surveyinfo']['anonymized'] == "N" && tableExists('tokens_' . $iSurveyID)) { if (Permission::model()->hasSurveyPermission($iSurveyID, 'tokens', 'read')) { $fnames[] = array("token", $clang->gT("Token ID"), 'code' => 'token'); $fnames[] = array("firstname", $clang->gT("First name"), 'code' => 'firstname'); // or token:firstname ? $fnames[] = array("lastname", $clang->gT("Last name"), 'code' => 'lastname'); $fnames[] = array("email", $clang->gT("Email"), 'code' => 'email'); } } $fnames[] = array("submitdate", $clang->gT("Completed"), $clang->gT("Completed"), "0", 'D'); $fields = createFieldMap($iSurveyID, 'full', false, false, $aData['language']); foreach ($fields as $fielddetails) { if ($fielddetails['fieldname'] == 'lastpage' || $fielddetails['fieldname'] == 'submitdate') { continue; } $question = $fielddetails['question']; if ($fielddetails['type'] != "|") { if ($fielddetails['fieldname'] == 'lastpage' || $fielddetails['fieldname'] == 'submitdate' || $fielddetails['fieldname'] == 'token') { continue; } // no headers for time data if ($fielddetails['type'] == 'interview_time') { continue; } if ($fielddetails['type'] == 'page_time') { continue; } if ($fielddetails['type'] == 'answer_time') { continue; } $fnames[] = array($fielddetails['fieldname'], viewHelper::getFieldText($fielddetails), 'code' => viewHelper::getFieldCode($fielddetails, array('LEMcompat' => true))); } elseif ($fielddetails['aid'] !== 'filecount') { $qidattributes = getQuestionAttributeValues($fielddetails['qid']); for ($i = 0; $i < $qidattributes['max_num_of_files']; $i++) { $filenum = sprintf($clang->gT("File %s"), $i + 1); if ($qidattributes['show_title'] == 1) { $fnames[] = array($fielddetails['fieldname'], "{$filenum} - {$question} (" . $clang->gT('Title') . ")", 'code' => viewHelper::getFieldCode($fielddetails) . '(title)', "type" => "|", "metadata" => "title", "index" => $i); } if ($qidattributes['show_comment'] == 1) { $fnames[] = array($fielddetails['fieldname'], "{$filenum} - {$question} (" . $clang->gT('Comment') . ")", 'code' => viewHelper::getFieldCode($fielddetails) . '(comment)', "type" => "|", "metadata" => "comment", "index" => $i); } $fnames[] = array($fielddetails['fieldname'], "{$filenum} - {$question} (" . $clang->gT('File name') . ")", 'code' => viewHelper::getFieldCode($fielddetails) . '(name)', "type" => "|", "metadata" => "name", "index" => $i); $fnames[] = array($fielddetails['fieldname'], "{$filenum} - {$question} (" . $clang->gT('File size') . ")", 'code' => viewHelper::getFieldCode($fielddetails) . '(size)', "type" => "|", "metadata" => "size", "index" => $i); //$fnames[] = array($fielddetails['fieldname'], "File ".($i+1)." - ".$fielddetails['question']."(extension)", "type"=>"|", "metadata"=>"ext", "index"=>$i); } } else { $fnames[] = array($fielddetails['fieldname'], $clang->gT("File count"), 'code' => viewHelper::getFieldCode($fielddetails)); } } $fncount = count($fnames); $start = (int) Yii::app()->request->getParam('start', 0); $limit = (int) Yii::app()->request->getParam('limit', 50); $order = Yii::app()->request->getParam('order', 'asc'); if (!$limit) { $limit = 50; } $oCriteria = new CDbCriteria(); //Create the query if ($aData['surveyinfo']['anonymized'] == "N" && tableExists("{{tokens_{$iSurveyID}}}") && Permission::model()->hasSurveyPermission($iSurveyID, 'tokens', 'read')) { $oCriteria = SurveyDynamic::model($iSurveyID)->addTokenCriteria($oCriteria); } if (incompleteAnsFilterState() == "incomplete") { $oCriteria->addCondition("submitdate IS NULL"); } elseif (incompleteAnsFilterState() == "complete") { $oCriteria->addCondition("submitdate IS NOT NULL"); } $dtcount = SurveyDynamic::model($iSurveyID)->count($oCriteria); // or die("Couldn't get response data<br />"); if ($limit > $dtcount) { $limit = $dtcount; } //NOW LETS SHOW THE DATA if (Yii::app()->request->getPost('sql') && stripcslashes(Yii::app()->request->getPost('sql')) !== "" && Yii::app()->request->getPost('sql') != "NULL") { $oCriteria->addCondition(stripcslashes(Yii::app()->request->getPost('sql'))); } if (!is_null($tokenRequest)) { $oCriteria->addCondition('t.token = ' . Yii::app()->db->quoteValue($tokenRequest)); } $oCriteria->order = 'id ' . ($order == 'desc' ? 'desc' : 'asc'); $oCriteria->offset = $start; $oCriteria->limit = $limit; $dtresult = SurveyDynamic::model($iSurveyID)->findAllAsArray($oCriteria); $dtcount2 = count($dtresult); $cells = $fncount + 1; // Fix start if order is desc, only if actual start is 0 if ($order == 'desc' && $start == 0) { $start = $dtcount - count($dtresult); } //CONTROL MENUBAR $last = $start - $limit; $next = $start + $limit; $end = $dtcount - $limit; if ($end < 0) { $end = 0; } if ($last < 0) { $last = 0; } if ($next >= $dtcount) { $next = $dtcount - $limit; } if ($end < 0) { $end = 0; } $aData['dtcount2'] = $dtcount2; $aData['sCompletionStateValue'] = incompleteAnsFilterState(); $aData['start'] = $start; $aData['limit'] = $limit; $aData['last'] = $last; $aData['next'] = $next; $aData['end'] = $end; $aData['fncount'] = $fncount; $aData['fnames'] = $fnames; $aData['bHasFileUploadQuestion'] = hasFileUploadQuestion($iSurveyID); $aViewUrls[] = 'browseallheader_view'; $bgcc = 'even'; foreach ($dtresult as $dtrow) { if ($bgcc == "even") { $bgcc = "odd"; } else { $bgcc = "even"; } $aData['dtrow'] = $dtrow; $aData['bgcc'] = $bgcc; $aData['oBrowseLanguage'] = $oBrowseLanguage; $aViewUrls['browseallrow_view'][] = $aData; } $aViewUrls[] = 'browseallfooter_view'; $this->_renderWrappedTemplate('', $aViewUrls, $aData); } else { $clang = $this->getController()->lang; $aData['surveyid'] = $iSurveyID; App()->getClientScript()->registerPackage('jquery-superfish'); $message['title'] = $clang->gT('Access denied!'); $message['message'] = $clang->gT('You do not have sufficient rights to access this page.'); $message['class'] = "error"; $this->_renderWrappedTemplate('survey', array("message" => $message), $aData); } }
public function getButtons() { $sViewUrl = App()->createUrl("/admin/responses/sa/view/surveyid/" . self::$sid . "/id/" . $this->id); $sEditUrl = App()->createUrl("admin/dataentry/sa/editdata/subaction/edit/surveyid/" . self::$sid . "/id/" . $this->id); $sDownloadUrl = App()->createUrl("admin/responses", array("sa" => "actionDownloadfiles", "surveyid" => self::$sid, "sResponseId" => $this->id)); $sDeleteUrl = App()->createUrl("admin/responses", array("sa" => "actionDelete", "surveyid" => self::$sid)); //$sDeleteUrl = "#"; $button = ""; // View detail icon $button .= '<a class="btn btn-default btn-xs" href="' . $sViewUrl . '" target="_blank" role="button" data-toggle="tooltip" title="' . gT("View response details") . '"><span class="glyphicon glyphicon-list-alt" ></span></a>'; // Edit icon if (Permission::model()->hasSurveyPermission(self::$sid, 'responses', 'update')) { $button .= '<a class="btn btn-default btn-xs" href="' . $sEditUrl . '" target="_blank" role="button" data-toggle="tooltip" title="' . gT("Edit this response") . '"><span class="glyphicon glyphicon-pencil text-success" ></span></a>'; } // Download icon if (hasFileUploadQuestion(self::$sid)) { if (Response::model(self::$sid)->findByPk($this->id)->getFiles()) { $button .= '<a class="btn btn-default btn-xs" href="' . $sDownloadUrl . '" target="_blank" role="button" data-toggle="tooltip" title="' . gT("Download all files in this response as a zip file") . '"><span class="glyphicon glyphicon-download-alt downloadfile text-success" ></span></a>'; } } // Delete icon if (Permission::model()->hasSurveyPermission(self::$sid, 'responses', 'delete')) { $aPostDatas = json_encode(array('sResponseId' => $this->id)); //$button .= '<a class="deleteresponse btn btn-default btn-xs" href="'.$sDeleteUrl.'" role="button" data-toggle="modal" data-ajax="true" data-post="'.$aPostDatas.'" data-target="#confirmation-modal" data-tooltip="true" title="'. sprintf(gT('Delete response %s'),$this->id).'"><span class="glyphicon glyphicon-trash text-danger" ></span></a>'; $button .= "<a class='deleteresponse btn btn-default btn-xs' data-ajax-url='" . $sDeleteUrl . "' data-gridid='responses-grid' role='button' data-toggle='modal' data-post='" . $aPostDatas . "' data-target='#confirmation-modal' data-tooltip='true' title='" . sprintf(gT('Delete response %s'), $this->id) . "'><span class='glyphicon glyphicon-trash text-danger' ></span></a>"; } return $button; }
/** * Show responses for survey * * @param int $iSurveyId * @return void */ public function browse($iSurveyId) { if (Permission::model()->hasSurveyPermission($iSurveyId, 'responses', 'read')) { $this->registerScriptFile('ADMIN_SCRIPT_PATH', 'listresponse.js'); $this->registerScriptFile('ADMIN_SCRIPT_PATH', 'tokens.js'); // Basic datas for the view $aData = $this->_getData($iSurveyId); $aData['surveyid'] = $iSurveyId; $aData['menu']['edition'] = false; $aData['sidemenu']['state'] = false; $aData['issuperadmin'] = Permission::model()->hasGlobalPermission('superadmin'); $aData['hasUpload'] = hasFileUploadQuestion($iSurveyId); $aData['fieldmap'] = createFieldMap($iSurveyId, 'full', true, false, $aData['language']); $aData['dateformatdetails'] = getDateFormatData(Yii::app()->session['dateformat']); //////////////////// // Setting the grid // Basic variables $bHaveToken = $aData['surveyinfo']['anonymized'] == "N" && tableExists('tokens_' . $iSurveyId) && Permission::model()->hasSurveyPermission($iSurveyId, 'tokens', 'read'); // Boolean : show (or not) the token $aViewUrls = array('listResponses_view'); $model = SurveyDynamic::model($iSurveyId); // Page size if (Yii::app()->request->getParam('pageSize')) { Yii::app()->user->setState('pageSize', (int) Yii::app()->request->getParam('pageSize')); } // Model filters // Using safe search on dynamic column names would be far too much complex. // So we pass over the safe validation and directly set attributes (second parameter of setAttributes to false). // see: http://www.yiiframework.com/wiki/161/understanding-safe-validation-rules/ // see: http://www.yiiframework.com/doc/api/1.1/CModel#setAttributes-detail if (Yii::app()->request->getParam('SurveyDynamic')) { $model->setAttributes(Yii::app()->request->getParam('SurveyDynamic'), false); } // Virtual attributes filters // Filters on related tables need virtual filters attributes in main model (class variables) // Those virtual filters attributes are not set by the setAttributes, they must be set manually // @see: http://www.yiiframework.com/wiki/281/searching-and-sorting-by-related-model-in-cgridview/ $aVirtualFilters = array('completed_filter', 'firstname_filter', 'lastname_filter', 'email_filter'); foreach ($aVirtualFilters as $sFilterName) { $aParam = Yii::app()->request->getParam('SurveyDynamic'); if (!empty($aParam[$sFilterName])) { $model->{$sFilterName} = $aParam[$sFilterName]; } } // rendering $aData['model'] = $model; $aData['bHaveToken'] = $bHaveToken; $aData['aDefaultColumns'] = $model->defaultColumns; // Some specific columns $aData['pageSize'] = Yii::app()->user->getState('pageSize', Yii::app()->params['defaultPageSize']); // Page size $this->_renderWrappedTemplate('responses', $aViewUrls, $aData); } else { Yii::app()->setFlashMessage(gT("You do not have permission to access this page."), 'error'); $this->getController()->redirect(array('admin/survey', 'sa' => 'view', 'surveyid' => $iSurveyId)); } }
{ $currentgroup = $fn[1]; if ($gbc == "odd") { $gbc = "even"; } else { $gbc = "odd"; } } ?> <th class='<?php echo $gbc; ?>'> <strong><?php echo flattenText(stripJavaScript($fn[1]), true); ?></strong> </th> <?php } ?> </tr> </thead> <tfoot> <tr> <td colspan=<?php echo $fncount + 2; ?>> <?php if (hasSurveyPermission($iSurveyId, 'responses', 'delete')) { ?> <img id='imgDeleteMarkedResponses' src='<?php echo $sImageURL; ?>token_delete.png' alt='<?php $clang->eT('Delete marked responses'); ?>' /> <?php } ?> <?php if (hasFileUploadQuestion($iSurveyId)) { ?> <img id='imgDownloadMarkedFiles' src='<?php echo $sImageURL; ?>down_all.png' alt='<?php $clang->eT('Download marked files'); ?>' /> <?php } ?> </td> </tr> </tfoot>