/**
  * Определение взаимодействия указанных иероглифов
  */
 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;
 }
Ejemplo n.º 2
0
 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, 'Результат не найден');
         }
     }
 }