public static function propertyChange(MetadataModified $event) { $resource = $event->getResource(); $service = ServiceManager::getServiceManager()->get(DeliveryMonitoringService::CONFIG_ID); $tracked = array_merge([PROPERTY_USER_FIRSTNAME, PROPERTY_USER_LASTNAME], array_map(function ($field) { return $field['property']->getUri(); }, DeliveryHelper::getExtraFieldsProperties())); if (in_array($event->getMetadataUri(), $tracked) && $resource->hasType(new \core_kernel_classes_Class(TAO_CLASS_SUBJECT))) { $deliveryExecutionsData = $service->find([DeliveryMonitoringService::TEST_TAKER => $resource->getUri()], []); foreach ($deliveryExecutionsData as $data) { $data->updateData([DeliveryMonitoringService::TEST_TAKER, DeliveryMonitoringService::TEST_TAKER_FIRST_NAME, DeliveryMonitoringService::TEST_TAKER_LAST_NAME]); $success = $service->save($data); if (!$success) { \common_Logger::w('monitor cache for delivery ' . $data[DeliveryMonitoringService::DELIVERY_EXECUTION_ID] . ' could not be updated. TestTaker data has not been changed'); } } } }
/** * @param bool $overwrite */ private function addExtraFieldsValues($overwrite = false) { $user = $this->getUser(); if ($user) { $fields = DeliveryHelper::getExtraFieldsProperties(); foreach ($fields as $field) { $values = $user->getPropertyValues($field['property']); if (!empty($values) && is_array($values)) { $this->addValue($field['id'], (string) $values[0], $overwrite); } } } }