/**
  * Lists all models.
  * @return mixed
  */
 public function actionIndex()
 {
     $sourceLanguage = 'en-US';
     $languages = Yii::$app->yee->languages;
     $categories = MessageSource::getMessageCategories();
     unset($languages[$sourceLanguage]);
     $currentLanguage = Yii::$app->getRequest()->get('translation', NULL);
     $currentCategory = Yii::$app->getRequest()->get('category', NULL);
     if (!in_array($currentLanguage, array_keys($languages))) {
         $currentLanguage = NULL;
     }
     if (!in_array($currentCategory, array_keys($categories))) {
         $currentCategory = NULL;
     }
     if ($currentLanguage && $currentCategory) {
         Message::initMessages($currentCategory, $currentLanguage);
         $messageIds = MessageSource::getMessageIdsByCategory($currentCategory);
         $sourceTable = MessageSource::tableName();
         $messageTable = Message::tableName();
         $messages = Message::find()->andWhere(['IN', 'source_id', $messageIds])->andWhere(['language' => $currentLanguage])->indexBy('id')->all();
     } else {
         $messages = [];
     }
     if (User::hasPermission('updateTranslations') && Message::loadMultiple($messages, Yii::$app->request->post()) && Model::validateMultiple($messages)) {
         foreach ($messages as $message) {
             $message->save(false);
         }
         Yii::$app->session->setFlash('crudMessage', 'Your item has been updated.');
         return $this->refresh();
     }
     return $this->render('index', ['messages' => $messages, 'languages' => $languages, 'categories' => $categories, 'currentLanguage' => $currentLanguage, 'currentCategory' => $currentCategory]);
 }
예제 #2
0
 /**
  * @inheritdoc
  */
 public static function initMessages($category, $language)
 {
     $messageIds = MessageSource::getMessageIdsByCategory($category);
     $translations = Message::find()->select('source_id')->andWhere(['IN', 'source_id', $messageIds])->andWhere(['language' => $language])->all();
     $translationIds = array_map(function ($translation) {
         return $translation->source_id;
     }, $translations);
     $translationsToCreate = array_diff($messageIds, $translationIds);
     foreach ($translationsToCreate as $translationId) {
         $message = new Message();
         $message->source_id = $translationId;
         $message->language = $language;
         $message->translation = '';
         $message->save();
     }
     return true;
 }
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getMessages()
 {
     return $this->hasMany(Message::className(), ['id' => 'id']);
 }