/** * 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; }
/** * Create an activity from parameters. * * @pre $params is valid data of Activity\Form\Activity * * @param array $params Parameters describing activity * @param User $user The user that creates this activity * @param Organ $organ The organ this activity is associated with * @param boolean $dutch Whether dutch information is provided * @param boolean $english Whether english information is provided * * @return ActivityModel Activity that was created. */ protected function generateActivity(array $params, $user, $organ, $dutch, $english, $initialStatus) { $activity = new ActivityModel(); $activity->setBeginTime(new \DateTime($params['beginTime'])); $activity->setEndTime(new \DateTime($params['endTime'])); //Default to the endtime if no deadline was set (so there is no deadline effectively) $activity->setSubscriptionDeadline(empty($params['subscriptionDeadline']) ? $activity->getEndTime() : new \DateTime($params['subscriptionDeadline'])); $this->setLanguageSpecificParameters($activity, $params, $dutch, $english); $activity->setCanSignUp($params['canSignUp']); // Not user provided input $activity->setCreator($user); $activity->setOrgan($organ); $activity->setStatus($initialStatus); $activity->setOnlyGEWIS(true); // Not yet implemented $em = $this->getServiceManager()->get('Doctrine\\ORM\\EntityManager'); if (isset($params['fields'])) { foreach ($params['fields'] as $fieldparams) { $field = $this->createActivityField($fieldparams, $activity, $dutch, $english); $em->persist($field); } $em->flush(); } $em->persist($activity); $em->flush(); $this->getEmailService()->sendActivityCreationEmail($activity); return $activity; }