/** * Handle reconstructing and validating Action associations * @param Action $model Action to reconstruct association */ protected function reconstructImportedActionAssoc(Actions &$model) { $exportableModules = array_merge(array_keys(Modules::getExportableModules()), array('None')); $exportableModules = array_map('lcfirst', $exportableModules); $model->associationType = lcfirst($model->associationType); if (!in_array($model->associationType, $exportableModules)) { // Invalid association type $model->addError('associationType', Yii::t('admin', 'Unknown associationType.')); } else { if (isset($model->associationId) && $model->associationId !== '0') { $associatedModel = X2Model::model($model->associationType)->findByPk($model->associationId); if ($associatedModel) { $model->associationName = $associatedModel->nameId; } } else { if (!isset($model->associationId) && isset($model->associationName)) { // Retrieve associationId $staticAssociationModel = X2Model::model($model->associationType); if ($staticAssociationModel->hasAttribute('name') && !ctype_digit($model->associationName)) { $associationModelParams = array('name' => $model->associationName); } else { $associationModelParams = array('id' => $model->associationName); } $lookup = $staticAssociationModel->findByAttributes($associationModelParams); if (isset($lookup)) { $model->associationId = $lookup->id; $model->associationName = $lookup->hasAttribute('nameId') ? $lookup->nameId : $lookup->name; } } } } }