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'); } }
function indexAction() { // $this->_helper->layout->disableLayout(); // $login = "******"; // $password = "******"; // include_once 'sina.php'; // $resultarray = get_sinacontacts($login, $password); // Zend_Debug::dump($resultarray); // include_once '163.php'; // $login = '******'; // $password = '******'; // $resultarray = get_163contacts($login, $password); // Zend_Debug::dump($resultarray); // include_once 'yahoo.php'; // $obj = new GrabYahoo(); // $contacts = $obj->getAddressbook('*****@*****.**','19990402'); // Zend_Debug::dump($contacts); // include_once "contacts_fn.php"; // $ret_array = get_msncontacts('*****@*****.**', '1999040211'); // Zend_Debug::dump($ret_array); // $this->_helper->layout->setLayout("layout_admin"); $this->_helper->layout->disableLayout(); // get date from db $db = Zend_Registry::get('db'); $select = $db->select(); $select->from('report', array('left(create_date,10) as date', 'accesscode'))->where('report.campaign_id = 3')->where("report.state = 'APPROVED'")->order('date'); $results = $db->fetchAll($select); $accesscodeDbMatchArray = array(); foreach ($results as $result) { $accesscodeDbMatchArray[$result['accesscode']] = $result['date']; } $accesscodeArray = array_keys($accesscodeDbMatchArray); // Zend_Debug::Dump($accesscodematchArray); // get value from ws $indicate2Connect = new Indicate2_Connect(); $response = $indicate2Connect->getAnswerSetForSurvey(385, null, array(array('ContextIndex' => 1, 'QuestionIndex' => 1), array('ContextIndex' => 1, 'QuestionIndex' => 4)), 0); // Zend_Debug::Dump($response); $talkingdurationArray = array(); $accesscodeResponseMathArray = array(); if (isset($response->AnswerSetType)) { foreach ($response->AnswerSetType as $answerSet) { if (isset($answerSet->AnswerType) && is_array($answerSet->AnswerType) && !empty($answerSet->AnswerType)) { foreach ($answerSet->AnswerType as $answer) { if ($answer->QuestionId == 573) { $accesscodeResponseMathArray[$answerSet->AccessCode] = (int) iconv("UTF-8", "gb18030", preg_replace('/[\\n\\r\\t]/', ' ', base64_decode($answer->AnswerText))); } if ($answer->QuestionId == 576) { $talkingdurationArray[$answerSet->AccessCode] = (int) iconv("UTF-8", "gb18030", preg_replace('/[\\n\\r\\t]/', ' ', base64_decode($answer->AnswerText))); } } } else { //get min value, like '11-15' = 11 $accesscodeResponseMathArray[$answerSet->AccessCode] = (int) iconv("UTF-8", "gb18030", preg_replace('/[\\n\\r\\t]/', ' ', base64_decode($answerSet->AnswerType->AnswerText))); } } } // Zend_Debug::Dump($accesscodeResponseMathArray); // Zend_Debug::Dump($talkingdurationArray); $resultmatchArray = array(); foreach ($accesscodeArray as $accesscode) { $resultmatchArray[$accesscodeDbMatchArray[$accesscode]] = 0; } foreach ($accesscodeArray as $accesscode) { if (array_key_exists($accesscode, $accesscodeResponseMathArray)) { $resultmatchArray[$accesscodeDbMatchArray[$accesscode]] += $accesscodeResponseMathArray[$accesscode]; } } // Zend_Debug::Dump($resultmatchArray); $dateArray = array_keys($resultmatchArray); foreach ($dateArray as $date) { $resultmatchArray[$date] = floor($resultmatchArray[$date] * 1.65); } // Zend_Debug::Dump($resultmatchArray); include 'open-flash-chart.php'; $data_1 = array(); $base = floor(1472 * 1.65); $temp = 0; $resultmatchArray[0] = 0; foreach ($dateArray as $date) { $resultmatchArray[$date] += $resultmatchArray[$temp]; $data_1[] = $resultmatchArray[$date] + $base; $temp = $date; } // Zend_Debug::Dump($data_1); $title = new title("Impressions of BugsLock by day"); $y = new y_axis(); $y->set_range(0, 40000, 10000); $x = new x_axis(); $x_labels = new x_axis_labels(); $x_labels->set_labels($dateArray); $x_labels->set_steps(2); $x_labels->rotate(40); $x->set_labels($x_labels); $line_1_default_dot = new dot(); $line_1_default_dot->colour('#f00000')->tooltip('#x_label#: #val#'); $line_1 = new line(); $line_1->set_default_dot_style($line_1_default_dot); $line_1->set_values($data_1); $line_1->set_width(1); $line_1->set_key('Impression', 10); $this->view->chart = new open_flash_chart(); $this->view->chart->set_title($title); $this->view->chart->add_element($line_1); $this->view->chart->set_y_axis($y); $this->view->chart->set_x_axis($x); $this->view->chart->set_bg_colour('#FFFFFF'); // include 'ofc_sugar.php'; $this->view->chart2 = new open_flash_chart(); $this->view->chart2->set_title(new title('Generation Chart')); $line_1 = new line(); $array_1 = array(); $f = 1.5; for ($i = 0; $i <= 50; $i++) { array_push($array_1, $f); } $line_1->set_values($array_1); // $line_1->set_default_dot_style( new s_hollow_dot('#FBB829', 4) ); $line_1->set_width(1); $line_1->set_colour('#FF0000'); $line_1->set_tooltip("Gen0"); $line_1->set_key('Gen0', 10); $line_1->loop(); $area = new area(); // set the circle line width: $area->set_width(1); // $area->set_default_dot_style( new s_hollow_dot('#45909F', 5) ); $area->set_colour('#FF0000'); // $area->set_fill_colour( '#FF0000' ); // $area->set_fill_alpha( 0.4 ); $area->set_loop(); $area->set_values($array_1); $line_2 = new line(); $array_2 = array(); $f = 2.8; for ($i = 0; $i <= 50; $i++) { array_push($array_2, $f); } $line_2->set_values($array_2); // $line_2->set_default_dot_style( new s_hollow_dot('#FBB829', 4) ); $line_2->set_width(1); $line_2->set_colour('#FBB829'); $line_2->set_tooltip("Gold<br>#val#"); $line_2->set_key('Gen1', 10); $line_2->loop(); $line_4 = new line(); $array_4 = array(); $f = 5; for ($i = 0; $i <= 50; $i++) { array_push($array_4, $f); } $line_4->set_values($array_4); // $line_2->set_default_dot_style( new s_star('#8000FF', 4) ); $line_4->set_width(1); $line_4->set_colour('#3030D0'); $line_4->set_tooltip("Purple<br>#val#"); $line_4->set_key('Gen2', 10); $line_4->loop(); // add the area object to the chart: $this->view->chart2->add_element($line_1); $this->view->chart2->add_element($line_2); $this->view->chart2->add_element($line_4); $r = new radar_axis(5); $r->set_colour('#FFFFFF'); $r->set_grid_colour('#FFFFFF'); $labels = new radar_axis_labels(array('G0', '', 'G1', '', 'G2')); $labels->set_colour('#9F819F'); $r->set_labels($labels); $this->view->chart2->set_radar_axis($r); $tooltip = new tooltip(); $tooltip->set_proximity(); $this->view->chart2->set_tooltip($tooltip); $this->view->chart2->set_bg_colour('#ffffff'); // echo $this->view->chart2->toPrettyString(); }
public function clientimpressionAction() { ini_set('display_errors', 1); $frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions(true); // filter! if (!$this->clientdashboardfilter()) { return; } $this->view->activeTab = 'clientimpression'; include 'open-flash-chart.php'; $request = $this->getRequest(); if ($request->isPost()) { $formData = $request->getPost(); $campaign_id = $formData['campaign_id']; } else { $campaign_id = $request->getParam('id'); } $this->_helper->layout->setLayout($this->getCampaignTemplate($campaign_id)); $this->view->campaign_id = $campaign_id; // get date from db $db = Zend_Registry::get('db'); $select = $db->select(); $select->from('report', array('left(create_date,10) as date', 'accesscode'))->where('report.campaign_id = ?', $campaign_id)->where('report.state = "APPROVED"')->order('date'); $results = $db->fetchAll($select); $accesscodeDbMatchArray = array(); foreach ($results as $result) { $accesscodeDbMatchArray[$result['accesscode']] = $result['date']; } $accesscodeArray = array_keys($accesscodeDbMatchArray); $campaignModel = new Campaign(); $campaign = $campaignModel->fetchRow('id = ' . $campaign_id); // get impression value from ws $db = Zend_Registry::get('db'); $select = $db->select(); $select->from('dashboard_mapping'); $select->where('survey_id = ?', $campaign->i2_survey_id); $select->where('mark="FRIENDS"'); $mappings = $db->fetchRow($select); $indicate2Connect = new Indicate2_Connect(); $response = $indicate2Connect->getAnswerSetForSurvey(array($campaign->i2_survey_id, $campaign->i2_survey_id_en), null, array(array('ContextIndex' => $mappings['context_index'], 'QuestionIndex' => $mappings['question_index'])), 0); // Zend_Debug::dump($mappings);die; $optionArray = array(); if (isset($response->QuestionType) && is_array($response->QuestionType)) { foreach ($response->QuestionType as $questionType) { foreach ($questionType->SelectionQuestionOptionType as $optionObject) { //get min value, like '11-15' = 11 $optionArray[$optionObject->OptionId] = (int) $optionObject->OptionText; } } } else { if (isset($response->QuestionType->SelectionQuestionOptionType)) { foreach ($response->QuestionType->SelectionQuestionOptionType as $optionObject) { //get min value, like '11-15' = 11 if ($optionObject->OptionText == '>=10') { $optionArray[$optionObject->OptionId] = 10; } $optionArray[$optionObject->OptionId] = (int) $optionObject->OptionText; } } } $answerArray = array(); $i = 0; if (isset($response->AnswerSetType)) { foreach ($response->AnswerSetType as $answerObject) { $answerArray[$i++] = array($answerObject->AccessCode, iconv("UTF-8", "gb18030", preg_replace('/[\\n\\r\\t]/', ' ', base64_decode($answerObject->AnswerType->AnswerText)))); } } // create x axis date value (endDate = expireDate/now + 10 days) $this->view->startDate = $startDate = date("Y-m-d", strtotime($campaign->create_date)); if (strtotime($campaign->expire_date) > strtotime(date("Y-m-d"))) { $this->view->xmax = $endDate = date("Y-m-d", strtotime("+10 days", strtotime(date("Y-m-d")))); } else { $this->view->xmax = $endDate = date("Y-m-d", strtotime("+10 days", strtotime($campaign->expire_date))); } if ($request->isPost()) { $formData = $request->getPost(); $this->view->xmax = $endDate = $formData['x_max']; } $resultArray = array(); $xDateArrayLength = 0; while (1) { $resultArray[$startDate] = 0; $startDate = date("Y-m-d", strtotime("+1 days", strtotime($startDate))); $xDateArrayLength++; if ($startDate == $endDate) { $resultArray[$startDate] = 0; $xDateArrayLength++; break; } } //var_dump($resultArray);die; // set sparks initial impressions for each campaign, it should be added if a new campaign is lanuched! switch ($campaign_id) { case '1': $staticsparks = array(50, 110); break; case '2': $staticsparks = array(50, 150, 250, 400, 450); break; case '3': $staticsparks = array(100, 350, 750, 1200, 1500); break; case '4': $staticsparks = array(50, 200, 250); break; case '5': $staticsparks = array(50, 150); break; case '6': $staticsparks = array(50, 150, 350, 500, 900, 1700, 2300, 2500); break; case '7': $staticsparks = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 150, 350, 500, 900, 1038); break; case '8': $staticsparks = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 300, 450, 600, 750, 900, 1000); break; case '9': $staticsparks = array(0, 0, 0, 150, 300, 450, 600, 750, 900, 1000); break; case '10': $staticsparks = array(0, 0, 0, 0, 0, 0, 0, 0, 150, 300, 450, 600, 750, 900, 1000); break; case '13': $staticsparks = array(0, 0, 0, 0, 0, 0, 50, 100, 150, 300, 450, 600, 750, 900, 1200); break; default: break; } for ($temp = count($staticsparks); $temp < $xDateArrayLength; $temp++) { $staticsparks[$temp] = $staticsparks[$temp - 1]; } // set everyday impression by using ws data foreach ($answerArray as $answer) { if (!isset($accesscodeDbMatchArray[$answer[0]])) { continue; } if (date("Y-m-d", strtotime($accesscodeDbMatchArray[$answer[0]])) > date("Y-m-d", strtotime($this->view->xmax))) { continue; } if (!array_key_exists($accesscodeDbMatchArray[$answer[0]], $resultArray)) { $resultArray[$accesscodeDbMatchArray[$answer[0]]] = $optionArray[$answer[1]]; } else { $resultArray[$accesscodeDbMatchArray[$answer[0]]] += $optionArray[$answer[1]]; } } //Zend_Debug::dump($optionArray); //Zend_Debug::dump($resultArray); //Zend_Debug::dump($answerArray); //Zend_Debug::dump($accesscodeDbMatchArray); // set line value $sparks = 0; $data_1 = array(); $data_2min = array(); $data_2max = array(); $data_3min = array(); $data_3max = array(); $i = 0; $data_1[0] = $data_2max[0] = $data_2min[0] = $data_3min[0] = $data_3max[0] = $accumulate = 0; $temp = 0; foreach ($resultArray as $result) { if ($result != 0) { $xTodayLength = $temp; } $temp++; } foreach ($resultArray as $result) { if ($i == 0) { $i++; continue; } $accumulate = $result + $accumulate; $data_1[$i] = $accumulate + $staticsparks[$i]; $data_2min[$i] = floor($accumulate * 2.5 + $staticsparks[$i]); $data_2max[$i] = $accumulate * 5 + $staticsparks[$i]; $data_2avg[$i] = $accumulate * 3.75; $data_3min[$i] = floor($data_2avg[$i] * 3) + $data_2min[$i]; $data_3max[$i] = floor($data_2avg[$i] * 4) + $data_2max[$i]; $max = $data_3max[$i]; if ($i == $xTodayLength) { break; } $i++; } // set max y axis value $dateArray = array_keys($resultArray); $y = new y_axis(); if ($request->isPost()) { $formData = $request->getPost(); $max = $formData['y_max']; } else { if ($max < 10000) { $max = ceil($max / 100) * 100; } else { $max = ceil($max / 1000) * 1000; } } $y->set_range(0, $max, $max / 10); $this->view->ymax = $max; // draw lines $x = new x_axis(); $x_labels = new x_axis_labels(); $x_labels->set_labels($dateArray); $x_labels->set_steps(floor($xDateArrayLength / 42) + 1); $x_labels->rotate(40); $x->set_labels($x_labels); $line_1_default_dot = new dot(); $line_1_default_dot->colour('#007DCD')->tooltip('#x_label#: #val#'); $line_1 = new line(); $line_1->set_default_dot_style($line_1_default_dot); $line_1->set_values($data_1); $line_1->set_colour("#007DCD"); $line_1->set_width(1); $line_2min_default_dot = new dot(); $line_2min_default_dot->colour('#81C909')->tooltip('#x_label#: #val#'); $line_2min = new line(); $line_2min->set_default_dot_style($line_2min_default_dot); $line_2min->set_values($data_2min); $line_2min->set_colour("#81C909"); $line_2min->set_width(1); $line_2_default_dot = new dot(); $line_2_default_dot->colour('#81C909')->tooltip('#x_label#: #val#'); $line_2 = new line(); $line_2->set_default_dot_style($line_2_default_dot); $line_2->set_values($data_2max); $line_2->set_colour("#81C909"); $line_2->set_width(1); $line_3_default_dot = new dot(); $line_3_default_dot->colour('#FF0000')->tooltip('#x_label#: #val#'); $line_3 = new line(); $line_3->set_default_dot_style($line_3_default_dot); $line_3->set_values($data_3min); $line_3->set_colour("#FF0000"); $line_3->set_width(1); $line_3max_default_dot = new dot(); $line_3max_default_dot->colour('#FF0000')->tooltip('#x_label#: #val#'); $line_3max = new line(); $line_3max->set_default_dot_style($line_3max_default_dot); $line_3max->set_values($data_3max); $line_3max->set_colour("#FF0000"); $line_3max->set_width(1); //tags $tags = new ofc_tags(); $tags->font("Verdana", 10)->colour("#2F2F2F")->align_x_right(); $this->view->chart = new open_flash_chart(); // create event $campaignEventModel = new CampaignEvent(); $campaignEvents = $campaignEventModel->fetchAll('campaign_id = ' . $campaign_id, 'event_date'); $eventTotal = count($campaignEvents); $eventTemp = 0; foreach ($campaignEvents as $campaignEvent) { $eventDate = floor((strtotime($campaignEvent->event_date) - strtotime($campaign->create_date)) / 86400); $eventDescription = $campaignEvent->event_name; // event line $eventline = new scatter_line('#C5BE97', 1); $def = new hollow_dot(); $def->size(0)->halo_size(0); $eventline->set_default_dot_style($def); $v = array(new scatter_value($eventDate, 0), new scatter_value($eventDate, $this->view->ymax)); $eventline->set_values($v); $this->view->chart->add_element($eventline); // event description $tagAndArrow_Yvalue = 1 - ($eventTotal - $eventTemp++) / 10; if ($tagAndArrow_Yvalue == 0) { $tagAndArrow_Yvalue = 0.1; } $tag_xvalue = $eventDate + 2; $t = new ofc_tag($tag_xvalue, $this->view->ymax * $tagAndArrow_Yvalue); $t->text($eventDescription)->style(false, false, false, 1.0)->padding(0, 0); $tags->append_tag($t); // event arrow $arrowStart_x = $tag_xvalue; $arrowStart_y = $this->view->ymax * $tagAndArrow_Yvalue; $arrowEnd_x = $tag_xvalue - 1.5; $arrowEnd_y = $this->view->ymax * $tagAndArrow_Yvalue; $arrowColor = '#000000'; $arrowBarbLength = 7; $a = new ofc_arrow($arrowStart_x, $arrowStart_y, $arrowEnd_x, $arrowEnd_y, $arrowColor, $arrowBarbLength); $this->view->chart->add_element($a); } $this->view->chart->add_element($line_1); $this->view->chart->add_element($line_2min); $this->view->chart->add_element($line_2); $this->view->chart->add_element($line_3); $this->view->chart->add_element($line_3max); $this->view->chart->add_element($tags); $this->view->chart->set_y_axis($y); $this->view->chart->set_x_axis($x); $this->view->chart->set_bg_colour('#FFFFFF'); }