/**
  * Извлечение данных переданных для обработки связанными моделями
  * @param Entity\Event $event
  * @return Entity\EventResult
  */
 protected static function ejectReferencesData(Entity\Event $event)
 {
     $result = new Entity\EventResult();
     $entityData = $event->getParameter('fields');
     // Извлечение связей для которых переданы данные для последующей обработки
     static::$referencesToSave = [];
     foreach (static::getMap() as $fieldName => $fieldData) {
         if (is_array($fieldData) && isset($fieldData['reference'])) {
             // Если для связи переданы данные, извлекаем их и удаляем из сущности, так как битриксу они не нужны
             // Массив переданный связи должен содержать массивы с данными для обработки
             // Обрабатываются только связи для которых переданы данные (пустой массив тоже считается)
             if (isset($entityData[$fieldName])) {
                 if (!is_array(reset($entityData[$fieldName]))) {
                     $entityData[$fieldName] = [$entityData[$fieldName]];
                 }
                 $result->unsetField($fieldName);
                 static::$referencesToSave[$fieldName] = ['data' => $entityData[$fieldName], 'reference' => $fieldData];
             }
         }
     }
     return $result;
 }
Ejemplo n.º 2
0
 /**
  * Default onBeforeUpdate handler. Absolutely necessary.
  *
  * @param Main\Entity\Event $event		Event object.
  * @return Main\Entity\EventResult
  */
 public static function onBeforeUpdate(Main\Entity\Event $event)
 {
     $result = new Main\Entity\EventResult();
     $data = $event->getParameter('fields');
     $modifyFieldList = array();
     self::setUserID($modifyFieldList, $data, array('MODIFIED_BY'));
     self::setTimestamp($modifyFieldList, $data, array('TIMESTAMP_X'));
     self::copyOldFields($modifyFieldList, $data);
     $result->unsetField('CONDITIONS');
     $result->unsetField('ACTIONS');
     if (!empty($modifyFieldList)) {
         $result->modifyFields($modifyFieldList);
     }
     unset($modifyFieldList);
     return $result;
 }