/** * Определение взаимодействия указанных иероглифов */ public function analyzeSignesInteraction($attributes) { // Инициализация //$interactionResults = array('290.1', '290.2', '290.3', '290.4'); $results = array(); sort($attributes); // Параметры выборки $criteria = new CDbCriteria(); $criteria->compare('t.interaction_type', 290); $criteria->compare('t.attribute_1', $attributes[0]); $criteria->compare('t.attribute_2', $attributes[1]); // Взаимодействие 3-х иероглифов if (isset($attributes[2]) && $attributes[2] != '' && $attributes[2] != 'undefined') { $criteria->compare('t.attribute_3', $attributes[2]); } else { $criteria->compare('t.attribute_3', ''); } // Выборка возможных комбинаций для данных иероглифов $interactions = AttributeInteraction::model()->findAll($criteria); foreach ($interactions as $interaction) { // Результат взаимодействия $attribute = $this->getAttribute($interaction->interaction_result); if (is_null($attribute)) { continue; } // Добавляем группу результатов, если ее еще нет if (!key_exists($attribute->code, $results)) { // Атрибут результата $results[$attribute->code] = $attribute; } } return $results; }
protected function _getElementsInteractionsTable() { $interactions = AttributeInteraction::model()->findAll(array('condition' => 't.interaction_type = 280')); $table = array(); foreach ($interactions as $interaction) { $key = $interaction->attribute_1 . '_' . $interaction->attribute_2; $table[$key] = $interaction->interaction_result; } return $table; }
/** * Вспомогательная функция для сохранения результата */ protected function _saveResult() { if (isset($_POST['save'])) { // Получаем результат взаимодействия по данному ID $interaction = AttributeInteraction::model()->findByPK((int) Yii::app()->getRequest()->getParam('interaction_id')); // Если такой результат существует if (!is_null($interaction)) { // Проверка, существует ли новый результат $newResult = Yii::app()->getRequest()->getParam('new_result', null); $newResultAttribute = Attribute::model()->find('t.code = :code', array(':code' => $newResult)); if (!is_null($newResultAttribute)) { // Изменяем результат взаимодействия и сохраняем данные $interaction->interaction_result = $newResult; $interaction->save(false, array('interaction_result')); $this->refresh(); } } else { throw new CHttpException(403, 'Результат не найден'); } } }