/** * Create an activity translation of the specified language * * @param ActivityModel $activity * @param type $language * @return \Activity\Model\ActivityTranslation */ protected function createActivityTranslation(ActivityModel $activity, $language) { $activityTranslation = new ActivityTranslationModel(); //Populate the common-language parts $activityTranslation->setId($activity->getId()); $activityTranslation->setBeginTime($activity->getBeginTime()); $activityTranslation->setEndTime($activity->getEndTime()); $activityTranslation->setCanSignUp($activity->getCanSignUp()); $activityTranslation->setOnlyGEWIS($activity->getOnlyGEWIS()); $activityTranslation->setApprover($activity->getApprover()); $activityTranslation->setCreator($activity->getCreator()); $activityTranslation->setStatus($activity->getStatus()); $activityTranslation->setSignUps($activity->getSignUps()); $activityTranslation->setSubscriptionDeadline($activity->getSubscriptionDeadline()); //TODO: add organ when relevant. if ($language === 'en') { $activityTranslation->setName($activity->getNameEn()); $activityTranslation->setLocation($activity->getLocationEn()); $activityTranslation->setCosts($activity->getCostsEn()); $activityTranslation->setDescription($activity->getDescriptionEn()); } if ($language === 'nl') { $activityTranslation->setName($activity->getName()); $activityTranslation->setLocation($activity->getLocation()); $activityTranslation->setCosts($activity->getCosts()); $activityTranslation->setDescription($activity->getDescription()); } $fieldTranslations = []; foreach ($activity->getFields() as $field) { $fieldTranslations[] = $this->createActivityFieldTranslation($field, $language); } $activityTranslation->setFields($fieldTranslations); return $activityTranslation; }
/** * Gets an array of the signed up users and the associated data * * @return array */ public function getSignedUpData(ActivityModel $activity) { if (!$this->isAllowed('view', 'activitySignup')) { $translator = $this->getTranslator(); throw new \User\Permissions\NotAllowedException($translator->translate('You are not allowed to view the sign up data')); } $fieldValueMapper = $this->getServiceManager()->get('activity_mapper_activity_field_value'); $result = []; foreach ($activity->getSignUps() as $signup) { $entry = []; $entry['member'] = $signup->getFullName(); $entry['values'] = []; foreach ($fieldValueMapper->getFieldValuesBySignup($signup) as $fieldValue) { //If there is an option type, get the option object as a 'value'. $isOption = $fieldValue->getField()->getType() === 3; $value = $isOption ? $fieldValue->getOption() : $fieldValue->getValue(); $entry['values'][$fieldValue->getField()->getId()] = $value; } $result[] = $entry; } return $result; }