/** * get instance * * * @return Contact_Model_SubscriptionMapper */ public static function getInstance() { if (self::$_instance === null) { self::$_instance = new self(); } return self::$_instance; }
public function statusAction() { $id = $this->_getParam('id'); $code = $this->_getParam('code'); $status = $this->_getParam('new_status'); //check input if (!isset($id)) { throw new Zend_Exception('Subscription not found'); } if (!isset($code)) { throw new Zend_Exception('Subscription not found'); } if (!isset($status) || !in_array($status, array('subscribed', 'unsubscribed'))) { throw new Zend_Exception('Subscription not found'); } $subscription = new Contact_Model_Subscription(); if (!Contact_Model_SubscriptionMapper::getInstance()->findByCode($id, $code, $subscription)) { throw new Zend_Exception('Subscription not found'); } //update status if ($subscription->get_status() != $status) { $subscription->set_status($status); $dt = date("Y-m-d H:i:s"); if ($status == 'subscribed') { $subscription->set_subscribed_dt($dt); } else { $subscription->set_unsubscribed_dt($dt); } Contact_Model_SubscriptionMapper::getInstance()->save($subscription); } $this->view->subscription = $subscription; $this->renderScript('subscribe-generic/' . CURR_LANG . '/status_' . $status . '.phtml'); }
/** * Export action */ public function exportAction() { $langFilter = $this->_request->getParam('langFilter'); $searchFilter = $this->_request->getParam('searchFilter'); $fromFilter = $this->_request->getParam('fromFilter'); $toFilter = $this->_request->getParam('toFilter'); //contact types $header = array('status' => $this->translate('Status'), 'first_name' => $this->translate('First Name'), 'last_name' => $this->translate('Last Name'), 'gender' => $this->translate('Gender'), 'email' => $this->translate('Email'), 'lang' => $this->translate('Language'), 'subscribed_dt' => $this->translate('Subscribed'), 'unsubscribed_dt' => $this->translate('Unsubscribed')); $criteria = array('application_id' => $this->_applicationId, 'data_type' => 'array'); $criteria = array('application_id' => $this->_applicationId); if (null != $this->_getParam('langFilter')) { $criteria['lang'] = $this->_getParam('langFilter'); } if (null != $this->_getParam('statusFilter')) { $criteria['status'] = $this->_getParam('statusFilter'); } if (null != $this->_getParam('genderFilter')) { $criteria['gender'] = $this->_getParam('genderFilter'); } if (null != $this->_getParam('subscribed_from_dt')) { $criteria['subscribed_from'] = HCMS_Utils_Date::dateLocalToIso($this->_getParam('subscribed_from_dt')); } if (null != $this->_getParam('subscribed_to_dt')) { $criteria['subscribed_to'] = HCMS_Utils_Date::dateLocalToIso($this->_getParam('subscribed_to_dt')); } if (null != $this->_getParam('unsubscribed_from_dt')) { $criteria['unsubscribed_from'] = HCMS_Utils_Date::dateLocalToIso($this->_getParam('unsubscribed_from_dt')); } if (null != $this->_getParam('unsubscribed_to_dt')) { $criteria['unsubscribed_to'] = HCMS_Utils_Date::dateLocalToIso($this->_getParam('unsubscribed_to_dt')); } if (isset($orderFilter) && !empty($orderFilter)) { $orderBy = array($orderFilter); } else { $orderBy = array('s.subscribed_dt DESC', 's.unsubscribed_dt DESC', 's.id DESC'); } //read data to export $records = Contact_Model_SubscriptionMapper::getInstance()->fetchAll($criteria, $orderBy); /* @var $record Contact_Model_Subscription */ foreach ($records as $record) { $recordArr = $record->toArray(); $recordArr['gender'] = isset($recordArr['gender']) ? $this->view->translate($recordArr['gender']) : ''; $records_trans[] = $recordArr; } //get exported object $objPHPExcel = Contact_Model_SubscriptionMapper::getInstance()->exportToExcel($this->_applicationId, $header, $records_trans, $this); if ($objPHPExcel != null) { while (ob_get_level() > 0) { ob_end_clean(); } //disable layout $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(true); // rename sheet $objPHPExcel->getActiveSheet()->setTitle($this->translate($this->_application->get_name())); $fileName = $this->_application->get_name() . "-newsletter-subscriptions" . "-" . Zend_Date::now()->toString('d-MMM-Y') . ".xls"; // redirect output to client browser header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="' . $fileName . '"'); header('Cache-Control: max-age=0'); //create excel writer $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); // output to browser $objWriter->save('php://output'); exit; } else { $this->getHelper('flashMessenger')->addMessage(array("err" => $this->translate("Error occurred while exporting!"))); $this->_redirect($this->view->url(array('action' => 'index'))); } }