public function indexAction() { $lang = $this->_request->getParam('lang'); $langNamespace = new Zend_Session_Namespace('Lang'); $langNamespace->lang = $lang; // Zend_Debug::dump($_SERVER["HTTP_REFERER"]); if (isset($this->_currentUser->id)) { $consumerModel = new Consumer(); $consumer = $consumerModel->fetchRow('id = ' . $this->_currentUser->id); if ($consumer != null) { $consumer->language_pref = $lang; $consumer->save(); } else { $adminModel = new Admin(); $admin = $adminModel->fetchRow('id = ' . $this->_currentUser->id); if ($admin != null) { $admin->language_pref = $lang; $admin->save(); } } } $messageArray = $this->_flashMessenger->getMessages(); if ($messageArray != null) { foreach ($messageArray as $message) { $this->_flashMessenger->addMessage($message); } } $this->_helper->redirector->gotoUrl($_SERVER["HTTP_REFERER"]); }
function adminaddAction() { $this->_helper->layout->setLayout("layout_admin"); $translate = new Zend_Translate('array', array("Value is required and can't be empty" => $this->view->translate('validation_null'))); $form = new PhoneConversationForm(); $form->setTranslator($translate); if ($this->_request->getParam('id')) { $consumer = new Consumer(); $consumerData = $consumer->fetchRow('id=' . $this->_request->getParam('id')); $form->setDefault('phoneNum', $consumerData->phone); $form->setDefault('consumerName', $consumerData->name); } $this->view->form = $form; $currentTime = date("Y-m-d H:i:s"); if ($this->_request->isPost()) { $formData = $this->_request->getPost(); if ($form->isValid($formData)) { $phoneNum = $form->getValue('phoneNum'); $consumerName = $form->getValue('consumerName'); $content = $form->getValue('content'); $evaluation = $form->getValue('evaluation'); $duration = $form->getValue('duration'); $image = $form->getValue('image'); $time = $currentTime; //2011-04-08 ham.bao separate the sessions with admin $adminId = $this->_currentAdmin->id; $db = Zend_Registry::get('db'); $select = $db->select(); $select->from('consumer', 'id'); $select->where('name=?', $consumerName); $consumerId = $db->fetchOne($select); $this->view->adminid = $adminId; $this->view->consumerid = $consumerId; $this->view->consumername = $consumerName; $this->view->phonenum = $phoneNum; $this->view->content = $content; $this->view->evaluation = $evaluation; $this->view->duration = $duration; $this->view->time = $time; $phoneConversationModel = new PhoneConversation(); $phoneConversation = $phoneConversationModel->createRow(); $phoneConversation->admin_id = $adminId; $phoneConversation->consumer_id = $consumerId; $phoneConversation->consumer_name = $consumerName; $phoneConversation->consumer_phone = $phoneNum; $phoneConversation->content = $content; $phoneConversation->evaluation = $evaluation; $phoneConversation->duration = $duration; $phoneConversation->time = $currentTime; $phoneConversation->image = $image; $phoneConversation->save(); } } }
function registerAction() { $this->view->title = "Register New Account"; $this->view->messages = $this->_flashMessenger->getMessages(); $this->_helper->layout->disableLayout(); $lang = $this->_request->getParam('lang'); if (isset($lang)) { $langNamespace = new Zend_Session_Namespace('Lang'); $langNamespace->lang = $lang; $this->_helper->redirector->gotoSimple('register', 'register', null, array('a' => $this->_request->getParam('a'), 'i' => $this->_request->getParam('i'))); } $db = Zend_Registry::get('db'); $currentTime = date("Y-m-d H:i:s"); $loginform = new LoginForm(); $this->view->form = $loginform; $form = new RegisterForm(); $this->view->registerForm = $form; $signupAuthCodeModel = new SignupAuthCode(); $auth_code = $this->_request->getParam('a'); if ($auth_code) { $form->auth_code->setValue($auth_code); $code = $signupAuthCodeModel->fetchRow("use_date is null and auth_code = '" . $auth_code . "'"); } // auto-fill code and email address if (isset($code) && $code->id) { $this->view->codeId = $code->id; $select1 = $db->select(); $select1->from("invitation_email", "to"); $select1->where("invitation_email.signup_auth_code_id = ?", $code->id); $toEmail = $db->fetchOne($select1); $form->registerEmail->setValue($toEmail); $code->view_date = $currentTime; $code->save(); } //public link $invite_code = $this->_request->getParam('i'); if ($invite_code) { $code2 = $signupAuthCodeModel->fetchRow("public_signup_link = true and auth_code = '" . $invite_code . "'"); $publicLinkValid = false; if (isset($code2)) { $select2 = $db->select(); $select2->from('signup_auth_code', 'count(*)')->where('use_date>date_sub(now(),interval 1 day)')->where('sender =' . $code2->sender)->where('source = "PUBLIC_LINK"')->where('receiver is not null'); $registered = $db->fetchOne($select2); if (intval($registered) < 100) { $publicLinkValid = true; } } } if (isset($code2)) { if ($publicLinkValid) { $codePattern = '1234567890ABCDEFGHIJKLOMNOPQRSTUVWXYZ'; $generatedCode = ''; for ($codeCount = 0; $codeCount < 12; $codeCount++) { $generatedCode = $generatedCode . $codePattern[mt_rand(0, 35)]; } $signupAuthCode = $signupAuthCodeModel->createRow(); $signupAuthCode->auth_code = $generatedCode; $signupAuthCode->create_date = $currentTime; $signupAuthCode->sender = $code2->sender; $signupAuthCode->source = 'PUBLIC_LINK'; $signupAuthCode->auto_invitation = $code2->auto_invitation; $signupAuthCode->save(); $form->auth_code->setValue($generatedCode); } else { $this->_flashMessenger->addMessage($this->view->translate('Sorry_This_register_link_has_been_overused')); $this->_helper->redirector('register', 'register'); } } if ($this->_request->isPost()) { $formData = $this->_request->getPost(); if ($form->isValid($formData)) { $db = Zend_Registry::get('db'); if ($form->getValue('registerPassword') == $form->getValue('repeat')) { // verify auth code $codeModel = new SignupAuthCode(); $code = $codeModel->fetchRow("auth_code='" . $form->getValue('auth_code') . "' and use_date is null"); if ($code) { //check pest if ($code->sender != null) { $consumerModel = new Consumer(); $consumer = $consumerModel->fetchRow("id = " . $code->sender); if ($consumer != null && $consumer->pest == '1') { return; } } //check duplicated email $result = $db->fetchOne("SELECT COUNT(*) FROM consumer WHERE email = :temp", array('temp' => $form->getValue('registerEmail'))); //check duplicated phone $phone_result = $db->fetchOne("SELECT COUNT(*) FROM consumer WHERE login_phone = :temp", array('temp' => $form->getValue('loginPhone'))); if ($result > 0) { $this->view->errMessage = $this->view->translate('Register_err') . $form->getValue('registerEmail') . $this->view->translate('Register_email_is_invalid'); } else { if ($phone_result > 0) { $this->view->errMessage = $this->view->translate('Register_err') . $form->getValue('loginPhone') . $this->view->translate('Register_phone_is_invalid'); } else { $currentTime = date("Y-m-d H:i:s"); // save new consumer $consumerModel = new Consumer(); $row = $consumerModel->createRow(); $row->name = $form->getValue('name'); $row->email = $form->getValue('registerEmail'); $row->login_phone = $form->getValue('loginPhone'); $row->password = md5($form->getValue('registerPassword')); $row->save(); //expire the auth_code $code->receiver = $row->id; $code->use_date = $currentTime; $code->save(); //add points for code sender // if (!empty($code->sender)&& $code->sender!=""){ // $pointRecordModel = new RewardPointTransactionRecord(); // $point = $pointRecordModel->createRow(); // $point->consumer_id = $code->sender; // $point->transaction_id = 2; // $point->date = $currentTime; // $point->point_amount = 5; // $point->save(); // } // send auto intivitaion if (!empty($code->auto_invitation) && $code->auto_invitation != 0) { $campaignInvitationModel = new CampaignInvitation(); $ci = $campaignInvitationModel->createRow(); $ci->consumer_id = $row->id; $ci->campaign_id = $code->auto_invitation; $ci->create_date = $currentTime; $ci->state = "NEW"; $ci->save(); } // Login Automatically $authAdapter = new Zend_Auth_Adapter_DbTable($db); $authAdapter->setTableName('consumer'); $authAdapter->setIdentityColumn('email'); $authAdapter->setCredentialColumn('password'); $authAdapter->setIdentity($form->getValue('registerEmail')); $authAdapter->setCredential(md5($form->getValue('registerPassword'))); $auth = Zend_Auth::getInstance(); $auth->authenticate($authAdapter); $authNamespace = new Zend_Session_Namespace('Zend_Auth'); $authNamespace->user = $row; $this->_flashMessenger->addMessage('Welcome!'); $this->_helper->redirector('index', 'home'); } } } else { $this->view->errMessage = $this->view->translate('Register_err') . $this->view->translate('Register_authcode_is_invalid'); } } else { $this->view->errMessage = $this->view->translate('Register_err') . $this->view->translate('Register_password_is_invalid'); } } else { $form->populate($formData); } } }
function activateAction() { $this->_helper->layout->disableLayout(); $activateCode = $this->_request->getParam('p'); $message = ''; $activeLink = $this->view->home . '/public/register/activate/p/' . $activateCode; $temporaryLink = new TemporaryLink(); $temporaryLinkData = $temporaryLink->fetchRow('link like "%' . $activeLink . '%"'); $conumserModel = new Consumer(); $consumerData = $conumserModel->fetchRow('email like "%' . $temporaryLinkData->email . '%"'); if ($consumerData->state == 'ACTIVE') { $message = $this->view->translate('Has_actived'); } elseif ($temporaryLinkData->expire_date < date("Y-m-d H:i:s")) { $message = $this->view->translate('OutOfDate_register'); } else { $consumerData->state = 'ACTIVE'; $consumerData->save(); } $this->view->message = $message; }
function adminaddreportAction() { $this->_helper->layout->setLayout("layout_admin"); $consumer = $this->_request->getParam('uid'); if ($this->_request->getParam('file')) { $file = explode('&', $this->_request->getParam('file')); $file = $file[0]; $this->view->file = "./surveys/" . $file . ".phtml"; $this->_helper->layout->setLayout("layout_questionnaire"); } $campaignModel = new Campaign(); $campaignData = $campaignModel->fetchAll(); $this->view->campaigns = $campaignData; $this->view->sources = array('application', 'phone', 'email', 'sms'); $postData = $this->_request->getPost(); if (count($postData)) { $this->view->campaign = $postData['campaign']; $this->view->source = $postData['source']; $adminAddSession = new Zend_Session_Namespace('adminAddSession'); $adminAddSession->consumer = $consumer; $adminAddSession->source = $postData['source']; $adminAddSession->campaign = $postData['campaign']; foreach ($campaignData as $campaign) { if ($campaign->id == $postData['campaign']) { $this->view->link = $campaign->i2_survey_id; $this->view->surveyId = $campaign->i2_survey_id; } } } if ($this->_request->getParam('survey')) { $this->view->surveyId = $this->_request->getParam('survey'); } $consumerModel = new Consumer(); $this->view->consumer = $consumerModel->fetchRow('id=' . $consumer); $this->view->uid = $consumer; }
function adminreportAction() { $this->_helper->layout->setLayout("layout_admin"); $sms_id = (int) $this->_request->getParam('sms_id'); $smsSql = "select b.* from spark_sms as a, spark_sms as b where a.id=" . $sms_id . " and b.consumer_id=a.consumer_id and b.id-a.id>-5 and b.id-a.id<5 order by b.id"; $db = Zend_Registry::get('db'); $rs = $db->fetchAll($smsSql); $sms = ''; $consumer_id = 0; $smsIds = array(); foreach ($rs as $row) { array_push($smsIds, $row['id']); $sms .= $row['text']; $consumer_id = $row['consumer_id']; } //update sms state $ids = implode(",", $smsIds); //Zend_Debug::dump($ids); $updateSql = $db->prepare("update spark_sms set state='Reported' where id in (" . $ids . ")"); $updateSql->execute(); $campaign_id = (int) $this->_request->getParam('cam_id'); //whether participate in the campaign $campaigninvitationModel = new CampaignInvitation(); $campaigninvitation = $campaigninvitationModel->fetchRow('campaign_id = ' . $campaign_id . ' and consumer_id' . ' =' . $consumer_id); if ($campaigninvitation == null) { $this->_helper->redirector('index', 'home'); } //get lang $consumerModel = new Consumer(); $consumer = $consumerModel->fetchRow("id=" . $consumer_id); //get i2_survey_id $campaignModel = new Campaign(); $campaign = $campaignModel->fetchRow("id=" . $campaign_id); $langNamespace = new Zend_Session_Namespace('Lang'); $lang = $langNamespace->lang; if ($consumer->language_pref == 'en') { $surveyId = $campaign->i2_survey_id_en; } else { $surveyId = $campaign->i2_survey_id; } $this->view->campaing_name = $campaign->name; $indicate2Connect = new Indicate2_Connect(); $accesscode = $indicate2Connect->createParticipation($consumer->email, $surveyId); //save list in session $reportNamespace = new Zend_Session_Namespace('AgentReports'); $reportNamespace->{$accesscode} = $consumer_id; $source = $accesscode . "_source"; $reportNamespace->{$source} = "sms"; $config = Zend_Registry::get('config'); $this->view->filloutPage = $config->indicate2->home . "/c/" . $accesscode . "/theme/wildfire"; $this->view->id = $consumer->id; $this->view->name = $consumer->name; $this->view->sms = $sms; $this->view->includeCrystalCss = true; }
function adminsaveimagereportpointAction() { $type = $this->_request->getParam('type'); $db = Zend_Registry::get('db'); if ($type == 'reportPoint') { $idStr = $this->_request->getParam('reportids'); $idStrArray = explode(',', $idStr); $reportIdArray = array(); $i = 0; $config = Zend_Registry::get('config'); $smtpSender = new Zend_Mail_Transport_Smtp($config->smtp->report->mail->server, array('username' => $config->smtp->report->mail->username, 'password' => $config->smtp->report->mail->password, 'auth' => $config->smtp->report->mail->auth, 'ssl' => $config->smtp->report->mail->ssl, 'port' => $config->smtp->report->mail->port)); // $smtpSender = new Zend_Mail_Transport_Smtp( // 'smtp.163.com',array( // 'username'=>'*****@*****.**', // 'password'=>'19990402', // 'auth'=>'login')); Zend_Mail::setDefaultTransport($smtpSender); foreach ($idStrArray as $idAndState) { if ($idAndState == '') { continue; } $idAndStateArray = explode('@', $idAndState); if ($idAndStateArray[4] == '' || $idAndStateArray[4] == '0') { $imagereportModel = new ImageReport(); $row = $imagereportModel->fetchRow('id = ' . $idAndStateArray[0]); if ($row == null) { continue; } if ($row->reward_point_transaction_record_id != null && $row->reward_point_transaction_record_id != '') { $rewardModel = new RewardPointTransactionRecord(); $reward = $rewardModel->fetchRow('id = ' . $row->reward_point_transaction_record_id); if ($reward != null) { $reward->point_amount = $idAndStateArray[4]; $reward->save(); } } $row->state = $idAndStateArray[1]; $row->save(); } else { $imagereportModel = new ImageReport(); $row = $imagereportModel->fetchRow('id = ' . $idAndStateArray[0]); $row->state = $idAndStateArray[1]; if ($row->reward_point_transaction_record_id == null || $row->reward_point_transaction_record_id == '') { $rewardModel = new RewardPointTransactionRecord(); $reward = $rewardModel->createRow(); $reward->consumer_id = $idAndStateArray[2]; $reward->date = date("Y-m-d H:i:s"); $reward->transaction_id = 9; $reward->point_amount = $idAndStateArray[4]; $row->reward_point_transaction_record_id = $reward->save(); } else { $rewardModel = new RewardPointTransactionRecord(); $reward = $rewardModel->fetchRow('id = ' . $row->reward_point_transaction_record_id); if ($reward != null) { $reward->date = date("Y-m-d H:i:s"); $reward->point_amount = $idAndStateArray[4]; $reward->save(); } } $row->save(); //2011-05-13 change the rank of consumer $rankModel = new Rank(); $rankModel->changeConsumerRank($idAndStateArray[2]); } $consumerModel = new Consumer(); $consumer = $consumerModel->fetchRow('id = ' . $idAndStateArray[2]); //send mail... $mail = new Zend_Mail('utf-8'); if ($consumer->language_pref != null && $consumer->language_pref == 'en') { $emailSubject = $this->view->translate('Admin_Reply_WOM_IMAGEReport_Subject_en'); $emailBody = $this->view->translate('Admin_Reply_WOM_IMAGEReport_Body_en'); } else { $emailSubject = $this->view->translate('Admin_Reply_WOM_IMAGEReport_Subject_zh'); $emailBody = $this->view->translate('Admin_Reply_WOM_IMAGEReport_Body_zh'); } $campaignModel = new Campaign(); $campaign = $campaignModel->fetchRow('id = ' . $row->campaign_id); $stringChange = array('?USERNAME?' => $consumer->name, '?CAMPAIGN?' => $campaign->name, '?MYRESPONSE?' => $idAndStateArray[3]); $emailBody = strtr($emailBody, $stringChange); $langNamespace = new Zend_Session_Namespace('Lang'); if ($langNamespace->lang == 'en' || $langNamespace->lang == 'EN') { $mail->setSubject($emailSubject); } else { $mail->setSubject("=?UTF-8?B?" . base64_encode($emailSubject) . "?="); } $mail->setBodyText($emailBody); $mail->addTo($consumer->email); $mail->setFrom($config->smtp->report->mail->username, $this->view->translate('Wildfire')); // $mail->setFrom('*****@*****.**',$this->view->translate('Wildfire')); $mail->send(); // save email $imagereportreplyModel = new ImageReportReply(); $imagereportreply = $imagereportreplyModel->createRow(); $imagereportreply->date = date("Y-m-d H:i:s"); $imagereportreply->subject = $emailSubject; $imagereportreply->content = $idAndStateArray[3]; $imagereportreply->from = $config->smtp->report->mail->username; $imagereportreply->to = $consumer->email; $imagereportreply->image_report_id = $row->id; //2011-04-08 ham.bao separate the sessions with admin $imagereportreply->admin_id = $this->_currentAdmin->id; $imagereportreply->save(); } } }
function adminconverttoreportAction() { $this->_helper->layout->disableLayout(); $idValue = explode('&', $this->_request->getParam('id')); $id = $idValue[0]; $emailModel = new IncomingEmail(); $emailData = $emailModel->fetchRow('id=' . $id); $consumerModel = new Consumer(); $consumerData = $consumerModel->fetchRow('email like "%' . $emailData->email . '%"'); if ($consumerData != NULL) { $this->view->consumer = true; } else { $this->view->consumer = false; } $campaignModel = new Campaign(); $campaignData = $campaignModel->fetchRow('create_date < "' . date('Y-m-d H:i:s') . '" and "' . date('Y-m-d H:i:s') . '"<expire_date'); if ($this->view->consumer) { $campaigninvitationModel = new CampaignInvitation(); $campaigninvitationData = $campaigninvitationModel->fetchRow('campaign_id = ' . $campaignData->id . ' and consumer_id=' . $consumerData->id); if ($campaigninvitationData) { $this->view->invitation = true; } else { $this->view->invitation = false; } } if ($this->view->consumer && $this->view->invitation) { $emailSession = new Zend_Session_Namespace('IncomingEmail'); $emailSession->email = $emailData->email; $langNamespace = new Zend_Session_Namespace('Lang'); $lang = $langNamespace->lang; if ($lang == 'en') { $surveyId = $campaignData->i2_survey_id_en; } else { $surveyId = $campaignData->i2_survey_id; } $this->view->file = "./surveys/" . $surveyId . ".phtml"; } $this->_helper->layout->setLayout("layout_questionnaire"); }
function resetpasswordAction() { $this->_helper->layout->disableLayout(); $p = $this->_request->getParam("p"); $this->view->p = $p; if ($this->_request->isPost()) { $newpassword = $this->_request->getParam("newpassword"); $confirm = $this->_request->getParam("confirm"); if ($newpassword != $confirm || strlen($newpassword) < 6 || strlen($confirm) < 6) { $this->view->errMessage = $this->view->translate('Fail_New_password_is_incorrect!'); $this->view->p = $p; } else { $temporaryLinkModel = new TemporaryLink(); $currentTime = date("Y-m-d H:i:s"); $temporaryLink = $temporaryLinkModel->fetchRow("link like '%" . $p . "%' and expire_date >= '" . $currentTime . "'"); $email = $temporaryLink->email; $login_phone = $temporaryLink->login_phone; //not delete $temporaryLink in DB if ($email != null) { $consumerModel = new Consumer(); $consumer = $consumerModel->fetchRow("email = '" . $email . "'"); $consumer->password = md5($newpassword); $consumer->save(); $this->view->showMessage = $this->view->translate('You_have_reset_the_password!'); } else { if ($login_phone != null) { $consumerModel = new Consumer(); $consumer = $consumerModel->fetchRow("login_phone = '" . $login_phone . "'"); $consumer->password = md5($newpassword); $consumer->save(); $this->view->showMessage = $this->view->translate('You_have_reset_the_password!'); } else { $this->view->errMessage = $this->view->translate('Your_reset_passwrod_link'); } } } } // Zend_Debug::dump($p); }
function indexAction() { $this->view->title = $this->view->translate("Wildfire") . " - " . $this->view->translate("Index_HOME"); $this->view->activeTab = 'Home'; $consumer = $this->_currentUser; $this->view->currentUser = $consumer; $langNamespace = new Zend_Session_Namespace('Lang'); $this->view->lang = $langNamespace->lang; $currentTime = date("Y-m-d H:i:s"); // save language pref $consumerModel = new Consumer(); $consumer = $consumerModel->fetchRow('id = ' . $this->_currentUser->id); $consumer->language_pref = $langNamespace->lang; $consumer->save(); $db = Zend_Registry::get('db'); //get badges of consumer $badgeModel = new ConsumerBadge(); $badges = $badgeModel->fetchAll("consumer = " . $consumer->id); $this->view->badges = $badges; // active campaigns $select = $db->select(); $select->from('campaign', '*'); $select->join('campaign_invitation', 'campaign.id = campaign_invitation.campaign_id'); $select->join('campaign_participation', 'campaign_invitation.id = campaign_participation.campaign_invitation_id', 'accept_date'); //$select->joinLeft('url_report','url_report.campaign_id = campaign.id and url_report.consumer_id = campaign_invitation.consumer_id ',array('url', 'state as url_state')); $select->where('campaign_invitation.consumer_id = ?', $consumer->id); $select->where('campaign.expire_date > ?', $currentTime); $select->where('campaign_participation.state != "COMPLETED" '); //$select->where('campaign.type = "campaign"'); //url report $url_report = new UrlReport(); $url_reportData = $url_report->fetchAll('consumer_id=' . $consumer->id, 'create_date desc'); $this->view->urlreport = $url_reportData->toArray(); //print_r($this->view->urlreport);die; $select->order('campaign.create_date desc'); $this->view->activeCampaigns = $db->fetchAll($select); // active mission $select = $db->select(); $select->from('campaign', 'campaign.*'); $select->join('campaign_invitation', 'campaign.id = campaign_invitation.campaign_id' . ' and campaign_invitation.consumer_id = ' . $consumer->id, 'campaign_id'); $select->joinLeft('campaign_participation', 'campaign_invitation.id = campaign_participation.campaign_invitation_id', 'accept_date'); $select->where('campaign.expire_date > ?', $currentTime); $select->where('campaign.type = "mission" and campaign.public = "0"'); $select->order('campaign.create_date desc'); $this->view->activeMissions = $db->fetchAll($select); //var_dump($this->view->activeMissions);die; //public missions $select = $db->select(); $select->from('campaign', 'campaign.*'); $select->where('campaign.expire_date > ?', $currentTime); $select->where('campaign.type = "mission" and campaign.public = "1"'); $select->order('campaign.create_date desc'); $this->view->publicMissions = $db->fetchAll($select); //var_dump($this->view->activeMissions);die; $selectImageReportsForCampaign = $db->select(); $selectImageReportsForCampaign->from('image_report', array('image_report.id', 'campaign_id', 'thumb_width', 'thumb_height', 'create_date', 'state')); $selectImageReportsForCampaign->joinLeft('reward_point_transaction_record', 'image_report.reward_point_transaction_record_id = reward_point_transaction_record.id', 'point_amount'); $selectImageReportsForCampaign->where('image_report.consumer_id = ?', $this->_currentUser->id); $selectImageReportsForCampaign->order('image_report.create_date desc'); // $this->view->activeImageReportsForCampaign = $db->fetchAll($selectImageReportsForCampaign); // Zend_Debug::Dump($this->view->activeImageReportsForCampaign); $campaignId = 0; $activeImageReportsForCampaign = array(); foreach ($db->fetchAll($selectImageReportsForCampaign) as $imageReport) { $campaignId = $imageReport['campaign_id']; if (array_key_exists($campaignId, $activeImageReportsForCampaign)) { array_push($activeImageReportsForCampaign[$campaignId], $imageReport); } else { $activeImageReportsForCampaign[$campaignId] = array($imageReport); } } $this->view->activeImageReportsForCampaign = $activeImageReportsForCampaign; $selectAllCampaignReports = $db->select(); $selectAllCampaignReports->from('report', "*")->joinLeft('reward_point_transaction_record', 'reward_point_transaction_record.id = report.reward_point_transaction_record_id', 'point_amount')->where('reward_point_transaction_record.point_amount > 0 or report.state="NEW"')->where('report.consumer_id = ?', $consumer->id); $selectApprovedCampaignReports = $db->select(); $selectApprovedCampaignReports->from('report', "id")->where('report.consumer_id = ?', $consumer->id)->where('report.reward_point_transaction_record_id is not null')->where('reward_point_transaction_record.point_amount > 0')->join('reward_point_transaction_record', 'reward_point_transaction_record.id = report.reward_point_transaction_record_id', 'point_amount'); if (count($this->view->activeCampaigns) > 0) { // get all reports of the first active campaigns // create where clause $activeCampaignId = "("; foreach ($this->view->activeCampaigns as $campaign) { $activeCampaignId .= $campaign['campaign_id'] . ","; } $activeCampaignId = substr($activeCampaignId, 0, strlen($activeCampaignId) - 1); $activeCampaignId .= ")"; $selectAllCampaignReports->where('report.campaign_id in ' . $activeCampaignId); $selectApprovedCampaignReports->where('report.campaign_id in ' . $activeCampaignId); } $this->view->allCampaignReports = $db->fetchAll($selectAllCampaignReports); $approvedCampaignReports = $db->fetchAll($selectApprovedCampaignReports); $this->view->approvedCampaignReportPoint = array(); foreach ($approvedCampaignReports as $approvedCampaignReport) { $this->view->approvedCampaignReportPoint[$approvedCampaignReport['id']] = $approvedCampaignReport['point_amount']; } // total points $this->view->totalPoints = $db->fetchOne("SELECT sum(point_amount) FROM reward_point_transaction_record WHERE transaction_id!=4 and consumer_id = :temp", array('temp' => $consumer->id)); if (empty($this->view->totalPoints)) { $this->view->totalPoints = 0; } //redeem points 在本日之前的30天内的积分不可用, $today = date("Y-m-d", time()); $this->view->redeemPoints = $db->fetchOne("SELECT sum(point_amount) FROM reward_point_transaction_record WHERE (consumer_id = :temp and date <:temp2) or (consumer_id = :temp and date >=:temp2 and transaction_id=4) ", array('temp' => $consumer->id, 'temp2' => date("Y-m-d", strtotime("{$today} -30 day")))); if (empty($this->view->redeemPoints)) { $this->view->redeemPoints = 0; } // new points 30天以内的积分 $this->view->newPoints = $db->fetchOne("SELECT sum(point_amount) FROM reward_point_transaction_record WHERE (consumer_id = :temp and date >=:temp2 and transaction_id!=4) ", array('temp' => $consumer->id, 'temp2' => date("Y-m-d", strtotime("{$today} -30 day")))); if (empty($this->view->newPoints)) { $this->view->newPoints = 0; } //get polls // $profileSurveyModel = new ProfileSurvey(); // $this->view->surveys = $profileSurveyModel->fetchAll('state = "ACTIVE"', 'id DESC', null, null); $select_profilesurvey = $db->select(); $select_profilesurvey->from('profile_survey', '*'); $select_profilesurvey->joinLeft('profilesurvey_invitation', 'profilesurvey_invitation.profile_id = profile_survey.id and profilesurvey_invitation.consumer_id=' . $consumer->id, array('id as invitaitonId', 'consumer_id')); $select_profilesurvey->where('profile_survey.state = "ACTIVE"'); $this->view->surveys = $db->fetchAll($select_profilesurvey); //var_dump($this->view->surveys);die; $select2 = $db->select(); $select2->from('poll_participation', 'poll_id'); $select2->where('poll_participation.consumer_id = ?', $consumer->id)->order('poll_participation.date DESC'); $this->view->completedPolls = $db->fetchAll($select2); // get invitation // add expire_date by Bruce.Liu $select3 = $db->select(); $select3->from('campaign_invitation', '*'); $select3->join('campaign', 'campaign.id = campaign_invitation.campaign_id ', array('campaign.id', 'pre_campaign_survey', 'name', 'type', 'product_name', 'simple_description', 'invitation_description', 'invitation_description2', 'campaign.total')); $select3->where('campaign_invitation.consumer_id = ?', $this->_currentUser->id); $select3->where('campaign_invitation.state = ?', 'NEW'); $select3->where('campaign.expire_date > ?', $currentTime); $select3->order('campaign_invitation.create_date DESC'); $recentInvitationTotalArray = $db->fetchAll($select3); // add logic campare total and campaign_partation number 2013-09-16 // 取到当前被邀请的活动 比较 当前活动的参与人数和当前活动的最高参加人数 $recentInvitationTotalArrayNew = array(); $select_participation_sql_rs = array(); foreach ($recentInvitationTotalArray as $recentInvitationTotal) { $select_participation_sql = $db->select(); $select_participation_sql->from('campaign_invitation', '*'); $select_participation_sql->join('campaign_participation', 'campaign_invitation.id = campaign_participation.campaign_invitation_id'); $select_participation_sql->where('campaign_invitation.state = "ACCEPTED" '); $select_participation_sql->where('campaign_invitation.campaign_id = ' . $recentInvitationTotal['id']); $select_participation_sql_rs = $db->fetchAll($select_participation_sql); if (intval($recentInvitationTotal['total']) > count($select_participation_sql_rs)) { array_push($recentInvitationTotalArrayNew, $recentInvitationTotal); } } $this->view->recentInvitation = $recentInvitationTotalArrayNew; $this->view->allInvitations = $this->view->recentInvitation; // $this->view->recentInvitation = $db->fetchRow($select3); // $this->view->allInvitations = $db->fetchAll($select3); //print_r($this->view->allInvitations);die; // Zend_Debug::dump($this->view->allInvitations);die(); //post-campaign survey popup // add expire_date by Bruce.Liu $select4 = $db->select(); $select4->from('campaign_participation', '*'); $select4->join('campaign_invitation', 'campaign_participation.campaign_invitation_id = campaign_invitation.id'); $select4->join('campaign', 'campaign.id = campaign_invitation.campaign_id'); $select4->where('campaign_invitation.consumer_id = ?', $this->_currentUser->id); $select4->where('campaign.expire_date > ?', $currentTime); $select4->where('campaign_participation.state = ?', 'FINISHING'); $select4->order('campaign_invitation.create_date DESC'); $this->view->postCampaignNotification = $db->fetchRow($select4); // shut down pop-up $appspace = new Zend_Session_Namespace('application'); if (!isset($appspace->popup) || $appspace->popup) { $this->view->popup = true; $appspace->popup = false; } // consumer info bar session $consumerExtraInfo = new Zend_Session_Namespace('consumerExtraInfo'); if (!isset($consumerExtraInfo->data)) { // The username and email are 20 points $count = 20; $consumerinfoArray = $consumer->toArray(); for ($i = 0; $i < count($consumerinfoArray); $i++) { $temp = each($consumerinfoArray); // Address1, phone, city and recipients_name is 5 points each if ($temp['key'] == 'address1' || $temp['key'] == 'phone' || $temp['key'] == 'city' || $temp['key'] == 'recipients_name') { if ($temp['value'] != null && $temp['value'] != '') { $count += 5; } } else { continue; } } $consumerextraModel = new ConsumerExtraInfo(); $consumerextra = $consumerextraModel->fetchRow('consumer_id = ' . $this->_currentUser->id); if ($consumerextra != null) { $extrainfoArray = $consumerextra->toArray(); $inc = round(60 / (count($extrainfoArray) - 3), 1); for ($i = 0; $i < count($extrainfoArray); $i++) { $temp = each($extrainfoArray); // Ignore birth year of children if ($temp['key'] == 'id' || $temp['key'] == 'consumer_id' || $temp['key'] == 'children_birth_year') { continue; } else { if ($temp['value'] != null && $temp['value'] != '') { $count += $inc; } } } $count = floor($count); $count = $count + ($count % 5 == 0 ? 0 : 5 - $count % 5) > 100 ? 100 : $count + ($count % 5 == 0 ? 0 : 5 - $count % 5); } $consumerExtraInfo->data = $count; } $this->view->consumerextrainfo = $consumerExtraInfo->data; //consumer information $select = $db->select(); $select->from('consumer', '*'); $select->joinLeft('rank', 'consumer.rank = rank.id', array('name as rname')); $select->where('consumer.id = ?', $this->_currentUser->id); $this->view->consumer = $db->fetchAll($select); //var_dump($this->view->consumer);die; }
function clientmessageAction() { $this->view->activeTab = 'clientmessage'; if (!$this->clientdashboardfilter()) { return; } $campaign_id = $this->_request->getParam('id'); $this->_helper->layout->setLayout($this->getCampaignTemplate($campaign_id)); // get current page(default page = 1) if ($this->_request->getParam('page')) { $this->_curPage = $this->_request->getParam('page'); } $clientMessageModel = new ClientMessage(); $where = "client_message.to=" . $this->_currentClient->id . " or client_message.from=" . $this->_currentClient->id; $order = "client_message.id desc"; $messageList = $clientMessageModel->fetchAll($where, $order); $msgMap = array(); foreach ($messageList as $message) { if ($message->parent_id != null) { //reply $key = $message->parent_id; if (!array_key_exists($key, $msgMap)) { $msgMap[$key] = array(); } if (!isset($msgMap[$key]['LASTTIME'])) { //save last time $msgMap[$key]['LASTTIME'] = $message->create_date; } if (!isset($msgMap[$key]['REPLY'])) { $msgMap[$key]['REPLY'] = array(); } array_push($msgMap[$key]['REPLY'], $message); } else { //message $key = $message->id; if (!array_key_exists($key, $msgMap)) { $msgMap[$key] = array(); } $msgMap[$key]['MESSAGE'] = $message; } //get from name depending on from_type if ($message->from_type == "Wildfire") { $adminModel = new Admin(); $admin = $adminModel->fetchRow('id = ' . $message->from); $msgMap[$key]['FROM_NAME'] = $admin->name; } else { if ($message->from_type == "Spark") { $consumerModel = new Consumer(); $consumer = $consumerModel->fetchRow('id = ' . $message->from); $msgMap[$key]['FROM_NAME'] = $consumer->recipients_name; } } } $this->view->msgMap = $msgMap; //Zend_Debug::dump($msgMap); //paging $this->view->controller = $this->_request->getControllerName(); $this->view->action = $this->_request->getActionName(); $paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Array(array_values($msgMap))); $paginator->setCurrentPageNumber($this->_curPage)->setItemCountPerPage($this->_rowsPerPage); $this->view->paginator = $paginator; //update client message count in session. $clientMessageNamespace = new Zend_Session_Namespace('ClientMessage'); $db = Zend_Registry::get('db'); $messageCount = $db->fetchOne("SELECT count(*) FROM client_message cm WHERE cm.to_type='Client' and cm.to=:clientId and state='NEW'", array('clientId' => $this->_currentClient->id)); if ($messageCount > 0) { $attrName = "count_" . $this->_currentClient->id; $clientMessageNamespace->{$attrName} = $messageCount; $this->view->client_message_count = "(" . $messageCount . ")"; } //get current message for client reply save $request = $this->getRequest(); if (!$request->isPost()) { $message_id = $request->getParam('message_id'); if (isset($message_id)) { $this->view->current_message_id = $message_id; } } $this->view->campaign_id = $request->getParam('id'); $clientCampaignListNamespace = new Zend_Session_Namespace('ClientCampaignList'); }
function profileAction() { $this->_helper->layout->setLayout("layout_admin"); $uid = $this->_request->getParam('uid'); $campainId = $this->_request->getParam('campaign'); if ($campainId != '') { $campaignInvitationModel = new CampaignInvitation(); $data = $campaignInvitationModel->fetchAll('consumer_id = ' . $uid . ' and campaign_id =' . $campainId); if (count($data) == 0) { $row = $campaignInvitationModel->createRow(); $row->campaign_id = $campainId; $row->consumer_id = $uid; $row->create_date = date("Y-m-d H:i:s"); $row->state = "NEW"; $row->save(); } $this->_helper->redirector('profile', 'consumer', '', array('uid' => $uid)); } $search = $this->_request->getParam('search'); $this->view->search = $search; $campaignInfo = array(); $reportsInfo = array(); $userModel = new Consumer(); if ($this->_request->getParam('resetpassword')) { $userModel->update(array('password' => md5('111111')), 'id =' . $uid); $this->_helper->redirector('profile', 'consumer', null, array('uid' => $uid)); } $profile = $userModel->fetchRow('id =' . $uid); $userExtraInfo = new ConsumerExtraInfo(); $extra_profile = $userExtraInfo->fetchRow(' consumer_id = ' . $uid); $this->view->profile = $profile; $this->view->extra_profile = $extra_profile; // var_dump($extra_profile);die; $db = Zend_Registry::get('db'); $select = $db->select(); $select->from("campaign", array('campaign.*', 'campaign_participation.state', 'campaign_invitation.state as cstate', 'campaign_invitation.id as ciid')); $select->joinLeft("campaign_invitation", "campaign.id=campaign_invitation.campaign_id and campaign_invitation.consumer_id = " . $uid, null); $select->joinLeft("campaign_participation", "campaign_invitation.id=campaign_participation.campaign_invitation_id", "campaign_participation.accept_date"); //$select->where ( "campaign_invitation.state = 'ACCEPTED'" ); //$select->where ( " campaign_invitation.consumer_id = ?", $uid ); $select->order('campaign_participation.accept_date desc'); $campaignsAll = $db->fetchAll($select); $this->view->campaigns = $campaignsAll; //survey $db = Zend_Registry::get('db'); $select_survey = $db->select(); $select_survey->from('profile_survey', array('name', 'english_name', 'state')); $select_survey->join('poll_participation', 'poll_participation.poll_id = profile_survey.id', 'poll_participation.date'); $select_survey->join('reward_point_transaction_record', 'reward_point_transaction_record.date = poll_participation.date and reward_point_transaction_record.consumer_id = poll_participation.consumer_id', 'point_amount'); $select_survey->where('reward_point_transaction_record.transaction_id =3'); $select_survey->where('poll_participation.consumer_id = ?', $uid); $select_survey->order('poll_participation.date desc'); $surveysAll = $db->fetchAll($select_survey); $this->view->surveysall = $surveysAll; // point detail /*$db = Zend_Registry::get('db'); $select_pointdetail = $db->select(); $select_pointdetail->from(); $select_pointdetail->join(); $select_pointdetail->join(); $select_pointdetail->where(); $select_pointdetail->where(); $select_pointdetail->order(); $surveysAll = $db->fetchAll($select_pointdetail);*/ //var_dump($campaignsAll);die; $selectTotal = $db->select(); $selectTotal->from("report", array('count(id) as num', 'campaign_id')); $selectTotal->where("consumer_id =" . $uid); $selectTotal->group('campaign_id'); $totalData = $db->fetchAll($selectTotal); if (count($totalData)) { foreach ($totalData as $val) { $reportsInfo[$val['campaign_id']] = $val['num']; } } $this->view->totalreports = $reportsInfo; // total points $this->view->totalPoints = $db->fetchOne("SELECT sum(point_amount) FROM reward_point_transaction_record WHERE transaction_id!=4 and consumer_id = :temp", array('temp' => $uid)); if (empty($this->view->totalPoints)) { $this->view->totalPoints = 0; } //redeem points $this->view->redeemPoints = $db->fetchOne("SELECT sum(point_amount) FROM reward_point_transaction_record WHERE consumer_id = :temp", array('temp' => $uid)); if (empty($this->view->redeemPoints)) { $this->view->redeemPoints = 0; } //usable points $today = date("Y-m-d", time()); $this->view->usablePoints = $db->fetchOne("SELECT sum(point_amount) FROM reward_point_transaction_record WHERE (consumer_id = :temp and date <:temp2) or (consumer_id = :temp and date >=:temp2 and transaction_id=4) ", array('temp' => $uid, 'temp2' => date("Y-m-d", strtotime("{$today} -30 day")))); if (empty($this->view->usablePoints)) { $this->view->usablePoints = 0; } $redeemSelect = $db->select(); $redeemSelect->from('product_order', array('product_order.amount as amount', 'product_order.create_date', 'product_order.state as pstate', 'product_order.id as pid', 'product.name', 'reward_point_transaction_record.point_amount')); $redeemSelect->join('product', 'product_order.product_id=product.id'); $redeemSelect->join('reward_point_transaction_record', 'product_order.reward_point_transaction_record_id=reward_point_transaction_record.id'); $redeemSelect->where('product_order.consumer_id=?', $uid); $this->view->redeem = $db->fetchAll($redeemSelect); $translate = new Zend_Translate('array', array("Value is required and can't be empty" => $this->view->translate('validation_null'))); $form = new ConsumerSearchForm(); $form->setTranslator($translate); if ($this->_request->getParam('search') != null) { $search = $this->_request->getParam('search'); $form->search->setValue($search); } $this->view->form = $form; }
function redeemAction() { $this->view->title = $this->view->translate("Wildfire") . " - " . $this->view->translate("GIFT_REDEEM"); if ($this->_request->isPost()) { $formData = $this->_request->getPost(); $cartNamespace = new Zend_Session_Namespace('Cart'); if ($cartNamespace->list == null) { $this->_redirect('gift/list'); return; } // validate consumer info $consumerModel = new Consumer(); $consumer = $consumerModel->fetchRow("email = '" . $this->_currentUser->email . "' and password = MD5('" . $formData['password'] . "')"); if ($consumer == null) { $this->_flashMessenger->addMessage($this->view->translate("Gift_consumer_info_incorrect")); $this->_flashMessenger->addMessage(true); $this->_redirect('gift/confirmcart'); return; } // check redeem condition $db = Zend_Registry::get('db'); $selectTotalCompletedCampaign = $db->select(); $selectTotalCompletedCampaign->from('campaign_participation', 'count(*)')->join('campaign_invitation', 'campaign_participation.campaign_invitation_id = campaign_invitation.id', null)->where('campaign_invitation.consumer_id = ?', $this->_currentUser->id); $this->view->completedCampaignAmount = $db->fetchOne($selectTotalCompletedCampaign); // $selectTotalSubmittedReport = $db->select(); // $selectTotalSubmittedReport->from('report', 'count(*)') // ->where('state = "APPROVED"') // ->where('consumer_id = ?', $this->_currentUser->id); // $this->view->submittedReportAmount = $db->fetchOne($selectTotalSubmittedReport); if ($this->view->completedCampaignAmount < 1 || $this->_currentUser->pest != null && $this->_currentUser->pest == 1) { $this->_flashMessenger->addMessage($this->view->translate("Gift_can_not_redeem_gift")); $this->_flashMessenger->addMessage(true); $this->_redirect('gift/confirmcart'); return; } // check the point $selectUsablePoints = $db->select(); $selectUsablePoints->from('reward_point_transaction_record', 'SUM(point_amount)')->where("consumer_id = ?", $this->_currentUser->id); $usablePoints = (int) $db->fetchOne($selectUsablePoints); $amountSelectedProductPoint = 0; foreach ($cartNamespace->list as $product) { $selectSelectedProductPoint = $db->select(); $selectSelectedProductPoint->from('product', 'point')->where("id = " . $product['id']); $selectedProductPoint = (int) $db->fetchOne($selectSelectedProductPoint); $amountSelectedProductPoint += $product['amount'] * $selectedProductPoint; } if ($amountSelectedProductPoint > $usablePoints) { $this->_flashMessenger->addMessage($this->view->translate("Gift_have_no_enough_point")); $this->_flashMessenger->addMessage(true); $this->_redirect('gift/confirmcart'); return; } // save shipping info $consumerModel = new Consumer(); $id = $this->_currentUser->id; $consumer = $consumerModel->find($id)->current(); $consumer->recipients_name = $formData['recipients_name']; $consumer->phone = $formData['phone']; $consumer->address1 = $formData['address1']; $consumer->postalcode = $formData['postalcode']; if ($formData['city'] != null && $formData['province'] != null) { $consumer->city = $formData['city']; $consumer->province = $formData['province']; } if ($formData['englishcity'] != null) { $consumer->city = $formData['englishcity']; $consumer->province = null; } if ($formData['province'] == '' && $formData['englishcity'] == null) { $consumer->city = null; $consumer->province = null; } $consumer->save(); // save exchange records $currentTime = date("Y-m-d H:i:s"); $rewardPointTransactionRecordModel = new RewardPointTransactionRecord(); $prodcutOrderModel = new ProductOrder(); $notificationModel = new Notification(); $total_redeem_point = 0; foreach ($cartNamespace->list as $product) { // add records to reward_point_transaction_record table $rewardPointTransactionRecord = array("consumer_id" => $this->_currentUser->id, "DATE" => $currentTime, "transaction_id" => '4', "point_amount" => -$product['amount'] * $product['point']); $transactionRecordId = $rewardPointTransactionRecordModel->insert($rewardPointTransactionRecord); // add records to product_order table $prodcutOrder = array('consumer_id' => $this->_currentUser->id, 'product_id' => $product['id'], 'create_date' => $currentTime, 'state' => 'NEW', 'reward_point_transaction_record_id' => $transactionRecordId, 'amount' => $product['amount']); $prodcutOrderId = $prodcutOrderModel->insert($prodcutOrder); // roll back if an exception occurred // ... $total_redeem_point += $product['amount'] * $product['point']; } // add notification $notificationModel->createRecord("REDEEM_POINT", $this->_currentUser->id, $total_redeem_point); $this->paidGifts = $cartNamespace->list; $cartNamespace->list = null; // show redeem.phtml with "... Successfully" $this->_flashMessenger->addMessage("Gift_submit_orders_successfully"); $this->_flashMessenger->addMessage(false); $this->_flashMessenger->addMessage($this->paidGifts); $this->_redirect('gift/thankyou'); } else { $this->_redirect('gift/list'); } }
function admincheckemailAction() { $emailCategory = $this->_request->getParam('emailCategory'); $emails = array_unique(preg_split('/[;\\s]+[\\n\\r\\t]*/', $this->_request->getParam('emails'))); $emailsSparts = ''; $emailsNotSparts = ''; foreach ($emails as $email) { $consumerModel = new Consumer(); $consumer = $consumerModel->fetchRow("email = '" . $email . "'"); if ($consumer != null) { $emailsSparts .= $email . "; "; } else { $emailsNotSparts .= $email . "; "; } } print_r($emailsSparts . "|" . $emailsNotSparts); die; }
function adminlistAction() { $this->_helper->layout->setLayout("layout_admin"); $request = $this->getRequest(); $db = Zend_Registry::get('db'); // get: show current plan if (!$request->isPost()) { $plan_id = $request->getParam('plan_id'); // get spark's telephone log $telephoneLogModel = new TelephoneLog(); $messageArray = $this->_flashMessenger->getMessages(); if ($messageArray != null) { // show pre page if ($messageArray[0][0] == 'preView') { $telephoneLog = $telephoneLogModel->fetchRow("id < " . $messageArray[0][1] . " and plan_id = " . $plan_id, 'id desc'); } // show first call back page if ($messageArray[0][0] == 'firstcallbackView') { $telephoneLog = $telephoneLogModel->fetchRow("busy = 1 and plan_id = " . $plan_id); } // show pre call back page if ($messageArray[0][0] == 'precallbackView') { $telephoneLog = $telephoneLogModel->fetchRow("id < " . $messageArray[0][1] . " and busy = 1 and plan_id = " . $plan_id, 'id desc'); } //show next call back page if ($messageArray[0][0] == 'nextcallbackView') { $telephoneLog = $telephoneLogModel->fetchRow("id > " . $messageArray[0][1] . " and busy = 1 and plan_id = " . $plan_id); } } if (!isset($telephoneLog)) { //show the next unhandled page $telephoneLog = $telephoneLogModel->fetchRow("state = 'NEW' and plan_id = " . $plan_id); } if (!isset($telephoneLog)) { //if plan is finished, show the first page $telephoneLog = $telephoneLogModel->fetchRow("plan_id = " . $plan_id); } if (isset($telephoneLog)) { $selectTag = $db->select(); $selectTag->from('telephone_log_tag', 'tag_id')->where('telephone_log_id = ?', $telephoneLog->id); $selectedTags = $db->fetchAll($selectTag); $this->view->selectedTagsArray = array(); foreach ($selectedTags as $tag) { $this->view->selectedTagsArray[$tag['tag_id']] = '1'; } } $consumer_id = $telephoneLog->consumer_id; $campaign = new Campaign(); $order = "expire_date desc"; $this->view->campaigns = $campaign->fetchAll(null, $order, null, null); $this->view->plan_id = $plan_id; $this->view->telephoneLog_id = $telephoneLog->id; $this->view->telephoneLog = $telephoneLog; // post: create new plan } else { $formData = $request->getPost(); $sql = $formData['sql']; if ($sql == '' || $sql == null) { return; } else { $sql = 'select consumer.* ' . $sql; } $type = $formData['type']; $content = $formData['content']; //1.execute sql $db = Zend_Registry::get('db'); $result = $db->query($sql); $consumers = $result->fetchAll(); //2.create new telephone plan $telephonePlanModel = new TelephonePlan(); $row = $telephonePlanModel->createRow(); $row->sql = $sql; $row->type = $type; $row->total_consumers = count($consumers); $row->content = $content; //2011-04-08 ham.bao separate the sessions with admin $row->admin_id = $this->_currentAdmin->id; $row->edit_time = date("Y-m-d H:i:s"); $plan_id = $row->save(); //3.create new telephone logs $db = Zend_Registry::get('db'); $result = $db->query($sql); $consumers = $result->fetchAll(); $telephoneLogModel = new TelephoneLog(); $temp = 1; foreach ($consumers as $row) { $newlog = $telephoneLogModel->createRow(); $newlog->consumer_id = $row['id']; //2011-04-08 ham.bao separate the sessions with admin $newlog->admin_id = $this->_currentAdmin->id; $newlog->state = 'New'; $newlog->plan_id = $plan_id; $newlog->edit_time = date("Y-m-d H:i:s"); if ($temp == 1) { $telephoneLog_id = $newlog->save(); $temp = 0; } else { $newlog->save(); } } $consumer_id = $consumers[0]['id']; $this->view->plan_id = $plan_id; $this->view->telephoneLog_id = $telephoneLog_id; $this->view->offset = 0; } // get spark's info $consumerModel = new Consumer(); $this->view->consumerBaseInfo = $consumerModel->fetchRow('id = ' . $consumer_id); $consumerExtraInfoModel = new ConsumerExtraInfo(); $this->view->consumerExtraInfo = $consumerExtraInfoModel->fetchRow('consumer_id = ' . $consumer_id); $this->view->gender = isset($this->consumerExtraInfo) && isset($this->consumerExtraInfo->gender) ? $this->consumerExtraInfo->gender : ""; $consumerLogModel = new Log(); $this->view->consumerLog = $consumerLogModel->fetchRow('consumer_id = ' . $consumer_id, 'date desc'); $selectTotalReport = $db->select(); $selectTotalReport->from('report', 'count(*)')->where('consumer_id = ?', $consumer_id); $this->view->totalReport = $db->fetchOne($selectTotalReport); $selectTotalCampaign = $db->select(); $selectTotalCampaign->from('campaign_invitation', null)->join('campaign', 'campaign.id = campaign_invitation.campaign_id', 'name')->where('consumer_id = ?', $consumer_id)->where("state = 'ACCEPTED'"); $this->view->totalCampaigns = $db->fetchAll($selectTotalCampaign); //tag for telephone $select = $db->select(); $select->from('tags', array('name as key', 'id as tag_id'))->where("module = 'TELEPHONE'")->order('sort'); $this->view->tags = $db->fetchAll($select); // show page number $selectTotalPage = $db->select(); $selectTotalPage->from('communicate_plan', 'total_consumers')->where('id = ?', $this->view->plan_id); $this->view->totalPage = $db->fetchOne($selectTotalPage); $selectCurrentPage = $db->select(); $selectCurrentPage->from('telephone_log', 'count(*)')->where('plan_id = ?', $this->view->plan_id)->where('id <= ?', $this->view->telephoneLog_id); $this->view->currentPage = $db->fetchOne($selectCurrentPage); // show call back page number $selectTotalCallbackPage = $db->select(); $selectTotalCallbackPage->from('telephone_log', 'count(*)')->where('plan_id = ?', $this->view->plan_id)->where('busy = 1'); $this->view->totalCallbackPage = $db->fetchOne($selectTotalCallbackPage); if (isset($messageArray) && isset($messageArray[0][0]) && ($messageArray[0][0] == 'nextcallbackView' || $messageArray[0][0] == 'precallbackView' || $messageArray[0][0] == 'firstcallbackView' || $messageArray[0][0] == 'finishcallbackView')) { if ($messageArray[0][0] == 'finishcallbackView') { $this->view->currentCallbackPage = 0; } else { $selectCurrentCallbackPage = $db->select(); $selectCurrentCallbackPage->from('telephone_log', 'count(*)')->where('plan_id = ?', $this->view->plan_id)->where('id <= ?', $this->view->telephoneLog_id)->where('busy = 1'); $this->view->currentCallbackPage = $db->fetchOne($selectCurrentCallbackPage); $this->view->callbackPageTitle = 'Call Back '; } } else { $this->view->currentCallbackPage = 0; } // show old telephone log $selectOldTelephoneLog = $db->select(); $selectOldTelephoneLog->from('telephone_log', '*')->where('consumer_id = ?', $consumer_id)->where("state != 'NEW'")->where('plan_id != ?', $this->view->plan_id); $this->view->oldTelephoneLogs = $db->fetchAll($selectOldTelephoneLog); $this->view->oldTelephoneLogTagArray = array(); foreach ($this->view->oldTelephoneLogs as $oldTelephoneLog) { $selectOldTelephoneLogTag = $db->select(); $selectOldTelephoneLogTag->from('tags', 'name')->join('telephone_log_tag', 'tags.id = telephone_log_tag.tag_id', null)->where('telephone_log_tag.telephone_log_id = ?', $oldTelephoneLog['id']); $this->view->oldTelephoneLogTagArray[$oldTelephoneLog['id']] = $db->fetchAll($selectOldTelephoneLogTag); } }