/**
  * Clears the translation cache
  *
  * @return void
  */
 public function cleartranslationcacheAction()
 {
     if (Zend_Translate::hasCache()) {
         Zend_Translate::clearCache();
     }
     $this->_redirect($_SERVER['HTTP_REFERER'], array('code' => 302));
 }
 public function updateTransAction()
 {
     foreach ($this->getRequest()->getParam('trans') as $lang => $trans) {
         $toReplace = array();
         $toReplace[$this->getRequest()->getParam('text')] = $trans;
         $this->getDi()->translationTable->replaceTranslation($toReplace, $lang);
     }
     Zend_Translate::hasCache() && Zend_Translate::clearCache();
 }
 public function editAction()
 {
     try {
         $model = $this->getModel();
         $dataForm = $this->getForm();
         $form = new Zend_Form();
         $form->addSubForm($dataForm, 'data');
         $form->addElement('submit', $this->view->translate('Save'));
         if ($this->_request->isPost()) {
             $postData = $this->_request->getPost('data');
             if ($dataForm->isValid($postData)) {
                 $this->view->messages = array();
                 $model->fromArray($postData);
                 $stored = $model->store();
                 if (!$stored) {
                     $dataForm->populate($postData);
                     $this->view->messages[] = array('level' => 'failure', 'message' => $this->view->translate('setup_message_write-failed'));
                 } else {
                     $this->view->messages[] = array('level' => 'notice', 'message' => $this->view->translate('setup_message_write-success'));
                     Zend_Translate::clearCache();
                 }
             } else {
                 $this->view->messages[] = array('level' => 'failure', 'message' => 'Es ist ein Fehler aufgetreten. Bitte überprüfen Sie Ihre Eingaben.');
             }
         } else {
             $formData = $model->toArray();
             $dataForm->populate($formData);
         }
         $this->view->form = $form;
     } catch (Setup_Model_FileNotReadableException $exc) {
         $this->_redirectTo('error', array('failure' => $this->view->translate('setup_message_error_read-access', $exc->getMessage())));
     } catch (Setup_Model_FileNotWriteableException $exc) {
         $this->_redirectTo('error', array('failure' => $this->view->translate('setup_message_error_write-access', $exc->getMessage())));
     } catch (Setup_Model_FileNotFoundException $exc) {
         $this->_redirectTo('error', array('failure' => $this->view->translate('setup_message_error_filenotfound', $exc->getMessage())));
     }
     $this->render('edit', null, true);
 }
