function showtypeAction() { $this->_helper->layout->disableLayout(); $a_array = array(7130 => 1, 7156 => 1, 5813 => 1, 7169 => 1, 7170 => 1, 7171 => 1, 7172 => 1, 7228 => 1, 7246 => 1); $b_array = array(7128 => 1, 7140 => 1, 7141 => 1, 7151 => -2, 7152 => -1, 7153 => 0, 7154 => 1, 7155 => 2); $c_array = array(7158 => 1, 5815 => 1, 5816 => 1, 5817 => 1); $d_array = array(7246 => 1, 7177 => 3, 7205 => 1, 7228 => 1); $e_array = array(7133 => 1, 7181 => 1, 7182 => 1, 7188 => 1, 7189 => 1, 7190 => 1, 7191 => 1, 7192 => 1, 7193 => 1, 7199 => 1, 7200 => 1, 7201 => 1, 7202 => 1, 7203 => 1, 7204 => 1); $f_array = array(7209 => 2, 7210 => 1, 7215 => 2, 7216 => 1, 7233 => 1); $score_array = array('A' => 0, 'B' => 0, 'C' => 0, 'D' => 0, 'E' => 0, 'F' => 0); $accessCode = $this->_request->getParam('accessCode'); $indicate2Connect = new Indicate2_Connect(); $response = $indicate2Connect->getAnswerSetForAccessCode(array($accessCode)); if (isset($response->AnswerSetType)) { if (isset($response->AnswerSetType->AnswerType)) { if (is_array($response->AnswerSetType->AnswerType)) { foreach ($response->AnswerSetType->AnswerType as $answer) { if (is_array($answer->AnswerText)) { foreach ($answer->AnswerText as $answerText) { $key = base64_decode($answerText); if (is_numeric($key)) { $this->calculate_score(&$score_array, $key, $a_array, 'A'); $this->calculate_score(&$score_array, $key, $b_array, 'B'); $this->calculate_score(&$score_array, $key, $c_array, 'C'); $this->calculate_score(&$score_array, $key, $d_array, 'D'); $this->calculate_score(&$score_array, $key, $e_array, 'E'); $this->calculate_score(&$score_array, $key, $f_array, 'F'); } } } else { $key = base64_decode($answer->AnswerText); if (is_numeric($key)) { $this->calculate_score(&$score_array, $key, $a_array, 'A'); $this->calculate_score(&$score_array, $key, $b_array, 'B'); $this->calculate_score(&$score_array, $key, $c_array, 'C'); $this->calculate_score(&$score_array, $key, $d_array, 'D'); $this->calculate_score(&$score_array, $key, $e_array, 'E'); $this->calculate_score(&$score_array, $key, $f_array, 'F'); } } } } } } else { } $max = 0; foreach ($score_array as $key => $value) { if ($value > $max) { $max = $value; } } if ($max < 3) { $this->view->type = 'C'; } else { $this->view->type = array_search($max, $score_array); } $this->view->accessCode = $accessCode; }
public function test2Action() { //post if ($this->_request->isPost()) { $formData = $this->_request->getPost(); $accessCodeList = array(); // get access code from post if (isset($formData['accessCode'])) { $accessCodeList = preg_split('/[;\\s]+[\\n\\r\\t]*/', trim($formData['accessCode'])); } else { // get accesscode from campaign $db = Zend_Registry::get('db'); $selectAccessCode = $db->select(); $selectAccessCode->from('report', array('accesscode', 'create_date'))->joinLeft('reward_point_transaction_record', 'report.reward_point_transaction_record_id = reward_point_transaction_record.id', 'point_amount')->where('report.campaign_id = ?', $formData['campaign_id'])->limit(0); $reportInforArray = array(); $accessCodeArray = $db->fetchAll($selectAccessCode); foreach ($accessCodeArray as $accessCode) { array_push($accessCodeList, $accessCode['accesscode']); $reportInforArray[$accessCode['accesscode']]['createdate'] = $accessCode['create_date']; $reportInforArray[$accessCode['accesscode']]['point'] = $accessCode['point_amount']; } // get reply for report $selectReportReply = $db->select(); $selectReportReply->from('report', 'accesscode')->joinLeft('reply', 'report.id = reply.report_id', 'content')->where('reply.campaign_id = ?', $formData['campaign_id'])->limit(0); $reportReplyArray = $db->fetchAll($selectReportReply); foreach ($reportReplyArray as $reply) { $reportInforArray[$reply['accesscode']]['reply'] = $reply['content']; } } $this->view->reportExtraInfoArray = $reportInforArray; // get reports $indicate2Connect = new Indicate2_Connect(); $response = $indicate2Connect->getAnswerSetForAccessCode($accessCodeList); $this->view->surveyQuestionArray = $response->QuestionType; $this->view->surveyArray = $response->AnswerSetType; // Zend_Debug::dump($response); $this->_helper->layout->disableLayout(); } }
public function admindownloadreportAction() { ini_set('display_errors', 1); $frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions(true); $this->_helper->layout->disableLayout(); $reportInforArray = array(); //post if ($this->_request->isPost()) { $formData = $this->_request->getPost(); $accessCodeList = array(); // get access code from post if (isset($formData['accessCode'])) { $accessCodeArray = preg_split('/[;\\s]+[\\n\\r\\t]*/', trim($formData['accessCode'])); $accessCodeString = ''; foreach ($accessCodeArray as $accessCode) { $accessCodeString .= "'" . $accessCode . "',"; } // get accesscode from campaign $db = Zend_Registry::get('db'); $selectAccessCode = $db->select(); $selectAccessCode->from('report', array('consumer_id', 'accesscode', 'create_date', 'source'))->joinLeft('reward_point_transaction_record', 'report.reward_point_transaction_record_id = reward_point_transaction_record.id', 'point_amount')->join('consumer', 'consumer.id = report.consumer_id', array('email,login_phone,phone,recipients_name'))->where('report.accesscode in (' . substr($accessCodeString, 0, strlen($accessCodeString) - 1) . ")")->where("report.state = 'APPROVED'")->order(" create_date desc ")->limit(0); $accessCodeArray = $db->fetchAll($selectAccessCode); foreach ($accessCodeArray as $accessCode) { array_push($accessCodeList, $accessCode['accesscode']); $reportInforArray[$accessCode['accesscode']]['consumer_id'] = $accessCode['consumer_id']; $reportInforArray[$accessCode['accesscode']]['email'] = $accessCode['email']; $reportInforArray[$accessCode['accesscode']]['login_phone'] = $accessCode['login_phone']; $reportInforArray[$accessCode['accesscode']]['phone'] = $accessCode['phone']; $reportInforArray[$accessCode['accesscode']]['recipients_name'] = $accessCode['recipients_name']; $reportInforArray[$accessCode['accesscode']]['createdate'] = $accessCode['create_date']; $reportInforArray[$accessCode['accesscode']]['source'] = $accessCode['source']; $reportInforArray[$accessCode['accesscode']]['point'] = $accessCode['point_amount']; $reportInforArray[$accessCode['accesscode']]['reply'] = ''; } // get reply for report $selectReportReply = $db->select(); $selectReportReply->from('report', 'accesscode')->joinLeft('reply', 'report.id = reply.report_id', 'content')->where('report.accesscode in (' . substr($accessCodeString, 0, strlen($accessCodeString) - 1) . ")")->limit(0); $reportReplyArray = $db->fetchAll($selectReportReply); foreach ($reportReplyArray as $reply) { $reportInforArray[$reply['accesscode']]['reply'] = $reply['content']; } // get tag for report $selectAllTag = $db->select(); $selectAllTag->from('tags', array('id', 'name'))->where("tags.module ='REPORT'"); $allTagArray = $db->fetchAll($selectAllTag); $selectReportTag = $db->select(); $selectReportTag->from('report', 'accesscode')->join('report_tag', 'report.id = report_tag.report_id', null)->join('tags', 'tags.id = report_tag.tag_id', 'name')->where('report.accesscode in (' . substr($accessCodeString, 0, strlen($accessCodeString) - 1) . ")")->limit(0); $reportTag = $db->fetchAll($selectReportTag); $reportTagArray = array(); foreach ($reportTag as $tag) { $reportTagArray[$tag['accesscode']][$tag['name']] = 1; } // get reports from ws $indicate2Connect = new Indicate2_Connect(); $response = $indicate2Connect->getAnswerSetForAccessCode($accessCodeList); } else { // get survey_id for campaign $campaignModel = new Campaign(); $campaign = $campaignModel->fetchRow('id = ' . $formData['campaign_id']); switch ($formData['submittype']) { case 'pre_campaign': $survey_id = $campaign['pre_campaign_survey']; if ($formData['campaign_language'] == 'en') { $survey_id = $campaign['pre_campaign_survey_en']; } $accessCodeList = null; break; case 'post_campaign': $survey_id = $campaign['post_campaign_survey']; if ($formData['campaign_language'] == 'en') { $survey_id = $campaign['post_campaign_survey_en']; } $accessCodeList = null; break; // get reports // get reports default: $survey_id = $campaign['i2_survey_id']; if ($formData['campaign_language'] == 'en') { $survey_id = $campaign['i2_survey_id_en']; } // get accesscode from campaign $db = Zend_Registry::get('db'); $selectAccessCode = $db->select(); $selectAccessCode->from('report', array('consumer_id', 'accesscode', 'create_date', 'source'))->joinLeft('reward_point_transaction_record', 'report.reward_point_transaction_record_id = reward_point_transaction_record.id', 'point_amount')->join('consumer', 'consumer.id = report.consumer_id', array('email', 'login_phone', 'phone', 'recipients_name'))->where('report.campaign_id = ?', $formData['campaign_id'])->where("report.state = 'APPROVED'")->order("create_date desc")->limit(0); $accessCodeArray = $db->fetchAll($selectAccessCode); foreach ($accessCodeArray as $accessCode) { array_push($accessCodeList, $accessCode['accesscode']); $reportInforArray[$accessCode['accesscode']]['consumer_id'] = $accessCode['consumer_id']; $reportInforArray[$accessCode['accesscode']]['email'] = $accessCode['email']; $reportInforArray[$accessCode['accesscode']]['login_phone'] = $accessCode['login_phone']; $reportInforArray[$accessCode['accesscode']]['phone'] = $accessCode['phone']; $reportInforArray[$accessCode['accesscode']]['recipients_name'] = $accessCode['recipients_name']; $reportInforArray[$accessCode['accesscode']]['createdate'] = $accessCode['create_date']; $reportInforArray[$accessCode['accesscode']]['source'] = $accessCode['source']; $reportInforArray[$accessCode['accesscode']]['point'] = $accessCode['point_amount']; $reportInforArray[$accessCode['accesscode']]['reply'] = ''; } // get reply for report $selectReportReply = $db->select(); $selectReportReply->from('report', 'accesscode')->joinLeft('reply', 'report.id = reply.report_id', 'content')->where('reply.campaign_id = ?', $formData['campaign_id'])->limit(0); $reportReplyArray = $db->fetchAll($selectReportReply); foreach ($reportReplyArray as $reply) { $reportInforArray[$reply['accesscode']]['reply'] = $reply['content']; } // get tag for report $selectAllTag = $db->select(); $selectAllTag->from('tags', array('id', 'name'))->where("tags.module ='REPORT'")->where('tags.campaign_id is null or tags.campaign_id =' . $formData['campaign_id']); $allTagArray = $db->fetchAll($selectAllTag); $selectReportTag = $db->select(); $selectReportTag->from('report', 'accesscode')->join('report_tag', 'report.id = report_tag.report_id', null)->join('tags', 'tags.id = report_tag.tag_id', 'name')->where('report.campaign_id = ?', $formData['campaign_id'])->limit(0); $reportTag = $db->fetchAll($selectReportTag); $reportTagArray = array(); foreach ($reportTag as $tag) { $reportTagArray[$tag['accesscode']][$tag['name']] = 1; } break; } // get reports from ws $indicate2Connect = new Indicate2_Connect(); $response = $indicate2Connect->getAnswerSetForSurvey($survey_id, $accessCodeList, null, 0); } $this->view->reportExtraInfoArray = $reportInforArray; $this->view->surveyQuestionArray = $response->QuestionType; $this->view->surveyArray = $response->AnswerSetType; //Zend_Debug::dump($response); //die; // create phpexcel obj. require_once 'PHPExcel.php'; require_once 'PHPExcel/IOFactory.php'; require_once 'PHPExcel/Writer/Excel5.php'; $objPHPExcel = new PHPExcel(); $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")->setLastModifiedBy("Maarten Balliauw")->setTitle("Office 2007 XLSX Test Document")->setSubject("Office 2007 XLSX Test Document")->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")->setKeywords("office 2007 openxml php")->setCategory("Test result file"); $styleThinBrownBorderOutline = array('borders' => array('outline' => array('style' => PHPExcel_Style_Border::BORDER_THICK, 'color' => array('argb' => 'FFB2A1C7')))); $objPHPExcel->setActiveSheetIndex(0); $objActSheet = $objPHPExcel->getActiveSheet(); // create an excel column name Array: from A - DZ, you can enlarge this array if you need $baseColumnNameArray = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'); $columnNameArray = array(); $i = 0; while ($i < 26 * 9) { if ($i < 26) { array_push($columnNameArray, $baseColumnNameArray[$i]); } else { array_push($columnNameArray, $baseColumnNameArray[$i / 26 - 1] . $baseColumnNameArray[$i % 26]); } $i++; } $columnNumber = 0; $tag = array(); $i = -1; // print excel file // print line 1: mainly include Accesscode,questions... $objActSheet->setCellValue($columnNameArray[$columnNumber] . "1", "AccessCode"); $objActSheet->getStyle($columnNameArray[$columnNumber] . "1")->applyFromArray($styleThinBrownBorderOutline); $objActSheet->getColumnDimension($columnNameArray[$columnNumber++])->setWidth(20); foreach ($this->view->surveyQuestionArray as $surveyQuestion) { $mergeStart = $columnNameArray[$columnNumber]; $objActSheet->setCellValue($columnNameArray[$columnNumber++] . "1", $surveyQuestion->QuestionText); if (isset($surveyQuestion->SelectionQuestionOptionType) && is_array($surveyQuestion->SelectionQuestionOptionType) && !empty($surveyQuestion->SelectionQuestionOptionType)) { for ($temp = 0; $temp < count($surveyQuestion->SelectionQuestionOptionType) - 1; $temp++) { $objActSheet->setCellValue($columnNameArray[$columnNumber++] . "1", " "); } $mergeEnd = $columnNameArray[$columnNumber - 1]; $objActSheet->mergeCells($mergeStart . '1:' . $mergeEnd . '1'); $objActSheet->getStyle($mergeStart . '1:' . $mergeEnd . '1')->applyFromArray($styleThinBrownBorderOutline); } else { $objActSheet->getStyle($mergeStart . "1")->applyFromArray($styleThinBrownBorderOutline); $objActSheet->getColumnDimension($mergeStart)->setWidth(50); } } // print line 2: mainly include accesscode,options of questions,user info,tag names... $columnNumber = 0; $textQuestionArray = array(); $objActSheet->setCellValue($columnNameArray[$columnNumber++] . "2", "AccessCode"); foreach ($this->view->surveyQuestionArray as $surveyQuestion) { if (isset($surveyQuestion->SelectionQuestionOptionType) && is_array($surveyQuestion->SelectionQuestionOptionType) && !empty($surveyQuestion->SelectionQuestionOptionType)) { foreach ($surveyQuestion->SelectionQuestionOptionType as $selectionQuestionOptionTypeTemp) { $objActSheet->setCellValue($columnNameArray[$columnNumber++] . "2", $selectionQuestionOptionTypeTemp->OptionText); $tag[++$i] = $selectionQuestionOptionTypeTemp->OptionId; } } else { $objActSheet->setCellValue($columnNameArray[$columnNumber++] . "2", $surveyQuestion->QuestionText); $tag[++$i] = $surveyQuestion->QuestionId; $textQuestionArray[$surveyQuestion->QuestionId] = 1; } } if ($formData['submittype'] == 'report') { $objActSheet->setCellValue($columnNameArray[$columnNumber++] . "2", "ConsumerId"); $objActSheet->setCellValue($columnNameArray[$columnNumber++] . "2", "ConsumerEmail"); //TOCHECK $objActSheet->setCellValue($columnNameArray[$columnNumber++] . "2", "login_phone"); $objActSheet->setCellValue($columnNameArray[$columnNumber++] . "2", "phone"); $objActSheet->setCellValue($columnNameArray[$columnNumber++] . "2", "recipients_name"); $objActSheet->setCellValue($columnNameArray[$columnNumber++] . "2", "Create_date"); $objActSheet->setCellValue($columnNameArray[$columnNumber++] . "2", "Source"); $objActSheet->setCellValue($columnNameArray[$columnNumber++] . "2", "Point"); $objActSheet->setCellValue($columnNameArray[$columnNumber] . "2", "Reply"); $objActSheet->getColumnDimension($columnNameArray[$columnNumber++])->setWidth(50); $objActSheet->setCellValue($columnNameArray[$columnNumber++] . "2", " "); foreach ($allTagArray as $tagName) { $objActSheet->setCellValue($columnNameArray[$columnNumber++] . "2", $tagName['name']); } } // print line 3~X: include answers from ws, user info, tag values... $lineNumber = 3; if (isset($this->view->surveyArray) && is_array($this->view->surveyArray) && !empty($this->view->surveyArray)) { // if get more than one surveys from ws foreach ($this->view->surveyArray as $surveys) { $columnNumber = 0; $temp = array(); $objActSheet->setCellValue($columnNameArray[$columnNumber++] . $lineNumber, $surveys->AccessCode); // more than one answer in the survey if (isset($surveys->AnswerType) && is_array($surveys->AnswerType) && !empty($surveys->AnswerType)) { foreach ($surveys->AnswerType as $question) { if (isset($question->AnswerText) && is_array($question->AnswerText) && !empty($question->AnswerText)) { foreach ($question->AnswerText as $text) { $temp[$text] = "1"; } } else { $decodeValue = base64_decode($question->AnswerText); if (array_key_exists($question->QuestionId, $textQuestionArray)) { if (isset($question->AnswerText)) { $temp[$question->QuestionId] = $decodeValue; } } else { $temp[$decodeValue] = "1"; } } } } else { // only one answer in the survey if (isset($surveys->AnswerType->AnswerText) && is_array($surveys->AnswerType->AnswerText) && !empty($surveys->AnswerType->AnswerText)) { foreach ($surveys->AnswerType->AnswerText as $text) { $temp[$text] = "1"; } } else { $decodeValue = base64_decode($surveys->AnswerType->AnswerText); if (array_key_exists($surveys->AnswerType->QuestionId, $textQuestionArray)) { $temp[$surveys->AnswerType->QuestionId] = isset($surveys->AnswerType->AnswerText) ? $decodeValue : ""; } else { $temp[$decodeValue] = "1"; } } } // print answers from ws for ($i = 0; $i < count($tag); $i++) { if (isset($temp[$tag[$i]])) { if ($temp[$tag[$i]] == "1" || $temp[$tag[$i]] == "0") { $objActSheet->setCellValue($columnNameArray[$columnNumber] . $lineNumber, $temp[$tag[$i]]); } else { $objActSheet->setCellValue($columnNameArray[$columnNumber] . $lineNumber, "\"" . $temp[$tag[$i]] . "\""); } //Zend_Debug::dump($i); //Zend_Debug::dump($temp[$tag[$i]]); //Zend_Debug::dump("\"".$temp[$tag[$i]]."\""); } $columnNumber++; } //die; // print user extra info foreach ($this->view->reportExtraInfoArray[$surveys->AccessCode] as $reportExtraInfo) { if (isset($reportExtraInfo)) { $objActSheet->setCellValue($columnNameArray[$columnNumber] . $lineNumber, $reportExtraInfo); } $columnNumber++; } // if it is report, print tags $objActSheet->setCellValue($columnNameArray[$columnNumber++] . $lineNumber, " "); if ($formData['submittype'] == 'report') { foreach ($allTagArray as $tagName) { if (isset($reportTagArray[$surveys->AccessCode][$tagName['name']])) { $objActSheet->setCellValue($columnNameArray[$columnNumber] . $lineNumber, "1"); } $columnNumber++; } } $lineNumber++; } } else { // if get only one survey from ws $columnNumber = 0; $survey = $this->view->surveyArray; $objActSheet->setCellValue($columnNameArray[$columnNumber++] . $lineNumber, $surveys->AccessCode); // more than one answer in the survey if (isset($survey->AnswerType) && is_array($survey->AnswerType) && !empty($survey->AnswerType)) { foreach ($survey->AnswerType as $question) { if (isset($question->AnswerText) && is_array($question->AnswerText) && !empty($question->AnswerText)) { foreach ($question->AnswerText as $text) { $temp[$text] = "1"; } } else { if (array_key_exists($question->QuestionId, $textQuestionArray)) { $decodeValue = preg_replace('/[\\n\\r\\t]/', ' ', base64_decode($question->AnswerText)); $temp[$question->QuestionId] = isset($question->AnswerText) ? $decodeValue : ""; } else { $temp[$decodeValue] = "1"; } } } } else { // only one answer in the survey if (isset($survey->AnswerType->AnswerText) && is_array($survey->AnswerType->AnswerText) && !empty($survey->AnswerType->AnswerText)) { foreach ($surveys->AnswerType->AnswerText as $text) { $temp[$text] = "1"; } } else { if (array_key_exists($surveys->AnswerType->QuestionId, $textQuestionArray)) { $decodeValue = preg_replace('/[\\n\\r\\t]/', ' ', base64_decode($surveys->AnswerType->AnswerText)); $temp[$surveys->AnswerType->QuestionId] = isset($surveys->AnswerType->AnswerText) ? $decodeValue : ""; } else { $temp[$decodeValue] = "1"; } } } // print answers from ws for ($i = 0; $i < count($tag); $i++) { if (isset($temp[$tag[$i]])) { $objActSheet->setCellValue($columnNameArray[$columnNumber] . $lineNumber, "\"" . $temp[$tag[$i]] . "\""); } $columnNumber++; } // print extra info foreach ($this->view->reportExtraInfoArray[$surveys->AccessCode] as $reportExtraInfo) { if (isset($reportExtraInfo)) { $objActSheet->setCellValue($columnNameArray[$columnNumber] . $lineNumber, $reportExtraInfo); } $columnNumber++; } // if it is report, print tags $objActSheet->setCellValue($columnNameArray[$columnNumber++] . $lineNumber, " "); if ($formData['submittype'] == 'report') { foreach ($allTagArray as $tagName) { if (isset($reportTagArray[$surveys->AccessCode][$tagName['name']])) { $objActSheet->setCellValue($columnNameArray[$columnNumber] . $lineNumber, "1"); } $columnNumber++; } } } // download... $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); header("Content-Type:application/force-download"); header("Content-Type:application/vnd.ms-execl"); header("Content-Type:application/octet-stream"); header("Content-Type:application/download"); header('Content-Disposition:attachment;filename="report.xlsx"'); header("Content-Transfer-Encoding:binary"); $objWriter->save('php://output'); } }