/**
  * Singleton method to create/return instance of class
  *
  * @return Translation_Model_TranslationMapper
  */
 public static function getInstance()
 {
     if (!isset(self::$_instance) || Zend_Registry::isRegistered('translation_db')) {
         self::$_instance = new Translation_Model_TranslationMapper();
     }
     return self::$_instance;
 }
 public function importFromExcelAction()
 {
     $data = $this->getRequest()->getPost('data');
     $submit = $this->getRequest()->getPost('submit');
     $id = $this->_getParam('id');
     $this->_helper->layout->disableLayout();
     $this->_helper->viewRenderer->setNoRender(true);
     if ($this->getRequest()->isPost()) {
         try {
             $adapter = new Zend_File_Transfer_Adapter_Http();
             $adapter->addValidator("Count", false, array("min" => 1, "max" => 1))->addValidator("Size", false, array("max" => 1000000))->addValidator("Extension", false, array("extension" => "xls", "case" => true));
             $adapter->setDestination(APPLICATION_PATH . "/../tmp/");
             $files = $adapter->getFileInfo();
             foreach ($files as $fieldname => $fileinfo) {
                 if ($adapter->isUploaded($fileinfo["name"]) && $adapter->isValid($fileinfo['name'])) {
                     $extension = substr($fileinfo['name'], strrpos($fileinfo['name'], '.') + 1);
                     $filename = 'file_' . date('Ymdhs') . '.' . $extension;
                     $adapter->addFilter('Rename', array('target' => APPLICATION_PATH . "/../tmp/" . $filename, 'overwrite' => true));
                     $adapter->receive($fileinfo["name"]);
                 }
             }
             if (count($adapter->getMessages()) > 0) {
                 return $this->returnAjaxResult(FALSE, $adapter->getMessages());
             } else {
                 $errors = array();
                 $files = $adapter->getFileInfo();
                 foreach ($files as $file) {
                     Translation_Model_TranslationMapper::getInstance()->importTranslation($file['destination'] . "/" . $file['name'], $errors);
                 }
                 if (count($errors) > 0) {
                     foreach ($errors as $error) {
                         $message[] = $error["message"];
                     }
                     return $this->returnAjaxResult(FALSE, $message);
                 } else {
                     $url = $this->_helper->url->url(array('controller' => 'admin', 'action' => 'index', 'module' => 'translation'));
                     $this->_redirect($url);
                 }
             }
         } catch (Exception $ex) {
             return $this->returnAjaxResult(FALSE, $ex->getMessage());
         }
     }
 }
 /**
  * Configuration action
  */
 public function configAction()
 {
     //read data from request
     $data = $this->getRequest()->getPost('data');
     $inputHashChangePost = $this->_request->getParam('inputHashChangePost');
     $inputHashChangeGet = $this->_request->getParam('inputHashChangeGet');
     //check if cancel button is pressed
     if ($this->_formHelper->isCancel()) {
         //cancel form
         return $this->_formHelper->returnCancel($this->view->url(array('action' => 'index')), $this->translate('Action canceled'));
     }
     if ($this->getRequest()->getParam("type") == 'contact') {
         $module_name = "contact";
     } else {
         if ($this->getRequest()->getParam("type") == 'newsletter') {
             $module_name = "newsletter";
         } else {
             if ($this->getRequest()->getParam("type") == 'blog') {
                 $module_name = "blog";
             } else {
                 throw new Exception("Contact module not found");
             }
         }
     }
     //read contact module
     $module = new Application_Model_Module();
     if (!Application_Model_ModuleMapper::getInstance()->findByCode($module_name, $module)) {
         throw new Exception("Contact module not found");
     }
     $this->view->data = array('email' => $module->get_settings('email'));
     $this->view->data['type'] = $module_name;
     $this->view->emailTransportTypeOptions = Application_Model_Application::getEmailTransportTypeOptions();
     //postback - save?
     if ($this->_formHelper->isSave()) {
         $formToEmails = new Contact_Form_ConfigToEmailsWrapper($data['email']['to_emails']);
         $formParameters = new Contact_Form_ConfigParameters($data['email']['parameters'], null, $data['email']['transport']);
         if ($module_name == 'contact') {
             $formEmail = new Contact_Form_ConfigEmail($data['email']);
         } elseif ($module_name == 'newsletter') {
             $formEmail = new Contact_Form_ConfigEmailNewsletter($data['email']);
         } elseif ($module_name == 'blog') {
             $formEmail = new Blog_Form_ConfigEmail($data['email']);
         }
         //check if valid
         if ($formEmail->isValid() && $formParameters->isValid() && $formToEmails->isValid()) {
             $data['email'] = $formEmail->getValues();
             $data['email']['parameters'] = $formParameters->getValues();
             $data['email']['to_emails'] = $formToEmails->getValues();
             $lang = new Translation_Model_Lang();
             if (!Translation_Model_LangMapper::getInstance()->findByCode(CURR_LANG, $lang)) {
                 throw new Exception('No language for this code.');
             }
             Translation_Model_TranslationMapper::getInstance()->save('mailtextRespondContactTranslationkey', $lang->get_id(), $data['email']['mailtext_respond_contact'], 'global');
             $data['email']['mailtext_respond_contact'] = 'mailtextRespondContactTranslationkey';
             Translation_Model_TranslationMapper::getInstance()->save('landingPageText', $lang->get_id(), $data['email']['landing_page_text'], 'global');
             $data['email']['landing_page_text'] = 'landingPageText';
             Translation_Model_TranslationMapper::getInstance()->save('subjectContactTranslationkey', $lang->get_id(), $data['email']['subject_contact'], 'global');
             $data['email']['subject_contact'] = 'subjectContactTranslationkey';
             //create module entity object
             $settings = $module->get_settings();
             $settings['email'] = $data['email'];
             $module->set_settings(json_encode($settings));
             $module->set_data(json_encode($module->get_data()));
             //new entity
             Application_Model_ModuleMapper::getInstance()->save($module);
             //save done, return success
             return $this->_formHelper->returnSuccess($this->view->url(array('action' => 'config', 'inputHashChangeGet' => $inputHashChangePost)), $this->translate('Configuration saved.'));
         } else {
             //we have errors - return json or continue
             $messages = $formEmail->getMessages();
             $messages['parameters'] = $formParameters->getMessages();
             $messages['to_emails'] = $formToEmails->getMessages();
             $this->view->data = $data;
             $this->_formHelper->returnError($messages);
         }
     }
     if (isset($inputHashChangeGet) && $inputHashChangeGet != '') {
         $this->view->inputHashChange = $inputHashChangeGet;
     } else {
         $this->view->inputHashChange = "email-config";
     }
     //country assign
     $countries = new Application_Model_Country();
     $countries = Application_Model_CountryMapper::getInstance()->getAllCountries(CURR_LANG);
     $this->view->countries = $countries;
     $this->view->languages = Application_Model_TranslateMapper::getInstance()->getLanguages();
     $this->view->fields = Contact_Form_Contact::getFields();
 }