public function indexAction()
 {
     $model = new Translate();
     if ($this->request->isPost()) {
         $post = $this->request->getPost();
         if (!empty($post)) {
             foreach ($post as $key => $value) {
                 $key = str_replace('_', ' ', $key);
                 // При отправке формы POST-запросом, все пробелы заменяются на "_". Меняем обратно.
                 $phrase = $model->findByPhraseAndLang($key);
                 if ($phrase) {
                     $phrase->setTranslation($value);
                     $phrase->update();
                 } else {
                     $phraseNew = new Translate();
                     $phraseNew->setPhrase($key);
                     $phraseNew->setLang(LANG);
                     $phraseNew->setTranslation($value);
                     $phraseNew->create();
                 }
             }
         }
         $this->flash->success('Данные обновлены');
         $lang = LANG;
         $key = HOST_HASH . md5("Translate::findByLang({$lang})");
         $this->cache->delete($key);
         $this->redirect('/cms/translate?lang=' . LANG);
     }
     $scanner = new Scanner();
     $phrases = $scanner->search();
     $this->view->phrases = $phrases;
     $this->view->model = $model;
 }
 public function indexAction()
 {
     $model = new Translate();
     if ($this->request->isPost()) {
         $post = $this->request->getPost();
         if (!empty($post)) {
             foreach ($post as $key => $value) {
                 $key = str_replace('_', ' ', $key);
                 // При отправке формы POST-запросом, все пробелы заменяются на "_". Меняем обратно.
                 $phrase = $model->findByPhraseAndLang($key);
                 if ($phrase) {
                     $phrase->setTranslation($value);
                     $phrase->update();
                 } else {
                     $phraseNew = new Translate();
                     $phraseNew->setPhrase($key);
                     $phraseNew->setLang(LANG);
                     $phraseNew->setTranslation($value);
                     $phraseNew->create();
                 }
             }
         }
         CmsCache::getInstance()->save('translates', Translate::buildCmsTranslatesCache());
         $this->flash->success($this->helper->at('Saved has been successful'));
         $lang = LANG;
         $key = HOST_HASH . md5("Translate::findByLang({$lang})");
         $this->cache->delete($key);
         return $this->redirect($this->url->get() . 'cms/translate?lang=' . LANG);
     }
     $scanner = new Scanner();
     $phrases = $scanner->search();
     $this->view->phrases = $phrases;
     $this->view->model = $model;
 }
示例#3
0
 public function __construct(Dispatcher $dispatcher)
 {
     $cmsCache = new CmsCache();
     $languages = $cmsCache->get('languages');
     $defaultLangArray = array_values(array_slice($languages, 0, 1));
     $defaultLang = $defaultLangArray[0];
     $request = $this->getDI()->get('request');
     $queryLang = $request->getQuery('lang');
     if (!$queryLang) {
         $langParam = $dispatcher->getParam('lang');
     } else {
         $langParam = $queryLang;
     }
     if (!$langParam) {
         $langParam = $defaultLang['iso'];
     }
     foreach ($languages as $language) {
         if ($langParam == $language['iso']) {
             define('LANG', $language['iso']);
             define('LANG_URL', '/' . $language['url']);
         }
     }
     if (!defined('LANG')) {
         define('LANG', $defaultLang['iso']);
         \Application\Mvc\Model\Model::$lang = $defaultLang['iso'];
     }
     if (!defined('LANG_URL')) {
         define('LANG_URL', $defaultLang['url']);
     }
     $translations = \Cms\Model\Translate::findCachedByLangInArray(LANG);
     $this->getDI()->set('translate', new \Phalcon\Translate\Adapter\NativeArray(['content' => $translations]));
 }
示例#4
0
 public static function buildCmsTranslatesCache()
 {
     $save = [];
     $languages = Language::find();
     foreach ($languages as $lang) {
         $save[$lang->getIso()] = ["" => ""];
     }
     $entries = Translate::find();
     foreach ($entries as $el) {
         $save[$el->getLang()][$el->getPhrase()] = $el->getTranslation();
     }
     return $save;
 }
示例#5
0
 public function afterDelete()
 {
     CmsCache::getInstance()->save('languages', $this->buildCmsLanguagesCache());
     CmsCache::getInstance()->save('translates', Translate::buildCmsTranslatesCache());
 }