protected function shareBubble($bubbleId, $userId) { $user = $this->getUserMapper()->findById($userId); if (!$user) { return array('success' => false, 'error' => 'User not found'); } $em = $this->getEntityManager(); $bubbleRepo = $em->getRepository(Bubble::class); $bubble = $bubbleRepo->find($bubbleId); if (!$bubble) { return array('success' => false, 'error' => 'Bubble not found'); } if (!$this->getBubblePermission()->canShare($bubble)) { return array('success' => false, 'error' => 'Not authorized'); } $share = new BubbleShare(); $share->setBubble($bubble)->setSharedWith($user); $em->persist($share); $em->flush($share); $isLinked = false; $courseParent = $this->findCourseParent($bubble); if ($courseParent) { $course = $this->findCourse($courseParent->getCourseroom(), $user); if ($this->createEdge($course, $bubble)) { $isLinked = true; } } if (!$isLinked) { $semesterParent = $this->findSemesterParent($bubble); if ($semesterParent) { $semester = $this->findSemester($semesterParent->getYear(), $semesterParent->getIsWinter(), $user); if (!$semester) { $semester = new Semester(); $semester->setYear($semesterParent->getYear())->setIsWinter($semesterParent->getIsWinter())->setOwner($user); $em->persist($semester); $em->flush($semester); } if ($courseParent) { $course = new Course(); $course->setCourseroom($courseParent->getCourseroom())->setTitle($courseParent->getTitle())->setOwner($user); $em->persist($course); $em->flush($course); $this->createEdge($semester, $course); $this->createEdge($course, $bubble); } else { $this->createEdge($semester, $bubble); } } } return array('success' => true); }
protected function syncCourses() { $em = $this->getEntityManager(); $courseRepo = $em->getRepository(Course::class); $l2p = $this->getClient(); $owner = $this->getAuthService()->getIdentity(); $response = $l2p->request('viewAllCourseInfo'); $courseinfo = json_decode($response['output']); if ($response['code'] != 200) { return false; } $result = array('status' => true, 'new' => array()); foreach ($courseinfo->dataSet as $course) { $found = $courseRepo->findOneBy(array('owner' => $owner, 'courseroom' => $course->uniqueid)); if (!$found) { $newCourse = new Course(); $newCourse->setCourseroom($course->uniqueid); $newCourse->setTitle($course->courseTitle); $newCourse->setOwner($owner); $em->persist($newCourse); $em->flush($newCourse); $semester = $this->findSemester($course->semester); $newEdge = new Edge(); $newEdge->setFrom($semester)->setTo($newCourse); $em->persist($newEdge); $em->flush($newEdge); $result['new'][] = $newCourse->jsonSerialize(); } } return $result; }