Example #4
0
 public function clearAction()
 {
     $request = $this->getRequest();
     $cacheType = $request->getParam('cachetype');
     $cacheType = $this->_helper->IdConvert->hexToStr($cacheType);
     $this->_helper->layout()->disableLayout();
     try {
         if ($cacheType != '') {
             $cache = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cachemanager')->getCache($cacheType);
             $cache->clean(Zend_Cache::CLEANING_MODE_ALL);
             //Zend_Cache::CLEANING_MODE_MATCHING_TAG,array('filecache'));
             $this->_helper->messenger("success", 'Cache ' . $cacheType . ' was successfully cleared.');
             $this->_helper->redirector('index');
         } else {
             $standardcache = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cachemanager')->getCache('standardcache');
             $standardcache->clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array('standardcache'));
             $rolecache = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cachemanager')->getCache('rolecache');
             $rolecache->clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array('rolecache'));
             $dictcache = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cachemanager')->getCache('dictcache');
             $dictcache->clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array('dictcache'));
             $requestcache = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cachemanager')->getCache('requestcache');
             $requestcache->clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array('requestcache'));
             $longcache = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cachemanager')->getCache('longcache');
             $longcache->clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array('longcache'));
             $metadata = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cachemanager')->getCache('metadata');
             $metadata->clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array('metadata'));
             $filecache = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('cachemanager')->getCache('filecache');
             $filecache->clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array('filecache'));
             $this->_helper->messenger("success", 'Cache was successfully cleared.');
             $this->_helper->redirector('index');
         }
         Zend_Translate::clearCache();
     } catch (Logic_Cache_Exception $e) {
         $this->_helper->messenger('error', MSG_ERROR, $e);
     }
 }
 public function testTestingCacheHandling()
 {
     require_once 'Zend/Cache.php';
     $cache = Zend_Cache::factory('Core', 'File', array('lifetime' => 120, 'automatic_serialization' => true), array('cache_dir' => dirname(__FILE__) . '/_files/'));
     Zend_Translate::setCache($cache);
     $cache = Zend_Translate::getCache();
     $this->assertTrue($cache instanceof Zend_Cache_Core);
     $this->assertTrue(Zend_Translate::hasCache());
     $lang = new Zend_Translate(Zend_Translate::AN_ARRAY, array('msg1' => 'Message 1 (en)'), 'en');
     $adapter = $lang->getAdapter();
     $this->assertTrue($adapter instanceof Zend_Translate_Adapter_Array);
     $adaptercache = $adapter->getCache();
     $this->assertTrue($adaptercache instanceof Zend_Cache_Core);
     Zend_Translate::clearCache();
     $this->assertTrue(Zend_Translate::hasCache());
     Zend_Translate::removeCache();
     $this->assertFalse(Zend_Translate::hasCache());
 }
 public function saveAction()
 {
     $this->_helper->layout()->disableLayout();
     $this->_helper->viewRenderer->setNeverRender();
     if (!$this->_request->isPost() || !$this->getRequest()->isXmlHttpRequest()) {
         throw new Ot_Exception_Access('You can not access this method directly');
     }
     $path = realpath(APPLICATION_PATH . '/../overrides/languages');
     if (!is_writable($path)) {
         $retData = array('rc' => '0', 'msg' => $this->view->translate('msg-error-langDirNotWritable'));
         echo Zend_Json::encode($retData);
         return;
     }
     $postFilter = Zend_Registry::get('postFilter');
     $overrides = array();
     $removals = array();
     foreach ($postFilter->getEscaped() as $key => $value) {
         if (preg_match('/^[^#]*#[a-z]*$/i', $key)) {
             $removals[] = preg_replace('/#.*$/i', '', $key);
         } else {
             if ($value != '') {
                 $overrides[$key] = $value;
             }
         }
     }
     ini_set('auto_detect_line_endings', TRUE);
     $newData = array();
     $translate = Zend_Registry::get('Zend_Translate');
     $filename = $path . '/' . $translate->getLocale() . '.csv';
     if (is_file($filename)) {
         $handle = fopen($filename, 'r+');
         while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
             if (isset($overrides[$data[0]])) {
                 $data[1] = $overrides[$data[0]];
                 $newData[] = $data;
                 unset($overrides[$data[0]]);
             } elseif (!in_array($data[0], $removals)) {
                 $newData[] = $data;
             }
         }
         rewind($handle);
         ftruncate($handle, 0);
     } else {
         $handle = fopen($filename, 'w+');
     }
     foreach ($overrides as $key => $value) {
         $newData[] = array($key, $value);
     }
     foreach ($newData as $d) {
         $ret = fputcsv($handle, $d, ";");
         if ($ret === false) {
             $retData = array('rc' => '0', 'msg' => $this->view->translate('msg-error-writingLangFile'));
             echo Zend_Json::encode($retData);
             return;
         }
     }
     ini_set('auto_detect_line_endings', FALSE);
     Zend_Translate::clearCache();
     $logOptions = array('attributeName' => 'translation', 'attributeId' => $translate->getLocale());
     $this->_helper->log(Zend_Log::INFO, 'Language override file modified', $logOptions);
     $retData = array('rc' => '1', 'msg' => $this->view->translate('msg-info-savedLang'));
     echo Zend_Json::encode($retData);
     return;
 }
 /**
  * Includes all available language files for a certain defined locale.
  *
  * @param string $locale All resources from any module in locale $locale will be loaded
  * @param Boolean $clean Clean old caches?
  */
 public static function include_by_locale($locale, $clean = false)
 {
     if ($clean) {
         Zend_Translate::clearCache();
     }
     // Get list of module => path pairs, and then just the names
     $modules = SS_ClassLoader::instance()->getManifest()->getModules();
     $moduleNames = array_keys($modules);
     // Remove the "project" module from the list - we'll add it back specially later if needed
     global $project;
     if (($idx = array_search($project, $moduleNames)) !== false) {
         array_splice($moduleNames, $idx, 1);
     }
     // Get the order from the config syste,
     $order = Config::inst()->get('i18n', 'module_priority');
     // Find all modules that don't have their order specified by the config system
     $unspecified = array_diff($moduleNames, $order);
     // If the placeholder "other_modules" exists in the order array, replace it by the unspecified modules
     if (($idx = array_search('other_modules', $order)) !== false) {
         array_splice($order, $idx, 1, $unspecified);
     } else {
         array_splice($order, 0, 0, $unspecified);
     }
     // Put the project module back in at the begining if it wasn't specified by the config system
     if (!in_array($project, $order)) {
         array_unshift($order, $project);
     }
     $sortedModules = array();
     foreach ($order as $module) {
         if (isset($modules[$module])) {
             $sortedModules[$module] = $modules[$module];
         }
     }
     $sortedModules = array_reverse($sortedModules, true);
     // Loop in reverse order, meaning the translator with the highest priority goes first
     $translators = array_reverse(self::get_translators(), true);
     foreach ($translators as $priority => $translators) {
         foreach ($translators as $name => $translator) {
             $adapter = $translator->getAdapter();
             // Load translations from modules
             foreach ($sortedModules as $module) {
                 $filename = $adapter->getFilenameForLocale($locale);
                 $filepath = "{$module}/lang/" . $filename;
                 if ($filename && !file_exists($filepath)) {
                     continue;
                 }
                 $adapter->addTranslation(array('content' => $filepath, 'locale' => $locale));
             }
             // Load translations from themes
             // TODO Replace with theme listing once implemented in TemplateManifest
             $themesBase = Director::baseFolder() . '/themes';
             if (is_dir($themesBase)) {
                 foreach (scandir($themesBase) as $theme) {
                     if (strpos($theme, Config::inst()->get('SSViewer', 'theme')) === 0 && file_exists("{$themesBase}/{$theme}/lang/")) {
                         $filename = $adapter->getFilenameForLocale($locale);
                         $filepath = "{$themesBase}/{$theme}/lang/" . $filename;
                         if ($filename && !file_exists($filepath)) {
                             continue;
                         }
                         $adapter->addTranslation(array('content' => $filepath, 'locale' => $locale));
                     }
                 }
             }
             // Add empty translations to ensure the locales are "registered" with isAvailable(),
             // and the next invocation of include_by_locale() doesn't cause a new reparse.
             $adapter->addTranslation(array('content' => array($locale => $locale), 'locale' => $locale, 'usetranslateadapter' => true));
         }
     }
 }
 function saveAction()
 {
     $trans = $this->getRequest()->getParam('trans', array());
     $translationData = $this->grid->getDataSource()->getTDataSource()->getTranslationData($this->getLanguage(), TranslationDataSource_Abstract::FETCH_MODE_ALL);
     $toReplace = array();
     foreach ($trans as $k => $v) {
         $k = base64_decode($k);
         if ($v != $translationData[$k]) {
             $toReplace[$k] = $v;
         }
     }
     if (count($toReplace)) {
         $this->getDi()->translationTable->replaceTranslation($toReplace, $this->language);
         if (Zend_Translate::hasCache()) {
             Zend_Translate::clearCache();
         }
     }
     $_POST['trans'] = $_GET['trans'] = null;
     $this->grid->getRequest()->setParam('trans', null);
     $this->grid->getCompleteRequest()->setParam('trans', null);
     $this->getRequest()->setParam('trans', null);
     $url = $this->makeUrl(null, 'index', null, $this->getRequest()->toArray());
     $this->isAjax() ? $this->redirectAjax($url, ___('Redirect')) : $this->redirectLocation($url);
 }
 /**
  * delete translated data from cache (APC)
  */
 private function deleteCache()
 {
     $frontendOptions = array('automatic_serialization' => true);
     $cache = Zend_Cache::factory('Core', 'Apc', $frontendOptions, array());
     Zend_Translate::setCache($cache);
     Zend_Translate::clearCache();
     $this->_redirect('/locale/translate-messages/index/' . $this->_getParam('page', 1));
 }
 /**
  * @group ZF-10034
  */
 public function testSetCacheFromCacheManager()
 {
     $configCache = array('translate' => array('frontend' => array('name' => 'Core', 'options' => array('lifetime' => 120, 'automatic_serialization' => true)), 'backend' => array('name' => 'Black Hole')));
     $this->bootstrap->registerPluginResource('cachemanager', $configCache);
     $options = $this->_translationOptions;
     $options['cache'] = 'translate';
     $resource = new Zend_Application_Resource_Translate($options);
     $resource->setBootstrap($this->bootstrap);
     $resource->init();
     $this->assertType('Zend_Cache_Core', Zend_Translate::getCache());
     Zend_Translate::clearCache();
 }