/**
* @param array $params Search conditions.
* @return ActiveDataProvider
*/
public function search($params)
{
$translateLanguage = Yii::$app->request->get('language_id', Yii::$app->sourceLanguage);
$sourceLanguage = $this->_getSourceLanguage();
$query = LanguageSource::find();
$dataProvider = new ActiveDataProvider(['query' => $query]);
$dataProvider->setSort(['attributes' => ['id', 'category', 'message', 'translation' => ['asc' => ['lt.translation' => SORT_ASC], 'desc' => ['lt.translation' => SORT_DESC], 'label' => Yii::t('language', 'Translation')]]]);
if (!($this->load($params) && $this->validate())) {
$query->joinWith(['languageTranslate' => function ($query) use($translateLanguage) {
$query->from(['lt' => LanguageTranslate::tableName()])->onCondition(['lt.language' => $translateLanguage]);
}]);
$query->joinWith(['languageTranslateByLanguage' => function ($query) use($sourceLanguage) {
$query->from(['ts' => LanguageTranslate::tableName()])->onCondition(['ts.language' => $sourceLanguage]);
}]);
return $dataProvider;
}
$query->andFilterWhere(['id' => $this->id, 'category' => $this->category]);
$query->andFilterWhere(['or', $this->createLikeExpression('message', $this->message), $this->createLikeExpression('ts.translation', $this->message)]);
$query->joinWith(['languageTranslate' => function ($query) use($translateLanguage) {
$query->from(['lt' => LanguageTranslate::tableName()])->onCondition(['lt.language' => $translateLanguage])->andFilterWhere($this->createLikeExpression('lt.translation', $this->translation));
}]);
$query->joinWith(['languageTranslateByLanguage' => function ($query) use($sourceLanguage) {
$query->from(['ts' => LanguageTranslate::tableName()])->onCondition(['ts.language' => $sourceLanguage]);
}]);
return $dataProvider;
}